Switching to quicknote style search
authorEd Page <eopage@byu.net>
Sat, 20 Mar 2010 02:16:31 +0000 (21:16 -0500)
committerEd Page <eopage@byu.net>
Sat, 20 Mar 2010 02:16:31 +0000 (21:16 -0500)
src/libbottombar.py
src/multilist_gtk.py

index 46bdcbd..b0df0ef 100644 (file)
@@ -60,15 +60,6 @@ class Bottombar(gtk.HBox):
                label = gtk.Label("  ")
                self.pack_start(label, expand = True, fill = True, padding = 0)
 
-               label = gtk.Label(_("Search:"))
-               self.pack_start(label, expand = False, fill = True, padding = 0)
-               searchEntry = gtk.Entry()
-               searchEntry.connect("changed", self.search_list)
-               self.pack_start(searchEntry, expand = True, fill = True, padding = 0)
-
-               label = gtk.Label("  ")
-               self.pack_start(label, expand = True, fill = True, padding = 0)
-
                button = gtk.Button(_("Checkout all items"))
                button.connect("clicked", self.checkout_items)
                self.pack_start(button, expand = False, fill = True, padding = 0)
@@ -126,10 +117,6 @@ class Bottombar(gtk.HBox):
                        #       #print i
 
        @gtk_toolbox.log_exception(_moduleLogger)
-       def search_list(self, widget = None, data1 = None, data2 = None):
-               self.view.liststorehandler.get_liststore(widget.get_text())
-
-       @gtk_toolbox.log_exception(_moduleLogger)
        def rename_category(self, widget = None, data1 = None, data2 = None):
                dialog = gtk.Dialog(_("New category name:"), None, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, (gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT, gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
 
index 191ed7c..f848e0f 100755 (executable)
@@ -41,6 +41,7 @@ import hildonize
 import gtk_toolbox
 
 import libspeichern
+import search
 import sqldialog
 import libselection
 import libview
@@ -83,6 +84,7 @@ class Multilist(hildonize.get_app_class()):
                self.vbox = gtk.VBox(homogeneous = False, spacing = 0)
 
                self.selection = libselection.Selection(self.db, isHildon)
+               self._search = search.Search()
                self.liststorehandler = libliststorehandler.Liststorehandler(self.db, self.selection)
                self.view = libview.View(self.db, self.liststorehandler, self.window)
                self.bottombar = libbottombar.Bottombar(self.db, self.view, isHildon)
@@ -115,6 +117,16 @@ class Multilist(hildonize.get_app_class()):
                        fileMenuItem.show()
                        fileMenuItem.set_submenu(fileMenu)
 
+                       categorymenu = gtk.Menu()
+
+                       menu_items = gtk.MenuItem(_("Search"))
+                       categorymenu.append(menu_items)
+                       menu_items.connect("activate", self._on_toggle_search)
+
+                       category_menu = gtk.MenuItem(_("Category"))
+                       category_menu.show()
+                       category_menu.set_submenu(categorymenu)
+
                        viewMenu = gtk.Menu()
 
                        menu_items = gtk.MenuItem(_("Show Active"))
@@ -156,6 +168,7 @@ class Multilist(hildonize.get_app_class()):
                        menu_bar.show()
                        menu_bar.append (fileMenuItem)
                        menu_bar.append (toolsMenuItem)
+                       menu_bar.append (category_menu)
                        menu_bar.append (viewMenuItem)
                        # unten -> damit als letztes menu_bar.append (helpMenuItem)
                        #Als letztes menĂ¼
@@ -168,6 +181,7 @@ class Multilist(hildonize.get_app_class()):
                        self.vbox.pack_start(menuBar, False, False, 0)
 
                #add to vbox below (to get it on top)
+               self.vbox.pack_end(self._search, expand = False, fill = True)
                self.vbox.pack_end(self.bottombar, expand = False, fill = True, padding = 0)
                self.vbox.pack_end(self.view, expand = True, fill = True, padding = 0)
                self.vbox.pack_end(self.selection, expand = False, fill = True, padding = 0)
@@ -182,14 +196,6 @@ class Multilist(hildonize.get_app_class()):
                        menu_bar,
                )
                if hildonize.IS_FREMANTLE_SUPPORTED:
-                       renameCategoryButton = gtk.Button(_("Rename Category"))
-                       renameCategoryButton.connect("clicked", self.bottombar.rename_category)
-                       menuBar.append(renameCategoryButton)
-
-                       renameListButton= gtk.Button(_("Rename List"))
-                       renameListButton.connect("clicked", self.bottombar.rename_list)
-                       menuBar.append(renameListButton)
-
                        button = hildonize.hildon.GtkRadioButton(gtk.HILDON_SIZE_AUTO, None)
                        button.set_label("All")
                        menuBar.add_filter(button)
@@ -203,6 +209,18 @@ class Multilist(hildonize.get_app_class()):
                        button.connect("clicked", self._on_click_menu_filter, self.liststorehandler.SHOW_ACTIVE)
                        button.set_mode(False)
 
+                       renameCategoryButton = gtk.Button(_("Rename Category"))
+                       renameCategoryButton.connect("clicked", self.bottombar.rename_category)
+                       menuBar.append(renameCategoryButton)
+
+                       renameListButton= gtk.Button(_("Rename List"))
+                       renameListButton.connect("clicked", self.bottombar.rename_list)
+                       menuBar.append(renameListButton)
+
+                       searchButton= gtk.Button(_("Search Category"))
+                       searchButton.connect("clicked", self._on_toggle_search)
+                       menuBar.append(searchButton)
+
                        menuBar.show_all()
 
                if not hildonize.IS_HILDON_SUPPORTED:
@@ -222,15 +240,31 @@ class Multilist(hildonize.get_app_class()):
                self.window.connect("destroy", self.destroy)
                self.window.connect("key-press-event", self.on_key_press)
                self.window.connect("window-state-event", self.on_window_state_change)
+               self._search.connect("search_changed", self._on_search)
 
                self.window.show_all()
+               self._search.hide()
                self.prepare_sync_dialog()
                self.ladeAlles()
 
        @gtk_toolbox.log_exception(_moduleLogger)
+       def _on_search(self, widget):
+               self.liststorehandler.get_liststore(self._search.get_search_pattern())
+
+       @gtk_toolbox.log_exception(_moduleLogger)
        def _on_click_menu_filter(self, button, val):
                self.liststorehandler.set_filter(val)
 
+       def _toggle_search(self):
+               if self._search.get_property("visible"):
+                       self._search.hide()
+               else:
+                       self._search.show()
+
+       @gtk_toolbox.log_exception(_moduleLogger)
+       def _on_toggle_search(self, *args):
+               self._toggle_search()
+
        @gtk_toolbox.log_exception(_moduleLogger)
        def _on_toggle_filter(self, *args):
                if self.liststorehandler.get_filter() == self.liststorehandler.SHOW_ALL:
@@ -254,9 +288,9 @@ class Multilist(hildonize.get_app_class()):
                        else:
                                self.window.fullscreen ()
                        return True
-               #elif event.keyval == gtk.keysyms.f and isCtrl:
-               #       self._toggle_search()
-               #       return True
+               elif event.keyval == gtk.keysyms.f and isCtrl:
+                       self._toggle_search()
+                       return True
                elif (
                        event.keyval in (gtk.keysyms.w, gtk.keysyms.q) and
                        event.get_state() & gtk.gdk.CONTROL_MASK