Code cleanup, consistency on category availability (I assume it was lazy in creating...
authorepage <eopage@byu.net>
Sat, 9 Jan 2010 16:06:34 +0000 (16:06 +0000)
committerepage <eopage@byu.net>
Sat, 9 Jan 2010 16:06:34 +0000 (16:06 +0000)
git-svn-id: file:///svnroot/quicknote/trunk@107 bb7704e3-badb-4cfa-9ab3-9374dc87eaa2

src/kopfzeile.py
src/notizen.py
src/quicknote_gtk.py
support/builddeb.py

index 94b69da..7a7152f 100644 (file)
@@ -53,17 +53,29 @@ class Kopfzeile(gtk.HBox):
 
                self.load_categories()
 
-       def get_category(self):
+       def get_category_name(self):
                category = self._categorySelectorButton.get_label()
+               assert category != ""
+               return category
+
+       def get_queryable_category(self):
+               category = self.get_category_name()
                if category == self.ALL_CATEGORIES:
                        category = "%"
-               if category == "":
-                       category = self.UNDEFINED_CATEGORY
-                       self._categorySelectorButton.set_label(category)
+               assert category != ""
                return category
 
-       def _get_category_index(self):
-               categoryName = self._categorySelectorButton.get_label()
+       def get_categories(self):
+               return iter(self._categories)
+
+       def _get_this_category_index(self):
+               categoryName = self.get_category_name()
+               try:
+                       return self._categories.index(categoryName)
+               except ValueError:
+                       return -1
+
+       def _get_category_index(self, categoryName):
                try:
                        return self._categories.index(categoryName)
                except ValueError:
@@ -76,40 +88,40 @@ class Kopfzeile(gtk.HBox):
                        window,
                        "Categories",
                        self._categories,
-                       self._categorySelectorButton.get_label(),
+                       self.get_category_name(),
                )
                self.set_category(userSelection)
 
        def set_category(self, categoryName = None):
-               if categoryName is not None and categoryName != self._categorySelectorButton.get_label():
-                       self._categorySelectorButton.set_label(categoryName)
-                       sql = "UPDATE categories SET liste = ? WHERE id = 1"
-                       self._db.speichereSQL(sql, (self._get_category_index(), ))
+               if categoryName is not None:
+                       if not categoryName:
+                               categoryName = self.UNDEFINED_CATEGORY
+                       if categoryName != self.get_category_name():
+                               self.add_category(categoryName)
+                               self._categorySelectorButton.set_label(categoryName)
+                               sql = "UPDATE categories SET liste = ? WHERE id = 1"
+                               self._db.speichereSQL(sql, (self._get_this_category_index(), ))
                self.emit("category_changed")
 
-       def define_this_category(self):
-               category = self.get_category()
-               catIndex = self._get_category_index()
-               cats = self._categories[1:] # Skip ALL_CATEGORIES
-
-               if catIndex == -1 and category != "%":
-                       self._categories.append(category)
-                       sql = "INSERT INTO categories  (id, liste) VALUES (0, ?)"
-                       self._db.speichereSQL(sql, (category, ))
-                       self._categorySelectorButton.set_label(category)
+       def add_category(self, categoryName):
+               if categoryName in self._categories:
+                       return
+               assert "%" not in categoryName, "Not sure, but maybe %s can't be in names"
+               self._categories.append(categoryName)
+               sql = "INSERT INTO categories  (id, liste) VALUES (0, ?)"
+               self._db.speichereSQL(sql, (categoryName, ))
 
        def delete_this_category(self):
-               category = self.get_category()
+               category = self.get_category_name()
+               assert category not in (self.ALL_CATEGORIES, self.UNDEFINED_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, ))
 
-               pos = self._get_category_index()
-               if 1 < pos:
-                       del self._categories[pos]
-                       self._categorySelectorButton.set_label(self.ALL_CATEGORIES)
+               self._categories.remove(category)
+               self.set_category(self.ALL_CATEGORIES)
 
        def load_categories(self):
                sql = "CREATE TABLE categories (id TEXT , liste TEXT)"
@@ -142,4 +154,4 @@ class Kopfzeile(gtk.HBox):
                else:
                        self._categorySelectorButton.set_label(self.UNDEFINED_CATEGORY)
 
-               self._lastCategory = self._get_category_index()
+               self._lastCategory = self._get_this_category_index()
index c3eb0f6..46b3729 100644 (file)
@@ -109,7 +109,7 @@ class Notizen(gtk.HBox):
                _moduleLogger.info("load_notes params: pos:"+str(self._pos)+" noteid:"+str(self.noteId))
                self._noteslist.clear_items()
 
-               self._categoryName = self._category.get_category()
+               self._categoryName = self._category.get_queryable_category()
                search = self._search.get_search_pattern()
                notes = self._db.searchNotes(search, self._categoryName)
 
@@ -144,8 +144,6 @@ class Notizen(gtk.HBox):
                else:
                        self._db.saveNote(self.noteId, buf, self._categoryName)
 
-               self._category.define_this_category()
-
        def show_history(self, *args):
                if self.noteId == -1:
                        mbox =  gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, _("No note selected."))
index 50ed601..299d178 100644 (file)
@@ -380,19 +380,28 @@ class QuicknoteProgram(hildonize.get_app_class()):
                sql = "SELECT id, liste FROM categories WHERE id = 0 ORDER BY liste"
                rows = self._db.ladeSQL(sql)
 
-               selectableCategories = [row[1] for row in rows]
-               selectableCategories[0:0] = [self._category.UNDEFINED_CATEGORY]
-
-               newIndex = hildonize.touch_selector(self._window, "Move to", selectableCategories, 0)
-               cat_id = selectableCategories[newIndex]
+               selectableCategories = list(self._category.get_categories())
+               selectableCategories.remove(self._category.ALL_CATEGORIES)
+               currentCategory = self._category.get_category_name()
+               if currentCategory == self._category.ALL_CATEGORIES:
+                       currentCategory = selectableCategories[0]
+
+               newCategory = hildonize.touch_selector_entry(
+                       self._window, "Move to", selectableCategories, currentCategory
+               )
 
+               self._category.add_category(newCategory)
                noteid, pcdatum, category, note = self._db.loadNote(self._notizen.noteId)
-               self._db.saveNote(noteid, note, cat_id, pcdatum = None)
-               self._category.set_category() # force it to update
+               self._db.saveNote(noteid, note, newCategory, pcdatum = None)
+               self._category.set_category() # HACK force it to update
 
        @gtk_toolbox.log_exception(_moduleLogger)
        def _on_delete_category(self, *args):
-               if self._category.get_category() == "%" or self._category.get_category() == "undefined":
+               if (
+                       self._category.get_category_name() in (
+                               self._category.ALL_CATEGORIES, self._category.UNDEFINED_CATEGORY
+                       )
+               ):
                        mbox = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("This category can not be deleted"))
                        try:
                                response = mbox.run()
index 193dcc4..bd29e63 100755 (executable)
@@ -28,6 +28,7 @@ __changelog__ = """
  * Deleting empty notes no longer prompts the user
  * Cleaned up the history dialog a smidge
  * Ctrl+w/q to quit
+ * Bug fix: not very consistent when a category is visible in dialogs
 
 0.7.9
  * UI Tweak: Removed "New Note..." due to weirdness and duplicated behavior