[bitbake-devel] [PATCH 9/9] lib/bb/ui/crumbs: apply primary/secondary dialogue button styling

Xu, Dongxiao dongxiao.xu at intel.com
Sat Mar 24 01:00:59 UTC 2012


On Fri, 2012-03-23 at 17:23 -0700, Joshua Lock wrote:
> The design calls for primary buttons which are orange and large and
> secondary buttons which are subtle with pale blue text. This is so that the
> user is drawn towards the primary action and their use of the application
> is more guided.
> 
> This patch uses HobButton and HobAltButton classes to style all dialogue
> buttons accordingly.
> 
> Fixes [YOCTO #2125]
> 
> Signed-off-by: Joshua Lock <josh at linux.intel.com>
> ---
>  lib/bb/ui/crumbs/builder.py |  106 +++++++++++++++++++++++++++----------------
>  lib/bb/ui/crumbs/hig.py     |   34 ++++++++------
>  2 files changed, 87 insertions(+), 53 deletions(-)
> 
> diff --git a/lib/bb/ui/crumbs/builder.py b/lib/bb/ui/crumbs/builder.py
> index 4eb374c..e27a239 100755
> --- a/lib/bb/ui/crumbs/builder.py
> +++ b/lib/bb/ui/crumbs/builder.py
> @@ -32,7 +32,7 @@ from bb.ui.crumbs.recipeselectionpage import RecipeSelectionPage
>  from bb.ui.crumbs.packageselectionpage import PackageSelectionPage
>  from bb.ui.crumbs.builddetailspage import BuildDetailsPage
>  from bb.ui.crumbs.imagedetailspage import ImageDetailsPage
> -from bb.ui.crumbs.hobwidget import hwc
> +from bb.ui.crumbs.hobwidget import hwc, HobButton, HobAltButton
>  from bb.ui.crumbs.hig import CrumbsMessageDialog, ImageSelectionDialog, \
>                               AdvancedSettingDialog, LayerSelectionDialog, \
>                               DeployImageDialog
> @@ -435,7 +435,8 @@ class Builder(gtk.Window):
>              lbl = "<b>Error</b>\n"
>              lbl = lbl + "%s\n\n" % msg
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING)
> -            dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
> +            button = dialog.add_button("Close", gtk.RESPONSE_OK)
> +            HobButton.style_button(button)
>              response = dialog.run()
>              dialog.destroy()
>          self.handler.clear_busy()
> @@ -608,8 +609,10 @@ class Builder(gtk.Window):
>      def destroy_window_cb(self, widget, event):
>          lbl = "<b>Do you really want to exit the Hob image creator?</b>"
>          dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -        dialog.add_button("Keep using Hob", gtk.RESPONSE_NO)
> -        dialog.add_button("Exit Hob", gtk.RESPONSE_YES)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Exit Hob", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          dialog.set_default_response(gtk.RESPONSE_YES)
>          response = dialog.run()
>          dialog.destroy()
> @@ -625,7 +628,8 @@ class Builder(gtk.Window):
>              lbl = "<b>No selections made</b>\nYou have not made any selections"
>              lbl = lbl + " so there isn't anything to bake at this time."
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -            dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
> +            button = dialog.add_button("Close", gtk.RESPONSE_OK)
> +            HobButton.style_button(button)
>              dialog.run()
>              dialog.destroy()
>              return
> @@ -637,7 +641,8 @@ class Builder(gtk.Window):
>              lbl = "<b>No selections made</b>\nYou have not made any selections"
>              lbl = lbl + " so there isn't anything to bake at this time."
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -            dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
> +            button = dialog.add_button("Close", gtk.RESPONSE_OK)
> +            HobButton.style_button(button)
>              dialog.run()
>              dialog.destroy()
>              return
> @@ -652,7 +657,8 @@ class Builder(gtk.Window):
>              lbl = "<b>No selections made</b>\nYou have not made any selections"
>              lbl = lbl + " so there isn't anything to bake at this time."
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -            dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
> +            button = dialog.add_button("Close", gtk.RESPONSE_OK)
> +            HobButton.style_button(button)
>              dialog.run()
>              dialog.destroy()
>              return
> @@ -672,8 +678,9 @@ class Builder(gtk.Window):
>                       parent = self,
>                       flags = gtk.DIALOG_MODAL
>                           | gtk.DIALOG_DESTROY_WITH_PARENT
> -                         | gtk.DIALOG_NO_SEPARATOR,
> -                     buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_YES))
> +                         | gtk.DIALOG_NO_SEPARATOR)
> +        button = dialog.add_button("Close", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          response = dialog.run()
>          if response == gtk.RESPONSE_YES:
>              self.configuration.layers = dialog.layers

As my previous point, I still strongly suggest we keep the "cancel"
button in the layer selection and advanced setting dialog to avoid
user's wrong operation. Need Belen or Giulia's input.

Thanks,
Dongxiao

> @@ -684,9 +691,11 @@ class Builder(gtk.Window):
>  
>      def show_load_template_dialog(self):
>          dialog = gtk.FileChooserDialog("Load Template Files", self,
> -                                       gtk.FILE_CHOOSER_ACTION_OPEN,
> -                                      (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
> -                                       gtk.STOCK_OPEN, gtk.RESPONSE_YES))
> +                                       gtk.FILE_CHOOSER_ACTION_OPEN)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Open", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          filter = gtk.FileFilter()
>          filter.set_name("Hob Files")
>          filter.add_pattern("*.hob")
> @@ -700,9 +709,11 @@ class Builder(gtk.Window):
>  
>      def show_save_template_dialog(self):
>          dialog = gtk.FileChooserDialog("Save Template Files", self,
> -                                       gtk.FILE_CHOOSER_ACTION_SAVE,
> -                                      (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
> -                                       gtk.STOCK_SAVE, gtk.RESPONSE_YES))
> +                                       gtk.FILE_CHOOSER_ACTION_SAVE)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Save", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          dialog.set_current_name("hob")
>          response = dialog.run()
>          if response == gtk.RESPONSE_YES:
> @@ -713,15 +724,18 @@ class Builder(gtk.Window):
>      def show_load_my_images_dialog(self):
>          dialog = ImageSelectionDialog(self.parameters.image_addr, self.parameters.image_types,
>                                        "Open My Images", self,
> -                                       gtk.FILE_CHOOSER_ACTION_SAVE,
> -                                      (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
> -                                       gtk.STOCK_OPEN, gtk.RESPONSE_YES))
> +                                       gtk.FILE_CHOOSER_ACTION_SAVE)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Open", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          response = dialog.run()
>          if response == gtk.RESPONSE_YES:
>              if not dialog.image_names:
>                  lbl = "<b>No selections made</b>\nYou have not made any selections"
>                  crumbs_dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -                crumbs_dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
> +                button = crumbs_dialog.add_button("Close", gtk.RESPONSE_OK)
> +                HobButton.style_button(button)
>                  crumbs_dialog.run()
>                  crumbs_dialog.destroy()
>                  dialog.destroy()
> @@ -744,9 +758,9 @@ class Builder(gtk.Window):
>              parent = self,
>              flags = gtk.DIALOG_MODAL
>                      | gtk.DIALOG_DESTROY_WITH_PARENT
> -                    | gtk.DIALOG_NO_SEPARATOR,
> -            buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
> -                       "Save", gtk.RESPONSE_YES))
> +                    | gtk.DIALOG_NO_SEPARATOR)
> +        button = dialog.add_button("Close", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          response = dialog.run()
>          if response == gtk.RESPONSE_YES:
>              self.configuration = dialog.configuration
> @@ -762,7 +776,8 @@ class Builder(gtk.Window):
>          if not image_name:
>              lbl = "<b>Please select an image to deploy.</b>"
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -            dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
> +            button = dialog.add_button("Close", gtk.RESPONSE_OK)
> +            HobButton.style_button(button)
>              dialog.run()
>              dialog.destroy()
>              return
> @@ -773,9 +788,11 @@ class Builder(gtk.Window):
>              parent = self,
>              flags = gtk.DIALOG_MODAL
>                      | gtk.DIALOG_DESTROY_WITH_PARENT
> -                    | gtk.DIALOG_NO_SEPARATOR,
> -            buttons = ("Close", gtk.RESPONSE_NO,
> -                       "Make usb image", gtk.RESPONSE_YES))
> +                    | gtk.DIALOG_NO_SEPARATOR)
> +        button = dialog.add_button("Close", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Make usb image", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          response = dialog.run()
>          dialog.destroy()
>  
> @@ -783,15 +800,18 @@ class Builder(gtk.Window):
>          if not image_name:
>              lbl = "<b>Please select an image to launch in QEMU.</b>"
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -            dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
> +            button = dialog.add_button("Close", gtk.RESPONSE_OK)
> +            HobButton.style_button(button)
>              dialog.run()
>              dialog.destroy()
>              return
>  
>          dialog = gtk.FileChooserDialog("Load Kernel Files", self,
> -                                       gtk.FILE_CHOOSER_ACTION_SAVE,
> -                                      (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
> -                                       gtk.STOCK_OPEN, gtk.RESPONSE_YES))
> +                                       gtk.FILE_CHOOSER_ACTION_SAVE)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Open", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          filter = gtk.FileFilter()
>          filter.set_name("Kernel Files")
>          filter.add_pattern("*.bin")
> @@ -823,7 +843,8 @@ class Builder(gtk.Window):
>                  lbl = lbl + "source environment path:" + source_env_path + "\n"
>                  lbl = lbl + "tmp path: " + tmp_path + "."
>                  dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -                dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
> +                button = dialog.add_button("Close", gtk.RESPONSE_OK)
> +                HobButton.style_button(button)
>                  dialog.run()
>                  dialog.destroy()
>  
> @@ -831,10 +852,12 @@ class Builder(gtk.Window):
>          _, selected_recipes = self.recipe_model.get_selected_recipes()
>          if selected_recipes and ask:
>              lbl = "<b>Package list may be incomplete!</b>\nDo you want to build selected recipes"
> -            lbl = lbl + " to get a full list (Yes) or just view the existing packages (No)?"
> +            lbl = lbl + " to get a full list or just view the existing packages?"
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
> -            dialog.add_button(gtk.STOCK_NO, gtk.RESPONSE_NO)
> -            dialog.add_button(gtk.STOCK_YES, gtk.RESPONSE_YES)
> +            button = dialog.add_button("View packages", gtk.RESPONSE_NO)
> +            HobAltButton.style_button(button)
> +            button = dialog.add_button("Build packages", gtk.RESPONSE_YES)
> +            HobButton.style_button(button)
>              dialog.set_default_response(gtk.RESPONSE_YES)
>              response = dialog.run()
>              dialog.destroy()
> @@ -867,8 +890,10 @@ class Builder(gtk.Window):
>              lbl = lbl + " well leave your build directory in an  unusable state"
>              lbl = lbl + " that requires manual steps to fix.\n"
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING)
> -            dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
> -            dialog.add_button("Force Stop", gtk.RESPONSE_YES)
> +            button = dialog.add_button("Cancel", gtk.RESPONSE_CANCEL)
> +            HobAltButton.style_button(button)
> +            button = dialog.add_button("Force Stop", gtk.RESPONSE_YES)
> +            HobButton.style_button(button)
>          else:
>              lbl = "<b>Stop build?</b>\n\nAre you sure you want to stop this"
>              lbl = lbl + " build?\n\n'Force Stop' will stop the build as quickly as"
> @@ -879,9 +904,12 @@ class Builder(gtk.Window):
>              lbl = lbl + " lengthy compilation phase is in progress this may take"
>              lbl = lbl + " some time."
>              dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING)
> -            dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
> -            dialog.add_button("Stop", gtk.RESPONSE_OK)
> -            dialog.add_button("Force Stop", gtk.RESPONSE_YES)
> +            button = dialog.add_button("Cancel", gtk.RESPONSE_CANCEL)
> +            HobAltButton.style_button(button)
> +            button = dialog.add_button("Stop", gtk.RESPONSE_OK)
> +            HobAltButton.style_button(button)
> +            button = dialog.add_button("Force Stop", gtk.RESPONSE_YES)
> +            HobButton.style_button(button)
>          response = dialog.run()
>          dialog.destroy()
>          if response != gtk.RESPONSE_CANCEL:
> diff --git a/lib/bb/ui/crumbs/hig.py b/lib/bb/ui/crumbs/hig.py
> index 6ae682b..a30e7d9 100644
> --- a/lib/bb/ui/crumbs/hig.py
> +++ b/lib/bb/ui/crumbs/hig.py
> @@ -28,7 +28,7 @@ import re
>  import subprocess
>  import shlex
>  from bb.ui.crumbs.hobcolor import HobColors
> -from bb.ui.crumbs.hobwidget import hcc, hic, HobViewTable, HobInfoButton
> +from bb.ui.crumbs.hobwidget import hcc, hic, HobViewTable, HobInfoButton, HobButton, HobAltButton
>  from bb.ui.crumbs.progressbar import HobProgressBar
>  
>  """
> @@ -137,9 +137,11 @@ class AdvancedSettingDialog (CrumbsDialog):
>  
>      def entry_widget_select_path_cb(self, action, parent, entry):
>          dialog = gtk.FileChooserDialog("", parent,
> -                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
> -                                       (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
> -                                        gtk.STOCK_OPEN, gtk.RESPONSE_YES))
> +                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Open", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          response = dialog.run()
>          if response == gtk.RESPONSE_YES:
>              path = dialog.get_filename()
> @@ -307,7 +309,7 @@ class AdvancedSettingDialog (CrumbsDialog):
>  
>      def __init__(self, title, configuration, all_image_types,
>              all_package_formats, all_distros, all_sdk_machines,
> -            max_threads, parent, flags, buttons):
> +            max_threads, parent, flags, buttons=None):
>          super(AdvancedSettingDialog, self).__init__(title, parent, flags, buttons)
>  
>          # class members from other objects
> @@ -563,7 +565,7 @@ class DeployImageDialog (CrumbsDialog):
>  
>      __dummy_usb__ = "--select a usb drive--"
>  
> -    def __init__(self, title, image_path, parent, flags, buttons):
> +    def __init__(self, title, image_path, parent, flags, buttons=None):
>          super(DeployImageDialog, self).__init__(title, parent, flags, buttons)
>  
>          self.image_path = image_path
> @@ -713,9 +715,11 @@ class LayerSelectionDialog (CrumbsDialog):
>  
>      def layer_widget_add_clicked_cb(self, action, layer_store, parent):
>          dialog = gtk.FileChooserDialog("Add new layer", parent,
> -                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
> -                                       (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
> -                                        gtk.STOCK_OPEN, gtk.RESPONSE_YES))
> +                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Open", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          label = gtk.Label("Select the layer you wish to add")
>          label.show()
>          dialog.set_extra_widget(label)
> @@ -827,7 +831,7 @@ class LayerSelectionDialog (CrumbsDialog):
>      def add_leave_cb(self, button, event):
>          self.im.set_from_file(hic.ICON_INDI_ADD_FILE)
>  
> -    def __init__(self, title, layers, all_layers, parent, flags, buttons):
> +    def __init__(self, title, layers, all_layers, parent, flags, buttons=None):
>          super(LayerSelectionDialog, self).__init__(title, parent, flags, buttons)
>  
>          # class members from other objects
> @@ -921,7 +925,7 @@ class ImageSelectionDialog (CrumbsDialog):
>      }]
>  
> 
> -    def __init__(self, image_folder, image_types, title, parent, flags, buttons):
> +    def __init__(self, image_folder, image_types, title, parent, flags, buttons=None):
>          super(ImageSelectionDialog, self).__init__(title, parent, flags, buttons)
>          self.connect("response", self.response_cb)
>  
> @@ -975,9 +979,11 @@ class ImageSelectionDialog (CrumbsDialog):
>  
>      def select_path_cb(self, action, parent, entry):
>          dialog = gtk.FileChooserDialog("", parent,
> -                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
> -                                       (gtk.STOCK_CANCEL, gtk.RESPONSE_NO,
> -                                        gtk.STOCK_OPEN, gtk.RESPONSE_YES))
> +                                       gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
> +        button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
> +        HobAltButton.style_button(button)
> +        button = dialog.add_button("Open", gtk.RESPONSE_YES)
> +        HobButton.style_button(button)
>          response = dialog.run()
>          if response == gtk.RESPONSE_YES:
>              path = dialog.get_filename()






More information about the bitbake-devel mailing list