Fixed property and settings loader

This commit is contained in:
Michael Becker 2014-06-26 15:46:10 -04:00
parent a4595d4382
commit 675306d409
10 changed files with 441 additions and 171 deletions

View File

@ -65,6 +65,8 @@ namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
oppanel.Dock = DockStyle.Fill;
pnlContainer.Controls.Add(oppanel);
oppanel.LoadSettings();
}
}
@ -119,6 +121,12 @@ namespace UniversalEditor.UserInterface.WindowsForms.Dialogs
private void cmdOK_Click(object sender, EventArgs e)
{
IOptionPanelImplementation[] panels = UniversalEditor.UserInterface.Common.Reflection.GetAvailableOptionPanels();
foreach (IOptionPanelImplementation panel in panels)
{
panel.SaveSettings();
}
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();
}

View File

@ -28,150 +28,204 @@
/// </summary>
private void InitializeComponent()
{
this.fraWindowLayout = new System.Windows.Forms.GroupBox();
this.radioButton3 = new System.Windows.Forms.RadioButton();
this.radioButton2 = new System.Windows.Forms.RadioButton();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.fraExtensions = new System.Windows.Forms.GroupBox();
this.chkEnableExtensionGallery = new System.Windows.Forms.CheckBox();
this.label1 = new System.Windows.Forms.Label();
this.txtOnlineGalleryURL = new System.Windows.Forms.TextBox();
this.chkEnableGalleryAutoUpdate = new System.Windows.Forms.CheckBox();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.fraWindowLayout.SuspendLayout();
this.fraExtensions.SuspendLayout();
this.SuspendLayout();
//
// fraWindowLayout
//
this.fraWindowLayout.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
this.fraWindowLayout = new System.Windows.Forms.GroupBox();
this.radioButton3 = new System.Windows.Forms.RadioButton();
this.radioButton2 = new System.Windows.Forms.RadioButton();
this.radioButton1 = new System.Windows.Forms.RadioButton();
this.fraExtensions = new System.Windows.Forms.GroupBox();
this.txtOnlineGalleryURL = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.checkBox1 = new System.Windows.Forms.CheckBox();
this.chkEnableGalleryAutoUpdate = new System.Windows.Forms.CheckBox();
this.chkEnableExtensionGallery = new System.Windows.Forms.CheckBox();
this.fraTitleBarBehavior = new System.Windows.Forms.GroupBox();
this.optTitleBarBehaviorNone = new System.Windows.Forms.RadioButton();
this.optTitleBarBehaviorCurrentFileName = new System.Windows.Forms.RadioButton();
this.optTitleBarBehaviorCurrentFilePath = new System.Windows.Forms.RadioButton();
this.fraWindowLayout.SuspendLayout();
this.fraExtensions.SuspendLayout();
this.fraTitleBarBehavior.SuspendLayout();
this.SuspendLayout();
//
// fraWindowLayout
//
this.fraWindowLayout.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.fraWindowLayout.Controls.Add(this.radioButton3);
this.fraWindowLayout.Controls.Add(this.radioButton2);
this.fraWindowLayout.Controls.Add(this.radioButton1);
this.fraWindowLayout.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.fraWindowLayout.Location = new System.Drawing.Point(3, 3);
this.fraWindowLayout.Name = "fraWindowLayout";
this.fraWindowLayout.Size = new System.Drawing.Size(505, 52);
this.fraWindowLayout.TabIndex = 0;
this.fraWindowLayout.TabStop = false;
this.fraWindowLayout.Text = "Window layout";
//
// radioButton3
//
this.radioButton3.AutoSize = true;
this.radioButton3.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.radioButton3.Location = new System.Drawing.Point(273, 19);
this.radioButton3.Name = "radioButton3";
this.radioButton3.Size = new System.Drawing.Size(118, 18);
this.radioButton3.TabIndex = 0;
this.radioButton3.Text = "&Separate windows";
this.radioButton3.UseVisualStyleBackColor = true;
//
// radioButton2
//
this.radioButton2.AutoSize = true;
this.radioButton2.Checked = true;
this.radioButton2.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.radioButton2.Location = new System.Drawing.Point(151, 19);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(122, 18);
this.radioButton2.TabIndex = 0;
this.radioButton2.TabStop = true;
this.radioButton2.Text = "&Multiple documents";
this.radioButton2.UseVisualStyleBackColor = true;
//
// radioButton1
//
this.radioButton1.AutoSize = true;
this.radioButton1.Enabled = false;
this.radioButton1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.radioButton1.Location = new System.Drawing.Point(28, 19);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(123, 18);
this.radioButton1.TabIndex = 0;
this.radioButton1.Text = "&Tabbed documents";
this.radioButton1.UseVisualStyleBackColor = true;
//
// fraExtensions
//
this.fraExtensions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
this.fraWindowLayout.Controls.Add(this.radioButton3);
this.fraWindowLayout.Controls.Add(this.radioButton2);
this.fraWindowLayout.Controls.Add(this.radioButton1);
this.fraWindowLayout.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.fraWindowLayout.Location = new System.Drawing.Point(3, 3);
this.fraWindowLayout.Name = "fraWindowLayout";
this.fraWindowLayout.Size = new System.Drawing.Size(505, 52);
this.fraWindowLayout.TabIndex = 0;
this.fraWindowLayout.TabStop = false;
this.fraWindowLayout.Text = "Window layout";
//
// radioButton3
//
this.radioButton3.AutoSize = true;
this.radioButton3.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.radioButton3.Location = new System.Drawing.Point(273, 19);
this.radioButton3.Name = "radioButton3";
this.radioButton3.Size = new System.Drawing.Size(118, 18);
this.radioButton3.TabIndex = 0;
this.radioButton3.Text = "&Separate windows";
this.radioButton3.UseVisualStyleBackColor = true;
//
// radioButton2
//
this.radioButton2.AutoSize = true;
this.radioButton2.Checked = true;
this.radioButton2.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.radioButton2.Location = new System.Drawing.Point(151, 19);
this.radioButton2.Name = "radioButton2";
this.radioButton2.Size = new System.Drawing.Size(122, 18);
this.radioButton2.TabIndex = 0;
this.radioButton2.TabStop = true;
this.radioButton2.Text = "&Multiple documents";
this.radioButton2.UseVisualStyleBackColor = true;
//
// radioButton1
//
this.radioButton1.AutoSize = true;
this.radioButton1.Enabled = false;
this.radioButton1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.radioButton1.Location = new System.Drawing.Point(28, 19);
this.radioButton1.Name = "radioButton1";
this.radioButton1.Size = new System.Drawing.Size(123, 18);
this.radioButton1.TabIndex = 0;
this.radioButton1.Text = "&Tabbed documents";
this.radioButton1.UseVisualStyleBackColor = true;
//
// fraExtensions
//
this.fraExtensions.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.fraExtensions.Controls.Add(this.txtOnlineGalleryURL);
this.fraExtensions.Controls.Add(this.label1);
this.fraExtensions.Controls.Add(this.checkBox1);
this.fraExtensions.Controls.Add(this.chkEnableGalleryAutoUpdate);
this.fraExtensions.Controls.Add(this.chkEnableExtensionGallery);
this.fraExtensions.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.fraExtensions.Location = new System.Drawing.Point(3, 61);
this.fraExtensions.Name = "fraExtensions";
this.fraExtensions.Size = new System.Drawing.Size(505, 142);
this.fraExtensions.TabIndex = 1;
this.fraExtensions.TabStop = false;
this.fraExtensions.Text = "Extensions";
//
// chkEnableExtensionGallery
//
this.chkEnableExtensionGallery.AutoSize = true;
this.chkEnableExtensionGallery.Location = new System.Drawing.Point(28, 19);
this.chkEnableExtensionGallery.Name = "chkEnableExtensionGallery";
this.chkEnableExtensionGallery.Size = new System.Drawing.Size(258, 17);
this.chkEnableExtensionGallery.TabIndex = 0;
this.chkEnableExtensionGallery.Text = "Enable access to extensions in the Online &Gallery";
this.chkEnableExtensionGallery.UseVisualStyleBackColor = true;
//
// label1
//
this.label1.AutoSize = true;
this.label1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.label1.Location = new System.Drawing.Point(47, 45);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(98, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Online gallery &URL:";
//
// txtOnlineGalleryURL
//
this.txtOnlineGalleryURL.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
this.fraExtensions.Controls.Add(this.txtOnlineGalleryURL);
this.fraExtensions.Controls.Add(this.label1);
this.fraExtensions.Controls.Add(this.checkBox1);
this.fraExtensions.Controls.Add(this.chkEnableGalleryAutoUpdate);
this.fraExtensions.Controls.Add(this.chkEnableExtensionGallery);
this.fraExtensions.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.fraExtensions.Location = new System.Drawing.Point(3, 162);
this.fraExtensions.Name = "fraExtensions";
this.fraExtensions.Size = new System.Drawing.Size(505, 117);
this.fraExtensions.TabIndex = 1;
this.fraExtensions.TabStop = false;
this.fraExtensions.Text = "Extensions";
//
// txtOnlineGalleryURL
//
this.txtOnlineGalleryURL.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txtOnlineGalleryURL.Location = new System.Drawing.Point(151, 42);
this.txtOnlineGalleryURL.Name = "txtOnlineGalleryURL";
this.txtOnlineGalleryURL.Size = new System.Drawing.Size(348, 20);
this.txtOnlineGalleryURL.TabIndex = 2;
//
// chkEnableGalleryAutoUpdate
//
this.chkEnableGalleryAutoUpdate.AutoSize = true;
this.chkEnableGalleryAutoUpdate.Location = new System.Drawing.Point(28, 68);
this.chkEnableGalleryAutoUpdate.Name = "chkEnableGalleryAutoUpdate";
this.chkEnableGalleryAutoUpdate.Size = new System.Drawing.Size(283, 17);
this.chkEnableGalleryAutoUpdate.TabIndex = 0;
this.chkEnableGalleryAutoUpdate.Text = "Automatically check for up&dates to installed extensions";
this.chkEnableGalleryAutoUpdate.UseVisualStyleBackColor = true;
//
// checkBox1
//
this.checkBox1.AutoSize = true;
this.checkBox1.Location = new System.Drawing.Point(28, 91);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(288, 17);
this.checkBox1.TabIndex = 0;
this.checkBox1.Text = "Load &per-user extensions when running as Administrator";
this.checkBox1.UseVisualStyleBackColor = true;
//
// ApplicationOptionsPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.fraExtensions);
this.Controls.Add(this.fraWindowLayout);
this.Name = "ApplicationOptionsPanel";
this.Size = new System.Drawing.Size(511, 405);
this.fraWindowLayout.ResumeLayout(false);
this.fraWindowLayout.PerformLayout();
this.fraExtensions.ResumeLayout(false);
this.fraExtensions.PerformLayout();
this.ResumeLayout(false);
this.txtOnlineGalleryURL.Location = new System.Drawing.Point(151, 42);
this.txtOnlineGalleryURL.Name = "txtOnlineGalleryURL";
this.txtOnlineGalleryURL.Size = new System.Drawing.Size(348, 20);
this.txtOnlineGalleryURL.TabIndex = 2;
//
// label1
//
this.label1.AutoSize = true;
this.label1.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.label1.Location = new System.Drawing.Point(47, 45);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(98, 13);
this.label1.TabIndex = 1;
this.label1.Text = "Online gallery &URL:";
//
// checkBox1
//
this.checkBox1.AutoSize = true;
this.checkBox1.Location = new System.Drawing.Point(28, 91);
this.checkBox1.Name = "checkBox1";
this.checkBox1.Size = new System.Drawing.Size(288, 17);
this.checkBox1.TabIndex = 0;
this.checkBox1.Text = "Load &per-user extensions when running as Administrator";
this.checkBox1.UseVisualStyleBackColor = true;
//
// chkEnableGalleryAutoUpdate
//
this.chkEnableGalleryAutoUpdate.AutoSize = true;
this.chkEnableGalleryAutoUpdate.Location = new System.Drawing.Point(28, 68);
this.chkEnableGalleryAutoUpdate.Name = "chkEnableGalleryAutoUpdate";
this.chkEnableGalleryAutoUpdate.Size = new System.Drawing.Size(283, 17);
this.chkEnableGalleryAutoUpdate.TabIndex = 0;
this.chkEnableGalleryAutoUpdate.Text = "Automatically check for up&dates to installed extensions";
this.chkEnableGalleryAutoUpdate.UseVisualStyleBackColor = true;
//
// chkEnableExtensionGallery
//
this.chkEnableExtensionGallery.AutoSize = true;
this.chkEnableExtensionGallery.Location = new System.Drawing.Point(28, 19);
this.chkEnableExtensionGallery.Name = "chkEnableExtensionGallery";
this.chkEnableExtensionGallery.Size = new System.Drawing.Size(258, 17);
this.chkEnableExtensionGallery.TabIndex = 0;
this.chkEnableExtensionGallery.Text = "Enable access to extensions in the Online &Gallery";
this.chkEnableExtensionGallery.UseVisualStyleBackColor = true;
//
// fraTitleBarBehavior
//
this.fraTitleBarBehavior.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.fraTitleBarBehavior.Controls.Add(this.optTitleBarBehaviorCurrentFilePath);
this.fraTitleBarBehavior.Controls.Add(this.optTitleBarBehaviorCurrentFileName);
this.fraTitleBarBehavior.Controls.Add(this.optTitleBarBehaviorNone);
this.fraTitleBarBehavior.Location = new System.Drawing.Point(3, 61);
this.fraTitleBarBehavior.Name = "fraTitleBarBehavior";
this.fraTitleBarBehavior.Size = new System.Drawing.Size(505, 95);
this.fraTitleBarBehavior.TabIndex = 2;
this.fraTitleBarBehavior.TabStop = false;
this.fraTitleBarBehavior.Text = "Title bar behavior";
//
// optTitleBarBehaviorNone
//
this.optTitleBarBehaviorNone.AutoSize = true;
this.optTitleBarBehaviorNone.Checked = true;
this.optTitleBarBehaviorNone.Location = new System.Drawing.Point(28, 19);
this.optTitleBarBehaviorNone.Name = "optTitleBarBehaviorNone";
this.optTitleBarBehaviorNone.Size = new System.Drawing.Size(301, 17);
this.optTitleBarBehaviorNone.TabIndex = 0;
this.optTitleBarBehaviorNone.TabStop = true;
this.optTitleBarBehaviorNone.Text = "Do not display document-specific information in the title bar";
this.optTitleBarBehaviorNone.UseVisualStyleBackColor = true;
//
// optTitleBarBehaviorCurrentFileName
//
this.optTitleBarBehaviorCurrentFileName.AutoSize = true;
this.optTitleBarBehaviorCurrentFileName.Location = new System.Drawing.Point(28, 42);
this.optTitleBarBehaviorCurrentFileName.Name = "optTitleBarBehaviorCurrentFileName";
this.optTitleBarBehaviorCurrentFileName.Size = new System.Drawing.Size(304, 17);
this.optTitleBarBehaviorCurrentFileName.TabIndex = 0;
this.optTitleBarBehaviorCurrentFileName.Text = "Display the file &name of the current document in the title bar";
this.optTitleBarBehaviorCurrentFileName.UseVisualStyleBackColor = true;
//
// optTitleBarBehaviorCurrentFilePath
//
this.optTitleBarBehaviorCurrentFilePath.AutoSize = true;
this.optTitleBarBehaviorCurrentFilePath.Location = new System.Drawing.Point(28, 65);
this.optTitleBarBehaviorCurrentFilePath.Name = "optTitleBarBehaviorCurrentFilePath";
this.optTitleBarBehaviorCurrentFilePath.Size = new System.Drawing.Size(299, 17);
this.optTitleBarBehaviorCurrentFilePath.TabIndex = 0;
this.optTitleBarBehaviorCurrentFilePath.Text = "Display the full &path to the current document in the title bar";
this.optTitleBarBehaviorCurrentFilePath.UseVisualStyleBackColor = true;
//
// ApplicationOptionPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.fraTitleBarBehavior);
this.Controls.Add(this.fraExtensions);
this.Controls.Add(this.fraWindowLayout);
this.Name = "ApplicationOptionPanel";
this.Size = new System.Drawing.Size(511, 405);
this.fraWindowLayout.ResumeLayout(false);
this.fraWindowLayout.PerformLayout();
this.fraExtensions.ResumeLayout(false);
this.fraExtensions.PerformLayout();
this.fraTitleBarBehavior.ResumeLayout(false);
this.fraTitleBarBehavior.PerformLayout();
this.ResumeLayout(false);
}
@ -187,5 +241,9 @@
private System.Windows.Forms.CheckBox chkEnableExtensionGallery;
private System.Windows.Forms.CheckBox chkEnableGalleryAutoUpdate;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.GroupBox fraTitleBarBehavior;
private System.Windows.Forms.RadioButton optTitleBarBehaviorCurrentFilePath;
private System.Windows.Forms.RadioButton optTitleBarBehaviorCurrentFileName;
private System.Windows.Forms.RadioButton optTitleBarBehaviorNone;
}
}

