summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui
diff options
context:
space:
mode:
authorAndrei Dinu <andrei.adrianx.dinu@intel.com>2013-03-05 17:36:25 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-03-19 13:51:24 +0000
commita4fdfa708844494b0a2e0d8c2199959c72832db2 (patch)
treed9c8d822a1f3a42a2aeac90c01af3364f143bf3f /bitbake/lib/bb/ui
parent5b4b8177b532ff58c93de5ec8bda4ac2f0e9d56f (diff)
downloadpoky-a4fdfa708844494b0a2e0d8c2199959c72832db2.tar.gz
bitbake: hig/propertydialog: new class added for the property windows.
this covers functionality for : recipe selection page package selection page information dialogs (Bitbake rev: 82cb844c92fcc71cefe7d7ddc110523c62185e9e) Signed-off-by: Andrei Dinu <andrei.adrianx.dinu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/ui')
-rw-r--r--bitbake/lib/bb/ui/crumbs/hig/propertydialog.py347
1 files changed, 347 insertions, 0 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py b/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py
new file mode 100644
index 0000000000..d68ef3a167
--- /dev/null
+++ b/bitbake/lib/bb/ui/crumbs/hig/propertydialog.py
@@ -0,0 +1,347 @@
1#
2# BitBake Graphical GTK User Interface
3#
4# Copyright (C) 2011-2013 Intel Corporation
5#
6# Authored by Andrei Dinu <andrei.adrianx.dinu@intel.com>
7#
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License version 2 as
10# published by the Free Software Foundation.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License along
18# with this program; if not, write to the Free Software Foundation, Inc.,
19# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
21import string
22import gtk
23import gobject
24import os
25import tempfile
26import glib
27from bb.ui.crumbs.hig.crumbsdialog import CrumbsDialog
28from bb.ui.crumbs.hig.settingsuihelper import SettingsUIHelper
29from bb.ui.crumbs.hig.crumbsmessagedialog import CrumbsMessageDialog
30from bb.ui.crumbs.hig.layerselectiondialog import LayerSelectionDialog
31
32"""
33The following are convenience classes for implementing GNOME HIG compliant
34BitBake GUI's
35In summary: spacing = 12px, border-width = 6px
36"""
37
38class PropertyDialog(CrumbsDialog):
39
40 def __init__(self, title, parent, information, flags, buttons=None):
41
42 super(PropertyDialog, self).__init__(title, parent, flags, buttons)
43
44 self.properties = information
45
46 if len(self.properties) == 10:
47 self.create_recipe_visual_elements()
48 elif len(self.properties) == 4:
49 self.create_package_visual_elements()
50 else:
51 self.create_information_visual_elements()
52
53
54 def create_information_visual_elements(self):
55
56 HOB_ICON_BASE_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), ("icons/"))
57 ICON_PACKAGES_DISPLAY_FILE = os.path.join(HOB_ICON_BASE_DIR, ('info/info_display.png'))
58
59 self.table = gtk.Table(2,2,False)
60 self.table.set_row_spacings(0)
61 self.table.set_col_spacings(0)
62
63 self.image = gtk.Image()
64 self.image.set_from_file(ICON_PACKAGES_DISPLAY_FILE)
65 self.image.set_property("xalign",0)
66 #self.vbox.add(self.image)
67
68 image_info = self.properties.split("*")[0]
69 info = self.properties.split("*")[1]
70
71 vbox = gtk.VBox(True, spacing=0)
72
73 self.label_short = gtk.Label()
74 self.label_short.set_line_wrap(False)
75 self.label_short.set_markup(" " + image_info)
76 self.label_short.set_property("xalign", 0)
77
78 self.info_label = gtk.Label()
79 self.info_label.set_line_wrap(True)
80 self.info_label.set_markup(info)
81 self.info_label.set_property("xalign", 1)
82
83 self.table.attach(self.image, 0,1,0,1, xoptions=gtk.FILL|gtk.EXPAND, yoptions=gtk.FILL)
84 self.table.attach(self.label_short, 0,1,0,1, xoptions=gtk.FILL|gtk.EXPAND, yoptions=gtk.FILL)
85 self.table.attach(self.info_label, 0,1,1,2, xoptions=gtk.FILL|gtk.EXPAND, yoptions=gtk.FILL)
86
87 self.vbox.add(self.table)
88
89
90 def create_package_visual_elements(self):
91
92 name = self.properties['name']
93 binb = self.properties['binb']
94 size = self.properties['size']
95 recipe = self.properties['recipe']
96
97 #cleaning out the recipe variable
98 recipe = recipe.split("+")[0]
99
100 vbox = gtk.VBox(True,spacing = 0)
101
102 ###################################### NAME ROW + COL #################################
103
104 self.label_short = gtk.Label()
105 self.label_short.set_size_request(300,-1)
106 self.label_short.set_selectable(True)
107 self.label_short.set_line_wrap(True)
108 self.label_short.set_markup("<span weight=\"bold\">Name: </span>" + name)
109 self.label_short.set_property("xalign", 0)
110
111 self.vbox.add(self.label_short)
112
113 ###################################### SIZE ROW + COL ######################################
114
115 self.label_short = gtk.Label()
116 self.label_short.set_size_request(300,-1)
117 self.label_short.set_selectable(True)
118 self.label_short.set_line_wrap(True)
119 self.label_short.set_markup("<span weight=\"bold\">Size: </span>" + size)
120 self.label_short.set_property("xalign", 0)
121
122 self.vbox.add(self.label_short)
123
124 ##################################### RECIPE ROW + COL #########################################
125
126 self.label_short = gtk.Label()
127 self.label_short.set_size_request(300,-1)
128 self.label_short.set_selectable(True)
129 self.label_short.set_line_wrap(True)
130 self.label_short.set_markup("<span weight=\"bold\">Recipe: </span>" + recipe)
131 self.label_short.set_property("xalign", 0)
132
133 self.vbox.add(self.label_short)
134
135 ##################################### BINB ROW + COL #######################################
136
137 if binb != '':
138 self.label_short = gtk.Label()
139 self.label_short.set_selectable(True)
140 self.label_short.set_line_wrap(True)
141 self.label_short.set_markup("<span weight=\"bold\">Brought in by: </span>")
142 self.label_short.set_property("xalign", 0)
143
144 self.label_info = gtk.Label()
145 self.label_info.set_size_request(300,-1)
146 self.label_info.set_selectable(True)
147 self.label_info.set_line_wrap(True)
148 self.label_info.set_markup(binb)
149 self.label_info.set_property("xalign", 0)
150
151 self.vbox.add(self.label_short)
152 self.vbox.add(self.label_info)
153
154 self.vbox.show_all()
155
156
157 def create_recipe_visual_elements(self):
158
159 summary = self.properties['summary']
160 name = self.properties['name']
161 version = self.properties['version']
162 revision = self.properties['revision']
163 binb = self.properties['binb']
164 group = self.properties['group']
165 license = self.properties['license']
166 homepage = self.properties['homepage']
167 bugtracker = self.properties['bugtracker']
168 description = self.properties['description']
169
170 #cleaning out the version variable and also the summary
171 version = version.split(":")[1]
172 if len(version) > 30:
173 version = version.split("+")[0]
174 else:
175 version = version.split("-")[0]
176 license = license.replace("&" , "and")
177 if (homepage == ''):
178 homepage = 'unknown'
179 if (bugtracker == ''):
180 bugtracker = 'unknown'
181 summary = summary.split("+")[0]
182
183 #calculating the rows needed for the table
184 binb_items_count = len(binb.split(','))
185 binb_items = binb.split(',')
186
187 vbox = gtk.VBox(True,spacing = 0)
188
189 ######################################## SUMMARY LABEL #########################################
190
191 if summary != '':
192 self.label_short = gtk.Label()
193 self.label_short.set_size_request(300,-1)
194 self.label_short.set_selectable(True)
195 self.label_short.set_line_wrap(True)
196 self.label_short.set_markup("<b>" + summary + "</b>")
197 self.label_short.set_property("xalign", 0)
198
199 self.vbox.pack_start(self.label_short, expand=False, fill=False, padding=0)
200
201 ########################################## NAME ROW + COL #######################################
202
203 self.label_short = gtk.Label()
204 self.label_short.set_size_request(300,-1)
205 self.label_short.set_selectable(True)
206 self.label_short.set_line_wrap(True)
207 self.label_short.set_markup("<span weight=\"bold\">Name: </span>" + name)
208 self.label_short.set_property("xalign", 0)
209
210 self.vbox.add(self.label_short)
211
212 ####################################### VERSION ROW + COL ####################################
213
214 self.label_short = gtk.Label()
215 self.label_short.set_size_request(300,-1)
216 self.label_short.set_selectable(True)
217 self.label_short.set_line_wrap(True)
218 self.label_short.set_markup("<span weight=\"bold\">Version: </span>" + version)
219 self.label_short.set_property("xalign", 0)
220
221 self.vbox.add(self.label_short)
222
223 ##################################### REVISION ROW + COL #####################################
224
225 self.label_short = gtk.Label()
226 self.label_short.set_size_request(300,-1)
227 self.label_short.set_line_wrap(True)
228 self.label_short.set_selectable(True)
229 self.label_short.set_markup("<span weight=\"bold\">Revision: </span>" + revision)
230 self.label_short.set_property("xalign", 0)
231
232 self.vbox.add(self.label_short)
233
234 ################################## GROUP ROW + COL ############################################
235
236 self.label_short = gtk.Label()
237 self.label_short.set_size_request(300,-1)
238 self.label_short.set_selectable(True)
239 self.label_short.set_line_wrap(True)
240 self.label_short.set_markup("<span weight=\"bold\">Group: </span>" + group)
241 self.label_short.set_property("xalign", 0)
242
243 self.vbox.add(self.label_short)
244
245 ################################# HOMEPAGE ROW + COL ############################################
246
247 if homepage != 'unknown':
248 self.label_info = gtk.Label()
249 self.label_info.set_selectable(True)
250 self.label_info.set_line_wrap(True)
251 if len(homepage) > 35:
252 self.label_info.set_markup("<a href=\"" + homepage + "\">" + homepage[0:35] + "..." + "</a>")
253 else:
254 self.label_info.set_markup("<a href=\"" + homepage + "\">" + homepage[0:60] + "</a>")
255
256 self.label_info.set_property("xalign", 0)
257
258 self.label_short = gtk.Label()
259 self.label_short.set_size_request(300,-1)
260 self.label_short.set_selectable(True)
261 self.label_short.set_line_wrap(True)
262 self.label_short.set_markup("<b>Homepage: </b>")
263 self.label_short.set_property("xalign", 0)
264
265 self.vbox.add(self.label_short)
266 self.vbox.add(self.label_info)
267
268 ################################# BUGTRACKER ROW + COL ###########################################
269
270 if bugtracker != 'unknown':
271 self.label_info = gtk.Label()
272 self.label_info.set_selectable(True)
273 self.label_info.set_line_wrap(True)
274 if len(bugtracker) > 35:
275 self.label_info.set_markup("<a href=\"" + bugtracker + "\">" + bugtracker[0:35] + "..." + "</a>")
276 else:
277 self.label_info.set_markup("<a href=\"" + bugtracker + "\">" + bugtracker[0:60] + "</a>")
278 self.label_info.set_property("xalign", 0)
279
280 self.label_short = gtk.Label()
281 self.label_short.set_size_request(300,-1)
282 self.label_short.set_selectable(True)
283 self.label_short.set_line_wrap(True)
284 self.label_short.set_markup("<b>Bugtracker: </b>")
285 self.label_short.set_property("xalign", 0)
286
287 self.vbox.add(self.label_short)
288 self.vbox.add(self.label_info)
289
290 ################################# LICENSE ROW + COL ############################################
291
292 self.label_info = gtk.Label()
293 self.label_info.set_size_request(300,-1)
294 self.label_info.set_selectable(True)
295 self.label_info.set_line_wrap(True)
296 self.label_info.set_markup(license)
297 self.label_info.set_property("xalign", 0)
298
299 self.label_short = gtk.Label()
300 self.label_short.set_selectable(True)
301 self.label_short.set_line_wrap(True)
302 self.label_short.set_markup("<span weight=\"bold\">License: </span>")
303 self.label_short.set_property("xalign", 0)
304
305 self.vbox.add(self.label_short)
306 self.vbox.add(self.label_info)
307
308 ################################### BINB ROW+COL #############################################
309
310 if binb != '':
311 self.label_short = gtk.Label()
312 self.label_short.set_selectable(True)
313 self.label_short.set_line_wrap(True)
314 self.label_short.set_markup("<span weight=\"bold\">Brought in by: </span>")
315 self.label_short.set_property("xalign", 0)
316
317 self.label_info = gtk.Label()
318 self.label_info.set_size_request(300,-1)
319 self.label_info.set_selectable(True)
320 self.label_info.set_markup(binb)
321 self.label_info.set_property("xalign", 0)
322 self.label_info.set_line_wrap(True)
323
324 self.vbox.add(self.label_short)
325 self.vbox.add(self.label_info)
326
327 ################################ DESCRIPTION TAG ROW #################################################
328
329 self.label_short = gtk.Label()
330 self.label_short.set_line_wrap(True)
331 self.label_short.set_markup("<span weight=\"bold\">Description </span>")
332 self.label_short.set_property("xalign", 0)
333 self.vbox.add(self.label_short)
334
335 ################################ DESCRIPTION INFORMATION ROW ##########################################
336
337 hbox = gtk.HBox(True,spacing = 0)
338
339 self.label_short = gtk.Label()
340 self.label_short.set_size_request(300,-1)
341 self.label_short.set_selectable(True)
342 self.label_short.set_text(description)
343 self.label_short.set_line_wrap(True)
344 self.label_short.set_property("xalign", 0)
345 self.vbox.add(self.label_short)
346
347 self.vbox.show_all()