/b-gtk/fix-viz

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/b-gtk/fix-viz

« back to all changes in this revision

Viewing changes to search.py

  • Committer: Jelmer Vernooij
  • Date: 2008-07-01 14:42:56 UTC
  • Revision ID: jelmer@samba.org-20080701144256-x17f3oumt80tgl9j
Show results in search window.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
except:
21
21
    pass
22
22
 
23
 
import gtk
 
23
import gobject, gtk
24
24
from bzrlib.plugins.search import index as _mod_index
25
25
 
 
26
 
 
27
class SearchCompletion(gtk.EntryCompletion):
 
28
    def __init__(self, index):
 
29
        super(SearchCompletion, self).__init__()
 
30
 
 
31
 
26
32
class SearchDialog(gtk.Dialog):
27
33
    """Search dialog."""
28
34
    def __init__(self, branch, parent=None):
33
39
    
34
40
        # Get arguments
35
41
        self.branch = branch
36
 
        
 
42
 
 
43
        self.index = _mod_index.open_index_url(branch.base)
 
44
 
 
45
        self.searchbar = gtk.HBox()
 
46
        self.searchentry = gtk.Entry()
 
47
        self.searchentry.connect('activate', self._searchentry_activate)
 
48
        self.searchentry.set_completion(SearchCompletion(self.index))
 
49
        self.searchbar.add(self.searchentry)
 
50
        self.vbox.pack_start(self.searchbar, expand=False, fill=False)
 
51
 
 
52
        self.results_model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
 
53
        self.results_treeview = gtk.TreeView(self.results_model)
 
54
 
 
55
        documentname_column = gtk.TreeViewColumn("Document", gtk.CellRendererText(), text=0)
 
56
        self.results_treeview.append_column(documentname_column)
 
57
 
 
58
        summary_column = gtk.TreeViewColumn("Summary", gtk.CellRendererText(), text=1)
 
59
        self.results_treeview.append_column(summary_column)
 
60
 
 
61
        results_scrolledwindow = gtk.ScrolledWindow()
 
62
        results_scrolledwindow.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
 
63
        results_scrolledwindow.add(self.results_treeview)
 
64
 
 
65
        self.vbox.pack_start(results_scrolledwindow, expand=True, fill=True)
 
66
 
 
67
        self.set_default_size(600, 400)
37
68
        # Show the dialog
38
69
        self.show_all()
 
70
 
 
71
    def _searchentry_activate(self, entry):
 
72
        self.results_model.clear()
 
73
        self.index._branch.lock_read()
 
74
        try:
 
75
            query = [(query_item,) for query_item in self.searchentry.get_text().split(" ")]
 
76
            for result in self.index.search(query):
 
77
                self.results_model.append([result.document_name(), result.summary()])
 
78
        finally:
 
79
            self.index._branch.unlock()