Consolidating handling of code between projects
authorepage <eopage@byu.net>
Fri, 10 Apr 2009 20:57:33 +0000 (20:57 +0000)
committerepage <eopage@byu.net>
Fri, 10 Apr 2009 20:57:33 +0000 (20:57 +0000)
git-svn-id: file:///svnroot/ejpi/trunk@28 df6cc7de-23d0-4ae0-bb86-c17aa67b2a9d

src/ejpi_glade.py
src/gtk_toolbox.py [new file with mode: 0644]
src/history.py

index 507a345..5fb1739 100755 (executable)
@@ -41,6 +41,7 @@ from libraries import gtkpieboard
 import plugin_utils
 import history
 import gtkhistory
+import gtk_toolbox
 
 
 PLUGIN_SEARCH_PATHS = [
@@ -93,46 +94,6 @@ class ValueEntry(object):
        value = property(get_value, set_value, clear)
 
 
-class ErrorDisplay(history.ErrorReporting):
-
-       def __init__(self, widgetTree):
-               super(ErrorDisplay, self).__init__()
-               self.__errorBox = widgetTree.get_widget("errorEventBox")
-               self.__errorDescription = widgetTree.get_widget("errorDescription")
-               self.__errorClose = widgetTree.get_widget("errorClose")
-               self.__parentBox = self.__errorBox.get_parent()
-
-               self.__errorBox.connect("button_release_event", self._on_close)
-
-               self.__messages = []
-               self.__parentBox.remove(self.__errorBox)
-
-       def push_message(self, message):
-               if 0 < len(self.__messages):
-                       self.__messages.append(message)
-               else:
-                       self.__show_message(message)
-
-       def pop_message(self):
-               if 0 < len(self.__messages):
-                       self.__show_message(self.__messages[0])
-                       del self.__messages[0]
-               else:
-                       self.__hide_message()
-
-       def _on_close(self, *args):
-               self.pop_message()
-
-       def __show_message(self, message):
-               self.__errorDescription.set_text(message)
-               self.__parentBox.pack_start(self.__errorBox, False, False)
-               self.__parentBox.reorder_child(self.__errorBox, 1)
-
-       def __hide_message(self):
-               self.__errorDescription.set_text("")
-               self.__parentBox.remove(self.__errorBox)
-
-
 class Calculator(object):
 
        __pretty_app_name__ = "e**(j pi) + 1 = 0"
@@ -216,7 +177,7 @@ class Calculator(object):
                else:
                        pass # warnings.warn("No Hildon", UserWarning, 2)
 
-               self.__errorDisplay = ErrorDisplay(self._widgetTree)
+               self.__errorDisplay = gtk_toolbox.ErrorDisplay(self._widgetTree)
                self.__userEntry = ValueEntry(self._widgetTree.get_widget("entryView"))
                self.__stackView = self._widgetTree.get_widget("historyView")
 
@@ -340,6 +301,9 @@ class Calculator(object):
                        self._isFullScreen = False
 
        def _on_close(self, *args, **kwds):
+               if self._osso is not None:
+                       self._osso.close()
+
                try:
                        self.__save_history()
                finally:
diff --git a/src/gtk_toolbox.py b/src/gtk_toolbox.py
new file mode 100644 (file)
index 0000000..ef8805d
--- /dev/null
@@ -0,0 +1,95 @@
+#!/usr/bin/python
+
+import warnings
+
+import gobject
+import gtk
+
+
+class ErrorDisplay(object):
+
+       def __init__(self, widgetTree):
+               super(ErrorDisplay, self).__init__()
+               self.__errorBox = widgetTree.get_widget("errorEventBox")
+               self.__errorDescription = widgetTree.get_widget("errorDescription")
+               self.__errorClose = widgetTree.get_widget("errorClose")
+               self.__parentBox = self.__errorBox.get_parent()
+
+               self.__errorBox.connect("button_release_event", self._on_close)
+
+               self.__messages = []
+               self.__parentBox.remove(self.__errorBox)
+
+       def push_message_with_lock(self, message):
+               gtk.gdk.threads_enter()
+               try:
+                       self.push_message(message)
+               finally:
+                       gtk.gdk.threads_leave()
+
+       def push_message(self, message):
+               if 0 < len(self.__messages):
+                       self.__messages.append(message)
+               else:
+                       self.__show_message(message)
+
+       def push_exception(self, exception):
+               self.push_message(exception.message)
+               warnings.warn(exception, stacklevel=3)
+
+       def pop_message(self):
+               if 0 < len(self.__messages):
+                       self.__show_message(self.__messages[0])
+                       del self.__messages[0]
+               else:
+                       self.__hide_message()
+
+       def _on_close(self, *args):
+               self.pop_message()
+
+       def __show_message(self, message):
+               self.__errorDescription.set_text(message)
+               self.__parentBox.pack_start(self.__errorBox, False, False)
+               self.__parentBox.reorder_child(self.__errorBox, 1)
+
+       def __hide_message(self):
+               self.__errorDescription.set_text("")
+               self.__parentBox.remove(self.__errorBox)
+
+
+class MessageBox(gtk.MessageDialog):
+
+       def __init__(self, message):
+               parent = None
+               gtk.MessageDialog.__init__(
+                       self,
+                       parent,
+                       gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT,
+                       gtk.MESSAGE_ERROR,
+                       gtk.BUTTONS_OK,
+                       message,
+               )
+               self.set_default_response(gtk.RESPONSE_OK)
+               self.connect('response', self._handle_clicked)
+
+       def _handle_clicked(self, *args):
+               self.destroy()
+
+
+class MessageBox2(gtk.MessageDialog):
+
+       def __init__(self, message):
+               parent = None
+               gtk.MessageDialog.__init__(
+                       self,
+                       parent,
+                       gtk.DIALOG_DESTROY_WITH_PARENT,
+                       gtk.MESSAGE_ERROR,
+                       gtk.BUTTONS_OK,
+                       message,
+               )
+               self.set_default_response(gtk.RESPONSE_OK)
+               self.connect('response', self._handle_clicked)
+
+       def _handle_clicked(self, *args):
+               self.destroy()
index bf0014d..999a0be 100644 (file)
@@ -40,37 +40,6 @@ def parse_number(userInput):
        raise ValueError('Cannot parse "%s" as a number' % userInput)
 
 
-class ErrorReporting(object):
-
-       def push_message(self, message):
-               raise NotImplementedError
-
-       def push_exception(self, exception):
-               self.push_message(exception.message)
-               warnings.warn(exception, stacklevel=3)
-
-       def pop_message(self):
-               raise NotImplementedError
-
-
-class ErrorIgnore(ErrorReporting):
-
-       def push_message(self, message):
-               pass
-
-       def pop_message(self):
-               pass
-
-
-class ErrorWarning(ErrorReporting):
-
-       def push_message(self, message):
-               warnings.warn(message, stacklevel=2)
-
-       def pop_message(self):
-               pass
-
-
 class AbstractHistory(object):
        """
        Is it just me or is this class name begging for some jokes?