Beispiel #1
0
	def __loadMenus(self):
		self.applications = Menu()
		self.applications.tree = gmenu.lookup_tree('applications.menu', gmenu.FLAGS_SHOW_EMPTY|gmenu.FLAGS_INCLUDE_EXCLUDED|gmenu.FLAGS_INCLUDE_NODISPLAY|gmenu.FLAGS_SHOW_ALL_SEPARATORS)
		self.applications.visible_tree = gmenu.lookup_tree('applications.menu')
		self.applications.tree.sort_key = gmenu.SORT_DISPLAY_NAME
		self.applications.visible_tree.sort_key = gmenu.SORT_DISPLAY_NAME
		self.applications.path = os.path.join(util.getUserMenuPath(), self.applications.tree.get_menu_file())
		if not os.path.isfile(self.applications.path):
			self.applications.dom = xml.dom.minidom.parseString(util.getUserMenuXml(self.applications.tree))
		else:
			self.applications.dom = xml.dom.minidom.parse(self.applications.path)
		self.__remove_whilespace_nodes(self.applications.dom)

		self.settings = Menu() 	 
		self.settings.tree = gmenu.lookup_tree('settings.menu', gmenu.FLAGS_SHOW_EMPTY|gmenu.FLAGS_INCLUDE_EXCLUDED|gmenu.FLAGS_INCLUDE_NODISPLAY|gmenu.FLAGS_SHOW_ALL_SEPARATORS)
		self.settings.visible_tree = gmenu.lookup_tree('settings.menu') 	 
		self.settings.tree.sort_key = gmenu.SORT_DISPLAY_NAME
		self.settings.visible_tree.sort_key = gmenu.SORT_DISPLAY_NAME
		self.settings.path = os.path.join(util.getUserMenuPath(), self.settings.tree.get_menu_file()) 	 
		if not os.path.isfile(self.settings.path): 	 
			self.settings.dom = xml.dom.minidom.parseString(util.getUserMenuXml(self.settings.tree)) 	 
		else: 	 
			self.settings.dom = xml.dom.minidom.parse(self.settings.path) 	 
		self.__remove_whilespace_nodes(self.settings.dom)

		self.save(True)
Beispiel #2
0
 def loadDOM(self):
     try:
         self.dom = xml.dom.minidom.parse(self.path)
     except (IOError, xml.parsers.expat.ExpatError) as e:
         self.dom = xml.dom.minidom.parseString(
             util.getUserMenuXml(self.tree))
     util.removeWhitespaceNodes(self.dom)
Beispiel #3
0
	def __loadMenus(self):
		self.applications = Menu()
		self.applications.tree = gmenu.lookup_tree('cinnamon-applications.menu', gmenu.FLAGS_SHOW_EMPTY|gmenu.FLAGS_INCLUDE_EXCLUDED|gmenu.FLAGS_INCLUDE_NODISPLAY|gmenu.FLAGS_SHOW_ALL_SEPARATORS)
		self.applications.visible_tree = gmenu.lookup_tree('cinnamon-applications.menu')
		self.applications.tree.sort_key = gmenu.SORT_DISPLAY_NAME
		self.applications.visible_tree.sort_key = gmenu.SORT_DISPLAY_NAME
		self.applications.path = os.path.join(util.getUserMenuPath(), self.applications.tree.get_menu_file())
		if not os.path.isfile(self.applications.path):
			self.applications.dom = xml.dom.minidom.parseString(util.getUserMenuXml(self.applications.tree))
		else:
			self.applications.dom = xml.dom.minidom.parse(self.applications.path)
		self.__remove_whilespace_nodes(self.applications.dom)

		self.save(True)
