bba4e35d8e49d996be8a39ef6347ff56e7788eb5
[deb_libcec.git] / AsyncForm.cs
1 /*
2 * This file is part of the libCEC(R) library.
3 *
4 * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
5 * libCEC(R) is an original work, containing original code.
6 *
7 * libCEC(R) is a trademark of Pulse-Eight Limited.
8 *
9 * This program is dual-licensed; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 *
23 *
24 * Alternatively, you can license this library under a commercial license,
25 * please contact Pulse-Eight Licensing for more information.
26 *
27 * For more information contact:
28 * Pulse-Eight Licensing <license@pulse-eight.com>
29 * http://www.pulse-eight.com/
30 * http://www.pulse-eight.net/
31 */
32
33 using System;
34 using System.Windows.Forms;
35 using CecSharp;
36 using LibCECTray.controller.applications;
37
38 namespace LibCECTray.ui
39 {
40 /// <summary>
41 /// Form that implements IAsyncControls
42 /// </summary>
43 class AsyncForm : Form, IAsyncControls
44 {
45 /// <summary>
46 /// Changes the ShowInTaskbar value
47 /// </summary>
48 /// <param name="val">True to show, false to hide</param>
49 public void SetShowInTaskbar(bool val)
50 {
51 if (InvokeRequired)
52 {
53 SetShowInTaskbarCallback d = SetShowInTaskbar;
54 try
55 {
56 Invoke(d, new object[] { val });
57 }
58 catch (Exception) { }
59 }
60 else
61 {
62 ShowInTaskbar = val;
63 }
64 }
65 private delegate void SetShowInTaskbarCallback(bool val);
66
67 /// <summary>
68 /// Enable or disable a control
69 /// </summary>
70 /// <param name="control">The control to change</param>
71 /// <param name="val">True to enable, false to disable</param>
72 public void SetControlEnabled(Control control, bool val)
73 {
74 AsyncControls.SetControlEnabled(this, control, val);
75 }
76
77 /// <summary>
78 /// Change the text label of a control
79 /// </summary>
80 /// <param name="control">The control to change</param>
81 /// <param name="val">The new text</param>
82 public void SetControlText(Control control, string val)
83 {
84 AsyncControls.SetControlText(this, control, val);
85 }
86
87 /// <summary>
88 /// Changes the toolstrip menu text
89 /// </summary>
90 /// <param name="item">The toolstrip menu item to change</param>
91 /// <param name="val">The new value</param>
92 public void SetToolStripMenuText(ToolStripMenuItem item, string val)
93 {
94 AsyncControls.SetToolStripMenuText(this, item, val);
95 }
96
97 /// <summary>
98 /// Change the checked status of a checkbox
99 /// </summary>
100 /// <param name="control">The control to change</param>
101 /// <param name="val">True to change to checked, false to change to unchecked</param>
102 public void SetCheckboxChecked(CheckBox control, bool val)
103 {
104 AsyncControls.SetCheckboxChecked(this, control, val);
105 }
106
107 /// <summary>
108 /// Change the checked status of an item in a CheckedListBox
109 /// </summary>
110 /// <param name="control">The control to change</param>
111 /// <param name="index">The index of the checkbox in the list to change</param>
112 /// <param name="val">True to change to checked, false to change to unchecked</param>
113 public void SetCheckboxItemChecked(CheckedListBox control, int index, bool val)
114 {
115 AsyncControls.SetCheckboxItemChecked(this, control, index, val);
116 }
117
118 /// <summary>
119 /// Changes the progress value of a progress bar
120 /// </summary>
121 /// <param name="control">The control to change</param>
122 /// <param name="val">The new percentage</param>
123 public void SetProgressValue(ProgressBar control, int val)
124 {
125 AsyncControls.SetProgressValue(this, control, val);
126 }
127
128 /// <summary>
129 /// Replaces the items of a combobox
130 /// </summary>
131 /// <param name="control">The control to change</param>
132 /// <param name="selectedIndex">The new selection index</param>
133 /// <param name="val">The new content</param>
134 public void SetComboBoxItems(ComboBox control, int selectedIndex, object[] val)
135 {
136 AsyncControls.SetComboBoxItems(this, control, selectedIndex, val);
137 }
138
139 /// <summary>
140 /// Make a control visible or invisible
141 /// </summary>
142 /// <param name="control">The control to change</param>
143 /// <param name="val">True to make it visible, false to make it invisible</param>
144 public void SetControlVisible(Control control, bool val)
145 {
146 AsyncControls.SetControlVisible(this, control, val);
147 }
148
149 /// <summary>
150 /// Display a new dialog
151 /// </summary>
152 /// <param name="control">The control to display</param>
153 /// <param name="modal">True to make it a modal dialog</param>
154 public void DisplayDialog(Form control, bool modal)
155 {
156 AsyncControls.DisplayDialog(this, control, modal);
157 }
158
159 /// <summary>
160 /// Hides a control
161 /// </summary>
162 /// <param name="val">True to hide, false to show</param>
163 public void SafeHide(bool val)
164 {
165 AsyncControls.SafeHide(this, val);
166 }
167
168 /// <summary>
169 /// Change the selected index
170 /// </summary>
171 /// <param name="control">The control to change</param>
172 /// <param name="index">The new selected index</param>
173 public void SetSelectedIndex(ComboBox control, int index)
174 {
175 AsyncControls.SetSelectedIndex(this, control, index);
176 }
177
178 /// <summary>
179 /// Get the name of the selected tab in a TabControl
180 /// </summary>
181 /// <param name="container">The tab container</param>
182 /// <param name="tabPages">The tab pages</param>
183 /// <returns>The name of the selected tab</returns>
184 public string GetSelectedTabName(TabControl container, TabControl.TabPageCollection tabPages)
185 {
186 return AsyncControls.GetSelectedTabName(container, tabPages);
187 }
188
189 /// <summary>
190 /// Selects the row with the given CecKeypress for a datagrid
191 /// </summary>
192 /// <param name="container">The datagrid container</param>
193 /// <param name="dgView">The datagrid</param>
194 /// <param name="key">The key to selected</param>
195 public void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key)
196 {
197 AsyncControls.SelectKeypressRow(container, dgView, key);
198 }
199 }
200
201 /// <summary>
202 /// TabPage that implements IAsyncControls
203 /// </summary>
204 class AsyncTabPage : TabPage, IAsyncControls
205 {
206 /// <summary>
207 /// Enable or disable a control
208 /// </summary>
209 /// <param name="control">The control to change</param>
210 /// <param name="val">True to enable, false to disable</param>
211 public void SetControlEnabled(Control control, bool val)
212 {
213 AsyncControls.SetControlEnabled(this, control, val);
214 }
215
216 /// <summary>
217 /// Change the text label of a control
218 /// </summary>
219 /// <param name="control">The control to change</param>
220 /// <param name="val">The new text</param>
221 public void SetControlText(Control control, string val)
222 {
223 AsyncControls.SetControlText(this, control, val);
224 }
225
226 /// <summary>
227 /// Changes the toolstrip menu text
228 /// </summary>
229 /// <param name="item">The toolstrip menu item to change</param>
230 /// <param name="val">The new value</param>
231 public void SetToolStripMenuText(ToolStripMenuItem item, string val)
232 {
233 AsyncControls.SetToolStripMenuText(this, item, val);
234 }
235
236 /// <summary>
237 /// Change the checked status of a checkbox
238 /// </summary>
239 /// <param name="control">The control to change</param>
240 /// <param name="val">True to change to checked, false to change to unchecked</param>
241 public void SetCheckboxChecked(CheckBox control, bool val)
242 {
243 AsyncControls.SetCheckboxChecked(this, control, val);
244 }
245
246 /// <summary>
247 /// Change the checked status of an item in a CheckedListBox
248 /// </summary>
249 /// <param name="control">The control to change</param>
250 /// <param name="index">The index of the checkbox in the list to change</param>
251 /// <param name="val">True to change to checked, false to change to unchecked</param>
252 public void SetCheckboxItemChecked(CheckedListBox control, int index, bool val)
253 {
254 AsyncControls.SetCheckboxItemChecked(this, control, index, val);
255 }
256
257 /// <summary>
258 /// Changes the progress value of a progress bar
259 /// </summary>
260 /// <param name="control">The control to change</param>
261 /// <param name="val">The new percentage</param>
262 public void SetProgressValue(ProgressBar control, int val)
263 {
264 AsyncControls.SetProgressValue(this, control, val);
265 }
266
267 /// <summary>
268 /// Replaces the items of a combobox
269 /// </summary>
270 /// <param name="control">The control to change</param>
271 /// <param name="selectedIndex">The new selection index</param>
272 /// <param name="val">The new content</param>
273 public void SetComboBoxItems(ComboBox control, int selectedIndex, object[] val)
274 {
275 AsyncControls.SetComboBoxItems(this, control, selectedIndex, val);
276 }
277
278 /// <summary>
279 /// Make a control visible or invisible
280 /// </summary>
281 /// <param name="control">The control to change</param>
282 /// <param name="val">True to make it visible, false to make it invisible</param>
283 public void SetControlVisible(Control control, bool val)
284 {
285 AsyncControls.SetControlVisible(this, control, val);
286 }
287
288 /// <summary>
289 /// Display a new dialog
290 /// </summary>
291 /// <param name="control">The control to display</param>
292 /// <param name="modal">True to make it a modal dialog</param>
293 public void DisplayDialog(Form control, bool modal)
294 {
295 AsyncControls.DisplayDialog(this, control, modal);
296 }
297
298 /// <summary>
299 /// Hides a control
300 /// </summary>
301 /// <param name="val">True to hide, false to show</param>
302 public void SafeHide(bool val)
303 {
304 AsyncControls.SafeHide(this, val);
305 }
306
307 /// <summary>
308 /// Change the selected index
309 /// </summary>
310 /// <param name="control">The control to change</param>
311 /// <param name="index">The new selected index</param>
312 public void SetSelectedIndex(ComboBox control, int index)
313 {
314 AsyncControls.SetSelectedIndex(this, control, index);
315 }
316
317 /// <summary>
318 /// Get the name of the selected tab in a TabControl
319 /// </summary>
320 /// <param name="container">The tab container</param>
321 /// <param name="tabPages">The tab pages</param>
322 /// <returns>The name of the selected tab</returns>
323 public string GetSelectedTabName(TabControl container, TabControl.TabPageCollection tabPages)
324 {
325 return AsyncControls.GetSelectedTabName(container, tabPages);
326 }
327
328 /// <summary>
329 /// Selects the row with the given CecKeypress for a datagrid
330 /// </summary>
331 /// <param name="container">The datagrid container</param>
332 /// <param name="dgView">The datagrid</param>
333 /// <param name="key">The key to selected</param>
334 public void SelectKeypressRow(Control container, DataGridView dgView, CecKeypress key)
335 {
336 AsyncControls.SelectKeypressRow(container, dgView, key);
337 }
338 }
339 }