mirror of https://github.com/icsharpcode/ILSpy.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							87 lines
						
					
					
						
							2.4 KiB
						
					
					
				
			
		
		
	
	
							87 lines
						
					
					
						
							2.4 KiB
						
					
					
				// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) | 
						|
// This code is distributed under MIT X11 license (for details please see \doc\license.txt) | 
						|
 | 
						|
using System.ComponentModel; | 
						|
using System.Windows.Controls; | 
						|
using System.Xml.Linq; | 
						|
using ICSharpCode.ILSpy; | 
						|
using ICSharpCode.ILSpy.Options; | 
						|
 | 
						|
namespace TestPlugin | 
						|
{ | 
						|
	[ExportOptionPage(Title = "TestPlugin", Order = 0)] | 
						|
	partial class CustomOptionPage : UserControl, IOptionPage | 
						|
	{ | 
						|
		static readonly XNamespace ns = "http://www.ilspy.net/testplugin"; | 
						|
		 | 
						|
		public CustomOptionPage() | 
						|
		{ | 
						|
			InitializeComponent(); | 
						|
		} | 
						|
		 | 
						|
		public void Load(ILSpySettings settings) | 
						|
		{ | 
						|
			// For loading options, use ILSpySetting's indexer. | 
						|
			// If the specified section does exist, the indexer will return a new empty element. | 
						|
			XElement e = settings[ns + "CustomOptions"]; | 
						|
			// Now load the options from the XML document: | 
						|
			Options s = new Options(); | 
						|
			s.UselessOption1 = (bool?)e.Attribute("useless1") ?? s.UselessOption1; | 
						|
			s.UselessOption2 = (double?)e.Attribute("useless2") ?? s.UselessOption2; | 
						|
			this.DataContext = s; | 
						|
		} | 
						|
		 | 
						|
		public void Save(XElement root) | 
						|
		{ | 
						|
			Options s = (Options)this.DataContext; | 
						|
			// Save the options back into XML: | 
						|
			XElement section = new XElement(ns + "CustomOptions"); | 
						|
			section.SetAttributeValue("useless1", s.UselessOption1); | 
						|
			section.SetAttributeValue("useless2", s.UselessOption2); | 
						|
			 | 
						|
			// Replace the existing section in the settings file, or add a new section, | 
						|
			// if required. | 
						|
			XElement existingElement = root.Element(ns + "CustomOptions"); | 
						|
			if (existingElement != null) | 
						|
				existingElement.ReplaceWith(section); | 
						|
			else | 
						|
				root.Add(section); | 
						|
		} | 
						|
	} | 
						|
	 | 
						|
	class Options : INotifyPropertyChanged | 
						|
	{ | 
						|
		bool uselessOption1; | 
						|
		 | 
						|
		public bool UselessOption1 { | 
						|
			get { return uselessOption1; } | 
						|
			set { | 
						|
				if (uselessOption1 != value) { | 
						|
					uselessOption1 = value; | 
						|
					OnPropertyChanged("UselessOption1"); | 
						|
				} | 
						|
			} | 
						|
		} | 
						|
		 | 
						|
		double uselessOption2; | 
						|
		 | 
						|
		public double UselessOption2 { | 
						|
			get { return uselessOption2; } | 
						|
			set { | 
						|
				if (uselessOption2 != value) { | 
						|
					uselessOption2 = value; | 
						|
					OnPropertyChanged("UselessOption2"); | 
						|
				} | 
						|
			} | 
						|
		} | 
						|
		 | 
						|
		public event PropertyChangedEventHandler PropertyChanged; | 
						|
		 | 
						|
		protected virtual void OnPropertyChanged(string propertyName) | 
						|
		{ | 
						|
			if (PropertyChanged != null) { | 
						|
				PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); | 
						|
			} | 
						|
		} | 
						|
	} | 
						|
} |