lib/bb/ui/crumbs: apply primary/secondary dialogue button styling

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]

(From Poky rev: 1a52fe9f9e79f33686bd92613fc93eb97daacab8)

(Bitbake rev: 723ad434d427398b202b70f27762878315ffb22c)

Signed-off-by: Joshua Lock <josh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Lock 2012-03-26 13:11:02 -07:00 committed by Richard Purdie
parent 265903bdff
commit eba155d4d5
2 changed files with 89 additions and 53 deletions

View File

@ -32,7 +32,7 @@ from bb.ui.crumbs.recipeselectionpage import RecipeSelectionPage
from bb.ui.crumbs.packageselectionpage import PackageSelectionPage from bb.ui.crumbs.packageselectionpage import PackageSelectionPage
from bb.ui.crumbs.builddetailspage import BuildDetailsPage from bb.ui.crumbs.builddetailspage import BuildDetailsPage
from bb.ui.crumbs.imagedetailspage import ImageDetailsPage 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, \ from bb.ui.crumbs.hig import CrumbsMessageDialog, ImageSelectionDialog, \
AdvancedSettingDialog, LayerSelectionDialog, \ AdvancedSettingDialog, LayerSelectionDialog, \
DeployImageDialog DeployImageDialog
@ -444,7 +444,8 @@ class Builder(gtk.Window):
lbl = "<b>Error</b>\n" lbl = "<b>Error</b>\n"
lbl = lbl + "%s\n\n" % msg lbl = lbl + "%s\n\n" % msg
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING) 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() response = dialog.run()
dialog.destroy() dialog.destroy()
self.handler.clear_busy() self.handler.clear_busy()
@ -620,8 +621,10 @@ class Builder(gtk.Window):
def destroy_window_cb(self, widget, event): def destroy_window_cb(self, widget, event):
lbl = "<b>Do you really want to exit the Hob image creator?</b>" lbl = "<b>Do you really want to exit the Hob image creator?</b>"
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
dialog.add_button("Keep using Hob", gtk.RESPONSE_NO) button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
dialog.add_button("Exit Hob", gtk.RESPONSE_YES) HobAltButton.style_button(button)
button = dialog.add_button("Exit Hob", gtk.RESPONSE_YES)
HobButton.style_button(button)
dialog.set_default_response(gtk.RESPONSE_YES) dialog.set_default_response(gtk.RESPONSE_YES)
response = dialog.run() response = dialog.run()
dialog.destroy() dialog.destroy()
@ -637,7 +640,8 @@ class Builder(gtk.Window):
lbl = "<b>No selections made</b>\nYou have not made any selections" lbl = "<b>No selections made</b>\nYou have not made any selections"
lbl = lbl + " so there isn't anything to bake at this time." lbl = lbl + " so there isn't anything to bake at this time."
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) 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.run()
dialog.destroy() dialog.destroy()
return return
@ -649,7 +653,8 @@ class Builder(gtk.Window):
lbl = "<b>No selections made</b>\nYou have not made any selections" lbl = "<b>No selections made</b>\nYou have not made any selections"
lbl = lbl + " so there isn't anything to bake at this time." lbl = lbl + " so there isn't anything to bake at this time."
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) 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.run()
dialog.destroy() dialog.destroy()
return return
@ -664,7 +669,8 @@ class Builder(gtk.Window):
lbl = "<b>No selections made</b>\nYou have not made any selections" lbl = "<b>No selections made</b>\nYou have not made any selections"
lbl = lbl + " so there isn't anything to bake at this time." lbl = lbl + " so there isn't anything to bake at this time."
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) 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.run()
dialog.destroy() dialog.destroy()
return return
@ -684,8 +690,9 @@ class Builder(gtk.Window):
parent = self, parent = self,
flags = gtk.DIALOG_MODAL flags = gtk.DIALOG_MODAL
| gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_DESTROY_WITH_PARENT
| gtk.DIALOG_NO_SEPARATOR, | gtk.DIALOG_NO_SEPARATOR)
buttons = (gtk.STOCK_CLOSE, gtk.RESPONSE_YES)) button = dialog.add_button("Close", gtk.RESPONSE_YES)
HobButton.style_button(button)
response = dialog.run() response = dialog.run()
if response == gtk.RESPONSE_YES: if response == gtk.RESPONSE_YES:
self.configuration.layers = dialog.layers self.configuration.layers = dialog.layers
@ -696,9 +703,11 @@ class Builder(gtk.Window):
def show_load_template_dialog(self): def show_load_template_dialog(self):
dialog = gtk.FileChooserDialog("Load Template Files", self, dialog = gtk.FileChooserDialog("Load Template Files", self,
gtk.FILE_CHOOSER_ACTION_OPEN, gtk.FILE_CHOOSER_ACTION_OPEN)
(gtk.STOCK_CANCEL, gtk.RESPONSE_NO, button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
gtk.STOCK_OPEN, gtk.RESPONSE_YES)) HobAltButton.style_button(button)
button = dialog.add_button("Open", gtk.RESPONSE_YES)
HobButton.style_button(button)
filter = gtk.FileFilter() filter = gtk.FileFilter()
filter.set_name("Hob Files") filter.set_name("Hob Files")
filter.add_pattern("*.hob") filter.add_pattern("*.hob")
@ -712,9 +721,11 @@ class Builder(gtk.Window):
def show_save_template_dialog(self): def show_save_template_dialog(self):
dialog = gtk.FileChooserDialog("Save Template Files", self, dialog = gtk.FileChooserDialog("Save Template Files", self,
gtk.FILE_CHOOSER_ACTION_SAVE, gtk.FILE_CHOOSER_ACTION_SAVE)
(gtk.STOCK_CANCEL, gtk.RESPONSE_NO, button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
gtk.STOCK_SAVE, gtk.RESPONSE_YES)) HobAltButton.style_button(button)
button = dialog.add_button("Save", gtk.RESPONSE_YES)
HobButton.style_button(button)
dialog.set_current_name("hob") dialog.set_current_name("hob")
response = dialog.run() response = dialog.run()
if response == gtk.RESPONSE_YES: if response == gtk.RESPONSE_YES:
@ -725,15 +736,18 @@ class Builder(gtk.Window):
def show_load_my_images_dialog(self): def show_load_my_images_dialog(self):
dialog = ImageSelectionDialog(self.parameters.image_addr, self.parameters.image_types, dialog = ImageSelectionDialog(self.parameters.image_addr, self.parameters.image_types,
"Open My Images", self, "Open My Images", self,
gtk.FILE_CHOOSER_ACTION_SAVE, gtk.FILE_CHOOSER_ACTION_SAVE)
(gtk.STOCK_CANCEL, gtk.RESPONSE_NO, button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
gtk.STOCK_OPEN, gtk.RESPONSE_YES)) HobAltButton.style_button(button)
button = dialog.add_button("Open", gtk.RESPONSE_YES)
HobButton.style_button(button)
response = dialog.run() response = dialog.run()
if response == gtk.RESPONSE_YES: if response == gtk.RESPONSE_YES:
if not dialog.image_names: if not dialog.image_names:
lbl = "<b>No selections made</b>\nYou have not made any selections" lbl = "<b>No selections made</b>\nYou have not made any selections"
crumbs_dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) 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.run()
crumbs_dialog.destroy() crumbs_dialog.destroy()
dialog.destroy() dialog.destroy()
@ -756,9 +770,11 @@ class Builder(gtk.Window):
parent = self, parent = self,
flags = gtk.DIALOG_MODAL flags = gtk.DIALOG_MODAL
| gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_DESTROY_WITH_PARENT
| gtk.DIALOG_NO_SEPARATOR, | gtk.DIALOG_NO_SEPARATOR)
buttons = (gtk.STOCK_CANCEL, gtk.RESPONSE_NO, button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
"Save", gtk.RESPONSE_YES)) HobAltButton.style_button(button)
button = dialog.add_button("Save", gtk.RESPONSE_YES)
HobButton.style_button(button)
response = dialog.run() response = dialog.run()
if response == gtk.RESPONSE_YES: if response == gtk.RESPONSE_YES:
self.configuration = dialog.configuration self.configuration = dialog.configuration
@ -774,7 +790,8 @@ class Builder(gtk.Window):
if not image_name: if not image_name:
lbl = "<b>Please select an image to deploy.</b>" lbl = "<b>Please select an image to deploy.</b>"
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) 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.run()
dialog.destroy() dialog.destroy()
return return
@ -785,9 +802,11 @@ class Builder(gtk.Window):
parent = self, parent = self,
flags = gtk.DIALOG_MODAL flags = gtk.DIALOG_MODAL
| gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_DESTROY_WITH_PARENT
| gtk.DIALOG_NO_SEPARATOR, | gtk.DIALOG_NO_SEPARATOR)
buttons = ("Close", gtk.RESPONSE_NO, button = dialog.add_button("Close", gtk.RESPONSE_NO)
"Make usb image", gtk.RESPONSE_YES)) HobAltButton.style_button(button)
button = dialog.add_button("Make usb image", gtk.RESPONSE_YES)
HobButton.style_button(button)
response = dialog.run() response = dialog.run()
dialog.destroy() dialog.destroy()
@ -795,15 +814,18 @@ class Builder(gtk.Window):
if not image_name: if not image_name:
lbl = "<b>Please select an image to launch in QEMU.</b>" lbl = "<b>Please select an image to launch in QEMU.</b>"
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) 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.run()
dialog.destroy() dialog.destroy()
return return
dialog = gtk.FileChooserDialog("Load Kernel Files", self, dialog = gtk.FileChooserDialog("Load Kernel Files", self,
gtk.FILE_CHOOSER_ACTION_SAVE, gtk.FILE_CHOOSER_ACTION_SAVE)
(gtk.STOCK_CANCEL, gtk.RESPONSE_NO, button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
gtk.STOCK_OPEN, gtk.RESPONSE_YES)) HobAltButton.style_button(button)
button = dialog.add_button("Open", gtk.RESPONSE_YES)
HobButton.style_button(button)
filter = gtk.FileFilter() filter = gtk.FileFilter()
filter.set_name("Kernel Files") filter.set_name("Kernel Files")
filter.add_pattern("*.bin") filter.add_pattern("*.bin")
@ -835,7 +857,8 @@ class Builder(gtk.Window):
lbl = lbl + "source environment path:" + source_env_path + "\n" lbl = lbl + "source environment path:" + source_env_path + "\n"
lbl = lbl + "tmp path: " + tmp_path + "." lbl = lbl + "tmp path: " + tmp_path + "."
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) 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.run()
dialog.destroy() dialog.destroy()
@ -843,10 +866,12 @@ class Builder(gtk.Window):
_, selected_recipes = self.recipe_model.get_selected_recipes() _, selected_recipes = self.recipe_model.get_selected_recipes()
if selected_recipes and ask: if selected_recipes and ask:
lbl = "<b>Package list may be incomplete!</b>\nDo you want to build selected recipes" 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 = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO)
dialog.add_button(gtk.STOCK_NO, gtk.RESPONSE_NO) button = dialog.add_button("View packages", gtk.RESPONSE_NO)
dialog.add_button(gtk.STOCK_YES, gtk.RESPONSE_YES) HobAltButton.style_button(button)
button = dialog.add_button("Build packages", gtk.RESPONSE_YES)
HobButton.style_button(button)
dialog.set_default_response(gtk.RESPONSE_YES) dialog.set_default_response(gtk.RESPONSE_YES)
response = dialog.run() response = dialog.run()
dialog.destroy() dialog.destroy()
@ -879,8 +904,10 @@ class Builder(gtk.Window):
lbl = lbl + " well leave your build directory in an unusable state" lbl = lbl + " well leave your build directory in an unusable state"
lbl = lbl + " that requires manual steps to fix.\n" lbl = lbl + " that requires manual steps to fix.\n"
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING) dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING)
dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) button = dialog.add_button("Cancel", gtk.RESPONSE_CANCEL)
dialog.add_button("Force Stop", gtk.RESPONSE_YES) HobAltButton.style_button(button)
button = dialog.add_button("Force Stop", gtk.RESPONSE_YES)
HobButton.style_button(button)
else: else:
lbl = "<b>Stop build?</b>\n\nAre you sure you want to stop this" 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" lbl = lbl + " build?\n\n'Force Stop' will stop the build as quickly as"
@ -891,9 +918,12 @@ class Builder(gtk.Window):
lbl = lbl + " lengthy compilation phase is in progress this may take" lbl = lbl + " lengthy compilation phase is in progress this may take"
lbl = lbl + " some time." lbl = lbl + " some time."
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING) dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_WARNING)
dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) button = dialog.add_button("Cancel", gtk.RESPONSE_CANCEL)
dialog.add_button("Stop", gtk.RESPONSE_OK) HobAltButton.style_button(button)
dialog.add_button("Force Stop", gtk.RESPONSE_YES) 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() response = dialog.run()
dialog.destroy() dialog.destroy()
if response != gtk.RESPONSE_CANCEL: if response != gtk.RESPONSE_CANCEL:

View File

@ -28,7 +28,7 @@ import re
import subprocess import subprocess
import shlex import shlex
from bb.ui.crumbs.hobcolor import HobColors 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 from bb.ui.crumbs.progressbar import HobProgressBar
""" """
@ -137,9 +137,11 @@ class AdvancedSettingDialog (CrumbsDialog):
def entry_widget_select_path_cb(self, action, parent, entry): def entry_widget_select_path_cb(self, action, parent, entry):
dialog = gtk.FileChooserDialog("", parent, dialog = gtk.FileChooserDialog("", parent,
gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
(gtk.STOCK_CANCEL, gtk.RESPONSE_NO, button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
gtk.STOCK_OPEN, gtk.RESPONSE_YES)) HobAltButton.style_button(button)
button = dialog.add_button("Open", gtk.RESPONSE_YES)
HobButton.style_button(button)
response = dialog.run() response = dialog.run()
if response == gtk.RESPONSE_YES: if response == gtk.RESPONSE_YES:
path = dialog.get_filename() path = dialog.get_filename()
@ -307,7 +309,7 @@ class AdvancedSettingDialog (CrumbsDialog):
def __init__(self, title, configuration, all_image_types, def __init__(self, title, configuration, all_image_types,
all_package_formats, all_distros, all_sdk_machines, 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) super(AdvancedSettingDialog, self).__init__(title, parent, flags, buttons)
# class members from other objects # class members from other objects
@ -563,7 +565,7 @@ class DeployImageDialog (CrumbsDialog):
__dummy_usb__ = "--select a usb drive--" __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) super(DeployImageDialog, self).__init__(title, parent, flags, buttons)
self.image_path = image_path self.image_path = image_path
@ -713,9 +715,11 @@ class LayerSelectionDialog (CrumbsDialog):
def layer_widget_add_clicked_cb(self, action, layer_store, parent): def layer_widget_add_clicked_cb(self, action, layer_store, parent):
dialog = gtk.FileChooserDialog("Add new layer", parent, dialog = gtk.FileChooserDialog("Add new layer", parent,
gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
(gtk.STOCK_CANCEL, gtk.RESPONSE_NO, button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
gtk.STOCK_OPEN, gtk.RESPONSE_YES)) 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 = gtk.Label("Select the layer you wish to add")
label.show() label.show()
dialog.set_extra_widget(label) dialog.set_extra_widget(label)
@ -827,7 +831,7 @@ class LayerSelectionDialog (CrumbsDialog):
def add_leave_cb(self, button, event): def add_leave_cb(self, button, event):
self.im.set_from_file(hic.ICON_INDI_ADD_FILE) 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) super(LayerSelectionDialog, self).__init__(title, parent, flags, buttons)
# class members from other objects # 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) super(ImageSelectionDialog, self).__init__(title, parent, flags, buttons)
self.connect("response", self.response_cb) self.connect("response", self.response_cb)
@ -975,9 +979,11 @@ class ImageSelectionDialog (CrumbsDialog):
def select_path_cb(self, action, parent, entry): def select_path_cb(self, action, parent, entry):
dialog = gtk.FileChooserDialog("", parent, dialog = gtk.FileChooserDialog("", parent,
gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
(gtk.STOCK_CANCEL, gtk.RESPONSE_NO, button = dialog.add_button("Cancel", gtk.RESPONSE_NO)
gtk.STOCK_OPEN, gtk.RESPONSE_YES)) HobAltButton.style_button(button)
button = dialog.add_button("Open", gtk.RESPONSE_YES)
HobButton.style_button(button)
response = dialog.run() response = dialog.run()
if response == gtk.RESPONSE_YES: if response == gtk.RESPONSE_YES:
path = dialog.get_filename() path = dialog.get_filename()