def make_row (self, uri): try: item = gnomedesktop.item_new_from_file (uri, 0) text = "<b>%s</b>\n%s" % (item.get_string(gnomedesktop.KEY_NAME), item.get_string (gnomedesktop.KEY_COMMENT)) except: return "" return text
def parse_desktop_file(desktop, only_if_visible=True): try: desktop = gnomedesktop.item_new_from_file(desktop, gnomedesktop.LOAD_ONLY_IF_EXISTS) except Exception, e: LOGGER.warning('Couldn\'t read desktop file %s:', desktop) LOGGER.exception(e) return None
def make_row (self, path): text = "" try: item = gnomedesktop.item_new_from_file (path, 0) text = "<b>%s</b>\n%s" % (item.get_string(gnomedesktop.KEY_NAME), item.get_string (gnomedesktop.KEY_COMMENT)) except: return None, "" return self.make_icon (item.get_string(gnomedesktop.KEY_ICON)), text
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
def generate_icon_names(self, tuble): ''' Generate a list of icons names from a [GFile, GFileInfo, [x,y]] ''' self.info = tuble[1] #print gio.desktop_app_info_new_from_filename (tuble[0].get_path()) self.Gicon = self.info.get_icon() self.uri = tuble[0].get_path() self.icon_names = self.Gicon.get_names() if self.showthumb: self.info = tuble[0].query_info(gio.FILE_ATTRIBUTE_THUMBNAIL_PATH, gio.FILE_QUERY_INFO_NONE) thumbfile = self.info.get_attribute_as_string(gio.FILE_ATTRIBUTE_THUMBNAIL_PATH) if thumbfile: path = thumbfile.replace('file://','') if os.path.exists(path): return path #if GNOMEUI: # icon, isthumbnail = self.thumbnailer.CheckWorkList(tuble[0].get_uri()) # if not icon: # self.thumbnailer.AddToWorkList(tuble[0].get_uri(), tuble[1].get_content_type()) # else: # if isthumbnail: # return icon #icon = (self.thumbnailer.Process(tuble[0].get_uri(), tuble[1].get_content_type())).replace('file://','') #return icon if str(self.uri).lower().endswith('.desktop'): if GNOMEDESK: self.ico = gnomedesktop.item_new_from_file(self.uri, gnomedesktop.LOAD_ONLY_IF_EXISTS).get_string(gnomedesktop.KEY_ICON) else: self.ico = self.gnomedesk_get_icon(self.uri) if self.ico != None: if os.path.isfile(self.ico): return self.ico else: self.ico = self.ico.replace('.png','').replace('.svg','').replace('.xpm','') self.icon = self.icontheme.lookup_icon(self.ico,self.icon_size,self.icon_size) if self.icon: return self.icon.get_filename() else: self.iconinfo = self.icontheme.choose_icon(self.icon_names, self.icon_size,gtk.ICON_LOOKUP_USE_BUILTIN); if self.iconinfo: return self.iconinfo.get_filename() for x in range(0,len(self.icon_names)-1): xx = len(self.icon_names)-1-x if self.icontheme.has_icon(self.icon_names[xx]): return self.icon_names[xx] return 'gtk-execute'
def click_callback(self): ''' Callback when click ''' elem = self.get_selected_element() if elem: if str(elem[0].get_path()).lower().endswith('.desktop'): uri = elem[0].get_path() if GNOMEDESK: item = gnomedesktop.item_new_from_file(uri, gnomedesktop.LOAD_ONLY_IF_EXISTS) run = item.get_string(gnomedesktop.KEY_EXEC) else: run = self.gnomedesk_get_exe(uri) os.system(run + ' &') else: xdg_open(chr(34) + elem[0].get_path() + chr(34)) return
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): entry_path = path break if not entry_path: continue desktop = gnomedesktop.item_new_from_file(entry_path, 0) if desktop: return desktop return None def is_installed(self): if not self.__install_checked: self.__recheck_installed() self.__install_checked = True return self.__desktop_entry is not None def __recheck_installed(self): old_installed = self.__desktop_entry is not None self.__desktop_entry = self.__lookup_desktop() if (self.__desktop_entry is not None) != old_installed: self.emit("changed")