aboutsummaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2021-04-29 16:58:33 -0700
committerMicah Lee <micah@micahflee.com>2021-04-29 16:58:33 -0700
commit343e1be3d08e0725815e1a2d6bf7c4717c8c26b5 (patch)
treeebd1f298e31535d79e306682dd318cdb5de4a54d /desktop
parent0de27f9775cf5231e0d7bdf5a2b388e5d1b7ee52 (diff)
parent34554414e9ff6d98988e4ab27a6d79300e8e1197 (diff)
downloadonionshare-343e1be3d08e0725815e1a2d6bf7c4717c8c26b5.tar.gz
onionshare-343e1be3d08e0725815e1a2d6bf7c4717c8c26b5.zip
Merge branch 'develop' into 1305_receive_messages
Diffstat (limited to 'desktop')
-rw-r--r--desktop/src/onionshare/__init__.py4
-rw-r--r--desktop/src/onionshare/resources/locale/en.json1
-rw-r--r--desktop/src/onionshare/tab/mode/chat_mode/__init__.py5
-rw-r--r--desktop/src/onionshare/tab/mode/mode_settings_widget.py38
-rw-r--r--desktop/src/onionshare/tab/mode/receive_mode/__init__.py5
-rw-r--r--desktop/src/onionshare/tab/mode/share_mode/__init__.py5
-rw-r--r--desktop/src/onionshare/tab/mode/website_mode/__init__.py5
-rw-r--r--desktop/src/onionshare/tab_widget.py12
8 files changed, 71 insertions, 4 deletions
diff --git a/desktop/src/onionshare/__init__.py b/desktop/src/onionshare/__init__.py
index 744f6979..1c69ffa5 100644
--- a/desktop/src/onionshare/__init__.py
+++ b/desktop/src/onionshare/__init__.py
@@ -75,14 +75,12 @@ def main():
The main() function implements all of the logic that the GUI version of onionshare uses.
"""
common = Common()
+ common.display_banner()
# Required for macOS Big Sur: https://stackoverflow.com/a/64878899
if common.platform == "Darwin":
os.environ["QT_MAC_WANTS_LAYER"] = "1"
- # Display OnionShare banner
- print(f"OnionShare {common.version} | https://onionshare.org/")
-
# Start the Qt app
global qtapp
qtapp = Application(common)
diff --git a/desktop/src/onionshare/resources/locale/en.json b/desktop/src/onionshare/resources/locale/en.json
index 55e39d73..cbd898dc 100644
--- a/desktop/src/onionshare/resources/locale/en.json
+++ b/desktop/src/onionshare/resources/locale/en.json
@@ -165,6 +165,7 @@
"gui_quit_warning_cancel": "Cancel",
"mode_settings_advanced_toggle_show": "Show advanced settings",
"mode_settings_advanced_toggle_hide": "Hide advanced settings",
+ "mode_settings_title_label": "Custom title",
"mode_settings_persistent_checkbox": "Save this tab, and automatically open it when I open OnionShare",
"mode_settings_public_checkbox": "Don't use a password",
"mode_settings_autostart_timer_checkbox": "Start onion service at scheduled time",
diff --git a/desktop/src/onionshare/tab/mode/chat_mode/__init__.py b/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
index 2312a64e..44a6d240 100644
--- a/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
@@ -68,6 +68,11 @@ class ChatMode(Mode):
self.image = QtWidgets.QWidget()
self.image.setLayout(image_layout)
+ # Set title placeholder
+ self.mode_settings_widget.title_lineedit.setPlaceholderText(
+ strings._("gui_tab_name_chat")
+ )
+
# Server status
self.server_status.set_mode("chat")
self.server_status.server_started_finished.connect(self.update_primary_action)
diff --git a/desktop/src/onionshare/tab/mode/mode_settings_widget.py b/desktop/src/onionshare/tab/mode/mode_settings_widget.py
index a3a315c9..ef59f37e 100644
--- a/desktop/src/onionshare/tab/mode/mode_settings_widget.py
+++ b/desktop/src/onionshare/tab/mode/mode_settings_widget.py
@@ -57,6 +57,16 @@ class ModeSettingsWidget(QtWidgets.QWidget):
else:
self.public_checkbox.setCheckState(QtCore.Qt.Unchecked)
+ # Title
+ title_label = QtWidgets.QLabel(strings._("mode_settings_title_label"))
+ self.title_lineedit = QtWidgets.QLineEdit()
+ self.title_lineedit.editingFinished.connect(self.title_editing_finished)
+ if self.settings.get("general", "title"):
+ self.title_lineedit.setText(self.settings.get("general", "title"))
+ title_layout = QtWidgets.QHBoxLayout()
+ title_layout.addWidget(title_label)
+ title_layout.addWidget(self.title_lineedit)
+
# Whether or not to use an auto-start timer
self.autostart_timer_checkbox = QtWidgets.QCheckBox()
self.autostart_timer_checkbox.clicked.connect(
@@ -152,6 +162,7 @@ class ModeSettingsWidget(QtWidgets.QWidget):
# Advanced group itself
advanced_layout = QtWidgets.QVBoxLayout()
advanced_layout.setContentsMargins(0, 0, 0, 0)
+ advanced_layout.addLayout(title_layout)
advanced_layout.addLayout(autostart_timer_layout)
advanced_layout.addLayout(autostop_timer_layout)
advanced_layout.addWidget(self.legacy_checkbox)
@@ -203,6 +214,33 @@ class ModeSettingsWidget(QtWidgets.QWidget):
self.legacy_checkbox.hide()
self.client_auth_checkbox.hide()
+ def title_editing_finished(self):
+ if self.title_lineedit.text().strip() == "":
+ self.title_lineedit.setText("")
+ self.settings.set("general", "title", None)
+ if self.tab.mode == self.common.gui.MODE_SHARE:
+ self.tab.change_title.emit(
+ self.tab.tab_id, strings._("gui_tab_name_share")
+ )
+ elif self.tab.mode == self.common.gui.MODE_RECEIVE:
+ self.tab.change_title.emit(
+ self.tab.tab_id, strings._("gui_tab_name_receive")
+ )
+ elif self.tab.mode == self.common.gui.MODE_WEBSITE:
+ self.tab.change_title.emit(
+ self.tab.tab_id, strings._("gui_tab_name_website")
+ )
+ elif self.tab.mode == self.common.gui.MODE_CHAT:
+ self.tab.change_title.emit(
+ self.tab.tab_id, strings._("gui_tab_name_chat")
+ )
+ elif self.tab_mode == None:
+ pass
+ else:
+ title = self.title_lineedit.text()
+ self.settings.set("general", "title", title)
+ self.tab.change_title.emit(self.tab.tab_id, title)
+
def persistent_checkbox_clicked(self):
self.settings.set("persistent", "enabled", self.persistent_checkbox.isChecked())
self.settings.set("persistent", "mode", self.tab.mode)
diff --git a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py b/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
index 64e7aebf..6056b1db 100644
--- a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
@@ -128,6 +128,11 @@ class ReceiveMode(Mode):
self.hide_webhook_url()
self.mode_settings_widget.mode_specific_layout.addLayout(webhook_url_layout)
+ # Set title placeholder
+ self.mode_settings_widget.title_lineedit.setPlaceholderText(
+ strings._("gui_tab_name_receive")
+ )
+
# Server status
self.server_status.set_mode("receive")
self.server_status.server_started_finished.connect(self.update_primary_action)
diff --git a/desktop/src/onionshare/tab/mode/share_mode/__init__.py b/desktop/src/onionshare/tab/mode/share_mode/__init__.py
index 74a4e2c2..05038e20 100644
--- a/desktop/src/onionshare/tab/mode/share_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/share_mode/__init__.py
@@ -77,6 +77,11 @@ class ShareMode(Mode):
for filename in self.filenames:
self.file_selection.file_list.add_file(filename)
+ # Set title placeholder
+ self.mode_settings_widget.title_lineedit.setPlaceholderText(
+ strings._("gui_tab_name_share")
+ )
+
# Server status
self.server_status.set_mode("share", self.file_selection)
self.server_status.server_started.connect(self.file_selection.server_started)
diff --git a/desktop/src/onionshare/tab/mode/website_mode/__init__.py b/desktop/src/onionshare/tab/mode/website_mode/__init__.py
index 6aa83de0..f7cfa758 100644
--- a/desktop/src/onionshare/tab/mode/website_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/website_mode/__init__.py
@@ -77,6 +77,11 @@ class WebsiteMode(Mode):
for filename in self.filenames:
self.file_selection.file_list.add_file(filename)
+ # Set title placeholder
+ self.mode_settings_widget.title_lineedit.setPlaceholderText(
+ strings._("gui_tab_name_website")
+ )
+
# Server status
self.server_status.set_mode("website", self.file_selection)
self.server_status.server_started.connect(self.file_selection.server_started)
diff --git a/desktop/src/onionshare/tab_widget.py b/desktop/src/onionshare/tab_widget.py
index b9a70011..a955ea53 100644
--- a/desktop/src/onionshare/tab_widget.py
+++ b/desktop/src/onionshare/tab_widget.py
@@ -176,6 +176,11 @@ class TabWidget(QtWidgets.QTabWidget):
)
tab.init(mode_settings)
+
+ # Make sure the title is set
+ if tab.get_mode():
+ tab.get_mode().mode_settings_widget.title_editing_finished()
+
# If it's persistent, set the persistent image in the tab
self.change_persistent(tab.tab_id, tab.settings.get("persistent", "enabled"))
@@ -183,8 +188,13 @@ class TabWidget(QtWidgets.QTabWidget):
self.bring_to_front.emit()
def change_title(self, tab_id, title):
+ shortened_title = title
+ if len(shortened_title) > 11:
+ shortened_title = shortened_title[:10] + "..."
+
index = self.indexOf(self.tabs[tab_id])
- self.setTabText(index, title)
+ self.setTabText(index, shortened_title)
+ self.setTabToolTip(index, title)
def change_icon(self, tab_id, icon_path):
index = self.indexOf(self.tabs[tab_id])