/[EmuXPortal]/trunk/EmuXPortal/Api/EmuConfig.cs
ViewVC logotype

Diff of /trunk/EmuXPortal/Api/EmuConfig.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 112 by william, Thu Aug 23 04:13:19 2012 UTC revision 199 by william, Mon Aug 4 11:35:06 2014 UTC
# Line 6  using System.Drawing; Line 6  using System.Drawing;
6  using System.IO;  using System.IO;
7  using EmuXPortal.Logging;  using EmuXPortal.Logging;
8  using System.Xml;  using System.Xml;
9    using System.Diagnostics;
10    
11  namespace EmuXPortal.Api  namespace EmuXPortal.Api
12  {  {
13      public interface IEmuConfig : IComparable<IEmuConfig>, IDisposable      public interface IEmuConfig : IComparable<IEmuConfig>, IDisposable
14      {      {
15            bool IsFavorites { get; }
16          string ConfigPath { get; }          string ConfigPath { get; }
17          string PlatformNameShort { get; }          string PlatformNameShort { get; }
18          string PlatformNameLong { get; }          string PlatformNameLong { get; }
# Line 31  namespace EmuXPortal.Api Line 33  namespace EmuXPortal.Api
33          string GameExeArgs { get; }          string GameExeArgs { get; }
34    
35    
36          void RefreshConfig();          void RefreshConfig(logger log);
37          void ReleasePlatformImageResource();          void ReleasePlatformImageResource();
38      }      }    
   
   
39    
40      public static class EmuConfigLoader      public static class EmuConfigLoader
41      {      {
# Line 46  namespace EmuXPortal.Api Line 46  namespace EmuXPortal.Api
46          public static IEmuConfig Load(logger log,string config_path, string rom_path) { return new EmuConfig().Create(log, config_path, rom_path); }          public static IEmuConfig Load(logger log,string config_path, string rom_path) { return new EmuConfig().Create(log, config_path, rom_path); }
47          #endregion          #endregion
48          #region parse emu options          #region parse emu options
49          public static string GetEMUOptions(IRomConfig config)          public static string GetEMUOptions(logger log, IRomConfig config)
50          {          {
51              EMUOptions EMUOptions = new EMUOptions(config);              EMUOptions EMUOptions = new EMUOptions(log, config);
52              return EMUOptions.Options;              return EMUOptions.Options;
53          }          }
54          #endregion          #endregion
# Line 60  namespace EmuXPortal.Api Line 60  namespace EmuXPortal.Api
60              private const string ROM_PATH = "%ROM_PATH%";              private const string ROM_PATH = "%ROM_PATH%";
61              #endregion              #endregion
62              private Dictionary<string, string> options_dict = new Dictionary<string, string>();              private Dictionary<string, string> options_dict = new Dictionary<string, string>();
63              public EMUOptions(IRomConfig config)              public EMUOptions(logger log, IRomConfig config)
64              {              {
65                  init_dict(config);                  init_dict(config);
66                  config.Config.RefreshConfig();                  config.Config.RefreshConfig(log);
67                  string options = config.Config.EmuOptions;                  string options = config.Config.EmuOptions;
68                  string real_options = options;                  string real_options = options;
69                  foreach (KeyValuePair<string, string> pair in options_dict) { if (options.ToLower().Contains(pair.Key.ToLower())) { real_options = real_options.ToLower().Replace(pair.Key.ToLower(), pair.Value); } }                  foreach (KeyValuePair<string, string> pair in options_dict) { if (options.ToLower().Contains(pair.Key.ToLower())) { real_options = real_options.ToLower().Replace(pair.Key.ToLower(), pair.Value); } }
# Line 79  namespace EmuXPortal.Api Line 79  namespace EmuXPortal.Api
79          #endregion          #endregion
80    
81          #region private class EmuConfig : IEmuConfig          #region private class EmuConfig : IEmuConfig
82          private class EmuConfig : IEmuConfig, IComparable<IEmuConfig>, IDisposable          internal class EmuConfig : IEmuConfig, IComparable<IEmuConfig>, IDisposable
83          {          {
84              public IEmuConfig Create(logger log, string rom_path) { return this.Create(log, string.Empty, rom_path); }              public IEmuConfig Create(logger log, string rom_path) { return this.Create(log, string.Empty, rom_path); }
85              public IEmuConfig Create(logger log, string config_path, string rom_path)              public IEmuConfig Create(logger log, string config_path, string rom_path)
86              {              {
87                  EmuRomPath = rom_path;                  if (rom_path == "")
88                  if (config_path == "") { config_path = string.Format(@"{0}\{1}", rom_path, EMU_CONFIG); }                  {
89                        if (config_path != "")
90                        {
91                            EmuRomPath = config_path.Replace(EMU_CONFIG, "").TrimEnd(new char[] { '\\' });
92                        }
93                        else
94                        {
95                            EmuRomPath = Config.RomPath;
96                        }
97                    }
98                    else { EmuRomPath = rom_path; }
99                    if (config_path == "")
100                    {
101                        config_path = string.Format(@"{0}\{1}", EmuRomPath, EMU_CONFIG);
102                    }
103                
104                  // read the actual config emu.config                  // read the actual config emu.config
105                  FileInfo fi = new FileInfo(config_path);                  FileInfo fi = new FileInfo(config_path);
106                  if (fi.Exists)                  if (fi.Exists)
# Line 129  namespace EmuXPortal.Api Line 143  namespace EmuXPortal.Api
143                                              if (reader.IsStartElement())                                              if (reader.IsStartElement())
144                                              {                                              {
145                                                  string platform_image = reader.ReadElementContentAsString();                                                  string platform_image = reader.ReadElementContentAsString();
146                                                  PlatformImage = (platform_image == "") ? null : Image.FromFile(string.Format(@"{0}\{1}", rom_path, platform_image));                                                  PlatformImage = (platform_image == "") ? null : Image.FromFile(string.Format(@"{0}\{1}", EmuRomPath, platform_image));
147                                                  string str_platform_image = (platform_image == "") ? "DefaultPlatformImage" : platform_image;                                                  string str_platform_image = (platform_image == "") ? "DefaultPlatformImage" : platform_image;
148                                                  log.WriteLine("\t\tPLATFORMIMAGE={0}", str_platform_image);                                                  log.WriteLine("\t\tPLATFORMIMAGE={0}", str_platform_image);
149                                              }                                              }
# Line 203  namespace EmuXPortal.Api Line 217  namespace EmuXPortal.Api
217                                                  //EmuOptions = (external_configs_path == "") ? EmuOptions : value;                                                  //EmuOptions = (external_configs_path == "") ? EmuOptions : value;
218                                                  log.WriteLine("\tEXTERNALCONFIGSPATH={0}", external_configs_path);                                                  log.WriteLine("\tEXTERNALCONFIGSPATH={0}", external_configs_path);
219                                                  DirectoryInfo ext_path = new DirectoryInfo(external_configs_path);                                                  DirectoryInfo ext_path = new DirectoryInfo(external_configs_path);
220                                                  string ext_rom_path = string.Format(@"{0}\{1}", rom_path, external_configs_path);                                                  string ext_rom_path = string.Format(@"{0}\{1}", EmuRomPath, external_configs_path);
221                                                  // try the path in romroot                                                  // try the path in romroot
222                                                  if (!ext_path.Exists) { ext_path = new DirectoryInfo(ext_rom_path); }                                                  if (!ext_path.Exists) { ext_path = new DirectoryInfo(ext_rom_path); }
223                                                  if (ext_path.Exists)                                                  if (ext_path.Exists)
# Line 216  namespace EmuXPortal.Api Line 230  namespace EmuXPortal.Api
230                                                          external_config_files.Sort(); // sort the files (they should already be sorted alphabetically by GetFiles())                                                          external_config_files.Sort(); // sort the files (they should already be sorted alphabetically by GetFiles())
231                                                      foreach (string file in external_config_files)                                                      foreach (string file in external_config_files)
232                                                      {                                                      {
233                                                          IEmuConfig config = EmuConfigLoader.Load(log, file, rom_path);                                                          IEmuConfig config = EmuConfigLoader.Load(log, file, EmuRomPath);
234                                                          if (config != null)                                                          if (config != null)
235                                                              externalconfigs.Add(config);                                                              externalconfigs.Add(config);
236                                                      }                                                      }
# Line 262  namespace EmuXPortal.Api Line 276  namespace EmuXPortal.Api
276              public EmuConfig(logger log, string PlatformNameShort, string PlatformNameLong, string PlatformImage, string Extenstions, string EmuPath) : this(log, PlatformNameShort, PlatformNameLong, PlatformImage, Extenstions, EmuPath, "") { }              public EmuConfig(logger log, string PlatformNameShort, string PlatformNameLong, string PlatformImage, string Extenstions, string EmuPath) : this(log, PlatformNameShort, PlatformNameLong, PlatformImage, Extenstions, EmuPath, "") { }
277              public EmuConfig(logger log, string PlatformNameShort, string PlatformNameLong, string PlatformImage, string Extenstions, string EmuPath, string EmuOptions)              public EmuConfig(logger log, string PlatformNameShort, string PlatformNameLong, string PlatformImage, string Extenstions, string EmuPath, string EmuOptions)
278              {              {
279                    //if (string.IsNullOrEmpty(EmuRomPath))
280                    //{
281                    //    if (Debugger.IsAttached)
282                    //        Debugger.Break();
283                    //}
284                  this.PlatformNameShort = PlatformNameShort;                  this.PlatformNameShort = PlatformNameShort;
285                  this.PlatformNameLong = PlatformNameLong;                  this.PlatformNameLong = PlatformNameLong;
286                  this.PlatformImage = (PlatformImage == "") ? Properties.Resources.DefaultPlatformImage : Image.FromFile(PlatformImage);                  this.PlatformImage = (PlatformImage == "") ? Properties.Resources.DefaultPlatformImage : Image.FromFile(PlatformImage);
# Line 276  namespace EmuXPortal.Api Line 295  namespace EmuXPortal.Api
295                  this.log = log;                  this.log = log;
296              }              }
297              #region IEmuConfig members              #region IEmuConfig members
298                public bool IsFavorites { get { return false; } }
299              public string ConfigPath { get; set; }              public string ConfigPath { get; set; }
300              private string _PlatformNameShort;              private string _PlatformNameShort;
301              public string PlatformNameShort              public string PlatformNameShort
# Line 284  namespace EmuXPortal.Api Line 304  namespace EmuXPortal.Api
304                  {                  {
305                      try                      try
306                      {                      {
307                          DirectoryInfo t = new DirectoryInfo(EmuRomPath);                          //if (string.IsNullOrEmpty(EmuRomPath))
308                            //{
309                            //    return "EmuRomPath null";
310                            //}
311                            DirectoryInfo t = new DirectoryInfo(EmuRomPath);                      
312                          return (_PlatformNameShort == "") ? string.Format("{0} (folder={1})", Unknown_Platform, t.Name) : _PlatformNameShort;                          return (_PlatformNameShort == "") ? string.Format("{0} (folder={1})", Unknown_Platform, t.Name) : _PlatformNameShort;
313                            
314                      }                      }
315                      catch (Exception ex)                      catch (Exception ex)
316                      {                      {
# Line 343  namespace EmuXPortal.Api Line 368  namespace EmuXPortal.Api
368              {              {
369                  return this.PlatformNameLong.CompareTo(obj.PlatformNameLong);                  return this.PlatformNameLong.CompareTo(obj.PlatformNameLong);
370              }              }
371              public void RefreshConfig()              public void RefreshConfig(logger log)
372              {              {
373                  log.WriteLine("Refreshing config for: {0} from {1}", this.ToString(), string.Format(@"{0}\{1}", EmuRomPath, EMU_CONFIG));                  log.WriteLine("Refreshing config for: {0} from {1}", this.ToString(), string.Format(@"{0}\{1}", EmuRomPath, EMU_CONFIG));
374                  this.Create(log,EmuRomPath);                  this.Create(log,EmuRomPath);

Legend:
Removed from v.112  
changed lines
  Added in v.199

  ViewVC Help
Powered by ViewVC 1.1.22