Adding panning
[multilist] / src / libview.py
index 54df46e..573901f 100644 (file)
@@ -20,6 +20,7 @@ along with Multilist.  If not, see <http://www.gnu.org/licenses/>.
 Copyright (C) 2008 Christoph Würstle
 """
 
+import sys
 import logging
 
 import gobject
@@ -197,7 +198,13 @@ class View(gtk.VBox):
 
                logging.info("libview, init")
 
-               self.scrolled_window = None
+               self.treeview = None
+               self.scrolled_window = gtk.ScrolledWindow()
+               self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+               self.pack_start(self.scrolled_window, expand = True, fill = True, padding = 0)
+
+               self.scrolled_window = hildonize.hildonize_scrollwindow(self.scrolled_window)
+
                self.reload_view()
 
        def loadList(self):
@@ -216,6 +223,8 @@ class View(gtk.VBox):
                self.modelsort = gtk.TreeModelSort(self.liststorehandler.get_liststore())
                self.modelsort.set_sort_column_id(2, gtk.SORT_ASCENDING)
 
+               if self.treeview is not None:
+                       self.scrolled_window.remove(self.treeview)
                self.treeview = gtk.TreeView(self.modelsort)
                self.treeview.set_headers_visible(True)
                self.treeview.set_reorderable(False)
@@ -226,23 +235,34 @@ class View(gtk.VBox):
                m = self.liststorehandler.get_unitsstore()
 
                for i in range(self.liststorehandler.get_colcount()):
-                       if i in [1, 2]:
+                       if i in [1, 2]: # status, title
                                default = "1"
                        else:
                                default = "0"
                        if self.db.ladeDirekt("showcol_"+str(self.liststorehandler.get_colname(i)), default) == "1":
-                               if i in [1]:
+                               if i in [1]: # status
                                        # HACK Hildon has theme issues with inconsistent items, so
                                        # we have a hacked together toggle to make it work on
                                        # hildon
-                                       if hildonize.IS_HILDON:
+                                       if hildonize.IS_HILDON_SUPPORTED:
                                                self.cell[i] = CellRendererTriple()
                                        else:
                                                self.cell[i] = TripleToggleCellRenderer()
                                        self.cell[i].connect('status_changed', self._on_col_toggled)
                                        self.tvcolumn[i] = gtk.TreeViewColumn("", self.cell[i])
                                        self.tvcolumn[i].set_attributes( self.cell[i], status = i)
-                               elif i in [3, 6]:
+                               elif i in [3, 5]: # quantity, price
+                                       self.cell[i] = gtk.CellRendererSpin()
+                                       adjustment = gtk.Adjustment(0, -sys.float_info.max, sys.float_info.max, 1)
+                                       self.cell[i].set_property('adjustment', adjustment)
+                                       self.cell[i].set_property('digits', 2 if i == 5 else 0)
+                                       self.cell[i].set_property('editable', True)
+                                       self.cell[i].connect("edited", self._on_col_edited, i)
+                                       self.tvcolumn[i] = gtk.TreeViewColumn(
+                                               self.liststorehandler.get_colname(i), self.cell[i]
+                                       )
+                                       self.tvcolumn[i].set_attributes( self.cell[i], text = i)
+                               elif i in [4, 6]: # unit, priority
                                        self.cell[i] = gtk.CellRendererCombo()
                                        self.cell[i].set_property("model", m)
                                        self.cell[i].set_property('text-column', i)
@@ -266,14 +286,7 @@ class View(gtk.VBox):
                                self.tvcolumn[i].set_resizable(True)
                                self.treeview.append_column(self.tvcolumn[i])
 
-               if self.scrolled_window is not None:
-                       self.scrolled_window.destroy()
-
-               self.scrolled_window = gtk.ScrolledWindow()
-               self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
-
                self.scrolled_window.add(self.treeview)
-               self.pack_start(self.scrolled_window, expand = True, fill = True, padding = 0)
                self.loadList()
 
                self.show_all()