summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2021-05-31 10:01:10 -0700
committerMicah Lee <micah@micahflee.com>2021-05-31 10:01:10 -0700
commitead2825327e0e65f834b49cc438dc4f6b2a63c43 (patch)
treedd02817b406c9b3963c6702a7572e886bda9594f
parent64c7f4e5b85f74c2fd0d0cb0be91198b5ea23d56 (diff)
downloadonionshare-ead2825327e0e65f834b49cc438dc4f6b2a63c43.tar.gz
onionshare-ead2825327e0e65f834b49cc438dc4f6b2a63c43.zip
Allow canceling share in Windows
-rw-r--r--desktop/src/onionshare/resources/locale/en.json5
-rw-r--r--desktop/src/onionshare/tab/mode/__init__.py26
-rw-r--r--desktop/src/onionshare/tab/server_status.py14
3 files changed, 37 insertions, 8 deletions
diff --git a/desktop/src/onionshare/resources/locale/en.json b/desktop/src/onionshare/resources/locale/en.json
index b61f714d..0eacc618 100644
--- a/desktop/src/onionshare/resources/locale/en.json
+++ b/desktop/src/onionshare/resources/locale/en.json
@@ -33,7 +33,8 @@
"gui_show_url_qr_code": "Show QR Code",
"gui_qr_code_dialog_title": "OnionShare QR Code",
"gui_waiting_to_start": "Scheduled to start in {}. Click to cancel.",
- "gui_please_wait": "Starting…",
+ "gui_please_wait_no_button": "Starting…",
+ "gui_please_wait": "Starting… Click to cancel.",
"error_rate_limit": "Someone has made too many wrong attempts to guess your password, so OnionShare has stopped the server. Start sharing again and send the recipient a new address to share.",
"zip_progress_bar_format": "Compressing: %p%",
"gui_settings_window_title": "Settings",
@@ -202,4 +203,4 @@
"error_port_not_available": "OnionShare port not available",
"history_receive_read_message_button": "Read Message",
"error_tor_protocol_error": "There was an error with Tor: {}"
-}
+} \ No newline at end of file
diff --git a/desktop/src/onionshare/tab/mode/__init__.py b/desktop/src/onionshare/tab/mode/__init__.py
index dbdb4ce4..683c2e73 100644
--- a/desktop/src/onionshare/tab/mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/__init__.py
@@ -158,9 +158,16 @@ class Mode(QtWidgets.QWidget):
)
)
else:
- self.server_status.server_button.setText(
- strings._("gui_please_wait")
- )
+ if self.common.platform == "Windows" or self.settings.get(
+ "general", "autostart_timer"
+ ):
+ self.server_status.server_button.setText(
+ strings._("gui_please_wait")
+ )
+ else:
+ self.server_status.server_button.setText(
+ strings._("gui_please_wait_no_button")
+ )
# If the auto-stop timer has stopped, stop the server
if self.server_status.status == ServerStatus.STATUS_STARTED:
@@ -354,6 +361,19 @@ class Mode(QtWidgets.QWidget):
self.app.onion.scheduled_key = None
self.app.onion.scheduled_auth_cookie = None
self.startup_thread.quit()
+
+ # Canceling only works in Windows
+ # https://github.com/micahflee/onionshare/issues/1371
+ if self.common.platform == "Windows":
+ if self.onion_thread:
+ self.common.log("Mode", "cancel_server: quitting onion thread")
+ self.onion_thread.terminate()
+ self.onion_thread.wait()
+ if self.web_thread:
+ self.common.log("Mode", "cancel_server: quitting web thread")
+ self.web_thread.terminate()
+ self.web_thread.wait()
+
self.stop_server()
def cancel_server_custom(self):
diff --git a/desktop/src/onionshare/tab/server_status.py b/desktop/src/onionshare/tab/server_status.py
index a830473e..ba5ff165 100644
--- a/desktop/src/onionshare/tab/server_status.py
+++ b/desktop/src/onionshare/tab/server_status.py
@@ -306,13 +306,18 @@ class ServerStatus(QtWidgets.QWidget):
)
)
else:
- self.server_button.setText(strings._("gui_please_wait"))
+ if self.common.platform == "Windows":
+ self.server_button.setText(strings._("gui_please_wait"))
+ else:
+ self.server_button.setText(
+ strings._("gui_please_wait_no_button")
+ )
else:
self.server_button.setStyleSheet(
self.common.gui.css["server_status_button_working"]
)
self.server_button.setEnabled(False)
- self.server_button.setText(strings._("gui_please_wait"))
+ self.server_button.setText(strings._("gui_please_wait_no_button"))
def server_button_clicked(self):
"""
@@ -379,7 +384,10 @@ class ServerStatus(QtWidgets.QWidget):
self.start_server()
elif self.status == self.STATUS_STARTED:
self.stop_server()
- elif self.status == self.STATUS_WORKING and self.settings.get("general", "autostart_timer"):
+ elif self.status == self.STATUS_WORKING and (
+ self.common.platform == "Windows"
+ or self.settings.get("general", "autostart_timer")
+ ):
self.cancel_server()
self.button_clicked.emit()