1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-21 15:27:57 +01:00

Bump {max,min}version requirements for Muttator.

This commit is contained in:
Doug Kearns
2009-07-17 23:01:16 +10:00
parent 51c7f8bf70
commit bf8529d975
3 changed files with 237 additions and 229 deletions

View File

@@ -39,27 +39,7 @@ function Tabs() //{{{
////////////////////// PRIVATE SECTION ///////////////////////////////////////// ////////////////////// PRIVATE SECTION /////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{ /////////////////////////////////////////////////////////////////////////////{{{
var tabmail; var getBrowser = config.getBrowser || window.getBrowser;
// FIXME: doesn't belong here
var getBrowser = (function () {
if (config.hostApplication == "Thunderbird")
{
return function () {
if (!tabmail)
{
tabmail = document.getElementById("tabmail");
tabmail.__defineGetter__("mTabContainer", function () this.tabContainer);
tabmail.__defineGetter__("mTabs", function () this.tabContainer.childNodes);
tabmail.__defineGetter__("mCurrentTab", function () this.tabContainer.selectedItem);
tabmail.__defineGetter__("mStrip", function () this.tabStrip);
tabmail.__defineGetter__("browsers", function () [browser for (browser in Iterator(this.mTabs))]);
}
return tabmail;
};
}
else
return window.getBrowser;
})();
var alternates = [getBrowser().mCurrentTab, null]; var alternates = [getBrowser().mCurrentTab, null];

View File

