/[EmuXPortal]/branches/mono/EmuXPortal/Form1.cs
ViewVC logotype

Diff of /branches/mono/EmuXPortal/Form1.cs

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

revision 296 by william, Fri Dec 15 10:47:15 2017 UTC revision 322 by william, Mon Dec 18 07:47:14 2017 UTC
# Line 26  namespace EmuXPortal Line 26  namespace EmuXPortal
26  {  {
27      public partial class Form1 : Form      public partial class Form1 : Form
28      {      {
29                    static bool bUserAbort = false;        
30          static readonly Color SELECTED_CONTROL_BACKCOLOR = Color.SteelBlue;          static readonly Color SELECTED_CONTROL_BACKCOLOR = Color.SteelBlue;
31          const float PROGRESS_BAR_FONT_SIZE = 24;          const float PROGRESS_BAR_FONT_SIZE = 24;
32          private delegate Font Delegate_GetFormFont();          private delegate Font Delegate_GetFormFont();
33          private delegate Font Delegate_ResizeFont(Font font, float size);          private delegate Font Delegate_ResizeFont(Font font, float size);
34                  private IEmuConfig CurrentSelectedRom = null;                  private IEmuPlatform CurrentSelectedRom = null;
35                  private PlatformControl CurrentPlatformControl = null;                  private PlatformControl CurrentPlatformControl = null;
36                  private int SavedPlatformIndex= -1;                  private int SavedPlatformIndex= -1;
37                  private GameControl CurrentGameControl = null;                  private GameControl CurrentGameControl = null;
38                  private RomCache cache;                  private List<IEmuPlatform> cache;
39    
40                  private CustomProgressBar progress_bar;                  private CustomProgressBar progress_bar;
41    
42    
43    
44          #region unhandled exception support          #region unhandled exception support
45          static void Application_Unhandled_ThreadException(object sender, ThreadExceptionEventArgs e)          static void Application_Unhandled_ThreadException(object sender, ThreadExceptionEventArgs e)
46          {          {
# Line 111  namespace EmuXPortal Line 113  namespace EmuXPortal
113    
114              platform_flow.Dock = DockStyle.Fill;              platform_flow.Dock = DockStyle.Fill;
115              rom_flow.Dock = DockStyle.Fill;              rom_flow.Dock = DockStyle.Fill;
116                                    
                         cache = new RomCache();  
117          }          }
118    
119                
# Line 129  namespace EmuXPortal Line 130  namespace EmuXPortal
130          }          }
131  #endregion  #endregion
132    
133                    static bool OnAbort()
134            {
135                return bUserAbort;
136            }
137          private void Form1_Load(object sender, EventArgs e)          private void Form1_Load(object sender, EventArgs e)
138          {          {
139                            cache = RomCache.GetCachedPlatforms();
140              Config.LoadConfig();              Config.LoadConfig();
141              Config.InitializePresentationForm(this);              Config.InitializePresentationForm(this);
142          }          }
# Line 165  namespace EmuXPortal Line 171  namespace EmuXPortal
171                                  CurrentPlatformControl = c;                                  CurrentPlatformControl = c;
172                          }                          }
173          }          }
174          void game_ctrl_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)          void game_ctrl_PreviewKeyDown (object sender, PreviewKeyDownEventArgs e)
175          {                  {
176                          //gLog.Verbose.Debug.WriteLine ("game_ctrl_PreviewKeyDown() fired -- keycode [{0}]", e.KeyCode);                          //gLog.Verbose.Debug.WriteLine ("game_ctrl_PreviewKeyDown() fired -- keycode [{0}]", e.KeyCode);
177              GameControl c = sender as GameControl;                          GameControl c = sender as GameControl;
178    
179              int changeAmount = 0;                          int changeAmount = 0;
180              int currentPosition = 0;                          int currentPosition = 0;
181              if (e.KeyCode == Keys.F && (e.Modifiers & Keys.Control) == Keys.Control)                          #region favorites
182              {                          // TODO: implement refectored favorites system
183                  IRomConfig config = c.Tag as IRomConfig;  //            if (e.KeyCode == Keys.F && (e.Modifiers & Keys.Control) == Keys.Control)
184                  if (config == null)  //            {
185                  {  //                IRomConfig config = c.Tag as IRomConfig;
186                      gLog.Error.WriteLine("Unable to add/remove from/to favorites (config is null): {0} [{1}]", config.RomTitle, config.RomFile);  //                if (config == null)
187                  }  //                {
188                  else  //                    gLog.Error.WriteLine("Unable to add/remove from/to favorites (config is null): {0} [{1}]", config.RomTitle, config.RomFile);
189                  {  //                }
190                      var isFavorite = RomFavorite.IsFavorite(config);  //                else
191                      if (isFavorite)  //                {
192                      {  //                    var isFavorite = RomFavorite.IsFavorite(config);
193                          // add to favorites  //                    if (isFavorite)
194                          //gLog.Debug.WriteLine("Removing from favorites: {0} [{1}]", config.RomTitle, config.RomFile);  //                    {
195                          if (!RomFavorite.RemoveFavorite(config))  //                        // add to favorites
196                          {  //                        //gLog.Debug.WriteLine("Removing from favorites: {0} [{1}]", config.RomTitle, config.RomFile);
197                              gLog.Error.WriteLine("Failed to remove from favorites: {0} [{1}]", config.RomTitle, config.RomFile);  //                        if (!RomFavorite.RemoveFavorite(config))
198                          }  //                        {
199                          else  //                            gLog.Error.WriteLine("Failed to remove from favorites: {0} [{1}]", config.RomTitle, config.RomFile);
200                          {  //                        }
201                              gLog.Info.WriteLine("Removed from favorites: {0} [{1}]", config.RomTitle, config.RomFile);  //                        else
202                              if (config.Config.PlatformNameShort == "Favorites")  //                        {
203                              {  //                            gLog.Info.WriteLine("Removed from favorites: {0} [{1}]", config.RomTitle, config.RomFile);
204                                  var parent = c.Parent;  //                            if (config.Config.PlatformNameShort == "Favorites")
205                                  if (parent != null)  //                            {
206                                  {  //                                var parent = c.Parent;
207                                      parent.Controls.Remove(c);  //                                if (parent != null)
208                                      if (parent.Controls.Count > 0)  //                                {
209                                      {  //                                    parent.Controls.Remove(c);
210                                          var next_ctrl = parent.Controls[0];  //                                    if (parent.Controls.Count > 0)
211                                          if (next_ctrl != null)  //                                    {
212                                          {  //                                        var next_ctrl = parent.Controls[0];
213                                              next_ctrl.Select();  //                                        if (next_ctrl != null)
214                                          }  //                                        {
215                                      }  //                                            next_ctrl.Select();
216                                  }  //                                        }
217                              }                        //                                    }
218                          }  //                                }
219                      }  //                            }                      
220                      else  //                        }
221                      {  //                    }
222                          // add to favorites  //                    else
223                          //gLog.Debug.WriteLine("Adding to favorites: {0} [{1}]", config.RomTitle, config.RomFile);  //                    {
224                          if (!RomFavorite.AddFavorite(config))  //                        // add to favorites
225                          {  //                        //gLog.Debug.WriteLine("Adding to favorites: {0} [{1}]", config.RomTitle, config.RomFile);
226                              gLog.Error.WriteLine("Failed to add to favorites: {0} [{1}]", config.RomTitle, config.RomFile);  //                        if (!RomFavorite.AddFavorite(config))
227                          }  //                        {
228                          else  //                            gLog.Error.WriteLine("Failed to add to favorites: {0} [{1}]", config.RomTitle, config.RomFile);
229                          {  //                        }
230                              gLog.Info.WriteLine("Added to favorites: {0} [{1}]", config.RomTitle, config.RomFile);  //                        else
231                          }  //                        {
232                      }  //                            gLog.Info.WriteLine("Added to favorites: {0} [{1}]", config.RomTitle, config.RomFile);
233                      //gLog.Debug.WriteLine("Updateing favorites");  //                        }
234                      if (!RomFavorite.UpdateFavorites())  //                    }
235                      {  //                    //gLog.Debug.WriteLine("Updateing favorites");
236                          gLog.Error.WriteLine("Failed to update favorites");  //                    if (!RomFavorite.UpdateFavorites())
237                      }  //                    {
238                      else  //                        gLog.Error.WriteLine("Failed to update favorites");
239                      {  //                    }
240                          gLog.Info.WriteLine("Updated favorites");  //                    else
241                      }  //                    {
242                  }  //                        gLog.Info.WriteLine("Updated favorites");
243                  return; // stop processing other keys  //                    }
244    //                }
245              }  //                return; // stop processing other keys
246    //
247    #endregion
248                          if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Left) {                          if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Left) {
249                                  if (OSInfo.OSIsUnix) {                                  if (OSInfo.OSIsUnix) {
250                                          rom_flow.SuspendLayout ();                                          rom_flow.SuspendLayout ();
# Line 253  namespace EmuXPortal Line 261  namespace EmuXPortal
261                                          rom_flow.ResumeLayout (false);                                          rom_flow.ResumeLayout (false);
262                                  }                                  }
263                          }                                        }              
264              if (e.KeyCode == Keys.Home)                          if (e.KeyCode == Keys.Home) {
265              {                                  rom_flow.SuspendLayout ();
266                  rom_flow.SuspendLayout();                                  rom_flow.Controls [0].Select ();
267                  rom_flow.Controls[0].Select();                                  rom_flow.ScrollControlIntoView (rom_flow.Controls [0]);
268                  rom_flow.ScrollControlIntoView(rom_flow.Controls[0]);                                  rom_flow.ResumeLayout (false);
269                  rom_flow.ResumeLayout(false);                          }
270              }                          if (e.KeyCode == Keys.End) {
271              if (e.KeyCode == Keys.End)                                  rom_flow.SuspendLayout ();
272              {                                  rom_flow.Controls [rom_flow.Controls.Count - 1].Select ();
273                  rom_flow.SuspendLayout();                                  rom_flow.ScrollControlIntoView (rom_flow.Controls [rom_flow.Controls.Count - 1]);
274                  rom_flow.Controls[rom_flow.Controls.Count - 1].Select();                                  rom_flow.ResumeLayout (false);
275                  rom_flow.ScrollControlIntoView(rom_flow.Controls[rom_flow.Controls.Count - 1]);                          }
276                  rom_flow.ResumeLayout(false);                          if (e.KeyCode == Keys.PageUp) {
277              }                                  rom_flow.SuspendLayout ();
278              if (e.KeyCode == Keys.PageUp)                                  changeAmount = rom_flow.VerticalScroll.LargeChange;
279              {                                  currentPosition = rom_flow.VerticalScroll.Value;
280                  rom_flow.SuspendLayout();                                  if ((currentPosition - changeAmount) > rom_flow.VerticalScroll.Minimum) {
281                  changeAmount = rom_flow.VerticalScroll.LargeChange;                                          try {
282                  currentPosition = rom_flow.VerticalScroll.Value;                                                  rom_flow.VerticalScroll.Value -= changeAmount;
283                  if ((currentPosition - changeAmount) > rom_flow.VerticalScroll.Minimum)                                          } catch {
284                  {                                                  rom_flow.Controls [0].Select ();
285                      try                                                  rom_flow.ScrollControlIntoView (rom_flow.Controls [0]);
286                      {                                                  rom_flow.PerformLayout ();
287                          rom_flow.VerticalScroll.Value -= changeAmount;                                                  return;
288                      }                                          }
289                      catch                                  } else {
290                      {                                          rom_flow.Controls [0].Select ();
291                          rom_flow.Controls[0].Select();                                          rom_flow.ScrollControlIntoView (rom_flow.Controls [0]);
292                          rom_flow.ScrollControlIntoView(rom_flow.Controls[0]);                                  }
293                          rom_flow.PerformLayout();                                  GameControl s = game_ctrl_get_last_visible ();
294                          return;                                  s.Select ();
295                      }                                  rom_flow.ScrollControlIntoView (s);
296                  }                                  rom_flow.ResumeLayout (false);
297                  else                          }
298                  {                          if (e.KeyCode == Keys.PageDown) {
299                      rom_flow.Controls[0].Select();                                  rom_flow.SuspendLayout ();
300                      rom_flow.ScrollControlIntoView(rom_flow.Controls[0]);                                  changeAmount = rom_flow.VerticalScroll.LargeChange;
301                  }                                  currentPosition = rom_flow.VerticalScroll.Value;
302                  GameControl s = game_ctrl_get_last_visible();                                  if ((currentPosition - changeAmount) < rom_flow.VerticalScroll.Maximum) {
303                  s.Select();                                          try {
304                  rom_flow.ScrollControlIntoView(s);                                                  rom_flow.VerticalScroll.Value += changeAmount;
305                  rom_flow.ResumeLayout(false);                                          } catch {
306              }                                                  rom_flow.Controls [0].Select ();
307              if (e.KeyCode == Keys.PageDown)                                                  rom_flow.ScrollControlIntoView (rom_flow.Controls [0]);
308              {                                                  rom_flow.PerformLayout ();
309                  rom_flow.SuspendLayout();                                                  return;
310                  changeAmount = rom_flow.VerticalScroll.LargeChange;                                          }
311                  currentPosition = rom_flow.VerticalScroll.Value;                                  } else {
312                  if ((currentPosition - changeAmount) < rom_flow.VerticalScroll.Maximum)                                          rom_flow.VerticalScroll.Value = rom_flow.VerticalScroll.Maximum;
313                  {                                  }
314                      try                                  GameControl s = game_ctrl_get_last_visible ();
315                      {                                  s.Select ();
316                          rom_flow.VerticalScroll.Value += changeAmount;                                  rom_flow.ScrollControlIntoView (s);
317                      }                                  rom_flow.ResumeLayout (false);
318                      catch                          }
319                      {  
320                          rom_flow.Controls[0].Select();                          if (e.KeyCode == Keys.Enter) {
321                          rom_flow.ScrollControlIntoView(rom_flow.Controls[0]);                                  
322                          rom_flow.PerformLayout();  
323                          return;                                  Process p = new Process ();
324                      }  
325                  }                                  //p.StartInfo.FileName = config.Config.GameExe == "" ? config.Config.EmuPath : config.Config.GameExe;
326                  else                                  //p.StartInfo.Arguments = config.Config.GameExeArgs == "" ? EmuConfigLoader.GetEMUOptions(config) : config.Config.GameExeArgs;
327                  {  
328                      rom_flow.VerticalScroll.Value = rom_flow.VerticalScroll.Maximum;                                  IExternalEmuConfig external_config = c.Tag as IExternalEmuConfig;
329                  }                                  if (external_config != null) {
330                  GameControl s = game_ctrl_get_last_visible();                                          p.StartInfo.FileName = external_config.GameBinary;
331                  s.Select();                                          p.StartInfo.Arguments = external_config.GameBinaryArgs;
332                  rom_flow.ScrollControlIntoView(s);                                  } else {
333                  rom_flow.ResumeLayout(false);                                          IEmuRom rom_config = c.Tag as IEmuRom;
334              }                                          if (rom_config != null) {
335                                                    p.StartInfo.FileName = rom_config.PlatformConfig.EmulatorBinaryPath;
336                                                    p.StartInfo.Arguments = EmuConfigLoader.GetEMUOptions(rom_config);
337                                            }
338    
339                                    }
340    
341                    
342    
             if (e.KeyCode == Keys.Enter)  
             {  
                 IRomConfig config = c.Tag as IRomConfig;  
343    
                 Process p = new Process();  
344    
                 p.StartInfo.FileName = config.Config.GameExe == "" ? config.Config.EmuPath : config.Config.GameExe;  
                 p.StartInfo.Arguments = config.Config.GameExeArgs == "" ? EmuConfigLoader.GetEMUOptions(config) : config.Config.GameExeArgs;  
345    
346                                  //gLog.Verbose.Debug.WriteLine ("Emulator: {0}", p.StartInfo.FileName);                                  //gLog.Verbose.Debug.WriteLine ("Emulator: {0}", p.StartInfo.FileName);
347                                  //gLog.Verbose.Debug.WriteLine ("Args: {0}", p.StartInfo.Arguments);                                  //gLog.Verbose.Debug.WriteLine ("Args: {0}", p.StartInfo.Arguments);
# Line 477  namespace EmuXPortal Line 486  namespace EmuXPortal
486              {              {
487                  // load this platform                  // load this platform
488                  platform_flow.Visible = false;                  platform_flow.Visible = false;
489                  CurrentSelectedRom = c.Tag as IEmuConfig;                  CurrentSelectedRom = c.Tag as IEmuPlatform;
490                  rom_flow.Visible = true;                  rom_flow.Visible = true;
491                  rom_flow.BringToFront();                  rom_flow.BringToFront();
492              }              }
# Line 735  namespace EmuXPortal Line 744  namespace EmuXPortal
744                                  if (irc != null) {                                  if (irc != null) {
745                                          gLog.Verbose.Debug.WriteLine ("Read Rom[{0}] ({1}%): '{2}'", event_args.GetCount (), progress, irc);                                          gLog.Verbose.Debug.WriteLine ("Read Rom[{0}] ({1}%): '{2}'", event_args.GetCount (), progress, irc);
746                                  } else {                                  } else {
747                                          IEmuConfig iec = (user_object as IEmuConfig);                                          IEmuPlatform iec = (user_object as IEmuPlatform);
748                                          if (iec != null) {                                          if (iec != null) {
749                                                  gLog.Verbose.Debug.WriteLine ("Read Platform[{0}] ({1}%): '{2}'", event_args.GetCount (), progress, iec);                                                  gLog.Verbose.Debug.WriteLine ("Read Platform[{0}] ({1}%): '{2}'", event_args.GetCount (), progress, iec);
750                                          }                                          }
# Line 775  namespace EmuXPortal Line 784  namespace EmuXPortal
784                                  progress_bar.Size = new Size (GetFormWidth () - 25, 100);                                  progress_bar.Size = new Size (GetFormWidth () - 25, 100);
785                          }));                          }));
786    
787                          if (!cache.AreRomsCachedForPlatform(CurrentSelectedRom)) {                          //if (!cache.AreRomsCachedForPlatform(CurrentSelectedRom)) {
788                                  using (RomParser parser = new RomParser (CurrentSelectedRom, new ProgressEvent (worker_progress_event))) {  //                              using (RomParser parser = new RomParser (CurrentSelectedRom, new ProgressEvent (worker_progress_event))) {
789                                          cache.CacheRoms (parser);  //                                      cache.CacheRoms (parser);
790                                  }  //                              }
791    //                      }
792                            List<IExternalEmuConfig> external_configs = new List<IExternalEmuConfig> ();
793                            List<IEmuRom> rom_configs = new List<IEmuRom> ();
794                            if (CurrentSelectedRom.HasExternalConfigs) {
795                                    external_configs = CurrentSelectedRom.ExternalConfigs;
796                            } else {
797                                    rom_configs = CurrentSelectedRom.Roms;
798                          }                          }
799                          HashSet<IRomConfig> roms = cache.GetCachedRomsForPlatform (CurrentSelectedRom);                                  
800    
801                          double count = 0;                          double count = 0;
802                          double total_count = roms.Count;                          double total_count = roms.Count;

Legend:
Removed from v.296  
changed lines
  Added in v.322

  ViewVC Help
Powered by ViewVC 1.1.22