/[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 322 by william, Mon Dec 18 07:47:14 2017 UTC revision 324 by william, Tue Dec 19 00:10:33 2017 UTC
# Line 26  namespace EmuXPortal Line 26  namespace EmuXPortal
26  {  {
27      public partial class Form1 : Form      public partial class Form1 : Form
28      {      {
                 static bool bUserAbort = false;          
29          static readonly Color SELECTED_CONTROL_BACKCOLOR = Color.SteelBlue;          static readonly Color SELECTED_CONTROL_BACKCOLOR = Color.SteelBlue;
30          const float PROGRESS_BAR_FONT_SIZE = 24;          const float PROGRESS_BAR_FONT_SIZE = 24;
31          private delegate Font Delegate_GetFormFont();          private delegate Font Delegate_GetFormFont();
32          private delegate Font Delegate_ResizeFont(Font font, float size);          private delegate Font Delegate_ResizeFont(Font font, float size);
33                  private IEmuPlatform CurrentSelectedRom = null;          IEmuConfig CurrentSelectedRom = null;
34                  private PlatformControl CurrentPlatformControl = null;          PlatformControl CurrentPlatformControl = null;
35                  private int SavedPlatformIndex= -1;                  int SavedPlatformIndex= -1;
36                  private GameControl CurrentGameControl = null;          GameControl CurrentGameControl = null;
                 private List<IEmuPlatform> cache;  
   
                 private CustomProgressBar progress_bar;  
   
   
37    
38          #region unhandled exception support          #region unhandled exception support
39          static void Application_Unhandled_ThreadException(object sender, ThreadExceptionEventArgs e)          static void Application_Unhandled_ThreadException(object sender, ThreadExceptionEventArgs e)
# Line 75  namespace EmuXPortal Line 69  namespace EmuXPortal
69          public Form1()          public Form1()
70          {          {
71              InitializeComponent();              InitializeComponent();
72                          this.progress_bar = new CustomProgressBar();  
73                          this.KeyPreview = true;                          this.KeyPreview = true;
74                    
75              #region logging support              #region logging support
# Line 113  namespace EmuXPortal Line 107  namespace EmuXPortal
107    
108              platform_flow.Dock = DockStyle.Fill;              platform_flow.Dock = DockStyle.Fill;
109              rom_flow.Dock = DockStyle.Fill;              rom_flow.Dock = DockStyle.Fill;
                                   
110          }          }
111    
112                
# Line 130  namespace EmuXPortal Line 123  namespace EmuXPortal
123          }          }
124  #endregion  #endregion
125    
                 static bool OnAbort()  
         {  
             return bUserAbort;  
         }  
126          private void Form1_Load(object sender, EventArgs e)          private void Form1_Load(object sender, EventArgs e)
127          {          {
                         cache = RomCache.GetCachedPlatforms();  
128              Config.LoadConfig();              Config.LoadConfig();
129              Config.InitializePresentationForm(this);              Config.InitializePresentationForm(this);
130          }          }
# Line 171  namespace EmuXPortal Line 159  namespace EmuXPortal
159                                  CurrentPlatformControl = c;                                  CurrentPlatformControl = c;
160                          }                          }
161          }          }
162          void game_ctrl_PreviewKeyDown (object sender, PreviewKeyDownEventArgs e)          void game_ctrl_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
163                  {          {
164                          //gLog.Verbose.Debug.WriteLine ("game_ctrl_PreviewKeyDown() fired -- keycode [{0}]", e.KeyCode);                          //gLog.Verbose.Debug.WriteLine ("game_ctrl_PreviewKeyDown() fired -- keycode [{0}]", e.KeyCode);
165                          GameControl c = sender as GameControl;              GameControl c = sender as GameControl;
166    
167                          int changeAmount = 0;              int changeAmount = 0;
168                          int currentPosition = 0;              int currentPosition = 0;
169                          #region favorites              if (e.KeyCode == Keys.F && (e.Modifiers & Keys.Control) == Keys.Control)
170                          // TODO: implement refectored favorites system              {
171  //            if (e.KeyCode == Keys.F && (e.Modifiers & Keys.Control) == Keys.Control)                  IRomConfig config = c.Tag as IRomConfig;
172  //            {                  if (config == null)
173  //                IRomConfig config = c.Tag as IRomConfig;                  {
174  //                if (config == null)                      gLog.Error.WriteLine("Unable to add/remove from/to favorites (config is null): {0} [{1}]", config.RomTitle, config.RomFile);
175  //                {                  }
176  //                    gLog.Error.WriteLine("Unable to add/remove from/to favorites (config is null): {0} [{1}]", config.RomTitle, config.RomFile);                  else
177  //                }                  {
178  //                else                      var isFavorite = RomFavorite.IsFavorite(config);
179  //                {                      if (isFavorite)
180  //                    var isFavorite = RomFavorite.IsFavorite(config);                      {
181  //                    if (isFavorite)                          // add to favorites
182  //                    {                          //gLog.Debug.WriteLine("Removing from favorites: {0} [{1}]", config.RomTitle, config.RomFile);
183  //                        // add to favorites                          if (!RomFavorite.RemoveFavorite(config))
184  //                        //gLog.Debug.WriteLine("Removing from favorites: {0} [{1}]", config.RomTitle, config.RomFile);                          {
185  //                        if (!RomFavorite.RemoveFavorite(config))                              gLog.Error.WriteLine("Failed to remove from favorites: {0} [{1}]", config.RomTitle, config.RomFile);
186  //                        {                          }
187  //                            gLog.Error.WriteLine("Failed to remove from favorites: {0} [{1}]", config.RomTitle, config.RomFile);                          else
188  //                        }                          {
189  //                        else                              gLog.Info.WriteLine("Removed from favorites: {0} [{1}]", config.RomTitle, config.RomFile);
190  //                        {                              if (config.Config.PlatformNameShort == "Favorites")
191  //                            gLog.Info.WriteLine("Removed from favorites: {0} [{1}]", config.RomTitle, config.RomFile);                              {
192  //                            if (config.Config.PlatformNameShort == "Favorites")                                  var parent = c.Parent;
193  //                            {                                  if (parent != null)
194  //                                var parent = c.Parent;                                  {
195  //                                if (parent != null)                                      parent.Controls.Remove(c);
196  //                                {                                      if (parent.Controls.Count > 0)
197  //                                    parent.Controls.Remove(c);                                      {
198  //                                    if (parent.Controls.Count > 0)                                          var next_ctrl = parent.Controls[0];
199  //                                    {                                          if (next_ctrl != null)
200  //                                        var next_ctrl = parent.Controls[0];                                          {
201  //                                        if (next_ctrl != null)                                              next_ctrl.Select();
202  //                                        {                                          }
203  //                                            next_ctrl.Select();                                      }
204  //                                        }                                  }
205  //                                    }                              }                      
206  //                                }                          }
207  //                            }                                            }
208  //                        }                      else
209  //                    }                      {
210  //                    else                          // add to favorites
211  //                    {                          //gLog.Debug.WriteLine("Adding to favorites: {0} [{1}]", config.RomTitle, config.RomFile);
212  //                        // add to favorites                          if (!RomFavorite.AddFavorite(config))
213  //                        //gLog.Debug.WriteLine("Adding to favorites: {0} [{1}]", config.RomTitle, config.RomFile);                          {
214  //                        if (!RomFavorite.AddFavorite(config))                              gLog.Error.WriteLine("Failed to add to favorites: {0} [{1}]", config.RomTitle, config.RomFile);
215  //                        {                          }
216  //                            gLog.Error.WriteLine("Failed to add to favorites: {0} [{1}]", config.RomTitle, config.RomFile);                          else
217  //                        }                          {
218  //                        else                              gLog.Info.WriteLine("Added to favorites: {0} [{1}]", config.RomTitle, config.RomFile);
219  //                        {                          }
220  //                            gLog.Info.WriteLine("Added to favorites: {0} [{1}]", config.RomTitle, config.RomFile);                      }
221  //                        }                      //gLog.Debug.WriteLine("Updateing favorites");
222  //                    }                      if (!RomFavorite.UpdateFavorites())
223  //                    //gLog.Debug.WriteLine("Updateing favorites");                      {
224  //                    if (!RomFavorite.UpdateFavorites())                          gLog.Error.WriteLine("Failed to update favorites");
225  //                    {                      }
226  //                        gLog.Error.WriteLine("Failed to update favorites");                      else
227  //                    }                      {
228  //                    else                          gLog.Info.WriteLine("Updated favorites");
229  //                    {                      }
230  //                        gLog.Info.WriteLine("Updated favorites");                  }
231  //                    }                  return; // stop processing other keys
232  //                }  
233  //                return; // stop processing other keys              }
 //  
 #endregion  
234                          if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Left) {                          if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Left) {
235                                  if (OSInfo.OSIsUnix) {                                  if (OSInfo.OSIsUnix) {
236                                          rom_flow.SuspendLayout ();                                          rom_flow.SuspendLayout ();
# Line 261  namespace EmuXPortal Line 247  namespace EmuXPortal
247                                          rom_flow.ResumeLayout (false);                                          rom_flow.ResumeLayout (false);
248                                  }                                  }
249                          }                                        }              
250                          if (e.KeyCode == Keys.Home) {              if (e.KeyCode == Keys.Home)
251                                  rom_flow.SuspendLayout ();              {
252                                  rom_flow.Controls [0].Select ();                  rom_flow.SuspendLayout();
253                                  rom_flow.ScrollControlIntoView (rom_flow.Controls [0]);                  rom_flow.Controls[0].Select();
254                                  rom_flow.ResumeLayout (false);                  rom_flow.ScrollControlIntoView(rom_flow.Controls[0]);
255                          }                  rom_flow.ResumeLayout(false);
256                          if (e.KeyCode == Keys.End) {              }
257                                  rom_flow.SuspendLayout ();              if (e.KeyCode == Keys.End)
258                                  rom_flow.Controls [rom_flow.Controls.Count - 1].Select ();              {
259                                  rom_flow.ScrollControlIntoView (rom_flow.Controls [rom_flow.Controls.Count - 1]);                  rom_flow.SuspendLayout();
260                                  rom_flow.ResumeLayout (false);                  rom_flow.Controls[rom_flow.Controls.Count - 1].Select();
261                          }                  rom_flow.ScrollControlIntoView(rom_flow.Controls[rom_flow.Controls.Count - 1]);
262                          if (e.KeyCode == Keys.PageUp) {                  rom_flow.ResumeLayout(false);
263                                  rom_flow.SuspendLayout ();              }
264                                  changeAmount = rom_flow.VerticalScroll.LargeChange;              if (e.KeyCode == Keys.PageUp)
265                                  currentPosition = rom_flow.VerticalScroll.Value;              {
266                                  if ((currentPosition - changeAmount) > rom_flow.VerticalScroll.Minimum) {                  rom_flow.SuspendLayout();
267                                          try {                  changeAmount = rom_flow.VerticalScroll.LargeChange;
268                                                  rom_flow.VerticalScroll.Value -= changeAmount;                  currentPosition = rom_flow.VerticalScroll.Value;
269                                          } catch {                  if ((currentPosition - changeAmount) > rom_flow.VerticalScroll.Minimum)
270                                                  rom_flow.Controls [0].Select ();                  {
271                                                  rom_flow.ScrollControlIntoView (rom_flow.Controls [0]);                      try
272                                                  rom_flow.PerformLayout ();                      {
273                                                  return;                          rom_flow.VerticalScroll.Value -= changeAmount;
274                                          }                      }
275                                  } else {                      catch
276                                          rom_flow.Controls [0].Select ();                      {
277                                          rom_flow.ScrollControlIntoView (rom_flow.Controls [0]);                          rom_flow.Controls[0].Select();
278                                  }                          rom_flow.ScrollControlIntoView(rom_flow.Controls[0]);
279                                  GameControl s = game_ctrl_get_last_visible ();                          rom_flow.PerformLayout();
280                                  s.Select ();                          return;
281                                  rom_flow.ScrollControlIntoView (s);                      }
282                                  rom_flow.ResumeLayout (false);                  }
283                          }                  else
284                          if (e.KeyCode == Keys.PageDown) {                  {
285                                  rom_flow.SuspendLayout ();                      rom_flow.Controls[0].Select();
286                                  changeAmount = rom_flow.VerticalScroll.LargeChange;                      rom_flow.ScrollControlIntoView(rom_flow.Controls[0]);
287                                  currentPosition = rom_flow.VerticalScroll.Value;                  }
288                                  if ((currentPosition - changeAmount) < rom_flow.VerticalScroll.Maximum) {                  GameControl s = game_ctrl_get_last_visible();
289                                          try {                  s.Select();
290                                                  rom_flow.VerticalScroll.Value += changeAmount;                  rom_flow.ScrollControlIntoView(s);
291                                          } catch {                  rom_flow.ResumeLayout(false);
292                                                  rom_flow.Controls [0].Select ();              }
293                                                  rom_flow.ScrollControlIntoView (rom_flow.Controls [0]);              if (e.KeyCode == Keys.PageDown)
294                                                  rom_flow.PerformLayout ();              {
295                                                  return;                  rom_flow.SuspendLayout();
296                                          }                  changeAmount = rom_flow.VerticalScroll.LargeChange;
297                                  } else {                  currentPosition = rom_flow.VerticalScroll.Value;
298                                          rom_flow.VerticalScroll.Value = rom_flow.VerticalScroll.Maximum;                  if ((currentPosition - changeAmount) < rom_flow.VerticalScroll.Maximum)
299                                  }                  {
300                                  GameControl s = game_ctrl_get_last_visible ();                      try
301                                  s.Select ();                      {
302                                  rom_flow.ScrollControlIntoView (s);                          rom_flow.VerticalScroll.Value += changeAmount;
303                                  rom_flow.ResumeLayout (false);                      }
304                          }                      catch
305                        {
306                          if (e.KeyCode == Keys.Enter) {                          rom_flow.Controls[0].Select();
307                                                            rom_flow.ScrollControlIntoView(rom_flow.Controls[0]);
308                            rom_flow.PerformLayout();
309                                  Process p = new Process ();                          return;
310                        }
311                                  //p.StartInfo.FileName = config.Config.GameExe == "" ? config.Config.EmuPath : config.Config.GameExe;                  }
312                                  //p.StartInfo.Arguments = config.Config.GameExeArgs == "" ? EmuConfigLoader.GetEMUOptions(config) : config.Config.GameExeArgs;                  else
313                    {
314                                  IExternalEmuConfig external_config = c.Tag as IExternalEmuConfig;                      rom_flow.VerticalScroll.Value = rom_flow.VerticalScroll.Maximum;
315                                  if (external_config != null) {                  }
316                                          p.StartInfo.FileName = external_config.GameBinary;                  GameControl s = game_ctrl_get_last_visible();
317                                          p.StartInfo.Arguments = external_config.GameBinaryArgs;                  s.Select();
318                                  } else {                  rom_flow.ScrollControlIntoView(s);
319                                          IEmuRom rom_config = c.Tag as IEmuRom;                  rom_flow.ResumeLayout(false);
320                                          if (rom_config != null) {              }
                                                 p.StartInfo.FileName = rom_config.PlatformConfig.EmulatorBinaryPath;  
                                                 p.StartInfo.Arguments = EmuConfigLoader.GetEMUOptions(rom_config);  
                                         }  
   
                                 }  
   
                   
321    
322                if (e.KeyCode == Keys.Enter)
323                {
324                    IRomConfig config = c.Tag as IRomConfig;
325    
326                    Process p = new Process();
327    
328                    p.StartInfo.FileName = config.Config.GameExe == "" ? config.Config.EmuPath : config.Config.GameExe;
329                    p.StartInfo.Arguments = config.Config.GameExeArgs == "" ? EmuConfigLoader.GetEMUOptions(config) : config.Config.GameExeArgs;
330    
331                                  //gLog.Verbose.Debug.WriteLine ("Emulator: {0}", p.StartInfo.FileName);                                  //gLog.Verbose.Debug.WriteLine ("Emulator: {0}", p.StartInfo.FileName);
332                                  //gLog.Verbose.Debug.WriteLine ("Args: {0}", p.StartInfo.Arguments);                                  //gLog.Verbose.Debug.WriteLine ("Args: {0}", p.StartInfo.Arguments);
# Line 486  namespace EmuXPortal Line 471  namespace EmuXPortal
471              {              {
472                  // load this platform                  // load this platform
473                  platform_flow.Visible = false;                  platform_flow.Visible = false;
474                  CurrentSelectedRom = c.Tag as IEmuPlatform;                  CurrentSelectedRom = c.Tag as IEmuConfig;
475                  rom_flow.Visible = true;                  rom_flow.Visible = true;
476                  rom_flow.BringToFront();                  rom_flow.BringToFront();
477              }              }
# Line 730  namespace EmuXPortal Line 715  namespace EmuXPortal
715          //    //else { this.Update(); }          //    //else { this.Update(); }
716          //}          //}
717          #region gameWorker          #region gameWorker
718                  private static Image DefaultGameImage = Properties.Resources.DefaultGameImage;          private static Image DefaultGameImage = Properties.Resources.DefaultGameImage;
719          private object gameimage_lock = new object();          private object gameimage_lock = new object();
720                  private void worker_progress_event (object event_source, ProgressEventArgs event_args)          private void gameWorker_DoWork(object sender, DoWorkEventArgs e)
721                  {          {
722                          //gLog.Debug.WriteLine ("worker_progress_event called!");              Stopwatch t = e.Argument as Stopwatch;
723                RomParser parser = new RomParser(CurrentSelectedRom);
724    
725                          object user_object = event_args.GetUserObject ();              CustomProgressBar bar = new CustomProgressBar();
726                          int progress = event_args.GetProgress();              bar.Font = ResizeFont(GetFormFont(), PROGRESS_BAR_FONT_SIZE);
                         string message = event_args.GetUserMessage() == null ? "" : event_args.GetUserMessage();  
                         if (user_object != null) {                                
                                 IRomConfig irc = (user_object as IRomConfig);  
                                 if (irc != null) {  
                                         gLog.Verbose.Debug.WriteLine ("Read Rom[{0}] ({1}%): '{2}'", event_args.GetCount (), progress, irc);  
                                 } else {  
                                         IEmuPlatform iec = (user_object as IEmuPlatform);  
                                         if (iec != null) {  
                                                 gLog.Verbose.Debug.WriteLine ("Read Platform[{0}] ({1}%): '{2}'", event_args.GetCount (), progress, iec);  
                                         }  
                                 }  
                         }  
                         if (progress_bar.InvokeRequired) {  
                                 progress_bar.Invoke (new MethodInvoker (delegate {  
                                         progress_bar.Message = message;  
                                         progress_bar.Value = progress;  
                                         progress_bar.Update();  
                                 }));  
                         } else {  
                                 progress_bar.Message = message;  
                                 progress_bar.Value = progress;  
                                 progress_bar.Update();  
                         }  
                 }  
         private void gameWorker_DoWork (object sender, DoWorkEventArgs e)  
                 {  
                         Stopwatch t = e.Argument as Stopwatch;                    
                         progress_bar.Font = ResizeFont (GetFormFont (), PROGRESS_BAR_FONT_SIZE);  
727  #if DISABLE_PROGRESS_PERCENTAGE_MESSASGE  #if DISABLE_PROGRESS_PERCENTAGE_MESSASGE
728              progress_bar.ShowPercentageLabel = false;              bar.ShowPercentageLabel = false;
729  #endif  #endif
730                          progress_bar.ProgressColor = Color.LimeGreen;              bar.ProgressColor = Color.LimeGreen;
731                          progress_bar.Dock = DockStyle.Top;              bar.Dock = DockStyle.Top;
732    
733                          if (this.InvokeRequired) {              if (this.InvokeRequired) { this.Invoke((MethodInvoker)delegate() { this.Controls.Add(bar); }); }
734                                  this.Invoke ((MethodInvoker)delegate() {              else { this.Controls.Add(bar); }
735                                          this.Controls.Add (progress_bar);              bar.Invoke(new MethodInvoker(delegate { bar.Margin = new System.Windows.Forms.Padding(0); bar.Size = new Size(GetFormWidth() - 25, 100); }));
736                                  });              
737                          } else {              double count = 0;
738                                  this.Controls.Add (progress_bar);              double total_count = parser.Roms.Count;
739                          }              foreach (IRomConfig config in parser.Roms)
                         progress_bar.Invoke (new MethodInvoker (delegate {  
                                 progress_bar.Margin = new System.Windows.Forms.Padding (0);  
                                 progress_bar.Size = new Size (GetFormWidth () - 25, 100);  
                         }));  
   
                         //if (!cache.AreRomsCachedForPlatform(CurrentSelectedRom)) {  
 //                              using (RomParser parser = new RomParser (CurrentSelectedRom, new ProgressEvent (worker_progress_event))) {  
 //                                      cache.CacheRoms (parser);  
 //                              }  
 //                      }  
                         List<IExternalEmuConfig> external_configs = new List<IExternalEmuConfig> ();  
                         List<IEmuRom> rom_configs = new List<IEmuRom> ();  
                         if (CurrentSelectedRom.HasExternalConfigs) {  
                                 external_configs = CurrentSelectedRom.ExternalConfigs;  
                         } else {  
                                 rom_configs = CurrentSelectedRom.Roms;  
                         }  
                                   
   
                         double count = 0;  
                         double total_count = roms.Count;  
                         if (total_count > 0) {  
                                 progress_bar.Invoke (new MethodInvoker (delegate {  
                                         progress_bar.Message = string.Format ("Please Wait Adding {0} {1} Roms...", total_count, CurrentSelectedRom.PlatformNameLong);  
                                 }));  
                         }  
   
                         foreach (IRomConfig config in roms)  
740              {              {
741                  progress_bar.Invoke(new MethodInvoker(delegate { progress_bar.Value = (int)(100.0 * (count / total_count)); }));                  bar.Invoke(new MethodInvoker(delegate { bar.Value = (int)(100.0 * (count / total_count)); }));
742                  GameControl game_ctrl = new GameControl();                  GameControl game_ctrl = new GameControl();
743                  game_ctrl.Font = GetFormFont();                  game_ctrl.Font = GetFormFont();
744                  game_ctrl.Dock = DockStyle.Top;                  game_ctrl.Dock = DockStyle.Top;
# Line 818  namespace EmuXPortal Line 748  namespace EmuXPortal
748                  {                  {
749                      lock (gameimage_lock)                      lock (gameimage_lock)
750                      {                      {
751                                                  //gLog.Debug.WriteLine ("handling rom: {0}", config.ToString ());                          game_ctrl.GameImage = config.RomImage == null ? (Image)DefaultGameImage.Clone() : (Image)config.RomImage.Clone();
752                                                  if(String.IsNullOrEmpty(config.RomImage)) {                          config.ReleaseRomImageResource();
                                                         game_ctrl.GameImage = (Image)DefaultGameImage.Clone ();  
                                                 }  
                                                 else {  
                                                         string path = config.GetFullRomImage();  
                                                         game_ctrl.GameImage = Image.FromFile(path);  
                                                 }  
753                      }                      }
754                  }                  }
755                  catch (Exception ex)                  catch (Exception ex)
756                  {                  {
                                         gLog.Error.WriteLine (ex.Message);  
                                         gLog.Verbose.Error.WriteLine (ex.ToString());  
757                      throw ex;                      throw ex;
758                  }                  }
759                  if (CurrentSelectedRom.PlatformNameShort == "Favorites")                  if (CurrentSelectedRom.PlatformNameShort == "Favorites")
# Line 850  namespace EmuXPortal Line 772  namespace EmuXPortal
772                  else { rom_flow.Controls.Add(game_ctrl); }                  else { rom_flow.Controls.Add(game_ctrl); }
773                  count++;                  count++;
774              }              }
775              progress_bar.Invoke(new MethodInvoker(delegate { progress_bar.Value = 0; progress_bar.Update(); }));              bar.Invoke(new MethodInvoker(delegate { bar.Value = 1; bar.Update(); }));
776                        if (this.InvokeRequired) { this.Invoke((MethodInvoker)delegate() { this.Controls.Remove(bar); }); } else { this.Controls.Remove(bar); }
777                e.Result = t;            
778              e.Result = t;              parser.Dispose();
779          }          }
780          private void gameWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { }          private void gameWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { }
781          private void gameWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)          private void gameWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
782          {          {
783              Stopwatch t = e.Result as Stopwatch;              Stopwatch t = e.Result as Stopwatch;
                         if (this.InvokeRequired) { this.Invoke((MethodInvoker)delegate() {  
                                 progress_bar.Message = "";  
                                 this.Controls.Remove(progress_bar); });  
                                 this.Refresh();  
                         } else {  
                                 progress_bar.Message = "";  
                                 this.Controls.Remove(progress_bar);  
                                 this.Refresh();  
   
                         }  
784              if (rom_flow.Controls.Count == 0)              if (rom_flow.Controls.Count == 0)
785              {              {
786                  GameControl game_ctrl = new GameControl();                  GameControl game_ctrl = new GameControl();
# Line 888  namespace EmuXPortal Line 800  namespace EmuXPortal
800              }              }
801              rom_flow.Controls[0].Select();              rom_flow.Controls[0].Select();
802              t.Stop();              t.Stop();
803              gLog.Profiler.WriteLine("RomParser took: {0}s to parse roms", (int)t.Elapsed.TotalSeconds);              //gLog.Profiler.WriteLine("RomParser took: {0}s to parse roms", (int)t.Elapsed.TotalSeconds);
804          }          }
805          #endregion          #endregion
806          #region platformWorker          #region platformWorker
807          private static Image DefaultPlatformImage = Properties.Resources.DefaultPlatformImage;          private static Image DefaultPlatformImage = Properties.Resources.DefaultPlatformImage;
808          private object platformimage_lock = new object();                        private object platformimage_lock = new object();
809          private void platformWorker_DoWork (object sender, DoWorkEventArgs e)          private void platformWorker_DoWork(object sender, DoWorkEventArgs e)
810                  {          {
811                          Stopwatch t = e.Argument as Stopwatch;              Stopwatch t = e.Argument as Stopwatch;
812                          progress_bar.Font = ResizeFont (GetFormFont (), PROGRESS_BAR_FONT_SIZE);              PlatformParser parser = new PlatformParser(Config.RomPath);
813                double count = 0;
814                double total_count = parser.Platforms.Count;
815                CustomProgressBar bar = new CustomProgressBar();
816                bar.Font = ResizeFont(GetFormFont(), PROGRESS_BAR_FONT_SIZE);
817  #if DISABLE_PROGRESS_PERCENTAGE_MESSASGE  #if DISABLE_PROGRESS_PERCENTAGE_MESSASGE
818              progress_bar.ShowPercentageLabel = false;              bar.ShowPercentageLabel = false;
819  #endif  #endif
820                          progress_bar.ProgressColor = Color.LimeGreen;              bar.ProgressColor = Color.LimeGreen;
821                          progress_bar.Dock = DockStyle.Top;              bar.Dock = DockStyle.Top;
822                            
823                          if (this.InvokeRequired) {              if (this.InvokeRequired) { this.Invoke((MethodInvoker)delegate() { this.Controls.Add(bar); }); }
824                                  this.Invoke ((MethodInvoker)delegate() {              else { this.Controls.Add(bar); }
825                                          this.Controls.Add (progress_bar);              bar.Invoke(new MethodInvoker(delegate { bar.Margin = new System.Windows.Forms.Padding(0); bar.Size = new Size(GetFormWidth() - 25, 100); }));
826                                  });              foreach (IEmuConfig config in parser.Platforms)
827                          } else {              {
828                                  this.Controls.Add (progress_bar);                  bar.Invoke(new MethodInvoker(delegate { bar.Value = (int)(100.0 * (count / total_count)); }));
                         }  
                         progress_bar.Invoke (new MethodInvoker (delegate {  
                                 progress_bar.Margin = new System.Windows.Forms.Padding (0);  
                                 progress_bar.Size = new Size (GetFormWidth () - 25, 100);  
                         }));  
   
                         PlatformParser parser = new PlatformParser (Config.RomPath, new ProgressEvent (worker_progress_event));  
   
   
                         double count = 0;  
                         double total_count = parser.Platforms.Count;  
                         if (total_count > 0) {  
                                 progress_bar.Invoke (new MethodInvoker (delegate {  
                                         progress_bar.Message = string.Format ("Please Wait Loading {0} Rom Platforms...", total_count);  
                                 }));  
                         }  
                         foreach (IEmuConfig config in parser.Platforms) {  
                                 progress_bar.Invoke (new MethodInvoker (delegate {  
                                         progress_bar.Value = (int)(100.0 * (count / total_count));  
                                 }));  
829                                    
830                                  PlatformControl platform_ctrl = new PlatformControl ();                  PlatformControl platform_ctrl = new PlatformControl();
831                                  platform_ctrl.Font = GetFormFont ();                  platform_ctrl.Font = GetFormFont();
832                                  platform_ctrl.Dock = DockStyle.Top;                  platform_ctrl.Dock = DockStyle.Top;
833                                  platform_ctrl.Width = this.Width - 10;                  platform_ctrl.Width = this.Width - 10;
834                                  platform_ctrl.Tag = config;                  platform_ctrl.Tag = config;
835                                  try {                  try
836                                          lock (platformimage_lock) {                  {
837                                                  //gLog.Debug.WriteLine ("handling platform: {0}", config.ToString ());                      lock (platformimage_lock)
838                                                  if(String.IsNullOrEmpty(config.PlatformImage)) {                      {
839                                                          platform_ctrl.PlatformImage = (Image)DefaultPlatformImage.Clone ();                          platform_ctrl.PlatformImage = config.PlatformImage == null ? (Image)DefaultPlatformImage.Clone() : (Image)config.PlatformImage.Clone();
840                                                  }                          config.ReleasePlatformImageResource();
841                                                  else {                      }
842                                                          string path = config.GetFullPlatformImage();                  }
843                                                          platform_ctrl.PlatformImage = Image.FromFile(path);                  catch (Exception ex)
844                                                  }                  {
                                         }  
                                 } catch (Exception ex) {  
                                         gLog.Error.WriteLine (ex.Message);  
                                         gLog.Verbose.Error.WriteLine (ex.ToString());  
845                      throw ex;                      throw ex;
846                  }                  }
847                  platform_ctrl.PlatformName = config.ToString();                  platform_ctrl.PlatformName = config.ToString();
# Line 960  namespace EmuXPortal Line 852  namespace EmuXPortal
852                  else { platform_flow.Controls.Add(platform_ctrl); }                                    else { platform_flow.Controls.Add(platform_ctrl); }                  
853                  count++;                  count++;
854              }              }
855              progress_bar.Invoke(new MethodInvoker(delegate {              bar.Invoke(new MethodInvoker(delegate { bar.Value = 1; bar.Update(); }));
856                  progress_bar.Value = 0; progress_bar.Update();              if (this.InvokeRequired) { this.Invoke((MethodInvoker)delegate() { this.Controls.Remove(bar); }); } else { this.Controls.Remove(bar); }
857              }));                      e.Result = t;            
858              e.Result = t;              parser.Dispose();
859          }          }
860          private void platformWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { }          private void platformWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { }
861          private void platformWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)          private void platformWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
862          {          {
                         gLog.Debug.WriteLine("platformWorker_RunWorkerCompleted called");  
                         if (this.InvokeRequired) {  
              this.Invoke((MethodInvoker)delegate() {  
                                         progress_bar.Message = "";  
                                         this.Controls.Remove(progress_bar);  
                 });  
             }  
             else {  
                                 progress_bar.Message = "";  
                                 this.Controls.Remove(progress_bar);  
                 }  
863              Stopwatch t = e.Result as Stopwatch;              Stopwatch t = e.Result as Stopwatch;
864              if (platform_flow.Controls.Count == 0)              if (platform_flow.Controls.Count == 0)
865              {              {
# Line 1003  namespace EmuXPortal Line 884  namespace EmuXPortal
884                          } else {                          } else {
885                                  platform_flow.Controls[0].Select();                                  platform_flow.Controls[0].Select();
886                          }                          }
887                          t.Stop();             //gLog.Profiler.WriteLine("PlatformParser took: {0}s to parse platforms", (int)t.Elapsed.TotalSeconds);
            gLog.Profiler.WriteLine("PlatformParser took: {0}s to parse platforms", (int)t.Elapsed.TotalSeconds);  
888          }          }
889          #endregion          #endregion
890    

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

  ViewVC Help
Powered by ViewVC 1.1.22