UltimateZoneBuilder/Source/Config/ConfigurationInfo.cs

149 lines
5 KiB
C#
Raw Normal View History

#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#endregion
#region ================== Namespaces
2007-06-14 23:31:57 +00:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
2007-09-27 22:55:03 +00:00
using CodeImp.DoomBuilder.IO;
2007-10-01 20:53:10 +00:00
using CodeImp.DoomBuilder.Data;
2007-09-27 22:55:03 +00:00
using System.IO;
2007-06-14 23:31:57 +00:00
#endregion
namespace CodeImp.DoomBuilder.Config
2007-06-14 23:31:57 +00:00
{
2008-01-02 21:49:43 +00:00
internal class ConfigurationInfo : IComparable<ConfigurationInfo>
2007-06-14 23:31:57 +00:00
{
2007-09-27 22:55:03 +00:00
#region ================== Variables
private string name;
private string filename;
private string settingskey;
private string nodebuildersave;
private string nodebuildertest;
private string nodebuilder3d;
2007-10-01 20:53:10 +00:00
private DataLocationList resources;
2007-09-28 09:55:23 +00:00
private string testprogram;
private string testparameters;
2007-09-27 22:55:03 +00:00
#endregion
#region ================== Properties
public string Name { get { return name; } }
public string Filename { get { return filename; } }
public string NodebuilderSave { get { return nodebuildersave; } set { nodebuildersave = value; } }
public string NodebuilderTest { get { return nodebuildertest; } set { nodebuildertest = value; } }
public string Nodebuilder3D { get { return nodebuilder3d; } set { nodebuilder3d = value; } }
2007-10-01 20:53:10 +00:00
public DataLocationList Resources { get { return resources; } }
2007-09-29 15:43:59 +00:00
public string TestProgram { get { return testprogram; } set { testprogram = value; } }
public string TestParameters { get { return testparameters; } set { testparameters = value; } }
2007-09-27 22:55:03 +00:00
#endregion
#region ================== Constructor / Disposer
2007-06-14 23:31:57 +00:00
// Constructor
public ConfigurationInfo(string name, string filename)
{
// Initialize
this.name = name;
this.filename = filename;
2007-09-27 22:55:03 +00:00
this.settingskey = Path.GetFileNameWithoutExtension(filename).ToLower();
// Load settings from program configuration
this.nodebuildersave = General.Settings.ReadSetting("configurations." + settingskey + ".nodebuildersave", "");
this.nodebuildertest = General.Settings.ReadSetting("configurations." + settingskey + ".nodebuildertest", "");
this.nodebuilder3d = General.Settings.ReadSetting("configurations." + settingskey + ".nodebuilder3d", "");
2007-09-28 09:55:23 +00:00
this.testprogram = General.Settings.ReadSetting("configurations." + settingskey + ".testprogram", "");
this.testparameters = General.Settings.ReadSetting("configurations." + settingskey + ".testparameters", "");
2007-12-01 01:32:56 +00:00
this.resources = new DataLocationList(General.Settings.Config, "configurations." + settingskey + ".resources");
2007-06-14 23:31:57 +00:00
}
2007-09-27 22:55:03 +00:00
// Constructor
private ConfigurationInfo()
{
}
#endregion
#region ================== Methods
2007-06-14 23:31:57 +00:00
// This compares it to other ConfigurationInfo objects
public int CompareTo(ConfigurationInfo other)
{
// Compare
return name.CompareTo(other.name);
}
2007-09-27 22:55:03 +00:00
// This saves the settings to program configuration
public void SaveSettings()
{
// Write to configuration
General.Settings.WriteSetting("configurations." + settingskey + ".nodebuildersave", nodebuildersave);
General.Settings.WriteSetting("configurations." + settingskey + ".nodebuildertest", nodebuildertest);
General.Settings.WriteSetting("configurations." + settingskey + ".nodebuilder3d", nodebuilder3d);
2007-09-28 09:55:23 +00:00
General.Settings.WriteSetting("configurations." + settingskey + ".testprogram", testprogram);
General.Settings.WriteSetting("configurations." + settingskey + ".testparameters", testparameters);
2007-12-01 01:32:56 +00:00
resources.WriteToConfig(General.Settings.Config, "configurations." + settingskey + ".resources");
2007-09-27 22:55:03 +00:00
}
// String representation
public override string ToString()
{
return name;
}
// This clones the object
public ConfigurationInfo Clone()
{
ConfigurationInfo ci = new ConfigurationInfo();
ci.name = this.name;
ci.filename = this.filename;
ci.settingskey = this.settingskey;
ci.nodebuildersave = this.nodebuildersave;
ci.nodebuildertest = this.nodebuildertest;
ci.nodebuilder3d = this.nodebuilder3d;
2007-10-01 20:53:10 +00:00
ci.resources = new DataLocationList();
2007-09-27 22:55:03 +00:00
ci.resources.AddRange(this.resources);
2007-09-28 09:55:23 +00:00
ci.testprogram = this.testprogram;
ci.testparameters = this.testparameters;
2007-09-27 22:55:03 +00:00
return ci;
}
// This applies settings from an object
public void Apply(ConfigurationInfo ci)
{
this.name = ci.name;
this.filename = ci.filename;
this.settingskey = ci.settingskey;
this.nodebuildersave = ci.nodebuildersave;
this.nodebuildertest = ci.nodebuildertest;
this.nodebuilder3d = ci.nodebuilder3d;
2007-10-01 20:53:10 +00:00
this.resources = new DataLocationList();
2007-09-27 22:55:03 +00:00
this.resources.AddRange(ci.resources);
2007-09-28 09:55:23 +00:00
this.testprogram = ci.testprogram;
this.testparameters = ci.testparameters;
2007-09-27 22:55:03 +00:00
}
#endregion
2007-06-14 23:31:57 +00:00
}
}