def _do_reload_menu(self): if not self.active: return this_items = {} if self._mode == "applications": if self.bamf_matcher != None: for window in self.bamf_matcher.RunningApplications(): try: item = self._get_item_for_bamf_application(window) this_items[item.id] = item except Exception as e: logger.debug("Could not get info from BAMF", exc_info = e) pass else: import wnck screen = wnck.screen_get_default() for window in screen.get_windows(): pid = window.get_pid() if pid > 0: item = self._get_menu_item(pid) item.process_name = window.get_name() this_items[item.id] = item pixbuf = window.get_icon() if pixbuf: item.icon = g15cairo.pixbuf_to_surface(pixbuf) else: for process_id in gtop.proclist(): process_id = "%d" % process_id try : pid = int(process_id) proc_state = gtop.proc_state(pid) proc_args = gtop.proc_args(pid) if self._mode == "all" or ( self._mode != "all" and proc_state.uid == os.getuid()): item = self._get_menu_item(pid) item.icon = None item.process_name = self._get_process_name(proc_args, proc_state.cmd) this_items[item.id] = item except Exception as e: logger.debug("Process may have disappeared", exc_info = e) # In case the process disappears pass # Remove any missing items for item in self.menu.get_children(): if not item.id in this_items: self.menu.remove_child(item) # Make sure selected still exists if self.menu.selected != None and self.menu.get_child_by_id(self.menu.selected.id) is None: if len(self.menu.get_child_count()) > 0: self.menu.selected = self.menu.get_children()[0] else: self.menu.selected = None self.page.mark_dirty() self.screen.redraw(self.page)
def _do_capture(self): self.content.window.invalidate_rect( (0, 0, self.area_width, self.area_height), True) self.content.window.process_updates(True) pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, False, 8, self.area_width, self.area_height) pixbuf.get_from_drawable(self.content.window, self.content.get_colormap(), 0, 0, 0, 0, self.area_width, self.area_height) self.surface = g15cairo.pixbuf_to_surface(pixbuf) self.pixbuf = pixbuf self.lock.release()
def draw_buffer(self, img_buffer): pil_img = Image.fromstring("1", (160, 43), img_buffer) mask_img = pil_img.copy() mask_img = mask_img.convert("L") pil_img = pil_img.convert("P") if self.plugin.palette is not None: pil_img.putpalette(self.plugin.palette) pil_img = pil_img.convert("RGBA") pil_img.putalpha(mask_img) # TODO find a quicker way of converting pixbuf = g15cairo.image_to_pixbuf(pil_img, "png") self.surface = g15cairo.pixbuf_to_surface(pixbuf) self.plugin.screen.redraw(self.page)
def draw_buffer(self, img_buffer): pil_img = Image.fromstring("1", (160,43), img_buffer) mask_img = pil_img.copy() mask_img = mask_img.convert("L") pil_img = pil_img.convert("P") if self.plugin.palette is not None: pil_img.putpalette(self.plugin.palette) pil_img = pil_img.convert("RGBA") pil_img.putalpha(mask_img) # TODO find a quicker way of converting pixbuf = g15cairo.image_to_pixbuf(pil_img, "png") self.surface = g15cairo.pixbuf_to_surface(pixbuf) self.plugin.screen.redraw(self.page)
def set_pixbuf(self, pixbuf): self.buffer = g15cairo.pixbuf_to_surface(pixbuf)
def _do_reload_menu(self): if not self.active: return this_items = {} if self._mode == "applications": if self.bamf_matcher is not None: for window in self.bamf_matcher.RunningApplications(): try: item = self._get_item_for_bamf_application(window) this_items[item.id] = item except Exception as e: logger.debug("Could not get info from BAMF", exc_info=e) pass else: from gi.repository import Wnck as wnck screen = wnck.Screen.get_default() for window in screen.get_windows(): pid = window.get_pid() if pid > 0: item = self._get_menu_item(pid) item.process_name = window.get_name() this_items[item.id] = item pixbuf = window.get_icon() if pixbuf: item.icon = g15cairo.pixbuf_to_surface(pixbuf) else: for process_id in gtop.proclist(): process_id = "%d" % process_id try: pid = int(process_id) proc_state = gtop.proc_state(pid) proc_args = gtop.proc_args(pid) if self._mode == "all" or (self._mode != "all" and proc_state.uid == os.getuid()): item = self._get_menu_item(pid) item.icon = None item.process_name = self._get_process_name( proc_args, proc_state.cmd) this_items[item.id] = item except Exception as e: logger.debug("Process may have disappeared", exc_info=e) # In case the process disappears pass # Remove any missing items for item in self.menu.get_children(): if item.id not in this_items: self.menu.remove_child(item) # Make sure selected still exists if self.menu.selected is not None and self.menu.get_child_by_id( self.menu.selected.id) is None: if len(self.menu.get_child_count()) > 0: self.menu.selected = self.menu.get_children()[0] else: self.menu.selected = None self.page.mark_dirty() self.screen.redraw(self.page)
def pixbuf_to_surface(pixbuf, size=None): return g15cairo.pixbuf_to_surface(pixbuf, size)