]> jfr.im git - irc/quakenet/qwebirc.git/commitdiff
Add menus.
authorChris Porter <redacted>
Mon, 20 Oct 2008 19:27:56 +0000 (20:27 +0100)
committerChris Porter <redacted>
Mon, 20 Oct 2008 19:27:56 +0000 (20:27 +0100)
compile.bat
compile.sh
js/ui/menuitems.js [new file with mode: 0644]
js/ui/qui.js
pagegen.py
static/css/qui.css

index e7e5171a5f1438b19e241aebd9e391b772476f00..402cb18dc5768b6de4225cdf63ff97f1c139df8f 100644 (file)
@@ -5,7 +5,7 @@ mkdir compiled
 del /q compiled\*.js\r
 \r
 cd js\r
-copy qwebirc.js + version.js + jslib.js + irc\ircconnection.js + irc\irclib.js + irc\numerics.js + irc\baseircclient.js + irc\irctracker.js + irc\commandparser.js + irc\ircclient.js + ui\baseui.js + ui\baseuiwindow.js + ui\colour.js + ui\url.js + ui\theme.js + ui\genericlogin.js + ui\embedwizard.js + qwebircinterface.js + irc\commandhistory.js + ui\hilightcontroller.js ..\compiled\qwebirc-concat.js /b\r
+copy qwebirc.js + version.js + jslib.js + irc\ircconnection.js + irc\irclib.js + irc\numerics.js + irc\baseircclient.js + irc\irctracker.js + irc\commandparser.js + irc\ircclient.js + ui\baseui.js + ui\baseuiwindow.js + ui\colour.js + ui\url.js + ui\theme.js + ui\genericlogin.js + ui\embedwizard.js + qwebircinterface.js + irc\commandhistory.js + ui\hilightcontroller.js + ui\menuitems.js ..\compiled\qwebirc-concat.js /b\r
 copy ui\swmui.js + ui\swmlayout.js ..\compiled\swmui-concat.js /b\r
 cd ..\compiled\r
 \r
