]> jfr.im git - irc/quakenet/qwebirc.git/commitdiff
Refactor main interface code into qwebircinterface.js
authorChris Porter <redacted>
Fri, 11 Jul 2008 00:14:25 +0000 (01:14 +0100)
committerChris Porter <redacted>
Fri, 11 Jul 2008 00:14:25 +0000 (01:14 +0100)
13 files changed:
compile.bat
compile.sh
js/irc/ircclient.js
js/qwebircinterface.js [new file with mode: 0644]
js/ui/baseui.js
js/ui/swmui.js
js/ui/uglyui.js
qwebirc/root.py
static/iframe.html
static/swmui.html
static/swmuidebug.html
static/uglyui.html
static/uglyuidebug.html

index 19660bf58b2091abb80d8959b95220cbf5c0e5d2..936a0ec112415a4bd82cfaa4900371ea501a9d4e 100644 (file)
@@ -3,7 +3,7 @@ mkdir compiled
 del /q compiled\*.js\r
 \r
 cd js\r
-copy version.js + jslib.js + irc\ircconnection.js + irc\irclib.js + irc\baseirc.js + irc\irctracker.js + irc\commandparser.js + irc\ircclient.js + ui\baseui.js + ui\colour.js + ui\theme.js ..\compiled\qwebirc-concat.js /b\r
+copy version.js + jslib.js + irc\ircconnection.js + irc\irclib.js + irc\baseirc.js + irc\irctracker.js + irc\commandparser.js + irc\ircclient.js + ui\baseui.js + ui\colour.js + ui\theme.js + qwebircinterface.js ..\compiled\qwebirc-concat.js /b\r
 copy ui\swmlayout.js + ui\swmui.js ..\compiled\swmui-concat.js /b\r
 cd ..\compiled\r
 \r
index 678e261b32d03ce13a0e112695dc37fccf3691a0..3d4038735876ef4732159455afb34e3e671afcc4 100755 (executable)
@@ -3,7 +3,7 @@ mkdir -p compiled
 rm -f compiled/*.js
 
 cd js
-cat version.js jslib.js irc/ircconnection.js irc/irclib.js irc/baseirc.js irc/irctracker.js irc/commandparser.js irc/ircclient.js ui/baseui.js ui/colour.js ui/theme.js > ../compiled/qwebirc-concat.js
+cat version.js jslib.js irc/ircconnection.js irc/irclib.js irc/baseirc.js irc/irctracker.js irc/commandparser.js irc/ircclient.js ui/baseui.js ui/colour.js ui/theme.js qwebircinterface.js > ../compiled/qwebirc-concat.js
 cat ui/swmlayout.js ui/swmui.js > ../compiled/swmui-concat.js
 cd ../compiled
 
index 16c971417cd236cd67abbcba5d88e4392877823f..a6c8329c8c35daa7951b6eeffad3b4596bb6e6dd 100644 (file)
@@ -364,5 +364,9 @@ var IRCClient = new Class({
   },
   serverError: function(message) {
     this.newServerLine("ERROR", {"m": message});
+  },
+  quit: function(message) {
+    this.send("QUIT :" + message);
+    this.disconnect();
   }
 });
diff --git a/js/qwebircinterface.js b/js/qwebircinterface.js
new file mode 100644 (file)
index 0000000..a08dd6d
--- /dev/null
@@ -0,0 +1,28 @@
+var QWebIRCInterface = new Class({
+  Implements: [Options],
+  options: {
+    initialNickname: "qwebirc" + Math.ceil(Math.random() * 100000),
+    initialChannels: "",
+    searchURL: false,
+    theme: undefined
+  },
+  initialize: function(element, ui, options) {
+    this.setOptions(options);
+
+    window.addEvent("domready", function() {
+      var ui_ = new ui($(element), new Theme(this.options.theme));
+
+      if(this.options.searchURL) {
+        /* TODO: look at URI and detect nickname/channels... */
+      }
+
+      var details = ui_.loginBox(function(options) {
+        var IRC = new IRCClient(options, ui_);
+        IRC.connect();
+        window.addEvent("beforeunload", function() {
+          IRC.quit("Page closed");
+        });
+      }, this.options.initialNickname, this.options.initialChannels);
+    }.bind(this));
+  }
+});
index e342a25faa72b27b8cd6e4ac8d3f1e79b215e38b..b1cc098a2eaa56d52294c15a5a4a063a1db7bf0a 100644 (file)
@@ -95,7 +95,7 @@ var UI = new Class({
     
     delete this.windows[window.client][window.identifier];
   },
-  loginBox: function(callback) {
+  loginBox: function(callback, initialNickname, initialChannels) {
     /*
       this shouldn't be called by overriding classes!
       some form of user input MUST be received before an
@@ -103,13 +103,13 @@ var UI = new Class({
       tricked into getting themselves glined
     */
 
-    var nick = prompt("Nickname:");
+    var nick = prompt("Nickname:", initialNickname);
     if(!nick) {
       alert("Aborted.");
       return;
     }
 
-    var chans = prompt("Channels (seperate by comma):", "#quakenetX");
+    var chans = prompt("Channels (seperate by comma):", initialChannels);
     callback({"nickname": nick, "autojoin": chans});
   }
 });
