mirror of
https://git.yoctoproject.org/poky
synced 2026-09-16 00:49:32 +02:00
bitbake: hob: Error reports are done in a clearer way
For long errors (bigger than 200 letters), the text box is scrollable and resizable and text is selectable. Additionaly, all message dialogs are modal. Otherwise, a user could still interact with hob even in an error case, leading to potential problems. See design details in related bugs. Fixes [YOCTO #2960], [YOCTO #2983] (Bitbake rev: be8bf02f2b347edf5514cafc6cb6a44f71118736) Signed-off-by: Cristian Iorga <cristian.iorga@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
1a85fc8f5b
commit
183ffd2048
@@ -849,9 +849,8 @@ class Builder(gtk.Window):
|
|||||||
self.generate_image_async(True)
|
self.generate_image_async(True)
|
||||||
|
|
||||||
def show_error_dialog(self, msg):
|
def show_error_dialog(self, msg):
|
||||||
lbl = "<b>Error</b>\n"
|
lbl = "<b>Hob found an error</b>\n"
|
||||||
lbl = lbl + "%s\n\n" % glib.markup_escape_text(msg)
|
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_ERROR, msg)
|
||||||
dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_ERROR)
|
|
||||||
button = dialog.add_button("Close", gtk.RESPONSE_OK)
|
button = dialog.add_button("Close", gtk.RESPONSE_OK)
|
||||||
HobButton.style_button(button)
|
HobButton.style_button(button)
|
||||||
response = dialog.run()
|
response = dialog.run()
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
|
||||||
import glob
|
import glob
|
||||||
|
import glib
|
||||||
import gtk
|
import gtk
|
||||||
import gobject
|
import gobject
|
||||||
import hashlib
|
import hashlib
|
||||||
@@ -236,18 +237,18 @@ class CrumbsMessageDialog(CrumbsDialog):
|
|||||||
A GNOME HIG compliant dialog widget.
|
A GNOME HIG compliant dialog widget.
|
||||||
Add buttons with gtk.Dialog.add_button or gtk.Dialog.add_buttons
|
Add buttons with gtk.Dialog.add_button or gtk.Dialog.add_buttons
|
||||||
"""
|
"""
|
||||||
def __init__(self, parent=None, label="", icon=gtk.STOCK_INFO):
|
def __init__(self, parent=None, label="", icon=gtk.STOCK_INFO, msg=""):
|
||||||
super(CrumbsMessageDialog, self).__init__("", parent, gtk.DIALOG_DESTROY_WITH_PARENT)
|
super(CrumbsMessageDialog, self).__init__("", parent, gtk.DIALOG_MODAL)
|
||||||
|
|
||||||
self.set_border_width(6)
|
self.set_border_width(6)
|
||||||
self.vbox.set_property("spacing", 12)
|
self.vbox.set_property("spacing", 12)
|
||||||
self.action_area.set_property("spacing", 12)
|
self.action_area.set_property("spacing", 12)
|
||||||
self.action_area.set_property("border-width", 6)
|
self.action_area.set_property("border-width", 6)
|
||||||
|
|
||||||
first_row = gtk.HBox(spacing=12)
|
first_column = gtk.HBox(spacing=12)
|
||||||
first_row.set_property("border-width", 6)
|
first_column.set_property("border-width", 6)
|
||||||
first_row.show()
|
first_column.show()
|
||||||
self.vbox.add(first_row)
|
self.vbox.add(first_column)
|
||||||
|
|
||||||
self.icon = gtk.Image()
|
self.icon = gtk.Image()
|
||||||
# We have our own Info icon which should be used in preference of the stock icon
|
# We have our own Info icon which should be used in preference of the stock icon
|
||||||
@@ -255,15 +256,43 @@ class CrumbsMessageDialog(CrumbsDialog):
|
|||||||
self.icon.set_from_stock(self.icon_chk.check_stock_icon(icon), gtk.ICON_SIZE_DIALOG)
|
self.icon.set_from_stock(self.icon_chk.check_stock_icon(icon), gtk.ICON_SIZE_DIALOG)
|
||||||
self.icon.set_property("yalign", 0.00)
|
self.icon.set_property("yalign", 0.00)
|
||||||
self.icon.show()
|
self.icon.show()
|
||||||
first_row.add(self.icon)
|
first_column.pack_start(self.icon, expand=False, fill=True, padding=0)
|
||||||
|
|
||||||
self.label = gtk.Label()
|
if 0 <= len(msg) < 200:
|
||||||
self.label.set_use_markup(True)
|
lbl = label + "%s" % glib.markup_escape_text(msg)
|
||||||
self.label.set_line_wrap(True)
|
self.label_short = gtk.Label()
|
||||||
self.label.set_markup(label)
|
self.label_short.set_use_markup(True)
|
||||||
self.label.set_property("yalign", 0.00)
|
self.label_short.set_line_wrap(True)
|
||||||
self.label.show()
|
self.label_short.set_markup(lbl)
|
||||||
first_row.add(self.label)
|
self.label_short.set_property("yalign", 0.00)
|
||||||
|
self.label_short.show()
|
||||||
|
first_column.add(self.label_short)
|
||||||
|
else:
|
||||||
|
second_row = gtk.VBox(spacing=12)
|
||||||
|
second_row.set_property("border-width", 6)
|
||||||
|
self.label_long = gtk.Label()
|
||||||
|
self.label_long.set_use_markup(True)
|
||||||
|
self.label_long.set_line_wrap(True)
|
||||||
|
self.label_long.set_markup(label)
|
||||||
|
self.label_long.set_alignment(0.0, 0.0)
|
||||||
|
second_row.pack_start(self.label_long, expand=False, fill=False, padding=0)
|
||||||
|
self.label_long.show()
|
||||||
|
self.textWindow = gtk.ScrolledWindow()
|
||||||
|
self.textWindow.set_shadow_type(gtk.SHADOW_IN)
|
||||||
|
self.msgView = gtk.TextView()
|
||||||
|
self.msgView.set_editable(False)
|
||||||
|
self.msgView.set_wrap_mode(gtk.WRAP_WORD)
|
||||||
|
self.msgView.set_cursor_visible(False)
|
||||||
|
self.msgView.set_size_request(300, 300)
|
||||||
|
self.buf = gtk.TextBuffer()
|
||||||
|
self.buf.set_text(msg)
|
||||||
|
self.msgView.set_buffer(self.buf)
|
||||||
|
self.textWindow.add(self.msgView)
|
||||||
|
self.msgView.show()
|
||||||
|
second_row.add(self.textWindow)
|
||||||
|
self.textWindow.show()
|
||||||
|
first_column.add(second_row)
|
||||||
|
second_row.show()
|
||||||
|
|
||||||
#
|
#
|
||||||
# SimpleSettings Dialog
|
# SimpleSettings Dialog
|
||||||
|
|||||||
Reference in New Issue
Block a user