index 87ffd1252fe8aac995d74c28c01ac867a5b0a805..e81d15cc72f7c3250264f79dd398f96d98df7ebd 100755 (executable)
@@ -5,7 +5,7 @@ mkdir -p compiled
 rm -f compiled/*.js
 
 cd js
-cat qwebirc.js version.js jslib.js irc/ircconnection.js irc/irclib.js irc/numerics.js irc/baseircclient.js irc/irctracker.js irc/commandparser.js irc/ircclient.js ui/baseui.js ui/baseuiwindow.js ui/colour.js ui/url.js ui/theme.js ui/genericlogin.js ui/embedwizard.js irc/commandhistory.js ui/hilightcontroller.js qwebircinterface.js > ../compiled/qwebirc-concat.js
+cat qwebirc.js version.js jslib.js irc/ircconnection.js irc/irclib.js irc/numerics.js irc/baseircclient.js irc/irctracker.js irc/commandparser.js irc/ircclient.js ui/baseui.js ui/baseuiwindow.js ui/colour.js ui/url.js ui/theme.js ui/genericlogin.js ui/embedwizard.js irc/commandhistory.js ui/hilightcontroller.js ui/menuitems.js qwebircinterface.js > ../compiled/qwebirc-concat.js
 cat ui/swmui.js ui/swmlayout.js > ../compiled/swmui-concat.js
 
 error() {
diff --git a/js/ui/menuitems.js b/js/ui/menuitems.js
new file mode 100644 (file)
index 0000000..2c7e8fc
--- /dev/null
@@ -0,0 +1,11 @@
+qwebirc.ui.MENU_ITEMS = [
+  ["whois", function(nick) {
+    this.client.exec("/WHOIS " + nick);
+  }],
+  ["query", function(nick) {
+    this.client.exec("/QUERY " + nick);
+  }],
+  ["slap", function(nick) {
+    this.client.exec("/ME slaps " + nick + " around a bit with a large fishbot");
+  }]
+];
index 27df4f3a67032c7375172d3460283a4c6d478f0e..3d70d4507e69d8cb3a41c54e51ed1bc9e2c6c729 100644 (file)
@@ -241,12 +241,7 @@ qwebirc.ui.QUI.Window = new Class({
       this.nicklist = new Element("div");
       this.nicklist.addClass("nicklist");
       this.nicklist.addClass("tab-invisible");
-      this.nicklist.addEvent("click", function(x) {
-        if(this.prevNick) {
-          this.prevNick.removeClass("selected");
-          this.prevNick = null;
-        }
-      }.bind(this));
+      this.nicklist.addEvent("click", this.removePrevMenu.bind(this));
       this.parentObject.qjsui.applyClasses("nicklist", this.nicklist);
     }
     
@@ -263,6 +258,40 @@ qwebirc.ui.QUI.Window = new Class({
     if(this.scrolleddown)
       this.scrollToBottom();
   },
+  createMenu: function(nick, parent) {
+    var e = document.createElement("div");
+    parent.appendChild(e);
+    e.addClass("menu");
+    
+    qwebirc.ui.MENU_ITEMS.forEach(function(x) {
+      var e2 = document.createElement("a");
+      e.appendChild(e2);
+      
+      e2.href = "#";
+      e2.set("text", "- " + x[0]);
+      
+      e2.addEvent("focus", function() { this.blur() }.bind(e2));
+      e2.addEvent("click", function(ev) { new Event(ev.stop()); this.menuClick(x[1]); }.bind(this));
+    }.bind(this));
+    return e;
+  },
+  menuClick: function(fn) {
+    /*
+    this.prevNick.removeChild(this.prevNick.menu);
+    this.prevNick.menu = null;
+    */
+    fn.bind(this)(this.prevNick.realNick);
+    this.removePrevMenu();
+  },
+  removePrevMenu: function() {
+    if(!this.prevNick)
+      return;
+      
+    this.prevNick.removeClass("selected");
+    if(this.prevNick.menu)
+      this.prevNick.removeChild(this.prevNick.menu);
+    this.prevNick = null;
+  },
   nickListAdd: function(nick, position) {
     var e = new Element("a");
     qwebirc.ui.insertAt(position, this.nicklist, e);
@@ -273,10 +302,10 @@ qwebirc.ui.QUI.Window = new Class({
     e.realNick = this.client.stripPrefix(nick);
     
     e.addEvent("click", function(x) {
-      if(this.prevNick)
-        this.prevNick.removeClass("selected");
+      this.removePrevMenu();
       this.prevNick = e;
       e.addClass("selected");
+      e.menu = this.createMenu(x.realNick, e);
       new Event(x).stop();
     }.bind(this));
     e.addEvent("dblclick", function(x) {
index ed4b7c23d2d1b01df042bc505fd19a3285fc82f2..ce16f52d80c043d0a725ab55c8dc7beba25ede3f 100644 (file)
@@ -1,7 +1,7 @@
 import os, sys
 
 IRC_BASE = ["ircconnection", "irclib", "numerics", "baseircclient", "irctracker", "commandparser", "ircclient", "commandhistory"]
-UI_BASE = ["baseui", "baseuiwindow", "colour", "url", "theme", "genericlogin", "embedwizard", "hilightcontroller"]
+UI_BASE = ["baseui", "baseuiwindow", "colour", "url", "theme", "genericlogin", "embedwizard", "hilightcontroller", "menuitems"]
 
 DEBUG_BASE = ["qwebirc", "version", "jslib", ["irc/%s" % x for x in IRC_BASE], ["ui/%s" % x for x in UI_BASE], "qwebircinterface"]
 BUILD_BASE = ["qwebirc"]
index 8fb69d3e9726500d70c5c44ba392fdfa7b6863ac..5b3d61c53308c08bfbeae707bf4faecede56a624 100644 (file)
@@ -198,7 +198,7 @@ body {
   position: absolute;
   top: 0px;
   right: 0px;
-  width: 125px;
+  width: 140px;
   overflow: auto;
   background: #f2f0ff;
   color: black;
@@ -230,4 +230,13 @@ div#noscript {
   text-align: center;
   font-family: Verdana, sans-serif;
   font-weight: bold;
+}
+
+.qwebirc-qui .nicklist div.menu {
+  margin: 0px 0px 0px 5px;
+}
+
+.qwebirc-qui .nicklist div.menu a {
+  border-bottom: 0;
+  border-top: 0;
 }
\ No newline at end of file