157 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Drawing;
 | 
						|
using System.IO;
 | 
						|
using DescriptiveEnum;
 | 
						|
 | 
						|
namespace VEPROMS.CSLA.Library
 | 
						|
{
 | 
						|
	[Serializable]
 | 
						|
	[TypeConverter(typeof(ExpandableObjectConverter))]
 | 
						|
	public class RODbConfig : ConfigDynamicTypeDescriptor, INotifyPropertyChanged
 | 
						|
	{
 | 
						|
		#region DynamicTypeDescriptor
 | 
						|
		internal override bool IsReadOnly
 | 
						|
		{
 | 
						|
			get { return _RODb == null; }
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
		#region XML
 | 
						|
		private XMLProperties _Xp;
 | 
						|
		private XMLProperties Xp
 | 
						|
		{
 | 
						|
			get { return _Xp; }
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
		#region Constructors
 | 
						|
		private RODb _RODb;
 | 
						|
		public RODbConfig(RODb roDb)
 | 
						|
		{
 | 
						|
			_RODb = roDb;
 | 
						|
			string xml = roDb.Config;
 | 
						|
			if (xml == string.Empty) xml = "<Config/>";
 | 
						|
			_Xp = new XMLProperties(xml);
 | 
						|
		}
 | 
						|
		private RODbInfo _RODbInfo;
 | 
						|
		public RODbConfig(RODbInfo roDbInfo)
 | 
						|
		{
 | 
						|
			_RODbInfo = roDbInfo;
 | 
						|
			string xml = roDbInfo.Config;
 | 
						|
			if (xml == string.Empty) xml = "<Config/>";
 | 
						|
			_Xp = new XMLProperties(xml);
 | 
						|
		}
 | 
						|
		public RODbConfig(string xml)
 | 
						|
		{
 | 
						|
			if (xml == string.Empty) xml = "<Config/>";
 | 
						|
			_Xp = new XMLProperties(xml);
 | 
						|
		}
 | 
						|
		public RODbConfig()
 | 
						|
		{
 | 
						|
			string xml = "<Config/>";
 | 
						|
			_Xp = new XMLProperties(xml);
 | 
						|
		}
 | 
						|
		internal string GetValue(string group, string item)
 | 
						|
		{
 | 
						|
			return _Xp[group, item];
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
		#region Local Properties
 | 
						|
		[Category("General")]
 | 
						|
		[DisplayName("ROName")]
 | 
						|
		[Description("ROName")]
 | 
						|
		public string ROName
 | 
						|
		{
 | 
						|
			get { return (_RODb != null ? _RODb.ROName : _RODbInfo.ROName); }
 | 
						|
			set { if (_RODb != null) _RODb.ROName = value; }
 | 
						|
		}
 | 
						|
		[Category("General")]
 | 
						|
		[DisplayName("FolderPath")]
 | 
						|
		[Description("FolderPath")]
 | 
						|
		public string FolderPath
 | 
						|
		{
 | 
						|
			get { return (_RODb != null ? _RODb.FolderPath : _RODbInfo != null?_RODbInfo.FolderPath:null); }
 | 
						|
			set { if (_RODb != null) _RODb.FolderPath = value; }
 | 
						|
		}
 | 
						|
        public RODb MyRODb
 | 
						|
        { get { return _RODb; } }
 | 
						|
		#endregion
 | 
						|
		#region ToString
 | 
						|
		public override string ToString()
 | 
						|
		{
 | 
						|
			string s = _Xp.ToString();
 | 
						|
			if (s == "<Config/>" || s == "<Config></Config>") return string.Empty;
 | 
						|
			return s;
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
		#region RODefaults
 | 
						|
		[Category("Referenced Objects")]
 | 
						|
		[DisplayName("Graphic File Extension")]
 | 
						|
		[RefreshProperties(RefreshProperties.All)]
 | 
						|
		[Description("Default File Extension")]
 | 
						|
		public string Graphics_defaultext
 | 
						|
		{
 | 
						|
			get
 | 
						|
			{
 | 
						|
				// For this data:
 | 
						|
				//  look in roapp.ini in the FolderPath directory;
 | 
						|
				//  look in top folder's config
 | 
						|
				//  set to Volian default, i.e. "TIF".
 | 
						|
				string s = GetRoAppIniValue("ROAPP", "Extention");
 | 
						|
				if (s == null || s == string.Empty)
 | 
						|
					s = TopFolderConfigValue("Graphics", "defaultext");
 | 
						|
				if (s == null || s == string.Empty)
 | 
						|
					return s = "TIF";
 | 
						|
 | 
						|
				return s;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		private string GetRoAppIniValue(string p, string p_2)
 | 
						|
		{
 | 
						|
			if (FolderPath == null) return null;
 | 
						|
			string inipath = FolderPath + @"\roapp.ini";
 | 
						|
			if (!File.Exists(inipath)) return null;
 | 
						|
			StreamReader myReader = new StreamReader(inipath);
 | 
						|
			string sLine;
 | 
						|
			int indx = -1;
 | 
						|
			while ((sLine = myReader.ReadLine()) != null)
 | 
						|
			{
 | 
						|
				if (sLine.Length > 0 && sLine.Substring(0, 1) != ";")
 | 
						|
				{
 | 
						|
					if ((indx = sLine.ToLower().IndexOf(p_2.ToLower())) >= 0)
 | 
						|
					{
 | 
						|
						indx = sLine.IndexOf("=", indx + 9);
 | 
						|
						return sLine.Substring(indx + 1, sLine.Length - indx - 1).Trim();
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
			myReader.Close();
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
		private string TopFolderConfigValue(string p, string p_2)
 | 
						|
		{
 | 
						|
			FolderInfo fi = FolderInfo.GetTop();
 | 
						|
			return fi.FolderConfig.Graphics_defaultext;
 | 
						|
		}
 | 
						|
		public string GetDefaultGraphicExtension()
 | 
						|
		{
 | 
						|
			if (_RODb != null)
 | 
						|
				return Graphics_defaultext;
 | 
						|
			if (_RODbInfo != null)
 | 
						|
				return Graphics_defaultext;
 | 
						|
			else
 | 
						|
				return "TIF"; // this is the Volian Default
 | 
						|
		}
 | 
						|
		public string GetDefaultGraphicExtensionLocation()
 | 
						|
		{
 | 
						|
			string s = GetRoAppIniValue("ROAPP", "Extention");
 | 
						|
			if (s != null && s != string.Empty) return "Default Extension found in roapp.ini";
 | 
						|
			s = TopFolderConfigValue("Graphics", "defaultext");
 | 
						|
			if (s != null && s != string.Empty) return "Default Extension defined in veproms properties";
 | 
						|
			return "Used program default";
 | 
						|
		}
 | 
						|
 | 
						|
		#endregion
 | 
						|
	}
 | 
						|
} |