commit 99690742f904be13c1bacb27f8190a75e6e4d24d
parent 78a37e7dbca9e45fa98f9bf1b5ac50d2bdb95a4c
Author: Simon Kornblith <simon@simonster.com>
Date: Sun, 28 Mar 2010 07:21:17 +0000
support for standalone Zotero
Diffstat:
7 files changed, 388 insertions(+), 74 deletions(-)
diff --git a/chrome/content/zotero/browser.js b/chrome/content/zotero/browser.js
@@ -302,11 +302,11 @@ var Zotero_Browser = new function() {
var reset = document.getElementById('cmd_fullZoomReset');
}
- reduce.addEventListener("command",
+ if(reduce) reduce.addEventListener("command",
function(e) { Zotero_Browser.resize(e) }, false);
- enlarge.addEventListener("command",
+ if(enlarge) enlarge.addEventListener("command",
function(e) { Zotero_Browser.resize(e) }, false);
- reset.addEventListener("command",
+ if(reset) reset.addEventListener("command",
function(e) { Zotero_Browser.resize(e) }, false);
}
diff --git a/chrome/content/zotero/overlay.js b/chrome/content/zotero/overlay.js
@@ -218,6 +218,11 @@ var ZoteroPane = new function()
document.getElementById("zotero-tb-search-label").hidden = false;
document.getElementById("zotero-tb-search").setAttribute("type", "conditional-timed");
}
+
+ if(Zotero.isStandalone) {
+ this.toggleDisplay();
+ this.fullScreen(true);
+ }
}
diff --git a/chrome/content/zotero/overlay.xul b/chrome/content/zotero/overlay.xul
@@ -475,49 +475,51 @@
<![CDATA[
window.addEventListener('load', function(e){
var icon = document.getElementById('zotero-status-bar-icon');
- if (Zotero && Zotero.initialized){
- switch (Zotero.Prefs.get('statusBarIcon')) {
- case 2:
- icon.setAttribute('hidden', false);
- break;
- case 1:
- icon.setAttribute('hidden', false);
- icon.setAttribute('compact', true);
- break;
- }
-
- // Set "Report Errors..." label via property rather than DTD entity,
- // since we need to reference it in script elsewhere
- document.getElementById('zotero-tb-actions-reportErrors').setAttribute('label',
- Zotero.getString('errorReport.reportErrors'));
- }
- else {
- if (Zotero) {
- var errMsg = Zotero.startupError;
+ if(icon) {
+ if (Zotero && Zotero.initialized){
+ switch (Zotero.Prefs.get('statusBarIcon')) {
+ case 2:
+ icon.setAttribute('hidden', false);
+ break;
+ case 1:
+ icon.setAttribute('hidden', false);
+ icon.setAttribute('compact', true);
+ break;
+ }
+
+ // Set "Report Errors..." label via property rather than DTD entity,
+ // since we need to reference it in script elsewhere
+ document.getElementById('zotero-tb-actions-reportErrors').setAttribute('label',
+ Zotero.getString('errorReport.reportErrors'));
}
-
- // Use defaults if necessary
- if (!errMsg) {
- // Get the stringbundle manually
- var src = 'chrome://zotero/locale/zotero.properties';
- var localeService = Components.classes['@mozilla.org/intl/nslocaleservice;1'].
- getService(Components.interfaces.nsILocaleService);
- var appLocale = localeService.getApplicationLocale();
- var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
- .getService(Components.interfaces.nsIStringBundleService);
- var stringBundle = stringBundleService.createBundle(src, appLocale);
+ else {
+ if (Zotero) {
+ var errMsg = Zotero.startupError;
+ }
- var errMsg = stringBundle.GetStringFromName('startupError');
+ // Use defaults if necessary
+ if (!errMsg) {
+ // Get the stringbundle manually
+ var src = 'chrome://zotero/locale/zotero.properties';
+ var localeService = Components.classes['@mozilla.org/intl/nslocaleservice;1'].
+ getService(Components.interfaces.nsILocaleService);
+ var appLocale = localeService.getApplicationLocale();
+ var stringBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"]
+ .getService(Components.interfaces.nsIStringBundleService);
+ var stringBundle = stringBundleService.createBundle(src, appLocale);
+
+ var errMsg = stringBundle.GetStringFromName('startupError');
+ }
+
+ icon.setAttribute('tooltiptext', errMsg);
+ icon.setAttribute('error', 'true');
+ icon.setAttribute('hidden', false);
}
- icon.setAttribute('tooltiptext', errMsg);
- icon.setAttribute('error', 'true');
- icon.setAttribute('hidden', false);
- }
-
- // Used for loading pages from upgrade wizard
- if (Zotero.initialURL) {
- setTimeout("gBrowser.selectedTab = gBrowser.addTab(Zotero.initialURL); Zotero.initialURL = null;", 1);
+ // Used for loading pages from upgrade wizard
+ if (Zotero.initialURL) {
+ setTimeout("gBrowser.selectedTab = gBrowser.addTab(Zotero.initialURL); Zotero.initialURL = null;", 1);
+ }
}
}, false);
diff --git a/chrome/content/zotero/standalone.xul b/chrome/content/zotero/standalone.xul
@@ -0,0 +1,221 @@
+<?xml version="1.0"?>
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
+
+<!DOCTYPE window [
+<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+%globalDTD;
+<!ENTITY % globalRegionDTD SYSTEM "chrome://global-region/locale/region.dtd">
+%globalRegionDTD;
+<!ENTITY % charsetDTD SYSTEM "chrome://global/locale/charsetOverlay.dtd" >
+%charsetDTD;
+<!ENTITY % textcontextDTD SYSTEM "chrome://global/locale/textcontext.dtd" >
+%textcontextDTD;
+<!ENTITY % standaloneDTD SYSTEM "chrome://zotero/locale/standalone.dtd" >
+%standaloneDTD;
+]>
+
+<window id="main-window"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload="window.sizeToContent()"
+ width="1100" height="700"
+ persist="screenX screenY width height sizemode">
+ <script type="application/x-javascript" src="chrome://global/content/globalOverlay.js"/>
+ <script type="application/x-javascript" src="chrome://global/content/viewZoomOverlay.js"/>
+ <script type="application/x-javascript" src="chrome://global/content/contentAreaUtils.js"/>
+ <script type="application/x-javascript" src="chrome://global/content/inlineSpellCheckUI.js"/>
+ <commandset id="mainCommandSet">
+ <command id="cmd_toggleTaskbar" oncommand="goToggleToolbar('status-bar','toggle_taskbar');"/>
+ <command id="cmd_quitApplication" oncommand="goQuitApplication()"/>
+
+ <commandset id="editMenuCommands"/>
+
+ <command id="cmd_find"
+ oncommand="gFindBar.onFindCommand();"
+ observes="isImage"/>
+ <command id="cmd_findAgain"
+ oncommand="gFindBar.onFindAgainCommand(false);"
+ observes="isImage"/>
+ <command id="cmd_findPrevious"
+ oncommand="gFindBar.onFindAgainCommand(true);"
+ observes="isImage"/>
+
+ <command id="cmd_fullZoomReduce" oncommand="FullZoom.reduce()"/>
+ <command id="cmd_fullZoomEnlarge" oncommand="FullZoom.enlarge()"/>
+ <command id="cmd_fullZoomReset" oncommand="FullZoom.reset()"/>
+ <command id="cmd_fullZoomToggle" oncommand="ZoomManager.toggleZoom();"/>
+ </commandset>
+ <popup id="contentAreaContextMenu">
+ <menuitem id="context-undo"
+ label="&undoCmd.label;"
+ accesskey="&undoCmd.accesskey;"
+ command="cmd_undo"/>
+ <menuseparator id="context-sep-undo"/>
+ <menuitem id="context-cut"
+ label="&cutCmd.label;"
+ accesskey="&cutCmd.accesskey;"
+ command="cmd_cut"/>
+ <menuitem id="context-copy"
+ label="©Cmd.label;"
+ accesskey="©Cmd.accesskey;"
+ command="cmd_copy"/>
+ <menuitem id="context-paste"
+ label="&pasteCmd.label;"
+ accesskey="&pasteCmd.accesskey;"
+ command="cmd_paste"/>
+ <menuitem id="context-delete"
+ label="&deleteCmd.label;"
+ accesskey="&deleteCmd.accesskey;"
+ command="cmd_delete"/>
+ <menuseparator id="context-sep-paste"/>
+ <menuitem id="context-selectall"
+ label="&selectAllCmd.label;"
+ accesskey="&selectAllCmd.accesskey;"
+ command="cmd_selectAll"/>
+ </popup>
+ <toolbox id="navigator-toolbox" class="toolbox-top" mode="icons" defaultmode="icons">
+ <!-- Menu -->
+ <toolbar type="menubar" id="toolbar-menubar" class="chromeclass-menubar" customizable="true"
+ defaultset="menubar-items"
+ mode="icons" iconsize="small" defaulticonsize="small"
+ context="toolbar-context-menu">
+ <toolbaritem id="menubar-items" align="center">
+ <menubar id="main-menubar"
+ style="border:0px;padding:0px;margin:0px;-moz-appearance:none">
+ <menu id="file-menu" label="&fileMenu.label;" accesskey="&fileMenu.accesskey;">
+ <menupopup id="menu_FilePopup">
+ <menuitem id="menu_close" label="&closeCmd.label;" key="key_close"
+ accesskey="&closeCmd.accesskey;" command="cmd_close"/>
+ <menuseparator/>
+ <menuitem id="menu_FileQuitItem"
+ label="&quitApplicationCmdMac.label;"
+ key="key_quitApplication"
+ command="cmd_quitApplication"/>
+ </menupopup>
+ </menu>
+
+ <menu id="edit-menu" label="&editMenu.label;" accesskey="&editMenu.accesskey;">
+ <menupopup id="menu_EditPopup">
+ <menuitem label="&undoCmd.label;"
+ id="menu_undo"
+ key="key_undo"
+ accesskey="&undoCmd.accesskey;"
+ command="cmd_undo"/>
+ <menuitem label="&redoCmd.label;"
+ id="menu_redo"
+ key="key_redo"
+ accesskey="&redoCmd.accesskey;"
+ command="cmd_redo"/>
+ <menuseparator/>
+ <menuitem label="&cutCmd.label;"
+ id="menu_cut"
+ key="key_cut"
+ accesskey="&cutCmd.accesskey;"
+ command="cmd_cut"/>
+ <menuitem label="©Cmd.label;"
+ id="menu_copy"
+ key="key_copy"
+ accesskey="©Cmd.accesskey;"
+ command="cmd_copy"/>
+ <menuitem label="&pasteCmd.label;"
+ id="menu_paste"
+ key="key_paste"
+ accesskey="&pasteCmd.accesskey;"
+ command="cmd_paste"/>
+ <menuitem label="&deleteCmd.label;"
+ id="menu_delete"
+ key="key_delete"
+ accesskey="&deleteCmd.accesskey;"
+ command="cmd_delete"/>
+ <menuseparator/>
+ <menuitem id="menu_selectAll"
+ label="&selectAllCmd.label;"
+ key="key_selectAll"
+ accesskey="&selectAllCmd.accesskey;"
+ command="cmd_selectAll"/>
+ <menuseparator/>
+ <menuitem id="menu_find" label="&findOnCmd.label;" accesskey="&findOnCmd.accesskey;" key="key_find" command="cmd_find"/>
+ <menuitem label="&findAgainCmd.label;" accesskey="&findAgainCmd.accesskey;" key="key_findAgain" command="cmd_findAgain"
+ id="menu_findAgain" />
+ <menuseparator hidden="true" id="textfieldDirection-separator"/>
+ <menuitem id="textfieldDirection-swap"
+ command="cmd_switchTextDirection"
+ key="key_switchTextDirection"
+ label="&bidiSwitchTextDirectionItem.label;"
+ accesskey="&bidiSwitchTextDirectionItem.accesskey;"
+ hidden="true"/>
+ </menupopup>
+ </menu>
+
+ <menu id="windowMenu" />
+ <menu id="helpMenu" />
+ </menubar>
+ </toolbaritem>
+ </toolbar>
+ </toolbox>
+ <keyset id="mainKeyset">
+ <key id="key_close" key="&closeCmd.key;" command="cmd_close" modifiers="accel"/>
+ <key id="key_undo"
+ key="&undoCmd.key;"
+ modifiers="accel"/>
+ <key id="key_redo" key="&undoCmd.key;" modifiers="accel,shift"/>
+ <key id="key_cut"
+ key="&cutCmd.key;"
+ modifiers="accel"/>
+ <key id="key_copy"
+ key="©Cmd.key;"
+ modifiers="accel"/>
+ <key id="key_paste"
+ key="&pasteCmd.key;"
+ modifiers="accel"/>
+ <key id="key_delete" keycode="VK_DELETE" command="cmd_delete"/>
+ <key id="key_selectAll" key="&selectAllCmd.key;" modifiers="accel"/>
+
+ <key id="key_find" key="&findOnCmd.commandkey;" command="cmd_find" modifiers="accel"/>
+ <key id="key_findAgain" key="&findAgainCmd.commandkey;" command="cmd_findAgain" modifiers="accel"/>
+ <key id="key_findPrevious" key="&findAgainCmd.commandkey;" command="cmd_findPrevious" modifiers="accel,shift"/>
+ <key keycode="&findAgainCmd.commandkey2;" command="cmd_findAgain"/>
+ <key keycode="&findAgainCmd.commandkey2;" command="cmd_findPrevious" modifiers="shift"/>
+
+ <key id="key_fullZoomReduce" key="&fullZoomReduceCmd.commandkey;" command="cmd_fullZoomReduce" modifiers="accel"/>
+ <key key="&fullZoomReduceCmd.commandkey2;" command="cmd_fullZoomReduce" modifiers="accel"/>
+ <key id="key_fullZoomEnlarge" key="&fullZoomEnlargeCmd.commandkey;" command="cmd_fullZoomEnlarge" modifiers="accel"/>
+ <key key="&fullZoomEnlargeCmd.commandkey2;" command="cmd_fullZoomEnlarge" modifiers="accel"/>
+ <key key="&fullZoomEnlargeCmd.commandkey3;" command="cmd_fullZoomEnlarge" modifiers="accel"/>
+ <key id="key_fullZoomReset" key="&fullZoomResetCmd.commandkey;" command="cmd_fullZoomReset" modifiers="accel"/>
+ <key key="&fullZoomResetCmd.commandkey2;" command="cmd_fullZoomReset" modifiers="accel"/>
+
+ <key id="key_switchTextDirection" key="&bidiSwitchTextDirectionItem.commandkey;" command="cmd_switchTextDirection" modifiers="accel,shift" />
+ <key id="key_quitApplication" key="&quitApplicationCmdMac.key;" command="cmd_quitApplication" modifiers="accel"/>
+ </keyset>
+ <!--<toolbarpalette/>
+
+ <toolbar id="nav-bar" class="toolbar-primary chromeclass-toolbar"
+ fullscreentoolbar="true" mode="icons" iconsize="large"
+ customizable="true"
+ defaultset="unified-back-forward-button,reload-button,stop-button,home-button,urlbar-container,search-container"
+ context="toolbar-context-menu"/>
+
+ <toolbarset id="customToolbars" context="toolbar-context-menu"/>
+
+ <toolbar id="PersonalToolbar"
+ mode="icons" iconsize="small" defaulticonsize="small"
+ class="chromeclass-directories"
+ context="toolbar-context-menu"
+ defaultset="personal-bookmarks"
+ customizable="true"/>-->
+
+ <hbox flex="1" id="browser">
+ <vbox id="appcontent" flex="1">
+ <tabbrowser id="content" disablehistory="true"
+ flex="1" contenttooltip="aHTMLTooltip"
+ contentcontextmenu="contentAreaContextMenu"
+ onnewtab="BrowserOpenTab();"
+ autocompletepopup="PopupAutoComplete"
+ ondrop="nsDragAndDrop.drop(event, contentAreaDNDObserver);"
+ onclick="return contentAreaClick(event, false);"/>
+ </vbox>
+ </hbox>
+ <keyset id="mainKeyset"/>
+</window>
diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js
@@ -914,10 +914,7 @@ Zotero.Schema = new function(){
return _schemaVersions[schema];
}
- var file = Components.classes["@mozilla.org/extensions/manager;1"]
- .getService(Components.interfaces.nsIExtensionManager)
- .getInstallLocation(ZOTERO_CONFIG['GUID'])
- .getItemLocation(ZOTERO_CONFIG['GUID']);
+ var file = Zotero.getInstallDirectory();
file.append(schemaFile);
// Open an input stream from file
@@ -952,10 +949,7 @@ Zotero.Schema = new function(){
// We pull the schema from an external file so we only have to process
// it when necessary
- var file = Components.classes["@mozilla.org/extensions/manager;1"]
- .getService(Components.interfaces.nsIExtensionManager)
- .getInstallLocation(ZOTERO_CONFIG['GUID'])
- .getItemLocation(ZOTERO_CONFIG['GUID']);
+ var file = Zotero.getInstallDirectory();
file.append(schemaFile);
// Open an input stream from file
@@ -998,10 +992,7 @@ Zotero.Schema = new function(){
// We pull the schema from an external file so we only have to process
// it when necessary
- var file = Components.classes["@mozilla.org/extensions/manager;1"]
- .getService(Components.interfaces.nsIExtensionManager)
- .getInstallLocation(ZOTERO_CONFIG['GUID'])
- .getItemLocation(ZOTERO_CONFIG['GUID']);
+ var file = Zotero.getInstallDirectory();
file.append(schemaFile);
// Open an input stream from file
diff --git a/chrome/content/zotero/xpcom/zotero.js b/chrome/content/zotero/xpcom/zotero.js
@@ -186,24 +186,31 @@ var Zotero = new function(){
this.mainThread = Components.classes["@mozilla.org/thread-manager;1"].getService().mainThread;
- // Load in the extension version from the extension manager
- var nsIUpdateItem = Components.interfaces.nsIUpdateItem;
- var gExtensionManager =
- Components.classes["@mozilla.org/extensions/manager;1"]
- .getService(Components.interfaces.nsIExtensionManager);
- this.version
- = gExtensionManager.getItemForID(ZOTERO_CONFIG['GUID']).version;
-
var appInfo =
Components.classes["@mozilla.org/xre/app-info;1"].
getService(Components.interfaces.nsIXULAppInfo)
- this.appName = appInfo.name;
- this.isFx2 = appInfo.platformVersion.indexOf('1.8') === 0; // TODO: remove
- this.isFx3 = appInfo.platformVersion.indexOf('1.9') === 0;
- this.isFx30 = appInfo.platformVersion == '1.9'
- || appInfo.platformVersion.indexOf('1.9.0') === 0;
- this.isFx35 = appInfo.platformVersion.indexOf('1.9.1') === 0;
- this.isFx31 = this.isFx35;
+ this.isStandalone = appInfo.ID == ZOTERO_CONFIG['GUID'];
+ Zotero.debug(this.isStandalone);
+ if(this.isStandalone) {
+ this.isFx35 = true;
+ this.version = appInfo.version;
+ } else {
+ this.appName = appInfo.name;
+ this.isFx2 = appInfo.platformVersion.indexOf('1.8') === 0; // TODO: remove
+ this.isFx3 = appInfo.platformVersion.indexOf('1.9') === 0;
+ this.isFx30 = appInfo.platformVersion == '1.9'
+ || appInfo.platformVersion.indexOf('1.9.0') === 0;
+ this.isFx35 = appInfo.platformVersion.indexOf('1.9.1') === 0;
+ this.isFx31 = this.isFx35;
+
+ // Load in the extension version from the extension manager
+ var nsIUpdateItem = Components.interfaces.nsIUpdateItem;
+ var gExtensionManager =
+ Components.classes["@mozilla.org/extensions/manager;1"]
+ .getService(Components.interfaces.nsIExtensionManager);
+ this.version
+ = gExtensionManager.getItemForID(ZOTERO_CONFIG['GUID']).version;
+ }
this.isFx36 = appInfo.platformVersion.indexOf('1.9.2') === 0;
// OS platform
@@ -443,11 +450,18 @@ var Zotero = new function(){
function getInstallDirectory() {
- var id = ZOTERO_CONFIG.GUID;
- var em = Components.classes["@mozilla.org/extensions/manager;1"].
- getService(Components.interfaces.nsIExtensionManager);
- var installDir = em.getInstallLocation(id).getItemLocation(id);
- return installDir;
+ if(this.isStandalone) {
+ var dir = Components.classes["@mozilla.org/file/directory_service;1"]
+ .getService(Components.interfaces.nsIProperties)
+ .get("CurProcD", Components.interfaces.nsILocalFile);
+ Zotero.debug(dir.path);
+ return dir;
+ } else {
+ var id = ZOTERO_CONFIG.GUID;
+ var em = Components.classes["@mozilla.org/extensions/manager;1"].
+ getService(Components.interfaces.nsIExtensionManager);
+ return em.getInstallLocation(id).getItemLocation(id);
+ }
}
diff --git a/chrome/locale/en-US/zotero/standalone.dtd b/chrome/locale/en-US/zotero/standalone.dtd
@@ -0,0 +1,80 @@
+<!ENTITY fileMenu.label "File">
+<!ENTITY fileMenu.accesskey "F">
+<!ENTITY closeCmd.label "Close">
+<!ENTITY closeCmd.key "W">
+<!ENTITY closeCmd.accesskey "C">
+<!ENTITY quitApplicationCmdWin.label "Exit">
+<!ENTITY quitApplicationCmdWin.accesskey "x">
+<!ENTITY quitApplicationCmd.label "Quit">
+<!ENTITY quitApplicationCmd.accesskey "Q">
+<!ENTITY quitApplicationCmdMac.label "Quit Zotero">
+<!ENTITY quitApplicationCmdMac.key "Q">
+
+<!ENTITY editMenu.label "Edit">
+<!ENTITY editMenu.accesskey "E">
+<!ENTITY undoCmd.label "Undo">
+<!ENTITY undoCmd.key "Z">
+<!ENTITY undoCmd.accesskey "U">
+<!ENTITY redoCmd.label "Redo">
+<!ENTITY redoCmd.key "Y">
+<!ENTITY redoCmd.accesskey "R">
+<!ENTITY cutCmd.label "Cut">
+<!ENTITY cutCmd.key "X">
+<!ENTITY cutCmd.accesskey "t">
+<!ENTITY copyCmd.label "Copy">
+<!ENTITY copyCmd.key "C">
+<!ENTITY copyCmd.accesskey "C">
+<!ENTITY pasteCmd.label "Paste">
+<!ENTITY pasteCmd.key "V">
+<!ENTITY pasteCmd.accesskey "P">
+<!ENTITY deleteCmd.label "Delete">
+<!ENTITY deleteCmd.key "D">
+<!ENTITY deleteCmd.accesskey "D">
+<!ENTITY selectAllCmd.label "Select All">
+<!ENTITY selectAllCmd.key "A">
+<!ENTITY selectAllCmd.accesskey "A">
+<!ENTITY preferencesCmd.label "Options…">
+<!ENTITY preferencesCmd.accesskey "O">
+<!ENTITY preferencesCmdUnix.label "Preferences">
+<!ENTITY preferencesCmdUnix.accesskey "n">
+
+<!ENTITY findOnCmd.label "Find in This Page…">
+<!ENTITY findOnCmd.accesskey "F">
+<!ENTITY findOnCmd.commandkey "f">
+<!ENTITY findAgainCmd.label "Find Again">
+<!ENTITY findAgainCmd.accesskey "g">
+<!ENTITY findAgainCmd.commandkey "g">
+<!ENTITY findAgainCmd.commandkey2 "VK_F3">
+
+<!ENTITY bidiSwitchPageDirectionItem.label "Switch Page Direction">
+<!ENTITY bidiSwitchPageDirectionItem.accesskey "g">
+<!ENTITY bidiSwitchTextDirectionItem.label "Switch Text Direction">
+<!ENTITY bidiSwitchTextDirectionItem.accesskey "w">
+<!ENTITY bidiSwitchTextDirectionItem.commandkey "X">
+
+<!-- LOCALIZATION NOTE :
+fullZoomEnlargeCmd.commandkey3, fullZoomReduceCmd.commandkey2 and
+fullZoomResetCmd.commandkey2 are alternative acceleration keys for zoom.
+If shift key is needed with your locale popular keyboard for them,
+you can use these alternative items. Otherwise, their values should be empty. -->
+
+<!ENTITY fullZoomEnlargeCmd.label "Zoom In">
+<!ENTITY fullZoomEnlargeCmd.accesskey "I">
+<!ENTITY fullZoomEnlargeCmd.commandkey "+">
+<!ENTITY fullZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->
+<!ENTITY fullZoomEnlargeCmd.commandkey3 "">
+
+<!ENTITY fullZoomReduceCmd.label "Zoom Out">
+<!ENTITY fullZoomReduceCmd.accesskey "O">
+<!ENTITY fullZoomReduceCmd.commandkey "-">
+<!ENTITY fullZoomReduceCmd.commandkey2 "">
+
+<!ENTITY fullZoomResetCmd.label "Reset">
+<!ENTITY fullZoomResetCmd.accesskey "R">
+<!ENTITY fullZoomResetCmd.commandkey "0">
+<!ENTITY fullZoomResetCmd.commandkey2 "">
+
+<!ENTITY fullZoomToggleCmd.label "Zoom Text Only">
+<!ENTITY fullZoomToggleCmd.accesskey "T">
+<!ENTITY fullZoom.label "Zoom">
+<!ENTITY fullZoom.accesskey "Z">
+\ No newline at end of file