View File

@ -7,14 +7,73 @@ using System.Windows.Forms;
namespace UniversalEditor.UserInterface.WindowsForms.OptionPanels
{
public partial class ApplicationOptionPanel : OptionPanel
{
public ApplicationOptionPanel()
{
InitializeComponent();
}
public partial class ApplicationOptionPanel : OptionPanel
{
public ApplicationOptionPanel()
{
InitializeComponent();
}
private string[] mvarOptionGroups = new string[] { "Application" };
public override string[] OptionGroups { get { return mvarOptionGroups; } }
}
private string[] mvarOptionGroups = new string[] { "Application" };
public override string[] OptionGroups { get { return mvarOptionGroups; } }
public override void LoadSettings()
{
base.LoadSettings();
string value = Engine.CurrentEngine.ConfigurationManager.GetValue<string>(new string[]
{
"Application",
"TitleBarBehavior"
});
switch (value)
{
case "CurrentFileName":
{
optTitleBarBehaviorCurrentFileName.Checked = true;
break;
}
case "CurrentFilePath":
{
optTitleBarBehaviorCurrentFilePath.Checked = true;
break;
}
default:
{
optTitleBarBehaviorNone.Checked = true;
break;
}
}
}
public override void SaveSettings()
{
base.SaveSettings();
#region Title Bar Behavior
{
string value = "None";
if (optTitleBarBehaviorCurrentFileName.Checked)
{
value = "CurrentFileName";
}
if (optTitleBarBehaviorCurrentFilePath.Checked)
{
value = "CurrentFilePath";
}
Engine.CurrentEngine.ConfigurationManager.SetValue<string>(new string[]
{
"Application",
"TitleBarBehavior"
}, value);
}
#endregion
}
public override void ResetSettings()
{
base.ResetSettings();
optTitleBarBehaviorNone.Checked = true;
}
}
}

