Add a single tab, and fix several issues with moving all the tab code into its own object

This commit is contained in:
Micah Lee 2019-10-26 21:14:47 -07:00
parent c77db82e67
commit 6449e5183e
No known key found for this signature in database
GPG key ID: 403C2657CD994F73
8 changed files with 72 additions and 64 deletions

View file

@ -17,7 +17,6 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
""" """
import queue
from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings from onionshare import strings
@ -27,6 +26,7 @@ from .tor_connection_dialog import TorConnectionDialog
from .settings_dialog import SettingsDialog from .settings_dialog import SettingsDialog
from .widgets import Alert from .widgets import Alert
from .update_checker import UpdateThread from .update_checker import UpdateThread
from .tab import Tab
class MainWindow(QtWidgets.QMainWindow): class MainWindow(QtWidgets.QMainWindow):
@ -71,33 +71,41 @@ class MainWindow(QtWidgets.QMainWindow):
self.system_tray.setContextMenu(menu) self.system_tray.setContextMenu(menu)
self.system_tray.show() self.system_tray.show()
# Server status indicator on the status bar
self.server_status_image_label = QtWidgets.QLabel()
self.server_status_image_label.setFixedWidth(20)
self.server_status_label = QtWidgets.QLabel("")
self.server_status_label.setStyleSheet(
self.common.gui.css["server_status_indicator_label"]
)
server_status_indicator_layout = QtWidgets.QHBoxLayout()
server_status_indicator_layout.addWidget(self.server_status_image_label)
server_status_indicator_layout.addWidget(self.server_status_label)
self.server_status_indicator = QtWidgets.QWidget()
self.server_status_indicator.setLayout(server_status_indicator_layout)
# Status bar # Status bar
self.status_bar = QtWidgets.QStatusBar() self.status_bar = QtWidgets.QStatusBar()
self.status_bar.setSizeGripEnabled(False) self.status_bar.setSizeGripEnabled(False)
self.status_bar.setStyleSheet(self.common.gui.css["status_bar"]) self.status_bar.setStyleSheet(self.common.gui.css["status_bar"])
self.status_bar.addPermanentWidget(self.server_status_indicator)
self.setStatusBar(self.status_bar) self.setStatusBar(self.status_bar)
# Placeholder label # Server status indicator on the status bar
label = QtWidgets.QLabel("coming soon...") self.status_bar.server_status_image_label = QtWidgets.QLabel()
self.status_bar.server_status_image_label.setFixedWidth(20)
self.status_bar.server_status_label = QtWidgets.QLabel("")
self.status_bar.server_status_label.setStyleSheet(
self.common.gui.css["server_status_indicator_label"]
)
server_status_indicator_layout = QtWidgets.QHBoxLayout()
server_status_indicator_layout.addWidget(
self.status_bar.server_status_image_label
)
server_status_indicator_layout.addWidget(self.status_bar.server_status_label)
self.status_bar.server_status_indicator = QtWidgets.QWidget()
self.status_bar.server_status_indicator.setLayout(
server_status_indicator_layout
)
self.status_bar.addPermanentWidget(self.status_bar.server_status_indicator)
# Tabs
self.tabs = QtWidgets.QTabWidget()
# Start with one tab
self.tab = Tab(self.common, self.system_tray, self.status_bar, filenames)
self.tabs.addTab(self.tab, "Tab 1")
# Layout # Layout
layout = QtWidgets.QVBoxLayout() layout = QtWidgets.QVBoxLayout()
layout.setContentsMargins(0, 0, 0, 0) # layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(label) layout.addWidget(self.tabs)
central_widget = QtWidgets.QWidget() central_widget = QtWidgets.QWidget()
central_widget.setLayout(layout) central_widget.setLayout(layout)

View file

