1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-31 12:49:46 +00:00

Hob: fixed visually differentiate warnings and errors icon in building log

fixed the bug of 'error' and 'warning' icon is not constaintly with hob ui design

[YOCTO #2097]

(From Poky rev: 5b4f379b5341222e2678043f078b3d33c0556a86)

(Bitbake rev: 3807a95cd48a01486b3ecd5360a59ddfc3a3b6d6)

Signed-off-by: Liming An <limingx.l.an@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Liming An
2012-03-23 23:32:17 +08:00
committed by Richard Purdie
parent 673a8f44c5
commit b99680f349
+47 -20
View File
@@ -58,6 +58,8 @@ class hic:
ICON_INDI_ADD_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/add.png')) ICON_INDI_ADD_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/add.png'))
ICON_INDI_ADD_HOVER_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/add-hover.png')) ICON_INDI_ADD_HOVER_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/add-hover.png'))
ICON_INDI_REFRESH_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/refresh.png')) ICON_INDI_REFRESH_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/refresh.png'))
ICON_INDI_ALERT_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/alert.png'))
ICON_INDI_TICK_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/tick.png'))
class hcc: class hcc:
@@ -795,6 +797,44 @@ class HobWarpCellRendererText(gtk.CellRendererText):
gobject.type_register(HobWarpCellRendererText) gobject.type_register(HobWarpCellRendererText)
class HobIconChecker(hic):
def set_hob_icon_to_stock_icon(self, file_path, stock_id=""):
try:
pixbuf = gtk.gdk.pixbuf_new_from_file(file_path)
except Exception, e:
return None
if stock_id and (gtk.icon_factory_lookup_default(stock_id) == None):
icon_factory = gtk.IconFactory()
icon_factory.add_default()
icon_factory.add(stock_id, gtk.IconSet(pixbuf))
gtk.stock_add([(stock_id, '_label', 0, 0, '')])
return icon_factory.lookup(stock_id)
return None
"""
For make hob icon consistently by request, and avoid icon view diff by system or gtk version, we use some 'hob icon' to replace the 'gtk icon'.
this function check the stock_id and make hob_id to replaced the gtk_id then return it or ""
"""
def check_stock_icon(self, stock_name=""):
HOB_CHECK_STOCK_NAME = {
('hic-dialog-info', 'gtk-dialog-info', 'dialog-info') : self.ICON_INFO_DISPLAY_FILE,
('hic-ok', 'gtk-ok', 'ok') : self.ICON_INDI_TICK_FILE,
('hic-dialog-error', 'gtk-dialog-error', 'dialog-error') : self.ICON_INDI_ERROR_FILE,
('hic-dialog-warning', 'gtk-dialog-warning', 'dialog-warning') : self.ICON_INDI_ALERT_FILE,
}
valid_stock_id = stock_name
if stock_name:
for names, path in HOB_CHECK_STOCK_NAME.iteritems():
if stock_name in names:
valid_stock_id = names[0]
if not gtk.icon_factory_lookup_default(valid_stock_id):
self.set_hob_icon_to_stock_icon(path, valid_stock_id)
return valid_stock_id
class RefreshRuningController(gobject.GObject): class RefreshRuningController(gobject.GObject):
def __init__(self, widget=None, iter=None): def __init__(self, widget=None, iter=None):
gobject.GObject.__init__(self) gobject.GObject.__init__(self)
@@ -885,23 +925,8 @@ class HobCellRendererPixbuf(gtk.CellRendererPixbuf):
gtk.CellRendererPixbuf.__init__(self) gtk.CellRendererPixbuf.__init__(self)
self.control = RefreshRuningController() self.control = RefreshRuningController()
# create default refrensh stock icon # create default refrensh stock icon
self.set_hob_icon_to_stock_icon(hic.ICON_INDI_REFRESH_FILE, "task-refresh") self.checker = HobIconChecker()
self.checker.set_hob_icon_to_stock_icon(hic.ICON_INDI_REFRESH_FILE, "task-refresh")
def set_hob_icon_to_stock_icon(self, file_path, stock_id=""):
try:
pixbuf = gtk.gdk.pixbuf_new_from_file(file_path)
except Exception, e:
return None
if pixbuf and stock_id and (gtk.icon_factory_lookup_default(stock_id) == None):
icon_factory = gtk.IconFactory()
icon_factory.add_default()
icon_factory.add(stock_id, gtk.IconSet(pixbuf))
gtk.stock_add([(stock_id, '_label', 0, 0, '')])
return icon_factory.lookup(stock_id)
return None
def get_pixbuf_from_stock_icon(self, widget, stock_id="", size=gtk.ICON_SIZE_DIALOG): def get_pixbuf_from_stock_icon(self, widget, stock_id="", size=gtk.ICON_SIZE_DIALOG):
if widget and stock_id and gtk.icon_factory_lookup_default(stock_id): if widget and stock_id and gtk.icon_factory_lookup_default(stock_id):
@@ -909,9 +934,11 @@ class HobCellRendererPixbuf(gtk.CellRendererPixbuf):
return None return None
def set_icon_name_to_id(self, name): def set_icon_name_to_id(self, new_name):
if name and type(name) == str: if new_name and type(new_name) == str:
if name.startswith("gtk") or name == "task-refresh": # check the name is need to transfer to hob icon or not
name = self.checker.check_stock_icon(new_name)
if name.startswith("hic") or name.startswith("gtk") or name == "task-refresh":
stock_id = name stock_id = name
else: else:
stock_id = 'gtk-' + name stock_id = 'gtk-' + name