electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit 5bbdcdf73d087f4e6636fbdb42af57d1611c7ec2
parent 1662a9e9c5ea8668c7889fc0b47903c8bea2fa55
Author: ThomasV <thomasv@gitorious>
Date:   Fri, 25 Apr 2014 11:22:16 +0200

move tray logic to ElectrumGui object. fixes #468

Diffstat:
Mgui/qt/__init__.py | 93+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mgui/qt/main_window.py | 82++++---------------------------------------------------------------------------
2 files changed, 95 insertions(+), 80 deletions(-)

diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py @@ -70,10 +70,84 @@ class ElectrumGui: if app is None: self.app = QApplication(sys.argv) self.app.installEventFilter(self.efilter) - init_plugins(self) + def build_tray_menu(self): + m = QMenu() + m.addAction(_("Show/Hide"), self.show_or_hide) + m.addAction(_("Dark/Light"), self.toggle_tray_icon) + m.addSeparator() + m.addAction(_("Exit Electrum"), self.close) + self.tray.setContextMenu(m) + + def toggle_tray_icon(self): + self.dark_icon = not self.dark_icon + self.config.set_key("dark_icon", self.dark_icon, True) + icon = QIcon(":icons/electrum_dark_icon.png") if self.dark_icon else QIcon(':icons/electrum_light_icon.png') + self.tray.setIcon(icon) + + def show_or_hide(self): + self.tray_activated(QSystemTrayIcon.DoubleClick) + + def tray_activated(self, reason): + if reason == QSystemTrayIcon.DoubleClick: + if self.current_window.isMinimized() or self.current_window.isHidden(): + self.current_window.show() + self.current_window.raise_() + else: + self.current_window.hide() + + def close(self): + self.current_window.close() + + + + def go_full(self): + self.config.set_key('lite_mode', False, True) + self.lite_window.hide() + self.main_window.show() + self.main_window.raise_() + self.current_window = self.main_window + + def go_lite(self): + self.config.set_key('lite_mode', True, True) + self.main_window.hide() + self.lite_window.show() + self.lite_window.raise_() + self.current_window = self.lite_window + + + def init_lite(self): + import lite_window + if not self.check_qt_version(): + if self.config.get('lite_mode') is True: + msg = "Electrum was unable to load the 'Lite GUI' because it needs Qt version >= 4.7.\nChanging your config to use the 'Classic' GUI" + QMessageBox.warning(None, "Could not start Lite GUI.", msg) + self.config.set_key('lite_mode', False, True) + sys.exit(0) + self.lite_window = None + self.main_window.show() + self.main_window.raise_() + return + + actuator = lite_window.MiniActuator(self.main_window) + actuator.load_theme() + self.lite_window = lite_window.MiniWindow(actuator, self.go_full, self.config) + driver = lite_window.MiniDriver(self.main_window, self.lite_window) + + if self.config.get('lite_mode') is True: + self.go_lite() + else: + self.go_full() + + + def check_qt_version(self): + qtVersion = qVersion() + return int(qtVersion[0]) >= 4 and int(qtVersion[2]) >= 7 + + + def main(self, url): storage = WalletStorage(self.config) @@ -95,7 +169,22 @@ class ElectrumGui: wallet = Wallet(storage) wallet.start_threads(self.network) - self.main_window = w = ElectrumWindow(self.config, self.network) + + # init tray + self.dark_icon = self.config.get("dark_icon", False) + icon = QIcon(":icons/electrum_dark_icon.png") if self.dark_icon else QIcon(':icons/electrum_light_icon.png') + self.tray = QSystemTrayIcon(icon, None) + self.tray.setToolTip('Electrum') + self.tray.activated.connect(self.tray_activated) + self.build_tray_menu() + self.tray.show() + + # main window + self.main_window = w = ElectrumWindow(self.config, self.network, self) + self.current_window = self.main_window + + #lite window + self.init_lite() # plugins that need to change the GUI do it here run_hook('init') diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py @@ -100,47 +100,19 @@ default_column_widths = { "history":[40,140,350,140], "contacts":[350,330], "rec class ElectrumWindow(QMainWindow): - def build_tray_menu(self): - m = QMenu() - m.addAction(_("Show/Hide"), self.show_or_hide) - m.addAction(_("Dark/Light"), self.toggle_tray_icon) - m.addSeparator() - m.addAction(_("Exit Electrum"), self.close) - self.tray.setContextMenu(m) - - def toggle_tray_icon(self): - self.dark_icon = not self.dark_icon - self.config.set_key("dark_icon", self.dark_icon, True) - icon = QIcon(":icons/electrum_dark_icon.png") if self.dark_icon else QIcon(':icons/electrum_light_icon.png') - self.tray.setIcon(icon) - - def show_or_hide(self): - self.tray_activated(QSystemTrayIcon.DoubleClick) - - def tray_activated(self, reason): - if reason == QSystemTrayIcon.DoubleClick: - if self.isMinimized() or self.isHidden(): - self.show() - self.raise_() - else: - self.hide() - def __init__(self, config, network): + + def __init__(self, config, network, gui_object): QMainWindow.__init__(self) self.config = config self.network = network + self.tray = gui_object.tray + self.go_lite = gui_object.go_lite self._close_electrum = False self.lite = None - self.dark_icon = self.config.get("dark_icon", False) - icon = QIcon(":icons/electrum_dark_icon.png") if self.dark_icon else QIcon(':icons/electrum_light_icon.png') - self.tray = QSystemTrayIcon(icon, self) - self.tray.setToolTip('Electrum') - self.tray.activated.connect(self.tray_activated) - self.build_tray_menu() - self.tray.show() self.create_status_bar() self.need_update = threading.Event() @@ -199,52 +171,6 @@ class ElectrumWindow(QMainWindow): self.console.showMessage(self.network.banner) self.wallet = None - self.init_lite() - - - def go_full(self): - self.config.set_key('lite_mode', False, True) - self.mini.hide() - self.show() - self.raise_() - - def go_lite(self): - self.config.set_key('lite_mode', True, True) - self.hide() - self.mini.show() - self.mini.raise_() - - - def init_lite(self): - import lite_window - if not self.check_qt_version(): - if self.config.get('lite_mode') is True: - msg = "Electrum was unable to load the 'Lite GUI' because it needs Qt version >= 4.7.\nChanging your config to use the 'Classic' GUI" - QMessageBox.warning(None, "Could not start Lite GUI.", msg) - self.config.set_key('lite_mode', False, True) - sys.exit(0) - self.mini = None - self.show() - self.raise_() - return - - actuator = lite_window.MiniActuator(self) - - actuator.load_theme() - - self.mini = lite_window.MiniWindow(actuator, self.go_full, self.config) - - driver = lite_window.MiniDriver(self, self.mini) - - if self.config.get('lite_mode') is True: - self.go_lite() - else: - self.go_full() - - - def check_qt_version(self): - qtVersion = qVersion() - return int(qtVersion[0]) >= 4 and int(qtVersion[2]) >= 7 def update_account_selector(self):