/[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 170 by william, Mon Aug 4 05:01:23 2014 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                    IEmuConfig parent_rom = null;
88                  if (rom_path == "")                  if (rom_path == "")
89                  {                  {
90                      if (config_path != "")                      if (config_path != "")
# Line 100  namespace EmuXPortal.Api Line 101  namespace EmuXPortal.Api
101                  {                  {
102                      config_path = string.Format(@"{0}\{1}", EmuRomPath, EMU_CONFIG);                      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);
136                  if (fi.Exists)                  if (fi.Exists)
# Line 262  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 276  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 290  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 298  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.170  
changed lines
  Added in v.200

  ViewVC Help
Powered by ViewVC 1.1.22