View File

@ -18,7 +18,7 @@
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="Color, System.Drawing">Blue</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>

View File

@ -17,15 +17,12 @@ namespace UniversalEditor.UserInterface.WindowsForms
public virtual void LoadSettings()
{
throw new NotImplementedException();
}
public virtual void SaveSettings()
{
throw new NotImplementedException();
}
public virtual void ResetSettings()
{
throw new NotImplementedException();
}
private string[] mvarOptionGroups = null;

View File

@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UniversalEditor.ObjectModels.PropertyList;
namespace UniversalEditor.UserInterface
{
public enum ConfigurationManagerPropertyScope
{
Local,
Global
}
public class ConfigurationManager
{
private PropertyListObjectModel mvarGlobalConfiguration = new PropertyListObjectModel();
private PropertyListObjectModel mvarLocalConfiguration = new PropertyListObjectModel();
public void SetValue<T>(string propertyName, T propertyValue, ConfigurationManagerPropertyScope scope = ConfigurationManagerPropertyScope.Local)
{
SetValue<T>(new string[] { propertyName }, propertyValue, scope);
}
public void SetValue<T>(string[] propertyName, T propertyValue, ConfigurationManagerPropertyScope scope = ConfigurationManagerPropertyScope.Local)
{
if (scope == ConfigurationManagerPropertyScope.Local)
{
mvarLocalConfiguration.SetValue<T>(propertyName, propertyValue);
}
else if (scope == ConfigurationManagerPropertyScope.Global)
{
mvarGlobalConfiguration.SetValue<T>(propertyName, propertyValue);
}
}
public T GetValue<T>(string propertyName, T defaultValue = default(T))
{
return GetValue<T>(new string[] { propertyName }, defaultValue);
}
public T GetValue<T>(string[] propertyName, T defaultValue = default(T))
{
if (mvarLocalConfiguration.HasValue(propertyName))
{
return mvarLocalConfiguration.GetValue<T>(propertyName, defaultValue);
}
return mvarGlobalConfiguration.GetValue<T>(propertyName, defaultValue);
}
public void Load()
{
UniversalEditor.DataFormats.PropertyList.XML.XMLPropertyListDataFormat xdf = new DataFormats.PropertyList.XML.XMLPropertyListDataFormat();
Document.Load(mvarLocalConfiguration, xdf, new Accessors.FileAccessor(Engine.DataPath + System.IO.Path.DirectorySeparatorChar.ToString() + "Configuration.xml"));
}
public void Save()
{
UniversalEditor.DataFormats.PropertyList.XML.XMLPropertyListDataFormat xdf = new DataFormats.PropertyList.XML.XMLPropertyListDataFormat();
Document.Save(mvarLocalConfiguration, xdf, new Accessors.FileAccessor(Engine.DataPath + System.IO.Path.DirectorySeparatorChar.ToString() + "Configuration.xml", true, true));
}
}
}

