On 06/30/2011 04:02 AM, Richard W.M. Jones wrote: > From: "Richard W.M. Jones" <rjo...@redhat.com> > > --- > src/virtManager/manager.py | 41 +++++++++++++++++++++++++++++++++++++++-- > 1 files changed, 39 insertions(+), 2 deletions(-) > > diff --git a/src/virtManager/manager.py b/src/virtManager/manager.py > index c7cca67..a52fd90 100644 > --- a/src/virtManager/manager.py > +++ b/src/virtManager/manager.py > @@ -43,6 +43,7 @@ ROW_IS_CONN_CONNECTED = 8 > ROW_IS_VM = 9 > ROW_IS_VM_RUNNING = 10 > ROW_COLOR = 11 > +ROW_INSPECTION_OS_ICON = 12 > > # Columns in the tree view > COL_NAME = 0 > @@ -352,9 +353,10 @@ class vmmManager(vmmGObjectUI): > self.window.get_widget("vm-notebook").set_show_tabs(False) > > # Handle, name, markup, status, status icon, key/uuid, hint, is conn, > - # is conn connected, is vm, is vm running, fg color > + # is conn connected, is vm, is vm running, fg color, inspection icon > model = gtk.TreeStore(object, str, str, str, gtk.gdk.Pixbuf, str, > str, > - bool, bool, bool, bool, gtk.gdk.Color) > + bool, bool, bool, bool, gtk.gdk.Color, > + gtk.gdk.Pixbuf) > vmlist.set_model(model) > util.tooltip_wrapper(vmlist, ROW_HINT, "set_tooltip_column") > > @@ -384,6 +386,12 @@ class vmmManager(vmmGObjectUI): > statusCol.add_attribute(status_icon, 'pixbuf', ROW_STATUS_ICON) > statusCol.add_attribute(status_icon, 'visible', ROW_IS_VM) > > + inspection_os_icon = gtk.CellRendererPixbuf() > + statusCol.pack_start(inspection_os_icon, False) > + statusCol.add_attribute(inspection_os_icon, 'pixbuf', > + ROW_INSPECTION_OS_ICON) > + statusCol.add_attribute(inspection_os_icon, 'visible', ROW_IS_VM) > + > name_txt = gtk.CellRendererText() > nameCol.pack_start(name_txt, True) > nameCol.add_attribute(name_txt, 'markup', ROW_MARKUP) > @@ -679,6 +687,7 @@ class vmmManager(vmmGObjectUI): > vm.connect("status-changed", self.vm_status_changed) > vm.connect("resources-sampled", self.vm_resources_sampled) > vm.connect("config-changed", self.vm_resources_sampled) > + vm.connect("inspection-changed", self.vm_inspection_changed) >
Hmm, this makes me think maybe we shouldn't have a separate signal for 'inspection-changed' and just wrap this up into 'config-changed', since from the UIs perspective it's all just domain details. > vmlist = self.window.get_widget("vm-list") > model = vmlist.get_model() > @@ -747,6 +756,8 @@ class vmmManager(vmmGObjectUI): > row.insert(ROW_IS_VM, True) > row.insert(ROW_IS_VM_RUNNING, vm.is_active()) > row.insert(ROW_COLOR, gtk.gdk.Color(0, 0, 0)) > + row.insert(ROW_INSPECTION_OS_ICON, > + self.get_inspection_icon_pixbuf(vm,16,16)) > > row[ROW_MARKUP] = self._build_vm_markup(vm, row) > > @@ -784,6 +795,7 @@ class vmmManager(vmmGObjectUI): > row.insert(ROW_IS_VM, False) > row.insert(ROW_IS_VM_RUNNING, False) > row.insert(ROW_COLOR, self._build_conn_color(conn)) > + row.insert(ROW_INSPECTION_OS_ICON, None) > > _iter = model.append(None, row) > path = model.get_path(_iter) > @@ -883,6 +895,31 @@ class vmmManager(vmmGObjectUI): > row[ROW_MARKUP] = self._build_vm_markup(vm, row) > model.row_changed(row.path, row.iter) > > + def vm_inspection_changed(self, vm): > + vmlist = self.window.get_widget("vm-list") > + model = vmlist.get_model() > + > + if self.vm_row_key(vm) not in self.rows: > + return > + > + row = self.rows[self.vm_row_key(vm)] > + row[ROW_INSPECTION_OS_ICON] = > self.get_inspection_icon_pixbuf(vm,16,16) > + model.row_changed(row.path, row.iter) > + > + def get_inspection_icon_pixbuf(self, vm, w, h): > + # libguestfs gives us the PNG data as a string. > + png_data = vm.get_inspection_icon() > + if png_data == None: > + return None > + try: > + pb = gtk.gdk.PixbufLoader(image_type="png") > + pb.set_size(w, h) > + pb.write (png_data) > + pb.close() > + return pb.get_pixbuf() > + except: > + return None > + Maybe we should do this just once when we set the data in vmmInspectionData? If we need multiple sizes, just precreate multiple PNGs. In general I like the idea though! Thanks, Cole _______________________________________________ virt-tools-list mailing list virt-tools-list@redhat.com https://www.redhat.com/mailman/listinfo/virt-tools-list