* [PATCH 0/5] Hob: bug fixes
@ 2012-03-26 10:41 Liming An
2012-03-26 10:41 ` [PATCH 1/5] Hob: add refresh icon as ui request in building log Liming An
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Liming An @ 2012-03-26 10:41 UTC (permalink / raw)
To: bitbake-devel
These patches are to fix bugs for Hob.
The following changes since commit fb3e59c88eda5ee3a53ad04aafaa7b749ecc1cc2:
core-image-minimal-mtdutils.bb: Simple DESCRIPTION grammar fix. (2012-03-25 12:27:43 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib limx/hob-bug-fixes-new
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=limx/hob-bug-fixes-new
Liming An (5):
Hob: add refresh icon as ui request in building log
Hob: fixed visually differentiate warnings and errors icon in
building log
Hob: change the recipe pasing error dialog icon from 'dialog-info' to
'dialog-error'
Hob: use hob icon checker to check the gtk icon for make the icon
constaintly
HOB: Splited configuration info of building log to a independently
page from the log page
bitbake/lib/bb/ui/crumbs/builddetailspage.py | 10 +-
bitbake/lib/bb/ui/crumbs/builder.py | 2 +-
bitbake/lib/bb/ui/crumbs/hig.py | 8 +-
bitbake/lib/bb/ui/crumbs/hobwidget.py | 196 ++++++++++++++++++++++++++
bitbake/lib/bb/ui/crumbs/runningbuild.py | 46 ++++---
5 files changed, 236 insertions(+), 26 deletions(-)
--
1.7.5.4
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH 1/5] Hob: add refresh icon as ui request in building log 2012-03-26 10:41 [PATCH 0/5] Hob: bug fixes Liming An @ 2012-03-26 10:41 ` Liming An 2012-03-27 1:10 ` Wang, Shane 2012-03-26 10:41 ` [PATCH 2/5] Hob: fixed visually differentiate warnings and errors icon " Liming An ` (3 subsequent siblings) 4 siblings, 1 reply; 10+ messages in thread From: Liming An @ 2012-03-26 10:41 UTC (permalink / raw) To: bitbake-devel add a refresh icon to indicator the running task, for avoid add more heavy to bitbake building process, increased the timer interval counter, and decreased the refresh icon render size. Signed-off-by: Liming An <limingx.l.an@intel.com> --- bitbake/lib/bb/ui/crumbs/hobwidget.py | 169 ++++++++++++++++++++++++++++++ bitbake/lib/bb/ui/crumbs/runningbuild.py | 20 +++- 2 files changed, 185 insertions(+), 4 deletions(-) diff --git a/bitbake/lib/bb/ui/crumbs/hobwidget.py b/bitbake/lib/bb/ui/crumbs/hobwidget.py index 8936f0a..ffdd551 100644 --- a/bitbake/lib/bb/ui/crumbs/hobwidget.py +++ b/bitbake/lib/bb/ui/crumbs/hobwidget.py @@ -57,6 +57,7 @@ class hic: ICON_INDI_REMOVE_HOVER_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/remove-hover.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_REFRESH_FILE = os.path.join(HOB_ICON_BASE_DIR, ('indicators/refresh.png')) class hcc: @@ -793,3 +794,171 @@ class HobWarpCellRendererText(gtk.CellRendererText): return adjwidth gobject.type_register(HobWarpCellRendererText) + +class RefreshRuningController(gobject.GObject): + def __init__(self, widget=None, iter=None): + gobject.GObject.__init__(self) + self.timeout_id = None + self.current_angle_pos = 0.0 + self.step_angle = 0.0 + self.tree_headers_height = 0 + self.running_cell_areas = [] + + def is_active(self): + if self.timeout_id: + return True + else: + return False + + def reset(self): + self.force_stop(True) + self.current_angle_pos = 0.0 + self.timeout_id = None + self.step_angle = 0.0 + + ''' time_iterval: (1~1000)ms, which will be as the basic interval count for timer + init_usrdata: the current data which related the progress-bar will be at + min_usrdata: the range of min of user data + max_usrdata: the range of max of user data + step: each step which you want to progress + Note: the init_usrdata should in the range of from min to max, and max should > min + step should < (max - min) + ''' + def start_run(self, time_iterval, init_usrdata, min_usrdata, max_usrdata, step, tree): + if (not time_iterval) or (not max_usrdata): + return + usr_range = (max_usrdata - min_usrdata) * 1.0 + self.current_angle_pos = (init_usrdata * 1.0) / usr_range + self.step_angle = (step * 1) / usr_range + self.timeout_id = gobject.timeout_add(int(time_iterval), + self.make_image_on_progressing_cb, tree) + self.tree_headers_height = self.get_treeview_headers_height(tree) + + def force_stop(self, after_hide_or_not=False): + if self.timeout_id: + gobject.source_remove(self.timeout_id) + self.timeout_id = None + if self.running_cell_areas: + self.running_cell_areas = [] + + def on_draw_cb(self, pixbuf, cr, x, y, img_width, img_height, do_refresh=True): + if pixbuf: + r = max(img_width/2, img_height/2) + cr.translate(x + r, y + r) + if do_refresh: + cr.rotate(2 * math.pi * self.current_angle_pos) + + cr.set_source_pixbuf(pixbuf, -img_width/2, -img_height/2) + cr.paint() + + def get_treeview_headers_height(self, tree): + if tree and (tree.get_property("headers-visible") == True): + height = tree.get_allocation().height - tree.get_bin_window().get_size()[1] + return height + + return 0 + + def make_image_on_progressing_cb(self, tree): + self.current_angle_pos += self.step_angle + if (self.current_angle_pos >= 1): + self.current_angle_pos = self.step_angle + + for rect in self.running_cell_areas: + tree.queue_draw_area(rect.x, rect.y + self.tree_headers_height, rect.width, rect.height) + + return True + + def append_running_cell_area(self, cell_area): + if cell_area and (cell_area not in self.running_cell_areas): + self.running_cell_areas.append(cell_area) + + def remove_running_cell_area(self, cell_area): + if cell_area in self.running_cell_areas: + self.running_cell_areas.remove(cell_area) + if not self.running_cell_areas: + self.reset() + +gobject.type_register(RefreshRuningController) + +class HobCellRendererPixbuf(gtk.CellRendererPixbuf): + def __init__(self): + gtk.CellRendererPixbuf.__init__(self) + self.control = RefreshRuningController() + # create default refrensh stock icon + self.set_hob_icon_to_stock_icon(hic.ICON_INDI_REFERENCE_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): + if widget and stock_id and gtk.icon_factory_lookup_default(stock_id): + return widget.render_icon(stock_id, size) + + return None + + def set_icon_name_to_id(self, name): + if name and type(name) == str: + if name.startswith("gtk") or name == "task-refresh": + stock_id = name + else: + stock_id = 'gtk-' + name + + return stock_id + + ''' render cell exactly, "icon-name" is priority + if use the 'task-refresh' will make the pix animation + if 'pix' will change the pixbuf for it from the pixbuf or image. + ''' + def do_render(self, window, tree, background_area,cell_area, expose_area, flags): + if (not self.control) or (not tree): + return + + x, y, w, h = self.on_get_size(tree, cell_area) + x += cell_area.x + y += cell_area.y + w -= 2 * self.get_property("xpad") + h -= 2 * self.get_property("ypad") + + stock_id = "" + if self.props.icon_name: + stock_id = self.set_icon_name_to_id(self.props.icon_name) + elif self.props.stock_id: + stock_id = self.props.stock_id + elif self.props.pixbuf: + pix = self.props.pixbuf + else: + return + + if stock_id: + pix = self.get_pixbuf_from_stock_icon(tree, stock_id, self.props.stock_size) + if stock_id == 'task-refresh': + self.control.append_running_cell_area(cell_area) + if self.control.is_active(): + self.control.on_draw_cb(pix, window.cairo_create(), x, y, w, h, True) + else: + self.control.start_run(200, 0, 0, 1000, 200, tree) + else: + self.control.remove_running_cell_area(cell_area) + self.control.on_draw_cb(pix, window.cairo_create(), x, y, w, h, False) + + def on_get_size(self, widget, cell_area): + if self.props.icon_name or self.props.pixbuf or self.props.stock_id: + w, h = gtk.icon_size_lookup(self.props.stock_size) + return 0, 0, w, h + + return 0, 0, 0, 0 + +gobject.type_register(HobCellRendererPixbuf) diff --git a/bitbake/lib/bb/ui/crumbs/runningbuild.py b/bitbake/lib/bb/ui/crumbs/runningbuild.py index 0f58e4e..aecfadf 100644 --- a/bitbake/lib/bb/ui/crumbs/runningbuild.py +++ b/bitbake/lib/bb/ui/crumbs/runningbuild.py @@ -27,7 +27,7 @@ import urllib import urllib2 import pango from bb.ui.crumbs.hobcolor import HobColors -from bb.ui.crumbs.hobwidget import HobWarpCellRendererText +from bb.ui.crumbs.hobwidget import HobWarpCellRendererText, HobCellRendererPixbuf class RunningBuildModel (gtk.TreeStore): (COL_LOG, COL_PACKAGE, COL_TASK, COL_MESSAGE, COL_ICON, COL_COLOR, COL_NUM_ACTIVE) = range(7) @@ -68,6 +68,14 @@ class RunningBuildModel (gtk.TreeStore): model.set_visible_func(self.failure_model_filter) return model + def foreach_cell_func(self, model, path, iter, usr_data=None): + if model.get_value(iter, self.COL_ICON) == "task-refresh": + model.set(iter, self.COL_ICON, "") + + def close_task_refresh(self): + self.foreach(self.foreach_cell_func, None) + + class RunningBuild (gobject.GObject): __gsignals__ = { 'build-started' : (gobject.SIGNAL_RUN_LAST, @@ -189,7 +197,7 @@ class RunningBuild (gobject.GObject): # Because this parent package now has an active child mark it as # such. # @todo if parent is already in error, don't mark it green - self.model.set(parent, self.model.COL_ICON, "gtk-execute", + self.model.set(parent, self.model.COL_ICON, "task-refresh", self.model.COL_COLOR, HobColors.RUNNING) # Add an entry in the model for this task @@ -197,7 +205,7 @@ class RunningBuild (gobject.GObject): package, task, "Task: %s" % (task), - "gtk-execute", + "task-refresh", HobColors.RUNNING, 0)) @@ -284,6 +292,8 @@ class RunningBuild (gobject.GObject): # Emit a generic "build-complete" signal for things wishing to # handle when the build is finished self.emit("build-complete") + # reset the all cell's icon indicator + self.model.close_task_refresh() if pbar: pbar.set_text(event.msg) @@ -292,6 +302,8 @@ class RunningBuild (gobject.GObject): # If the command fails with an exit code we're done, emit the # generic signal for the UI to notify the user self.emit("build-complete") + # reset the all cell's icon indicator + self.model.close_task_refresh() elif isinstance(event, bb.event.CacheLoadStarted) and pbar: pbar.set_title("Loading cache") @@ -346,7 +358,7 @@ class RunningBuildTreeView (gtk.TreeView): self.readonly = readonly # The icon that indicates whether we're building or failed. - renderer = gtk.CellRendererPixbuf () + renderer = HobCellRendererPixbuf () col = gtk.TreeViewColumn ("Status", renderer) col.add_attribute (renderer, "icon-name", 4) self.append_column (col) -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/5] Hob: add refresh icon as ui request in building log 2012-03-26 10:41 ` [PATCH 1/5] Hob: add refresh icon as ui request in building log Liming An @ 2012-03-27 1:10 ` Wang, Shane 0 siblings, 0 replies; 10+ messages in thread From: Wang, Shane @ 2012-03-27 1:10 UTC (permalink / raw) To: An, LimingX L, bitbake-devel@lists.openembedded.org Liming An wrote on 2012-03-26: > add a refresh icon to indicator the running task, for avoid add more heavy to > bitbake building process, increased the timer interval counter, and decreased > the refresh icon render size. > > Signed-off-by: Liming An <limingx.l.an@intel.com> > --- > bitbake/lib/bb/ui/crumbs/hobwidget.py | 169 > ++++++++++++++++++++++++++++++ bitbake/lib/bb/ui/crumbs/runningbuild.py > | 20 +++- 2 files changed, 185 insertions(+), 4 deletions(-) > diff --git a/bitbake/lib/bb/ui/crumbs/hobwidget.py > b/bitbake/lib/bb/ui/crumbs/hobwidget.py index 8936f0a..ffdd551 100644 > --- a/bitbake/lib/bb/ui/crumbs/hobwidget.py +++ > b/bitbake/lib/bb/ui/crumbs/hobwidget.py @@ -57,6 +57,7 @@ class hic: > ICON_INDI_REMOVE_HOVER_FILE = os.path.join(HOB_ICON_BASE_DIR, > ('indicators/remove-hover.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_REFRESH_FILE = > os.path.join(HOB_ICON_BASE_DIR, ('indicators/refresh.png')) > > class hcc: > @@ -793,3 +794,171 @@ class > HobWarpCellRendererText(gtk.CellRendererText): > return adjwidth > gobject.type_register(HobWarpCellRendererText) > + +class RefreshRuningController(gobject.GObject): + def > __init__(self, widget=None, iter=None): + > gobject.GObject.__init__(self) + self.timeout_id = None + > self.current_angle_pos = 0.0 + self.step_angle = 0.0 + > self.tree_headers_height = 0 + self.running_cell_areas = [] + + > def is_active(self): + if self.timeout_id: + return > True + else: + return False + + def reset(self): + > self.force_stop(True) + self.current_angle_pos = 0.0 + > self.timeout_id = None + self.step_angle = 0.0 + + ''' > time_iterval: (1~1000)ms, which will be as the basic interval count for > timer + init_usrdata: the current data which related the > progress-bar will be at + min_usrdata: the range of min of user > data + max_usrdata: the range of max of user data + step: > each step which you want to progress + Note: the init_usrdata > should in the range of from min to max, and max should > min + > step should < (max - min) + ''' + def start_run(self, > time_iterval, init_usrdata, min_usrdata, max_usrdata, step, tree): + > if (not time_iterval) or (not max_usrdata): + return + > usr_range = (max_usrdata - min_usrdata) * 1.0 + > self.current_angle_pos = (init_usrdata * 1.0) / usr_range + > self.step_angle = (step * 1) / usr_range + self.timeout_id = > gobject.timeout_add(int(time_iterval), + > self.make_image_on_progressing_cb, tree) + > self.tree_headers_height = self.get_treeview_headers_height(tree) + + > def force_stop(self, after_hide_or_not=False): + if > self.timeout_id: + gobject.source_remove(self.timeout_id) + > self.timeout_id = None + if self.running_cell_areas: + > self.running_cell_areas = [] + + def on_draw_cb(self, > pixbuf, cr, x, y, img_width, img_height, do_refresh=True): + if > pixbuf: + r = max(img_width/2, img_height/2) + > cr.translate(x + r, y + r) + if do_refresh: + > cr.rotate(2 * math.pi * self.current_angle_pos) + + > cr.set_source_pixbuf(pixbuf, -img_width/2, -img_height/2) + > cr.paint() + + def get_treeview_headers_height(self, tree): + > if tree and (tree.get_property("headers-visible") == True): + > height = tree.get_allocation().height - > tree.get_bin_window().get_size()[1] + return height + + > return 0 + + def make_image_on_progressing_cb(self, tree): + > self.current_angle_pos += self.step_angle + if > (self.current_angle_pos >= 1): + self.current_angle_pos = > self.step_angle + + for rect in self.running_cell_areas: + > tree.queue_draw_area(rect.x, rect.y + self.tree_headers_height, > rect.width, rect.height) + + return True + + def > append_running_cell_area(self, cell_area): + if cell_area and > (cell_area not in self.running_cell_areas): + > self.running_cell_areas.append(cell_area) + + def > remove_running_cell_area(self, cell_area): + if cell_area in > self.running_cell_areas: + > self.running_cell_areas.remove(cell_area) + if not > self.running_cell_areas: + self.reset() + > +gobject.type_register(RefreshRuningController) + +class > HobCellRendererPixbuf(gtk.CellRendererPixbuf): + def __init__(self): > + gtk.CellRendererPixbuf.__init__(self) + self.control = > RefreshRuningController() + # create default refrensh stock icon > + self.set_hob_icon_to_stock_icon(hic.ICON_INDI_REFERENCE_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): + if widget and stock_id and > gtk.icon_factory_lookup_default(stock_id): + return > widget.render_icon(stock_id, size) + + return None + + def > set_icon_name_to_id(self, name): + if name and type(name) == str: > + if name.startswith("gtk") or name == "task-refresh": + > stock_id = name + else: + stock_id = > 'gtk-' + name + + return stock_id + + ''' render cell exactly, > "icon-name" is priority + if use the 'task-refresh' will make the > pix animation + if 'pix' will change the pixbuf for it from the > pixbuf or image. + ''' + def do_render(self, window, tree, > background_area,cell_area, expose_area, flags): + if (not > self.control) or (not tree): + return + + x, y, w, h = > self.on_get_size(tree, cell_area) + x += cell_area.x + y > += cell_area.y + w -= 2 * self.get_property("xpad") + h -= > 2 * self.get_property("ypad") + + stock_id = "" + if > self.props.icon_name: + stock_id = > self.set_icon_name_to_id(self.props.icon_name) + elif > self.props.stock_id: + stock_id = self.props.stock_id + > elif self.props.pixbuf: + pix = self.props.pixbuf + > else: + return + + if stock_id: + pix = > self.get_pixbuf_from_stock_icon(tree, stock_id, self.props.stock_size) + > if stock_id == 'task-refresh': + > self.control.append_running_cell_area(cell_area) + if > self.control.is_active(): + self.control.on_draw_cb(pix, > window.cairo_create(), x, y, w, h, True) + else: + > self.control.start_run(200, 0, 0, 1000, 200, tree) + else: + > self.control.remove_running_cell_area(cell_area) + > self.control.on_draw_cb(pix, window.cairo_create(), x, y, w, h, False) + > + def on_get_size(self, widget, cell_area): + if > self.props.icon_name or self.props.pixbuf or self.props.stock_id: + > w, h = gtk.icon_size_lookup(self.props.stock_size) + > return 0, 0, w, h + + return 0, 0, 0, 0 + > +gobject.type_register(HobCellRendererPixbuf) diff --git > a/bitbake/lib/bb/ui/crumbs/runningbuild.py > b/bitbake/lib/bb/ui/crumbs/runningbuild.py index 0f58e4e..aecfadf 100644 > --- a/bitbake/lib/bb/ui/crumbs/runningbuild.py +++ > b/bitbake/lib/bb/ui/crumbs/runningbuild.py @@ -27,7 +27,7 @@ import > urllib > import urllib2 > import pango > from bb.ui.crumbs.hobcolor import HobColors > -from bb.ui.crumbs.hobwidget import HobWarpCellRendererText +from > bb.ui.crumbs.hobwidget import HobWarpCellRendererText, > HobCellRendererPixbuf > > class RunningBuildModel (gtk.TreeStore): > (COL_LOG, COL_PACKAGE, COL_TASK, COL_MESSAGE, COL_ICON, > COL_COLOR, COL_NUM_ACTIVE) = range(7) > @@ -68,6 +68,14 @@ class RunningBuildModel (gtk.TreeStore): > model.set_visible_func(self.failure_model_filter) > return model > + def foreach_cell_func(self, model, path, iter, usr_data=None): > + if model.get_value(iter, self.COL_ICON) == "task-refresh": > + model.set(iter, self.COL_ICON, "") > + > + def close_task_refresh(self): > + self.foreach(self.foreach_cell_func, None) > + > + > class RunningBuild (gobject.GObject): > __gsignals__ = { > 'build-started' : (gobject.SIGNAL_RUN_LAST, > @@ -189,7 +197,7 @@ class RunningBuild (gobject.GObject): > # Because this parent package now has an active child mark > it as # such. # @todo if parent is already in error, don't > mark it green > - self.model.set(parent, self.model.COL_ICON, "gtk-execute", > + self.model.set(parent, self.model.COL_ICON, "task-refresh", > self.model.COL_COLOR, > HobColors.RUNNING) > > # Add an entry in the model for this task > @@ -197,7 +205,7 @@ class RunningBuild (gobject.GObject): > package, > task, > "Task: %s" % (task), > - "gtk-execute", > + "task-refresh", > HobColors.RUNNING, > 0)) > @@ -284,6 +292,8 @@ class RunningBuild (gobject.GObject): > # Emit a generic "build-complete" signal for things wishing to > # handle when the build is finished > self.emit("build-complete") > + # reset the all cell's icon indicator > + self.model.close_task_refresh() > if pbar: > pbar.set_text(event.msg) > @@ -292,6 +302,8 @@ class RunningBuild (gobject.GObject): > # If the command fails with an exit code we're done, > emit the # generic signal for the UI to notify the user > self.emit("build-complete") > + # reset the all cell's icon indicator > + self.model.close_task_refresh() > > elif isinstance(event, bb.event.CacheLoadStarted) and pbar: > pbar.set_title("Loading cache") > @@ -346,7 +358,7 @@ class RunningBuildTreeView (gtk.TreeView): > self.readonly = readonly > > # The icon that indicates whether we're building or failed. > - renderer = gtk.CellRendererPixbuf () > + renderer = HobCellRendererPixbuf () This change will break goggle and puccho, because they are reusing RunningBuildTreeView. I asked him to send another version of the patches. > col = gtk.TreeViewColumn ("Status", renderer) > col.add_attribute (renderer, "icon-name", 4) > self.append_column (col) ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/5] Hob: fixed visually differentiate warnings and errors icon in building log 2012-03-26 10:41 [PATCH 0/5] Hob: bug fixes Liming An 2012-03-26 10:41 ` [PATCH 1/5] Hob: add refresh icon as ui request in building log Liming An @ 2012-03-26 10:41 ` Liming An 2012-03-26 10:41 ` [PATCH 3/5] Hob: change the recipe pasing error dialog icon from 'dialog-info' to 'dialog-error' Liming An ` (2 subsequent siblings) 4 siblings, 0 replies; 10+ messages in thread From: Liming An @ 2012-03-26 10:41 UTC (permalink / raw) To: bitbake-devel fixed the bug of 'error' and 'warning' icon is not constaintly with hob ui design [YOCTO #2097] Signed-off-by: Liming An <limingx.l.an@intel.com> --- bitbake/lib/bb/ui/crumbs/hobwidget.py | 67 +++++++++++++++++++++++---------- 1 files changed, 47 insertions(+), 20 deletions(-) diff --git a/bitbake/lib/bb/ui/crumbs/hobwidget.py b/bitbake/lib/bb/ui/crumbs/hobwidget.py index ffdd551..21c54d6 100644 --- a/bitbake/lib/bb/ui/crumbs/hobwidget.py +++ b/bitbake/lib/bb/ui/crumbs/hobwidget.py @@ -58,6 +58,8 @@ class hic: 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_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: @@ -795,6 +797,44 @@ class HobWarpCellRendererText(gtk.CellRendererText): 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): def __init__(self, widget=None, iter=None): gobject.GObject.__init__(self) @@ -885,23 +925,8 @@ class HobCellRendererPixbuf(gtk.CellRendererPixbuf): gtk.CellRendererPixbuf.__init__(self) self.control = RefreshRuningController() # create default refrensh stock icon - self.set_hob_icon_to_stock_icon(hic.ICON_INDI_REFERENCE_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 + self.checker = HobIconChecker() + self.checker.set_hob_icon_to_stock_icon(hic.ICON_INDI_REFERENCE_FILE, "task-refresh") 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): @@ -909,9 +934,11 @@ class HobCellRendererPixbuf(gtk.CellRendererPixbuf): return None - def set_icon_name_to_id(self, name): - if name and type(name) == str: - if name.startswith("gtk") or name == "task-refresh": + def set_icon_name_to_id(self, new_name): + if new_name and type(new_name) == str: + # 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 else: stock_id = 'gtk-' + name -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/5] Hob: change the recipe pasing error dialog icon from 'dialog-info' to 'dialog-error' 2012-03-26 10:41 [PATCH 0/5] Hob: bug fixes Liming An 2012-03-26 10:41 ` [PATCH 1/5] Hob: add refresh icon as ui request in building log Liming An 2012-03-26 10:41 ` [PATCH 2/5] Hob: fixed visually differentiate warnings and errors icon " Liming An @ 2012-03-26 10:41 ` Liming An 2012-03-26 10:41 ` [PATCH 4/5] Hob: use hob icon checker to check the gtk icon for make the icon constaintly Liming An 2012-03-26 10:41 ` [PATCH 5/5] HOB: Splited configuration info of building log to a independently page from the log page Liming An 4 siblings, 0 replies; 10+ messages in thread From: Liming An @ 2012-03-26 10:41 UTC (permalink / raw) To: bitbake-devel [YOCTO #2109] Signed-off-by: Liming An <limingx.l.an@intel.com> --- bitbake/lib/bb/ui/crumbs/builder.py | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/bitbake/lib/bb/ui/crumbs/builder.py b/bitbake/lib/bb/ui/crumbs/builder.py index f32a066..7bf12e2 100755 --- a/bitbake/lib/bb/ui/crumbs/builder.py +++ b/bitbake/lib/bb/ui/crumbs/builder.py @@ -834,7 +834,7 @@ class Builder(gtk.Window): lbl = lbl + "kernel path:" + kernel_path + "\n" lbl = lbl + "source environment path:" + source_env_path + "\n" lbl = lbl + "tmp path: " + tmp_path + "." - dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_INFO) + dialog = CrumbsMessageDialog(self, lbl, gtk.STOCK_DIALOG_ERROR) dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) dialog.run() dialog.destroy() -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/5] Hob: use hob icon checker to check the gtk icon for make the icon constaintly 2012-03-26 10:41 [PATCH 0/5] Hob: bug fixes Liming An ` (2 preceding siblings ...) 2012-03-26 10:41 ` [PATCH 3/5] Hob: change the recipe pasing error dialog icon from 'dialog-info' to 'dialog-error' Liming An @ 2012-03-26 10:41 ` Liming An 2012-03-26 10:41 ` [PATCH 5/5] HOB: Splited configuration info of building log to a independently page from the log page Liming An 4 siblings, 0 replies; 10+ messages in thread From: Liming An @ 2012-03-26 10:41 UTC (permalink / raw) To: bitbake-devel Because we have hob icon, so need to make some gtk icon to transfer to hob icon. so use hob icon checker to fixed the gtk icon [YOCTO #2108] Signed-off-by: Liming An <limingx.l.an@intel.com> --- bitbake/lib/bb/ui/crumbs/hig.py | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) diff --git a/bitbake/lib/bb/ui/crumbs/hig.py b/bitbake/lib/bb/ui/crumbs/hig.py index 6ae682b..d151fc4 100644 --- a/bitbake/lib/bb/ui/crumbs/hig.py +++ b/bitbake/lib/bb/ui/crumbs/hig.py @@ -28,7 +28,7 @@ import re import subprocess import shlex from bb.ui.crumbs.hobcolor import HobColors -from bb.ui.crumbs.hobwidget import hcc, hic, HobViewTable, HobInfoButton +from bb.ui.crumbs.hobwidget import hcc, hic, HobViewTable, HobInfoButton, HobAltButton, HobIconChecker from bb.ui.crumbs.progressbar import HobProgressBar """ @@ -75,10 +75,8 @@ class CrumbsMessageDialog(CrumbsDialog): self.icon = gtk.Image() # We have our own Info icon which should be used in preference of the stock icon - if icon == gtk.STOCK_INFO or icon == "gtk-dialog-info": - self.icon.set_from_file(hic.ICON_INFO_DISPLAY_FILE) - else: - self.icon.set_from_stock(icon, gtk.ICON_SIZE_DIALOG) + self.icon_chk = HobIconChecker() + 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.show() first_row.add(self.icon) -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 5/5] HOB: Splited configuration info of building log to a independently page from the log page 2012-03-26 10:41 [PATCH 0/5] Hob: bug fixes Liming An ` (3 preceding siblings ...) 2012-03-26 10:41 ` [PATCH 4/5] Hob: use hob icon checker to check the gtk icon for make the icon constaintly Liming An @ 2012-03-26 10:41 ` Liming An 2012-03-27 1:56 ` Wang, Shane 4 siblings, 1 reply; 10+ messages in thread From: Liming An @ 2012-03-26 10:41 UTC (permalink / raw) To: bitbake-devel Make the building log config information to a new page as request [YOCTO #2144] Signed-off-by: Liming An <limingx.l.an@intel.com> --- bitbake/lib/bb/ui/crumbs/builddetailspage.py | 10 ++++++++-- bitbake/lib/bb/ui/crumbs/runningbuild.py | 26 ++++++++++++-------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/bitbake/lib/bb/ui/crumbs/builddetailspage.py b/bitbake/lib/bb/ui/crumbs/builddetailspage.py index c2f980f..362f63d 100755 --- a/bitbake/lib/bb/ui/crumbs/builddetailspage.py +++ b/bitbake/lib/bb/ui/crumbs/builddetailspage.py @@ -60,8 +60,6 @@ class BuildDetailsPage (HobPage): self.notebook = HobNotebook() self.config_tv = BuildConfigurationTreeView() - self.config_model = self.builder.handler.build.model.config_model() - self.config_tv.set_model(self.config_model) self.scrolled_view_config = gtk.ScrolledWindow () self.scrolled_view_config.set_policy(gtk.POLICY_NEVER, gtk.POLICY_ALWAYS) self.scrolled_view_config.add(self.config_tv) @@ -82,6 +80,7 @@ class BuildDetailsPage (HobPage): self.scrolled_view_build.add(self.build_tv) self.notebook.append_page(self.scrolled_view_build, gtk.Label("Log")) + self.builder.handler.build.model.connect('update-config-info', self.update_config_model_cb) self.builder.handler.build.model.connect_after("row-changed", self.scroll_to_present_row, self.scrolled_view_build.get_vadjustment(), self.build_tv) self.button_box = gtk.HBox(False, 6) @@ -158,3 +157,10 @@ class BuildDetailsPage (HobPage): self.endpath = path if v_adj.value == (v_adj.upper - v_adj.page_size): # check the gtk.adjustment position is at end boundary or not treeview.scroll_to_cell(path) + + def update_config_model_cb(self, origin, msg): + if msg and type(msg) == str: + import gobject + config_model = gtk.ListStore(gobject.TYPE_STRING) + config_model.append([msg]) + self.config_tv.set_model(config_model) diff --git a/bitbake/lib/bb/ui/crumbs/runningbuild.py b/bitbake/lib/bb/ui/crumbs/runningbuild.py index aecfadf..98cba79 100644 --- a/bitbake/lib/bb/ui/crumbs/runningbuild.py +++ b/bitbake/lib/bb/ui/crumbs/runningbuild.py @@ -32,6 +32,11 @@ from bb.ui.crumbs.hobwidget import HobWarpCellRendererText, HobCellRendererPixbu class RunningBuildModel (gtk.TreeStore): (COL_LOG, COL_PACKAGE, COL_TASK, COL_MESSAGE, COL_ICON, COL_COLOR, COL_NUM_ACTIVE) = range(7) + __gsignals__ = { + 'update-config-info' : (gobject.SIGNAL_RUN_LAST, + gobject.TYPE_NONE, + (gobject.TYPE_STRING,)), + } def __init__ (self): gtk.TreeStore.__init__ (self, gobject.TYPE_STRING, @@ -42,14 +47,6 @@ class RunningBuildModel (gtk.TreeStore): gobject.TYPE_STRING, gobject.TYPE_INT) - def config_model_filter(self, model, it): - msg = model.get(it, self.COL_MESSAGE)[0] - if not msg or type(msg) != str: - return False - if msg.startswith("\nOE Build Configuration:\n"): - return True - return False - def failure_model_filter(self, model, it): color = model.get(it, self.COL_COLOR)[0] if not color: @@ -58,11 +55,6 @@ class RunningBuildModel (gtk.TreeStore): return True return False - def config_model(self): - model = self.filter_new() - model.set_visible_func(self.config_model_filter) - return model - def failure_model(self): model = self.filter_new() model.set_visible_func(self.failure_model_filter) @@ -75,6 +67,8 @@ class RunningBuildModel (gtk.TreeStore): def close_task_refresh(self): self.foreach(self.foreach_cell_func, None) + def update_configuration_info(self, msg): + self.emit("update-config-info", msg) class RunningBuild (gobject.GObject): __gsignals__ = { @@ -138,6 +132,10 @@ class RunningBuild (gobject.GObject): # mask the error message as it's not informative for the user. if event.msg.startswith("Execution of event handler 'run_buildstats' failed"): return + # split the configuration info to a independent view page + if event.msg.startswith("\nOE Build Configuration:\n"): + self.model.update_configuration_info(event.msg) + return if (event.levelno < logging.INFO or event.msg.startswith("Running task")): @@ -434,7 +432,7 @@ class BuildConfigurationTreeView(gtk.TreeView): # The message of the build. self.message_renderer = HobWarpCellRendererText (col_number=0) - self.message_column = gtk.TreeViewColumn ("Message", self.message_renderer, text=RunningBuildModel.COL_MESSAGE, background=RunningBuildModel.COL_COLOR) + self.message_column = gtk.TreeViewColumn ("Message", self.message_renderer, text=0) font = self.get_style().font_desc font.set_size(pango.SCALE * 13) self.message_renderer.set_property('font-desc', font) -- 1.7.5.4 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 5/5] HOB: Splited configuration info of building log to a independently page from the log page 2012-03-26 10:41 ` [PATCH 5/5] HOB: Splited configuration info of building log to a independently page from the log page Liming An @ 2012-03-27 1:56 ` Wang, Shane 0 siblings, 0 replies; 10+ messages in thread From: Wang, Shane @ 2012-03-27 1:56 UTC (permalink / raw) To: An, LimingX L, bitbake-devel@lists.openembedded.org Liming An wrote on 2012-03-26: > Make the building log config information to a new page as request > > [YOCTO #2144] > > Signed-off-by: Liming An <limingx.l.an@intel.com> > --- > bitbake/lib/bb/ui/crumbs/builddetailspage.py | 10 ++++++++-- > bitbake/lib/bb/ui/crumbs/runningbuild.py | 26 > ++++++++++++-------------- 2 files changed, 20 insertions(+), 16 > deletions(-) > diff --git a/bitbake/lib/bb/ui/crumbs/builddetailspage.py > b/bitbake/lib/bb/ui/crumbs/builddetailspage.py index c2f980f..362f63d > 100755 --- a/bitbake/lib/bb/ui/crumbs/builddetailspage.py +++ > b/bitbake/lib/bb/ui/crumbs/builddetailspage.py @@ -60,8 +60,6 @@ class > BuildDetailsPage (HobPage): > > self.notebook = HobNotebook() > self.config_tv = BuildConfigurationTreeView() > - self.config_model = > self.builder.handler.build.model.config_model() - > self.config_tv.set_model(self.config_model) > self.scrolled_view_config = gtk.ScrolledWindow () > self.scrolled_view_config.set_policy(gtk.POLICY_NEVER, > gtk.POLICY_ALWAYS) > self.scrolled_view_config.add(self.config_tv) @@ -82,6 +80,7 @@ > class BuildDetailsPage (HobPage): > self.scrolled_view_build.add(self.build_tv) > self.notebook.append_page(self.scrolled_view_build, > gtk.Label("Log")) > > + self.builder.handler.build.model.connect('update-config-info', > self.update_config_model_cb) > self.builder.handler.build.model.connect_after("row-changed", > self.scroll_to_present_row, self.scrolled_view_build.get_vadjustment(), > self.build_tv) > > self.button_box = gtk.HBox(False, 6) > @@ -158,3 +157,10 @@ class BuildDetailsPage (HobPage): > self.endpath = path > if v_adj.value == (v_adj.upper - v_adj.page_size): # > check the gtk.adjustment position is at end boundary or not > treeview.scroll_to_cell(path) > + + def update_config_model_cb(self, origin, msg): + if msg > and type(msg) == str: + import gobject + > config_model = gtk.ListStore(gobject.TYPE_STRING) + > config_model.append([msg]) + > self.config_tv.set_model(config_model) diff --git > a/bitbake/lib/bb/ui/crumbs/runningbuild.py > b/bitbake/lib/bb/ui/crumbs/runningbuild.py index aecfadf..98cba79 100644 > --- a/bitbake/lib/bb/ui/crumbs/runningbuild.py +++ > b/bitbake/lib/bb/ui/crumbs/runningbuild.py @@ -32,6 +32,11 @@ from > bb.ui.crumbs.hobwidget import HobWarpCellRendererText, > HobCellRendererPixbu > class RunningBuildModel (gtk.TreeStore): > (COL_LOG, COL_PACKAGE, COL_TASK, COL_MESSAGE, COL_ICON, > COL_COLOR, COL_NUM_ACTIVE) = range(7) > > + __gsignals__ = { > + 'update-config-info' : (gobject.SIGNAL_RUN_LAST, > + gobject.TYPE_NONE, > + (gobject.TYPE_STRING,)), > + } > def __init__ (self): > gtk.TreeStore.__init__ (self, > gobject.TYPE_STRING, @@ -42,14 +47,6 @@ > class RunningBuildModel > (gtk.TreeStore): gobject.TYPE_STRING, > gobject.TYPE_INT) > - def config_model_filter(self, model, it): > - msg = model.get(it, self.COL_MESSAGE)[0] > - if not msg or type(msg) != str: > - return False > - if msg.startswith("\nOE Build Configuration:\n"): > - return True > - return False > - > def failure_model_filter(self, model, it): > color = model.get(it, self.COL_COLOR)[0] > if not color: > @@ -58,11 +55,6 @@ class RunningBuildModel (gtk.TreeStore): > return True > return False > - def config_model(self): > - model = self.filter_new() > - model.set_visible_func(self.config_model_filter) > - return model > - > def failure_model(self): > model = self.filter_new() > model.set_visible_func(self.failure_model_filter) > @@ -75,6 +67,8 @@ class RunningBuildModel (gtk.TreeStore): > def close_task_refresh(self): > self.foreach(self.foreach_cell_func, None) > + def update_configuration_info(self, msg): > + self.emit("update-config-info", msg) > > class RunningBuild (gobject.GObject): > __gsignals__ = { > @@ -138,6 +132,10 @@ class RunningBuild (gobject.GObject): > # mask the error message as it's not informative for the user. > if event.msg.startswith("Execution of event handler > 'run_buildstats' failed"): > return > + # split the configuration info to a independent view page > + if event.msg.startswith("\nOE Build Configuration:\n"): > + self.model.update_configuration_info(event.msg) > + return Still heavy? A better way we can do is to collect self.configuration from builder.py and show it on the build details screen when build starts. > > if (event.levelno < logging.INFO or > event.msg.startswith("Running task")): > @@ -434,7 +432,7 @@ class BuildConfigurationTreeView(gtk.TreeView): > > # The message of the build. > self.message_renderer = HobWarpCellRendererText > (col_number=0) - self.message_column = gtk.TreeViewColumn > ("Message", self.message_renderer, text=RunningBuildModel.COL_MESSAGE, > background=RunningBuildModel.COL_COLOR) + self.message_column = > gtk.TreeViewColumn ("Message", self.message_renderer, text=0) > font = self.get_style().font_desc > font.set_size(pango.SCALE * 13) > self.message_renderer.set_property('font-desc', font) ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 0/5] Hob: bug fixes
@ 2012-03-28 16:36 Shane Wang
2012-03-29 20:22 ` Richard Purdie
0 siblings, 1 reply; 10+ messages in thread
From: Shane Wang @ 2012-03-28 16:36 UTC (permalink / raw)
To: bitbake-devel
Fix bug 2163 and some words
The following changes since commit bbef66e4005def54d70d3720ec131fa7edc22e2a:
Hob: allow users to setup the proxies (2012-03-28 15:57:39 +0800)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib shane/hob-fixes-2
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=shane/hob-fixes-2
Shane Wang (5):
Hob: add Templates and Settings on image details screen
Hob: change some words for build configurations on build details
screen
Hob: change some words on image configuration screen to make them
consistent
Hob: change some words on recipes screen and package screen to make
them consistent
Hob: change some words in settings dialog to make them consistent
bitbake/lib/bb/ui/crumbs/builddetailspage.py | 22 +++++++-------
bitbake/lib/bb/ui/crumbs/builder.py | 19 ++++++++-----
bitbake/lib/bb/ui/crumbs/hig.py | 22 +++++++-------
bitbake/lib/bb/ui/crumbs/imageconfigurationpage.py | 18 +++++++++---
bitbake/lib/bb/ui/crumbs/imagedetailspage.py | 29 ++++++++++++++++++++
bitbake/lib/bb/ui/crumbs/packageselectionpage.py | 4 +-
bitbake/lib/bb/ui/crumbs/recipeselectionpage.py | 6 ++--
7 files changed, 81 insertions(+), 39 deletions(-)
--
1.7.6
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH 0/5] Hob: bug fixes 2012-03-28 16:36 [PATCH 0/5] Hob: bug fixes Shane Wang @ 2012-03-29 20:22 ` Richard Purdie 0 siblings, 0 replies; 10+ messages in thread From: Richard Purdie @ 2012-03-29 20:22 UTC (permalink / raw) To: Shane Wang; +Cc: bitbake-devel On Thu, 2012-03-29 at 00:36 +0800, Shane Wang wrote: > Fix bug 2163 and some words > > The following changes since commit bbef66e4005def54d70d3720ec131fa7edc22e2a: > > Hob: allow users to setup the proxies (2012-03-28 15:57:39 +0800) > > are available in the git repository at: > git://git.pokylinux.org/poky-contrib shane/hob-fixes-2 > http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=shane/hob-fixes-2 > > Shane Wang (5): > Hob: add Templates and Settings on image details screen > Hob: change some words for build configurations on build details > screen > Hob: change some words on image configuration screen to make them > consistent > Hob: change some words on recipes screen and package screen to make > them consistent > Hob: change some words in settings dialog to make them consistent Merged to master, thanks. Richard ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-03-29 20:32 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-03-26 10:41 [PATCH 0/5] Hob: bug fixes Liming An 2012-03-26 10:41 ` [PATCH 1/5] Hob: add refresh icon as ui request in building log Liming An 2012-03-27 1:10 ` Wang, Shane 2012-03-26 10:41 ` [PATCH 2/5] Hob: fixed visually differentiate warnings and errors icon " Liming An 2012-03-26 10:41 ` [PATCH 3/5] Hob: change the recipe pasing error dialog icon from 'dialog-info' to 'dialog-error' Liming An 2012-03-26 10:41 ` [PATCH 4/5] Hob: use hob icon checker to check the gtk icon for make the icon constaintly Liming An 2012-03-26 10:41 ` [PATCH 5/5] HOB: Splited configuration info of building log to a independently page from the log page Liming An 2012-03-27 1:56 ` Wang, Shane -- strict thread matches above, loose matches on Subject: below -- 2012-03-28 16:36 [PATCH 0/5] Hob: bug fixes Shane Wang 2012-03-29 20:22 ` Richard Purdie
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.