123 lines
4.3 KiB
Python
123 lines
4.3 KiB
Python
#
|
|
# BitBake Graphical GTK User Interface
|
|
#
|
|
# Copyright (C) 2011-2012 Intel Corporation
|
|
#
|
|
# Authored by Joshua Lock <josh@linux.intel.com>
|
|
# Authored by Dongxiao Xu <dongxiao.xu@intel.com>
|
|
# Authored by Shane Wang <shane.wang@intel.com>
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License version 2 as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
import gtk
|
|
import os
|
|
from bb.ui.crumbs.hobwidget import HobInfoButton, HobButton, HobAltButton
|
|
|
|
"""
|
|
The following are convenience classes for implementing GNOME HIG compliant
|
|
BitBake GUI's
|
|
In summary: spacing = 12px, border-width = 6px
|
|
"""
|
|
|
|
class SettingsUIHelper():
|
|
|
|
def gen_label_widget(self, content):
|
|
label = gtk.Label()
|
|
label.set_alignment(0, 0)
|
|
label.set_markup(content)
|
|
label.show()
|
|
return label
|
|
|
|
def gen_label_info_widget(self, content, tooltip):
|
|
table = gtk.Table(1, 10, False)
|
|
label = self.gen_label_widget(content)
|
|
info = HobInfoButton(tooltip, self)
|
|
table.attach(label, 0, 1, 0, 1, xoptions=gtk.FILL)
|
|
table.attach(info, 1, 2, 0, 1, xoptions=gtk.FILL, xpadding=10)
|
|
return table
|
|
|
|
def gen_spinner_widget(self, content, lower, upper, tooltip=""):
|
|
hbox = gtk.HBox(False, 12)
|
|
adjust = gtk.Adjustment(value=content, lower=lower, upper=upper, step_incr=1)
|
|
spinner = gtk.SpinButton(adjustment=adjust, climb_rate=1, digits=0)
|
|
|
|
spinner.set_value(content)
|
|
hbox.pack_start(spinner, expand=False, fill=False)
|
|
|
|
info = HobInfoButton(tooltip, self)
|
|
hbox.pack_start(info, expand=False, fill=False)
|
|
|
|
hbox.show_all()
|
|
return hbox, spinner
|
|
|
|
def gen_combo_widget(self, curr_item, all_item, tooltip=""):
|
|
hbox = gtk.HBox(False, 12)
|
|
combo = gtk.combo_box_new_text()
|
|
hbox.pack_start(combo, expand=False, fill=False)
|
|
|
|
index = 0
|
|
for item in all_item or []:
|
|
combo.append_text(item)
|
|
if item == curr_item:
|
|
combo.set_active(index)
|
|
index += 1
|
|
|
|
info = HobInfoButton(tooltip, self)
|
|
hbox.pack_start(info, expand=False, fill=False)
|
|
|
|
hbox.show_all()
|
|
return hbox, combo
|
|
|
|
def entry_widget_select_path_cb(self, action, parent, entry):
|
|
dialog = gtk.FileChooserDialog("", parent,
|
|
gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
|
|
text = entry.get_text()
|
|
dialog.set_current_folder(text if len(text) > 0 else os.getcwd())
|
|
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()
|
|
entry.set_text(path)
|
|
|
|
dialog.destroy()
|
|
|
|
def gen_entry_widget(self, content, parent, tooltip="", need_button=True):
|
|
hbox = gtk.HBox(False, 12)
|
|
entry = gtk.Entry()
|
|
entry.set_text(content)
|
|
entry.set_size_request(350,30)
|
|
|
|
if need_button:
|
|
table = gtk.Table(1, 10, False)
|
|
hbox.pack_start(table, expand=True, fill=True)
|
|
table.attach(entry, 0, 9, 0, 1, xoptions=gtk.SHRINK)
|
|
image = gtk.Image()
|
|
image.set_from_stock(gtk.STOCK_OPEN,gtk.ICON_SIZE_BUTTON)
|
|
open_button = gtk.Button()
|
|
open_button.set_image(image)
|
|
open_button.connect("clicked", self.entry_widget_select_path_cb, parent, entry)
|
|
table.attach(open_button, 9, 10, 0, 1, xoptions=gtk.SHRINK)
|
|
else:
|
|
hbox.pack_start(entry, expand=True, fill=True)
|
|
|
|
if tooltip != "":
|
|
info = HobInfoButton(tooltip, self)
|
|
hbox.pack_start(info, expand=False, fill=False)
|
|
|
|
hbox.show_all()
|
|
return hbox, entry
|