From f95b567c325a8b6b1472299ffcb088dfd15a74c9 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 12 Jan 2011 21:23:51 -0600 Subject: [PATCH] Porting the application object to the qwrappers --- src/dialcentral_qt.py | 148 +++++++------------------------------------------ 1 file changed, 19 insertions(+), 129 deletions(-) diff --git a/src/dialcentral_qt.py b/src/dialcentral_qt.py index 8dcf5c0..d6baf18 100755 --- a/src/dialcentral_qt.py +++ b/src/dialcentral_qt.py @@ -14,6 +14,7 @@ from PyQt4 import QtCore import constants from util import qtpie +from util import qwrappers from util import qui_utils from util import misc as misc_utils @@ -46,8 +47,7 @@ class LedWrapper(object): self._ledHandler = None - -class Dialcentral(object): +class Dialcentral(qwrappers.ApplicationWrapper): _DATA_PATHS = [ os.path.join(os.path.dirname(__file__), "../share"), @@ -55,45 +55,13 @@ class Dialcentral(object): ] def __init__(self, app): - self._app = app - self._recent = [] - self._hiddenCategories = set() - self._hiddenUnits = {} - self._clipboard = QtGui.QApplication.clipboard() self._dataPath = None + self._aboutDialog = None self._ledHandler = LedWrapper() self.notifyOnMissed = False self.notifyOnVoicemail = False self.notifyOnSms = False - self._mainWindow = None - - self._fullscreenAction = QtGui.QAction(None) - self._fullscreenAction.setText("Fullscreen") - self._fullscreenAction.setCheckable(True) - self._fullscreenAction.setShortcut(QtGui.QKeySequence("CTRL+Enter")) - self._fullscreenAction.toggled.connect(self._on_toggle_fullscreen) - - self._orientationAction = QtGui.QAction(None) - self._orientationAction.setText("Orientation") - self._orientationAction.setCheckable(True) - self._orientationAction.setShortcut(QtGui.QKeySequence("CTRL+o")) - self._orientationAction.toggled.connect(self._on_toggle_orientation) - - self._logAction = QtGui.QAction(None) - self._logAction.setText("Log") - self._logAction.setShortcut(QtGui.QKeySequence("CTRL+l")) - self._logAction.triggered.connect(self._on_log) - - self._quitAction = QtGui.QAction(None) - self._quitAction.setText("Quit") - self._quitAction.setShortcut(QtGui.QKeySequence("CTRL+q")) - self._quitAction.triggered.connect(self._on_quit) - - self._app.lastWindowClosed.connect(self._on_app_quit) - self._mainWindow = MainWindow(None, self) - self._mainWindow.window.destroyed.connect(self._on_child_close) - try: import alarm_handler if alarm_handler.AlarmHandler is not alarm_handler._NoneAlarmHandler: @@ -108,14 +76,7 @@ class Dialcentral(object): if self._alarmHandler is None: _moduleLogger.info("No notification support") - self.load_settings() - - self._mainWindow.show() - self._idleDelay = QtCore.QTimer() - self._idleDelay.setSingleShot(True) - self._idleDelay.setInterval(0) - self._idleDelay.timeout.connect(lambda: self._mainWindow.start()) - self._idleDelay.start() + qwrappers.ApplicationWrapper.__init__(self, app, constants) def load_settings(self): try: @@ -232,27 +193,16 @@ class Dialcentral(object): else: return None + def _close_windows(self): + qwrappers.ApplicationWrapper._close_windows(self) + if self._aboutDialog is not None: + self._aboutDialog.close() + @property def fsContactsPath(self): return os.path.join(constants._data_path_, "contacts") @property - def fullscreenAction(self): - return self._fullscreenAction - - @property - def orientationAction(self): - return self._orientationAction - - @property - def logAction(self): - return self._logAction - - @property - def quitAction(self): - return self._quitAction - - @property def alarmHandler(self): return self._alarmHandler @@ -260,62 +210,18 @@ class Dialcentral(object): def ledHandler(self): return self._ledHandler - def _walk_children(self): - if self._mainWindow is not None: - return (self._mainWindow, ) - else: - return () - - def _close_windows(self): - if self._mainWindow is not None: - self.save_settings() - self._mainWindow.window.destroyed.disconnect(self._on_child_close) - self._mainWindow.close() - self._mainWindow = None + def _new_main_window(self): + return MainWindow(None, self) @QtCore.pyqtSlot() @QtCore.pyqtSlot(bool) @misc_utils.log_exception(_moduleLogger) - def _on_app_quit(self, checked = False): - if self._mainWindow is not None: - self.save_settings() - self._mainWindow.destroy() - - @QtCore.pyqtSlot(QtCore.QObject) - @misc_utils.log_exception(_moduleLogger) - def _on_child_close(self, obj = None): - if self._mainWindow is not None: - self.save_settings() - self._mainWindow = None - - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) - @misc_utils.log_exception(_moduleLogger) - def _on_toggle_fullscreen(self, checked = False): - for window in self._walk_children(): - window.set_fullscreen(checked) - - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) - @misc_utils.log_exception(_moduleLogger) - def _on_toggle_orientation(self, checked = False): - for window in self._walk_children(): - window.set_orientation(checked) - - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) - @misc_utils.log_exception(_moduleLogger) - def _on_log(self, checked = False): - with open(constants._user_logpath_, "r") as f: - logLines = f.xreadlines() - log = "".join(logLines) - self._clipboard.setText(log) - - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) - @misc_utils.log_exception(_moduleLogger) - def _on_quit(self, checked = False): - self._close_windows() + def _on_about(self, checked = True): + with qui_utils.notify_error(self._errorLog): + if self._aboutDialog is None: + import dialogs + self._aboutDialog = dialogs.AboutDialog(self) + response = self._aboutDialog.run(self._mainWindow.window) class DelayedWidget(object): @@ -447,7 +353,6 @@ class MainWindow(object): self._credentialsDialog = None self._smsEntryDialog = None self._accountDialog = None - self._aboutDialog = None self._tabsContents = [ DelayedWidget(self._app, self._TAB_SETTINGS_NAMES[i]) @@ -515,10 +420,6 @@ class MainWindow(object): self._refreshTabAction.setShortcut(QtGui.QKeySequence("CTRL+r")) self._refreshTabAction.triggered.connect(self._on_refresh) - self._aboutAction = QtGui.QAction(None) - self._aboutAction.setText("About") - self._aboutAction.triggered.connect(self._on_about) - self._closeWindowAction = QtGui.QAction(None) self._closeWindowAction.setText("Close") self._closeWindowAction.setShortcut(QtGui.QKeySequence("CTRL+w")) @@ -532,7 +433,7 @@ class MainWindow(object): toolsMenu = self._window.menuBar().addMenu("&Tools") toolsMenu.addAction(self._accountTabAction) toolsMenu.addAction(self._importTabAction) - toolsMenu.addAction(self._aboutAction) + toolsMenu.addAction(self._app.aboutAction) self._window.addAction(self._closeWindowAction) self._window.addAction(self._app.quitAction) @@ -550,7 +451,7 @@ class MainWindow(object): toolsMenu = self._window.menuBar().addMenu("&Tools") toolsMenu.addAction(self._accountTabAction) toolsMenu.addAction(self._importTabAction) - toolsMenu.addAction(self._aboutAction) + toolsMenu.addAction(self._app.aboutAction) self._window.addAction(self._app.orientationAction) self._window.addAction(self._app.logAction) @@ -589,7 +490,6 @@ class MainWindow(object): self._credentialsDialog, self._smsEntryDialog, self._accountDialog, - self._aboutDialog, ): if diag is not None: diag.close() @@ -806,16 +706,6 @@ class MainWindow(object): @QtCore.pyqtSlot() @QtCore.pyqtSlot(bool) @misc_utils.log_exception(_moduleLogger) - def _on_about(self, checked = True): - with qui_utils.notify_error(self._errorLog): - if self._aboutDialog is None: - import dialogs - self._aboutDialog = dialogs.AboutDialog(self._app) - response = self._aboutDialog.run(self.window) - - @QtCore.pyqtSlot() - @QtCore.pyqtSlot(bool) - @misc_utils.log_exception(_moduleLogger) def _on_close_window(self, checked = True): self.close() -- 1.7.9.5