Fixing a bug with launching from a fresh system
[quicknote] / src / simple_list.py
index 7e1e511..34849da 100644 (file)
@@ -9,11 +9,13 @@ it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.\r
 """\r
 \r
+import logging\r
 \r
 import pango\r
 import gtk\r
 \r
 import hildonize\r
+import gtk_toolbox\r
 \r
 \r
 try:\r
@@ -22,12 +24,13 @@ except NameError:
        _ = lambda x: x\r
 \r
 \r
-class SimpleList(gtk.ScrolledWindow):\r
+_moduleLogger = logging.getLogger(__name__)\r
+\r
+\r
+class SimpleList(object):\r
        """\r
        Stellt eine einfache Liste mit Laufbalken dar. Das wird mit\r
        den Objekten ScrolledWindow und TreeView erreicht.\r
-\r
-       @todo Decouple SimpleList from scrolled window to be able to hildonize it\r
        """\r
 \r
        KEY_IDX = 0\r
@@ -37,21 +40,13 @@ class SimpleList(gtk.ScrolledWindow):
                """\r
                Initialisieren\r
                """\r
-\r
-               gtk.ScrolledWindow.__init__(self)\r
                self._selectedItem = None # (<Position>, <Key>, <Value>)\r
 \r
-               # Liste\r
-               self._itemlist = gtk.ListStore(str, str)\r
-\r
-               # ScrolledWindow\r
-               self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)\r
-               self.set_shadow_type(gtk.SHADOW_IN)\r
-\r
                # Treeview\r
+               self._itemlist = gtk.ListStore(str, str)\r
                self._itemView = gtk.TreeView(self._itemlist)\r
                self._itemView.set_headers_visible(False)\r
-               self._itemView.get_selection().set_mode(gtk.SELECTION_BROWSE)\r
+               self._itemView.get_selection().set_mode(gtk.SELECTION_SINGLE)\r
                self._itemView.connect("cursor-changed", self._on_cursor_changed)\r
                self._itemView.connect("row-activated", self._on_row_activated)\r
                self._itemView.show()\r
@@ -77,9 +72,23 @@ class SimpleList(gtk.ScrolledWindow):
                # wie ich das möchte. Deshalb habe ich die Suche abgeschaltet.\r
                self._itemView.set_enable_search(False)\r
 \r
-               # Anzeigen\r
-               self.add(self._itemView)\r
-               self.show()\r
+               self._maemo5HackVBox = gtk.VBox()\r
+               self._maemo5HackVBox.pack_start(self._itemView)\r
+               self._maemo5HackViewport = gtk.Viewport()\r
+               self._maemo5HackViewport.add(self._maemo5HackVBox)\r
+\r
+               # ScrolledWindow\r
+               self._scrolledWindow = gtk.ScrolledWindow()\r
+               self._scrolledWindow.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)\r
+               self._scrolledWindow.set_shadow_type(gtk.SHADOW_IN)\r
+               self._scrolledWindow.add(self._maemo5HackViewport)\r
+\r
+               self._scrolledWindow = hildonize.hildonize_scrollwindow(self._scrolledWindow)\r
+               self._scrolledWindow.show()\r
+\r
+       @property\r
+       def widget(self):\r
+               return self._scrolledWindow\r
 \r
        def append_item(self, value, key = ""):\r
                """\r
@@ -121,11 +130,13 @@ class SimpleList(gtk.ScrolledWindow):
                """\r
 \r
                self._itemView.connect("cursor-changed", function)\r
+               self._itemView.connect("row-activated", function)\r
 \r
+       @gtk_toolbox.log_exception(_moduleLogger)\r
        def _on_row_activated(self, treeview, path, view_column, data = None):\r
                """\r
-               Setzt den Wert von self._selectedItems. Dieser Wert kann\r
-               mit der Methode "get_selection_data" abgerufen werden.\r
+               Sets the value of self._selectedItems. This value can\r
+               be retrieved using the method "get_selection_data.\r
                """\r
 \r
                iter = self._itemlist.get_iter(path)\r
@@ -138,10 +149,11 @@ class SimpleList(gtk.ScrolledWindow):
                        self._itemlist.get_value(iter, self.VALUE_IDX) # Value\r
                )\r
 \r
+       @gtk_toolbox.log_exception(_moduleLogger)\r
        def _on_cursor_changed(self, widget, data1 = None, data2 = None):\r
                """\r
-               Setzt den Wert von self._selectedItems. Dieser Wert kann\r
-               mit der Methode "get_selection_data" abgerufen werden.\r
+               Sets the value of self._selectedItems. This value can\r
+               be retrieved using the method "get_selection_data.\r
                """\r
 \r
                selection = widget.get_selection()\r