View File

@ -233,9 +233,6 @@ namespace UniversalEditor.UserInterface
/// </summary>
private MarkupObjectModel mvarRawMarkup = new MarkupObjectModel();
private PropertyListObjectModel mvarConfiguration = new PropertyListObjectModel();
public PropertyListObjectModel Configuration { get { return mvarConfiguration; } }
private System.Collections.ObjectModel.ReadOnlyCollection<string> mvarSelectedFileNames = null;
public System.Collections.ObjectModel.ReadOnlyCollection<string> SelectedFileNames { get { return mvarSelectedFileNames; } }
@ -438,7 +435,7 @@ namespace UniversalEditor.UserInterface
}
UpdateSplashScreenStatus("Finalizing configuration");
ConfigurationManager.Load();
}
private void InitializeLanguage(MarkupTagElement tag)
@ -613,6 +610,9 @@ namespace UniversalEditor.UserInterface
}
private ConfigurationManager mvarConfigurationManager = new ConfigurationManager();
public ConfigurationManager ConfigurationManager { get { return mvarConfigurationManager; } }
private RecentFileManager mvarRecentFileManager = new RecentFileManager();
public RecentFileManager RecentFileManager { get { return mvarRecentFileManager; } }
@ -684,7 +684,7 @@ namespace UniversalEditor.UserInterface
Engine.mvarCurrentEngine = this;
string INSTANCEID = GetType().FullName + "$2d429aa3371c421fb63b42525e51a50c$92751853175891031214292357218181357901238$";
if (Configuration.GetValue<bool>("SingleInstanceUniquePerDirectory", true))
if (ConfigurationManager.GetValue<bool>("SingleInstanceUniquePerDirectory", true))
{
// The single instance should be unique per directory
INSTANCEID += System.Reflection.Assembly.GetEntryAssembly().Location;
@ -723,6 +723,7 @@ namespace UniversalEditor.UserInterface
SessionManager.Save();
BookmarksManager.Save();
RecentFileManager.Save();
ConfigurationManager.Save();
}
}
}

