]> jfr.im git - irc/quakenet/qwebirc.git/blobdiff - js/ui/baseui.js
Merge pull request #324 from retropc/master
[irc/quakenet/qwebirc.git] / js / ui / baseui.js
index 86145c9eb020b9fe837b2f70fb65bc92aaecdb47..0f5f84e9f8a1325202190da6e36e7e655565e7be 100644 (file)
@@ -117,9 +117,12 @@ qwebirc.ui.BaseUI = new Class({
   getActiveWindow: function() {
     return this.active;
   },
+  getStatusWindow: function(client) {
+    return this.windows.get(this.getClientId(client)).get(this.getWindowIdentifier(client, qwebirc.ui.WINDOW_STATUS));
+  },
   getActiveIRCWindow: function(client) {
     if(!this.active || this.active.type == qwebirc.ui.WINDOW_CUSTOM) {
-      return this.windows.get(this.getClientId(client)).get(this.getWindowIdentifier(client, qwebirc.ui.WINDOW_STATUS));
+      return this.getStatusWindow(client);
     } else {
       return this.active;
     }
@@ -249,10 +252,11 @@ qwebirc.ui.BaseUI = new Class({
 
 qwebirc.ui.StandardUI = new Class({
   Extends: qwebirc.ui.BaseUI,
-  UICommands: qwebirc.ui.UI_COMMANDS,
   initialize: function(parentElement, windowClass, uiName, options) {
     this.parent(parentElement, windowClass, uiName, options);
 
+    this.UICommands = this.__build_menu_items(options);
+
     this.__styleValues = {hue: qwebirc.ui.DEFAULT_HUE, saturation: 0, lightness: 0, textHue: null, textSaturation: null, textLightness: null};
     if($defined(this.options.hue)) this.__styleValues.hue = this.options.hue;
     this.tabCompleter = new qwebirc.ui.TabCompleterFactory(this);
@@ -274,6 +278,42 @@ qwebirc.ui.StandardUI = new Class({
 
     document.addEvent("keydown", this.__handleHotkey.bind(this));
   },
+  __build_menu_items: function(options) {
+    var r = [];
+    var seenAbout = null;
+
+    for(var i=0;i<qwebirc.ui.UI_COMMANDS_P1.length;i++)
+      r.push([true, qwebirc.ui.UI_COMMANDS_P1[i]]);
+    for(var i=0;i<options.customMenuItems.length;i++)
+      r.push([false, options.customMenuItems[i]]);
+    for(var i=0;i<qwebirc.ui.UI_COMMANDS_P2.length;i++)
+      r.push([true, qwebirc.ui.UI_COMMANDS_P2[i]]);
+
+    var r2 = []
+    for(var i=0;i<r.length;i++) {
+      var preset = r[i][0], c = r[i][1];
+
+      if(c[0] == "About qwebirc") { /* HACK */
+        if(!preset) {
+          seenAbout = c;
+          continue;
+        } else if(seenAbout) {
+          c = seenAbout;
+          preset = false;
+        }
+      }
+
+      if(preset) {
+        r2.push([c[0], this[c[1] + "Window"].bind(this)]);
+      } else {
+        r2.push([c[0], (function(c) { return function() {
+          this.addCustomWindow(c[0], qwebirc.ui.URLPane, "urlpane", {url: c[1]});
+        }.bind(this); }).call(this, c)]);
+      }
+    }
+
+    return r2;
+  },
   __handleHotkey: function(x) {
     var success = false;
     if(!x.alt && !x.control && !x.shift && !x.meta) {
@@ -376,17 +416,11 @@ qwebirc.ui.StandardUI = new Class({
     this.addCustomWindow("Options", qwebirc.ui.OptionsPane, "optionspane", this.uiOptions);
   },
   aboutWindow: function() {
-    this.addCustomWindow("About", qwebirc.ui.AboutPane, "aboutpane", this.uiOptions);
-  },
-  privacyWindow: function() {
-    this.addCustomWindow("Privacy policy", qwebirc.ui.PrivacyPolicyPane, "privacypolicypane", this.uiOptions);
+    this.addCustomWindow("About qwebirc", qwebirc.ui.AboutPane, "aboutpane", this.uiOptions);
   },
   feedbackWindow: function() {
     this.addCustomWindow("Feedback", qwebirc.ui.FeedbackPane, "feedbackpane", this.uiOptions);
   },
-  helpWindow: function() {
-    this.addCustomWindow("Help!", qwebirc.ui.HelpPane, "helppane", this.uiOptions);
-  },
   urlDispatcher: function(name, window) {
     if(name == "embedded")
       return ["a", this.embeddedWindow.bind(this)];