Beispiel #4
0
	def revert(self):
		for name in ('applications', 'settings'):
			menu = getattr(self, name)
			self.revertTree(menu.tree.root)
			path = os.path.join(util.getUserMenuPath(), menu.tree.get_menu_file())
			try:
				os.unlink(path)
			except OSError:
				pass
			#reload DOM for each menu
			if not os.path.isfile(menu.path):
				menu.dom = xml.dom.minidom.parseString(util.getUserMenuXml(menu.tree))
			else:
				menu.dom = xml.dom.minidom.parse(menu.path)
			self.__remove_whilespace_nodes(menu.dom)
		#reset undo/redo, no way to recover from this
		self.__undo, self.__redo = [], []
		self.save()
Beispiel #5
0
	def revert(self):
		for name in ('applications',):
			menu = getattr(self, name)
			self.revertTree(menu.tree.root)
			path = os.path.join(util.getUserMenuPath(), menu.tree.get_menu_file())
			try:
				os.unlink(path)
			except OSError:
				pass
			#reload DOM for each menu
			if not os.path.isfile(menu.path):
				menu.dom = xml.dom.minidom.parseString(util.getUserMenuXml(menu.tree))
			else:
				menu.dom = xml.dom.minidom.parse(menu.path)
			self.__remove_whilespace_nodes(menu.dom)
		#reset undo/redo, no way to recover from this
		self.__undo, self.__redo = [], []
		self.save()
Beispiel #6
0
	def redo(self):
		if len(self.__redo) == 0:
			return
		files = self.__redo.pop()
		undo = []
		for file_path in files:
			new_path = file_path.rsplit('.', 1)[0]
			undo_path = util.getUniqueUndoFile(new_path)
			data = open(new_path).read()
			open(undo_path, 'w').write(data)
			data = open(file_path).read()
			open(new_path, 'w').write(data)
			os.unlink(file_path)
			undo.append(undo_path)
		#reload DOM to make changes stick
		for name in ('applications', 'settings'):
			menu = getattr(self, name)
			if not os.path.isfile(menu.path):
				menu.dom = xml.dom.minidom.parseString(util.getUserMenuXml(menu.tree))
			else:
				menu.dom = xml.dom.minidom.parse(menu.path)
			self.__remove_whilespace_nodes(menu.dom)
		self.__undo.append(undo)
Beispiel #7
0
	def redo(self):
		if len(self.__redo) == 0:
			return
		files = self.__redo.pop()
		undo = []
		for file_path in files:
			new_path = file_path.rsplit('.', 1)[0]
			undo_path = util.getUniqueUndoFile(new_path)
			data = open(new_path).read()
			open(undo_path, 'w').write(data)
			data = open(file_path).read()
			open(new_path, 'w').write(data)
			os.unlink(file_path)
			undo.append(undo_path)
		#reload DOM to make changes stick
		for name in ('applications',):
			menu = getattr(self, name)
			if not os.path.isfile(menu.path):
				menu.dom = xml.dom.minidom.parseString(util.getUserMenuXml(menu.tree))
			else:
				menu.dom = xml.dom.minidom.parse(menu.path)
			self.__remove_whilespace_nodes(menu.dom)
		self.__undo.append(undo)
Beispiel #8
0
 def loadDOM(self):
     try:
         self.dom = xml.dom.minidom.parse(self.path)
     except (IOError, xml.parsers.expat.ExpatError), e:
         self.dom = xml.dom.minidom.parseString(util.getUserMenuXml(self.tree))
Beispiel #9
0
 def loadDOM(self):
     try:
         self.dom = xml.dom.minidom.parse(self.path)
     except (IOError, xml.parsers.expat.ExpatError), e:
         self.dom = xml.dom.minidom.parseString(
             util.getUserMenuXml(self.tree))
Beispiel #10
0
 def loadDOM(self):
     try:
         self.dom = xml.dom.minidom.parse(self.path)
     except (IOError, xml.parsers.expat.ExpatError) as e:
         self.dom = xml.dom.minidom.parseString(util.getUserMenuXml(self.tree))
     util.removeWhitespaceNodes(self.dom)