From 8c7b4b28649f686a455948ee70ac126ae56b1f5b Mon Sep 17 00:00:00 2001 From: epage Date: Sat, 9 Jan 2010 02:14:55 +0000 Subject: [PATCH] PARTIAL COMMIT: Got most of the stuff in place to switch category selection over to a touch selector entry git-svn-id: file:///svnroot/quicknote/trunk@99 bb7704e3-badb-4cfa-9ab3-9374dc87eaa2 --- src/kopfzeile.py | 87 +++++++++++++++++++++++++++++++++++++++----------- src/notizen.py | 2 +- src/quicknote_gtk.py | 26 +++++++-------- 3 files changed, 80 insertions(+), 35 deletions(-) diff --git a/src/kopfzeile.py b/src/kopfzeile.py index d3dc00b..a1d00c4 100644 --- a/src/kopfzeile.py +++ b/src/kopfzeile.py @@ -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() diff --git a/src/notizen.py b/src/notizen.py index ae1cdb7..95ed016 100644 --- a/src/notizen.py +++ b/src/notizen.py @@ -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: diff --git a/src/quicknote_gtk.py b/src/quicknote_gtk.py index f3daff4..162782b 100644 --- a/src/quicknote_gtk.py +++ b/src/quicknote_gtk.py @@ -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): -- 1.7.9.5