Hob: forget selected_recipes and selected_packages after users change the machine
The patch is to fix [Yocto #2255]. Now the logic is: - If users change the machine, the image combo is empty for users to select. - If users load the template, the image combo should set the value of selected_image specified in the template. - After loading a template, if users change the machine, the selected_image specified in the template should be removed from the image combo because it is probably invalid for a new machine. - If users customize the recipe/package list, and change the settings which causes reparsing, selected_recipes and selected_packages should be remembered. - If users add more layers, selected_recipes and selected_packages should be remembered. (Bitbake rev: e549b11f4f31863393f62a253ee96bead4594523) Signed-off-by: Shane Wang <shane.wang@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
793058e6f2
commit
ccf4f7653b
|
@ -601,6 +601,7 @@ class Builder(gtk.Window):
|
||||||
" ".join(selected_packages))
|
" ".join(selected_packages))
|
||||||
|
|
||||||
self.image_configuration_page.update_image_combo(self.recipe_model, selected_image)
|
self.image_configuration_page.update_image_combo(self.recipe_model, selected_image)
|
||||||
|
self.image_configuration_page.update_image_desc(selected_image)
|
||||||
self.update_recipe_model(selected_image, selected_recipes)
|
self.update_recipe_model(selected_image, selected_recipes)
|
||||||
self.update_package_model(selected_packages)
|
self.update_package_model(selected_packages)
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,10 @@ class ImageConfigurationPage (HobPage):
|
||||||
super(ImageConfigurationPage, self).__init__(builder, "Image configuration")
|
super(ImageConfigurationPage, self).__init__(builder, "Image configuration")
|
||||||
|
|
||||||
self.image_combo_id = None
|
self.image_combo_id = None
|
||||||
|
# we use machine_combo_changed_by_manual to identify the machine is changed by code
|
||||||
|
# or by manual. If by manual, all user's recipe selection and package selection are
|
||||||
|
# cleared.
|
||||||
|
self.machine_combo_changed_by_manual = True
|
||||||
self.create_visual_elements()
|
self.create_visual_elements()
|
||||||
|
|
||||||
def create_visual_elements(self):
|
def create_visual_elements(self):
|
||||||
|
@ -259,6 +263,13 @@ class ImageConfigurationPage (HobPage):
|
||||||
return
|
return
|
||||||
|
|
||||||
self.builder.configuration.curr_mach = combo_item
|
self.builder.configuration.curr_mach = combo_item
|
||||||
|
if self.machine_combo_changed_by_manual:
|
||||||
|
self.builder.configuration.selected_image = None
|
||||||
|
self.builder.configuration.selected_recipes = []
|
||||||
|
self.builder.configuration.selected_packages = []
|
||||||
|
# reset machine_combo_changed_by_manual
|
||||||
|
self.machine_combo_changed_by_manual = True
|
||||||
|
|
||||||
# Do reparse recipes
|
# Do reparse recipes
|
||||||
self.builder.populate_recipe_package_info_async()
|
self.builder.populate_recipe_package_info_async()
|
||||||
|
|
||||||
|
@ -272,6 +283,7 @@ class ImageConfigurationPage (HobPage):
|
||||||
self.machine_combo.set_active(-1)
|
self.machine_combo.set_active(-1)
|
||||||
|
|
||||||
def switch_machine_combo(self):
|
def switch_machine_combo(self):
|
||||||
|
self.machine_combo_changed_by_manual = False
|
||||||
model = self.machine_combo.get_model()
|
model = self.machine_combo.get_model()
|
||||||
active = 0
|
active = 0
|
||||||
while active < len(model):
|
while active < len(model):
|
||||||
|
@ -281,6 +293,16 @@ class ImageConfigurationPage (HobPage):
|
||||||
active += 1
|
active += 1
|
||||||
self.machine_combo.set_active(-1)
|
self.machine_combo.set_active(-1)
|
||||||
|
|
||||||
|
def update_image_desc(self, selected_image):
|
||||||
|
desc = ""
|
||||||
|
if selected_image and selected_image in self.builder.recipe_model.pn_path.keys():
|
||||||
|
image_path = self.builder.recipe_model.pn_path[selected_image]
|
||||||
|
image_iter = self.builder.recipe_model.get_iter(image_path)
|
||||||
|
desc = self.builder.recipe_model.get_value(image_iter, self.builder.recipe_model.COL_DESC)
|
||||||
|
|
||||||
|
mark = ("<span %s>%s</span>\n") % (self.span_tag('small'), desc)
|
||||||
|
self.image_desc.set_markup(mark)
|
||||||
|
|
||||||
def image_combo_changed_idle_cb(self, selected_image, selected_recipes, selected_packages):
|
def image_combo_changed_idle_cb(self, selected_image, selected_recipes, selected_packages):
|
||||||
self.builder.update_recipe_model(selected_image, selected_recipes)
|
self.builder.update_recipe_model(selected_image, selected_recipes)
|
||||||
self.builder.update_package_model(selected_packages)
|
self.builder.update_package_model(selected_packages)
|
||||||
|
@ -299,9 +321,7 @@ class ImageConfigurationPage (HobPage):
|
||||||
image_path = self.builder.recipe_model.pn_path[selected_image]
|
image_path = self.builder.recipe_model.pn_path[selected_image]
|
||||||
image_iter = self.builder.recipe_model.get_iter(image_path)
|
image_iter = self.builder.recipe_model.get_iter(image_path)
|
||||||
selected_packages = self.builder.recipe_model.get_value(image_iter, self.builder.recipe_model.COL_INSTALL).split()
|
selected_packages = self.builder.recipe_model.get_value(image_iter, self.builder.recipe_model.COL_INSTALL).split()
|
||||||
|
self.update_image_desc(selected_image)
|
||||||
mark = ("<span %s>%s</span>\n") % (self.span_tag('small'), self.builder.recipe_model.get_value(image_iter, self.builder.recipe_model.COL_DESC))
|
|
||||||
self.image_desc.set_markup(mark)
|
|
||||||
|
|
||||||
self.builder.recipe_model.reset()
|
self.builder.recipe_model.reset()
|
||||||
self.builder.package_model.reset()
|
self.builder.package_model.reset()
|
||||||
|
|
Loading…
Reference in New Issue