From 27802cf42750d43ad00230a7b5dcd82580c486d9 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Wed, 10 May 2006 19:56:59 +0000 Subject: [PATCH] better search buttons svn: r6609 --- src/Filters/_SearchBar.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/Filters/_SearchBar.py b/src/Filters/_SearchBar.py index 589658d93..98630445c 100644 --- a/src/Filters/_SearchBar.py +++ b/src/Filters/_SearchBar.py @@ -43,6 +43,7 @@ class SearchBar: self.on_apply_callback = on_apply self.apply_done_callback = apply_done self.uistate = uistate + self.apply_text = '' def build( self): self.filterbar = gtk.HBox() @@ -51,13 +52,20 @@ class SearchBar: self.filter_text = gtk.Entry() self.filter_text.connect('key-press-event',self.key_press) + self.filter_text.connect('changed',self.text_changed) self.filter_button = gtk.Button(stock=gtk.STOCK_FIND) self.filter_button.connect( 'clicked',self.apply_filter_clicked) + self.filter_button.set_sensitive(False) + + self.clear_button = gtk.Button(stock=gtk.STOCK_CLEAR) + self.clear_button.connect( 'clicked',self.apply_clear) + self.clear_button.set_sensitive(False) self.filterbar.pack_start(self.filter_list,False) self.filterbar.pack_start(self.filter_text,True) self.filterbar.pack_end(self.filter_button,False) + self.filterbar.pack_end(self.clear_button,False) return self.filterbar @@ -76,20 +84,40 @@ class SearchBar: self.filter_list.set_model(self.filter_model) self.filter_list.set_active(0) + def text_changed(self, obj): + text = obj.get_text() + if self.apply_text == '' and text == '': + self.filter_button.set_sensitive(False) + self.clear_button.set_sensitive(False) + elif self.apply_text == text: + self.filter_button.set_sensitive(False) + self.clear_button.set_sensitive(True) + else: + self.filter_button.set_sensitive(True) + self.clear_button.set_sensitive(True) + def key_press(self, obj, event): if event.keyval == _RETURN and not event.state: + self.filter_button.set_sensitive(False) + self.clear_button.set_sensitive(True) self.apply_filter() return False def apply_filter_clicked(self, obj): self.apply_filter() + def apply_clear(self, obj): + self.filter_text.set_text('') + self.apply_filter() + def get_value(self): text = self.filter_text.get_text().strip() index = self.filter_list.get_active() return (index, text) def apply_filter(self,current_model=None): + self.apply_text = self.filter_text.get_text() + self.filter_button.set_sensitive(False) self.uistate.status_text(_('Updating display...')) self.on_apply_callback() self.uistate.modify_statusbar()