/[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 126 by william, Thu Aug 23 04:47:35 2012 UTC revision 200 by william, Mon Aug 4 12:39:13 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 33  namespace EmuXPortal.Api Line 35  namespace EmuXPortal.Api
35    
36          void RefreshConfig(logger log);          void RefreshConfig(logger log);
37          void ReleasePlatformImageResource();          void ReleasePlatformImageResource();
38      }      }    
   
   
39    
40      public static class EmuConfigLoader      public static class EmuConfigLoader
41      {      {
# 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;                  IEmuConfig parent_rom = null;
88                  if (config_path == "") { config_path = string.Format(@"{0}\{1}", rom_path, EMU_CONFIG); }                  if (rom_path == "")
89                    {
90                        if (config_path != "")
91                        {
92                            EmuRomPath = config_path.Replace(EMU_CONFIG, "").TrimEnd(new char[] { '\\' });
93                        }
94                        else
95                        {
96                            EmuRomPath = Config.RomPath;
97                        }
98                    }
99                    else { EmuRomPath = rom_path; }
100                    if (config_path == "")
101                    {
102                        config_path = string.Format(@"{0}\{1}", EmuRomPath, EMU_CONFIG);
103                    }
104    
105    
106                    if (rom_path == "")
107                    {
108                        FileInfo emu_config = new FileInfo(string.Format(@"{0}\{1}", new FileInfo(config_path).Directory, EMU_CONFIG));
109                        //if (emu_config.Exists)
110                        //{
111                        //    EmuRomPath = emu_config.Directory.FullName;
112                        //}
113                        while (!emu_config.Exists)
114                        {
115                            try
116                            {
117                                emu_config = new FileInfo(string.Format(@"{0}\{1}", emu_config.Directory.Parent.FullName, EMU_CONFIG));                          
118                            }
119                            catch (Exception)
120                            {
121                                break;
122                            }
123                        }
124                        if (emu_config.Exists)
125                        {
126                            EmuRomPath = emu_config.Directory.FullName;
127                            // load the rom config
128                            parent_rom = EmuConfigLoader.Load(log, emu_config.FullName, EmuRomPath);
129                        }
130    
131                        
132                    }
133    
134                  // read the actual config emu.config                  // read the actual config emu.config
135                  FileInfo fi = new FileInfo(config_path);                  FileInfo fi = new FileInfo(config_path);
# Line 129  namespace EmuXPortal.Api Line 173  namespace EmuXPortal.Api
173                                              if (reader.IsStartElement())                                              if (reader.IsStartElement())
174                                              {                                              {
175                                                  string platform_image = reader.ReadElementContentAsString();                                                  string platform_image = reader.ReadElementContentAsString();
176                                                  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));
177                                                  string str_platform_image = (platform_image == "") ? "DefaultPlatformImage" : platform_image;                                                  string str_platform_image = (platform_image == "") ? "DefaultPlatformImage" : platform_image;
178                                                  log.WriteLine("\t\tPLATFORMIMAGE={0}", str_platform_image);                                                  log.WriteLine("\t\tPLATFORMIMAGE={0}", str_platform_image);
179                                              }                                              }
# Line 203  namespace EmuXPortal.Api Line 247  namespace EmuXPortal.Api
247                                                  //EmuOptions = (external_configs_path == "") ? EmuOptions : value;                                                  //EmuOptions = (external_configs_path == "") ? EmuOptions : value;
248                                                  log.WriteLine("\tEXTERNALCONFIGSPATH={0}", external_configs_path);                                                  log.WriteLine("\tEXTERNALCONFIGSPATH={0}", external_configs_path);
249                                                  DirectoryInfo ext_path = new DirectoryInfo(external_configs_path);                                                  DirectoryInfo ext_path = new DirectoryInfo(external_configs_path);
250                                                  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);
251                                                  // try the path in romroot                                                  // try the path in romroot
252                                                  if (!ext_path.Exists) { ext_path = new DirectoryInfo(ext_rom_path); }                                                  if (!ext_path.Exists) { ext_path = new DirectoryInfo(ext_rom_path); }
253                                                  if (ext_path.Exists)                                                  if (ext_path.Exists)
# Line 216  namespace EmuXPortal.Api Line 260  namespace EmuXPortal.Api
260                                                          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())
261                                                      foreach (string file in external_config_files)                                                      foreach (string file in external_config_files)
262                                                      {                                                      {
263                                                          IEmuConfig config = EmuConfigLoader.Load(log, file, rom_path);                                                          IEmuConfig config = EmuConfigLoader.Load(log, file, EmuRomPath);
264                                                          if (config != null)                                                          if (config != null)
265                                                              externalconfigs.Add(config);                                                              externalconfigs.Add(config);
266                                                      }                                                      }
# Line 248  namespace EmuXPortal.Api Line 292  namespace EmuXPortal.Api
292                  }                  }
293                  else { log.WriteLine("Could not find EMU Config File: {0}", config_path); }                  else { log.WriteLine("Could not find EMU Config File: {0}", config_path); }
294    
295                    if (parent_rom != null)
296                    {
297                        if (parent_rom.HasExternalConfigs)
298                        {
299                            foreach (var rom in parent_rom.ExternalConfigs)
300                            {
301                                if (rom.ConfigPath == config_path)
302                                {
303                                    this.PlatformNameShort = parent_rom.PlatformNameShort;
304                                    this.PlatformNameLong = parent_rom.PlatformNameLong;
305                                    break;
306                                }
307                            }
308                            
309                        }
310                    }
311    
312                  return this;                  return this;
313              }              }
314    
# Line 262  namespace EmuXPortal.Api Line 323  namespace EmuXPortal.Api
323              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, "") { }
324              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)
325              {              {
326                    
327                    
328    
329                  this.PlatformNameShort = PlatformNameShort;                  this.PlatformNameShort = PlatformNameShort;
330                  this.PlatformNameLong = PlatformNameLong;                  this.PlatformNameLong = PlatformNameLong;
331                  this.PlatformImage = (PlatformImage == "") ? Properties.Resources.DefaultPlatformImage : Image.FromFile(PlatformImage);                  this.PlatformImage = (PlatformImage == "") ? Properties.Resources.DefaultPlatformImage : Image.FromFile(PlatformImage);
# Line 276  namespace EmuXPortal.Api Line 340  namespace EmuXPortal.Api
340                  this.log = log;                  this.log = log;
341              }              }
342              #region IEmuConfig members              #region IEmuConfig members
343                public bool IsFavorites { get { return false; } }
344              public string ConfigPath { get; set; }              public string ConfigPath { get; set; }
345              private string _PlatformNameShort;              private string _PlatformNameShort;
346              public string PlatformNameShort              public string PlatformNameShort
# Line 284  namespace EmuXPortal.Api Line 349  namespace EmuXPortal.Api
349                  {                  {
350                      try                      try
351                      {                      {
352                          DirectoryInfo t = new DirectoryInfo(EmuRomPath);                          //if (string.IsNullOrEmpty(EmuRomPath))
353                            //{
354                            //    return "EmuRomPath null";
355                            //}
356                            DirectoryInfo t = new DirectoryInfo(EmuRomPath);                      
357                          return (_PlatformNameShort == "") ? string.Format("{0} (folder={1})", Unknown_Platform, t.Name) : _PlatformNameShort;                          return (_PlatformNameShort == "") ? string.Format("{0} (folder={1})", Unknown_Platform, t.Name) : _PlatformNameShort;
358                            
359                      }                      }
360                      catch (Exception ex)                      catch (Exception ex)
361                      {                      {

Legend:
Removed from v.126  
changed lines
  Added in v.200

  ViewVC Help
Powered by ViewVC 1.1.22