/[RomCheater]/trunk/RomCheater/Docking/PIDSelector.cs
ViewVC logotype

Diff of /trunk/RomCheater/Docking/PIDSelector.cs

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

revision 328 by william, Thu Jun 7 18:32:25 2012 UTC revision 329 by william, Thu Jun 7 19:18:31 2012 UTC
# Line 12  using System.IO; Line 12  using System.IO;
12  using RomCheater.Logging;  using RomCheater.Logging;
13  using WeifenLuo.WinFormsUI.Docking;  using WeifenLuo.WinFormsUI.Docking;
14  using RomCheater.PluginFramework.Events;  using RomCheater.PluginFramework.Events;
15    using System.Management;
16    
17  namespace RomCheater.Docking  namespace RomCheater.Docking
18  {  {
19      public partial class PIDSelector : DockContent, IAcceptsPlugin<IConfigPlugin>, IAcceptsChangedProcess, IAcceptsProcessPID      public partial class PIDSelector : DockContent, IAcceptsPlugin<IConfigPlugin>, IAcceptsChangedProcess, IAcceptsProcessPID
20      {      {
21            private bool isRefreshing = false;
22            private bool isAutoRefreshing = false;
23          //private IConfigPlugin plugin = null;          //private IConfigPlugin plugin = null;
24          //bool isInError = false;          //bool isInError = false;
25          public PIDSelector() { InitializeComponent(); this.ProcessPID = -1; OnSelectedProcessChanged = null; this.AcceptedPlugin = null; }          public PIDSelector() { InitializeComponent(); this.ProcessPID = -1; OnSelectedProcessChanged = null; this.AcceptedPlugin = null; }
# Line 68  namespace RomCheater.Docking Line 71  namespace RomCheater.Docking
71    
72          private void PerformListViewItemSelect(ListViewItem li)          private void PerformListViewItemSelect(ListViewItem li)
73          {          {
74                if (isAutoRefreshing) return;
75              this.ProcessPID = Convert.ToInt32(li.SubItems[1].Text);              this.ProcessPID = Convert.ToInt32(li.SubItems[1].Text);
76              Process SelectedProcess = Process.GetProcessById(this.ProcessPID);              Process SelectedProcess = Process.GetProcessById(this.ProcessPID);
77              logger.Debug.WriteLine("Using Process: ({0} : {1})", SelectedProcess.Id, SelectedProcess.ProcessName);              logger.Debug.WriteLine("Using Process: ({0} : {1})", SelectedProcess.Id, SelectedProcess.ProcessName);
# Line 87  namespace RomCheater.Docking Line 91  namespace RomCheater.Docking
91          //}          //}
92    
93          private void btnRefresh_Click(object sender, EventArgs e)          private void btnRefresh_Click(object sender, EventArgs e)
94          {          {                      
95              this.RefreshList();              this.RefreshList();            
96          }          }
97    
98          private bool RefreshList()          private bool RefreshList()
99          {          {
100                isRefreshing = true;
101              lstProcessList.Items.Clear();              lstProcessList.Items.Clear();
102              this.AcceptedPlugin.Reload();              this.AcceptedPlugin.Reload(true);
103              // create a selection of PCSX2 processes              // create a selection of PCSX2 processes
104              List<ProcContainer> proc_list = AcceptedPlugin.ValidProcessesForPlugin;              List<ProcContainer> proc_list = AcceptedPlugin.ValidProcessesForPlugin;
105    
# Line 149  namespace RomCheater.Docking Line 154  namespace RomCheater.Docking
154              {              {
155                  lstProcessList.Items[0].Selected = true;                  lstProcessList.Items[0].Selected = true;
156              }              }
157                isRefreshing = false;
158              return true;              return true;
159          }          }
160    
# Line 264  namespace RomCheater.Docking Line 269  namespace RomCheater.Docking
269                  lstProcessList.Items[lstProcessList.Items.IndexOf(item)].Selected = true;                  lstProcessList.Items[lstProcessList.Items.IndexOf(item)].Selected = true;
270              }              }
271          }          }
272    
273            private void ProcessWatcherTimer_Tick(object sender, EventArgs e)
274            {
275                if (isRefreshing || isAutoRefreshing) return;
276                //if (lstProcessList.Items.Count == 0) return;
277                isAutoRefreshing = true;
278                int pid = this.ProcessPID;
279                btnRefresh.PerformClick();
280                bool pid_still_exists = false;
281                int item_index = -1;
282                foreach (ListViewItem li2 in lstProcessList.Items)
283                {
284                    int _pid = Convert.ToInt32(li2.SubItems[1].Text);
285                    if (_pid == pid)
286                    {
287                        item_index = lstProcessList.Items.IndexOf(li2);
288                        pid_still_exists = true;
289                        break;
290                    }
291                }
292                if (pid_still_exists)
293                {
294                    //logger.Debug.WriteLine("Pid: {0} still exists", pid);
295                    if (lstProcessList.SelectedItems.Count > 0)
296                    {
297                        if (lstProcessList.SelectedItems[0] != null)
298                            if (lstProcessList.SelectedItems[0].Index != -1)
299                                lstProcessList.Items[lstProcessList.SelectedItems[0].Index].Selected = false;
300                    }
301                    lstProcessList.Items[item_index].Selected = true;
302                }
303                else
304                {
305                    if (lstProcessList.SelectedItems.Count > 0)
306                        lstProcessList.Items[0].Selected = true;
307                }
308                isAutoRefreshing = false;
309            }
310      }      }
311  }  }
312    

Legend:
Removed from v.328  
changed lines
  Added in v.329

  ViewVC Help
Powered by ViewVC 1.1.22