summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common/chrome.manifest22
-rw-r--r--common/content/bookmarks.js89
-rw-r--r--common/modules/config.jsm2
-rw-r--r--common/modules/contexts.jsm6
-rw-r--r--common/modules/overlay.jsm3
l---------[-rw-r--r--]melodactyl/chrome.manifest37
-rw-r--r--melodactyl/content/config.js280
-rw-r--r--melodactyl/content/melodactyl.xul52
-rw-r--r--melodactyl/content/player.js34
l---------[-rw-r--r--]pentadactyl/chrome.manifest23
-rw-r--r--pentadactyl/content/config.js4
l---------[-rw-r--r--]teledactyl/chrome.manifest23
-rw-r--r--teledactyl/content/teledactyl.xul20
13 files changed, 258 insertions, 337 deletions
diff --git a/common/chrome.manifest b/common/chrome.manifest
new file mode 100644
index 00000000..4995b0e8
--- /dev/null
+++ b/common/chrome.manifest
@@ -0,0 +1,22 @@
+resource dactyl-local-content content/
+resource dactyl-local-skin skin/
+resource dactyl-local-locale locale/
+
+resource dactyl ../common/modules/
+resource dactyl-content ../common/content/
+resource dactyl-skin ../common/skin/
+resource dactyl-locale ../common/locale/
+
+content dactyl ../common/content/
+
+component {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} components/commandline-handler.js
+contract @mozilla.org/commandlinehandler/general-startup;1?type=dactyl {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}
+category command-line-handler m-dactyl @mozilla.org/commandlinehandler/general-startup;1?type=dactyl
+
+component {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} components/protocols.js
+contract @mozilla.org/network/protocol;1?name=chrome-data {c1b67a07-18f7-4e13-b361-2edcc35a5a0d}
+component {9c8f2530-51c8-4d41-b356-319e0b155c44} components/protocols.js
+contract @mozilla.org/network/protocol;1?name=dactyl {9c8f2530-51c8-4d41-b356-319e0b155c44}
+component {f4506a17-5b4d-4cd9-92d4-2eb4630dc388} components/protocols.js
+contract @dactyl.googlecode.com/base/xpc-interface-shim {f4506a17-5b4d-4cd9-92d4-2eb4630dc388}
+
diff --git a/common/content/bookmarks.js b/common/content/bookmarks.js
index cb411ba9..1e2c3138 100644
--- a/common/content/bookmarks.js
+++ b/common/content/bookmarks.js
@@ -263,63 +263,56 @@ var Bookmarks = Module("bookmarks", {
* @returns {[string, string | null] | null}
*/
getSearchURL: function getSearchURL(text, useDefsearch) {
- let searchString = (useDefsearch ? options["defsearch"] + " " : "") + text;
+ let query = (useDefsearch ? options["defsearch"] + " " : "") + text;
// ripped from Firefox
- function getShortcutOrURI(url) {
- var keyword = url;
- var param = "";
- var offset = url.indexOf(" ");
- if (offset > 0) {
- keyword = url.substr(0, offset);
- param = url.substr(offset + 1);
- }
+ var keyword = query;
+ var param = "";
+ var offset = query.indexOf(" ");
+ if (offset > 0) {
+ keyword = query.substr(0, offset);
+ param = query.substr(offset + 1);
+ }
- var engine = bookmarks.searchEngines[keyword];
- if (engine) {
- if (engine.searchForm && !param)
- return [engine.searchForm, null];
- let submission = engine.getSubmission(param, null);
- return [submission.uri.spec, submission.postData];
- }
+ var engine = bookmarks.searchEngines[keyword];
+ if (engine) {
+ if (engine.searchForm && !param)
+ return engine.searchForm;
+ let submission = engine.getSubmission(param, null);
+ return [submission.uri.spec, submission.postData];
+ }
- let [shortcutURL, postData] = PlacesUtils.getURLAndPostDataForKeyword(keyword);
- if (!shortcutURL)
- return [url, null];
- let bmark = bookmarkcache.keywords[keyword];
-
- let data = window.unescape(postData || "");
- if (/%s/i.test(shortcutURL) || /%s/i.test(data)) {
- var charset = "";
- var matches = shortcutURL.match(/^(.*)\&mozcharset=([a-zA-Z][_\-a-zA-Z0-9]+)\s*$/);
- if (matches)
- [, shortcutURL, charset] = matches;
- else
- try {
- charset = services.history.getCharsetForURI(util.newURI(shortcutURL));
- }
- catch (e) {}
- if (charset)
- var encodedParam = escape(window.convertFromUnicode(charset, param));
- else
- encodedParam = bmark.encodeURIComponent(param);
+ let [url, postData] = PlacesUtils.getURLAndPostDataForKeyword(keyword);
+ if (!url)
+ return null;
- shortcutURL = shortcutURL.replace(/%s/g, encodedParam).replace(/%S/g, param);
- if (/%s/i.test(data))
- postData = window.getPostDataStream(data, param, encodedParam, "application/x-www-form-urlencoded");
- }
- else if (param)
- return [shortcutURL, null];
- return [shortcutURL, postData];
- }
+ let data = window.unescape(postData || "");
+ if (/%s/i.test(url) || /%s/i.test(data)) {
+ var charset = "";
+ var matches = url.match(/^(.*)\&mozcharset=([a-zA-Z][_\-a-zA-Z0-9]+)\s*$/);
+ if (matches)
+ [, url, charset] = matches;
+ else
+ try {
+ charset = services.history.getCharsetForURI(util.newURI(url));
+ }
+ catch (e) {}
- let [url, postData] = getShortcutOrURI(searchString);
+ if (charset)
+ var encodedParam = escape(window.convertFromUnicode(charset, param));
+ else
+ encodedParam = bookmarkcache.keywords[keyword].encodeURIComponent(param);
+
+ url = url.replace(/%s/g, encodedParam).replace(/%S/g, param);
+ if (/%s/i.test(data))
+ postData = window.getPostDataStream(data, param, encodedParam, "application/x-www-form-urlencoded");
+ }
+ else if (param)
+ postData = null;
- if (url == searchString)
- return null;
if (postData)
return [url, postData];
- return url; // can be null
+ return url;
},
/**
diff --git a/common/modules/config.jsm b/common/modules/config.jsm
index f348ffc9..9743df7c 100644
--- a/common/modules/config.jsm
+++ b/common/modules/config.jsm
@@ -13,7 +13,7 @@ Components.utils.import("resource://dactyl/bootstrap.jsm");
defineModule("config", {
exports: ["ConfigBase", "Config", "config"],
require: ["services", "storage", "util", "template"],
- use: ["io"]
+ use: ["io", "prefs"]
}, this);
var ConfigBase = Class("ConfigBase", {
diff --git a/common/modules/contexts.jsm b/common/modules/contexts.jsm
index f9457e9d..8d2dd98e 100644
--- a/common/modules/contexts.jsm
+++ b/common/modules/contexts.jsm
@@ -47,11 +47,13 @@ var Group = Class("Group", {
get builtin() this.modules.contexts.builtinGroups.indexOf(this) >= 0,
}, {
- compileFilter: function (patterns) {
+ compileFilter: function (patterns, default_) {
+ if (arguments.length < 2)
+ default_ = false;
function siteFilter(uri)
let (match = array.nth(siteFilter.filters, function (f) f(uri), 0))
- match && match.result;
+ match ? match.result : default_;
return update(siteFilter, {
toString: function () this.filters.join(","),
diff --git a/common/modules/overlay.jsm b/common/modules/overlay.jsm
index 4428690f..518dbc29 100644
--- a/common/modules/overlay.jsm
+++ b/common/modules/overlay.jsm
@@ -166,6 +166,7 @@ var Overlay = Module("Overlay", {
"options",
"overlay",
"prefs",
+ "sanitizer",
"services",
"storage",
"styles",
@@ -276,7 +277,7 @@ var Overlay = Module("Overlay", {
modules.config.scripts.forEach(modules.load);
frobModules();
- defineModule.modules.forEach(function ({ lazyInit, constructor: { className } }) {
+ defineModule.modules.forEach(function defModule({ lazyInit, constructor: { className } }) {
if (!lazyInit) {
frob(className);
modules[className] = modules[className];
diff --git a/melodactyl/chrome.manifest b/melodactyl/chrome.manifest
index 71f4cf77..40321439 100644..120000
--- a/melodactyl/chrome.manifest
+++ b/melodactyl/chrome.manifest
@@ -1,36 +1 @@
-# Songbird
-content melodactyl content/
-skin melodactyl classic/1.0 skin/
-locale melodactyl en-US locale/en-US/
-locale dactyl en-US ../common/locale/en-US/
-
-content dactyl ../common/content/
-resource dactyl ../common/modules/
-skin dactyl classic/1.0 ../common/skin/
-
-override chrome://dactyl/content/dactyl.dtd chrome://melodactyl/content/dactyl.dtd
-
-overlay chrome://songbird/content/xul/layoutBaseOverlay.xul chrome://melodactyl/content/melodactyl.xul
-overlay chrome://songbird/content/xul/layoutBaseOverlay.xul chrome://dactyl/content/dactyl.xul
-
-#component {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} components/commandline-handler.js
-#contract @mozilla.org/commandlinehandler/general-startup;1?type=dactyl {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}
-#category command-line-handler m-dactyl @mozilla.org/commandlinehandler/general-startup;1?type=dactyl
-#
-#component {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} components/protocols.js
-#contract @mozilla.org/network/protocol;1?name=chrome-data {c1b67a07-18f7-4e13-b361-2edcc35a5a0d}
-#component {9c8f2530-51c8-4d41-b356-319e0b155c44} components/protocols.js
-#contract @mozilla.org/network/protocol;1?name=dactyl {9c8f2530-51c8-4d41-b356-319e0b155c44}
-#component {f4506a17-5b4d-4cd9-92d4-2eb4630dc388} components/protocols.js
-#contract @dactyl.googlecode.com/base/xpc-interface-shim {f4506a17-5b4d-4cd9-92d4-2eb4630dc388}
-#component {81495d80-89ee-4c36-a88d-ea7c4e5ac63f} components/protocols.js
-#contract @mozilla.org/network/protocol/about;1?what=melodactyl {81495d80-89ee-4c36-a88d-ea7c4e5ac63f}
-
-#overlay chrome://songbird/content/xul/layoutWithBrowserOverlay.xul chrome://melodactyl/content/melodactyl.xul
-#overlay chrome://songbird/content/xul/layoutWithBrowserOverlay.xul chrome://dactyl/content/dactyl.xul
-
-#overlay chrome://songbird/content/xul/layoutWithoutBrowserOverlay.xul chrome://melodactyl/content/melodactyl.xul
-#overlay chrome://songbird/content/xul/layoutWithoutBrowserOverlay.xul chrome://dactyl/content/dactyl.xul
-
-#overlay windowtype:Songbird:Main chrome://dactyl/content/dactyl.xul
-#overlay windowtype:Songbird:Main chrome://melodactyl/content/melodactyl.xul
+../common/chrome.manifest \ No newline at end of file
diff --git a/melodactyl/content/config.js b/melodactyl/content/config.js
index 10b77de5..7614bda9 100644
--- a/melodactyl/content/config.js
+++ b/melodactyl/content/config.js
@@ -10,20 +10,134 @@
Components.utils.import("resource://gre/modules/utils.js"); // XXX: PlacesUtils
const Config = Module("config", ConfigBase, {
- init: function init() {
- init.supercall(this);
+ name: "melodactyl",
+ appName: "Melodactyl",
+ idName: "MELODACTYL",
+ host: "Songbird",
+ hostbin: "songbird",
- // TODO: mention this to SB devs, they seem keen to provide these
- // functions to make porting from FF as simple as possible.
- window.toJavaScriptConsole = function () {
- toOpenWindowByType("global:console", "chrome://global/content/console.xul");
- };
+ commandContainer: "mainplayer",
+
+ Local: function Local(dactyl, modules, window) let ({ config } = modules, { document } = window) {
+ init: function init() {
+ init.supercall(this);
+
+ // TODO: mention this to SB devs, they seem keen to provide these
+ // functions to make porting from FF as simple as possible.
+ window.toJavaScriptConsole = function () {
+ toOpenWindowByType("global:console", "chrome://global/content/console.xul");
+ };
+ },
+
+ // FIXME: unless I'm seeing double in in the wee small hours gBrowser is
+ // first set from getBrowser which they've deprecated in FF.
+ get browser() window.getBrowser(),
+ get tabbrowser() window.getBrowser(),
+
+ dialogs: {
+ about: ["About Songbird",
+ function () { window.openDialog("chrome://songbird/content/xul/about.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
+ addons: ["Manage Add-ons",
+ function () { window.SBOpenPreferences("paneAddons"); }],
+ checkupdates: ["Check for updates",
+ function () { window.checkForUpdates(); }],
+ cookies: ["List your cookies",
+ function () { window.toOpenWindowByType("Browser:Cookies", "chrome://browser/content/preferences/cookies.xul", "chrome,dialog=no,resizable"); }],
+ console: ["JavaScript console",
+ function () { window.toJavaScriptConsole(); }],
+ dominspector: ["DOM Inspector",
+ function () { window.inspectDOMDocument(window.content.document); },
+ function () "inspectDOMDocument" in window],
+ downloads: ["Manage Downloads",
+ function () { window.toOpenWindowByType("Download:Manager", "chrome://mozapps/content/downloads/downloads.xul", "chrome,dialog=no,resizable"); }],
+ newsmartplaylist: ["Open the file selector dialog",
+ function () { window.SBNewSmartPlaylist(); }],
+ openfile: ["Open the file selector dialog",
+ function () { window.SBFileOpen(); }],
+ pagesource: ["View page source",
+ function () { window.BrowserViewSourceOfDocument(window.content.document); }],
+ preferences: ["Show Songbird preferences dialog",
+ function () { window.openPreferences(); }],
+ printsetup: ["Setup the page size and orientation before printing",
+ function () { window.PrintUtils.showPageSetup(); }],
+ print: ["Show print dialog",
+ function () { window.PrintUtils.print(); }],
+ saveframe: ["Save frame to disk",
+ function () { window.saveFrameDocument(); }],
+ savepage: ["Save page to disk",
+ function () { window.saveDocument(window.content.document); }],
+ searchengines: ["Manage installed search engines",
+ function () { window.openDialog("chrome://browser/content/search/engineManager.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
+ selectionsource: ["View selection source",
+ function () { modules.buffer.viewSelectionSource(); }],
+ subscribe: ["Add a new subscription",
+ function () { window.SBSubscribe(); }]
+ },
+
+ // TODO: clean this up
+ focusChange: function (win) {
+ const { modes } = modules;
+
+ // Switch to -- PLAYER -- mode for Songbird Media Player.
+ if (this.isPlayerWindow)
+ modes.set(modes.PLAYER);
+ else
+ if (modes.main == modes.PLAYER)
+ modes.pop();
+ },
+
+ get isPlayerWindow() SBGetBrowser().mCurrentTab == SBGetBrowser().mediaTab,
+
+ /**
+ * Shows or hides the main service pane.
+ *
+ * @param {boolean} value Show the service pane if true, hide it if false.
+ */
+ showServicePane: function (value) {
+ const key = "splitter.servicepane_splitter.was_collapsed";
+ window.gServicePane.open = value;
+ window.SBDataSetBoolValue(key, window.gServicePane.open);
+ },
+
+ /**
+ * Opens the display panel with the specified *id*.
+ *
+ * @param {string} id The ID of the display pane.
+ */
+ openDisplayPane: function (id) {
+ if (id == "servicepane")
+ this.showServicePane(true);
+ else {
+ let pane = document.getElementById(id);
+ let manager = services.displayPaneManager;
+ let paneinfo = manager.getPaneInfo(pane._lastURL.stringValue);
+
+ if (!paneinfo)
+ paneinfo = manager.defaultPaneInfo;
+
+ pane.loadContent(paneinfo);
+ }
+ },
+
+ /**
+ * Closes the display panel with the specified *id*
+ *
+ * @param {string} id The ID of the display pane.
+ */
+ closeDisplayPane: function (id) {
+ if (id == "servicepane")
+ this.showServicePane(false);
+ else
+ document.getElementById(id).hide();
+ }
},
+
/*** optional options, there are checked for existence and a fallback provided ***/
- features: ["bookmarks", "hints", "marks", "history", "quickmarks", "session", "tabs", "player"],
+ features: set(["bookmarks", "hints", "marks", "history", "quickmarks", "session", "tabs", "player"]),
+
defaults: {
- guioptions: "smprb",
+ guioptions: "bCmprs",
showtabline: 2,
get titlestring() config.name
},
@@ -34,9 +148,7 @@ const Config = Module("config", ConfigBase, {
p: ["Player controls", ["player_wrapper"]]
},
- get isPlayerWindow() SBGetBrowser().mCurrentTab == SBGetBrowser().mediaTab,
- // focusContent() focuses this widget gSongbirdWindowController takes care of the focus.
- get visualbellWindow() document.getElementById(this.mainWindowId),
+ overlayChrome: ["chrome://purplerain/content/xul/mainplayer.xul"],
styleableChrome: ["chrome://purplerain/content/xul/mainplayer.xul"],
@@ -71,64 +183,7 @@ const Config = Module("config", ConfigBase, {
song: "song"
}, this.__proto__.completers)),
- dialogs: {
- about: ["About Songbird",
- function () { window.openDialog("chrome://songbird/content/xul/about.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
- addons: ["Manage Add-ons",
- function () { SBOpenPreferences("paneAddons"); }],
- checkupdates: ["Check for updates",
- function () { window.checkForUpdates(); }],
- cleardata: ["Clear private data",
- function () { Sanitizer.showUI(); }],
- cookies: ["List your cookies",
- function () { window.toOpenWindowByType("Browser:Cookies", "chrome://browser/content/preferences/cookies.xul", "chrome,dialog=no,resizable"); }],
- console: ["JavaScript console",
- function () { window.toJavaScriptConsole(); }],
- dominspector: ["DOM Inspector",
- function () { try { window.inspectDOMDocument(content.document); } catch (e) { dactyl.echoerr("DOM Inspector extension not installed"); } }],
- downloads: ["Manage Downloads",
- function () { window.toOpenWindowByType("Download:Manager", "chrome://mozapps/content/downloads/downloads.xul", "chrome,dialog=no,resizable"); }],
- newsmartplaylist: ["Open the file selector dialog",
- function () { SBNewSmartPlaylist(); }],
- openfile: ["Open the file selector dialog",
- function () { SBFileOpen(); }],
- pagesource: ["View page source",
- function () { window.BrowserViewSourceOfDocument(content.document); }],
- preferences: ["Show Songbird preferences dialog",
- function () { window.openPreferences(); }],
- printsetup: ["Setup the page size and orientation before printing",
- function () { PrintUtils.showPageSetup(); }],
- print: ["Show print dialog",
- function () { PrintUtils.print(); }],
- saveframe: ["Save frame to disk",
- function () { window.saveFrameDocument(); }],
- savepage: ["Save page to disk",
- function () { window.saveDocument(window.content.document); }],
- searchengines: ["Manage installed search engines",
- function () { window.openDialog("chrome://browser/content/search/engineManager.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
- selectionsource: ["View selection source",
- function () { buffer.viewSelectionSource(); }],
- subscribe: ["Add a new subscription",
- function () { SBSubscribe(); }]
- },
-
- // TODO: clean this up
- focusChange: function (win) {
- // Switch to -- PLAYER -- mode for Songbird Media Player.
- if (config.isPlayerWindow)
- modes.set(modes.PLAYER);
- else
- if (modes.main == modes.PLAYER)
- modes.pop();
- },
-
hasTabbrowser: true,
- // FIXME: unless I'm seeing double in in the wee small hours gBrowser is
- // first set from getBrowser which they've deprecated in FF.
- get tabbrowser() window.getBrowser(),
- get browser() window.getBrowser(),
-
- modes: [["PLAYER", { char: "p" }]],
removeTab: function (tab) {
if (config.tabbrowser.mTabs.length > 1)
@@ -153,55 +208,18 @@ const Config = Module("config", ConfigBase, {
"library"
],
+ sidebars: {
+ viewAddons: ["Add-ons", "A", "chrome://mozapps/content/extensions/extensions.xul"],
+ viewConsole: ["Console", "C", "chrome://global/content/console.xul"],
+ viewDownloads: ["Downloads", "D", "chrome://mozapps/content/downloads/downloads.xul"],
+ viewPreferences: ["Preferences", "P", "about:config"]
+ },
+
// FIXME: tab arg and media tab exception?
stop: function (tab) {
SBGetBrowser().mCurrentBrowser.stop();
}
}, {
-
- /**
- * Shows or hides the main service pane.
- *
- * @param {boolean} value Show the service pane if true, hide it if false.
- */
- showServicePane: function (value) {
- const key = "splitter.servicepane_splitter.was_collapsed";
- gServicePane.open = value;
- SBDataSetBoolValue(key, gServicePane.open);
- },
-
- /**
- * Opens the display panel with the specified *id*.
- *
- * @param {string} id The ID of the display pane.
- */
- openDisplayPane: function (id) {
- if (id == "servicepane")
- this.showServicePane(true);
- else {
- let pane = document.getElementById(id);
- let manager = services.displayPaneManager;
- let paneinfo = manager.getPaneInfo(pane._lastURL.stringValue);
-
- if (!paneinfo)
- paneinfo = manager.defaultPaneInfo;
-
- pane.loadContent(paneinfo);
- }
- },
-
- /**
- * Closes the display panel with the specified *id*
- *
- * @param {string} id The ID of the display pane.
- */
- closeDisplayPane: function (id) {
- if (id == "servicepane")
- this.showServicePane(false);
- else
- document.getElementById(id).hide();
- },
-
/**
* @property {object} A map of display pane command argument strings to
* panel element IDs.
@@ -213,13 +231,15 @@ const Config = Module("config", ConfigBase, {
"rightsidebar" : "displaypane_right_sidebar"
}
}, {
- commands: function () {
+ commands: function initCommands(dactyl, modules, window) {
+ const { commands, completion, options } = modules;
+
commands.add(["dpcl[ose]"],
"Close a display pane",
function (args) {
let arg = args.literalArg;
dactyl.assert(arg in Config.displayPanes, "E475: Invalid argument: " + arg);
- Config.closeDisplayPane(Config.displayPanes[arg]);
+ config.closeDisplayPane(Config.displayPanes[arg]);
},
{
argCount: "1",
@@ -234,7 +254,7 @@ const Config = Module("config", ConfigBase, {
let arg = args.literalArg;
dactyl.assert(arg in Config.displayPanes, "E475: Invalid argument: " + arg);
// TODO: focus when we have better key handling of these extended modes
- Config.openDisplayPane(Config.displayPanes[arg]);
+ config.openDisplayPane(Config.displayPanes[arg]);
},
{
argCount: "1",
@@ -258,22 +278,31 @@ const Config = Module("config", ConfigBase, {
bang: true
});
},
- completion: function () {
+ completion: function initCompletion(dactyl, modules, window) {
+ const completion = require("completion");
+
completion.displayPane = function (context) {
context.title = ["Display Pane"];
context.completions = Config.displayPanes; // FIXME: useful description etc
};
},
- modes: function () {
+ modes: function initModes(dactyl, modules, window) {
+ const { modes } = modules;
+
this.ignoreKeys = {
"<Return>": modes.NORMAL | modes.INSERT,
"<Space>": modes.NORMAL | modes.INSERT,
"<Up>": modes.NORMAL | modes.INSERT,
"<Down>": modes.NORMAL | modes.INSERT
};
- config.modes.forEach(function (mode) { modes.addMode.apply(modes, mode); }); // XXX
+
+ modes.addMode("PLAYER", {
+ char: "p"
+ });
},
- options: function () {
+ options: function initOptions(dactyl, modules, window) {
+ const { options } = modules;
+
// TODO: SB doesn't explicitly support an offline mode. Should we? --djk
options.add(["online"],
"Set the 'work offline' option",
@@ -288,12 +317,13 @@ const Config = Module("config", ConfigBase, {
getter: function () !services.io.offline
});
},
- services: function () {
- services.add("displayPaneManager", "@songbirdnest.com/Songbird/DisplayPane/Manager;1", Ci.sbIDisplayPaneManager);
- services.add("mediaPageManager", "@songbirdnest.com/Songbird/MediaPageManager;1", Ci.sbIMediaPageManager);
- services.add("propertyManager","@songbirdnest.com/Songbird/Properties/PropertyManager;1", Ci.sbIPropertyManager);
+ services: function initServices(dactyl, modules, window) {
+ services.add("displayPaneManager", "@songbirdnest.com/Songbird/DisplayPane/Manager;1", Ci.sbIDisplayPaneManager);
+ services.add("mediaPageManager", "@songbirdnest.com/Songbird/MediaPageManager;1", Ci.sbIMediaPageManager);
+ services.add("propertyManager", "@songbirdnest.com/Songbird/Properties/PropertyManager;1", Ci.sbIPropertyManager);
+
services.addClass("mutablePropertyArray", "@songbirdnest.com/Songbird/Properties/MutablePropertyArray;1",
- Ci.sbIMutablePropertyArray);
+ Ci.sbIMutablePropertyArray);
}
});
diff --git a/melodactyl/content/melodactyl.xul b/melodactyl/content/melodactyl.xul
deleted file mode 100644
index 44100c63..00000000
--- a/melodactyl/content/melodactyl.xul
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-
-<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
-<?xml-stylesheet href="chrome://melodactyl/skin/melodactyl.css" type="text/css"?>
-
-<overlay id="melodactyl"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:nc="http://home.netscape.com/NC-rdf#"
- xmlns:html="http://www.w3.org/1999/xhtml"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
- <menupopup id="viewSidebarMenu">
- <menuitem observes="melodactyl-viewAddonsSidebar" label="Add-ons" accesskey="A"/>
- <menuitem observes="melodactyl-viewConsoleSidebar" label="Console" accesskey="C"/>
- <menuitem observes="melodactyl-viewDownloadsSidebar" label="Downloads" accesskey="D"/>
- <menuitem observes="melodactyl-viewPreferencesSidebar" label="Preferences" accesskey="P"/>
- </menupopup>
-
- <broadcasterset id="mainBroadcasterSet">
- <broadcaster id="melodactyl-viewAddonsSidebar"
- autoCheck="false"
- type="checkbox"
- group="sidebar"
- sidebarurl="chrome://mozapps/content/extensions/extensions.xul"
- sidebartitle="Add-ons"
- oncommand="toggleSidebar('melodactyl-viewAddonsSidebar');"/>
- <broadcaster id="melodactyl-viewConsoleSidebar"
- autoCheck="false"
- type="checkbox"
- group="sidebar"
- sidebarurl="chrome://global/content/console.xul"
- sidebartitle="Console"
- oncommand="toggleSidebar('melodactyl-viewConsoleSidebar');"/>
- <broadcaster id="melodactyl-viewDownloadsSidebar"
- autoCheck="false"
- type="checkbox"
- group="sidebar"
- sidebarurl="chrome://mozapps/content/downloads/downloads.xul"
- sidebartitle="Downloads"
- oncommand="toggleSidebar('melodactyl-viewDownloadsSidebar');"/>
- <broadcaster id="melodactyl-viewPreferencesSidebar"
- autoCheck="false"
- type="checkbox"
- group="sidebar"
- sidebarurl="about:config"
- sidebartitle="Preferences"
- oncommand="toggleSidebar('melodactyl-viewPreferencesSidebar');"/>
- </broadcasterset>
-
-</overlay>
-
-<!-- vim: set fdm=marker sw=4 ts=4 et: -->
diff --git a/melodactyl/content/player.js b/melodactyl/content/player.js
index 89f7c2ee..009d5b41 100644
--- a/melodactyl/content/player.js
+++ b/melodactyl/content/player.js
@@ -440,10 +440,36 @@ const Player = Module("player", {
}
}, {
}, {
+ modes: function initModes(dactyl, modules, window) {
+ modes.addMode("SEARCH_VIEW", {
+ description: "Search View mode",
+ bases: [modes.COMMAND_LINE],
+ });
+ modes.addMode("SEARCH_VIEW_FORWARD", {
+ description: "Forward Search View mode",
+ bases: [modes.SEARCH_VIEW]
+ });
+ modes.addMode("SEARCH_VIEW_BACKWARD", {
+ description: "Backward Search View mode",
+ bases: [modes.SEARCH_VIEW]
+ });
+
+ },
commandline: function () {
- commandline.registerCallback("change", modes.SEARCH_VIEW_FORWARD, this.closure.onSearchKeyPress);
- commandline.registerCallback("submit", modes.SEARCH_VIEW_FORWARD, this.closure.onSearchSubmit);
- commandline.registerCallback("cancel", modes.SEARCH_VIEW_FORWARD, this.closure.onSearchCancel);
+ player.CommandMode = Class("CommandSearchViewMode", modules.CommandMode, {
+ init: function init(mode) {
+ this.mode = mode;
+ init.supercall(this);
+ },
+
+ historyKey: "search-view",
+
+ get prompt() this.mode === modules.modes.SEARCH_VIEW_BACKWARD ? "?" : "/",
+
+ get onCancel() player.closure.onSearchCancel,
+ get onChange() player.closure.onSearchKeyPress,
+ get onSubmit() player.closure.onSearchSubmit
+ });
},
commands: function () {
commands.add(["f[ilter]"],
@@ -754,7 +780,7 @@ const Player = Module("player", {
mappings.add([modes.PLAYER],
["/"], "Search forward for a track",
- function () { commandline.open("/", "", modes.SEARCH_VIEW_FORWARD); });
+ function () { player.CommandMode(modes.SEARCH_VIEW_FORWARD).open(); });
mappings.add([modes.PLAYER],
["n"], "Find the next track",
diff --git a/pentadactyl/chrome.manifest b/pentadactyl/chrome.manifest
index 4995b0e8..40321439 100644..120000
--- a/pentadactyl/chrome.manifest
+++ b/pentadactyl/chrome.manifest
@@ -1,22 +1 @@
-resource dactyl-local-content content/
-resource dactyl-local-skin skin/
-resource dactyl-local-locale locale/
-
-resource dactyl ../common/modules/
-resource dactyl-content ../common/content/
-resource dactyl-skin ../common/skin/
-resource dactyl-locale ../common/locale/
-
-content dactyl ../common/content/
-
-component {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} components/commandline-handler.js
-contract @mozilla.org/commandlinehandler/general-startup;1?type=dactyl {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}
-category command-line-handler m-dactyl @mozilla.org/commandlinehandler/general-startup;1?type=dactyl
-
-component {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} components/protocols.js
-contract @mozilla.org/network/protocol;1?name=chrome-data {c1b67a07-18f7-4e13-b361-2edcc35a5a0d}
-component {9c8f2530-51c8-4d41-b356-319e0b155c44} components/protocols.js
-contract @mozilla.org/network/protocol;1?name=dactyl {9c8f2530-51c8-4d41-b356-319e0b155c44}
-component {f4506a17-5b4d-4cd9-92d4-2eb4630dc388} components/protocols.js
-contract @dactyl.googlecode.com/base/xpc-interface-shim {f4506a17-5b4d-4cd9-92d4-2eb4630dc388}
-
+../common/chrome.manifest \ No newline at end of file
diff --git a/pentadactyl/content/config.js b/pentadactyl/content/config.js
index bd4768a8..749d34d9 100644
--- a/pentadactyl/content/config.js
+++ b/pentadactyl/content/config.js
@@ -32,8 +32,6 @@ var Config = Module("config", ConfigBase, {
checkupdates: ["Check for updates",
function () { window.checkForUpdates(); },
function () "checkForUpdates" in window],
- cleardata: ["Clear private data",
- function () { Cc["@mozilla.org/browser/browserglue;1"].getService(Ci.nsIBrowserGlue).sanitize(window || null); }],
cookies: ["List your cookies",
function () { window.toOpenWindowByType("Browser:Cookies", "chrome://browser/content/preferences/cookies.xul", "chrome,dialog=no,resizable"); }],
console: ["JavaScript console",
@@ -80,8 +78,6 @@ var Config = Module("config", ConfigBase, {
function () "start_venkman" in window]
},
- get visualbellWindow() this.browser.mPanelContainer,
-
removeTab: function removeTab(tab) {
if (this.tabbrowser.mTabs.length > 1)
this.tabbrowser.removeTab(tab);
diff --git a/teledactyl/chrome.manifest b/teledactyl/chrome.manifest
index 4995b0e8..40321439 100644..120000
--- a/teledactyl/chrome.manifest
+++ b/teledactyl/chrome.manifest
@@ -1,22 +1 @@
-resource dactyl-local-content content/
-resource dactyl-local-skin skin/
-resource dactyl-local-locale locale/
-
-resource dactyl ../common/modules/
-resource dactyl-content ../common/content/
-resource dactyl-skin ../common/skin/
-resource dactyl-locale ../common/locale/
-
-content dactyl ../common/content/
-
-component {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69} components/commandline-handler.js
-contract @mozilla.org/commandlinehandler/general-startup;1?type=dactyl {16dc34f7-6d22-4aa4-a67f-2921fb5dcb69}
-category command-line-handler m-dactyl @mozilla.org/commandlinehandler/general-startup;1?type=dactyl
-
-component {c1b67a07-18f7-4e13-b361-2edcc35a5a0d} components/protocols.js
-contract @mozilla.org/network/protocol;1?name=chrome-data {c1b67a07-18f7-4e13-b361-2edcc35a5a0d}
-component {9c8f2530-51c8-4d41-b356-319e0b155c44} components/protocols.js
-contract @mozilla.org/network/protocol;1?name=dactyl {9c8f2530-51c8-4d41-b356-319e0b155c44}
-component {f4506a17-5b4d-4cd9-92d4-2eb4630dc388} components/protocols.js
-contract @dactyl.googlecode.com/base/xpc-interface-shim {f4506a17-5b4d-4cd9-92d4-2eb4630dc388}
-
+../common/chrome.manifest \ No newline at end of file
diff --git a/teledactyl/content/teledactyl.xul b/teledactyl/content/teledactyl.xul
deleted file mode 100644
index dff68d5a..00000000
--- a/teledactyl/content/teledactyl.xul
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- ***** BEGIN LICENSE BLOCK ***** {{{
- Copyright (c) 2006-2009 by Martin Stubenschrott <stubenschrott@vimperator.org>
-
- This work is licensed for reuse under an MIT license. Details are
- given in the LICENSE.txt file included with this file.
-}}} ***** END LICENSE BLOCK ***** -->
-
-<!--?xml-stylesheet href="chrome://browser/skin/" type="text/css"?-->
-
-<overlay id="teledactyl"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:nc="http://home.netscape.com/NC-rdf#"
- xmlns:html="http://www.w3.org/1999/xhtml"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-</overlay>
-
-<!-- vim: set fdm=marker sw=4 ts=4 et: -->