@ -25,9 +25,8 @@ from onionshare.common import AutoStopTimer
from .history import IndividualFileHistoryItem from .history import IndividualFileHistoryItem
from ..server_status import ServerStatus from ..server_status import ServerStatus
from ..threads import OnionThread from ...threads import OnionThread, AutoStartTimer
from ..threads import AutoStartTimer from ...widgets import Alert
from ..widgets import Alert
class Mode(QtWidgets.QWidget): class Mode(QtWidgets.QWidget):

View file

@ -22,7 +22,7 @@ from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings from onionshare import strings
from ..widgets import Alert, AddFileDialog from ...widgets import Alert, AddFileDialog
class DropHereLabel(QtWidgets.QLabel): class DropHereLabel(QtWidgets.QLabel):

View file

@ -24,7 +24,7 @@ from datetime import datetime
from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings from onionshare import strings
from ..widgets import Alert from ...widgets import Alert
class HistoryItem(QtWidgets.QWidget): class HistoryItem(QtWidgets.QWidget):

View file

@ -29,7 +29,7 @@ from ..file_selection import FileSelection
from .threads import CompressThread from .threads import CompressThread
from .. import Mode from .. import Mode
from ..history import History, ToggleHistory, ShareHistoryItem from ..history import History, ToggleHistory, ShareHistoryItem
from ...widgets import Alert from ....widgets import Alert
class ShareMode(Mode): class ShareMode(Mode):

View file

@ -31,7 +31,7 @@ from onionshare.web import Web
from ..file_selection import FileSelection from ..file_selection import FileSelection
from .. import Mode from .. import Mode
from ..history import History, ToggleHistory from ..history import History, ToggleHistory
from ...widgets import Alert from ....widgets import Alert
class WebsiteMode(Mode): class WebsiteMode(Mode):

View file

@ -23,7 +23,7 @@ from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings from onionshare import strings
from .widgets import Alert from ..widgets import Alert
class ServerStatus(QtWidgets.QWidget): class ServerStatus(QtWidgets.QWidget):

View file