@@ -26,220 +26,248 @@ the provisions above, a recipient may use your version of this file under
the terms of any one of the MPL, the GPL or the LGPL. the terms of any one of the MPL, the GPL or the LGPL.
}}} ***** END LICENSE BLOCK *****/ }}} ***** END LICENSE BLOCK *****/
const config = { //{{{ const config = (function () //{{{
/*** required options, no checks done if they really exist, so be careful ***/ {
name: "Muttator", ////////////////////////////////////////////////////////////////////////////////
hostApplication: "Thunderbird", // TODO: can this be found out otherwise? gBrandBundle.getString("brandShortName"); ////////////////////// PRIVATE SECTION /////////////////////////////////////////
// Yes, but it will be localized unlike all other strings. So, it's best left until we i18n liberator. --djk /////////////////////////////////////////////////////////////////////////////{{{
get mainWindowID() this.isComposeWindow ? "msgcomposeWindow" : "messengerWindow",
/*** optional options, there are checked for existence and a fallback provided ***/ var name = "Muttator";
features: ["hints", "mail", "marks", "addressbook", "tabs"], var host = "Thunderbird";
defaults: { var tabmail;
guioptions: "frb",
showtabline: 1,
titlestring: "Muttator"
},
guioptions: { /////////////////////////////////////////////////////////////////////////////}}}
m: ["MenuBar", ["mail-toolbar-menubar2"]], ////////////////////// PUBLIC SECTION //////////////////////////////////////////
T: ["Toolbar" , ["mail-bar2"]], /////////////////////////////////////////////////////////////////////////////{{{
f: ["Folder list", ["folderPaneBox", "folderpane_splitter"]],
F: ["Folder list header", ["folderPaneHeader"]]
},
get isComposeWindow() window.wintype == "msgcompose", return {
get browserModes() [modes.MESSAGE], /*** required options, no checks done if they really exist, so be careful ***/
get mailModes() [modes.NORMAL], name: name,
// focusContent() focuses this widget hostApplication: host, // TODO: can this be found out otherwise? gBrandBundle.getString("brandShortName");
get mainWidget() this.isComposeWindow ? document.getElementById("content-frame") : GetThreadTree(), // Yes, but it will be localized unlike all other strings. So, it's best left until we i18n liberator. --djk
get visualbellWindow() document.getElementById(this.mainWindowID), get mainWindowID() this.isComposeWindow ? "msgcomposeWindow" : "messengerWindow",
styleableChrome: "chrome://messenger/content/messenger.xul,chrome://messenger/content/messengercompose/messengercompose.xul",
autocommands: [["DOMLoad", "Triggered when a page's DOM content has fully loaded"], /*** optional options, there are checked for existence and a fallback provided ***/
["FolderLoad", "Triggered after switching folders in Thunderbird"], features: ["hints", "mail", "marks", "addressbook", "tabs"],
["PageLoadPre", "Triggered after a page load is initiated"], defaults: {
["PageLoad", "Triggered when a page gets (re)loaded/opened"], guioptions: "frb",
["MuttatorEnter", "Triggered after Thunderbird starts"], showtabline: 1,
["MuttatorLeave", "Triggered before exiting Thunderbird"], titlestring: name
["MuttatorLeavePre", "Triggered before exiting Thunderbird"]], },
dialogs: [ guioptions: {
["about", "About Thunderbird", m: ["MenuBar", ["mail-toolbar-menubar2"]],
function () { window.openAboutDialog(); }], T: ["Toolbar" , ["mail-bar2"]],
["addons", "Manage Add-ons", f: ["Folder list", ["folderPaneBox", "folderpane_splitter"]],
function () { window.openAddonsMgr(); }], F: ["Folder list header", ["folderPaneHeader"]]
["addressbook", "Address book", },
function () { window.toAddressBook(); }],
["checkupdates", "Check for updates",
function () { window.checkForUpdates(); }],
/*["cleardata", "Clear private data",
function () { Cc[GLUE_CID].getService(Ci.nsIBrowserGlue).sanitize(window || null); }],*/
["console", "JavaScript console",
function () { window.toJavaScriptConsole(); }],
/*["customizetoolbar", "Customize the Toolbar",
function () { BrowserCustomizeToolbar(); }],*/
["dominspector", "DOM Inspector",
function () { window.inspectDOMDocument(content.document); }],
["downloads", "Manage Downloads",
function () { window.toOpenWindowByType('Download:Manager', 'chrome://mozapps/content/downloads/downloads.xul', 'chrome,dialog=no,resizable'); }],
/*["import", "Import Preferences, Bookmarks, History, etc. from other browsers",
function () { BrowserImport(); }],
["openfile", "Open the file selector dialog",
function () { BrowserOpenFileWindow(); }],
["pageinfo", "Show information about the current page",
function () { BrowserPageInfo(); }],
["pagesource", "View page source",
function () { BrowserViewSourceOfDocument(content.document); }],*/
["preferences", "Show Thunderbird preferences dialog",
function () { openOptionsDialog(); }],
/*["printpreview", "Preview the page before printing",
function () { PrintUtils.printPreview(onEnterPrintPreview, onExitPrintPreview); }],*/
["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 () { openDialog("chrome://browser/content/search/engineManager.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
["selectionsource", "View selection source",
function () { buffer.viewSelectionSource(); }]*/
],
focusChange: function (win) get isComposeWindow() window.wintype == "msgcompose",
{ get browserModes() [modes.MESSAGE],
// we switch to -- MESSAGE -- mode for Muttator, when the main HTML widget gets focus get mailModes() [modes.NORMAL],
if (win && win.document instanceof HTMLDocument || liberator.focus instanceof HTMLAnchorElement) // focusContent() focuses this widget
get mainWidget() this.isComposeWindow ? document.getElementById("content-frame") : GetThreadTree(),
get visualbellWindow() document.getElementById(this.mainWindowID),
styleableChrome: "chrome://messenger/content/messenger.xul,chrome://messenger/content/messengercompose/messengercompose.xul",
autocommands: [["DOMLoad", "Triggered when a page's DOM content has fully loaded"],
["FolderLoad", "Triggered after switching folders in " + host],
["PageLoadPre", "Triggered after a page load is initiated"],
["PageLoad", "Triggered when a page gets (re)loaded/opened"],
[name + "Enter", "Triggered after " + host + " starts"],
[name + "Leave", "Triggered before exiting " + host],
[name + "LeavePre", "Triggered before exiting " + host]],
dialogs: [
["about", "About " + host,
function () { window.openAboutDialog(); }],
["addons", "Manage Add-ons",
function () { window.openAddonsMgr(); }],
["addressbook", "Address book",
function () { window.toAddressBook(); }],
["checkupdates", "Check for updates",
function () { window.checkForUpdates(); }],
/*["cleardata", "Clear private data",
function () { Cc[GLUE_CID].getService(Ci.nsIBrowserGlue).sanitize(window || null); }],*/
["console", "JavaScript console",
function () { window.toJavaScriptConsole(); }],
/*["customizetoolbar", "Customize the Toolbar",
function () { BrowserCustomizeToolbar(); }],*/
["dominspector", "DOM Inspector",
function () { window.inspectDOMDocument(content.document); }],
["downloads", "Manage Downloads",
function () { window.toOpenWindowByType('Download:Manager', 'chrome://mozapps/content/downloads/downloads.xul', 'chrome,dialog=no,resizable'); }],
/*["import", "Import Preferences, Bookmarks, History, etc. from other browsers",
function () { BrowserImport(); }],
["openfile", "Open the file selector dialog",
function () { BrowserOpenFileWindow(); }],
["pageinfo", "Show information about the current page",
function () { BrowserPageInfo(); }],
["pagesource", "View page source",
function () { BrowserViewSourceOfDocument(content.document); }],*/
["preferences", "Show " + host + " preferences dialog",
function () { openOptionsDialog(); }],
/*["printpreview", "Preview the page before printing",
function () { PrintUtils.printPreview(onEnterPrintPreview, onExitPrintPreview); }],*/
["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 () { openDialog("chrome://browser/content/search/engineManager.xul", "_blank", "chrome,dialog,modal,centerscreen"); }],
["selectionsource", "View selection source",
function () { buffer.viewSelectionSource(); }]*/
],
focusChange: function (win)
{ {
if (config.isComposeWindow) // we switch to -- MESSAGE -- mode for Muttator, when the main HTML widget gets focus
modes.set(modes.INSERT, modes.TEXTAREA); if (win && win.document instanceof HTMLDocument || liberator.focus instanceof HTMLAnchorElement)
else if (liberator.mode != modes.MESSAGE)
liberator.mode = modes.MESSAGE;
}
},
// they are sorted by relevance, not alphabetically
helpFiles: ["intro.html", "version.html"],
get ignoreKeys() {
delete this.ignoreKeys;
return this.ignoreKeys = {
"<Return>": modes.NORMAL | modes.INSERT,
"<Space>": modes.NORMAL | modes.INSERT,
"<Up>": modes.NORMAL | modes.INSERT,
"<Down>": modes.NORMAL | modes.INSERT
}
},
modes: [
["MESSAGE", { char: "m" }],
["COMPOSE"]
],
// NOTE: as I don't use TB I have no idea how robust this is. --djk
get outputHeight()
{
if (!this.isComposeWindow)
{
let container = document.getElementById("tabpanelcontainer").boxObject;
let deck = document.getElementById("displayDeck");
let box = document.getElementById("messagepanebox");
let splitter = document.getElementById("threadpane-splitter").boxObject;
if (splitter.width > splitter.height)
return container.height - deck.minHeight - box.minHeight- splitter.height;
else
return container.height - Math.max(deck.minHeight, box.minHeight);
}
else
return document.getElementById("appcontent").boxObject.height;
},
scripts: [
"addressbook.js",
"compose/compose.js",
"mail.js",
"tabs.js"
],
// to allow Vim to :set ft=mail automatically
tempFile: "mutt-ator-mail",
init: function ()
{
// don't wait too long when selecting new messages
// GetThreadTree()._selectDelay = 300; // TODO: make configurable
// load Muttator specific modules
if (this.isComposeWindow)
// TODO: this should probably be "composer"
liberator.loadModule("compose", Compose);
else
{
liberator.loadModule("mail", Mail);
liberator.loadModule("addressbook", Addressbook);
liberator.loadModule("tabs", Tabs);
liberator.loadModule("marks", Marks);
liberator.loadModule("hints", Hints);
}
////////////////////////////////////////////////////////////////////////////////
////////////////////// STYLES //////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{
let img = Image();
img.src = "chrome://muttator/content/logo.png";
img.onload = function () {
styles.addSheet(true, "logo", "chrome://liberator/locale/*",
".muttator-logo {" + <>
display: inline-block;
background: url({img.src});
width: {img.width}px;
height: {img.height}px;
</> + "}",
true);
delete img;
};
/////////////////////////////////////////////////////////////////////////////}}}
////////////////////// COMMANDS ////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{
commands.add(["pref[erences]", "prefs"],
"Show " + config.hostApplication + " preferences",
function () { window.openOptionsDialog(); },
{ argCount: "0" });
/////////////////////////////////////////////////////////////////////////////}}}
////////////////////// OPTIONS /////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{
// FIXME: comment obviously incorrect
// 0: never automatically edit externally
// 1: automatically edit externally when message window is shown the first time
// 2: automatically edit externally, once the message text gets focus (not working currently)
options.add(["autoexternal", "ae"],
"Edit message with external editor by default",
"boolean", false);
options.add(["online"],
"Set the 'work offline' option",
"boolean", true,
{ {
setter: function (value) if (config.isComposeWindow)
{ modes.set(modes.INSERT, modes.TEXTAREA);
if (MailOfflineMgr.isOnline() != value) else if (liberator.mode != modes.MESSAGE)
MailOfflineMgr.toggleOfflineStatus(); liberator.mode = modes.MESSAGE;
return value; }
}, },
getter: function () MailOfflineMgr.isOnline()
});
//}}} getBrowser: function () {
} if (!tabmail)
}; //}}} {
tabmail = { __proto__: document.getElementById("tabmail") };
tabmail.__defineGetter__("mTabContainer", function () this.tabContainer);
tabmail.__defineGetter__("mTabs", function () this.tabContainer.childNodes);
tabmail.__defineGetter__("mCurrentTab", function () this.tabContainer.selectedItem);
tabmail.__defineGetter__("mStrip", function () this.tabStrip);
tabmail.__defineGetter__("browsers", function () [browser for (browser in Iterator(this.mTabs))]);
}
return tabmail;
},
// they are sorted by relevance, not alphabetically
helpFiles: ["intro.html", "version.html"],
get ignoreKeys() {
delete this.ignoreKeys;
return this.ignoreKeys = {
"<Return>": modes.NORMAL | modes.INSERT,
"<Space>": modes.NORMAL | modes.INSERT,
"<Up>": modes.NORMAL | modes.INSERT,
"<Down>": modes.NORMAL | modes.INSERT
}
},
modes: [
["MESSAGE", { char: "m" }],
["COMPOSE"]
],
// NOTE: as I don't use TB I have no idea how robust this is. --djk
get outputHeight()
{
if (!this.isComposeWindow)
{
let container = document.getElementById("tabpanelcontainer").boxObject;
let deck = document.getElementById("displayDeck");
let box = document.getElementById("messagepanebox");
let splitter = document.getElementById("threadpane-splitter").boxObject;
if (splitter.width > splitter.height)
return container.height - deck.minHeight - box.minHeight- splitter.height;
else
return container.height - Math.max(deck.minHeight, box.minHeight);
}
else
return document.getElementById("appcontent").boxObject.height;
},
scripts: [
"addressbook.js",
"compose/compose.js",
"mail.js",
"tabs.js"
],
// to allow Vim to :set ft=mail automatically
tempFile: "mutt-ator-mail",
init: function ()
{
// don't wait too long when selecting new messages
// GetThreadTree()._selectDelay = 300; // TODO: make configurable
// load Muttator specific modules
if (this.isComposeWindow)
// TODO: this should probably be "composer"
liberator.loadModule("compose", Compose);
else
{
liberator.loadModule("mail", Mail);
liberator.loadModule("addressbook", Addressbook);
liberator.loadModule("tabs", Tabs);
liberator.loadModule("marks", Marks);
liberator.loadModule("hints", Hints);
}
////////////////////////////////////////////////////////////////////////////////
////////////////////// STYLES //////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{
let img = Image();
img.src = "chrome://muttator/content/logo.png";
img.onload = function () {
styles.addSheet(true, "logo", "chrome://liberator/locale/*",
".muttator-logo {" + <>
display: inline-block;
background: url({img.src});
width: {img.width}px;
height: {img.height}px;
</> + "}",
true);
delete img;
};
/////////////////////////////////////////////////////////////////////////////}}}
////////////////////// COMMANDS ////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{
commands.add(["pref[erences]", "prefs"],
"Show " + config.hostApplication + " preferences",
function () { window.openOptionsDialog(); },
{ argCount: "0" });
/////////////////////////////////////////////////////////////////////////////}}}
////////////////////// OPTIONS /////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////{{{
// FIXME: comment obviously incorrect
// 0: never automatically edit externally
// 1: automatically edit externally when message window is shown the first time
// 2: automatically edit externally, once the message text gets focus (not working currently)
options.add(["autoexternal", "ae"],
"Edit message with external editor by default",
"boolean", false);
options.add(["online"],
"Set the 'work offline' option",
"boolean", true,
{
setter: function (value)
{
if (MailOfflineMgr.isOnline() != value)
MailOfflineMgr.toggleOfflineStatus();
return value;
},
getter: function () MailOfflineMgr.isOnline()
});
//}}}
}
}; //}}}
})(); //}}}
// vim: set fdm=marker sw=4 ts=4 et: // vim: set fdm=marker sw=4 ts=4 et:

View File

@@ -18,8 +18,8 @@
<em:targetApplication> <em:targetApplication>
<Description> <Description>
<em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id> <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
<em:minVersion>3.0b3pre</em:minVersion> <em:minVersion>3.0b4pre</em:minVersion>
<em:maxVersion>3.0b3</em:maxVersion> <em:maxVersion>3.0b4</em:maxVersion>
</Description> </Description>
</em:targetApplication> </em:targetApplication>
</Description> </Description>