Filing in what is needed for a todo
[doneit] / src / doneit_glade.py
index 587adbc..a3aee2c 100755 (executable)
@@ -1,5 +1,8 @@
 #!/usr/bin/python
 
+"""
+@todo Add logging support to make debugging random user issues a lot easier
+"""
 
 from __future__ import with_statement
 
@@ -10,6 +13,7 @@ import os
 import threading
 import warnings
 import ConfigParser
+import socket
 
 import gtk
 import gtk.glade
@@ -22,11 +26,14 @@ except ImportError:
 import gtk_toolbox
 
 
+socket.setdefaulttimeout(10)
+
+
 class DoneIt(object):
 
        __pretty_app_name__ = "DoneIt"
        __app_name__ = "doneit"
-       __version__ = "0.3.0"
+       __version__ = "0.3.1"
        __app_magic__ = 0xdeadbeef
 
        _glade_files = [
@@ -63,6 +70,7 @@ class DoneIt(object):
                self._clipboard = gtk.clipboard_get()
                self.__window = self._widgetTree.get_widget("mainWindow")
                self.__errorDisplay = gtk_toolbox.ErrorDisplay(self._widgetTree)
+               self._prefsDialog = gtk_toolbox.PreferencesDialog(self._widgetTree)
 
                self._app = None
                self._isFullScreen = False
@@ -73,7 +81,6 @@ class DoneIt(object):
                        self._app.add_window(self.__window)
                        self._widgetTree.get_widget("usernameentry").set_property('hildon-input-mode', 7)
                        self._widgetTree.get_widget("passwordentry").set_property('hildon-input-mode', 7|(1 << 29))
-                       self._widgetTree.get_widget("projectsCombo").get_child().set_property('hildon-input-mode', (1 << 4))
 
                        gtkMenu = self._widgetTree.get_widget("mainMenubar")
                        menu = gtk.Menu()
@@ -89,7 +96,6 @@ class DoneIt(object):
 
                callbackMapping = {
                        "on_doneit_quit": self._on_close,
-                       "on_paste": self._on_paste,
                        "on_about": self._on_about_activate,
                }
                self._widgetTree.signal_autoconnect(callbackMapping)
@@ -142,7 +148,7 @@ class DoneIt(object):
                # Setup costly backends
                import rtm_view
                with gtk_toolbox.gtk_lock():
-                       rtmView = rtm_view.GtkRtMilk(self._widgetTree)
+                       rtmView = rtm_view.GtkRtMilk(self._widgetTree, self.__errorDisplay)
                self._todoUIs[rtmView.name()] = rtmView
                self._defaultUIName = rtmView.name()
 
@@ -150,6 +156,8 @@ class DoneIt(object):
                config.read(self._user_settings)
                with gtk_toolbox.gtk_lock():
                        self.load_settings(config)
+                       self._widgetTree.get_widget("connectMenuItem").connect("activate", lambda *args: self.switch_ui(self._defaultUIName))
+                       self._widgetTree.get_widget("preferencesMenuItem").connect("activate", self._on_prefs)
 
        def display_error_message(self, msg):
                """
@@ -192,9 +200,9 @@ class DoneIt(object):
                        )
 
                try:
-                       self._switch_ui(activeUIName)
+                       self.switch_ui(activeUIName)
                except KeyError, e:
-                       self._switch_ui(self._defaultUIName)
+                       self.switch_ui(self._defaultUIName)
 
        def save_settings(self, config):
                """
@@ -206,7 +214,13 @@ class DoneIt(object):
                for todoUI in self._todoUIs.itervalues():
                        todoUI.save_settings(config)
 
-       def _switch_ui(self, uiName):
+       def get_uis(self):
+               return (ui for ui in self._todoUIs.iteritems())
+
+       def get_default_ui(self):
+               return self._defaultUIName
+
+       def switch_ui(self, uiName):
                """
                @note UI Thread
                """
@@ -257,10 +271,10 @@ class DoneIt(object):
 
                if status == conic.STATUS_CONNECTED:
                        self._deviceIsOnline = True
-                       self._switch_ui(self._defaultUIName)
+                       self.switch_ui(self._defaultUIName)
                elif status == conic.STATUS_DISCONNECTED:
                        self._deviceIsOnline = False
-                       self._switch_ui(self._fallbackUIName)
+                       self.switch_ui(self._fallbackUIName)
 
        def _on_window_state_change(self, widget, event, *args):
                """
@@ -295,7 +309,14 @@ class DoneIt(object):
 
        def _on_logout(self, *args):
                self._todoUI.logout()
-               self._switch_ui(self._fallbackUIName)
+               self.switch_ui(self._fallbackUIName)
+
+       def _on_prefs(self, *args):
+               self._prefsDialog.enable()
+               try:
+                       self._prefsDialog.run(self)
+               finally:
+                       self._prefsDialog.disable()
 
        def _on_about_activate(self, *args):
                dlg = gtk.AboutDialog()
@@ -303,8 +324,8 @@ class DoneIt(object):
                dlg.set_version(self.__version__)
                dlg.set_copyright("Copyright 2008 - LGPL")
                dlg.set_comments("")
-               dlg.set_website("")
-               dlg.set_authors([""])
+               dlg.set_website("http://doneit.garage.maemo.org")
+               dlg.set_authors(["Ed Page"])
                dlg.run()
                dlg.destroy()