diff options
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/packageselectionpage.py')
-rwxr-xr-x | bitbake/lib/bb/ui/crumbs/packageselectionpage.py | 57 |
1 files changed, 41 insertions, 16 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/packageselectionpage.py b/bitbake/lib/bb/ui/crumbs/packageselectionpage.py index 6f9a4e2a7a..ce2deabb89 100755 --- a/bitbake/lib/bb/ui/crumbs/packageselectionpage.py +++ b/bitbake/lib/bb/ui/crumbs/packageselectionpage.py | |||
@@ -34,10 +34,12 @@ class PackageSelectionPage (HobPage): | |||
34 | 34 | ||
35 | pages = [ | 35 | pages = [ |
36 | { | 36 | { |
37 | 'name' : 'Included packages', | 37 | 'name' : 'Included packages', |
38 | 'tooltip' : 'The packages currently included for your image', | 38 | 'tooltip' : 'The packages currently included for your image', |
39 | 'filter' : { PackageListModel.COL_INC : [True] }, | 39 | 'filter' : { PackageListModel.COL_INC : [True] }, |
40 | 'columns' : [{ | 40 | 'search' : 'Search packages by name', |
41 | 'searchtip' : 'Enter a package name to find it', | ||
42 | 'columns' : [{ | ||
41 | 'col_name' : 'Package name', | 43 | 'col_name' : 'Package name', |
42 | 'col_id' : PackageListModel.COL_NAME, | 44 | 'col_id' : PackageListModel.COL_NAME, |
43 | 'col_style': 'text', | 45 | 'col_style': 'text', |
@@ -73,10 +75,12 @@ class PackageSelectionPage (HobPage): | |||
73 | 'col_max' : 100 | 75 | 'col_max' : 100 |
74 | }] | 76 | }] |
75 | }, { | 77 | }, { |
76 | 'name' : 'All packages', | 78 | 'name' : 'All packages', |
77 | 'tooltip' : 'All packages that have been built', | 79 | 'tooltip' : 'All packages that have been built', |
78 | 'filter' : {}, | 80 | 'filter' : {}, |
79 | 'columns' : [{ | 81 | 'search' : 'Search packages by name', |
82 | 'searchtip' : 'Enter a package name to find it', | ||
83 | 'columns' : [{ | ||
80 | 'col_name' : 'Package name', | 84 | 'col_name' : 'Package name', |
81 | 'col_id' : PackageListModel.COL_NAME, | 85 | 'col_id' : PackageListModel.COL_NAME, |
82 | 'col_style': 'text', | 86 | 'col_style': 'text', |
@@ -132,12 +136,18 @@ class PackageSelectionPage (HobPage): | |||
132 | # set visible members | 136 | # set visible members |
133 | self.ins = HobNotebook() | 137 | self.ins = HobNotebook() |
134 | self.tables = [] # we need to modify table when the dialog is shown | 138 | self.tables = [] # we need to modify table when the dialog is shown |
139 | |||
140 | search_names = [] | ||
141 | search_tips = [] | ||
135 | # append the tab | 142 | # append the tab |
136 | for page in self.pages: | 143 | for page in self.pages: |
137 | columns = page['columns'] | 144 | columns = page['columns'] |
138 | tab = HobViewTable(columns) | 145 | tab = HobViewTable(columns) |
146 | search_names.append(page['search']) | ||
147 | search_tips.append(page['searchtip']) | ||
139 | filter = page['filter'] | 148 | filter = page['filter'] |
140 | tab.set_model(self.package_model.tree_model(filter)) | 149 | sort_model = self.package_model.tree_model(filter) |
150 | tab.set_model(sort_model) | ||
141 | tab.connect("toggled", self.table_toggled_cb, page['name']) | 151 | tab.connect("toggled", self.table_toggled_cb, page['name']) |
142 | if page['name'] == "Included packages": | 152 | if page['name'] == "Included packages": |
143 | tab.connect("button-release-event", self.button_click_cb) | 153 | tab.connect("button-release-event", self.button_click_cb) |
@@ -148,13 +158,8 @@ class PackageSelectionPage (HobPage): | |||
148 | self.ins.append_page(tab, page['name'], page['tooltip']) | 158 | self.ins.append_page(tab, page['name'], page['tooltip']) |
149 | self.tables.append(tab) | 159 | self.tables.append(tab) |
150 | 160 | ||
151 | self.ins.set_entry("Search packages:") | 161 | self.ins.set_entry(search_names, search_tips) |
152 | # set the search entry for each table | 162 | self.ins.search.connect("changed", self.search_entry_changed) |
153 | for tab in self.tables: | ||
154 | search_tip = "Enter a package name to find it" | ||
155 | self.ins.search.set_tooltip_text(search_tip) | ||
156 | self.ins.search.props.has_tooltip = True | ||
157 | tab.set_search_entry(0, self.ins.search) | ||
158 | 163 | ||
159 | # add all into the dialog | 164 | # add all into the dialog |
160 | self.box_group_area.pack_start(self.ins, expand=True, fill=True) | 165 | self.box_group_area.pack_start(self.ins, expand=True, fill=True) |
@@ -174,6 +179,26 @@ class PackageSelectionPage (HobPage): | |||
174 | self.back_button.connect("clicked", self.back_button_clicked_cb) | 179 | self.back_button.connect("clicked", self.back_button_clicked_cb) |
175 | self.button_box.pack_end(self.back_button, expand=False, fill=False) | 180 | self.button_box.pack_end(self.back_button, expand=False, fill=False) |
176 | 181 | ||
182 | def search_entry_changed(self, entry): | ||
183 | current_tab = self.ins.get_current_page() | ||
184 | filter = self.pages[current_tab]['filter'] | ||
185 | text = entry.get_text() | ||
186 | filter[PackageListModel.COL_NAME] = text | ||
187 | self.tables[current_tab].set_model(self.package_model.tree_model(filter, search_data=text)) | ||
188 | if self.package_model.filtered_nb == 0: | ||
189 | if not self.ins.get_nth_page(current_tab).top_bar: | ||
190 | self.ins.get_nth_page(current_tab).add_no_result_bar(entry) | ||
191 | self.ins.get_nth_page(current_tab).top_bar.show() | ||
192 | self.ins.get_nth_page(current_tab).scroll.hide() | ||
193 | else: | ||
194 | if self.ins.get_nth_page(current_tab).top_bar: | ||
195 | self.ins.get_nth_page(current_tab).top_bar.hide() | ||
196 | self.ins.get_nth_page(current_tab).scroll.show() | ||
197 | if entry.get_text() == '': | ||
198 | entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, False) | ||
199 | else: | ||
200 | entry.set_icon_sensitive(gtk.ENTRY_ICON_SECONDARY, True) | ||
201 | |||
177 | def button_click_cb(self, widget, event): | 202 | def button_click_cb(self, widget, event): |
178 | path, col = widget.table_tree.get_cursor() | 203 | path, col = widget.table_tree.get_cursor() |
179 | tree_model = widget.table_tree.get_model() | 204 | tree_model = widget.table_tree.get_model() |