Beispiel #1
0
    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)
Beispiel #2
0
 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()
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
 def set_pixbuf(self, pixbuf):
     self.buffer = g15cairo.pixbuf_to_surface(pixbuf)
Beispiel #6
0
 def set_pixbuf(self, pixbuf):
     self.buffer = g15cairo.pixbuf_to_surface(pixbuf)
Beispiel #7
0
    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)
Beispiel #8
0
def pixbuf_to_surface(pixbuf, size=None):
    return g15cairo.pixbuf_to_surface(pixbuf, size)