summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/recipeselectionpage.py')
-rwxr-xr-xbitbake/lib/bb/ui/crumbs/recipeselectionpage.py50
1 files changed, 44 insertions, 6 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py b/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py
index bcd7b9c42d..b2d2db9d76 100755
--- a/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py
+++ b/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py
@@ -146,10 +146,10 @@ class RecipeSelectionPage (HobPage):
146 tab = HobViewTable(columns) 146 tab = HobViewTable(columns)
147 filter = page['filter'] 147 filter = page['filter']
148 tab.set_model(self.recipe_model.tree_model(filter)) 148 tab.set_model(self.recipe_model.tree_model(filter))
149 tab.connect("toggled", self.table_toggled_cb) 149 tab.connect("toggled", self.table_toggled_cb, page['name'])
150 if page['name'] == "Included": 150 if page['name'] == "Included":
151 tab.connect("button-release-event", self.button_click_cb) 151 tab.connect("button-release-event", self.button_click_cb)
152 152 tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include)
153 label = gtk.Label(page['name']) 153 label = gtk.Label(page['name'])
154 self.ins.append_page(tab, label) 154 self.ins.append_page(tab, label)
155 self.tables.append(tab) 155 self.tables.append(tab)
@@ -197,11 +197,16 @@ class RecipeSelectionPage (HobPage):
197 self.label.set_text("Recipes included: %s" % len(self.builder.configuration.selected_recipes)) 197 self.label.set_text("Recipes included: %s" % len(self.builder.configuration.selected_recipes))
198 self.ins.show_indicator_icon("Included", len(self.builder.configuration.selected_recipes)) 198 self.ins.show_indicator_icon("Included", len(self.builder.configuration.selected_recipes))
199 199
200 def toggle_item_idle_cb(self, path): 200 def toggle_item_idle_cb(self, path, view_tree, cell, pagename):
201 if not self.recipe_model.path_included(path): 201 if not self.recipe_model.path_included(path):
202 self.recipe_model.include_item(item_path=path, binb="User Selected", image_contents=False) 202 self.recipe_model.include_item(item_path=path, binb="User Selected", image_contents=False)
203 else: 203 else:
204 self.recipe_model.exclude_item(item_path=path) 204 if pagename == "Included":
205 self.pre_fadeout_checkout_include(view_tree)
206 self.recipe_model.exclude_item(item_path=path)
207 self.render_fadeout(view_tree, cell)
208 else:
209 self.recipe_model.exclude_item(item_path=path)
205 210
206 self.refresh_selection() 211 self.refresh_selection()
207 if not self.builder.customized: 212 if not self.builder.customized:
@@ -211,9 +216,42 @@ class RecipeSelectionPage (HobPage):
211 216
212 self.builder.window_sensitive(True) 217 self.builder.window_sensitive(True)
213 218
214 def table_toggled_cb(self, table, cell, view_path, toggled_columnid, view_tree): 219 def table_toggled_cb(self, table, cell, view_path, toggled_columnid, view_tree, pagename):
215 # Click to include a recipe 220 # Click to include a recipe
216 self.builder.window_sensitive(False) 221 self.builder.window_sensitive(False)
217 view_model = view_tree.get_model() 222 view_model = view_tree.get_model()
218 path = self.recipe_model.convert_vpath_to_path(view_model, view_path) 223 path = self.recipe_model.convert_vpath_to_path(view_model, view_path)
219 glib.idle_add(self.toggle_item_idle_cb, path) 224 glib.idle_add(self.toggle_item_idle_cb, path, view_tree, cell, pagename)
225
226 def pre_fadeout_checkout_include(self, tree):
227 #resync the included items to a backup fade include column
228 it = self.recipe_model.get_iter_first()
229 while it:
230 active = self.recipe_model.get_value(it, self.recipe_model.COL_INC)
231 self.recipe_model.set(it, self.recipe_model.COL_FADE_INC, active)
232 it = self.recipe_model.iter_next(it)
233 # Check out a model which base on the column COL_FADE_INC,
234 # it's save the prev state of column COL_INC before do exclude_item
235 filter = { RecipeListModel.COL_FADE_INC : [True],
236 RecipeListModel.COL_TYPE : ['recipe', 'task'] }
237 new_model = self.recipe_model.tree_model(filter, excluded_items_head=True)
238 tree.set_model(new_model)
239
240 def render_fadeout(self, tree, cell):
241 if (not cell) or (not tree):
242 return
243 to_render_cells = []
244 model = tree.get_model()
245 it = model.get_iter_first()
246 while it:
247 path = model.get_path(it)
248 prev_cell_is_active = model.get_value(it, RecipeListModel.COL_FADE_INC)
249 curr_cell_is_active = model.get_value(it, RecipeListModel.COL_INC)
250 if (prev_cell_is_active == True) and (curr_cell_is_active == False):
251 to_render_cells.append(path)
252 it = model.iter_next(it)
253
254 cell.fadeout(tree, 1000, to_render_cells)
255
256 def after_fadeout_checkin_include(self, table, ctrl, cell, tree):
257 tree.set_model(self.recipe_model.tree_model(self.pages[0]['filter']))