PARTIAL COMMIT: Got most of the stuff in place to switch category selection over...
authorepage <eopage@byu.net>
Sat, 9 Jan 2010 02:14:55 +0000 (02:14 +0000)
committerepage <eopage@byu.net>
Sat, 9 Jan 2010 02:14:55 +0000 (02:14 +0000)
git-svn-id: file:///svnroot/quicknote/trunk@99 bb7704e3-badb-4cfa-9ab3-9374dc87eaa2

src/kopfzeile.py
src/notizen.py
src/quicknote_gtk.py

index d3dc00b..a1d00c4 100644 (file)
@@ -15,6 +15,8 @@ import logging
 import gobject
 import gtk
 
+import gtk_toolbox
+import hildonize
 
 try:
        _
@@ -31,15 +33,18 @@ class Kopfzeile(gtk.HBox):
        """
 
        __gsignals__ = {
-               'reload_notes' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()),
+               'category_changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()),
        }
 
+       ALL_CATEGORIES = _("all")
+       UNDEFINED_CATEGORY = "undefined"
+
        def __init__(self, db):
                self._lastCategory = ""
                self._db = db
 
-               gtk.HBox.__init__(self, homogeneous = False, spacing = 3)
                _moduleLogger.info("libkopfzeile, init")
+               gtk.HBox.__init__(self, homogeneous = False, spacing = 3)
 
                categoryHBox = gtk.HBox()
                self.pack_start(categoryHBox, expand = False, fill = True, padding = 0)
@@ -47,6 +52,11 @@ class Kopfzeile(gtk.HBox):
                label = gtk.Label(_("Category:  "))
                categoryHBox.pack_start(label, expand = False, fill = True, padding = 0)
 
+               self._categories = [self.ALL_CATEGORIES, self.UNDEFINED_CATEGORY]
+               self._categorySelectorButton = gtk.Button(self.UNDEFINED_CATEGORY)
+               self._categorySelectorButton.connect("clicked", self._on_category_selector)
+               #categoryHBox.pack_start(self._categorySelectorButton)
+
                self.categoryCombo = gtk.combo_box_entry_new_text()
                categoryHBox.pack_start(self.categoryCombo, expand = True, fill = True, padding = 0)
                self.load_categories()
@@ -62,28 +72,46 @@ class Kopfzeile(gtk.HBox):
                searchHBox.pack_start(self._searchEntry, expand = True, fill = True, padding = 0)
                self._searchEntry.connect("changed", self.search_entry_changed, None)
 
+       def get_category(self):
+               entry = self.categoryCombo.get_child()
+               category = entry.get_text()
+               if category == self.ALL_CATEGORIES:
+                       category = "%"
+               if category == "":
+                       category = self.UNDEFINED_CATEGORY
+                       self._categorySelectorButton.set_label(category)
+                       self.categoryCombo.set_active(1)
+                       self.categoryCombo.show()
+               return category
+
+       @gtk_toolbox.log_exception(_moduleLogger)
+       def _on_category_selector(self, *args):
+               window = gtk_toolbox.find_parent_window(self)
+               userSelection = hildonize.touch_selector_entry(
+                       window,
+                       "Categories",
+                       self._categories,
+                       self._categorySelectorButton.get_label(),
+               )
+               if userSelection == self._categorySelectorButton.get_label():
+                       return
+
+               sql = "UPDATE categories SET liste = ? WHERE id = 1"
+               self._db.speichereSQL(sql, (self.categoryCombo.get_active(), ))
+
+               self.emit("category_changed")
+
        def category_combo_changed(self, widget = None, data = None):
                _moduleLogger.debug("comboCategoryChanged")
                if self._lastCategory != self.categoryCombo.get_active():
                        sql = "UPDATE categories SET liste = ? WHERE id = 1"
                        self._db.speichereSQL(sql, (self.categoryCombo.get_active(), ))
 
-               self.emit("reload_notes")
+               self.emit("category_changed")
 
        def search_entry_changed(self, widget = None, data = None):
                _moduleLogger.debug("search_entry_changed")
-               self.emit("reload_notes")
-
-       def get_category(self):
-               entry = self.categoryCombo.get_child()
-               category = entry.get_text()
-               if category == _("all"):
-                       category = "%"
-               if category == "":
-                       category = "undefined"
-                       self.categoryCombo.set_active(1)
-                       self.categoryCombo.show()
-               return category
+               self.emit("category_changed")
 
        def define_this_category(self):
                category = self.get_category()
@@ -101,9 +129,25 @@ class Kopfzeile(gtk.HBox):
 
                if active == -1 and category != "%":
                        self.categoryCombo.append_text(category)
+                       self._categories.append(category)
                        sql = "INSERT INTO categories  (id, liste) VALUES (0, ?)"
                        self._db.speichereSQL(sql, (category, ))
                        self.categoryCombo.set_active(i)
+                       self._categorySelectorButton.set_label(category)
+
+       def delete_this_category(self):
+               category = self.get_category()
+
+               sql = "UPDATE notes SET category = ? WHERE category = ?"
+               self._db.speichereSQL(sql, (self.UNDEFINED_CATEGORY, category))
+               sql = "DELETE FROM categories WHERE liste = ?"
+               self._db.speichereSQL(sql, (category, ))
+               model = self.categoryCombo.get_model()
+               pos = self.categoryCombo.get_active()
+               if 1 < pos:
+                       self.categoryCombo.remove_text(pos)
+                       self.categoryCombo.set_active(0)
+                       self._categorySelectorButton.set_label(self.ALL_CATEGORIES)
 
        def get_search_pattern(self):
                return self._searchEntry.get_text()
@@ -128,19 +172,24 @@ class Kopfzeile(gtk.HBox):
                #self.categoryCombo.clear()
                while 0 < len(self.categoryCombo.get_model()):
                        self.categoryCombo.remove_text(0)
+               del self._categories[2:]
 
-               self.categoryCombo.append_text(_('all'))
-               self.categoryCombo.append_text('undefined')
+               self.categoryCombo.append_text(self.ALL_CATEGORIES)
+               self.categoryCombo.append_text(self.UNDEFINED_CATEGORY)
 
-               if cats is not None and 0 < len(cats):
+               if cats is not None:
                        for cat in cats:
                                self.categoryCombo.append_text(cat)
+                               self._categories.append(cat)
 
                sql = "SELECT * FROM categories WHERE id = 1"
                rows = self._db.ladeSQL(sql)
                if rows is not None and 0 < len(rows):
-                       self.categoryCombo.set_active(int(rows[0][1]))
+                       index = int(rows[0][1])
+                       self.categoryCombo.set_active(index)
+                       self._categorySelectorButton.set_label(self._categories[index])
                else:
                        self.categoryCombo.set_active(1)
+                       self._categorySelectorButton.set_label(self.UNDEFINED_CATEGORY)
 
                self._lastCategory = self.categoryCombo.get_active()
index ae1cdb7..95ed016 100644 (file)
@@ -92,7 +92,7 @@ class Notizen(gtk.HBox):
                self.pack_start(noteVbox, expand = True, fill = True, padding = 3)
 
                self.load_notes()
-               self._topBox.connect("reload_notes", self.load_notes)
+               self._topBox.connect("category_changed", self.load_notes)
 
        def set_wordwrap(self, enableWordWrap):
                if enableWordWrap:
index f3daff4..162782b 100644 (file)
@@ -416,25 +416,21 @@ class QuicknoteProgram(hildonize.get_app_class()):
        def _on_delete_category(self, *args):
                if self._topBox.get_category() == "%" or self._topBox.get_category() == "undefined":
                        mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("This category can not be deleted"))
-                       response = mbox.run()
-                       mbox.hide()
-                       mbox.destroy()
+                       try:
+                               response = mbox.run()
+                       finally:
+                               mbox.hide()
+                               mbox.destroy()
                        return
 
                mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_WARNING, gtk.BUTTONS_YES_NO, _("Are you sure to delete the current category?"))
-               response = mbox.run()
-               mbox.hide()
-               mbox.destroy()
+               try:
+                       response = mbox.run()
+               finally:
+                       mbox.hide()
+                       mbox.destroy()
                if response == gtk.RESPONSE_YES:
-                       sql = "UPDATE notes SET category = ? WHERE category = ?"
-                       self._db.speichereSQL(sql, ("undefined", self._topBox.get_category()))
-                       sql = "DELETE FROM categories WHERE liste = ?"
-                       self._db.speichereSQL(sql, (self._topBox.get_category(), ))
-                       model = self._topBox.categoryCombo.get_model()
-                       pos = self._topBox.categoryCombo.get_active()
-                       if (pos>1):
-                               self._topBox.categoryCombo.remove_text(pos)
-                               self._topBox.categoryCombo.set_active(0)
+                       self._topBox.delete_this_category()
 
        @gtk_toolbox.log_exception(_moduleLogger)
        def _on_sync_finished(self, data = None, data2 = None):