Tabs start out with new tab options, and remove the mode switcher from tabs

This commit is contained in:
Micah Lee 2019-10-26 21:56:57 -07:00
parent ed25b44e84
commit 6190de5c53
4 changed files with 113 additions and 119 deletions

View file

@ -50,6 +50,12 @@ class GuiCommon:
self.css = { self.css = {
# OnionShareGui styles # OnionShareGui styles
"new_tab_button": """
QPushButton {
font-weight: bold;
font-size: 30px;
color: #601f61;
}""",
"mode_switcher_selected_style": """ "mode_switcher_selected_style": """
QPushButton { QPushButton {
color: #ffffff; color: #ffffff;

View file

@ -100,7 +100,7 @@ class MainWindow(QtWidgets.QMainWindow):
# Start with one tab # Start with one tab
self.tab = Tab(self.common, self.system_tray, self.status_bar, filenames) self.tab = Tab(self.common, self.system_tray, self.status_bar, filenames)
self.tabs.addTab(self.tab, "Tab 1") self.tabs.addTab(self.tab, "New Tab")
# Layout # Layout
layout = QtWidgets.QVBoxLayout() layout = QtWidgets.QVBoxLayout()

View file

@ -45,28 +45,62 @@ class Tab(QtWidgets.QWidget):
self.system_tray = system_tray self.system_tray = system_tray
self.status_bar = status_bar self.status_bar = status_bar
self.filenames = filenames
self.mode = self.common.gui.MODE_SHARE self.mode = self.common.gui.MODE_SHARE
# Start the OnionShare app # Start the OnionShare app
self.app = OnionShare(common, self.common.gui.onion, self.common.gui.local_only) self.app = OnionShare(common, self.common.gui.onion, self.common.gui.local_only)
# Mode switcher, to switch between share files and receive files # New tab widget
self.share_mode_button = QtWidgets.QPushButton( share_button = QtWidgets.QPushButton(strings._("gui_new_tab_share_button"))
strings._("gui_mode_share_button") share_button.setStyleSheet(self.common.gui.css["new_tab_button"])
share_description = QtWidgets.QLabel(strings._("gui_new_tab_share_description"))
share_description.setWordWrap(True)
share_button.clicked.connect(self.share_mode_clicked)
receive_button = QtWidgets.QPushButton(strings._("gui_new_tab_receive_button"))
receive_button.setStyleSheet(self.common.gui.css["new_tab_button"])
receive_button.clicked.connect(self.receive_mode_clicked)
receive_description = QtWidgets.QLabel(
strings._("gui_new_tab_receive_description")
) )
self.share_mode_button.setFixedHeight(50) receive_description.setWordWrap(True)
self.share_mode_button.clicked.connect(self.share_mode_clicked)
self.receive_mode_button = QtWidgets.QPushButton( website_button = QtWidgets.QPushButton(strings._("gui_new_tab_website_button"))
strings._("gui_mode_receive_button") website_button.setStyleSheet(self.common.gui.css["new_tab_button"])
website_button.clicked.connect(self.website_mode_clicked)
website_description = QtWidgets.QLabel(
strings._("gui_new_tab_website_description")
) )
self.receive_mode_button.setFixedHeight(50) website_description.setWordWrap(True)
self.receive_mode_button.clicked.connect(self.receive_mode_clicked)
self.website_mode_button = QtWidgets.QPushButton( new_tab_layout = QtWidgets.QVBoxLayout()
strings._("gui_mode_website_button") new_tab_layout.addStretch(1)
) new_tab_layout.addWidget(share_button)
self.website_mode_button.setFixedHeight(50) new_tab_layout.addWidget(share_description)
self.website_mode_button.clicked.connect(self.website_mode_clicked) new_tab_layout.addSpacing(50)
new_tab_layout.addWidget(receive_button)
new_tab_layout.addWidget(receive_description)
new_tab_layout.addSpacing(50)
new_tab_layout.addWidget(website_button)
new_tab_layout.addWidget(website_description)
new_tab_layout.addStretch(3)
new_tab_inner = QtWidgets.QWidget()
new_tab_inner.setFixedWidth(500)
new_tab_inner.setLayout(new_tab_layout)
new_tab_outer_layout = QtWidgets.QHBoxLayout()
new_tab_outer_layout.addStretch()
new_tab_outer_layout.addWidget(new_tab_inner)
new_tab_outer_layout.addStretch()
self.new_tab = QtWidgets.QWidget()
self.new_tab.setLayout(new_tab_outer_layout)
self.new_tab.show()
# Settings button, but this is gonna disappear
self.settings_button = QtWidgets.QPushButton() self.settings_button = QtWidgets.QPushButton()
self.settings_button.setDefault(False) self.settings_button.setDefault(False)
self.settings_button.setFixedWidth(40) self.settings_button.setFixedWidth(40)
@ -76,12 +110,6 @@ class Tab(QtWidgets.QWidget):
) )
# self.settings_button.clicked.connect(self.open_settings) # self.settings_button.clicked.connect(self.open_settings)
self.settings_button.setStyleSheet(self.common.gui.css["settings_button"]) self.settings_button.setStyleSheet(self.common.gui.css["settings_button"])
mode_switcher_layout = QtWidgets.QHBoxLayout()
mode_switcher_layout.setSpacing(0)
mode_switcher_layout.addWidget(self.share_mode_button)
mode_switcher_layout.addWidget(self.receive_mode_button)
mode_switcher_layout.addWidget(self.website_mode_button)
mode_switcher_layout.addWidget(self.settings_button)
# Server status indicator icons # Server status indicator icons
self.status_bar.server_status_image_stopped = QtGui.QImage( self.status_bar.server_status_image_stopped = QtGui.QImage(
@ -94,7 +122,24 @@ class Tab(QtWidgets.QWidget):
self.common.get_resource_path("images/server_started.png") self.common.get_resource_path("images/server_started.png")
) )
# Share mode # Layout
self.layout = QtWidgets.QVBoxLayout()
self.layout.setContentsMargins(0, 0, 0, 0)
self.layout.addWidget(self.new_tab)
self.setLayout(self.layout)
# The server isn't active yet
self.set_server_active(False)
# Create the timer
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.timer_callback)
def share_mode_clicked(self):
self.common.log("Tab", "share_mode_clicked")
self.mode = self.common.gui.MODE_SHARE
self.new_tab.hide()
self.share_mode = ShareMode( self.share_mode = ShareMode(
self.common, self.common,
self.common.gui.qtapp, self.common.gui.qtapp,
@ -102,9 +147,12 @@ class Tab(QtWidgets.QWidget):
self.status_bar, self.status_bar,
self.status_bar.server_status_label, self.status_bar.server_status_label,
self.system_tray, self.system_tray,
filenames, self.filenames,
self.common.gui.local_only, self.common.gui.local_only,
) )
self.layout.addWidget(self.share_mode)
self.share_mode.show()
self.share_mode.init() self.share_mode.init()
self.share_mode.server_status.server_started.connect( self.share_mode.server_status.server_started.connect(
self.update_server_status_indicator self.update_server_status_indicator
@ -125,7 +173,14 @@ class Tab(QtWidgets.QWidget):
self.share_mode.server_status.hidservauth_copied.connect(self.copy_hidservauth) self.share_mode.server_status.hidservauth_copied.connect(self.copy_hidservauth)
self.share_mode.set_server_active.connect(self.set_server_active) self.share_mode.set_server_active.connect(self.set_server_active)
# Receive mode self.update_server_status_indicator()
self.timer.start(500)
def receive_mode_clicked(self):
self.common.log("Tab", "receive_mode_clicked")
self.mode = self.common.gui.MODE_RECEIVE
self.new_tab.hide()
self.receive_mode = ReceiveMode( self.receive_mode = ReceiveMode(
self.common, self.common,
self.common.gui.qtapp, self.common.gui.qtapp,
@ -136,6 +191,9 @@ class Tab(QtWidgets.QWidget):
None, None,
self.common.gui.local_only, self.common.gui.local_only,
) )
self.layout.addWidget(self.receive_mode)
self.receive_mode.show()
self.receive_mode.init() self.receive_mode.init()
self.receive_mode.server_status.server_started.connect( self.receive_mode.server_status.server_started.connect(
self.update_server_status_indicator self.update_server_status_indicator
@ -158,7 +216,14 @@ class Tab(QtWidgets.QWidget):
) )
self.receive_mode.set_server_active.connect(self.set_server_active) self.receive_mode.set_server_active.connect(self.set_server_active)
# Website mode self.update_server_status_indicator()
self.timer.start(500)
def website_mode_clicked(self):
self.common.log("Tab", "website_mode_clicked")
self.mode = self.common.gui.MODE_WEBSITE
self.new_tab.hide()
self.website_mode = WebsiteMode( self.website_mode = WebsiteMode(
self.common, self.common,
self.common.gui.qtapp, self.common.gui.qtapp,
@ -166,8 +231,11 @@ class Tab(QtWidgets.QWidget):
self.status_bar, self.status_bar,
self.status_bar.server_status_label, self.status_bar.server_status_label,
self.system_tray, self.system_tray,
filenames, self.filenames,
) )
self.layout.addWidget(self.website_mode)
self.website_mode.show()
self.website_mode.init() self.website_mode.init()
self.website_mode.server_status.server_started.connect( self.website_mode.server_status.server_started.connect(
self.update_server_status_indicator self.update_server_status_indicator
@ -190,98 +258,9 @@ class Tab(QtWidgets.QWidget):
) )
self.website_mode.set_server_active.connect(self.set_server_active) self.website_mode.set_server_active.connect(self.set_server_active)
self.update_mode_switcher()
self.update_server_status_indicator() self.update_server_status_indicator()
# Layouts
contents_layout = QtWidgets.QVBoxLayout()
contents_layout.setContentsMargins(10, 0, 10, 0)
contents_layout.addWidget(self.receive_mode)
contents_layout.addWidget(self.share_mode)
contents_layout.addWidget(self.website_mode)
layout = QtWidgets.QVBoxLayout()
layout.setContentsMargins(0, 0, 0, 0)
layout.addLayout(mode_switcher_layout)
layout.addLayout(contents_layout)
self.setLayout(layout)
# The server isn't active yet
self.set_server_active(False)
# Create the timer
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.timer_callback)
# Start the timer
self.timer.start(500) self.timer.start(500)
def update_mode_switcher(self):
# Based on the current mode, switch the mode switcher button styles,
# and show and hide widgets to switch modes
if self.mode == self.common.gui.MODE_SHARE:
self.share_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_selected_style"]
)
self.receive_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_unselected_style"]
)
self.website_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_unselected_style"]
)
self.receive_mode.hide()
self.share_mode.show()
self.website_mode.hide()
elif self.mode == self.common.gui.MODE_WEBSITE:
self.share_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_unselected_style"]
)
self.receive_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_unselected_style"]
)
self.website_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_selected_style"]
)
self.receive_mode.hide()
self.share_mode.hide()
self.website_mode.show()
else:
self.share_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_unselected_style"]
)
self.receive_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_selected_style"]
)
self.website_mode_button.setStyleSheet(
self.common.gui.css["mode_switcher_unselected_style"]
)
self.share_mode.hide()
self.receive_mode.show()
self.website_mode.hide()
self.update_server_status_indicator()
def share_mode_clicked(self):
if self.mode != self.common.gui.MODE_SHARE:
self.common.log("Tab", "share_mode_clicked")
self.mode = self.common.gui.MODE_SHARE
self.update_mode_switcher()
def receive_mode_clicked(self):
if self.mode != self.common.gui.MODE_RECEIVE:
self.common.log("Tab", "receive_mode_clicked")
self.mode = self.common.gui.MODE_RECEIVE
self.update_mode_switcher()
def website_mode_clicked(self):
if self.mode != self.common.gui.MODE_WEBSITE:
self.common.log("Tab", "website_mode_clicked")
self.mode = self.common.gui.MODE_WEBSITE
self.update_mode_switcher()
def update_server_status_indicator(self): def update_server_status_indicator(self):
# Set the status image # Set the status image
if self.mode == self.common.gui.MODE_SHARE: if self.mode == self.common.gui.MODE_SHARE:
@ -335,7 +314,7 @@ class Tab(QtWidgets.QWidget):
self.status_bar.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_share_started") strings._("gui_status_indicator_share_started")
) )
else: elif self.mode == self.common.gui.MODE_RECEIVE:
# Receive mode # Receive mode
if self.receive_mode.server_status.status == ServerStatus.STATUS_STOPPED: if self.receive_mode.server_status.status == ServerStatus.STATUS_STOPPED:
self.status_bar.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
@ -491,6 +470,8 @@ class Tab(QtWidgets.QWidget):
""" """
Disable the Settings and Receive Files buttons while an Share Files server is active. Disable the Settings and Receive Files buttons while an Share Files server is active.
""" """
pass
"""
if active: if active:
self.settings_button.hide() self.settings_button.hide()
if self.mode == self.common.gui.MODE_SHARE: if self.mode == self.common.gui.MODE_SHARE:
@ -512,7 +493,8 @@ class Tab(QtWidgets.QWidget):
self.website_mode_button.show() self.website_mode_button.show()
# Disable settings menu action when server is active # Disable settings menu action when server is active
# self.settings_action.setEnabled(not active) self.settings_action.setEnabled(not active)
"""
def clear_message(self): def clear_message(self):
""" """

View file

@ -179,5 +179,11 @@
"days_first_letter": "d", "days_first_letter": "d",
"hours_first_letter": "h", "hours_first_letter": "h",
"minutes_first_letter": "m", "minutes_first_letter": "m",
"seconds_first_letter": "s" "seconds_first_letter": "s",
} "gui_new_tab_share_button": "Share Files",
"gui_new_tab_share_description": "Choose files on your computer to send to someone else. The person or people who you want to send files to will need to use Tor Browser to download them from you.",
"gui_new_tab_receive_button": "Receive Files",
"gui_new_tab_receive_description": "Turn your computer into an online dropbox. People will be able to use Tor Browser to send files to your computer.",
"gui_new_tab_website_button": "Publish Website",
"gui_new_tab_website_description": "Host a static HTML onion website from your computer."
}