diff options
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/recipeselectionpage.py')
| -rwxr-xr-x | bitbake/lib/bb/ui/crumbs/recipeselectionpage.py | 50 |
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'])) | ||
