diff --git a/amsn2/backend/backend.py b/amsn2/backend/backend.py index d77aa6a5..8f41b87b 100644 --- a/amsn2/backend/backend.py +++ b/amsn2/backend/backend.py @@ -1,7 +1,8 @@ class aMSNBackendManager(object): - def __init__(self): + def __init__(self, core): self._backend = None + self._core = core self.switchToBackend('nullbackend') def setBackendForFunc(self, funcname, backend): @@ -21,6 +22,7 @@ def switchToBackend(self, backend): del self._backend self._backend = backend_class() + self._backend._core = self._core self.current_backend = backend # Config management methods diff --git a/amsn2/backend/defaultaccountbackend.py b/amsn2/backend/defaultaccountbackend.py index 7f03980b..fafcb835 100644 --- a/amsn2/backend/defaultaccountbackend.py +++ b/amsn2/backend/defaultaccountbackend.py @@ -40,7 +40,7 @@ def loadAccount(self, email): accfile.close() account = root_tree.getroot() if account.tag == "aMSNAccount": - accview = AccountView() + accview = AccountView(self._core) #email emailElmt = account.find("email") if emailElmt is None: diff --git a/amsn2/core/amsn.py b/amsn2/core/amsn.py index 4181d47c..c29abce1 100644 --- a/amsn2/core/amsn.py +++ b/amsn2/core/amsn.py @@ -49,6 +49,17 @@ def __init__(self, options): options.front_end = the front end's name to use options.debug = whether or not to enable debug output """ + self.p2s = {papyon.Presence.ONLINE:"online", + papyon.Presence.BUSY:"busy", + papyon.Presence.IDLE:"idle", + papyon.Presence.AWAY:"away", + papyon.Presence.BE_RIGHT_BACK:"brb", + papyon.Presence.ON_THE_PHONE:"phone", + papyon.Presence.OUT_TO_LUNCH:"lunch", + papyon.Presence.INVISIBLE:"hidden", + papyon.Presence.OFFLINE:"offline"} + self.Presence = papyon.Presence + self._event_manager = aMSNEventManager(self) self._options = options @@ -56,28 +67,17 @@ def __init__(self, options): self._gui = None self._loop = None self._main = None + self._account = None self.loadUI(self._options.front_end) - self._backend_manager = aMSNBackendManager() + self._backend_manager = aMSNBackendManager(self) self._account_manager = aMSNAccountManager(self, options) - self._account = None - self._theme_manager = aMSNThemeManager() + self._theme_manager = aMSNThemeManager(self) self._contactlist_manager = aMSNContactListManager(self) self._oim_manager = aMSNOIMManager(self) self._conversation_manager = aMSNConversationManager(self) self._personalinfo_manager = aMSNPersonalInfoManager(self) - - self.p2s = {papyon.Presence.ONLINE:"online", - papyon.Presence.BUSY:"busy", - papyon.Presence.IDLE:"idle", - papyon.Presence.AWAY:"away", - papyon.Presence.BE_RIGHT_BACK:"brb", - papyon.Presence.ON_THE_PHONE:"phone", - papyon.Presence.OUT_TO_LUNCH:"lunch", - papyon.Presence.INVISIBLE:"hidden", - papyon.Presence.OFFLINE:"offline"} - # TODO: redirect the logs somewhere, something like ctrl-s ctrl-d for amsn-0.9x logging.basicConfig(level=logging.WARNING) @@ -103,6 +103,9 @@ def loadUI(self, ui_name): self._gui_name = ui_name self._gui = gui.GUIManager(self, self._gui_name) + if not self._gui.gui: + print "Unable to load UI %s" %(self._gui_name,) + self.quit() self._loop = self._gui.gui.aMSNMainLoop(self) self._main = self._gui.gui.aMSNMainWindow(self) self._skin_manager = self._gui.gui.SkinManager(self) @@ -209,10 +212,12 @@ def timerAdd(self, delay, func): self._loop.timerAdd(delay, func) def quit(self): - if self._account is not None: + if self._account: self._account.signOut() - self._loop.quit() + if self._loop: + self._loop.quit() logging.shutdown() + exit(0) # TODO: move to UImanager def addContact(self): diff --git a/amsn2/core/theme_manager.py b/amsn2/core/theme_manager.py index 1bbb61c8..671703c9 100644 --- a/amsn2/core/theme_manager.py +++ b/amsn2/core/theme_manager.py @@ -24,7 +24,8 @@ import os class aMSNThemeManager: - def __init__(self): + def __init__(self, core): + self._core = core self._buttons = {} self._statusicons = {} self._displaypic = {} diff --git a/amsn2/core/views/accountview.py b/amsn2/core/views/accountview.py index 1266bbce..239afd98 100644 --- a/amsn2/core/views/accountview.py +++ b/amsn2/core/views/accountview.py @@ -3,12 +3,13 @@ from stringview import * class AccountView: - def __init__(self): + def __init__(self, core): + self._core = core self.email = None self.password = None self.nick = StringView() self.psm = StringView() - self.presence = 'online' + self.presence = core.Presence.ONLINE self.dp = ImageView() self.save = False @@ -19,7 +20,8 @@ def __init__(self): self.preferred_backend = 'defaultbackend' def __str__(self): - out = "{ email=" + str(self.email) + " presence=" + str(self.presence) + out = "{ email=" + str(self.email) + out += " presence=" + self._core.p2s[self.presence] out += " save=" + str(self.save) + " save_password=" + str(self.save_password) out += " autologin=" + str(self.autologin) + " preferred_ui=" + str(self.preferred_ui) out += " preferred_backend=" + self.preferred_backend + " }" diff --git a/papyon b/papyon index cc69fd6b..b8cf878a 160000 --- a/papyon +++ b/papyon @@ -1 +1 @@ -Subproject commit cc69fd6bb2f6b24ed4ea4c614f5fe88a58db9ec0 +Subproject commit b8cf878a7104b312c787846fecc4c62b21d9a803