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   
Ejemplo n.º 2
0
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   
Ejemplo n.º 4
0
 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
Ejemplo n.º 7
0
                
            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")