Exemplo n.º 1
0
 def __init__(self, mugshot_app=None, menu_entry=None):
     super(Application, self).__init__()
     self.__app = mugshot_app
     self.__install_checked = False
     self.__desktop_entry = None
     self.__menu_entry = menu_entry
     ad = apps_directory.get_app_directory()            
     ad.connect("changed", lambda ad: self.__recheck_installed())        
Exemplo n.º 2
0
 def get_app(self, mugshot_app):
     if not self.__apps.has_key(mugshot_app.get_id()):
         ad = apps_directory.get_app_directory()
         for desktop_name in mugshot_app.get_desktop_names().split(';'):
             try:
                 target_menuitem = ad.lookup(desktop_name)
             except KeyError, e:
                 continue
             if self.__local_apps.has_key(target_menuitem.get_name()):
                 self._logger.debug("moving app %s from local to apps", target_menuitem.get_name())
                 existing_app = self.__local_apps[target_menuitem.get_name()]
                 del self.__local_apps[target_menuitem.get_name()]
                 existing_app.set_app(mugshot_app)
                 self.__apps[mugshot_app.get_id()] = existing_app
                 return existing_app
         self._logger.debug("creating app %s", mugshot_app.get_id())
         self.__apps[mugshot_app.get_id()] = Application(mugshot_app=mugshot_app)
Exemplo n.º 3
0
    def __init__(self, *args, **kwargs):
        super(AppsStock, self).__init__(*args, **kwargs)        
        
        self.__box = CanvasVBox(spacing=3)
        self.__message = hippo.CanvasText()
        self.__message_link = ActionLink()
        self.__message_link.connect("button-press-event", lambda link, event: self.__on_message_link())
        self.__message_link_url = None
        self.__subtitle = hippo.CanvasText(font="Bold 12px")
        self.__static_set = CanvasVBox()
        self.__dynamic_set = CanvasVBox()
        
        self.__box.append(self.__message)
        self.__box.append(self.__message_link)        
        self.__box.append(self.__subtitle)        
        
        self.__box.append(self.__static_set)
        self.__box.append(self.__dynamic_set)        
        self.__box.set_child_visible(self.__dynamic_set, False)
        
        self.__app_browser = None
        self._add_more_link(self.__on_more_link)

        self._mugshot.connect("all-apps-loaded", lambda mugshot: self.__merge_apps())  
        self._mugshot.connect("global-top-apps-changed", lambda mugshot, apps: self.__sync())  
        self._mugshot.connect("my-top-apps-changed", lambda mugshot, apps: self.__sync())      
        self._mugshot.connect("pinned-apps-changed", lambda mugshot, apps: self.__sync())        
        self._mugshot.connect("pref-changed", lambda mugshot, key, value: self.__handle_pref_change(key, value))          
        
        self.__usage_enabled = False
        
        self.__static_set_ids = {}
        self.__set_message('Loading...')
        
        self.__apps = {} # mugshot app -> app
        # apps installed locally and not known in Mugshot
        self.__local_apps = {} # desktop -> app

        ad = apps_directory.get_app_directory()
        for app in ad.get_apps():
            self.get_local_app(app)
Exemplo n.º 4
0
    def set_app(self, app):
        self.__app = app
        self.emit("changed")

    def __lookup_desktop(self):
        if self.__menu_entry:
            entry_path = self.__menu_entry.get_desktop_file_path()
            try:
                desktop = gnomedesktop.item_new_from_file(entry_path, 0)
                if desktop:
                    return desktop            
            except gobject.GError, e:
                desktop = None
        names = self.__app.get_desktop_names()        
        for name in names.split(';'):
            ad = apps_directory.get_app_directory()            
            menuitem = None
            try:
                menuitem = ad.lookup(name)
            except KeyError, e:
                pass
                
            if menuitem and not self.__menu_entry:
                self.__menu_entry = menuitem
                entry_path = menuitem.get_desktop_file_path()
            else:
                entry_path = None
                for dir in libbig.get_xdg_datadirs():
                    appdir = os.path.join(dir, 'applications')
                    path = os.path.join(appdir, name + '.desktop') 
                    if os.access(path, os.R_OK):