www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 78a92255d897dd974ecfb9309bfab1992549c212
parent 5ceb3f4cf7f4beb506ceffe3c1167b9c4815fb13
Author: Dan Stillman <dstillman@zotero.org>
Date:   Fri,  7 Jan 2011 06:36:31 +0000

- Add the Zotero icon to the add-on bar instead of the status bar in Fx4
- Make the add-on bar visible if the Zotero icon isn't set to hidden, which is an annoying way of dealing with https://bugzilla.mozilla.org/show_bug.cgi?id=616419 not yet landing -- people who use an upper toolbar button and don't want the add-on bar to show will need to set the Zotero icon to hidden

Addresses #1726, Firefox 4 Compatibility


Diffstat:
Mchrome.manifest | 1+
Mchrome/content/zotero/overlay.xul | 117+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Achrome/content/zotero/statusBarOverlay.xul | 9+++++++++
Mchrome/skin/default/zotero/overlay.css | 19+++++++++++++------
4 files changed, 93 insertions(+), 53 deletions(-)

diff --git a/chrome.manifest b/chrome.manifest @@ -44,6 +44,7 @@ locale zotero zh-TW chrome/locale/zh-TW/zotero/ skin zotero default chrome/skin/default/zotero/ +overlay chrome://browser/content/browser.xul chrome://zotero/content/statusBarOverlay.xul appversion<4.0 overlay chrome://browser/content/browser.xul chrome://zotero/content/overlay.xul overlay chrome://browser/content/browser.xul chrome://zotero/content/itemPane.xul diff --git a/chrome/content/zotero/overlay.xul b/chrome/content/zotero/overlay.xul @@ -467,62 +467,85 @@ <image src="chrome://zotero/skin/treeitem-book.png" id="zotero-status-image" onclick="Zotero_Browser.scrapeThisPage(ZoteroPane.getSelectedLibraryID(), ZoteroPane.getSelectedCollection(true))" position="1" hidden="true"/> </hbox> - <statusbar id="status-bar"> - <statusbarpanel id="zotero-status-bar-icon" hidden="true" - class="statusbarpanel-iconic" onclick="ZoteroPane.toggleDisplay();"/> - </statusbar> - <script> <![CDATA[ window.addEventListener('load', function(e){ - var icon = document.getElementById('zotero-status-bar-icon'); - 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; + var iconPref = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefService) + .getBranch('extensions.zotero.').getIntPref('statusBarIcon'); + var isFx36 = Components.classes["@mozilla.org/xre/app-info;1"] + .getService(Components.interfaces.nsIXULAppInfo) + .platformVersion.indexOf('1.9') === 0; + + // Status bar in Fx3.6 + if (isFx36) { + var icon = document.getElementById('zotero-status-bar-icon'); + } + // In >=Fx4, add to add-on bar + else { + var icon = document.createElement('toolbarbutton'); + icon.id = 'zotero-addon-bar-icon'; + icon.setAttribute('oncommand', 'ZoteroPane.toggleDisplay()'); + icon.setAttribute('hidden', true); + var addonBar = document.getElementById('addon-bar'); + addonBar.appendChild(icon); + if (addonBar.collapsed) { + // If no Zotero or icon isn't set to hidden, show add-on bar + if (iconPref != 0) { + setToolbarVisibility(addonBar, true); } - - // 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; - } - - // 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'); - } - - if(icon) { - icon.setAttribute('tooltiptext', errMsg); - icon.setAttribute('error', 'true'); + } + + if (!icon) { + return; + } + + if (Zotero && Zotero.initialized){ + switch (iconPref) { + case 2: icon.setAttribute('hidden', false); - } + break; + case 1: + icon.setAttribute('hidden', false); + icon.setAttribute('compact', true); + break; } - // Used for loading pages from upgrade wizard - if (Zotero.initialURL) { - setTimeout("gBrowser.selectedTab = gBrowser.addTab(Zotero.initialURL); Zotero.initialURL = null;", 1); + // 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; } + + // 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'); + } + + if(icon) { + 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); } }, false); diff --git a/chrome/content/zotero/statusBarOverlay.xul b/chrome/content/zotero/statusBarOverlay.xul @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<overlay id="zotero-status-bar" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + <statusbar id="status-bar"> + <statusbarpanel id="zotero-status-bar-icon" hidden="true" + class="statusbarpanel-iconic" onclick="ZoteroPane.toggleDisplay();"/> + </statusbar> +</overlay> diff --git a/chrome/skin/default/zotero/overlay.css b/chrome/skin/default/zotero/overlay.css @@ -1,18 +1,25 @@ -#zotero-status-bar-icon +#zotero-status-bar-icon, #zotero-addon-bar-icon { width: 55px; + list-style-image: url(chrome://zotero/skin/zotero_status_bar.png); +} +#zotero-status-bar-icon +{ margin: 0 0 -1px; /* For Fitts's law (on OS X, at least) */ padding: 0 0 1px; - list-style-image: url(chrome://zotero/skin/zotero_status_bar.png); } -#zotero-status-bar-icon[compact="true"] +#zotero-addon-bar-icon +{ + margin-left: 10px; + margin-right: 10px; + padding-bottom: 4px; +} +#zotero-status-bar-icon[compact="true"], #zotero-addon-bar-icon[compact="true"] { width: 20px; - margin: 0 0 -1px; - padding: 0 0 1px; list-style-image: url(chrome://zotero/skin/zotero_status_bar_compact.png); } -#zotero-status-bar-icon[error="true"] +#zotero-status-bar-icon[error="true"], #zotero-addon-bar-icon[error="true"] { list-style-image: url(chrome://zotero/skin/zotero_status_bar_error.png); }