self._messagesViews = None
self._recentViews = None
self._contactsViews = None
+ self._originalCurrentLabels = []
for path in self._glade_files:
if os.path.isfile(path):
}
self._widgetTree.signal_autoconnect(callbackMapping)
- self._originalCurrentLabel = ""
with gtk_toolbox.gtk_lock():
- self._backup_tab_name()
+ self._originalCurrentLabels = [
+ self._notebook.get_tab_label(self._notebook.get_nth_page(pageIndex)).get_text()
+ for pageIndex in xrange(self._notebook.get_n_pages())
+ ]
self._notebookTapHandler = gtk_toolbox.TapOrHold(self._notebook)
self._notebookTapHandler.enable()
self._notebookTapHandler.on_tap = self._reset_tab_refresh
self.load_settings(config)
self._spawn_attempt_login(2)
- except StandardError, e:
- warnings.warn(e.message, UserWarning, 2)
- except BaseException, e:
- try:
- warnings.warn(e.message, UserWarning, 2)
- finally:
- raise
+ except Exception, e:
+ with gtk_toolbox.gtk_lock():
+ self._errorDisplay.push_exception(e)
def attempt_login(self, numOfAttempts = 10, force = False):
"""
def _on_notebook_switch_page(self, notebook, page, pageIndex):
self._reset_tab_refresh()
- self._backup_tab_name(pageIndex)
if pageIndex == self.RECENT_TAB:
self._recentViews[self._selectedBackendId].update()
elif pageIndex == self.MESSAGES_TAB:
elif pageIndex == self.ACCOUNT_TAB:
self._accountViews[self._selectedBackendId].update()
- def _backup_tab_name(self, pageIndex = -1):
- if pageIndex == -1:
- pageIndex = self._notebook.get_current_page()
- child = self._notebook.get_nth_page(pageIndex)
- self._originalCurrentLabel = self._notebook.get_tab_label(child).get_text()
-
def _set_tab_refresh(self, *args):
pageIndex = self._notebook.get_current_page()
child = self._notebook.get_nth_page(pageIndex)
def _reset_tab_refresh(self, *args):
pageIndex = self._notebook.get_current_page()
child = self._notebook.get_nth_page(pageIndex)
- self._notebook.get_tab_label(child).set_text(self._originalCurrentLabel)
+ self._notebook.get_tab_label(child).set_text(self._originalCurrentLabels[pageIndex])
return False
def _on_tab_refresh(self, *args):
self._dialog.response(gtk.RESPONSE_CANCEL)
+def safecall(f, errorDisplay=None, default=None, exception=Exception):
+ '''
+ Returns modified f. When the modified f is called and throws an
+ exception, the default value is returned
+ '''
+ def _safecall(*args, **argv):
+ try:
+ return f(*args,**argv)
+ except exception, e:
+ if errorDisplay is not None:
+ errorDisplay.push_exception(e)
+ return default
+ return _safecall
+
+
class ErrorDisplay(object):
def __init__(self, widgetTree):
userMessage = str(exception)
warningMessage = str(exception)
self.push_message(userMessage)
- warnings.warn(warningMessage, stacklevel=3)
+ warnings.warn(warningMessage, stacklevel=2)
def pop_message(self):
if 0 < len(self.__messages):