diff --git a/onionshare_gui/server_status.py b/onionshare_gui/server_status.py index 2e087eb5..4a0fba40 100644 --- a/onionshare_gui/server_status.py +++ b/onionshare_gui/server_status.py @@ -35,6 +35,9 @@ class ServerStatus(QtWidgets.QWidget): url_copied = QtCore.pyqtSignal() hidservauth_copied = QtCore.pyqtSignal() + MODE_SHARE = 'share' + MODE_RECEIVE = 'receive' + STATUS_STOPPED = 0 STATUS_WORKING = 1 STATUS_STARTED = 2 @@ -45,7 +48,7 @@ class ServerStatus(QtWidgets.QWidget): self.common = common self.status = self.STATUS_STOPPED - self.share_mode = False # Gets changed in in self.set_share_mode + self.mode = None # Gets set in self.set_mode self.qtapp = qtapp self.app = app @@ -78,7 +81,7 @@ class ServerStatus(QtWidgets.QWidget): # URL layout url_font = QtGui.QFont() - self.url_description = QtWidgets.QLabel(strings._('gui_url_description', True)) + self.url_description = QtWidgets.QLabel() self.url_description.setWordWrap(True) self.url_description.setMinimumHeight(50) self.url = QtWidgets.QLabel() @@ -114,12 +117,15 @@ class ServerStatus(QtWidgets.QWidget): layout.addWidget(self.shutdown_timeout_container) self.setLayout(layout) - def set_share_mode(self, file_selection): + def set_mode(self, share_mode, file_selection=None): """ The server status is in share mode. """ - self.share_mode = True - self.file_selection = file_selection + self.mode = share_mode + + if self.mode == ServerStatus.MODE_SHARE: + self.file_selection = file_selection + self.update() def shutdown_timeout_reset(self): @@ -138,15 +144,20 @@ class ServerStatus(QtWidgets.QWidget): self.url_description.show() info_image = self.common.get_resource_path('images/info.png') - self.url_description.setText(strings._('gui_url_description', True).format(info_image)) + + if self.mode == ServerStatus.MODE_SHARE: + self.url_description.setText(strings._('gui_share_url_description', True).format(info_image)) + else: + self.url_description.setText(strings._('gui_receive_url_description', True).format(info_image)) + # Show a Tool Tip explaining the lifecycle of this URL if self.common.settings.get('save_private_key'): - if self.common.settings.get('close_after_first_download'): + if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'): self.url_description.setToolTip(strings._('gui_url_label_onetime_and_persistent', True)) else: self.url_description.setToolTip(strings._('gui_url_label_persistent', True)) else: - if self.common.settings.get('close_after_first_download'): + if self.mode == ServerStatus.MODE_SHARE and self.common.settings.get('close_after_first_download'): self.url_description.setToolTip(strings._('gui_url_label_onetime', True)) else: self.url_description.setToolTip(strings._('gui_url_label_stay_open', True)) @@ -179,7 +190,7 @@ class ServerStatus(QtWidgets.QWidget): button_working_style = 'QPushButton { background-color: #4c8211; color: #ffffff; padding: 10px; border: 0; border-radius: 5px; font-style: italic; }' button_started_style = 'QPushButton { background-color: #d0011b; color: #ffffff; padding: 10px; border: 0; border-radius: 5px; }' - if self.share_mode and self.file_selection.get_num_files() == 0: + if self.mode == ServerStatus.MODE_SHARE and self.file_selection.get_num_files() == 0: self.server_button.hide() else: self.server_button.show() @@ -187,7 +198,7 @@ class ServerStatus(QtWidgets.QWidget): if self.status == self.STATUS_STOPPED: self.server_button.setStyleSheet(button_stopped_style) self.server_button.setEnabled(True) - if self.share_mode: + if self.mode == ServerStatus.MODE_SHARE: self.server_button.setText(strings._('gui_share_start_server', True)) else: self.server_button.setText(strings._('gui_receive_start_server', True)) @@ -197,13 +208,13 @@ class ServerStatus(QtWidgets.QWidget): elif self.status == self.STATUS_STARTED: self.server_button.setStyleSheet(button_started_style) self.server_button.setEnabled(True) - if self.share_mode: + if self.mode == ServerStatus.MODE_SHARE: self.server_button.setText(strings._('gui_share_stop_server', True)) else: self.server_button.setText(strings._('gui_share_stop_server', True)) if self.common.settings.get('shutdown_timeout'): self.shutdown_timeout_container.hide() - if self.share_mode: + if self.mode == ServerStatus.MODE_SHARE: self.server_button.setToolTip(strings._('gui_share_stop_server_shutdown_timeout_tooltip', True).format(self.timeout)) else: self.server_button.setToolTip(strings._('gui_receive_stop_server_shutdown_timeout_tooltip', True).format(self.timeout)) diff --git a/onionshare_gui/share_mode/__init__.py b/onionshare_gui/share_mode/__init__.py index c905a80d..3f319864 100644 --- a/onionshare_gui/share_mode/__init__.py +++ b/onionshare_gui/share_mode/__init__.py @@ -31,7 +31,6 @@ from .downloads import Downloads from ..mode import Mode from ..widgets import Alert - class ShareMode(Mode): """ Parts of the main window UI for sharing files. @@ -50,7 +49,7 @@ class ShareMode(Mode): self.file_selection.file_list.add_file(filename) # Server status - self.server_status.set_share_mode(self.file_selection) + self.server_status.set_mode('share', self.file_selection) self.server_status.server_started.connect(self.file_selection.server_started) self.server_status.server_stopped.connect(self.file_selection.server_stopped) self.server_status.server_stopped.connect(self.update_primary_action) diff --git a/share/locale/en.json b/share/locale/en.json index 4b1ebb09..faa9400c 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -150,7 +150,8 @@ "gui_server_timeout_expired": "The chosen timeout has already expired.\nPlease update the timeout and then you may start sharing.", "share_via_onionshare": "Share via OnionShare", "gui_save_private_key_checkbox": "Use a persistent address\n(unchecking will delete any saved addresses)", - "gui_url_description": "Anyone with this link can download your files using the Tor Browser: ", + "gui_share_url_description": "Anyone with this link can download your files using the Tor Browser: ", + "gui_receive_url_description": "Anyone with this link can upload files to your computer using the Tor Browser: ", "gui_url_label_persistent": "This share will not expire automatically unless a timer is set.

Every share will have the same address (to use one-time addresses, disable persistence in Settings)", "gui_url_label_stay_open": "This share will not expire automatically unless a timer is set.", "gui_url_label_onetime": "This share will expire after the first download",