index 5c5b2060c3f21877b692eec889ca5e6208d625f7..0aa5849b9cd16957f4ccdf18448105750c7983b9 100644 (file)
@@ -175,7 +175,7 @@ var SWMUI = new Class({
   resize: function() {
     window.fireEvent("resize");
   },
-  loginBox: function(callback) {
+  loginBox: function(callback, initialNickname, initialChannels) {
     var box = new Element("div");
 
     var header = new Element("h1");
@@ -225,6 +225,9 @@ var SWMUI = new Class({
       new Event(e).stop();
       var nickname = nick.value;
       var chans = chan.value;
+      if(chans == "#") /* sorry channel "#" :P */
+        chans = "";
+
       if(!nickname) {
         alert("You must supply a nickname.");
         nick.focus();
@@ -239,8 +242,8 @@ var SWMUI = new Class({
     box.appendChild(form);
     this.parentElement.appendChild(box);
 
-    nick.set("value", "qwebirc" + Math.ceil(Math.random() * 1000));
-    chan.set("value", "#");
+    nick.set("value", initialNickname);
+    chan.set("value", initialChannels);
 
     nick.focus();
   }
index b7818a7c9eb92621a1ddf5f4551103b1d23c5102..8aacb90a7b4d7f49b05a6268fa84df0916930d74 100644 (file)
@@ -106,7 +106,7 @@ var UglyUIWindow = new Class({
     var e = new Element("div");
 
     if(colour) {
-      e.addStyle("background", colour);
+      e.setStyles({"background": colour});
     } else if(this.lastcolour) {
       e.addClass("linestyle1");
     } else {
@@ -165,11 +165,11 @@ var UglyUI = new Class({
     form.appendChild(inputbox);
     inputbox.focus();
   },
-  loginBox: function(callbackfn) {
+  loginBox: function(callbackfn, intialNickname, initialChannels) {
     this.parent(function(options) {
       this.postInitialize();
       callbackfn(options);
-    }.bind(this));
+    }.bind(this), intialNickname, initialChannels);
   }
 });
 
index 9543528fabffa50e131cc451b5b9706d99034787..09af829756f41d8b08be06d47555ed9b23e4f4a6 100644 (file)
@@ -3,15 +3,15 @@ from ajaxengine import AJAXEngine
 from twisted.web import resource, server, static
 
 class RootResource(resource.Resource):
-  isLeaf = True
-  def render_GET(self, request):
-    return "moo"
-    
+  def getChild(self, name, request):
+    if name == "":
+      name = "swmui.html"
+    return self.primaryChild.getChild(name, request)
+
 class RootSite(server.Site):
   def __init__(self, path, *args, **kwargs):
-    root = resource.Resource()
+    root = RootResource()
     server.Site.__init__(self, root, *args, **kwargs)
-    
-    root.putChild("", RootResource())
+
+    root.primaryChild = static.File(path)
     root.putChild("e", AJAXEngine("/e"))
-    root.putChild("static", static.File(path))
index c651dc194d707dd28d050f996f1e67f34459049c..1518ce53ff63cbebb0e7363c63f75f3fe73bbab9 100644 (file)
@@ -1,5 +1,5 @@
 <html>
 <body>
-  <iframe src="swmui.html" height="600" width="600"/>
+  <iframe src="/" height="600" width="600"/>
 </body>
-</html>
\ No newline at end of file
+</html>
index b980c8f555e060692f25ae23dcc2b63882004d89..16f588293f744c15b1bfda761e92b01aaf3eba68 100644 (file)
@@ -6,33 +6,10 @@
   <link rel="stylesheet" href="css/colours.css" type="text/css">
   <link rel="stylesheet" href="css/swmui.css" type="text/css">
   <script type="text/javascript" src="js/mootools-1.2-core.js"></script>
-  <!--<script type="text/javascript" src="js/debug/version.js"></script>
-  <script type="text/javascript" src="js/debug/jslib.js"></script>
-  <script type="text/javascript" src="js/debug/irc/ircconnection.js"></script>
-  <script type="text/javascript" src="js/debug/irc/irclib.js"></script>
-  <script type="text/javascript" src="js/debug/irc/baseirc.js"></script>
-  <script type="text/javascript" src="js/debug/irc/irctracker.js"></script>
-  <script type="text/javascript" src="js/debug/irc/commandparser.js"></script>
-  <script type="text/javascript" src="js/debug/irc/ircclient.js"></script>
-  <script type="text/javascript" src="js/debug/ui/baseui.js"></script>
-  <script type="text/javascript" src="js/debug/ui/colour.js"></script>
-  <script type="text/javascript" src="js/debug/ui/theme.js"></script>
-  <script type="text/javascript" src="js/debug/ui/swmlayout.js"></script>
-  <script type="text/javascript" src="js/debug/ui/swmui.js"></script>-->
   <script type="text/javascript" src="js/qwebirc.js"></script>
   <script type="text/javascript" src="js/swmui.js"></script>
-  <script type="text/javascript">  
-    window.addEvent("domready", function() {
-      var theme = new Theme();
-      var ui = new SWMUI($("ircui"), theme);
-
-      /* TODO: look at URI and detect nickname/channels... */
-
-      var details = ui.loginBox(function(options) {
-        var IRC = new IRCClient(options, ui);
-        IRC.connect();
-      });
-    });
+  <script type="text/javascript">
+    new QWebIRCInterface("ircui", SWMUI);
   </script>
 </head>
 <body>
index 04067edc717fa2475b2c780a502e1794ccc82eac..5e3f40b863e183fe1a881cf63e2f11468464c8c1 100644 (file)
   <script type="text/javascript" src="js/debug/ui/theme.js"></script>
   <script type="text/javascript" src="js/debug/ui/swmlayout.js"></script>
   <script type="text/javascript" src="js/debug/ui/swmui.js"></script>
-  <!--<script type="text/javascript" src="js/qwebirc.js"></script>
-  <script type="text/javascript" src="js/swmui.js"></script>-->
-  <script type="text/javascript">  
-    window.addEvent("domready", function() {
-      var theme = new Theme();
-      var ui = new SWMUI($("ircui"), theme);
-
-      /* TODO: look at URI and detect nickname/channels... */
-
-      var details = ui.loginBox(function(options) {
-        var IRC = new IRCClient(options, ui);
-        IRC.connect();
-      });
-    });
+  <script type="text/javascript" src="js/debug/qwebircinterface.js"></script>
+  <script type="text/javascript">
+    new QWebIRCInterface("ircui", SWMUI);
   </script>
 </head>
 <body>
index 23b9c420930337c3401fc330c7947913e63a87a7..64d2f0f4e844f82e19ea1de06901f201a20e7179 100644 (file)
@@ -6,32 +6,10 @@
   <link rel="stylesheet" href="css/colours.css" type="text/css">
   <link rel="stylesheet" href="css/uglyui.css" type="text/css">
   <script type="text/javascript" src="js/mootools-1.2-core.js"></script>
-  <!--<script type="text/javascript" src="js/debug/version.js"></script>
-  <script type="text/javascript" src="js/debug/jslib.js"></script>
-  <script type="text/javascript" src="js/debug/irc/ircconnection.js"></script>
-  <script type="text/javascript" src="js/debug/irc/irclib.js"></script>
-  <script type="text/javascript" src="js/debug/irc/baseirc.js"></script>
-  <script type="text/javascript" src="js/debug/irc/irctracker.js"></script>
-  <script type="text/javascript" src="js/debug/irc/commandparser.js"></script>
-  <script type="text/javascript" src="js/debug/irc/ircclient.js"></script>
-  <script type="text/javascript" src="js/debug/ui/baseui.js"></script>
-  <script type="text/javascript" src="js/debug/ui/colour.js"></script>
-  <script type="text/javascript" src="js/debug/ui/theme.js"></script>
-  <script type="text/javascript" src="js/debug/ui/uglyui.js"></script>-->
   <script type="text/javascript" src="js/qwebirc.js"></script>
   <script type="text/javascript" src="js/uglyui.js"></script>
-  <script type="text/javascript">  
-    window.addEvent("domready", function() {
-      var theme = new Theme();
-      var ui = new UglyUI($("ircui"), theme);
-
-      /* TODO: look at URI and detect nickname/channels... */
-
-      var details = ui.loginBox(function(options) {
-        var IRC = new IRCClient(options, ui);
-        IRC.connect();
-      });
-    });
+  <script type="text/javascript">
+    new QWebIRCInterface("ircui", UglyUI);
   </script>
 </head>
 <body>
index 4197244568b9d7a54a50cff66cbe98818bc2a525..acf1f3e098fe0e86fce943e092dc8193f548dde3 100644 (file)
   <script type="text/javascript" src="js/debug/ui/colour.js"></script>
   <script type="text/javascript" src="js/debug/ui/theme.js"></script>
   <script type="text/javascript" src="js/debug/ui/uglyui.js"></script>
-  <!--<script type="text/javascript" src="js/qwebirc.js"></script>
-  <script type="text/javascript" src="js/uglyui.js"></script>-->
-  <script type="text/javascript">  
-    window.addEvent("domready", function() {
-      var theme = new Theme();
-      var ui = new UglyUI($("ircui"), theme);
-
-      /* TODO: look at URI and detect nickname/channels... */
-
-      var details = ui.loginBox(function(options) {
-        var IRC = new IRCClient(options, ui);
-        IRC.connect();
-      });
-    });
+  <script type="text/javascript" src="js/debug/qwebircinterface.js"></script>
+  <script type="text/javascript">
+    new QWebIRCInterface("ircui", UglyUI);
   </script>
 </head>
 <body>