diff options
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/packageselectionpage.py')
-rwxr-xr-x | bitbake/lib/bb/ui/crumbs/packageselectionpage.py | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/packageselectionpage.py b/bitbake/lib/bb/ui/crumbs/packageselectionpage.py index fc3d4a3bbf..a46bd4234b 100755 --- a/bitbake/lib/bb/ui/crumbs/packageselectionpage.py +++ b/bitbake/lib/bb/ui/crumbs/packageselectionpage.py | |||
@@ -116,10 +116,10 @@ class PackageSelectionPage (HobPage): | |||
116 | tab = HobViewTable(columns) | 116 | tab = HobViewTable(columns) |
117 | filter = page['filter'] | 117 | filter = page['filter'] |
118 | tab.set_model(self.package_model.tree_model(filter)) | 118 | tab.set_model(self.package_model.tree_model(filter)) |
119 | tab.connect("toggled", self.table_toggled_cb) | 119 | tab.connect("toggled", self.table_toggled_cb, page['name']) |
120 | if page['name'] == "Included": | 120 | if page['name'] == "Included": |
121 | tab.connect("button-release-event", self.button_click_cb) | 121 | tab.connect("button-release-event", self.button_click_cb) |
122 | 122 | tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include) | |
123 | label = gtk.Label(page['name']) | 123 | label = gtk.Label(page['name']) |
124 | self.ins.append_page(tab, label) | 124 | self.ins.append_page(tab, label) |
125 | self.tables.append(tab) | 125 | self.tables.append(tab) |
@@ -187,11 +187,16 @@ class PackageSelectionPage (HobPage): | |||
187 | (selected_packages_num, selected_packages_size_str, image_total_size_str)) | 187 | (selected_packages_num, selected_packages_size_str, image_total_size_str)) |
188 | self.ins.show_indicator_icon("Included", selected_packages_num) | 188 | self.ins.show_indicator_icon("Included", selected_packages_num) |
189 | 189 | ||
190 | def toggle_item_idle_cb(self, path): | 190 | def toggle_item_idle_cb(self, path, view_tree, cell, pagename): |
191 | if not self.package_model.path_included(path): | 191 | if not self.package_model.path_included(path): |
192 | self.package_model.include_item(item_path=path, binb="User Selected") | 192 | self.package_model.include_item(item_path=path, binb="User Selected") |
193 | else: | 193 | else: |
194 | self.package_model.exclude_item(item_path=path) | 194 | if pagename == "Included": |
195 | self.pre_fadeout_checkout_include(view_tree) | ||
196 | self.package_model.exclude_item(item_path=path) | ||
197 | self.render_fadeout(view_tree, cell) | ||
198 | else: | ||
199 | self.package_model.exclude_item(item_path=path) | ||
195 | 200 | ||
196 | self.refresh_selection() | 201 | self.refresh_selection() |
197 | if not self.builder.customized: | 202 | if not self.builder.customized: |
@@ -201,9 +206,36 @@ class PackageSelectionPage (HobPage): | |||
201 | 206 | ||
202 | self.builder.window_sensitive(True) | 207 | self.builder.window_sensitive(True) |
203 | 208 | ||
204 | def table_toggled_cb(self, table, cell, view_path, toggled_columnid, view_tree): | 209 | def table_toggled_cb(self, table, cell, view_path, toggled_columnid, view_tree, pagename): |
205 | # Click to include a package | 210 | # Click to include a package |
206 | self.builder.window_sensitive(False) | 211 | self.builder.window_sensitive(False) |
207 | view_model = view_tree.get_model() | 212 | view_model = view_tree.get_model() |
208 | path = self.package_model.convert_vpath_to_path(view_model, view_path) | 213 | path = self.package_model.convert_vpath_to_path(view_model, view_path) |
209 | glib.idle_add(self.toggle_item_idle_cb, path) | 214 | glib.idle_add(self.toggle_item_idle_cb, path, view_tree, cell, pagename) |
215 | |||
216 | def pre_fadeout_checkout_include(self, tree): | ||
217 | self.package_model.resync_fadeout_column(self.package_model.get_iter_first()) | ||
218 | # Check out a model which base on the column COL_FADE_INC, | ||
219 | # it's save the prev state of column COL_INC before do exclude_item | ||
220 | filter = { PackageListModel.COL_FADE_INC : [True]} | ||
221 | new_model = self.package_model.tree_model(filter) | ||
222 | tree.set_model(new_model) | ||
223 | tree.expand_all() | ||
224 | |||
225 | def get_excluded_rows(self, to_render_cells, model, it): | ||
226 | while it: | ||
227 | path = model.get_path(it) | ||
228 | prev_cell_is_active = model.get_value(it, PackageListModel.COL_FADE_INC) | ||
229 | curr_cell_is_active = model.get_value(it, PackageListModel.COL_INC) | ||
230 | if (prev_cell_is_active == True) and (curr_cell_is_active == False): | ||
231 | to_render_cells.append(path) | ||
232 | if model.iter_has_child(it): | ||
233 | self.get_excluded_rows(to_render_cells, model, model.iter_children(it)) | ||
234 | it = model.iter_next(it) | ||
235 | |||
236 | return to_render_cells | ||
237 | |||
238 | def render_fadeout(self, tree, cell): | ||
239 | if (not cell) or (not tree): | ||
240 | return | ||
241 | to_render_cells = [] | ||