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())
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)
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)
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):