@ -17,6 +17,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
""" """
import queue
from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5 import QtCore, QtWidgets, QtGui
from onionshare import strings from onionshare import strings
@ -73,7 +74,7 @@ class Tab(QtWidgets.QWidget):
self.settings_button.setIcon( self.settings_button.setIcon(
QtGui.QIcon(self.common.get_resource_path("images/settings.png")) QtGui.QIcon(self.common.get_resource_path("images/settings.png"))
) )
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 = QtWidgets.QHBoxLayout()
mode_switcher_layout.setSpacing(0) mode_switcher_layout.setSpacing(0)
@ -83,13 +84,13 @@ class Tab(QtWidgets.QWidget):
mode_switcher_layout.addWidget(self.settings_button) mode_switcher_layout.addWidget(self.settings_button)
# Server status indicator icons # Server status indicator icons
self.server_status_image_stopped = QtGui.QImage( self.status_bar.server_status_image_stopped = QtGui.QImage(
self.common.get_resource_path("images/server_stopped.png") self.common.get_resource_path("images/server_stopped.png")
) )
self.server_status_image_working = QtGui.QImage( self.status_bar.server_status_image_working = QtGui.QImage(
self.common.get_resource_path("images/server_working.png") self.common.get_resource_path("images/server_working.png")
) )
self.server_status_image_started = QtGui.QImage( self.status_bar.server_status_image_started = QtGui.QImage(
self.common.get_resource_path("images/server_started.png") self.common.get_resource_path("images/server_started.png")
) )
@ -99,7 +100,7 @@ class Tab(QtWidgets.QWidget):
self.common.gui.qtapp, self.common.gui.qtapp,
self.app, self.app,
self.status_bar, self.status_bar,
self.server_status_label, self.status_bar.server_status_label,
self.system_tray, self.system_tray,
filenames, filenames,
self.common.gui.local_only, self.common.gui.local_only,
@ -130,7 +131,7 @@ class Tab(QtWidgets.QWidget):
self.common.gui.qtapp, self.common.gui.qtapp,
self.app, self.app,
self.status_bar, self.status_bar,
self.server_status_label, self.status_bar.server_status_label,
self.system_tray, self.system_tray,
None, None,
self.common.gui.local_only, self.common.gui.local_only,
@ -163,7 +164,7 @@ class Tab(QtWidgets.QWidget):
self.common.gui.qtapp, self.common.gui.qtapp,
self.app, self.app,
self.status_bar, self.status_bar,
self.server_status_label, self.status_bar.server_status_label,
self.system_tray, self.system_tray,
filenames, filenames,
) )
@ -286,80 +287,80 @@ class Tab(QtWidgets.QWidget):
if self.mode == self.common.gui.MODE_SHARE: if self.mode == self.common.gui.MODE_SHARE:
# Share mode # Share mode
if self.share_mode.server_status.status == ServerStatus.STATUS_STOPPED: if self.share_mode.server_status.status == ServerStatus.STATUS_STOPPED:
self.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_stopped) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_stopped)
) )
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_share_stopped") strings._("gui_status_indicator_share_stopped")
) )
elif self.share_mode.server_status.status == ServerStatus.STATUS_WORKING: elif self.share_mode.server_status.status == ServerStatus.STATUS_WORKING:
self.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_working) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_working)
) )
if self.share_mode.server_status.autostart_timer_datetime: if self.share_mode.server_status.autostart_timer_datetime:
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_share_scheduled") strings._("gui_status_indicator_share_scheduled")
) )
else: else:
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_share_working") strings._("gui_status_indicator_share_working")
) )
elif self.share_mode.server_status.status == ServerStatus.STATUS_STARTED: elif self.share_mode.server_status.status == ServerStatus.STATUS_STARTED:
self.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_started) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_started)
) )
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_share_started") strings._("gui_status_indicator_share_started")
) )
elif self.mode == self.common.gui.MODE_WEBSITE: elif self.mode == self.common.gui.MODE_WEBSITE:
# Website mode # Website mode
if self.website_mode.server_status.status == ServerStatus.STATUS_STOPPED: if self.website_mode.server_status.status == ServerStatus.STATUS_STOPPED:
self.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_stopped) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_stopped)
) )
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_share_stopped") strings._("gui_status_indicator_share_stopped")
) )
elif self.website_mode.server_status.status == ServerStatus.STATUS_WORKING: elif self.website_mode.server_status.status == ServerStatus.STATUS_WORKING:
self.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_working) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_working)
) )
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_share_working") strings._("gui_status_indicator_share_working")
) )
elif self.website_mode.server_status.status == ServerStatus.STATUS_STARTED: elif self.website_mode.server_status.status == ServerStatus.STATUS_STARTED:
self.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_started) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_started)
) )
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_share_started") strings._("gui_status_indicator_share_started")
) )
else: else:
# 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.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_stopped) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_stopped)
) )
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_receive_stopped") strings._("gui_status_indicator_receive_stopped")
) )
elif self.receive_mode.server_status.status == ServerStatus.STATUS_WORKING: elif self.receive_mode.server_status.status == ServerStatus.STATUS_WORKING:
self.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_working) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_working)
) )
if self.receive_mode.server_status.autostart_timer_datetime: if self.receive_mode.server_status.autostart_timer_datetime:
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_receive_scheduled") strings._("gui_status_indicator_receive_scheduled")
) )
else: else:
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_receive_working") strings._("gui_status_indicator_receive_working")
) )
elif self.receive_mode.server_status.status == ServerStatus.STATUS_STARTED: elif self.receive_mode.server_status.status == ServerStatus.STATUS_STARTED:
self.server_status_image_label.setPixmap( self.status_bar.server_status_image_label.setPixmap(
QtGui.QPixmap.fromImage(self.server_status_image_started) QtGui.QPixmap.fromImage(self.status_bar.server_status_image_started)
) )
self.server_status_label.setText( self.status_bar.server_status_label.setText(
strings._("gui_status_indicator_receive_started") strings._("gui_status_indicator_receive_started")
) )
@ -511,7 +512,7 @@ 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):
""" """