diff --git a/onionshare_gui/gui_common.py b/onionshare_gui/gui_common.py index 59316a6e..f6d3eedf 100644 --- a/onionshare_gui/gui_common.py +++ b/onionshare_gui/gui_common.py @@ -61,6 +61,9 @@ class GuiCommon: self.css = { # OnionShareGui styles + "tab_widget": """ + QTabBar::tab { width: 170px; height: 30px; } + """, "tab_widget_new_tab_button": """ QPushButton { font-weight: bold; diff --git a/onionshare_gui/tab/tab.py b/onionshare_gui/tab/tab.py index 604d1acf..fbc828ff 100644 --- a/onionshare_gui/tab/tab.py +++ b/onionshare_gui/tab/tab.py @@ -228,7 +228,7 @@ class Tab(QtWidgets.QWidget): self.share_mode.server_status.url_copied.connect(self.copy_url) self.share_mode.server_status.hidservauth_copied.connect(self.copy_hidservauth) - self.change_title.emit(self.tab_id, strings._("gui_new_tab_share_button")) + self.change_title.emit(self.tab_id, strings._("gui_tab_name_share")) self.update_server_status_indicator() self.timer.start(500) @@ -265,7 +265,7 @@ class Tab(QtWidgets.QWidget): self.copy_hidservauth ) - self.change_title.emit(self.tab_id, strings._("gui_new_tab_receive_button")) + self.change_title.emit(self.tab_id, strings._("gui_tab_name_receive")) self.update_server_status_indicator() self.timer.start(500) @@ -302,7 +302,7 @@ class Tab(QtWidgets.QWidget): self.copy_hidservauth ) - self.change_title.emit(self.tab_id, strings._("gui_new_tab_website_button")) + self.change_title.emit(self.tab_id, strings._("gui_tab_name_website")) self.update_server_status_indicator() self.timer.start(500) @@ -335,7 +335,7 @@ class Tab(QtWidgets.QWidget): self.chat_mode.server_status.url_copied.connect(self.copy_url) self.chat_mode.server_status.hidservauth_copied.connect(self.copy_hidservauth) - self.change_title.emit(self.tab_id, strings._("gui_new_tab_chat_button")) + self.change_title.emit(self.tab_id, strings._("gui_tab_name_chat")) self.update_server_status_indicator() self.timer.start(500) diff --git a/onionshare_gui/tab_widget.py b/onionshare_gui/tab_widget.py index 1ef82cad..1eee0181 100644 --- a/onionshare_gui/tab_widget.py +++ b/onionshare_gui/tab_widget.py @@ -48,8 +48,7 @@ class TabWidget(QtWidgets.QTabWidget): # Define the new tab button self.new_tab_button = QtWidgets.QPushButton("+", parent=self) self.new_tab_button.setFlat(True) - self.new_tab_button.setAutoFillBackground(True) - self.new_tab_button.setFixedSize(30, 30) + self.new_tab_button.setFixedSize(40, 30) self.new_tab_button.clicked.connect(self.new_tab_clicked) self.new_tab_button.setStyleSheet( self.common.gui.css["tab_widget_new_tab_button"] @@ -66,6 +65,8 @@ class TabWidget(QtWidgets.QTabWidget): self.setMovable(True) self.setTabsClosable(True) self.setUsesScrollButtons(True) + self.setDocumentMode(True) + self.setStyleSheet(self.common.gui.css["tab_widget"]) self.tabCloseRequested.connect(self.close_tab) @@ -99,7 +100,7 @@ class TabWidget(QtWidgets.QTabWidget): # If there are so many tabs it scrolls, move the button to the left of the scroll buttons if tabs_width > self.width(): - pos.setX(self.width() - 61) + pos.setX(self.width() - 65) else: # Otherwise move the button to the right of the tabs pos.setX(self.tabBar().sizeHint().width()) @@ -152,6 +153,19 @@ class TabWidget(QtWidgets.QTabWidget): index = self.addTab(tab, strings._("gui_new_tab")) self.setCurrentIndex(index) + # Create a close button + def close_tab(): + self.tabBar().tabCloseRequested.emit(self.indexOf(tab)) + + close_button = QtWidgets.QPushButton() + close_button.setFlat(True) + close_button.setFixedWidth(40) + close_button.setIcon( + QtGui.QIcon(self.common.get_resource_path("images/close_tab.png")) + ) + close_button.clicked.connect(close_tab) + self.tabBar().setTabButton(index, QtWidgets.QTabBar.RightSide, close_button) + tab.init(mode_settings) # If it's persistent, set the persistent image in the tab self.change_persistent(tab.tab_id, tab.settings.get("persistent", "enabled")) diff --git a/share/images/close_tab.png b/share/images/close_tab.png new file mode 100644 index 00000000..a7984a6d Binary files /dev/null and b/share/images/close_tab.png differ diff --git a/share/locale/en.json b/share/locale/en.json index 61fc0e2e..c7df27aa 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -188,6 +188,10 @@ "gui_new_tab_receive_button": "Receive Files", "gui_new_tab_website_button": "Host a Website", "gui_new_tab_chat_button": "Chat Anonymously", + "gui_tab_name_share": "Share", + "gui_tab_name_receive": "Receive", + "gui_tab_name_website": "Website", + "gui_tab_name_chat": "Chat", "gui_close_tab_warning_title": "Are you sure?", "gui_close_tab_warning_persistent_description": "This tab is persistent. If you close it you'll lose the onion address that it's using. Are you sure you want to close it?", "gui_close_tab_warning_share_description": "You're in the process of sending files. Are you sure you want to close this tab?",