Example #1
0
	def load_file(self, widget, data=None):
		'''
		This callback is fired when the "Open" Gtk.MenuItem is activated. This
		method opens a filechooser dialog to choose an xml file and then load
		its contents into the treeview.
		'''
		dialog = Gtk.FileChooserDialog(title=None,
							 	 	   parent=None,
							 	 	   action=Gtk.FileChooserAction.OPEN,
							 	 	   buttons=(Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
							 	 	   			Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT))
		xml_file_filter = Gtk.FileFilter()
		xml_file_filter.add_pattern("*.xml")
		xml_file_filter.set_name("XML Files")
		dialog.add_filter(xml_file_filter)
		response = dialog.run()
		if response == Gtk.ResponseType.ACCEPT:
			filename = dialog.get_filename()
			print("Opening file: {}".format(filename))
			dialog.destroy()
			generator = StyleGenerator()
			try:
				info, styles = generator.parse_file(filename, self.sourceview_styles)
			except ParseError:
				traceback.print_exc()
				# Open a dialog that says it failed to parse.
				return
			except Exception as e:
				traceback.print_exc()
				# Open a dialog that says it failed to parse.
				return
			# Set the info pane
			#self.filename_entry.set_text(filename)
			self.window.set_title(__application__ + " - " + filename)
			self.name_entry.set_text(info['name'])
			self.id_entry.set_text(info['id'])
			self.author_entry.set_text(info['author'])
			self.version_entry.set_text(info['version'])
			self.description_entry.set_text(info['description'])
			self.styles_interface.treestore.clear()
			self.styles_interface.styles_rows = {}
			# Set styles
			for lang, config in sorted(styles.iteritems()):
				if lang == '__globals':
					# Add globals to the StylesTreeView
					for scheme, conf in config.iteritems():
						row = self.format_row(conf, scheme)
						config[scheme] = row
					self.styles_interface.init_globals(globals_defaults=config)
				else:
					language = config['name']
					styles = config['styles']
					for scheme, style in styles.iteritems():
						row = self.format_row(style, scheme)
						self.styles_interface.add_style(language, scheme, row)
		else:
			dialog.destroy()
Example #2
0
	def _save_file(self):
		'''
		Save the theme to the current filepath in `self.filename`
		'''
		# Build the styles dict based on the styles that are laid out in the
		# StylesTreeView.
		styles_object = self.styles_interface.treestore
		generator = StyleGenerator()
		info = self. get_info()
		generator.add_info(info['id'], info['name'], 
						   author=info['author'],
						   description=info['description'],
						   version=info['version'])	
		generator.add_styles(styles_object)
		print etree.tostring(generator.tree.getroot(), pretty_print=True)
		generator.save_file(info['filename'])