]> jfr.im git - irc/quakenet/qwebirc.git/commitdiff
Start work on swmui.
authorChris Porter <redacted>
Thu, 19 Jun 2008 18:24:01 +0000 (19:24 +0100)
committerChris Porter <redacted>
Thu, 19 Jun 2008 18:24:01 +0000 (19:24 +0100)
.hgignore
compile.bat
js/ui/swmlayout.js [new file with mode: 0644]
js/ui/swmui.js [new file with mode: 0644]
static/css/swmui.css [new file with mode: 0644]
static/swm.html [moved from static/uitest.html with 86% similarity]
static/uglyui.html [new file with mode: 0644]

index 6356fae4ff44664f3c2763d35615d0f28c96f925..1ed8373a3cb5bbcfdb10386dd422d92e0324d368 100644 (file)
--- a/.hgignore
+++ b/.hgignore
@@ -1,4 +1,7 @@
 syntax: glob
+static\js\uglyui.js
+static\js\swmui.js
+static\js\qwebirc.js
 static\js\debug
 qwebirc\config.py
 dropin.cache
index d20443651200ec8aefe2be8934290c93c0a223e7..f42bb6fecdb445f66a3c7e7ac68ebbe9516bcb60 100644 (file)
@@ -1,21 +1,36 @@
-@echo off\r
-del compiled.js\r
-del concat.js\r
+rem @echo off\r
+mkdir compiled\r
+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\uibase.js + ui\colour.js + ui\theme.js + ui\uglyui.js ..\concat.js /b\r
-cd ..\r
-java -jar bin\yuicompressor-2.3.5.jar concat.js > compiled.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\uibase.js + ui\colour.js + ui\theme.js ..\compiled\qwebirc-concat.js /b\r
+copy ui\swmlayout.js + ui\swmui.js ..\compiled\swmui-concat.js /b\r
+cd ..\compiled\r
+\r
+java -jar ..\bin\yuicompressor-2.3.5.jar qwebirc-concat.js > qwebirc-compiled.js\r
+if not %errorlevel% == 0 goto error\r
+\r
+java -jar ..\bin\yuicompressor-2.3.5.jar ..\js\ui\uglyui.js > uglyui-compiled.js\r
+if not %errorlevel% == 0 goto error\r
 \r
-if %errorlevel% == 0 goto ok\r
+java -jar ..\bin\yuicompressor-2.3.5.jar swmui-concat.js > swmui-compiled.js\r
+if not %errorlevel% == 0 goto error\r
+goto ok\r
 \r
-del compiled.js\r
+:error\r
+cd ..\r
+del /q compiled\*-compiled.js\r
 pause\r
-goto ene\r
+goto end\r
 \r
 :ok\r
-del concat.js\r
-copy js\copyright.js + compiled.js /b static\js\qwebirc.js\r
-del compiled.js\r
+cd ..\r
+copy js\copyright.js + compiled\qwebirc-compiled.js /b static\js\qwebirc.js\r
+copy js\copyright.js + compiled\uglyui-compiled.js /b static\js\uglyui.js\r
+copy js\copyright.js + compiled\swmui-compiled.js /b static\js\swmui.js\r
+del /q compiled\*.js\r
+rmdir compiled\r
+\r
 goto end\r
 \r
 :end\r
