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.
85 lines
1.8 KiB
85 lines
1.8 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.Composition; |
|
using System.Xml.Linq; |
|
|
|
using ICSharpCode.ILSpy.Options; |
|
using ICSharpCode.ILSpy.Util; |
|
|
|
using TomsToolbox.Wpf; |
|
using TomsToolbox.Wpf.Composition.AttributedModel; |
|
|
|
namespace TestPlugin |
|
{ |
|
[DataTemplate(typeof(CustomOptionsViewModel))] |
|
[NonShared] |
|
partial class CustomOptionPage |
|
{ |
|
public CustomOptionPage() |
|
{ |
|
InitializeComponent(); |
|
} |
|
} |
|
|
|
[ExportOptionPage(Order = 0)] |
|
[NonShared] |
|
class CustomOptionsViewModel : ObservableObject, IOptionPage |
|
{ |
|
private Options options; |
|
|
|
public string Title => "TestPlugin"; |
|
|
|
public Options Options { |
|
get => options; |
|
set => SetProperty(ref options, value); |
|
} |
|
|
|
public void Load(SettingsSnapshot snapshot) |
|
{ |
|
this.Options = snapshot.GetSettings<Options>(); |
|
} |
|
|
|
public void LoadDefaults() |
|
{ |
|
Options.LoadFromXml(new XElement("dummy")); |
|
} |
|
} |
|
|
|
class Options : ObservableObject, ISettingsSection |
|
{ |
|
static readonly XNamespace ns = "http://www.ilspy.net/testplugin"; |
|
|
|
bool uselessOption1; |
|
|
|
public bool UselessOption1 { |
|
get => uselessOption1; |
|
set => SetProperty(ref uselessOption1, value); |
|
} |
|
|
|
double uselessOption2; |
|
|
|
public double UselessOption2 { |
|
get => uselessOption2; |
|
set => SetProperty(ref uselessOption2, value); |
|
} |
|
|
|
public XName SectionName { get; } = ns + "CustomOptions"; |
|
|
|
public void LoadFromXml(XElement e) |
|
{ |
|
UselessOption1 = (bool?)e.Attribute("useless1") ?? false; |
|
UselessOption2 = (double?)e.Attribute("useless2") ?? 50.0; |
|
} |
|
|
|
public XElement SaveToXml() |
|
{ |
|
var section = new XElement(SectionName); |
|
|
|
section.SetAttributeValue("useless1", UselessOption1); |
|
section.SetAttributeValue("useless2", UselessOption2); |
|
|
|
return section; |
|
} |
|
} |
|
} |