[tor-commits] [tor-launcher/master] Settings wizard: show "Copy Tor Log To Clipboard" button after error.
brade at torproject.org
brade at torproject.org
Wed Apr 24 17:37:27 UTC 2013
commit b452a3cddb44e9888566cfa43c47234f3cbdfc40
Author: Kathy Brade <brade at 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);
}
}
}
More information about the tor-commits
mailing list