diff --git a/js/ui/swmlayout.js b/js/ui/swmlayout.js
new file mode 100644 (file)
index 0000000..8e406e3
--- /dev/null
@@ -0,0 +1,85 @@
+var SWM_ANCHOR_NONE =   0x00;\r
+var SWM_ANCHOR_TOP =    0x01;\r
+var SWM_ANCHOR_BOTTOM = 0x02;\r
+var SWM_ANCHOR_LEFT =   0x04;\r
+var SWM_ANCHOR_RIGHT =  0x08;\r
+\r
+var SWMPanel = new Class({\r
+  initialize: function(parent, id) {\r
+    this.parent = parent;\r
+    \r
+    var element = new Element("div", {"id": id, "styles": { "position": "absolute" } });\r
+    this.element = element;\r
+    this.element.wmpanel = this;\r
+\r
+    parent.addClass("wmelement");\r
+    \r
+    parent.appendChild(this.element);\r
+    this.anchor = ANCHOR_NONE;\r
+  },\r
+\r
+  setHeight: function(height) {\r
+    this.height = height;\r
+  },\r
+    \r
+  setWidth: function(width) {\r
+    this.width = width;\r
+  }\r
+});\r
+\r
+window.addEvent("domready", function() {\r
+  function reworkLayout(container) {\r
+    function anchorFilter(x, anchor) {\r
+      return x.filter(function(y) {\r
+        if(y.anchor == anchor)\r
+          return true;\r
+      });\r
+    }\r
+    var x = container.getChildren().map(function(x) {\r
+      return x.wmpanel\r
+    });\r
+    var top = anchorFilter(x, SWM_ANCHOR_TOP);\r
+    var bottom = anchorFilter(x, SWM_ANCHOR_BOTTOM);\r
+    var none = anchorFilter(x, SWM_ANCHOR_NONE);\r
+\r
+    var left = anchorFilter(x, SWM_ANCHOR_LEFT);\r
+    var right = anchorFilter(x, SWM_ANCHOR_RIGHT);\r
+    \r
+    var tpos = 0;\r
+    for(var i=0;i<top.length;i++) {\r
+      var obj = top[i].element;\r
+      obj.setStyles({"top": tpos + "px", "left": "0px", "right": "0px"});\r
+      tpos = tpos + obj.getSize()["size"]["y"];\r
+    }\r
+    \r
+    var bpos = 0;\r
+    for(var i=0;i<bottom.length;i++) {\r
+      var obj = bottom[i].element;\r
+      obj.setStyles({"bottom": bpos + "px", "left": "0px", "right": "0px"});\r
+      bpos = bpos + obj.getSize()["size"]["y"];\r
+    }\r
+    \r
+    var lpos = 0;\r
+    for(var i=0;i<left.length;i++) {\r
+      var obj = left[i].element;\r
+      obj.setStyles({"left": lpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
+      lpos = lpos + obj.getSize()["size"]["x"];\r
+    }\r
+\r
+    var rpos = 0;\r
+    for(var i=0;i<right.length;i++) {\r
+      var obj = right[i].element;\r
+      obj.setStyles({"right": rpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
+      rpos = rpos + obj.getSize()["size"]["x"];\r
+    }\r
+\r
+    for(var i=0;i<none.length;i++) {\r
+      var obj = none[i].element;\r
+      obj.setStyles({"left": lpos + "px", "right": rpos + "px", "top": tpos + "px", "bottom": bpos + "px"});\r
+    }\r
+  }\r
+  \r
+  window.addEvent("resize", function() {\r
+    $$("div[class=wmelement]").forEach(reworklayout);\r
+  });\r
+});
\ No newline at end of file
diff --git a/js/ui/swmui.js b/js/ui/swmui.js
new file mode 100644 (file)
index 0000000..9d30f66
--- /dev/null
@@ -0,0 +1,54 @@
+var RootPanel;\r
+var TabPanel;\r
+var EntryPanel;\r
+var MainPanel;\r
+var NickList;\r
+var Content;\r
+\r
+window.addEvent("domready", function() {\r
+  RootPanel = $("container");\r
+  TabPanel = new Panel(RootPanel, "tabs");\r
+  \r
+  TabPanel.anchor = ANCHOR_TOP;\r
+  MainPanel = new Panel(RootPanel, "main");\r
+  \r
+  EntryPanel = new Panel(RootPanel, "entry");\r
+  EntryPanel.anchor = ANCHOR_BOTTOM;\r
+  \r
+  //EntryPanel.element.setHTML("<input/>");\r
+  EntryPanel.element.setHTML("<input class=\"inputwidth\"/>");\r
+  \r
+  var iw = $$("input[class=inputwidth]");\r
+  window.addEvent("resize", function() {\r
+    var s = EntryPanel.element.getSize()["size"]["x"] - 4;\r
+    iw.setStyle("width", s + "px");\r
+  });\r
+  //window.addEvent("domready", function() {\r
+  \r
+  Content = new Panel(MainPanel.element, "content");\r
+  Content.element.setStyle("overflow", "auto");\r
+  \r
+  NickList = new Panel(MainPanel.element, "nicklist");\r
+  NickList.anchor = ANCHOR_RIGHT;\r
+  NickList.element.setStyle("overflow", "auto");\r
+  \r
+  for(var i=0;i<100;i++) {\r
+    var e = new Element("div").setText("MOO");\r
+    \r
+    Content.element.appendChild(e);\r
+  }\r
+  \r
+  for(var i=0;i<10;i++) {\r
+    var e = new Element("div").setText("MOO");\r
+    \r
+    NickList.element.appendChild(e);\r
+  }\r
+\r
+  for(var i=0;i<5;i++) {\r
+    var e = new Element("span").setText("MOO" + i);\r
+    \r
+    TabPanel.element.appendChild(e);\r
+  }\r
+  \r
+  window.fireEvent("resize");\r
+});
\ No newline at end of file
diff --git a/static/css/swmui.css b/static/css/swmui.css
new file mode 100644 (file)
index 0000000..5a1e607
--- /dev/null
@@ -0,0 +1,46 @@
+body, html {\r
+  height: 100%;\r
+  width: 100%;\r
+  margin: 0;\r
+  padding: 0;\r
+}\r
+\r
+div#container {\r
+  height: 100%;\r
+  width: 100%;\r
+}\r
+\r
+div#tabs {\r
+  background: #fdd;\r
+}\r
+\r
+div#main {\r
+  background: #ddf;\r
+}\r
+\r
+div#entry {\r
+  background: #dfd;\r
+}\r
+\r
+div#content {\r
+  background: #ddf;\r
+}\r
+\r
+div#nicklist {\r
+  background: #dff;\r
+}\r
+\r
+div#tabs span {\r
+  float: left;\r
+  min-width: 100px;\r
+  display: block;\r
+  border: 1px solid black;\r
+  margin-right: 2px;\r
+}\r
+\r
+div#entry input {\r
+  padding: 0px;\r
+}\r
+\r
+div#entry {\r
+}
\ No newline at end of file
similarity index 86%
rename from static/uitest.html
rename to static/swm.html
index 0b94dd1d2bfb1791fd1ddbbcfe38cc8a497e180a..015ec9268ebe61850067997d1836057dd7185a5c 100644 (file)
@@ -5,7 +5,7 @@
   <title>QuakeNet Web IRC</title>\r
   <link rel="stylesheet" href="css/colours.css" type="text/css">\r
   <link rel="stylesheet" href="css/uglyui.css" type="text/css">\r
-  <script type="text/javascript" src="js/mootools-1.2-core.js"></script>\r
+<!--  <script type="text/javascript" src="js/mootools-1.2-core.js"></script>\r
   <script type="text/javascript" src="js/debug/version.js"></script>\r
   <script type="text/javascript" src="js/debug/jslib.js"></script>\r
   <script type="text/javascript" src="js/debug/irc/ircconnection.js"></script>\r
@@ -17,8 +17,9 @@
   <script type="text/javascript" src="js/debug/ui/uibase.js"></script>\r
   <script type="text/javascript" src="js/debug/ui/colour.js"></script>\r
   <script type="text/javascript" src="js/debug/ui/theme.js"></script>\r
-  <script type="text/javascript" src="js/debug/ui/uglyui.js"></script>\r
-  <!--<script type="text/javascript" src="js/qwebirc.js"></script>-->\r
+  <script type="text/javascript" src="js/debug/ui/uglyui.js"></script>-->\r
+  <script type="text/javascript" src="js/qwebirc.js"></script>\r
+  <script type="text/javascript" src="js/swmui.js"></script>\r
   <script type="text/javascript">  \r
     window.addEvent("domready", function() {\r
       var theme = new Theme();\r
diff --git a/static/uglyui.html b/static/uglyui.html
new file mode 100644 (file)
index 0000000..213a80c
--- /dev/null
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
+"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
+<head>\r
+  <title>QuakeNet Web IRC</title>\r
+  <link rel="stylesheet" href="css/colours.css" type="text/css">\r
+  <link rel="stylesheet" href="css/uglyui.css" type="text/css">\r
+<!--  <script type="text/javascript" src="js/mootools-1.2-core.js"></script>\r
+  <script type="text/javascript" src="js/debug/version.js"></script>\r
+  <script type="text/javascript" src="js/debug/jslib.js"></script>\r
+  <script type="text/javascript" src="js/debug/irc/ircconnection.js"></script>\r
+  <script type="text/javascript" src="js/debug/irc/irclib.js"></script>\r
+  <script type="text/javascript" src="js/debug/irc/baseirc.js"></script>\r
+  <script type="text/javascript" src="js/debug/irc/irctracker.js"></script>\r
+  <script type="text/javascript" src="js/debug/irc/commandparser.js"></script>\r
+  <script type="text/javascript" src="js/debug/irc/ircclient.js"></script>\r
+  <script type="text/javascript" src="js/debug/ui/uibase.js"></script>\r
+  <script type="text/javascript" src="js/debug/ui/colour.js"></script>\r
+  <script type="text/javascript" src="js/debug/ui/theme.js"></script>\r
+  <script type="text/javascript" src="js/debug/ui/uglyui.js"></script>-->\r
+  <script type="text/javascript" src="js/qwebirc.js"></script>\r
+  <script type="text/javascript" src="js/uglyui.js"></script>\r
+  <script type="text/javascript">  \r
+    window.addEvent("domready", function() {\r
+      var theme = new Theme();\r
+      var ui = new UglyUI($("ircui"), theme);\r
+\r
+      var IRC = new IRCClient({nickname: "mcgoogle"}, ui);\r
+      IRC.connect();\r
+    });\r
+  </script>\r
+</head>\r
+<body>\r
+  <div id="ircui"></div>\r
+</body>\r
+</html>
\ No newline at end of file