diff options
author | Liming An <limingx.l.an@intel.com> | 2012-04-09 22:13:32 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-04-11 00:04:44 +0100 |
commit | a46aafb8b27bd86d046385a569deee6b4c9b8bb6 (patch) | |
tree | 4859187700432317d51eab26bf900820959b2870 /bitbake/lib/bb/ui/crumbs/recipeselectionpage.py | |
parent | 9fd56fad6c1d3e085d48c7cf7899e90c77df4e90 (diff) | |
download | poky-a46aafb8b27bd86d046385a569deee6b4c9b8bb6.tar.gz |
Hob: add fadeout display effection for recipe view include page
As UI request, in recipes selection page, if user exclude a item,
the related depends recipes will be excluded together,so the view
clearly to add it.
[YOCTO #2100]
(Bitbake rev: c9eed04c6275ef2c694f89e047f85c7de76f89b6)
Signed-off-by: Liming An <limingx.l.an@intel.com>
Signed-off-by: Shane Wang <shane.wang@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
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'])) | ||