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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 296 - (hide annotations) (download)
Tue Jun 5 10:52:57 2012 UTC (9 years, 1 month ago) by william
File size: 9531 byte(s)

1 william 88 using System;
2     using System.Collections.Generic;
3     using System.ComponentModel;
4     using System.Data;
5     using System.Drawing;
6     using System.Text;
7     using System.Windows.Forms;
8     using System.Diagnostics;
9     using RomCheater.PluginFramework.Interfaces;
10     using RomCheater.PluginFramework.Core;
11 william 109 using System.IO;
12     using RomCheater.Logging;
13 william 148 using WeifenLuo.WinFormsUI.Docking;
14 william 196 using RomCheater.PluginFramework.Events;
15 william 88
16 william 149 namespace RomCheater.Docking
17 william 88 {
18 william 196 public partial class PIDSelector : DockContent, IAcceptsPlugin<IConfigPlugin>, IAcceptsChangedProcess, IAcceptsProcessPID
19 william 88 {
20 william 152 //private IConfigPlugin plugin = null;
21 william 88 //bool isInError = false;
22 william 196 public PIDSelector() { InitializeComponent(); this.ProcessPID = -1; OnSelectedProcessChanged = null; this.AcceptedPlugin = null; }
23 william 153 public PIDSelector(IConfigPlugin plugin) : this() { this.AcceptedPlugin = plugin; }
24 william 88 // unsued construtor (it's not implmented, may not be)
25     [Obsolete("constructor PIDSelector(int pid) is not implemented", false)]
26 william 196 public PIDSelector(int pid) : this() { this.ProcessPID = pid; }
27 william 88 [Obsolete("constructor PIDSelector(IConfigPlugin plugin, int pid) is not implemented", false)]
28 william 196 public PIDSelector(IConfigPlugin plugin, int pid) : this(plugin) { this.ProcessPID = pid; }
29 william 88
30 william 287
31     private void OnProcessChanged(ProcessChangedEventArgs e)
32     {
33     }
34    
35 william 196 #region IAcceptsProcessPID
36     public int ProcessPID { get; set; }
37     #endregion
38     #region IAcceptsPlugin<IConfigPlugin> members
39 william 153 public IConfigPlugin AcceptedPlugin { get; set; }
40 william 196 #endregion
41     #region IAcceptsChangedProcess members
42 william 287 public event BaseEventHandler<ProcessChangedEventArgs> OnSelectedProcessChanged;
43 william 196 #endregion
44 william 151
45    
46    
47 william 88 public new void Show() { this.Show(null); }
48 william 150 //public new void Show(IWin32Window owner) { this.PreInitShow(owner); }
49     public new void Show(DockPanel panel) { this.PreInitShow(panel); }
50     //public new DialogResult ShowDialog() { return this.ShowDialog(null); }
51     //public new DialogResult ShowDialog(IWin32Window owner) { return this.PreInitDialog(owner); }
52     //private void PreInitShow(IWin32Window owner)
53     //{
54     // if (!this.RefreshList()) { MessageBox.Show(string.Format("Could not find any Processes for plugin {0}. Please start an instance of one.",plugin.ToString())); }
55     // else { if (owner == null) { base.Show(); } else { base.Show(owner); } }
56     //}
57     private void PreInitShow(DockPanel panel)
58 william 88 {
59 william 150 //if (panel == null) return;
60 william 153 if (!this.RefreshList()) { MessageBox.Show(string.Format("Could not find any Processes for plugin {0}. Please start an instance of one.", AcceptedPlugin.ToString())); }
61 william 150 else { if (panel == null) { base.Show(); } else { base.Show(panel); } }
62 william 88 }
63 william 150 //private DialogResult PreInitDialog(IWin32Window owner)
64     //{
65     // if (!this.RefreshList()) { MessageBox.Show(string.Format("Could not find any Processes for plugin {0}. Please start an instance of one.", plugin.ToString())); return DialogResult.Cancel; }
66     // else { if (owner == null) { return base.ShowDialog(); } else { return base.ShowDialog(owner); } }
67     //}
68 william 88 private void btnLargeIcon_Click(object sender, EventArgs e) { this.lstProcessList.View = View.LargeIcon; }
69     private void btnDetails_Click(object sender, EventArgs e) { this.lstProcessList.View = View.Details; }
70     private void btnSmallIcon_Click(object sender, EventArgs e) { this.lstProcessList.View = View.SmallIcon; }
71     private void btnList_Click(object sender, EventArgs e) { this.lstProcessList.View = View.List; }
72     private void btnTile_Click(object sender, EventArgs e) { this.lstProcessList.View = View.Tile; }
73    
74 william 156 private void PerformListViewItemSelect(ListViewItem li)
75 william 296 {
76 william 196 this.ProcessPID = Convert.ToInt32(li.SubItems[1].Text);
77 william 296 Process SelectedProcess = Process.GetProcessById(this.ProcessPID);
78     logger.Debug.WriteLine("Using Process: ({0} : {1})", SelectedProcess.Id, SelectedProcess.ProcessName);
79 william 151 //this.Close();
80 william 287 if (OnSelectedProcessChanged != null)
81 william 296 OnSelectedProcessChanged(new ProcessChangedEventArgs(this.ProcessPID));
82 william 88 }
83 william 156 private void btnOK_Click(object sender, EventArgs e)
84     {
85    
86     }
87 william 88
88 william 151 //private void btnCancel_Click(object sender, EventArgs e)
89     //{
90     // this.SelectedPid = -1;
91     // //this.Close();
92     //}
93 william 88
94     private void btnRefresh_Click(object sender, EventArgs e)
95     {
96     this.RefreshList();
97     }
98    
99     private bool RefreshList()
100     {
101     lstProcessList.Items.Clear();
102 william 153 this.AcceptedPlugin.Reload();
103 william 88 // create a selection of PCSX2 processes
104 william 153 List<ProcContainer> proc_list = AcceptedPlugin.ValidProcessesForPlugin;
105 william 88
106     if (!(proc_list.Count > 0)) { //MessageBox.Show("Could not find any PCSX2 Processes. Please start an instance of one.");
107     return false; }
108    
109     List<ListViewItem> items = new List<ListViewItem>();
110     ImageList small_image_list = new ImageList();
111     ImageList large_image_list = new ImageList();
112 william 109
113 william 110 int small_width = 32;
114     int large_width = 48;
115 william 109
116     small_image_list.ImageSize = new Size(small_width, small_width);
117     large_image_list.ImageSize = new Size(large_width, large_width);
118     foreach (ProcContainer p in proc_list)
119     {
120     Bitmap small_image = null;
121     Bitmap large_image = null;
122     string image_key = string.Empty;
123     this.AddProcessItem(p, small_image_list.ImageSize, large_image_list.ImageSize, out image_key, out small_image, out large_image);
124     if (image_key != string.Empty)
125     {
126     if (small_image != null) { small_image_list.Images.Add(image_key, small_image); }
127     if (large_image != null) { large_image_list.Images.Add(image_key, large_image); }
128     ListViewItem item = new ListViewItem();
129     // process name
130     item.Text = p.Name;
131     // pid
132     item.SubItems.Add(p.ProcessInfo.Id.ToString());
133     // FullPath
134     item.SubItems.Add(p.FileName);
135     // image key
136     item.ImageKey = p.FileName;
137     if (!items.Contains(item)) items.Add(item);
138     }
139     else
140     {
141 william 156 //logger.Error.WriteLine("image_key is an empty string!");
142     //if (small_image != null) { logger.Error.WriteLine(" [however small_image is not null]"); }
143     //if (large_image != null) { logger.Error.WriteLine(" [however large_image is not null]\n"); }
144 william 109 }
145     }
146 william 88 lstProcessList.SmallImageList = small_image_list;
147     lstProcessList.LargeImageList = large_image_list;
148     this.lstProcessList.Items.AddRange(items.ToArray());
149 william 156
150     if (lstProcessList.Items.Count > 0)
151     {
152     lstProcessList.Items[0].Selected = true;
153     }
154    
155 william 88 return true;
156     }
157    
158 william 109 private void AddProcessItem(ProcContainer p, Size small, Size large, out string image_key, out Bitmap small_image, out Bitmap large_image)
159 william 88 {
160 william 109 image_key = "";
161     small_image = null;
162     large_image = null;
163     ////small_image_list = new ImageList();
164     ////large_image_list = new ImageList();
165     //ListViewItem item = new ListViewItem();
166     //// process
167     //item.Text = p.Name;
168     //if (p.ProcessIcon != null)
169     //{
170     // //small_image_list.Images.Add(
171     // //large_image_list.Images.Add(p.FileName, p.ProcessIcon);
172     // item.ImageKey = p.FileName;
173     //}
174     //// pid
175     //item.SubItems.Add(p.ProcessInfo.Id.ToString());
176     //// FullPath
177     //item.SubItems.Add(p.FileName);
178     //if (!items.Contains(item)) items.Add(item);
179     if (p != null)
180 william 88 {
181 william 109 if (p.ProcessIcon != null)
182     {
183     image_key = p.FileName;
184     small_image = new Bitmap(p.ProcessIcon, small);
185     large_image = new Bitmap(p.ProcessIcon, large);
186     }
187 william 88 }
188 william 109
189 william 88 }
190 william 152
191     private void PIDSelector_Load(object sender, EventArgs e)
192     {
193 william 153 if (AcceptedPlugin == null || this.DesignMode) return;
194 william 152 btnRefresh.PerformClick();
195     }
196 william 156
197    
198     private void lstProcessList_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
199     {
200     if (!e.IsSelected) return;
201     PerformListViewItemSelect(e.Item);
202     }
203    
204     private void lstProcessList_ItemActivate(object sender, EventArgs e)
205     {
206     ListViewItem Item = lstProcessList.SelectedItems[0];
207     PerformListViewItemSelect(Item);
208     }
209    
210    
211 william 88 }
212     }
213    

  ViewVC Help
Powered by ViewVC 1.1.22