X-Git-Url: http://git.maemo.org/git/?p=gc-dialer;a=blobdiff_plain;f=src%2Fgtk_toolbox.py;h=575da00dc2bf8fe13d3175919e191c30607fb4ea;hp=16c49c634145991c68a88bb19a479926f70d377d;hb=f40854ec9cdac528f81ca2414d202d980cd486df;hpb=09ab0b4769d267e9ab8b98f549b6def319d68c96 diff --git a/src/gtk_toolbox.py b/src/gtk_toolbox.py index 16c49c6..575da00 100644 --- a/src/gtk_toolbox.py +++ b/src/gtk_toolbox.py @@ -6,10 +6,10 @@ import os import errno import sys import time -import traceback +import itertools import functools import contextlib -import warnings +import logging import threading import Queue @@ -17,6 +17,34 @@ import gobject import gtk +_moduleLogger = logging.getLogger("gtk_toolbox") + + +def get_screen_orientation(): + width, height = gtk.gdk.get_default_root_window().get_size() + if width < height: + return gtk.ORIENTATION_VERTICAL + else: + return gtk.ORIENTATION_HORIZONTAL + + +def orientation_change_connect(handler, *args): + """ + @param handler(orientation, *args) -> None(?) + """ + initialScreenOrientation = get_screen_orientation() + orientationAndArgs = list(itertools.chain((initialScreenOrientation, ), args)) + + def _on_screen_size_changed(screen): + newScreenOrientation = get_screen_orientation() + if newScreenOrientation != orientationAndArgs[0]: + orientationAndArgs[0] = newScreenOrientation + handler(*orientationAndArgs) + + rootScreen = gtk.gdk.get_default_root_window() + return gtk.connect(rootScreen, "size-changed", _on_screen_size_changed) + + @contextlib.contextmanager def flock(path, timeout=-1): WAIT_FOREVER = -1 @@ -189,8 +217,9 @@ def comap(function, target): item = yield mappedItem = function(*item) target.send(mappedItem) - except StandardError, e: - target.throw(e.__class__, e.message) + except Exception, e: + _moduleLogger.exception("Forwarding exception!") + target.throw(e.__class__, str(e)) def _flush_queue(queue): @@ -215,7 +244,7 @@ def queue_sink(queue): try: item = yield queue.put((None, item)) - except StandardError, e: + except Exception, e: queue.put((e.__class__, str(e))) except GeneratorExit: queue.put((GeneratorExit, None)) @@ -274,11 +303,8 @@ class LoginWindow(object): self._serviceCombo.add_attribute(cell, 'text', 1) self._serviceCombo.set_active(0) - callbackMapping = { - "on_loginbutton_clicked": self._on_loginbutton_clicked, - "on_loginclose_clicked": self._on_loginclose_clicked, - } - widgetTree.signal_autoconnect(callbackMapping) + widgetTree.get_widget("loginbutton").connect("clicked", self._on_loginbutton_clicked) + widgetTree.get_widget("logins_close_button").connect("clicked", self._on_loginclose_clicked) def request_credentials(self, parentWindow = None, @@ -389,31 +415,25 @@ class ErrorDisplay(object): self.push_message(message) def push_message(self, message): - if 0 < len(self.__messages): - self.__messages.append(message) - else: + self.__messages.append(message) + if 1 == len(self.__messages): self.__show_message(message) - def push_exception_with_lock(self, exception = None, stacklevel=3): + def push_exception_with_lock(self): with gtk_lock(): - self.push_exception(exception, stacklevel=stacklevel) + self.push_exception() - def push_exception(self, exception = None, stacklevel=2): - if exception is None: - userMessage = str(sys.exc_value) - warningMessage = str(traceback.format_exc()) - else: - userMessage = str(exception) - warningMessage = str(exception) + def push_exception(self): + userMessage = str(sys.exc_info()[1]) self.push_message(userMessage) - warnings.warn(warningMessage, stacklevel=stacklevel) + _moduleLogger.exception(userMessage) def pop_message(self): - if 0 < len(self.__messages): - self.__show_message(self.__messages[0]) - del self.__messages[0] - else: + del self.__messages[0] + if 0 == len(self.__messages): self.__hide_message() + else: + self.__errorDescription.set_text(self.__messages[0]) def _on_close(self, *args): self.pop_message() @@ -445,11 +465,8 @@ class DummyErrorDisplay(object): self.__show_message(message) def push_exception(self, exception = None): - if exception is None: - warningMessage = traceback.format_exc() - else: - warningMessage = exception - warnings.warn(warningMessage, stacklevel=3) + userMessage = str(sys.exc_value) + _moduleLogger.exception(userMessage) def pop_message(self): if 0 < len(self.__messages): @@ -457,7 +474,7 @@ class DummyErrorDisplay(object): del self.__messages[0] def __show_message(self, message): - warnings.warn(message, stacklevel=2) + _moduleLogger.debug(message) class MessageBox(gtk.MessageDialog): @@ -530,8 +547,8 @@ class PopupCalendar(object): try: self._calendar.select_month(self._displayDate.month, self._displayDate.year) self._calendar.select_day(self._displayDate.day) - except StandardError, e: - warnings.warn(e.message) + except Exception, e: + _moduleLogger.exception(e) class QuickAddView(object): @@ -581,7 +598,7 @@ class QuickAddView(object): self._taskNameEntry.set_text("") self._signalSink.stage.send(("add", name)) - except StandardError, e: + except Exception, e: self._errorDisplay.push_exception() def _on_add_edit(self, *args): @@ -590,13 +607,13 @@ class QuickAddView(object): self._taskNameEntry.set_text("") self._signalSink.stage.send(("add-edit", name)) - except StandardError, e: + except Exception, e: self._errorDisplay.push_exception() def _on_add_pressed(self, widget): try: self._addToEditTimerId = gobject.timeout_add(1000, self._on_add_edit) - except StandardError, e: + except Exception, e: self._errorDisplay.push_exception() def _on_add_released(self, widget): @@ -604,7 +621,7 @@ class QuickAddView(object): if self._addToEditTimerId is not None: gobject.source_remove(self._addToEditTimerId) self._addToEditTimerId = None - except StandardError, e: + except Exception, e: self._errorDisplay.push_exception() def _on_paste(self, *args): @@ -614,13 +631,13 @@ class QuickAddView(object): if addedText: entry += addedText self._taskNameEntry.set_text(entry) - except StandardError, e: + except Exception, e: self._errorDisplay.push_exception() def _on_clear(self, *args): try: self._taskNameEntry.set_text("") - except StandardError, e: + except Exception, e: self._errorDisplay.push_exception()