diff options
| -rw-r--r-- | bitbake/lib/bb/ui/crumbs/hoblistmodel.py | 9 | ||||
| -rw-r--r-- | bitbake/lib/bb/ui/crumbs/hobwidget.py | 7 | ||||
| -rwxr-xr-x | bitbake/lib/bb/ui/crumbs/packageselectionpage.py | 48 | ||||
| -rwxr-xr-x | bitbake/lib/bb/ui/crumbs/recipeselectionpage.py | 37 |
4 files changed, 41 insertions, 60 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/hoblistmodel.py b/bitbake/lib/bb/ui/crumbs/hoblistmodel.py index 3de9e5bb56..10b7c55251 100644 --- a/bitbake/lib/bb/ui/crumbs/hoblistmodel.py +++ b/bitbake/lib/bb/ui/crumbs/hoblistmodel.py | |||
| @@ -521,17 +521,24 @@ class RecipeListModel(gtk.ListStore): | |||
| 521 | val2 = model.get_value(iter2, RecipeListModel.COL_INC) | 521 | val2 = model.get_value(iter2, RecipeListModel.COL_INC) |
| 522 | return ((val1 == True) and (val2 == False)) | 522 | return ((val1 == True) and (val2 == False)) |
| 523 | 523 | ||
| 524 | def include_item_sort_func(self, model, iter1, iter2): | ||
| 525 | val1 = model.get_value(iter1, RecipeListModel.COL_INC) | ||
| 526 | val2 = model.get_value(iter2, RecipeListModel.COL_INC) | ||
| 527 | return ((val1 == False) and (val2 == True)) | ||
| 528 | |||
| 524 | """ | 529 | """ |
| 525 | Create, if required, and return a filtered gtk.TreeModelSort | 530 | Create, if required, and return a filtered gtk.TreeModelSort |
| 526 | containing only the items which are items specified by filter | 531 | containing only the items which are items specified by filter |
| 527 | """ | 532 | """ |
| 528 | def tree_model(self, filter, excluded_items_ahead=False): | 533 | def tree_model(self, filter, excluded_items_ahead=False, included_items_ahead=True): |
| 529 | model = self.filter_new() | 534 | model = self.filter_new() |
| 530 | model.set_visible_func(self.tree_model_filter, filter) | 535 | model.set_visible_func(self.tree_model_filter, filter) |
| 531 | 536 | ||
| 532 | sort = gtk.TreeModelSort(model) | 537 | sort = gtk.TreeModelSort(model) |
| 533 | if excluded_items_ahead: | 538 | if excluded_items_ahead: |
| 534 | sort.set_default_sort_func(self.exclude_item_sort_func) | 539 | sort.set_default_sort_func(self.exclude_item_sort_func) |
| 540 | elif included_items_ahead: | ||
| 541 | sort.set_default_sort_func(self.include_item_sort_func) | ||
| 535 | else: | 542 | else: |
| 536 | sort.set_sort_column_id(RecipeListModel.COL_NAME, gtk.SORT_ASCENDING) | 543 | sort.set_sort_column_id(RecipeListModel.COL_NAME, gtk.SORT_ASCENDING) |
| 537 | sort.set_default_sort_func(None) | 544 | sort.set_default_sort_func(None) |
diff --git a/bitbake/lib/bb/ui/crumbs/hobwidget.py b/bitbake/lib/bb/ui/crumbs/hobwidget.py index 3ab30a6fce..28dc375da5 100644 --- a/bitbake/lib/bb/ui/crumbs/hobwidget.py +++ b/bitbake/lib/bb/ui/crumbs/hobwidget.py | |||
| @@ -153,7 +153,12 @@ class HobViewTable (gtk.VBox): | |||
| 153 | # Just display the first item | 153 | # Just display the first item |
| 154 | if binb: | 154 | if binb: |
| 155 | bin = binb.split(', ') | 155 | bin = binb.split(', ') |
| 156 | cell.set_property('text', bin[0]) | 156 | total_no = len(bin) |
| 157 | if total_no > 1 and bin[0] == "User Selected": | ||
| 158 | present_binb = bin[1] + ' (+' + str(total_no) + ')' | ||
| 159 | else: | ||
| 160 | present_binb = bin[0] + ' (+' + str(total_no) + ')' | ||
| 161 | cell.set_property('text', present_binb) | ||
| 157 | else: | 162 | else: |
| 158 | cell.set_property('text', "") | 163 | cell.set_property('text', "") |
| 159 | return True | 164 | return True |
diff --git a/bitbake/lib/bb/ui/crumbs/packageselectionpage.py b/bitbake/lib/bb/ui/crumbs/packageselectionpage.py index 9eec0e0043..c73697bb33 100755 --- a/bitbake/lib/bb/ui/crumbs/packageselectionpage.py +++ b/bitbake/lib/bb/ui/crumbs/packageselectionpage.py | |||
| @@ -34,39 +34,34 @@ class PackageSelectionPage (HobPage): | |||
| 34 | 34 | ||
| 35 | pages = [ | 35 | pages = [ |
| 36 | { | 36 | { |
| 37 | 'name' : 'Included', | 37 | 'name' : 'Included packages', |
| 38 | 'tooltip' : 'The packages currently included for your image', | 38 | 'tooltip' : 'The packages currently included for your image', |
| 39 | 'filter' : { PackageListModel.COL_INC : [True] }, | 39 | 'filter' : { PackageListModel.COL_INC : [True] }, |
| 40 | 'columns' : [{ | 40 | 'columns' : [{ |
| 41 | 'col_name' : 'Package name', | 41 | 'col_name' : 'Package name', |
| 42 | 'col_id' : PackageListModel.COL_NAME, | 42 | 'col_id' : PackageListModel.COL_NAME, |
| 43 | 'col_t_id' : PackageListModel.COL_FONT, | ||
| 44 | 'col_style': 'text', | 43 | 'col_style': 'text', |
| 45 | 'col_min' : 100, | 44 | 'col_min' : 100, |
| 46 | 'col_max' : 300, | 45 | 'col_max' : 300, |
| 47 | 'expand' : 'True' | 46 | 'expand' : 'True' |
| 48 | }, { | 47 | }, { |
| 49 | 'col_name' : 'Brought in by', | ||
| 50 | 'col_id' : PackageListModel.COL_BINB, | ||
| 51 | 'col_t_id' : PackageListModel.COL_FONT, | ||
| 52 | 'col_style': 'binb', | ||
| 53 | 'col_min' : 100, | ||
| 54 | 'col_max' : 350, | ||
| 55 | 'expand' : 'True' | ||
| 56 | }, { | ||
| 57 | 'col_name' : 'Size', | 48 | 'col_name' : 'Size', |
| 58 | 'col_id' : PackageListModel.COL_SIZE, | 49 | 'col_id' : PackageListModel.COL_SIZE, |
| 59 | 'col_t_id' : PackageListModel.COL_FONT, | ||
| 60 | 'col_style': 'text', | 50 | 'col_style': 'text', |
| 61 | 'col_min' : 100, | 51 | 'col_min' : 100, |
| 62 | 'col_max' : 300, | 52 | 'col_max' : 300, |
| 63 | 'expand' : 'True' | 53 | 'expand' : 'True' |
| 64 | }, { | 54 | }, { |
| 55 | 'col_name' : 'Brought in by', | ||
| 56 | 'col_id' : PackageListModel.COL_BINB, | ||
| 57 | 'col_style': 'binb', | ||
| 58 | 'col_min' : 100, | ||
| 59 | 'col_max' : 350, | ||
| 60 | 'expand' : 'True' | ||
| 61 | }, { | ||
| 65 | 'col_name' : 'Included', | 62 | 'col_name' : 'Included', |
| 66 | 'col_id' : PackageListModel.COL_INC, | 63 | 'col_id' : PackageListModel.COL_INC, |
| 67 | 'col_t_id' : PackageListModel.COL_FONT, | ||
| 68 | 'col_style': 'check toggle', | 64 | 'col_style': 'check toggle', |
| 69 | 'col_group': 'tree store group', | ||
| 70 | 'col_min' : 100, | 65 | 'col_min' : 100, |
| 71 | 'col_max' : 100 | 66 | 'col_max' : 100 |
| 72 | }] | 67 | }] |
| @@ -77,7 +72,6 @@ class PackageSelectionPage (HobPage): | |||
| 77 | 'columns' : [{ | 72 | 'columns' : [{ |
| 78 | 'col_name' : 'Package name', | 73 | 'col_name' : 'Package name', |
| 79 | 'col_id' : PackageListModel.COL_NAME, | 74 | 'col_id' : PackageListModel.COL_NAME, |
| 80 | 'col_t_id' : PackageListModel.COL_FONT, | ||
| 81 | 'col_style': 'text', | 75 | 'col_style': 'text', |
| 82 | 'col_min' : 100, | 76 | 'col_min' : 100, |
| 83 | 'col_max' : 400, | 77 | 'col_max' : 400, |
| @@ -85,7 +79,6 @@ class PackageSelectionPage (HobPage): | |||
| 85 | }, { | 79 | }, { |
| 86 | 'col_name' : 'Size', | 80 | 'col_name' : 'Size', |
| 87 | 'col_id' : PackageListModel.COL_SIZE, | 81 | 'col_id' : PackageListModel.COL_SIZE, |
| 88 | 'col_t_id' : PackageListModel.COL_FONT, | ||
| 89 | 'col_style': 'text', | 82 | 'col_style': 'text', |
| 90 | 'col_min' : 100, | 83 | 'col_min' : 100, |
| 91 | 'col_max' : 500, | 84 | 'col_max' : 500, |
| @@ -94,7 +87,6 @@ class PackageSelectionPage (HobPage): | |||
| 94 | 'col_name' : 'Included', | 87 | 'col_name' : 'Included', |
| 95 | 'col_id' : PackageListModel.COL_INC, | 88 | 'col_id' : PackageListModel.COL_INC, |
| 96 | 'col_style': 'check toggle', | 89 | 'col_style': 'check toggle', |
| 97 | 'col_group': 'tree store group', | ||
| 98 | 'col_min' : 100, | 90 | 'col_min' : 100, |
| 99 | 'col_max' : 100 | 91 | 'col_max' : 100 |
| 100 | }] | 92 | }] |
| @@ -133,8 +125,7 @@ class PackageSelectionPage (HobPage): | |||
| 133 | filter = page['filter'] | 125 | filter = page['filter'] |
| 134 | tab.set_model(self.package_model.tree_model(filter)) | 126 | tab.set_model(self.package_model.tree_model(filter)) |
| 135 | tab.connect("toggled", self.table_toggled_cb, page['name']) | 127 | tab.connect("toggled", self.table_toggled_cb, page['name']) |
| 136 | tab.connect_group_selection(self.table_selected_cb) | 128 | if page['name'] == "Included packages": |
| 137 | if page['name'] == "Included": | ||
| 138 | tab.connect("button-release-event", self.button_click_cb) | 129 | tab.connect("button-release-event", self.button_click_cb) |
| 139 | tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include) | 130 | tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include) |
| 140 | self.ins.append_page(tab, page['name'], page['tooltip']) | 131 | self.ins.append_page(tab, page['name'], page['tooltip']) |
| @@ -228,13 +219,13 @@ class PackageSelectionPage (HobPage): | |||
| 228 | 219 | ||
| 229 | self.label.set_label("Packages included: %s\nSelected packages size: %s\nTotal image size: %s" % | 220 | self.label.set_label("Packages included: %s\nSelected packages size: %s\nTotal image size: %s" % |
| 230 | (selected_packages_num, selected_packages_size_str, image_total_size_str)) | 221 | (selected_packages_num, selected_packages_size_str, image_total_size_str)) |
| 231 | self.ins.show_indicator_icon("Included", selected_packages_num) | 222 | self.ins.show_indicator_icon("Included packages", selected_packages_num) |
| 232 | 223 | ||
| 233 | def toggle_item_idle_cb(self, path, view_tree, cell, pagename): | 224 | def toggle_item_idle_cb(self, path, view_tree, cell, pagename): |
| 234 | if not self.package_model.path_included(path): | 225 | if not self.package_model.path_included(path): |
| 235 | self.package_model.include_item(item_path=path, binb="User Selected") | 226 | self.package_model.include_item(item_path=path, binb="User Selected") |
| 236 | else: | 227 | else: |
| 237 | if pagename == "Included": | 228 | if pagename == "Included packages": |
| 238 | self.pre_fadeout_checkout_include(view_tree) | 229 | self.pre_fadeout_checkout_include(view_tree) |
| 239 | self.package_model.exclude_item(item_path=path) | 230 | self.package_model.exclude_item(item_path=path) |
| 240 | self.render_fadeout(view_tree, cell) | 231 | self.render_fadeout(view_tree, cell) |
| @@ -291,21 +282,6 @@ class PackageSelectionPage (HobPage): | |||
| 291 | tree.set_model(self.package_model.tree_model(self.pages[0]['filter'])) | 282 | tree.set_model(self.package_model.tree_model(self.pages[0]['filter'])) |
| 292 | tree.expand_all() | 283 | tree.expand_all() |
| 293 | 284 | ||
| 294 | def foreach_cell_change_font(self, model, path, iter, paths=None): | ||
| 295 | # Changed the font for a group cells | ||
| 296 | if path and iter and path[0] == paths[0]: | ||
| 297 | self.package_model.set(iter, self.package_model.COL_FONT, "bold") | ||
| 298 | else: | ||
| 299 | if iter and model.iter_parent(iter) == None: | ||
| 300 | self.package_model.set(iter, self.package_model.COL_FONT, '11') | ||
| 301 | else: | ||
| 302 | self.package_model.set(iter, self.package_model.COL_FONT, '10') | ||
| 303 | |||
| 304 | def table_selected_cb(self, selection): | ||
| 305 | model, paths = selection.get_selected_rows() | ||
| 306 | if paths: | ||
| 307 | child_path = self.package_model.convert_vpath_to_path(model, paths[0]) | ||
| 308 | self.package_model.foreach(self.foreach_cell_change_font, child_path) | ||
| 309 | |||
| 310 | def set_packages_curr_tab(self, curr_page): | 285 | def set_packages_curr_tab(self, curr_page): |
| 311 | self.ins.set_current_page(curr_page) | 286 | self.ins.set_current_page(curr_page) |
| 287 | |||
diff --git a/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py b/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py index 18690077f5..693a449bcf 100755 --- a/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py +++ b/bitbake/lib/bb/ui/crumbs/recipeselectionpage.py | |||
| @@ -33,7 +33,7 @@ from bb.ui.crumbs.hobpages import HobPage | |||
| 33 | class RecipeSelectionPage (HobPage): | 33 | class RecipeSelectionPage (HobPage): |
| 34 | pages = [ | 34 | pages = [ |
| 35 | { | 35 | { |
| 36 | 'name' : 'Included', | 36 | 'name' : 'Included recipes', |
| 37 | 'tooltip' : 'The recipes currently included for your image', | 37 | 'tooltip' : 'The recipes currently included for your image', |
| 38 | 'filter' : { RecipeListModel.COL_INC : [True], | 38 | 'filter' : { RecipeListModel.COL_INC : [True], |
| 39 | RecipeListModel.COL_TYPE : ['recipe', 'task'] }, | 39 | RecipeListModel.COL_TYPE : ['recipe', 'task'] }, |
| @@ -45,13 +45,6 @@ class RecipeSelectionPage (HobPage): | |||
| 45 | 'col_max' : 400, | 45 | 'col_max' : 400, |
| 46 | 'expand' : 'True' | 46 | 'expand' : 'True' |
| 47 | }, { | 47 | }, { |
| 48 | 'col_name' : 'Brought in by', | ||
| 49 | 'col_id' : RecipeListModel.COL_BINB, | ||
| 50 | 'col_style': 'binb', | ||
| 51 | 'col_min' : 100, | ||
| 52 | 'col_max' : 500, | ||
| 53 | 'expand' : 'True' | ||
| 54 | }, { | ||
| 55 | 'col_name' : 'Group', | 48 | 'col_name' : 'Group', |
| 56 | 'col_id' : RecipeListModel.COL_GROUP, | 49 | 'col_id' : RecipeListModel.COL_GROUP, |
| 57 | 'col_style': 'text', | 50 | 'col_style': 'text', |
| @@ -59,6 +52,13 @@ class RecipeSelectionPage (HobPage): | |||
| 59 | 'col_max' : 300, | 52 | 'col_max' : 300, |
| 60 | 'expand' : 'True' | 53 | 'expand' : 'True' |
| 61 | }, { | 54 | }, { |
| 55 | 'col_name' : 'Brought in by', | ||
| 56 | 'col_id' : RecipeListModel.COL_BINB, | ||
| 57 | 'col_style': 'binb', | ||
| 58 | 'col_min' : 100, | ||
| 59 | 'col_max' : 500, | ||
| 60 | 'expand' : 'True' | ||
| 61 | }, { | ||
| 62 | 'col_name' : 'Included', | 62 | 'col_name' : 'Included', |
| 63 | 'col_id' : RecipeListModel.COL_INC, | 63 | 'col_id' : RecipeListModel.COL_INC, |
| 64 | 'col_style': 'check toggle', | 64 | 'col_style': 'check toggle', |
| @@ -77,15 +77,15 @@ class RecipeSelectionPage (HobPage): | |||
| 77 | 'col_max' : 400, | 77 | 'col_max' : 400, |
| 78 | 'expand' : 'True' | 78 | 'expand' : 'True' |
| 79 | }, { | 79 | }, { |
| 80 | 'col_name' : 'License', | 80 | 'col_name' : 'Group', |
| 81 | 'col_id' : RecipeListModel.COL_LIC, | 81 | 'col_id' : RecipeListModel.COL_GROUP, |
| 82 | 'col_style': 'text', | 82 | 'col_style': 'text', |
| 83 | 'col_min' : 100, | 83 | 'col_min' : 100, |
| 84 | 'col_max' : 400, | 84 | 'col_max' : 400, |
| 85 | 'expand' : 'True' | 85 | 'expand' : 'True' |
| 86 | }, { | 86 | }, { |
| 87 | 'col_name' : 'Group', | 87 | 'col_name' : 'License', |
| 88 | 'col_id' : RecipeListModel.COL_GROUP, | 88 | 'col_id' : RecipeListModel.COL_LIC, |
| 89 | 'col_style': 'text', | 89 | 'col_style': 'text', |
| 90 | 'col_min' : 100, | 90 | 'col_min' : 100, |
| 91 | 'col_max' : 400, | 91 | 'col_max' : 400, |
| @@ -109,13 +109,6 @@ class RecipeSelectionPage (HobPage): | |||
| 109 | 'col_max' : 400, | 109 | 'col_max' : 400, |
| 110 | 'expand' : 'True' | 110 | 'expand' : 'True' |
| 111 | }, { | 111 | }, { |
| 112 | 'col_name' : 'Description', | ||
| 113 | 'col_id' : RecipeListModel.COL_DESC, | ||
| 114 | 'col_style': 'text', | ||
| 115 | 'col_min' : 100, | ||
| 116 | 'col_max' : 400, | ||
| 117 | 'expand' : 'True' | ||
| 118 | }, { | ||
| 119 | 'col_name' : 'Included', | 112 | 'col_name' : 'Included', |
| 120 | 'col_id' : RecipeListModel.COL_INC, | 113 | 'col_id' : RecipeListModel.COL_INC, |
| 121 | 'col_style': 'check toggle', | 114 | 'col_style': 'check toggle', |
| @@ -156,7 +149,7 @@ class RecipeSelectionPage (HobPage): | |||
| 156 | filter = page['filter'] | 149 | filter = page['filter'] |
| 157 | tab.set_model(self.recipe_model.tree_model(filter)) | 150 | tab.set_model(self.recipe_model.tree_model(filter)) |
| 158 | tab.connect("toggled", self.table_toggled_cb, page['name']) | 151 | tab.connect("toggled", self.table_toggled_cb, page['name']) |
| 159 | if page['name'] == "Included": | 152 | if page['name'] == "Included recipes": |
| 160 | tab.connect("button-release-event", self.button_click_cb) | 153 | tab.connect("button-release-event", self.button_click_cb) |
| 161 | tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include) | 154 | tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include) |
| 162 | self.ins.append_page(tab, page['name'], page['tooltip']) | 155 | self.ins.append_page(tab, page['name'], page['tooltip']) |
| @@ -205,13 +198,13 @@ class RecipeSelectionPage (HobPage): | |||
| 205 | def refresh_selection(self): | 198 | def refresh_selection(self): |
| 206 | self.builder.configuration.selected_image = self.recipe_model.get_selected_image() | 199 | self.builder.configuration.selected_image = self.recipe_model.get_selected_image() |
| 207 | _, self.builder.configuration.selected_recipes = self.recipe_model.get_selected_recipes() | 200 | _, self.builder.configuration.selected_recipes = self.recipe_model.get_selected_recipes() |
| 208 | self.ins.show_indicator_icon("Included", len(self.builder.configuration.selected_recipes)) | 201 | self.ins.show_indicator_icon("Included recipes", len(self.builder.configuration.selected_recipes)) |
| 209 | 202 | ||
| 210 | def toggle_item_idle_cb(self, path, view_tree, cell, pagename): | 203 | def toggle_item_idle_cb(self, path, view_tree, cell, pagename): |
| 211 | if not self.recipe_model.path_included(path): | 204 | if not self.recipe_model.path_included(path): |
| 212 | self.recipe_model.include_item(item_path=path, binb="User Selected", image_contents=False) | 205 | self.recipe_model.include_item(item_path=path, binb="User Selected", image_contents=False) |
| 213 | else: | 206 | else: |
| 214 | if pagename == "Included": | 207 | if pagename == "Included recipes": |
| 215 | self.pre_fadeout_checkout_include(view_tree) | 208 | self.pre_fadeout_checkout_include(view_tree) |
| 216 | self.recipe_model.exclude_item(item_path=path) | 209 | self.recipe_model.exclude_item(item_path=path) |
| 217 | self.render_fadeout(view_tree, cell) | 210 | self.render_fadeout(view_tree, cell) |