View File

@ -58,6 +58,7 @@
<Compile Include="CommandDisplayStyle.cs" />
<Compile Include="CommandShortcutKey.cs" />
<Compile Include="Common\Reflection.cs" />
<Compile Include="ConfigurationManager.cs" />
<Compile Include="Engine.cs" />
<Compile Include="HostApplication.cs" />
<Compile Include="HostApplicationMessage.cs" />

View File

@ -28,6 +28,23 @@ namespace UniversalEditor.DataFormats.PropertyList.XML
LoadMarkup(tagConfiguration, ref plom);
}
protected override void BeforeSaveInternal(Stack<ObjectModel> objectModels)
{
base.BeforeSaveInternal(objectModels);
PropertyListObjectModel plom = (objectModels.Pop() as PropertyListObjectModel);
MarkupObjectModel mom = new MarkupObjectModel();
MarkupTagElement tagConfiguration = new MarkupTagElement();
tagConfiguration.FullName = "Configuration";
SaveMarkup(ref tagConfiguration, plom);
mom.Elements.Add(new MarkupPreprocessorElement("xml", "version=\"1.0\" encoding=\"UTF-8\""));
mom.Elements.Add(tagConfiguration);
objectModels.Push(mom);
}
private static DataFormatReference _dfr = null;
public override DataFormatReference MakeReference()
{
@ -45,18 +62,28 @@ namespace UniversalEditor.DataFormats.PropertyList.XML
public static void LoadMarkup(MarkupTagElement tagConfiguration, ref PropertyListObjectModel plom)
{
foreach (MarkupElement el in tagConfiguration.Elements)
MarkupTagElement tagProperties = (tagConfiguration.Elements["Properties"] as MarkupTagElement);
if (tagProperties != null)
{
MarkupTagElement tag = (el as MarkupTagElement);
if (tag == null) continue;
if (tag.Name == "Property")
foreach (MarkupElement el in tagProperties.Elements)
{
MarkupTagElement tag = (el as MarkupTagElement);
if (tag == null) continue;
if (tag.FullName != "Property") continue;
Property p = LoadPropertyListProperty(tag);
if (p != null) plom.Properties.Add(p);
}
else if (tag.Name == "Group")
}
MarkupTagElement tagGroups = (tagConfiguration.Elements["Groups"] as MarkupTagElement);
if (tagGroups != null)
{
foreach (MarkupElement el in tagGroups.Elements)
{
MarkupTagElement tag = (el as MarkupTagElement);
if (tag == null) continue;
if (tag.FullName != "Group") continue;
Group g = LoadPropertyListGroup(tag);
if (g != null) plom.Groups.Add(g);
}
@ -213,17 +240,29 @@ namespace UniversalEditor.DataFormats.PropertyList.XML
Group group = new Group();
group.Name = attID.Value;
foreach (MarkupElement el1 in tag.Elements)
MarkupTagElement tagProperties = (tag.Elements["Properties"] as MarkupTagElement);
if (tagProperties != null)
{
MarkupTagElement tag1 = (el1 as MarkupTagElement);
if (tag1 == null) continue;
if (tag1.Name == "Property")
foreach (MarkupElement el1 in tagProperties.Elements)
{
MarkupTagElement tag1 = (el1 as MarkupTagElement);
if (tag1 == null) continue;
if (tag1.Name != "Property") continue;
Property p = LoadPropertyListProperty(tag1);
if (p != null) group.Properties.Add(p);
}
else if (tag1.Name == "Group")
}
MarkupTagElement tagGroups = (tag.Elements["Groups"] as MarkupTagElement);
if (tagGroups != null)
{
foreach (MarkupElement el1 in tagGroups.Elements)
{
MarkupTagElement tag1 = (el1 as MarkupTagElement);
if (tag1 == null) continue;
if (tag1.Name != "Group") continue;
Group g = LoadPropertyListGroup(tag1);
if (g != null) group.Groups.Add(g);
}

View File

@ -210,9 +210,57 @@ namespace UniversalEditor.ObjectModels.PropertyList
}
}
/// <summary>
/// Finds the property with the specified name. If more than one string is specified,
/// searches for groups in hierarchy with the property name being the last in the list.
/// If the property does not exist, it is created.
/// </summary>
/// <param name="names"></param>
/// <returns></returns>
public Property FindOrCreateProperty<T>(string[] propertyName, T defaultValue)
{
Group group = null;
for (int i = 0; i < propertyName.Length - 1; i++)
{
if (group == null)
{
Group newgroup = mvarGroups[propertyName[i]];
if (newgroup == null) newgroup = mvarGroups.Add(propertyName[i]);
group = newgroup;
}
else
{
Group newgroup = group.Groups[propertyName[i]];
if (newgroup == null) newgroup = group.Groups.Add(propertyName[i]);
group = newgroup;
}
}
if (group == null)
{
string propName = propertyName[propertyName.Length - 1];
Property prop = mvarProperties[propName];
if (prop == null) prop = mvarProperties.Add(propName, defaultValue);
return prop;
}
else
{
string propName = propertyName[propertyName.Length - 1];
Property prop = group.Properties[propName];
if (prop == null) prop = group.Properties.Add(propName, defaultValue);
return prop;
}
}
public bool HasValue(string[] propertyName)
{
return (FindProperty(propertyName) != null);
}
public void SetValue<T>(string[] p, T value)
{
Property prop = FindOrCreateProperty(p, value);
prop.Value = value;
}
private string mvarTitle = String.Empty;