From: epage Date: Sat, 9 Jan 2010 16:06:34 +0000 (+0000) Subject: Code cleanup, consistency on category availability (I assume it was lazy in creating... X-Git-Url: http://git.maemo.org/git/?p=quicknote;a=commitdiff_plain;h=67091fc14ae79b74498c85ee75d2ecf1003e775a;hp=e7ed3fe45e917216b7365e585af670c3f6f2a920 Code cleanup, consistency on category availability (I assume it was lazy in creating categories due to the old UI), and able to create categories on note move git-svn-id: file:///svnroot/quicknote/trunk@107 bb7704e3-badb-4cfa-9ab3-9374dc87eaa2 --- diff --git a/src/kopfzeile.py b/src/kopfzeile.py index 94b69da..7a7152f 100644 --- a/src/kopfzeile.py +++ b/src/kopfzeile.py @@ -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() diff --git a/src/notizen.py b/src/notizen.py index c3eb0f6..46b3729 100644 --- a/src/notizen.py +++ b/src/notizen.py @@ -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.")) diff --git a/src/quicknote_gtk.py b/src/quicknote_gtk.py index 50ed601..299d178 100644 --- a/src/quicknote_gtk.py +++ b/src/quicknote_gtk.py @@ -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() diff --git a/support/builddeb.py b/support/builddeb.py index 193dcc4..bd29e63 100755 --- a/support/builddeb.py +++ b/support/builddeb.py @@ -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