summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Iorga <cristian.iorga@intel.com>2012-08-21 18:21:23 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-08-22 13:46:47 +0100
commitb48cd7dcf57b1abc8c5b46ced11d4f57bf06e557 (patch)
treeaf39faef0ce429df18773cd4ce5675e0b26e6ff2
parent660821769b9dfb89086291ffc835e9b5444509be (diff)
downloadbitbake-contrib-b48cd7dcf57b1abc8c5b46ced11d4f57bf06e557.tar.gz
Hob wizard-like reorganization
Hob is now more context-sensitive regarding user changes/options. Also, the workflow have been streamlined and resembles more of a wizard. Beautified some hardcoded values. Fixed typo. New streamlined Image Configuration page. Build and/or Edit image buttons presence is context sensitive. Recipes and packages tabs selected automatically based on custom image or pre-defined target image (included or all). Context sensitive Back button. Fixes [YOCTO 2165] Signed-off-by: Cristian Iorga <cristian.iorga@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xlib/bb/ui/crumbs/builddetailspage.py2
-rwxr-xr-xlib/bb/ui/crumbs/builder.py23
-rw-r--r--lib/bb/ui/crumbs/hoblistmodel.py5
-rw-r--r--lib/bb/ui/crumbs/imageconfigurationpage.py68
-rwxr-xr-xlib/bb/ui/crumbs/packageselectionpage.py16
-rwxr-xr-xlib/bb/ui/crumbs/recipeselectionpage.py15
6 files changed, 69 insertions, 60 deletions
diff --git a/lib/bb/ui/crumbs/builddetailspage.py b/lib/bb/ui/crumbs/builddetailspage.py
index 30eab2950..4d2d947d2 100755
--- a/lib/bb/ui/crumbs/builddetailspage.py
+++ b/lib/bb/ui/crumbs/builddetailspage.py
@@ -165,7 +165,7 @@ class BuildDetailsPage (HobPage):
self.builder.handler.build.model.connect_after("row-changed", self.scroll_to_present_row, self.scrolled_view_build.get_vadjustment(), self.build_tv)
self.button_box = gtk.HBox(False, 6)
- self.back_button = HobAltButton("<< Back to image configuration")
+ self.back_button = HobAltButton('<< Back')
self.back_button.connect("clicked", self.back_button_clicked_cb)
self.button_box.pack_start(self.back_button, expand=False, fill=False)
diff --git a/lib/bb/ui/crumbs/builder.py b/lib/bb/ui/crumbs/builder.py
index 611024aae..7de47986b 100755
--- a/lib/bb/ui/crumbs/builder.py
+++ b/lib/bb/ui/crumbs/builder.py
@@ -41,7 +41,7 @@ from bb.ui.crumbs.hig import CrumbsMessageDialog, ImageSelectionDialog, \
from bb.ui.crumbs.persistenttooltip import PersistentTooltip
import bb.ui.crumbs.utils
-hobVer = 20120530
+hobVer = 20120808
class Configuration:
'''Represents the data structure of configuration.'''
@@ -640,16 +640,28 @@ class Builder(gtk.Window):
self.image_configuration_page.show_baseimg_selected()
elif next_step == self.RECIPE_SELECTION:
- pass
+ if self.recipe_model.get_selected_image() == self.recipe_model.__custom_image__:
+ self.recipe_details_page.set_recipe_curr_tab(self.recipe_details_page.ALL)
+ else:
+ self.recipe_details_page.set_recipe_curr_tab(self.recipe_details_page.INCLUDED)
elif next_step == self.PACKAGE_SELECTION:
+ if self.recipe_model.get_selected_image() == self.recipe_model.__custom_image__:
+ self.package_details_page.set_packages_curr_tab(self.package_details_page.ALL)
+ else:
+ self.package_details_page.set_packages_curr_tab(self.package_details_page.INCLUDED)
self.package_details_page.show_page(self.current_logfile)
+
elif next_step == self.PACKAGE_GENERATING or next_step == self.FAST_IMAGE_GENERATING:
- # both PACKAGE_GENEATING and FAST_IMAGE_GENERATING share the same page
+ # both PACKAGE_GENERATING and FAST_IMAGE_GENERATING share the same page
self.build_details_page.show_page(next_step)
elif next_step == self.PACKAGE_GENERATED:
+ if self.recipe_model.get_selected_image() == self.recipe_model.__custom_image__:
+ self.package_details_page.set_packages_curr_tab(self.package_details_page.ALL)
+ else:
+ self.package_details_page.set_packages_curr_tab(self.package_details_page.INCLUDED)
self.package_details_page.show_page(self.current_logfile)
elif next_step == self.IMAGE_GENERATING:
@@ -781,8 +793,6 @@ class Builder(gtk.Window):
self.image_configuration_page.layer_button.set_sensitive(sensitive)
self.image_configuration_page.layer_info_icon.set_sensitive(sensitive)
self.image_configuration_page.toolbar.set_sensitive(sensitive)
- self.image_configuration_page.view_recipes_button.set_sensitive(sensitive)
- self.image_configuration_page.view_packages_button.set_sensitive(sensitive)
self.image_configuration_page.config_build_button.set_sensitive(sensitive)
self.recipe_details_page.set_sensitive(sensitive)
@@ -1270,6 +1280,9 @@ class Builder(gtk.Window):
def show_recipes(self):
self.switch_page(self.RECIPE_SELECTION)
+ def show_image_details(self):
+ self.switch_page(self.IMAGE_GENERATED)
+
def show_configuration(self):
self.switch_page(self.BASEIMG_SELECTED)
diff --git a/lib/bb/ui/crumbs/hoblistmodel.py b/lib/bb/ui/crumbs/hoblistmodel.py
index 37cee7832..3de9e5bb5 100644
--- a/lib/bb/ui/crumbs/hoblistmodel.py
+++ b/lib/bb/ui/crumbs/hoblistmodel.py
@@ -566,9 +566,8 @@ class RecipeListModel(gtk.ListStore):
# dummy image for prompt
self.set(self.append(), self.COL_NAME, self.__custom_image__,
- self.COL_DESC, "Use the 'View recipes' and 'View packages' " \
- "options to select what you want to include " \
- "in your image.",
+ self.COL_DESC, "Use 'Edit image' to customize recipes and packages " \
+ "to be included in your image ",
self.COL_LIC, "", self.COL_GROUP, "",
self.COL_DEPS, "", self.COL_BINB, "",
self.COL_TYPE, "image", self.COL_INC, False,
diff --git a/lib/bb/ui/crumbs/imageconfigurationpage.py b/lib/bb/ui/crumbs/imageconfigurationpage.py
index 80332feab..6aeb6dc82 100644
--- a/lib/bb/ui/crumbs/imageconfigurationpage.py
+++ b/lib/bb/ui/crumbs/imageconfigurationpage.py
@@ -135,8 +135,10 @@ class ImageConfigurationPage (HobPage):
self._pack_components(pack_config_build_button = True)
self.set_config_machine_layout(show_progress_bar = False)
self.set_config_baseimg_layout()
- self.set_rcppkg_layout()
self.show_all()
+ if self.builder.recipe_model.get_selected_image() == self.builder.recipe_model.__custom_image__:
+ self.just_bake_button.hide()
+ self.or_label.hide()
def create_config_machine(self):
self.machine_title = gtk.Label()
@@ -207,22 +209,6 @@ class ImageConfigurationPage (HobPage):
self.image_desc.set_justify(gtk.JUSTIFY_LEFT)
self.image_desc.set_line_wrap(True)
- # button to view recipes
- icon_file = hic.ICON_RCIPE_DISPLAY_FILE
- hover_file = hic.ICON_RCIPE_HOVER_FILE
- self.view_recipes_button = HobImageButton("View recipes",
- "Add/remove recipes and tasks",
- icon_file, hover_file)
- self.view_recipes_button.connect("clicked", self.view_recipes_button_clicked_cb)
-
- # button to view packages
- icon_file = hic.ICON_PACKAGES_DISPLAY_FILE
- hover_file = hic.ICON_PACKAGES_HOVER_FILE
- self.view_packages_button = HobImageButton("View packages",
- "Add/remove previously built packages",
- icon_file, hover_file)
- self.view_packages_button.connect("clicked", self.view_packages_button_clicked_cb)
-
self.image_separator = gtk.HSeparator()
def set_config_baseimg_layout(self):
@@ -232,29 +218,27 @@ class ImageConfigurationPage (HobPage):
self.gtable.attach(self.image_desc, 13, 38, 23, 28)
self.gtable.attach(self.image_separator, 0, 40, 35, 36)
- def set_rcppkg_layout(self):
- self.gtable.attach(self.view_recipes_button, 0, 20, 28, 33)
- self.gtable.attach(self.view_packages_button, 20, 40, 28, 33)
-
def create_config_build_button(self):
# Create the "Build packages" and "Build image" buttons at the bottom
button_box = gtk.HBox(False, 6)
# create button "Build image"
- just_bake_button = HobButton("Build image")
- just_bake_button.set_size_request(205, 49)
- just_bake_button.set_tooltip_text("Build target image")
- just_bake_button.connect("clicked", self.just_bake_button_clicked_cb)
- button_box.pack_end(just_bake_button, expand=False, fill=False)
-
- label = gtk.Label(" or ")
- button_box.pack_end(label, expand=False, fill=False)
-
- # create button "Build Packages"
- build_packages_button = HobAltButton("Build packages")
- build_packages_button.connect("clicked", self.build_packages_button_clicked_cb)
- build_packages_button.set_tooltip_text("Build recipes into packages")
- button_box.pack_end(build_packages_button, expand=False, fill=False)
+ self.just_bake_button = HobButton("Build image")
+ self.just_bake_button.set_size_request(205, 49)
+ self.just_bake_button.set_tooltip_text("Build target image")
+ self.just_bake_button.connect("clicked", self.just_bake_button_clicked_cb)
+ button_box.pack_end(self.just_bake_button, expand=False, fill=False)
+
+ # create separator label
+ self.or_label = gtk.Label(" or ")
+ button_box.pack_end(self.or_label, expand=False, fill=False)
+
+ # create button "Edit Image"
+ self.edit_image_button = HobButton("Edit image")
+ self.edit_image_button.set_size_request(205, 49)
+ self.edit_image_button.set_tooltip_text("Edit target image")
+ self.edit_image_button.connect("clicked", self.edit_image_button_clicked_cb)
+ button_box.pack_end(self.edit_image_button, expand=False, fill=False)
return button_box
@@ -347,6 +331,10 @@ class ImageConfigurationPage (HobPage):
self.show_baseimg_selected()
+ if selected_image == self.builder.recipe_model.__custom_image__:
+ self.just_bake_button.hide()
+ self.or_label.hide()
+
glib.idle_add(self.image_combo_changed_idle_cb, selected_image, selected_recipes, selected_packages)
def _image_combo_connect_signal(self):
@@ -426,17 +414,11 @@ class ImageConfigurationPage (HobPage):
# Create a layer selection dialog
self.builder.show_layer_selection_dialog()
- def view_recipes_button_clicked_cb(self, button):
- self.builder.show_recipes()
-
- def view_packages_button_clicked_cb(self, button):
- self.builder.show_packages()
-
def just_bake_button_clicked_cb(self, button):
self.builder.just_bake()
- def build_packages_button_clicked_cb(self, button):
- self.builder.build_packages()
+ def edit_image_button_clicked_cb(self, button):
+ self.builder.show_recipes()
def template_button_clicked_cb(self, button):
response, path = self.builder.show_load_template_dialog()
diff --git a/lib/bb/ui/crumbs/packageselectionpage.py b/lib/bb/ui/crumbs/packageselectionpage.py
index d1015352f..3576ed5bc 100755
--- a/lib/bb/ui/crumbs/packageselectionpage.py
+++ b/lib/bb/ui/crumbs/packageselectionpage.py
@@ -98,9 +98,12 @@ class PackageSelectionPage (HobPage):
}]
}
]
+
+ (INCLUDED,
+ ALL) = range(2)
def __init__(self, builder):
- super(PackageSelectionPage, self).__init__(builder, "Packages")
+ super(PackageSelectionPage, self).__init__(builder, "Edit packages")
# set invisiable members
self.recipe_model = self.builder.recipe_model
@@ -110,7 +113,7 @@ class PackageSelectionPage (HobPage):
self.create_visual_elements()
def included_clicked_cb(self, button):
- self.ins.set_current_page(0)
+ self.ins.set_current_page(self.INCLUDED)
def create_visual_elements(self):
self.label = gtk.Label("Packages included: 0\nSelected packages size: 0 MB")
@@ -154,7 +157,7 @@ class PackageSelectionPage (HobPage):
self.build_image_button.connect("clicked", self.build_image_clicked_cb)
self.button_box.pack_end(self.build_image_button, expand=False, fill=False)
- self.back_button = HobAltButton("<< Back to image configuration")
+ self.back_button = HobAltButton('<< Back')
self.back_button.connect("clicked", self.back_button_clicked_cb)
self.button_box.pack_start(self.back_button, expand=False, fill=False)
@@ -189,7 +192,10 @@ class PackageSelectionPage (HobPage):
self.builder.build_image()
def back_button_clicked_cb(self, button):
- self.builder.show_configuration()
+ if self.builder.current_step == self.builder.PACKAGE_GENERATED:
+ self.builder.show_recipes()
+ elif self.builder.previous_step == self.builder.IMAGE_GENERATED:
+ self.builder.show_image_details()
def _expand_all(self):
for tab in self.tables:
@@ -294,3 +300,5 @@ class PackageSelectionPage (HobPage):
child_path = self.package_model.convert_vpath_to_path(model, paths[0])
self.package_model.foreach(self.foreach_cell_change_font, child_path)
+ def set_packages_curr_tab(self, curr_page):
+ self.ins.set_current_page(curr_page)
diff --git a/lib/bb/ui/crumbs/recipeselectionpage.py b/lib/bb/ui/crumbs/recipeselectionpage.py
index af68f2a75..d8e71b097 100755
--- a/lib/bb/ui/crumbs/recipeselectionpage.py
+++ b/lib/bb/ui/crumbs/recipeselectionpage.py
@@ -124,18 +124,22 @@ class RecipeSelectionPage (HobPage):
}]
}
]
+
+ (INCLUDED,
+ ALL,
+ TASKS) = range(3)
def __init__(self, builder = None):
- super(RecipeSelectionPage, self).__init__(builder, "Recipes")
+ super(RecipeSelectionPage, self).__init__(builder, "Edit recipes")
- # set invisiable members
+ # set invisible members
self.recipe_model = self.builder.recipe_model
# create visual elements
self.create_visual_elements()
def included_clicked_cb(self, button):
- self.ins.set_current_page(0)
+ self.ins.set_current_page(self.INCLUDED)
def create_visual_elements(self):
self.eventbox = self.add_onto_top_bar(None, 73)
@@ -180,7 +184,7 @@ class RecipeSelectionPage (HobPage):
self.build_packages_button.connect("clicked", self.build_packages_clicked_cb)
button_box.pack_end(self.build_packages_button, expand=False, fill=False)
- self.back_button = HobAltButton("<< Back to image configuration")
+ self.back_button = HobAltButton('<< Back')
self.back_button.connect("clicked", self.back_button_clicked_cb)
button_box.pack_start(self.back_button, expand=False, fill=False)
@@ -261,3 +265,6 @@ class RecipeSelectionPage (HobPage):
def after_fadeout_checkin_include(self, table, ctrl, cell, tree):
tree.set_model(self.recipe_model.tree_model(self.pages[0]['filter']))
+
+ def set_recipe_curr_tab(self, curr_page):
+ self.ins.set_current_page(curr_page)