summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/crumbs/packageselectionpage.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/packageselectionpage.py')
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/packageselectionpage.py44
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 = []