diff options
author | Nik Nyby <nikolas@gnu.org> | 2015-06-19 19:29:52 -0400 |
---|---|---|
committer | Nik Nyby <nikolas@gnu.org> | 2015-10-22 21:33:30 -0400 |
commit | d64a3c7e6b8a95517057eae39cc3115e27842f5a (patch) | |
tree | 8e0517f1eb5ae266331b1ff55b081c353e2e96f8 | |
parent | 9180aa0e94f4c043f2ef6103788d7fde0b927741 (diff) | |
download | librejsxul-d64a3c7e6b8a95517057eae39cc3115e27842f5a.tar.lz librejsxul-d64a3c7e6b8a95517057eae39cc3115e27842f5a.tar.xz librejsxul-d64a3c7e6b8a95517057eae39cc3115e27842f5a.zip |
remove menuitems
-rw-r--r-- | lib/addon_management/install_uninstall.js | 2 | ||||
-rw-r--r-- | packages/menuitems/README.md | 3 | ||||
-rw-r--r-- | packages/menuitems/docs/menuitems.md | 66 | ||||
-rw-r--r-- | packages/menuitems/lib/menuitems.js | 195 | ||||
-rw-r--r-- | packages/menuitems/package.json | 9 | ||||
-rw-r--r-- | packages/menuitems/tests/test-menuitems.js | 171 |
6 files changed, 1 insertions, 445 deletions
diff --git a/lib/addon_management/install_uninstall.js b/lib/addon_management/install_uninstall.js index 7ce73ea..084b448 100644 --- a/lib/addon_management/install_uninstall.js +++ b/lib/addon_management/install_uninstall.js @@ -46,7 +46,7 @@ exports.onUnload = function(reason) { reason == "shutdown" || reason == "upgrade" || reason == "downgrade") { - require("settings/storage").librejsStorage.writeCacheToDB(); + require("../settings/storage").librejsStorage.writeCacheToDB(); // remove all http notifications httpObserver.removeHttpObserver(); // remove worker. diff --git a/packages/menuitems/README.md b/packages/menuitems/README.md deleted file mode 100644 index 12a6954..0000000 --- a/packages/menuitems/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Menuitems Package for Jetpack Add-ons - - diff --git a/packages/menuitems/docs/menuitems.md b/packages/menuitems/docs/menuitems.md deleted file mode 100644 index 2017c9c..0000000 --- a/packages/menuitems/docs/menuitems.md +++ /dev/null @@ -1,66 +0,0 @@ -<!-- contributed by Erik Vold [erikvvold@gmail.com] --> - - -The `menuitems` API is a simple way to create -[Menuitems](https://developer.mozilla.org/en/XUL/PopupGuide/MenuItems), which -can perform an action when clicked, and display state. - -## Example ## - - exports.main = function(options) { - // create menuitem for the File menu, - // and insert it before the 'Quit' menuitem - require("menuitems").Menuitem({ - id: "myextprefix-some-mi-id", - menuid: "menu_FilePopup", - insertbefore: "menu_FileQuitItem", - "label": _("label"), - "accesskey": _("label.ak"), - image: self.data.url("icon.png"), - className: 'pizazz', - disabled: false, - checked: false, - onCommand: function() { - // do something - } - }); - }; - -<api name="Menuitem"> -@class - -Module exports `Menuitem` constructor allowing users to create a -[`menuitem`](https://developer.mozilla.org/en/XUL/menuitem). - -<api name="Menuitem"> -@constructor -Creates a `menuitem`. - -@param options {Object} - Options for the `menuitem`, with the following parameters: - -@prop id {String} -A id for the `menuitem`, this should be namespaced. - -@prop menuid {String} -The id of the parent `<menu>` node. - -@prop label {String} -A label for the `menuitem`. - -@prop image {String} -A image url for the `menuitem`. - -@prop className {String} -A default space delimited list of class names for the menuitem. - -@prop disabled {Boolean} -When a menuitem is disabled it cannot be used, but is still displayed. - -@prop checked {Boolean} -Displays a check beside the menuitem. - -@prop [onCommand] {Function} - A option function that is invoked when the `menuitem` is executed. -</api> -</api> diff --git a/packages/menuitems/lib/menuitems.js b/packages/menuitems/lib/menuitems.js deleted file mode 100644 index 075d690..0000000 --- a/packages/menuitems/lib/menuitems.js +++ /dev/null @@ -1,195 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -"use strict"; - -const windowUtils = require("sdk/deprecated/window-utils"); -const { Class } = require("sdk/core/heritage"); -const { validateOptions } = require("sdk/deprecated/api-utils"); -const { on, emit, once, off } = require("sdk/event/core"); -const { isBrowser } = require("sdk/window/utils"); -const { EventTarget } = require('sdk/event/target'); -const { unload } = require("unload+"); - -const menuitemNS = require("sdk/core/namespace").ns(); -const NS_XUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; - -function MenuitemOptions(options) { - return validateOptions(options, { - id: { is: ['string'] }, - menuid: { is: ['undefined', 'string'] }, - insertbefore: { is: ['undefined', 'string', 'object'] }, - label: { is: ["string"] }, - disabled: { is: ["undefined", "boolean"], map: function(v) !!v}, - accesskey: { is: ["undefined", "string"] }, - key: { is: ["undefined", "string"] }, - checked: { is: ['undefined', 'boolean'] }, - className: { is: ["undefined", "string"] }, - onCommand: { is: ['undefined', 'function'] } - }); -} - -let Menuitem = Class({ - extends: EventTarget, - initialize: function(options) { - options = menuitemNS(this).options = MenuitemOptions(options); - EventTarget.prototype.initialize.call(this, options); - - menuitemNS(this).destroyed = false; - menuitemNS(this).unloaders = []; - menuitemNS(this).menuitems = addMenuitems(this, options).menuitems; - }, - get id() menuitemNS(this).options.id, - get label() menuitemNS(this).options.label, - set label(val) updateProperty(this, 'label', val), - get checked() menuitemNS(this).options.checked, - set checked(val) updateProperty(this, 'checked', !!val), - get disabled() menuitemNS(this).options.disabled, - set disabled(val) updateProperty(this, 'disabled', !!val), - get key() menuitemNS(this).options.key, - set key(val) updateProperty(this, 'key', val), - clone: function (overwrites) { - let opts = Object.clone(menuitemNS(this).options); - for (let key in overwrites) { - opts[key] = ovrewrites[key]; - } - return Menuitem(opts); - }, - get menuid() menuitemNS(this).options.menuid, - set menuid(val) { - let options = menuitemNS(this).options; - options.menuid = val; - - forEachMI(function(menuitem, i, $) { - updateMenuitemParent(menuitem, options, $); - }); - }, - destroy: function() { - if (!menuitemNS(this).destroyed) { - menuitemNS(this).destroyed = true; - menuitemNS(this).unloaders.forEach(function(u) u()); - menuitemNS(this).unloaders = null; - menuitemNS(this).menuitems = null; - } - return true; - } -}); - -function addMenuitems(self, options) { - let menuitems = []; - - // setup window tracker - windowUtils.WindowTracker({ - onTrack: function (window) { - if (!isBrowser(window) || menuitemNS(self).destroyed) return; - - // add the new menuitem to a menu - var menuitem = updateMenuitemAttributes( - window.document.createElementNS(NS_XUL, "menuitem"), options); - var menuitems_i = menuitems.push(menuitem) - 1; - - // add the menutiem to the ui - updateMenuitemParent(menuitem, options, function(id) window.document.getElementById(id)); - - menuitem.addEventListener("command", function() { - if (!self.disabled) - emit(self, 'command'); - }, true); - - // add unloader - let unloader = function unloader() { - menuitem.parentNode && menuitem.parentNode.removeChild(menuitem); - menuitems[menuitems_i] = null; - }; - menuitemNS(self).unloaders.push(function() { - remover(); - unloader(); - }); - let remover = unload(unloader, window); - } - }); - return {menuitems: menuitems}; -} - -function updateMenuitemParent(menuitem, options, $) { - // add the menutiem to the ui - if (Array.isArray(options.menuid)) { - let ids = options.menuid; - for (var len = ids.length, i = 0; i < len; i++) { - if (tryParent($(ids[i]), menuitem, options.insertbefore)) - return true; - } - } - else { - return tryParent($(options.menuid), menuitem, options.insertbefore); - } - return false; -} - -function updateMenuitemAttributes(menuitem, options) { - menuitem.setAttribute("id", options.id); - menuitem.setAttribute("label", options.label); - - if (options.accesskey) - menuitem.setAttribute("accesskey", options.accesskey); - - if (options.key) - menuitem.setAttribute("key", options.key); - - menuitem.setAttribute("disabled", !!options.disabled); - - if (options.image) { - menuitem.classList.add("menuitem-iconic"); - menuitem.style.listStyleImage = "url('" + options.image + "')"; - } - - if (options.checked) - menuitem.setAttribute('checked', options.checked); - - if (options.className) - options.className.split(/\s+/).forEach(function(name) menuitem.classList.add(name)); - - return menuitem; -} - -function updateProperty(menuitem, key, val) { - menuitemNS(menuitem).options[key] = val; - - forEachMI(function(menuitem) { - menuitem.setAttribute(key, val); - }, menuitem); - return val; -} - -function forEachMI(callback, menuitem) { - menuitemNS(menuitem).menuitems.forEach(function(mi, i) { - if (!mi) return; - callback(mi, i, function(id) mi.ownerDocument.getElementById(id)); - }); -} - -function tryParent(parent, menuitem, before) { - if (parent) parent.insertBefore(menuitem, insertBefore(parent, before)); - return !!parent; -} - -function insertBefore(parent, insertBefore) { - if (typeof insertBefore == "number") { - switch (insertBefore) { - case MenuitemExport.FIRST_CHILD: - return parent.firstChild; - } - return null; - } - else if (typeof insertBefore == "string") { - return parent.querySelector("#" + insertBefore); - } - return insertBefore; -} - -function MenuitemExport(options) { - return Menuitem(options); -} -MenuitemExport.FIRST_CHILD = 1; - -exports.Menuitem = MenuitemExport; diff --git a/packages/menuitems/package.json b/packages/menuitems/package.json deleted file mode 100644 index 95b1ede..0000000 --- a/packages/menuitems/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "menuitems", - "description": "Menuitems for Jetpacks", - "keywords": ["menu", "menuitems", "button", "ui"], - "author": "Erik Vold (http://erikvold.com/) <erikvvold@gmail.com>", - "version": "1.1.1", - "license": "MPL 2.0", - "dependencies": ["api-utils", "vold-utils"] -} diff --git a/packages/menuitems/tests/test-menuitems.js b/packages/menuitems/tests/test-menuitems.js deleted file mode 100644 index 191bb44..0000000 --- a/packages/menuitems/tests/test-menuitems.js +++ /dev/null @@ -1,171 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -'use strict' - -const windowUtils = require("window-utils"); -const menuitems = require("menuitems"); - -let window = windowUtils.activeBrowserWindow; -let document = window.document; -function $(id) document.getElementById(id); - -function createMI(options, test) { - test.assertEqual(!$(options.id), true); - var mi = new menuitems.Menuitem(options); - return mi; -} - -exports.testMIDoesNotExist = function(test) { - var options = { - id: "test-mi-dne", - label: "test" - }; - createMI(options, test); - test.assertEqual(!!$(options.id), false, 'menuitem does not exists'); -}; - -exports.testMIDoesExist = function(test) { - var options = { - id: "test-mi-exists", - label: "test", - menuid: 'menu_FilePopup' - }; - let mi = createMI(options, test); - let menuitem = $(options.id); - test.assertEqual(!!menuitem, true, 'menuitem exists'); - test.assertEqual(menuitem.id, options.id, 'menuitem id is ok'); - test.assertEqual(menuitem.getAttribute('label'), options.label, 'menuitem label is ok'); - test.assertEqual(menuitem.parentNode.id, options.menuid, 'in the file menu'); - test.assertEqual(menuitem.getAttribute('disabled'), 'false', 'menuitem not disabled'); - test.assertEqual(menuitem.getAttribute('accesskey'), '', 'menuitem accesskey is ok'); - test.assertEqual(menuitem.getAttribute('class'), '', 'menuitem class is ok'); - test.assertEqual(menuitem.nextSibling, undefined, 'menuitem is last'); - test.assertEqual(menuitem.hasAttribute("checked"), false, 'menuitem not checked'); - mi.destroy(); - test.assert(!$(options.id), 'menuitem is gone'); - test.assertEqual(menuitem.parentNode, null, 'menuitem has no parent'); -}; - -exports.testMIOnClick = function(test) { - test.waitUntilDone(); - - let options = { - id: "test-mi-onclick", - label: "test", - menuid: 'menu_FilePopup', - onCommand: function() { - mi.destroy(); - test.pass('onCommand worked!'); - test.done(); - } - }; - - let e = document.createEvent("UIEvents"); - e.initUIEvent("command", true, true, window, 1); - - var mi = createMI(options, test); - let menuitem = $(options.id); - test.assertEqual(!!menuitem, true, 'menuitem exists'); - menuitem.dispatchEvent(e); -}; - -exports.testMIDisabled = function(test) { - test.waitUntilDone(); - - let commandIsOK = false; - let count = 0; - let options = { - id: "test-mi-disabled", - label: "test", - disabled: true, - menuid: 'menu_FilePopup', - onCommand: function() { - count++; - if (!commandIsOK) { - test.fail('onCommand was called, that is not ok'); - return; - } - - mi.destroy(); - test.assertEqual(count, 1, 'onCommand was called the correct number of times!'); - test.done(); - } - }; - - let e = document.createEvent("UIEvents"); - e.initUIEvent("command", true, true, window, 1); - - var mi = createMI(options, test); - let menuitem = $(options.id); - test.assertEqual(!!menuitem, true, 'menuitem exists'); - test.assertEqual(menuitem.getAttribute('disabled'), 'true', 'menuitem not disabled'); - menuitem.dispatchEvent(e); - mi.disabled = false; - test.assertEqual(menuitem.getAttribute('disabled'), 'false', 'menuitem not disabled'); - commandIsOK = true; - menuitem.dispatchEvent(e); -}; - -exports.testMIChecked = function(test) { - let options = { - id: "test-mi-checked", - label: "test", - disabled: true, - menuid: 'menu_FilePopup', - checked: true - }; - - let mi = createMI(options, test); - let menuitem = $(options.id); - test.assertEqual(!!menuitem, true, 'menuitem exists'); - test.assertEqual(menuitem.getAttribute("checked"), "true", 'menuitem checked'); - mi.checked = false; - test.assertEqual(menuitem.getAttribute("checked"), "false", 'menuitem checked'); - mi.destroy(); -}; - -exports.testMIClass = function(test) { - let options = { - id: "test-mi-class", - label: "pizazz", - className: "pizazz", - menuid: 'menu_FilePopup', - }; - - var mi = createMI(options, test); - let menuitem = $(options.id); - test.assertEqual(!!menuitem, true, 'menuitem exists'); - test.assertEqual(menuitem.getAttribute('class'), 'pizazz', 'menuitem not disabled'); - mi.destroy(); -}; - -exports.testInsertBeforeExists = function(test) { - let options = { - id: 'test-mi-insertbefore', - label: 'insertbefore', - insertbefore:'menu_FileQuitItem', - menuid: 'menu_FilePopup', - }; - - var mi = createMI(options, test); - let menuitem = $(options.id); - test.assertEqual(!!menuitem, true, 'menuitem exists'); - test.assertEqual(menuitem.nextSibling, $('menu_FileQuitItem'), 'menuitem not disabled'); - mi.destroy(); -}; - -exports.testInsertBeforeDoesNotExist = function(test) { - let options = { - id: 'test-mi-insertbefore', - label: 'insertbefore', - insertbefore:'menu_ZZZDNE', - menuid: 'menu_FilePopup', - }; - - var mi = createMI(options, test); - let menuitem = $(options.id); - test.assertEqual(!!menuitem, true, 'menuitem exists'); - test.assertEqual(menuitem.nextSibling, null, 'menuitem not disabled'); - mi.destroy(); -}; |