commit b452a3cddb44e9888566cfa43c47234f3cbdfc40 Author: Kathy Brade <br...@torproject.org> Date: Wed Apr 24 13:36:57 2013 -0400
Settings wizard: show "Copy Tor Log To Clipboard" button after error. --- src/chrome/content/network-settings-wizard.xul | 14 +++-- src/chrome/content/network-settings.js | 59 ++++++++++++++++++++++-- src/components/tl-process.js | 3 + 3 files changed, 65 insertions(+), 11 deletions(-) diff --git a/src/chrome/content/network-settings-wizard.xul b/src/chrome/content/network-settings-wizard.xul index 7f27e06..b86b885 100644 --- a/src/chrome/content/network-settings-wizard.xul +++ b/src/chrome/content/network-settings-wizard.xul @@ -18,6 +18,7 @@ title="&torsettings.dialog.title;" windowtype="TorLauncher:NetworkSettings" persist="screenX screenY" + buttonlabelextra1="&torsettings.copyLog;" onwizardfinish="return applySettings();" onwizardcancel="return onCancel();" onload="initDialog();"> @@ -25,7 +26,7 @@ <script type="application/x-javascript" src="chrome://torlauncher/content/network-settings.js"/> - <wizardpage label=" " pageid="proxy" next="firewall" + <wizardpage label=" " pageid="proxy" next="firewall" onextra1="onCopyLog();" onpageadvanced="return onWizardProxyNext(this);"> <hbox class="tbb-header"> <vbox class="tbb-logo-box" align="start"> @@ -51,7 +52,7 @@ </hbox> </wizardpage> - <wizardpage pageid="proxyYES" next="firewall" + <wizardpage pageid="proxyYES" next="firewall" onextra1="onCopyLog();" onpageadvanced="return (getAndValidateProxySettings() != null)"> <vbox class="tbb-logo-box" align="start"> <image class="tbb-logo" /> @@ -61,7 +62,7 @@ <groupbox id="proxySpecificSettings" /> </wizardpage> - <wizardpage pageid="firewall" next="bridges" + <wizardpage pageid="firewall" next="bridges" onextra1="onCopyLog();" onpageadvanced="return onWizardFirewallNext(this);"> <vbox class="tbb-logo-box" align="start"> <image class="tbb-logo" /> @@ -80,7 +81,7 @@ </hbox> </wizardpage> - <wizardpage pageid="firewallYES" next="bridges" + <wizardpage pageid="firewallYES" next="bridges" onextra1="onCopyLog();" onpageadvanced="return (getAndValidateFirewallSettings() != null)"> <vbox class="tbb-logo-box" align="start"> <image class="tbb-logo" /> @@ -92,7 +93,7 @@ </vbox> </wizardpage> - <wizardpage label=" " pageid="bridges"> + <wizardpage label=" " pageid="bridges" onextra1="onCopyLog();"> <vbox class="tbb-logo-box" align="start"> <image class="tbb-logo" /> </vbox> @@ -113,7 +114,8 @@ <spring flex="1" /> </wizardpage> - <wizardpage label=" " pageid="errorPanel" next="notUsed"> + <wizardpage label=" " pageid="errorPanel" next="notUsed" + onextra1="onCopyLog();"> </wizardpage> <wizardpage class="help" label=" " pageid="bridgeHelp" next="notUsed" diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js index 73edd8d..904e5f8 100644 --- a/src/chrome/content/network-settings.js +++ b/src/chrome/content/network-settings.js @@ -18,6 +18,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherLogger", const kTorProcessReadyTopic = "TorProcessIsReady"; const kTorProcessExitedTopic = "TorProcessExited"; const kTorProcessDidNotStartTopic = "TorProcessDidNotStart"; +const kTorBootstrapErrorTopic = "TorBootstrapError"; const kWizardProxyRadioGroup = "proxyRadioGroup"; const kWizardFirewallRadioGroup = "firewallRadioGroup"; @@ -54,10 +55,10 @@ var gRestoreAfterHelpPanelID = null; function initDialog() { + var cancelBtn = document.documentElement.getButton("cancel"); gIsInitialBootstrap = window.arguments[0]; if (gIsInitialBootstrap) { - var cancelBtn = document.documentElement.getButton("cancel"); if (cancelBtn) { var quitKey = (TorLauncherUtil.isWindows) ? "quit_win" : "quit"; @@ -88,14 +89,27 @@ function initDialog() gObsService = Cc["@mozilla.org/observer-service;1"] .getService(Ci.nsIObserverService); - var haveWizard = (getWizard() != null); + var wizardElem = getWizard(); + var haveWizard = (wizardElem != null); if (haveWizard) { + // Set "Copy Tor Log" label and move it after the Quit (cancel) button. + var copyLogBtn = document.documentElement.getButton("extra1"); + if (copyLogBtn) + { + copyLogBtn.label = wizardElem.getAttribute("buttonlabelextra1"); + if (cancelBtn && !TorLauncherUtil.isWindows) + cancelBtn.parentNode.insertBefore(copyLogBtn, cancelBtn.nextSibling); + } + + // Use "Connect" as the finish button label (on the last wizard page).. var finishBtn = document.documentElement.getButton("finish"); if (finishBtn) finishBtn.label = TorLauncherUtil.getLocalizedString("connect"); } + gObsService.addObserver(gObserver, kTorBootstrapErrorTopic, false); + if (TorLauncherUtil.shouldStartAndOwnTor && !gTorProcessService.TorIsProcessReady) { @@ -154,6 +168,13 @@ function onWizardFirewallNext(aWizPage) var gObserver = { observe: function(aSubject, aTopic, aData) { + if (kTorBootstrapErrorTopic == aTopic) + { + wizardShowCopyLogButton(); + return; + } + + // Process events that only occur once. gObsService.removeObserver(gObserver, kTorProcessReadyTopic); gObsService.removeObserver(gObserver, kTorProcessExitedTopic); gObsService.removeObserver(gObserver, kTorProcessDidNotStartTopic); @@ -170,8 +191,8 @@ var gObserver = { readTorSettings(); } else if (kTorProcessDidNotStartTopic == aTopic) - showPanel("errorPanel"); - else + showErrorPanel(); + else // kTorProcessExitedTopic close(); } }; @@ -194,7 +215,7 @@ function readTorSettings() if (!didSucceed) { // Unable to communicate with tor. Hide settings and display an error. - showPanel("errorPanel"); + showErrorPanel(); setTimeout(function() { @@ -225,6 +246,27 @@ function showPanel(aPanelID) } +function showErrorPanel() +{ + showPanel("errorPanel"); + wizardShowCopyLogButton(); +} + + +function wizardShowCopyLogButton() +{ + if (getWizard()) + { + var copyLogBtn = document.documentElement.getButton("extra1"); + if (copyLogBtn) + { + copyLogBtn.setAttribute("wizardCanCopyLog", true); + copyLogBtn.removeAttribute("hidden"); + } + } +} + + function showOrHideButton(aID, aShow, aFocus) { var btn = setButtonAttr(aID, "hidden", !aShow); @@ -327,6 +369,7 @@ function onOpenHelp() { showOrHideButton("cancel", false, false); showOrHideButton("back", false, false); + showOrHideButton("extra1", false, false); overrideButtonLabel("next", "done"); } else @@ -345,6 +388,9 @@ function closeHelp() { showOrHideButton("cancel", true, false); showOrHideButton("back", true, false); + var copyLogBtn = document.documentElement.getButton("extra1"); + if (copyLogBtn && copyLogBtn.hasAttribute("wizardCanCopyLog")) + copyLogBtn.removeAttribute("hidden"); restoreButtonLabel("next"); } else @@ -775,6 +821,9 @@ function showSaveSettingsAlert(aDetails) var s = TorLauncherUtil.getFormattedLocalizedString( "failed_to_save_settings", [aDetails], 1); TorLauncherUtil.showAlert(window, s); + + showOrHideButton("extra1", true, false); + gWizIsCopyLogBtnShowing = true; } diff --git a/src/components/tl-process.js b/src/components/tl-process.js index 2d24360..1057795 100644 --- a/src/components/tl-process.js +++ b/src/components/tl-process.js @@ -387,6 +387,9 @@ TorProcessService.prototype = var s = TorLauncherUtil.getFormattedLocalizedString( "tor_bootstrap_failed", [aStatusObj.WARNING], 1); TorLauncherUtil.showAlert(null, s); + + this.mObsSvc.notifyObservers(null, "TorBootstrapError", + aStatusObj.WARNING); } } } _______________________________________________ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits