From 0b60c973b0f0f4962509cb2b813a8fe447b9c14b Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 10:27:02 -0400 Subject: [PATCH 1/9] Update requires to new sdk paths --- lib/main.js | 10 +++++----- test/test-main.js | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/main.js b/lib/main.js index 8216560..ef39fe2 100644 --- a/lib/main.js +++ b/lib/main.js @@ -1,10 +1,10 @@ // Define keyboard shortcuts for showing and hiding a custom panel. var { Cc, Ci } = require("chrome"); -var { Hotkey } = require("hotkeys"); -var panel = require("panel"); -var timers = require("timers"); -var data = require("self").data; -var runtime = require("runtime"); +var { Hotkey } = require("sdk/hotkeys"); +var panel = require("sdk/panel"); +var timers = require("sdk/timers"); +var data = require("sdk/self").data; +var runtime = require("sdk/system/runtime"); var osString = runtime.OS; var osWarnFile; diff --git a/test/test-main.js b/test/test-main.js index 98d630b..5739116 100644 --- a/test/test-main.js +++ b/test/test-main.js @@ -5,11 +5,11 @@ exports.test_test_run = function(test) { }; exports.test_id = function(test) { - test.assert(require("self").id.length > 0); + test.assert(require("sdk/self").id.length > 0); }; exports.test_url = function(test) { - require("request").Request({ + require("sdk/request").Request({ url: "http://www.mozilla.org/", onComplete: function(response) { test.assertEqual(response.statusText, "OK"); @@ -20,7 +20,7 @@ exports.test_url = function(test) { }; exports.test_open_tab = function(test) { - const tabs = require("tabs"); + const tabs = require("sdk/tabs"); tabs.open({ url: "http://www.mozilla.org/", onReady: function(tab) { From 3f3e6234c253331fec81791b61140a52833cda11 Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 10:31:49 -0400 Subject: [PATCH 2/9] Use the nice Services module --- lib/main.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/main.js b/lib/main.js index ef39fe2..758e4ab 100644 --- a/lib/main.js +++ b/lib/main.js @@ -1,5 +1,5 @@ // Define keyboard shortcuts for showing and hiding a custom panel. -var { Cc, Ci } = require("chrome"); +var { Ci, Cu } = require("chrome"); var { Hotkey } = require("sdk/hotkeys"); var panel = require("sdk/panel"); var timers = require("sdk/timers"); @@ -8,6 +8,8 @@ var runtime = require("sdk/system/runtime"); var osString = runtime.OS; var osWarnFile; +Cu.import("resource://gre/modules/Services.jsm"); + // Load the right warning if (osString === "Darwin") { osWarnFile = "warnmac.html"; @@ -34,9 +36,7 @@ var pressButton = function() { // We're already showing the warning if (myPanel.isShowing) { myPanel.hide(); - Cc['@mozilla.org/toolkit/app-startup;1'] - .getService(Ci.nsIAppStartup) - .quit(Ci.nsIAppStartup.eAttemptQuit) + Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit); } // Show the warning since we didn't quit yet showPanel(); From 87d5865a330de3f290815c9688a3b7bd36e1a95a Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 10:34:21 -0400 Subject: [PATCH 3/9] Generalize showPanel --- lib/main.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/main.js b/lib/main.js index 758e4ab..18aeb7f 100644 --- a/lib/main.js +++ b/lib/main.js @@ -24,11 +24,10 @@ var myPanel = panel.Panel({ contentURL: data.url(osWarnFile), }); -// Display the warning -function showPanel() { - myPanel.show(); +function showWarnPanel(panel) { + panel.show(); timers.setTimeout(function() { - myPanel.hide(); + panel.hide(); }, 2000); } @@ -39,7 +38,7 @@ var pressButton = function() { Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit); } // Show the warning since we didn't quit yet - showPanel(); + showWarnPanel(myPanel); }; // Handle the keypress From 642cc24420f393ce4c10a143e153d35742a72d00 Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 10:39:56 -0400 Subject: [PATCH 4/9] Rename pressButton to attemptQuit --- lib/main.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/main.js b/lib/main.js index 18aeb7f..f67867f 100644 --- a/lib/main.js +++ b/lib/main.js @@ -31,26 +31,27 @@ function showWarnPanel(panel) { }, 2000); } -var pressButton = function() { - // We're already showing the warning +var attemptQuit = function() { if (myPanel.isShowing) { + // We're already showing the warning myPanel.hide(); Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit); + } else { + // Show the warning since we didn't quit yet + showWarnPanel(myPanel); } - // Show the warning since we didn't quit yet - showWarnPanel(myPanel); }; // Handle the keypress var AccelQ = Hotkey({ - combo: "accel-q", - onPress: function() { - pressButton(); - } + combo: "accel-q", + onPress: function() { + attemptQuit(); + } }); var AccelShiftW = Hotkey({ - combo: "accel-shift-w", - onPress: function() { - pressButton(); - } + combo: "accel-shift-w", + onPress: function() { + attemptQuit(); + } }); From 6d1fd50b42651a58dc05369afc8123e3f866cf22 Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 10:42:39 -0400 Subject: [PATCH 5/9] Change function expression to function definition --- lib/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/main.js b/lib/main.js index f67867f..519949e 100644 --- a/lib/main.js +++ b/lib/main.js @@ -31,7 +31,7 @@ function showWarnPanel(panel) { }, 2000); } -var attemptQuit = function() { +function attemptQuit() { if (myPanel.isShowing) { // We're already showing the warning myPanel.hide(); @@ -40,7 +40,7 @@ var attemptQuit = function() { // Show the warning since we didn't quit yet showWarnPanel(myPanel); } -}; +} // Handle the keypress var AccelQ = Hotkey({ From 45b8a992f00d6080be5bd90fb1d1bfbcecaff2b9 Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 10:47:44 -0400 Subject: [PATCH 6/9] Change variable name --- data/{warn.html => warnquit.html} | 2 +- data/{warnmac.html => warnquitmac.html} | 2 +- lib/main.js | 20 ++++++++++---------- 3 files changed, 12 insertions(+), 12 deletions(-) rename data/{warn.html => warnquit.html} (83%) rename data/{warnmac.html => warnquitmac.html} (83%) diff --git a/data/warn.html b/data/warnquit.html similarity index 83% rename from data/warn.html rename to data/warnquit.html index 2ac6383..5df5815 100644 --- a/data/warn.html +++ b/data/warnquit.html @@ -14,7 +14,7 @@ -Press Control-Q or Control-Shift-W again to quit. +Press Control-Q again to quit. diff --git a/data/warnmac.html b/data/warnquitmac.html similarity index 83% rename from data/warnmac.html rename to data/warnquitmac.html index 3891b0e..9844a3e 100644 --- a/data/warnmac.html +++ b/data/warnquitmac.html @@ -14,7 +14,7 @@ -Press ⌘-Q or ⌘-Shift-W again to quit. +Press ⌘-Q again to quit. diff --git a/lib/main.js b/lib/main.js index 519949e..09eecbb 100644 --- a/lib/main.js +++ b/lib/main.js @@ -6,22 +6,22 @@ var timers = require("sdk/timers"); var data = require("sdk/self").data; var runtime = require("sdk/system/runtime"); var osString = runtime.OS; -var osWarnFile; +var osWarnQuitFile; Cu.import("resource://gre/modules/Services.jsm"); // Load the right warning if (osString === "Darwin") { - osWarnFile = "warnmac.html"; + osWarnQuitFile = "warnquitmac.html"; } else { - osWarnFile = "warn.html"; + osWarnFile = "warnquit.html"; } // Create the panel to show the warning -var myPanel = panel.Panel({ - width: 300, - height: 80, - contentURL: data.url(osWarnFile), +var warnQuitPanel = panel.Panel({ + width: 300, + height: 80, + contentURL: data.url(osWarnQuitFile), }); function showWarnPanel(panel) { @@ -32,13 +32,13 @@ function showWarnPanel(panel) { } function attemptQuit() { - if (myPanel.isShowing) { + if (warnQuitPanel.isShowing) { // We're already showing the warning - myPanel.hide(); + warnQuitPanel.hide(); Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit); } else { // Show the warning since we didn't quit yet - showWarnPanel(myPanel); + showWarnPanel(warnQuitPanel); } } From da2e2e53d9822c328a0794e5d5de6a6f3616e813 Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 10:49:17 -0400 Subject: [PATCH 7/9] Change accel-shift-w to close the window --- data/warnclosewindow.html | 20 ++++++++++++++++++++ data/warnclosewindowmac.html | 20 ++++++++++++++++++++ lib/main.js | 36 +++++++++++++++++++++++++++++++----- 3 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 data/warnclosewindow.html create mode 100644 data/warnclosewindowmac.html diff --git a/data/warnclosewindow.html b/data/warnclosewindow.html new file mode 100644 index 0000000..d9ca413 --- /dev/null +++ b/data/warnclosewindow.html @@ -0,0 +1,20 @@ + + + + + + + + + +Press Control-Shift-W again to close the window. + + + diff --git a/data/warnclosewindowmac.html b/data/warnclosewindowmac.html new file mode 100644 index 0000000..099e788 --- /dev/null +++ b/data/warnclosewindowmac.html @@ -0,0 +1,20 @@ + + + + + + + + + +Press ⌘-Shift-W again to close the window. + + + diff --git a/lib/main.js b/lib/main.js index 09eecbb..7f57464 100644 --- a/lib/main.js +++ b/lib/main.js @@ -5,19 +5,29 @@ var panel = require("sdk/panel"); var timers = require("sdk/timers"); var data = require("sdk/self").data; var runtime = require("sdk/system/runtime"); +var windows = require("sdk/windows"); var osString = runtime.OS; var osWarnQuitFile; +var osWarnCloseWindowFile; +var lastActiveWindow; Cu.import("resource://gre/modules/Services.jsm"); // Load the right warning if (osString === "Darwin") { - osWarnQuitFile = "warnquitmac.html"; - } else { - osWarnFile = "warnquit.html"; + osWarnQuitFile = "warnquitmac.html"; + osWarnCloseWindowFile = "warnclosewindowmac.html"; +} else { + osQuitWarnFile = "warnquit.html"; + osCloseWindowFile = "warnclosewindow.html"; } -// Create the panel to show the warning +var warnCloseWindowPanel = panel.Panel({ + width: 300, + height: 80, + contentURL: data.url(osWarnCloseWindowFile), +}); + var warnQuitPanel = panel.Panel({ width: 300, height: 80, @@ -32,6 +42,7 @@ function showWarnPanel(panel) { } function attemptQuit() { + warnCloseWindowPanel.hide(); if (warnQuitPanel.isShowing) { // We're already showing the warning warnQuitPanel.hide(); @@ -42,6 +53,21 @@ function attemptQuit() { } } +function attemptCloseWindow() { + warnQuitPanel.hide(); + var activeWindow = Services.wm.getMostRecentWindow(null); + var warningDisplayed = ( + warnCloseWindowPanel.isShowing && + activeWindow === lastActiveWindow); + if (warningDisplayed) { + warnCloseWindowPanel.hide(); + activeWindow.close(); + } else { + showWarnPanel(warnCloseWindowPanel); + lastActiveWindow = activeWindow; + } +} + // Handle the keypress var AccelQ = Hotkey({ combo: "accel-q", @@ -52,6 +78,6 @@ var AccelQ = Hotkey({ var AccelShiftW = Hotkey({ combo: "accel-shift-w", onPress: function() { - attemptQuit(); + attemptCloseWindow(); } }); From 0f787f9fcff2eba5b19ad9f106714304fb593e0c Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 18:05:33 -0400 Subject: [PATCH 8/9] Remove unused variable --- lib/main.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/main.js b/lib/main.js index 7f57464..3fbe1a6 100644 --- a/lib/main.js +++ b/lib/main.js @@ -5,7 +5,6 @@ var panel = require("sdk/panel"); var timers = require("sdk/timers"); var data = require("sdk/self").data; var runtime = require("sdk/system/runtime"); -var windows = require("sdk/windows"); var osString = runtime.OS; var osWarnQuitFile; var osWarnCloseWindowFile; From bb78bee830d93aab37d3c19887ceaea6f0ce5e20 Mon Sep 17 00:00:00 2001 From: d10n Date: Mon, 23 Mar 2015 18:05:51 -0400 Subject: [PATCH 9/9] Remove extra commas --- lib/main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/main.js b/lib/main.js index 3fbe1a6..b4698fc 100644 --- a/lib/main.js +++ b/lib/main.js @@ -24,13 +24,13 @@ if (osString === "Darwin") { var warnCloseWindowPanel = panel.Panel({ width: 300, height: 80, - contentURL: data.url(osWarnCloseWindowFile), + contentURL: data.url(osWarnCloseWindowFile) }); var warnQuitPanel = panel.Panel({ width: 300, height: 80, - contentURL: data.url(osWarnQuitFile), + contentURL: data.url(osWarnQuitFile) }); function showWarnPanel(panel) {