mirror of
https://github.com/onionshare/onionshare.git
synced 2024-12-27 08:19:41 -05:00
Move more logic into GuiCommon and out of MainWindow
This commit is contained in:
parent
2a07a3572f
commit
b8dc0551d3
@ -60,7 +60,6 @@ def main():
|
|||||||
The main() function implements all of the logic that the GUI version of onionshare uses.
|
The main() function implements all of the logic that the GUI version of onionshare uses.
|
||||||
"""
|
"""
|
||||||
common = Common()
|
common = Common()
|
||||||
common.gui = GuiCommon(common)
|
|
||||||
|
|
||||||
# Display OnionShare banner
|
# Display OnionShare banner
|
||||||
print(f"OnionShare {common.version} | https://onionshare.org/")
|
print(f"OnionShare {common.version} | https://onionshare.org/")
|
||||||
@ -156,8 +155,11 @@ def main():
|
|||||||
# TODO: open tab
|
# TODO: open tab
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Attach the GUI common parts to the common object
|
||||||
|
common.gui = GuiCommon(common, qtapp, local_only, config)
|
||||||
|
|
||||||
# Launch the gui
|
# Launch the gui
|
||||||
main_window = MainWindow(common, qtapp, filenames, config, local_only)
|
main_window = MainWindow(common, filenames)
|
||||||
|
|
||||||
# Clean up when app quits
|
# Clean up when app quits
|
||||||
def shutdown():
|
def shutdown():
|
||||||
|
@ -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/>.
|
||||||
"""
|
"""
|
||||||
|
from onionshare import strings
|
||||||
|
|
||||||
|
|
||||||
class GuiCommon:
|
class GuiCommon:
|
||||||
@ -28,8 +29,20 @@ class GuiCommon:
|
|||||||
MODE_RECEIVE = "receive"
|
MODE_RECEIVE = "receive"
|
||||||
MODE_WEBSITE = "website"
|
MODE_WEBSITE = "website"
|
||||||
|
|
||||||
def __init__(self, common):
|
def __init__(self, common, qtapp, local_only, config):
|
||||||
self.common = common
|
self.common = common
|
||||||
|
self.qtapp = qtapp
|
||||||
|
self.local_only = local_only
|
||||||
|
|
||||||
|
# Load settings, if a custom config was passed in
|
||||||
|
self.config = config
|
||||||
|
if self.config:
|
||||||
|
self.common.load_settings(self.config)
|
||||||
|
else:
|
||||||
|
self.common.load_settings()
|
||||||
|
|
||||||
|
# Load strings
|
||||||
|
strings.load_strings(self.common)
|
||||||
|
|
||||||
self.css = {
|
self.css = {
|
||||||
# OnionShareGui styles
|
# OnionShareGui styles
|
||||||
|
@ -42,22 +42,19 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
MainWindow is the OnionShare main window, which contains the GUI elements, including all open tabs
|
MainWindow is the OnionShare main window, which contains the GUI elements, including all open tabs
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, common, qtapp, filenames, config=False, local_only=False):
|
def __init__(self, common, filenames):
|
||||||
super(MainWindow, self).__init__()
|
super(MainWindow, self).__init__()
|
||||||
|
|
||||||
self.common = common
|
self.common = common
|
||||||
self.common.log("MainWindow", "__init__")
|
self.common.log("MainWindow", "__init__")
|
||||||
|
|
||||||
self.qtapp = qtapp
|
|
||||||
self.local_only = local_only
|
|
||||||
|
|
||||||
self.mode = self.common.gui.MODE_SHARE
|
self.mode = self.common.gui.MODE_SHARE
|
||||||
|
|
||||||
# Start the Onion
|
# Start the Onion
|
||||||
self.onion = Onion(common)
|
self.onion = Onion(common)
|
||||||
|
|
||||||
# Start the OnionShare app
|
# Start the OnionShare app
|
||||||
self.app = OnionShare(common, self.onion, local_only)
|
self.app = OnionShare(common, self.onion, self.common.gui.local_only)
|
||||||
|
|
||||||
# Initialize the window
|
# Initialize the window
|
||||||
self.setMinimumWidth(820)
|
self.setMinimumWidth(820)
|
||||||
@ -68,15 +65,6 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
QtGui.QIcon(self.common.get_resource_path("images/logo.png"))
|
QtGui.QIcon(self.common.get_resource_path("images/logo.png"))
|
||||||
)
|
)
|
||||||
|
|
||||||
# Load settings, if a custom config was passed in
|
|
||||||
self.config = config
|
|
||||||
if self.config:
|
|
||||||
self.common.load_settings(self.config)
|
|
||||||
else:
|
|
||||||
self.common.load_settings()
|
|
||||||
|
|
||||||
strings.load_strings(self.common)
|
|
||||||
|
|
||||||
# System tray
|
# System tray
|
||||||
menu = QtWidgets.QMenu()
|
menu = QtWidgets.QMenu()
|
||||||
self.settings_action = menu.addAction(strings._("gui_settings_window_title"))
|
self.settings_action = menu.addAction(strings._("gui_settings_window_title"))
|
||||||
@ -87,6 +75,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
exit_action.triggered.connect(self.close)
|
exit_action.triggered.connect(self.close)
|
||||||
|
|
||||||
self.system_tray = QtWidgets.QSystemTrayIcon(self)
|
self.system_tray = QtWidgets.QSystemTrayIcon(self)
|
||||||
|
|
||||||
# The convention is Mac systray icons are always grayscale
|
# The convention is Mac systray icons are always grayscale
|
||||||
if self.common.platform == "Darwin":
|
if self.common.platform == "Darwin":
|
||||||
self.system_tray.setIcon(
|
self.system_tray.setIcon(
|
||||||
@ -163,13 +152,13 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
# Share mode
|
# Share mode
|
||||||
self.share_mode = ShareMode(
|
self.share_mode = ShareMode(
|
||||||
self.common,
|
self.common,
|
||||||
qtapp,
|
self.common.gui.qtapp,
|
||||||
self.app,
|
self.app,
|
||||||
self.status_bar,
|
self.status_bar,
|
||||||
self.server_status_label,
|
self.server_status_label,
|
||||||
self.system_tray,
|
self.system_tray,
|
||||||
filenames,
|
filenames,
|
||||||
self.local_only,
|
self.common.gui.local_only,
|
||||||
)
|
)
|
||||||
self.share_mode.init()
|
self.share_mode.init()
|
||||||
self.share_mode.server_status.server_started.connect(
|
self.share_mode.server_status.server_started.connect(
|
||||||
@ -194,13 +183,13 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
# Receive mode
|
# Receive mode
|
||||||
self.receive_mode = ReceiveMode(
|
self.receive_mode = ReceiveMode(
|
||||||
self.common,
|
self.common,
|
||||||
qtapp,
|
self.common.gui.qtapp,
|
||||||
self.app,
|
self.app,
|
||||||
self.status_bar,
|
self.status_bar,
|
||||||
self.server_status_label,
|
self.server_status_label,
|
||||||
self.system_tray,
|
self.system_tray,
|
||||||
None,
|
None,
|
||||||
self.local_only,
|
self.common.gui.local_only,
|
||||||
)
|
)
|
||||||
self.receive_mode.init()
|
self.receive_mode.init()
|
||||||
self.receive_mode.server_status.server_started.connect(
|
self.receive_mode.server_status.server_started.connect(
|
||||||
@ -227,7 +216,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
# Website mode
|
# Website mode
|
||||||
self.website_mode = WebsiteMode(
|
self.website_mode = WebsiteMode(
|
||||||
self.common,
|
self.common,
|
||||||
qtapp,
|
self.common.gui.qtapp,
|
||||||
self.app,
|
self.app,
|
||||||
self.status_bar,
|
self.status_bar,
|
||||||
self.server_status_label,
|
self.server_status_label,
|
||||||
@ -284,10 +273,10 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.timer.timeout.connect(self.timer_callback)
|
self.timer.timeout.connect(self.timer_callback)
|
||||||
|
|
||||||
# Start the "Connecting to Tor" dialog, which calls onion.connect()
|
# Start the "Connecting to Tor" dialog, which calls onion.connect()
|
||||||
tor_con = TorConnectionDialog(self.common, self.qtapp, self.onion)
|
tor_con = TorConnectionDialog(self.common, self.common.gui.qtapp, self.onion)
|
||||||
tor_con.canceled.connect(self._tor_connection_canceled)
|
tor_con.canceled.connect(self._tor_connection_canceled)
|
||||||
tor_con.open_settings.connect(self._tor_connection_open_settings)
|
tor_con.open_settings.connect(self._tor_connection_open_settings)
|
||||||
if not self.local_only:
|
if not self.common.gui.local_only:
|
||||||
tor_con.start()
|
tor_con.start()
|
||||||
|
|
||||||
# Start the timer
|
# Start the timer
|
||||||
@ -490,7 +479,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Wait 1ms for the event loop to finish, then quit
|
# Wait 1ms for the event loop to finish, then quit
|
||||||
QtCore.QTimer.singleShot(1, self.qtapp.quit)
|
QtCore.QTimer.singleShot(1, self.common.gui.qtapp.quit)
|
||||||
|
|
||||||
# Wait 100ms before asking
|
# Wait 100ms before asking
|
||||||
QtCore.QTimer.singleShot(100, ask)
|
QtCore.QTimer.singleShot(100, ask)
|
||||||
@ -519,7 +508,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
# We might've stopped the main requests timer if a Tor connection failed.
|
# We might've stopped the main requests timer if a Tor connection failed.
|
||||||
# If we've reloaded settings, we probably succeeded in obtaining a new
|
# If we've reloaded settings, we probably succeeded in obtaining a new
|
||||||
# connection. If so, restart the timer.
|
# connection. If so, restart the timer.
|
||||||
if not self.local_only:
|
if not self.common.gui.local_only:
|
||||||
if self.onion.is_authenticated():
|
if self.onion.is_authenticated():
|
||||||
if not self.timer.isActive():
|
if not self.timer.isActive():
|
||||||
self.timer.start(500)
|
self.timer.start(500)
|
||||||
@ -543,7 +532,11 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
self.website_mode.server_status.autostart_timer_container.hide()
|
self.website_mode.server_status.autostart_timer_container.hide()
|
||||||
|
|
||||||
d = SettingsDialog(
|
d = SettingsDialog(
|
||||||
self.common, self.onion, self.qtapp, self.config, self.local_only
|
self.common,
|
||||||
|
self.onion,
|
||||||
|
self.common.gui.qtapp,
|
||||||
|
self.common.gui.config,
|
||||||
|
self.common.gui.local_only,
|
||||||
)
|
)
|
||||||
d.settings_saved.connect(reload_settings)
|
d.settings_saved.connect(reload_settings)
|
||||||
d.exec_()
|
d.exec_()
|
||||||
@ -568,7 +561,9 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
self.update_thread = UpdateThread(self.common, self.onion, self.config)
|
self.update_thread = UpdateThread(
|
||||||
|
self.common, self.onion, self.common.gui.config
|
||||||
|
)
|
||||||
self.update_thread.update_available.connect(update_available)
|
self.update_thread.update_available.connect(update_available)
|
||||||
self.update_thread.start()
|
self.update_thread.start()
|
||||||
|
|
||||||
@ -579,7 +574,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||||||
"""
|
"""
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
if not self.local_only:
|
if not self.common.gui.local_only:
|
||||||
# Have we lost connection to Tor somehow?
|
# Have we lost connection to Tor somehow?
|
||||||
if not self.onion.is_authenticated():
|
if not self.onion.is_authenticated():
|
||||||
self.timer.stop()
|
self.timer.stop()
|
||||||
|
Loading…
Reference in New Issue
Block a user