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() |
