1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2026-02-11 20:55:47 +01:00

Import part of top patch in queue: Add no-op option hive for plugin API reasons, cleanup some related code.

This commit is contained in:
Kris Maglione
2011-08-16 21:17:52 -04:00
parent 01fd946df1
commit 1ad3fdf195
7 changed files with 52 additions and 20 deletions

View File

@@ -45,6 +45,11 @@ var Group = Class("Group", {
argsExtra: function argsExtra() ({}),
makeArgs: function makeArgs(doc, context, args) {
let res = update({ doc: doc, context: context }, args);
return update(this.argsExtra(res), args);
},
get toStringParams() [this.name],
get builtin() this.modules.contexts.builtinGroups.indexOf(this) >= 0,
@@ -288,7 +293,10 @@ var Contexts = Module("contexts", {
groups: { value: this.activeGroups(uri) }
}),
activeGroups: function (uri, doc) {
activeGroups: function (uri) {
if (uri instanceof Ci.nsIDOMDocument)
var [doc, uri] = [uri, uri.documentURIObject || util.newURI(uri.documentURI)];
if (!uri)
var { uri, doc } = this.modules.buffer;
@@ -463,6 +471,7 @@ var Contexts = Module("contexts", {
get modifiable() this.group.modifiable,
get argsExtra() this.group.argsExtra,
get makeArgs() this.group.makeArgs,
get builtin() this.group.builtin,
get name() this.group.name,

View File

@@ -11,7 +11,7 @@ try {
Components.utils.import("resource://dactyl/bootstrap.jsm");
defineModule("options", {
exports: ["Option", "Options", "ValueError", "options"],
require: ["messages", "storage"],
require: ["contexts", "messages", "storage"],
use: ["commands", "completion", "config", "prefs", "services", "styles", "template", "util"]
}, this);
@@ -757,6 +757,18 @@ var Option = Class("Option", {
EXPORTED_SYMBOLS.push(class_.className);
}, this);
var OptionHive = Class("OptionHive", Contexts.Hive, {
init: function init(group) {
init.supercall(this, group);
this.values = {};
this.has = Set.has(this.values);
},
add: function add(names, description, type, defaultValue, extraInfo) {
return this.modules.options.add(names, description, type, defaultValue, extraInfo);
}
});
/**
* @instance options
*/
@@ -764,6 +776,12 @@ var Options = Module("options", {
Local: function Local(dactyl, modules, window) let ({ contexts } = modules) ({
init: function init() {
const self = this;
update(this, {
hives: contexts.Hives("options", Class("OptionHive", OptionHive, { modules: modules })),
user: contexts.hives.options.user
});
this.needInit = [];
this._options = [];
this._optionMap = {};
@@ -853,6 +871,10 @@ var Options = Module("options", {
*/
add: function add(names, description, type, defaultValue, extraInfo) {
const self = this;
if (!util.isDactyl(Components.stack.caller))
deprecated.warn(add, "options.add", "group.options.add");
util.assert(type in Option.types,
_("option.noSuchType", type),
true);