diff options
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py')
-rw-r--r-- | bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py b/bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py new file mode 100644 index 0000000000..097ce7b027 --- /dev/null +++ b/bitbake/lib/bb/ui/crumbs/hig/crumbsmessagedialog.py | |||
@@ -0,0 +1,95 @@ | |||
1 | # | ||
2 | # BitBake Graphical GTK User Interface | ||
3 | # | ||
4 | # Copyright (C) 2011-2012 Intel Corporation | ||
5 | # | ||
6 | # Authored by Joshua Lock <josh@linux.intel.com> | ||
7 | # Authored by Dongxiao Xu <dongxiao.xu@intel.com> | ||
8 | # Authored by Shane Wang <shane.wang@intel.com> | ||
9 | # | ||
10 | # This program is free software; you can redistribute it and/or modify | ||
11 | # it under the terms of the GNU General Public License version 2 as | ||
12 | # published by the Free Software Foundation. | ||
13 | # | ||
14 | # This program is distributed in the hope that it will be useful, | ||
15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | # GNU General Public License for more details. | ||
18 | # | ||
19 | # You should have received a copy of the GNU General Public License along | ||
20 | # with this program; if not, write to the Free Software Foundation, Inc., | ||
21 | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
22 | |||
23 | import glib | ||
24 | import gtk | ||
25 | from bb.ui.crumbs.hobwidget import HobIconChecker | ||
26 | from bb.ui.crumbs.hig.crumbsdialog import CrumbsDialog | ||
27 | |||
28 | """ | ||
29 | The following are convenience classes for implementing GNOME HIG compliant | ||
30 | BitBake GUI's | ||
31 | In summary: spacing = 12px, border-width = 6px | ||
32 | """ | ||
33 | |||
34 | class CrumbsMessageDialog(CrumbsDialog): | ||
35 | """ | ||
36 | A GNOME HIG compliant dialog widget. | ||
37 | Add buttons with gtk.Dialog.add_button or gtk.Dialog.add_buttons | ||
38 | """ | ||
39 | def __init__(self, parent=None, label="", icon=gtk.STOCK_INFO, msg=""): | ||
40 | super(CrumbsMessageDialog, self).__init__("", parent, gtk.DIALOG_MODAL) | ||
41 | |||
42 | self.set_border_width(6) | ||
43 | self.vbox.set_property("spacing", 12) | ||
44 | self.action_area.set_property("spacing", 12) | ||
45 | self.action_area.set_property("border-width", 6) | ||
46 | |||
47 | first_column = gtk.HBox(spacing=12) | ||
48 | first_column.set_property("border-width", 6) | ||
49 | first_column.show() | ||
50 | self.vbox.add(first_column) | ||
51 | |||
52 | self.icon = gtk.Image() | ||
53 | # We have our own Info icon which should be used in preference of the stock icon | ||
54 | self.icon_chk = HobIconChecker() | ||
55 | self.icon.set_from_stock(self.icon_chk.check_stock_icon(icon), gtk.ICON_SIZE_DIALOG) | ||
56 | self.icon.set_property("yalign", 0.00) | ||
57 | self.icon.show() | ||
58 | first_column.pack_start(self.icon, expand=False, fill=True, padding=0) | ||
59 | |||
60 | if 0 <= len(msg) < 200: | ||
61 | lbl = label + "%s" % glib.markup_escape_text(msg) | ||
62 | self.label_short = gtk.Label() | ||
63 | self.label_short.set_use_markup(True) | ||
64 | self.label_short.set_line_wrap(True) | ||
65 | self.label_short.set_markup(lbl) | ||
66 | self.label_short.set_property("yalign", 0.00) | ||
67 | self.label_short.show() | ||
68 | first_column.add(self.label_short) | ||
69 | else: | ||
70 | second_row = gtk.VBox(spacing=12) | ||
71 | second_row.set_property("border-width", 6) | ||
72 | self.label_long = gtk.Label() | ||
73 | self.label_long.set_use_markup(True) | ||
74 | self.label_long.set_line_wrap(True) | ||
75 | self.label_long.set_markup(label) | ||
76 | self.label_long.set_alignment(0.0, 0.0) | ||
77 | second_row.pack_start(self.label_long, expand=False, fill=False, padding=0) | ||
78 | self.label_long.show() | ||
79 | self.textWindow = gtk.ScrolledWindow() | ||
80 | self.textWindow.set_shadow_type(gtk.SHADOW_IN) | ||
81 | self.textWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) | ||
82 | self.msgView = gtk.TextView() | ||
83 | self.msgView.set_editable(False) | ||
84 | self.msgView.set_wrap_mode(gtk.WRAP_WORD) | ||
85 | self.msgView.set_cursor_visible(False) | ||
86 | self.msgView.set_size_request(300, 300) | ||
87 | self.buf = gtk.TextBuffer() | ||
88 | self.buf.set_text(msg) | ||
89 | self.msgView.set_buffer(self.buf) | ||
90 | self.textWindow.add(self.msgView) | ||
91 | self.msgView.show() | ||
92 | second_row.add(self.textWindow) | ||
93 | self.textWindow.show() | ||
94 | first_column.add(second_row) | ||
95 | second_row.show() | ||