From 49db15daa55bce8c30aa897ddba43268ceee0182 Mon Sep 17 00:00:00 2001 From: Masafumi Oyamada Date: Thu, 8 Oct 2015 23:50:27 +0900 Subject: [PATCH] Install toolbar button on first run --- content/keysnail.js | 46 ++++++++++++++++++++++++++ defaults/preferences/keysnail-prefs.js | 1 + 2 files changed, 47 insertions(+) diff --git a/content/keysnail.js b/content/keysnail.js index 217003d..d1a085c 100644 --- a/content/keysnail.js +++ b/content/keysnail.js @@ -140,6 +140,7 @@ document.addEventListener("copy", function () { command.clipboardChanged(); }, true); hook.callHook("KeySnailInitialized"); + this.ensureToolbarButtonInstalled(); }, /** @@ -167,6 +168,51 @@ } }, + // ------------------------------------------------------------ // + // Toolbar button {{{ + // ------------------------------------------------------------ // + + get isFirstRun() { + return util.getBoolPref("extensions.keysnail.first_run", true); + }, + + set isFirstRun(val) { + return util.setBoolPref("extensions.keysnail.first_run", val); + }, + + ensureToolbarButtonInstalled: function () { + if (this.isFirstRun) { + this.installToolbarButton(); + this.isFirstRun = false; + } + }, + + toolbarButtonId: "keysnail-toolbar-button", + + getToolbarButton: function () { return document.getElementById(this.toolbarButtonId); }, + + get toolbarButtonInstalled() { return !!this.getToolbarButton(); }, + + installToolbarButton: function () { + if (this.toolbarButtonInstalled) + return; + + let navBar = document.getElementById("nav-bar"); + navBar.insertItem(this.toolbarButtonId, null, null, false); + + this.makeToolbarButtonsPersistent(); + }, + + makeToolbarButtonsPersistent: function () { + let navBar = document.getElementById("nav-bar"); + navBar.setAttribute("currentset", navBar.currentSet); + document.persist("nav-bar", "currentset"); + }, + + // ------------------------------------------------------------ // + // }}} Toolbar button + // ------------------------------------------------------------ // + /** * Create context menu */ diff --git a/defaults/preferences/keysnail-prefs.js b/defaults/preferences/keysnail-prefs.js index 0d54190..d9390f3 100644 --- a/defaults/preferences/keysnail-prefs.js +++ b/defaults/preferences/keysnail-prefs.js @@ -1,3 +1,4 @@ +pref("extensions.keysnail.first_run", true); pref("extensions.keysnail.userscript.location", ""); pref("extensions.keysnail.keyhandler.global_enabled", true); pref("extensions.keysnail.keyhandler.low_priority", false);