Codebase list autokey / 12e302c
Imported Upstream version 0.61.2 SVN-Git Migration 6 years ago
43 changed file(s) with 2119 addition(s) and 840 deletion(s). Raw diff Collapse all Expand all
00 Metadata-Version: 1.0
11 Name: autokey
2 Version: 0.61.0b
2 Version: 0.61.2
33 Summary: Desktop automation utility
44 Home-page: http://autokey.googlecode.com/
55 Author: Chris Dekter
22
33 ### BEGIN INIT INFO
44 # Provides: autokey
5 # Required-Start:
6 # Required-Stop:
5 # Required-Start: $local_fs
6 # Required-Stop: $local_fs
77 # Default-Start: 2 3 4 5
88 # Default-Stop: 0 1 6
99 # Short-Description: Start AutoKey daemon.
0 autokey (0.61.2-0~karmic) karmic; urgency=low
1
2 * Bring back cut/copy/paste item menu options
3 * Add 'engine' class to scripting framework to enable access to
4 AutoKey internals
5 * Add a configurable user module folder for import into scripts
6 * Enable multiple selection mode in treeview and update all necessary
7 interactions to work correctly
8 * Enable inline renaming of items in treeview, get rid of title and
9 description fields from the various pages
10
11 -- Chris Dekter <cdekter@gmail.com> Wed, 6 Jan 2010 10:38:05 +1000
12
013 autokey (0.61.0b-0~karmic) karmic; urgency=low
114
215 [ Chris Dekter ]
00 lib.scripting lib.scripting-module.html
1 lib.scripting.__package__ lib.scripting-module.html#__package__
12 lib.scripting.Clipboard lib.scripting.Clipboard-class.html
23 lib.scripting.Clipboard.get_selection lib.scripting.Clipboard-class.html#get_selection
3 lib.scripting.Clipboard.__receive lib.scripting.Clipboard-class.html#__receive
4 lib.scripting.Clipboard.__fillSelection lib.scripting.Clipboard-class.html#__fillSelection
4 lib.scripting.Clipboard.__getClipboard lib.scripting.Clipboard-class.html#__getClipboard
5 lib.scripting.Clipboard.get_clipboard lib.scripting.Clipboard-class.html#get_clipboard
6 lib.scripting.Clipboard.fill_clipboard lib.scripting.Clipboard-class.html#fill_clipboard
57 lib.scripting.Clipboard.__fillClipboard lib.scripting.Clipboard-class.html#__fillClipboard
6 lib.scripting.Clipboard.fill_clipboard lib.scripting.Clipboard-class.html#fill_clipboard
8 lib.scripting.Clipboard.__getSelection lib.scripting.Clipboard-class.html#__getSelection
79 lib.scripting.Clipboard.fill_selection lib.scripting.Clipboard-class.html#fill_selection
810 lib.scripting.Clipboard.__execAsync lib.scripting.Clipboard-class.html#__execAsync
9 lib.scripting.Clipboard.get_clipboard lib.scripting.Clipboard-class.html#get_clipboard
11 lib.scripting.Clipboard.__fillSelection lib.scripting.Clipboard-class.html#__fillSelection
1012 lib.scripting.Clipboard.__init__ lib.scripting.Clipboard-class.html#__init__
1113 lib.scripting.Dialog lib.scripting.Dialog-class.html
12 lib.scripting.Dialog.save_file lib.scripting.Dialog-class.html#save_file
13 lib.scripting.Dialog.choose_directory lib.scripting.Dialog-class.html#choose_directory
14 lib.scripting.Dialog.input_dialog lib.scripting.Dialog-class.html#input_dialog
1415 lib.scripting.Dialog.list_menu lib.scripting.Dialog-class.html#list_menu
1516 lib.scripting.Dialog.open_file lib.scripting.Dialog-class.html#open_file
1617 lib.scripting.Dialog.password_dialog lib.scripting.Dialog-class.html#password_dialog
17 lib.scripting.Dialog.__runZenity lib.scripting.Dialog-class.html#__runZenity
1818 lib.scripting.Dialog.list_menu_multi lib.scripting.Dialog-class.html#list_menu_multi
19 lib.scripting.Dialog.input_dialog lib.scripting.Dialog-class.html#input_dialog
19 lib.scripting.Dialog.combo_menu lib.scripting.Dialog-class.html#combo_menu
20 lib.scripting.Dialog.save_file lib.scripting.Dialog-class.html#save_file
21 lib.scripting.Dialog.__runKdialog lib.scripting.Dialog-class.html#__runKdialog
22 lib.scripting.Dialog.choose_directory lib.scripting.Dialog-class.html#choose_directory
23 lib.scripting.Dialog.choose_colour lib.scripting.Dialog-class.html#choose_colour
24 lib.scripting.Engine lib.scripting.Engine-class.html
25 lib.scripting.Engine.run_script lib.scripting.Engine-class.html#run_script
26 lib.scripting.Engine.get_folder lib.scripting.Engine-class.html#get_folder
27 lib.scripting.Engine.create_hotkey lib.scripting.Engine-class.html#create_hotkey
28 lib.scripting.Engine.create_abbreviation lib.scripting.Engine-class.html#create_abbreviation
29 lib.scripting.Engine.create_phrase lib.scripting.Engine-class.html#create_phrase
30 lib.scripting.Engine.__init__ lib.scripting.Engine-class.html#__init__
2031 lib.scripting.Keyboard lib.scripting.Keyboard-class.html
2132 lib.scripting.Keyboard.send_keys lib.scripting.Keyboard-class.html#send_keys
2233 lib.scripting.Keyboard.send_key lib.scripting.Keyboard-class.html#send_key
3546 lib.scripting.Window lib.scripting.Window-class.html
3647 lib.scripting.Window.wait_for_exist lib.scripting.Window-class.html#wait_for_exist
3748 lib.scripting.Window.activate lib.scripting.Window-class.html#activate
49 lib.scripting.Window.move_to_desktop lib.scripting.Window-class.html#move_to_desktop
50 lib.scripting.Window.get_active_geometry lib.scripting.Window-class.html#get_active_geometry
3851 lib.scripting.Window.wait_for_focus lib.scripting.Window-class.html#wait_for_focus
3952 lib.scripting.Window.__runWmctrl lib.scripting.Window-class.html#__runWmctrl
40 lib.scripting.Window.switch_desktop lib.scripting.Window-class.html#switch_desktop
4153 lib.scripting.Window.resize_move lib.scripting.Window-class.html#resize_move
4254 lib.scripting.Window.close lib.scripting.Window-class.html#close
43 lib.scripting.Window.move_to_desktop lib.scripting.Window-class.html#move_to_desktop
55 lib.scripting.Window.switch_desktop lib.scripting.Window-class.html#switch_desktop
4456 lib.scripting.Window.set_property lib.scripting.Window-class.html#set_property
4557 lib.scripting.Window.__init__ lib.scripting.Window-class.html#__init__
6161 <em class="summary">Provides a simple interface for the display of some basic dialogs
6262 to collect information from the user.</em>
6363 </li>
64 <li> <strong class="uidlink"><a href="lib.scripting.Engine-class.html">lib.scripting.Engine</a></strong>:
65 <em class="summary">Provides access to the internals of AutoKey.</em>
66 </li>
6467 <li> <strong class="uidlink"><a href="lib.scripting.Keyboard-class.html">lib.scripting.Keyboard</a></strong>:
6568 <em class="summary">Provides access to the keyboard for event generation.</em>
6669 </li>
7881 <ul>
7982 <li> <strong class="uidlink">dict</strong>:
8083 <em class="summary">dict() -&gt; new empty dictionary.</em>
84 <ul>
85 <li> <strong class="uidlink"><a href="lib.scripting.Store-class.html">lib.scripting.Store</a></strong>:
86 <em class="summary">Allows persistent storage of values between invocations of the
87 script.</em>
88 </li>
89 </ul>
8190 </li>
8291 </ul>
8392 </li>
108117 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
109118 <tr>
110119 <td align="left" class="footer">
111 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
120 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
112121 </td>
113122 <td align="right" class="footer">
114123 <a target="mainFrame" href="http://epydoc.sourceforge.net"
245245 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
246246 <tr>
247247 <td align="left" class="footer">
248 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
248 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
249249 </td>
250250 <td align="right" class="footer">
251251 <a target="mainFrame" href="http://epydoc.sourceforge.net"
9999 <td valign="top">
100100 <table class="link-index" width="100%" border="1">
101101 <tr>
102 <td width="33%" class="link-index"><a href="lib.scripting.Dialog-class.html#choose_colour">choose_colour()</a><br />
103 <span class="index-where">(in&nbsp;<a href="lib.scripting.Dialog-class.html">Dialog</a>)</span></td>
104 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html">Clipboard</a><br />
105 <span class="index-where">(in&nbsp;<a href="lib.scripting-module.html">lib.scripting</a>)</span></td>
106 <td width="33%" class="link-index"><a href="lib.scripting.System-class.html#create_file">create_file()</a><br />
107 <span class="index-where">(in&nbsp;<a href="lib.scripting.System-class.html">System</a>)</span></td>
108 </tr>
109 <tr>
102110 <td width="33%" class="link-index"><a href="lib.scripting.Dialog-class.html#choose_directory">choose_directory()</a><br />
103111 <span class="index-where">(in&nbsp;<a href="lib.scripting.Dialog-class.html">Dialog</a>)</span></td>
112 <td width="33%" class="link-index"><a href="lib.scripting.Window-class.html#close">close()</a><br />
113 <span class="index-where">(in&nbsp;<a href="lib.scripting.Window-class.html">Window</a>)</span></td>
114 <td width="33%" class="link-index"><a href="lib.scripting.Engine-class.html#create_hotkey">create_hotkey()</a><br />
115 <span class="index-where">(in&nbsp;<a href="lib.scripting.Engine-class.html">Engine</a>)</span></td>
116 </tr>
117 <tr>
118 <td width="33%" class="link-index"><a href="lib.scripting.Mouse-class.html#click_absolute">click_absolute()</a><br />
119 <span class="index-where">(in&nbsp;<a href="lib.scripting.Mouse-class.html">Mouse</a>)</span></td>
120 <td width="33%" class="link-index"><a href="lib.scripting.Dialog-class.html#combo_menu">combo_menu()</a><br />
121 <span class="index-where">(in&nbsp;<a href="lib.scripting.Dialog-class.html">Dialog</a>)</span></td>
122 <td width="33%" class="link-index"><a href="lib.scripting.Engine-class.html#create_phrase">create_phrase()</a><br />
123 <span class="index-where">(in&nbsp;<a href="lib.scripting.Engine-class.html">Engine</a>)</span></td>
124 </tr>
125 <tr>
104126 <td width="33%" class="link-index"><a href="lib.scripting.Mouse-class.html#click_relative">click_relative()</a><br />
105127 <span class="index-where">(in&nbsp;<a href="lib.scripting.Mouse-class.html">Mouse</a>)</span></td>
106 <td width="33%" class="link-index"><a href="lib.scripting.Window-class.html#close">close()</a><br />
107 <span class="index-where">(in&nbsp;<a href="lib.scripting.Window-class.html">Window</a>)</span></td>
108 </tr>
109 <tr>
110 <td width="33%" class="link-index"><a href="lib.scripting.Mouse-class.html#click_absolute">click_absolute()</a><br />
111 <span class="index-where">(in&nbsp;<a href="lib.scripting.Mouse-class.html">Mouse</a>)</span></td>
112 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html">Clipboard</a><br />
113 <span class="index-where">(in&nbsp;<a href="lib.scripting-module.html">lib.scripting</a>)</span></td>
114 <td width="33%" class="link-index"><a href="lib.scripting.System-class.html#create_file">create_file()</a><br />
115 <span class="index-where">(in&nbsp;<a href="lib.scripting.System-class.html">System</a>)</span></td>
128 <td width="33%" class="link-index"><a href="lib.scripting.Engine-class.html#create_abbreviation">create_abbreviation()</a><br />
129 <span class="index-where">(in&nbsp;<a href="lib.scripting.Engine-class.html">Engine</a>)</span></td>
130 <td width="33%" class="link-index">&nbsp;</td>
116131 </tr>
117132 </table>
118133 </td></tr>
132147 <td valign="top">
133148 <table class="link-index" width="100%" border="1">
134149 <tr>
150 <td width="33%" class="link-index"><a href="lib.scripting.Engine-class.html">Engine</a><br />
151 <span class="index-where">(in&nbsp;<a href="lib.scripting-module.html">lib.scripting</a>)</span></td>
135152 <td width="33%" class="link-index"><a href="lib.scripting.System-class.html#exec_command">exec_command()</a><br />
136153 <span class="index-where">(in&nbsp;<a href="lib.scripting.System-class.html">System</a>)</span></td>
137154 <td width="33%" class="link-index">&nbsp;</td>
138 <td width="33%" class="link-index">&nbsp;</td>
139155 </tr>
140156 <tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
141157 </table>
157173 <td valign="top">
158174 <table class="link-index" width="100%" border="1">
159175 <tr>
160 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#get_clipboard">get_clipboard()</a><br />
161 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
162 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#get_selection">get_selection()</a><br />
163 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
176 <td width="33%" class="link-index"><a href="lib.scripting.Window-class.html#get_active_geometry">get_active_geometry()</a><br />
177 <span class="index-where">(in&nbsp;<a href="lib.scripting.Window-class.html">Window</a>)</span></td>
178 <td width="33%" class="link-index"><a href="lib.scripting.Engine-class.html#get_folder">get_folder()</a><br />
179 <span class="index-where">(in&nbsp;<a href="lib.scripting.Engine-class.html">Engine</a>)</span></td>
164180 <td width="33%" class="link-index"><a href="lib.scripting.Store-class.html#get_value">get_value()</a><br />
165181 <span class="index-where">(in&nbsp;<a href="lib.scripting.Store-class.html">Store</a>)</span></td>
166182 </tr>
167 <tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
183 <tr>
184 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#get_clipboard">get_clipboard()</a><br />
185 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
186 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#get_selection">get_selection()</a><br />
187 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
188 <td width="33%" class="link-index">&nbsp;</td>
189 </tr>
168190 </table>
169191 </td></tr>
170192 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
249271 <span class="index-where">(in&nbsp;<a href="lib.scripting.Store-class.html">Store</a>)</span></td>
250272 <td width="33%" class="link-index"><a href="lib.scripting.Window-class.html#resize_move">resize_move()</a><br />
251273 <span class="index-where">(in&nbsp;<a href="lib.scripting.Window-class.html">Window</a>)</span></td>
252 <td width="33%" class="link-index">&nbsp;</td>
274 <td width="33%" class="link-index"><a href="lib.scripting.Engine-class.html#run_script">run_script()</a><br />
275 <span class="index-where">(in&nbsp;<a href="lib.scripting.Engine-class.html">Engine</a>)</span></td>
253276 </tr>
254277 <tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
255278 </table>
303326 <tr>
304327 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__execAsync">__execAsync()</a><br />
305328 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
329 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__init__">__init__()</a><br />
330 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
331 <td width="33%" class="link-index"><a href="lib.scripting-module.html#__package__">__package__</a><br />
332 <span class="index-where">(in&nbsp;<a href="lib.scripting-module.html">lib.scripting</a>)</span></td>
333 </tr>
334 <tr>
335 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__fillClipboard">__fillClipboard()</a><br />
336 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
337 <td width="33%" class="link-index"><a href="lib.scripting.Engine-class.html#__init__">__init__()</a><br />
338 <span class="index-where">(in&nbsp;<a href="lib.scripting.Engine-class.html">Engine</a>)</span></td>
339 <td width="33%" class="link-index"><a href="lib.scripting.Dialog-class.html#__runKdialog">__runKdialog()</a><br />
340 <span class="index-where">(in&nbsp;<a href="lib.scripting.Dialog-class.html">Dialog</a>)</span></td>
341 </tr>
342 <tr>
343 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__fillSelection">__fillSelection()</a><br />
344 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
306345 <td width="33%" class="link-index"><a href="lib.scripting.Keyboard-class.html#__init__">__init__()</a><br />
307346 <span class="index-where">(in&nbsp;<a href="lib.scripting.Keyboard-class.html">Keyboard</a>)</span></td>
308347 <td width="33%" class="link-index"><a href="lib.scripting.Window-class.html#__runWmctrl">__runWmctrl()</a><br />
309348 <span class="index-where">(in&nbsp;<a href="lib.scripting.Window-class.html">Window</a>)</span></td>
310349 </tr>
311350 <tr>
312 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__fillClipboard">__fillClipboard()</a><br />
351 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__getClipboard">__getClipboard()</a><br />
313352 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
314353 <td width="33%" class="link-index"><a href="lib.scripting.Mouse-class.html#__init__">__init__()</a><br />
315354 <span class="index-where">(in&nbsp;<a href="lib.scripting.Mouse-class.html">Mouse</a>)</span></td>
316 <td width="33%" class="link-index"><a href="lib.scripting.Dialog-class.html#__runZenity">__runZenity()</a><br />
317 <span class="index-where">(in&nbsp;<a href="lib.scripting.Dialog-class.html">Dialog</a>)</span></td>
318 </tr>
319 <tr>
320 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__fillSelection">__fillSelection()</a><br />
355 <td width="33%" class="link-index">&nbsp;</td>
356 </tr>
357 <tr>
358 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__getSelection">__getSelection()</a><br />
321359 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
322360 <td width="33%" class="link-index"><a href="lib.scripting.Window-class.html#__init__">__init__()</a><br />
323361 <span class="index-where">(in&nbsp;<a href="lib.scripting.Window-class.html">Window</a>)</span></td>
324 <td width="33%" class="link-index">&nbsp;</td>
325 </tr>
326 <tr>
327 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__init__">__init__()</a><br />
328 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
329 <td width="33%" class="link-index"><a href="lib.scripting.Clipboard-class.html#__receive">__receive()</a><br />
330 <span class="index-where">(in&nbsp;<a href="lib.scripting.Clipboard-class.html">Clipboard</a>)</span></td>
331362 <td width="33%" class="link-index">&nbsp;</td>
332363 </tr>
333364 </table>
359390 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
360391 <tr>
361392 <td align="left" class="footer">
362 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
393 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
363394 </td>
364395 <td align="right" class="footer">
365396 <a target="mainFrame" href="http://epydoc.sourceforge.net"
9494 </td><td class="summary">
9595 <a href="lib.scripting.Store-class.html" class="summary-name">Store</a><br />
9696 Allows persistent storage of values between invocations of the
97 script.
97 script.
9898 </td>
9999 </tr>
100100 <tr>
128128 </td><td class="summary">
129129 <a href="lib.scripting.Window-class.html" class="summary-name">Window</a><br />
130130 Basic window management using wmctrl
131 </td>
132 </tr>
133 <tr>
134 <td width="15%" align="right" valign="top" class="summary">
135 <span class="summary-type">&nbsp;</span>
136 </td><td class="summary">
137 <a href="lib.scripting.Engine-class.html" class="summary-name">Engine</a><br />
138 Provides access to the internals of AutoKey.
139 </td>
140 </tr>
141 </table>
142 <!-- ==================== VARIABLES ==================== -->
143 <a name="section-Variables"></a>
144 <table class="summary" border="1" cellpadding="3"
145 cellspacing="0" width="100%" bgcolor="white">
146 <tr bgcolor="#70b0f0" class="table-header">
147 <td colspan="2" class="table-header">
148 <table border="0" cellpadding="0" cellspacing="0" width="100%">
149 <tr valign="top">
150 <td align="left"><span class="table-header">Variables</span></td>
151 <td align="right" valign="top"
152 ><span class="options">[<a href="#section-Variables"
153 class="privatelink" onclick="toggle_private();"
154 >hide private</a>]</span></td>
155 </tr>
156 </table>
157 </td>
158 </tr>
159 <tr>
160 <td width="15%" align="right" valign="top" class="summary">
161 <span class="summary-type">&nbsp;</span>
162 </td><td class="summary">
163 <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'lib'"><code class="variable-quote">'</code><code class="variable-string">lib</code><code class="variable-quote">'</code></code>
131164 </td>
132165 </tr>
133166 </table>
157190 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
158191 <tr>
159192 <td align="left" class="footer">
160 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
193 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
161194 </td>
162195 <td align="right" class="footer">
163196 <a target="mainFrame" href="http://epydoc.sourceforge.net"
5656 <h1 class="epydoc">Source Code for <a href="lib.scripting-module.html">Module lib.scripting</a></h1>
5757 <pre class="py-src">
5858 <a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: utf-8 -*-</tt> </tt>
59 <a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
59 <a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"> </tt>
6060 <a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2009 Chris Dekter</tt> </tt>
61 <a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
61 <a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"> </tt>
6262 <a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># This program is free software; you can redistribute it and/or modify</tt> </tt>
63 <a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># it under the terms of the GNU General Public License as published by</tt> </tt>
64 <a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># the Free Software Foundation; either version 2 of the License, or</tt> </tt>
65 <a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (at your option) any later version.</tt> </tt>
66 <a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
67 <a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This program is distributed in the hope that it will be useful, but</tt> </tt>
68 <a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
69 <a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt>
70 <a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># General Public License for more details.</tt> </tt>
71 <a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
72 <a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
73 <a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># along with this program; if not, write to the Free Software</tt> </tt>
74 <a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</tt> </tt>
75 <a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
63 <a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># it under the terms of the GNU General Public License as published by</tt> </tt>
64 <a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># the Free Software Foundation; either version 2 of the License, or</tt> </tt>
65 <a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># (at your option) any later version.</tt> </tt>
66 <a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
67 <a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># This program is distributed in the hope that it will be useful, but</tt> </tt>
68 <a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
69 <a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</tt> </tt>
70 <a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># General Public License for more details.</tt> </tt>
71 <a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
72 <a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
73 <a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with this program; if not, write to the Free Software</tt> </tt>
74 <a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</tt> </tt>
75 <a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt>
7676 <a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">subprocess</tt><tt class="py-op">,</tt> <tt class="py-name">threading</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt> </tt>
77 <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gtk</tt> </tt>
78 <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"> </tt>
79 <a name="Keyboard"></a><div id="Keyboard-def"><a name="L22"></a><tt class="py-lineno"> 22</tt> <a class="py-toggle" href="#" id="Keyboard-toggle" onclick="return toggle('Keyboard');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html">Keyboard</a><tt class="py-op">:</tt> </tt>
80 </div><div id="Keyboard-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Keyboard-expanded"><a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
81 <a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to the keyboard for event generation.</tt> </tt>
82 <a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
83 <a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
84 <a name="Keyboard.__init__"></a><div id="Keyboard.__init__-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="Keyboard.__init__-toggle" onclick="return toggle('Keyboard.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mediator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
85 </div><div id="Keyboard.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.__init__-expanded"><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt> <tt class="py-op">=</tt> <tt class="py-name">mediator</tt> </tt>
86 </div><a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
87 <a name="Keyboard.send_keys"></a><div id="Keyboard.send_keys-def"><a name="L30"></a><tt class="py-lineno"> 30</tt> <a class="py-toggle" href="#" id="Keyboard.send_keys-toggle" onclick="return toggle('Keyboard.send_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html#send_keys">send_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">keyString</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
88 </div><div id="Keyboard.send_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.send_keys-expanded"><a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
89 <a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring"> Send a sequence of keys via keyboard events</tt> </tt>
90 <a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
91 <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{keyboard.send_keys(keyString)}</tt> </tt>
92 <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
93 <a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"> @param keyString: string of keys (including special keys) to send</tt> </tt>
94 <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
95 <a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">send_string</tt><tt class="py-op">(</tt><tt class="py-name">keyString</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
96 <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">flush</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
97 </div><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
98 <a name="Keyboard.send_key"></a><div id="Keyboard.send_key-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="Keyboard.send_key-toggle" onclick="return toggle('Keyboard.send_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html#send_key">send_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">repeat</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
99 </div><div id="Keyboard.send_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.send_key-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
100 <a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> Send a keyboard event</tt> </tt>
101 <a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
102 <a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{keyboard.send_key(key, repeat=1)}</tt> </tt>
103 <a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
104 <a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> @param key: they key to be sent (e.g. "s" or "&lt;enter&gt;")</tt> </tt>
105 <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> @param repeat: number of times to repeat the key event</tt> </tt>
106 <a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
107 <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">repeat</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
108 <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Method lib.scripting.Keyboard.send_key()=lib.scripting.Keyboard-class.html#send_key"><a title="lib.scripting.Keyboard.send_key" class="py-name" href="#" onclick="return doclink('link-0', 'send_key', 'link-0');">send_key</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
109 <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">flush</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
110 </div></div><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt>
111 <a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> </tt>
112 <a name="Mouse"></a><div id="Mouse-def"><a name="L55"></a><tt class="py-lineno"> 55</tt> <a class="py-toggle" href="#" id="Mouse-toggle" onclick="return toggle('Mouse');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Mouse-class.html">Mouse</a><tt class="py-op">:</tt> </tt>
113 </div><div id="Mouse-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Mouse-expanded"><a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
114 <a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to send mouse clicks</tt> </tt>
115 <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
116 <a name="Mouse.__init__"></a><div id="Mouse.__init__-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="Mouse.__init__-toggle" onclick="return toggle('Mouse.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Mouse-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mediator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
117 </div><div id="Mouse.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.__init__-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt> <tt class="py-op">=</tt> <tt class="py-name">mediator</tt> </tt>
118 </div><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
119 <a name="Mouse.click_relative"></a><div id="Mouse.click_relative-def"><a name="L62"></a><tt class="py-lineno"> 62</tt> <a class="py-toggle" href="#" id="Mouse.click_relative-toggle" onclick="return toggle('Mouse.click_relative');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Mouse-class.html#click_relative">click_relative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">,</tt> <tt class="py-param">y</tt><tt class="py-op">,</tt> <tt class="py-param">button</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
120 </div><div id="Mouse.click_relative-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.click_relative-expanded"><a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
121 <a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> Send a mouse click relative to the active window</tt> </tt>
122 <a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
123 <a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{mouse.click_relative(x, y, button)}</tt> </tt>
124 <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
125 <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> @param x: x-coordinate in pixels, relative to upper left corner of window</tt> </tt>
126 <a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> @param y: y-coordinate in pixels, relative to upper left corner of window</tt> </tt>
127 <a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> @param button: mouse button to simulate (left=1, middle=2, right=3)</tt> </tt>
128 <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
129 <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">send_mouse_click</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">button</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
130 </div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt>
131 <a name="Mouse.click_absolute"></a><div id="Mouse.click_absolute-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="Mouse.click_absolute-toggle" onclick="return toggle('Mouse.click_absolute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Mouse-class.html#click_absolute">click_absolute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">,</tt> <tt class="py-param">y</tt><tt class="py-op">,</tt> <tt class="py-param">button</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
132 </div><div id="Mouse.click_absolute-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.click_absolute-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
133 <a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Send a mouse click relative to the screen (absolute)</tt> </tt>
134 <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
135 <a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{mouse.click_absolute(x, y, button)}</tt> </tt>
136 <a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
137 <a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> @param x: x-coordinate in pixels, relative to upper left corner of window</tt> </tt>
138 <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> @param y: y-coordinate in pixels, relative to upper left corner of window</tt> </tt>
139 <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> @param button: mouse button to simulate (left=1, middle=2, right=3)</tt> </tt>
140 <a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
141 <a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">send_mouse_click</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">button</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
142 </div></div><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
143 <a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
144 <a name="Store"></a><div id="Store-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="Store-toggle" onclick="return toggle('Store');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Store-class.html">Store</a><tt class="py-op">(</tt><tt class="py-base-class">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
145 </div><div id="Store-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Store-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
146 <a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> Allows persistent storage of values between invocations of the script.</tt> </tt>
147 <a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
148 <a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt>
149 <a name="Store.set_value"></a><div id="Store.set_value-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="Store.set_value-toggle" onclick="return toggle('Store.set_value');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Store-class.html#set_value">set_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
150 </div><div id="Store.set_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.set_value-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
151 <a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> Store a value</tt> </tt>
152 <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
153 <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{store.set_value(key, value)}</tt> </tt>
154 <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
155 <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
156 </div><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt>
157 <a name="Store.get_value"></a><div id="Store.get_value-def"><a name="L100"></a><tt class="py-lineno">100</tt> <a class="py-toggle" href="#" id="Store.get_value-toggle" onclick="return toggle('Store.get_value');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Store-class.html#get_value">get_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
158 </div><div id="Store.get_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.get_value-expanded"><a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
159 <a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> Get a value</tt> </tt>
160 <a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
161 <a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{store.get_value(key)}</tt> </tt>
162 <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
163 <a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
164 </div><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt>
165 <a name="Store.remove_value"></a><div id="Store.remove_value-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="Store.remove_value-toggle" onclick="return toggle('Store.remove_value');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Store-class.html#remove_value">remove_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
166 </div><div id="Store.remove_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.remove_value-expanded"><a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
167 <a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> Remove a value</tt> </tt>
168 <a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
169 <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{store.remove_value(key)}</tt> </tt>
170 <a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
171 <a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
172 </div></div><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt>
173 <a name="Dialog"></a><div id="Dialog-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="Dialog-toggle" onclick="return toggle('Dialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html">Dialog</a><tt class="py-op">:</tt> </tt>
174 </div><div id="Dialog-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Dialog-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
175 <a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> Provides a simple interface for the display of some basic dialogs to collect information from the user.</tt> </tt>
176 <a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
177 <a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt>
178 <a name="Dialog.__runZenity"></a><div id="Dialog.__runZenity-def"><a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="Dialog.__runZenity-toggle" onclick="return toggle('Dialog.__runZenity');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#__runZenity">__runZenity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
179 </div><div id="Dialog.__runZenity-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.__runZenity-expanded"><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"zenity"</tt><tt class="py-op">,</tt> <tt class="py-string">"--title"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">PIPE</tt><tt class="py-op">)</tt> </tt>
180 <a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">retCode</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
181 <a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-comment"># Drop trailing newline</tt> </tt>
182 <a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> </tt>
183 <a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt><tt class="py-op">)</tt> </tt>
184 </div><a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> </tt>
185 <a name="Dialog.input_dialog"></a><div id="Dialog.input_dialog-def"><a name="L128"></a><tt class="py-lineno">128</tt> <a class="py-toggle" href="#" id="Dialog.input_dialog-toggle" onclick="return toggle('Dialog.input_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#input_dialog">input_dialog</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Enter a value"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Enter a value"</tt><tt class="py-op">,</tt> <tt class="py-param">default</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
186 </div><div id="Dialog.input_dialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.input_dialog-expanded"><a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
187 <a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> Show an input dialog</tt> </tt>
188 <a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
189 <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.input_dialog(title="Enter a value", message="Enter a value", default="")}</tt> </tt>
190 <a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
191 <a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
192 <a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the input box</tt> </tt>
193 <a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value for the input box</tt> </tt>
194 <a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
195 <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Method lib.scripting.Dialog.__runZenity()=lib.scripting.Dialog-class.html#__runZenity"><a title="lib.scripting.Dialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-1', '__runZenity', 'link-1');">__runZenity</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--entry"</tt><tt class="py-op">,</tt> <tt class="py-string">"--text"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">"--entry-text"</tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
196 </div><a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt>
197 <a name="Dialog.password_dialog"></a><div id="Dialog.password_dialog-def"><a name="L140"></a><tt class="py-lineno">140</tt> <a class="py-toggle" href="#" id="Dialog.password_dialog-toggle" onclick="return toggle('Dialog.password_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#password_dialog">password_dialog</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Enter password"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Enter password"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
198 </div><div id="Dialog.password_dialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.password_dialog-expanded"><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
199 <a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> Show a password input dialog</tt> </tt>
200 <a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
201 <a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.password_dialog(title="Enter password", message="Enter password")}</tt> </tt>
202 <a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
203 <a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
204 <a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the password input box</tt> </tt>
205 <a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
206 <a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name"><a title="lib.scripting.Dialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-2', '__runZenity', 'link-1');">__runZenity</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--entry"</tt><tt class="py-op">,</tt> <tt class="py-string">"--text"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">"--hide-text"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
207 <a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt>
208 <a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-comment">#def combo_menu(self, options, title="Choose an option", message="Choose an option"):</tt> </tt>
209 <a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-string">"""</tt> </tt>
210 <a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-string"> Show a combobox menu - not supported by zenity</tt> </tt>
211 <a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
212 <a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-string"> Usage: C{dialog.combo_menu(options, title="Choose an option", message="Choose an option")}</tt> </tt>
213 <a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
214 <a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-string"> @param options: list of options (strings) for the dialog</tt> </tt>
215 <a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-string"> @param title: window title for the dialog</tt> </tt>
216 <a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-string"> @param message: message displayed above the combobox </tt> </tt>
217 <a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt>
218 </div><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-comment">#return self.__runZenity(title, ["--combobox", message] + options)</tt> </tt>
219 <a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
220 <a name="Dialog.list_menu"></a><div id="Dialog.list_menu-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="Dialog.list_menu-toggle" onclick="return toggle('Dialog.list_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#list_menu">list_menu</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Choose a value"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Choose a value"</tt><tt class="py-op">,</tt> <tt class="py-param">default</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
221 </div><div id="Dialog.list_menu-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.list_menu-expanded"><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
222 <a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> Show a single-selection list menu</tt> </tt>
223 <a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
224 <a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.list_menu(options, title="Choose a value", message="Choose a value", default=None)}</tt> </tt>
225 <a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
226 <a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
227 <a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
228 <a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
229 <a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value to be selected</tt> </tt>
230 <a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
231 <a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt>
232 <a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">choices</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
233 <a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-comment">#optionNum = 0</tt> </tt>
234 <a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">option</tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">:</tt> </tt>
235 <a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">option</tt> <tt class="py-op">==</tt> <tt class="py-name">default</tt><tt class="py-op">:</tt> </tt>
236 <a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"TRUE"</tt><tt class="py-op">)</tt> </tt>
237 <a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
238 <a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"FALSE"</tt><tt class="py-op">)</tt> </tt>
239 <a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt>
240 <a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-comment">#choices.append(str(optionNum))</tt> </tt>
241 <a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">option</tt><tt class="py-op">)</tt> </tt>
242 <a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-comment">#optionNum += 1</tt> </tt>
243 <a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
244 <a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="lib.scripting.Dialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-3', '__runZenity', 'link-1');">__runZenity</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--list"</tt><tt class="py-op">,</tt> <tt class="py-string">"--radiolist"</tt><tt class="py-op">,</tt> <tt class="py-string">"--text"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">"--column"</tt><tt class="py-op">,</tt> <tt class="py-string">" "</tt><tt class="py-op">,</tt> <tt class="py-string">"--column"</tt><tt class="py-op">,</tt> <tt class="py-string">"Options"</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">choices</tt><tt class="py-op">)</tt> </tt>
245 </div><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> </tt>
246 <a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-comment">#return retCode, choice </tt> </tt>
247 <a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
248 <a name="Dialog.list_menu_multi"></a><div id="Dialog.list_menu_multi-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="Dialog.list_menu_multi-toggle" onclick="return toggle('Dialog.list_menu_multi');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#list_menu_multi">list_menu_multi</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Choose one or more values"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Choose one or more values"</tt><tt class="py-op">,</tt> <tt class="py-param">defaults</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
249 </div><div id="Dialog.list_menu_multi-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.list_menu_multi-expanded"><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
250 <a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> Show a multiple-selection list menu</tt> </tt>
251 <a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
252 <a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.list_menu_multi(options, title="Choose one or more values", message="Choose one or more values", defaults=[])}</tt> </tt>
253 <a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
254 <a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
255 <a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
256 <a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
257 <a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> @param defaults: list of default values to be selected</tt> </tt>
258 <a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
259 <a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> </tt>
260 <a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">choices</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
261 <a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-comment">#optionNum = 0</tt> </tt>
262 <a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">for</tt> <tt class="py-name">option</tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">:</tt> </tt>
263 <a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">option</tt> <tt class="py-keyword">in</tt> <tt class="py-name">defaults</tt><tt class="py-op">:</tt> </tt>
264 <a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"TRUE"</tt><tt class="py-op">)</tt> </tt>
265 <a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
266 <a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"FALSE"</tt><tt class="py-op">)</tt> </tt>
267 <a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> </tt>
268 <a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-comment">#choices.append(str(optionNum))</tt> </tt>
269 <a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">option</tt><tt class="py-op">)</tt> </tt>
270 <a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-comment">#optionNum += 1</tt> </tt>
271 <a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
272 <a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name"><a title="lib.scripting.Dialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-4', '__runZenity', 'link-1');">__runZenity</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--list"</tt><tt class="py-op">,</tt> <tt class="py-string">"--checklist"</tt><tt class="py-op">,</tt> <tt class="py-string">"--text"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">"--column"</tt><tt class="py-op">,</tt> <tt class="py-string">" "</tt><tt class="py-op">,</tt> <tt class="py-string">"--column"</tt><tt class="py-op">,</tt> <tt class="py-string">"Options"</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">choices</tt><tt class="py-op">)</tt> </tt>
77 <a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment">#from PyQt4.QtGui import QClipboard, QApplication</tt> </tt>
78 <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-comment">#import model</tt> </tt>
79 <a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
80 <a name="Keyboard"></a><div id="Keyboard-def"><a name="L23"></a><tt class="py-lineno"> 23</tt> <a class="py-toggle" href="#" id="Keyboard-toggle" onclick="return toggle('Keyboard');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html">Keyboard</a><tt class="py-op">:</tt> </tt>
81 </div><div id="Keyboard-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Keyboard-expanded"><a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
82 <a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to the keyboard for event generation.</tt> </tt>
83 <a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
84 <a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
85 <a name="Keyboard.__init__"></a><div id="Keyboard.__init__-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <a class="py-toggle" href="#" id="Keyboard.__init__-toggle" onclick="return toggle('Keyboard.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mediator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
86 </div><div id="Keyboard.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.__init__-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt> <tt class="py-op">=</tt> <tt class="py-name">mediator</tt> </tt>
87 </div><a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
88 <a name="Keyboard.send_keys"></a><div id="Keyboard.send_keys-def"><a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="Keyboard.send_keys-toggle" onclick="return toggle('Keyboard.send_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html#send_keys">send_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">keyString</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
89 </div><div id="Keyboard.send_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.send_keys-expanded"><a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
90 <a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring"> Send a sequence of keys via keyboard events</tt> </tt>
91 <a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
92 <a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{keyboard.send_keys(keyString)}</tt> </tt>
93 <a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
94 <a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring"> @param keyString: string of keys (including special keys) to send</tt> </tt>
95 <a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
96 <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">send_string</tt><tt class="py-op">(</tt><tt class="py-name">keyString</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
97 <a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">flush</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
98 </div><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
99 <a name="Keyboard.send_key"></a><div id="Keyboard.send_key-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="Keyboard.send_key-toggle" onclick="return toggle('Keyboard.send_key');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html#send_key">send_key</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">repeat</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
100 </div><div id="Keyboard.send_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.send_key-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
101 <a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> Send a keyboard event</tt> </tt>
102 <a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
103 <a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{keyboard.send_key(key, repeat=1)}</tt> </tt>
104 <a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
105 <a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> @param key: they key to be sent (e.g. "s" or "&lt;enter&gt;")</tt> </tt>
106 <a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> @param repeat: number of times to repeat the key event</tt> </tt>
107 <a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
108 <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">repeat</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
109 <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Method lib.scripting.Keyboard.send_key()=lib.scripting.Keyboard-class.html#send_key"><a title="lib.scripting.Keyboard.send_key" class="py-name" href="#" onclick="return doclink('link-0', 'send_key', 'link-0');">send_key</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
110 <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">flush</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
111 </div></div><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> </tt>
112 <a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt>
113 <a name="Mouse"></a><div id="Mouse-def"><a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="Mouse-toggle" onclick="return toggle('Mouse');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Mouse-class.html">Mouse</a><tt class="py-op">:</tt> </tt>
114 </div><div id="Mouse-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Mouse-expanded"><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
115 <a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to send mouse clicks</tt> </tt>
116 <a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
117 <a name="Mouse.__init__"></a><div id="Mouse.__init__-def"><a name="L60"></a><tt class="py-lineno"> 60</tt> <a class="py-toggle" href="#" id="Mouse.__init__-toggle" onclick="return toggle('Mouse.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Mouse-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mediator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
118 </div><div id="Mouse.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.__init__-expanded"><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt> <tt class="py-op">=</tt> <tt class="py-name">mediator</tt> </tt>
119 </div><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> </tt>
120 <a name="Mouse.click_relative"></a><div id="Mouse.click_relative-def"><a name="L63"></a><tt class="py-lineno"> 63</tt> <a class="py-toggle" href="#" id="Mouse.click_relative-toggle" onclick="return toggle('Mouse.click_relative');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Mouse-class.html#click_relative">click_relative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">,</tt> <tt class="py-param">y</tt><tt class="py-op">,</tt> <tt class="py-param">button</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
121 </div><div id="Mouse.click_relative-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.click_relative-expanded"><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
122 <a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> Send a mouse click relative to the active window</tt> </tt>
123 <a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
124 <a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{mouse.click_relative(x, y, button)}</tt> </tt>
125 <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
126 <a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> @param x: x-coordinate in pixels, relative to upper left corner of window</tt> </tt>
127 <a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> @param y: y-coordinate in pixels, relative to upper left corner of window</tt> </tt>
128 <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> @param button: mouse button to simulate (left=1, middle=2, right=3)</tt> </tt>
129 <a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
130 <a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">send_mouse_click</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">button</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
131 </div><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt>
132 <a name="Mouse.click_absolute"></a><div id="Mouse.click_absolute-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="Mouse.click_absolute-toggle" onclick="return toggle('Mouse.click_absolute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Mouse-class.html#click_absolute">click_absolute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x</tt><tt class="py-op">,</tt> <tt class="py-param">y</tt><tt class="py-op">,</tt> <tt class="py-param">button</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
133 </div><div id="Mouse.click_absolute-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.click_absolute-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
134 <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> Send a mouse click relative to the screen (absolute)</tt> </tt>
135 <a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
136 <a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{mouse.click_absolute(x, y, button)}</tt> </tt>
137 <a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
138 <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> @param x: x-coordinate in pixels, relative to upper left corner of window</tt> </tt>
139 <a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> @param y: y-coordinate in pixels, relative to upper left corner of window</tt> </tt>
140 <a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> @param button: mouse button to simulate (left=1, middle=2, right=3)</tt> </tt>
141 <a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
142 <a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">send_mouse_click</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">button</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
143 </div></div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
144 <a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt>
145 <a name="Store"></a><div id="Store-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="Store-toggle" onclick="return toggle('Store');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Store-class.html">Store</a><tt class="py-op">(</tt><tt class="py-base-class">dict</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
146 </div><div id="Store-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Store-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
147 <a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> Allows persistent storage of values between invocations of the script.</tt> </tt>
148 <a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
149 <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> </tt>
150 <a name="Store.set_value"></a><div id="Store.set_value-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="Store.set_value-toggle" onclick="return toggle('Store.set_value');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Store-class.html#set_value">set_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
151 </div><div id="Store.set_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.set_value-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
152 <a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> Store a value</tt> </tt>
153 <a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
154 <a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{store.set_value(key, value)}</tt> </tt>
155 <a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
156 <a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
157 </div><a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt>
158 <a name="Store.get_value"></a><div id="Store.get_value-def"><a name="L101"></a><tt class="py-lineno">101</tt> <a class="py-toggle" href="#" id="Store.get_value-toggle" onclick="return toggle('Store.get_value');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Store-class.html#get_value">get_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
159 </div><div id="Store.get_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.get_value-expanded"><a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
160 <a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> Get a value</tt> </tt>
161 <a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
162 <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{store.get_value(key)}</tt> </tt>
163 <a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
164 <a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
165 </div><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
166 <a name="Store.remove_value"></a><div id="Store.remove_value-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="Store.remove_value-toggle" onclick="return toggle('Store.remove_value');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Store-class.html#remove_value">remove_value</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
167 </div><div id="Store.remove_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.remove_value-expanded"><a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
168 <a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> Remove a value</tt> </tt>
169 <a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
170 <a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{store.remove_value(key)}</tt> </tt>
171 <a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
172 <a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
173 </div></div><a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> </tt>
174 <a name="Dialog"></a><div id="Dialog-def"><a name="L117"></a><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="Dialog-toggle" onclick="return toggle('Dialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html">Dialog</a><tt class="py-op">:</tt> </tt>
175 </div><div id="Dialog-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Dialog-expanded"><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
176 <a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> Provides a simple interface for the display of some basic dialogs to collect information from the user.</tt> </tt>
177 <a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
178 <a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> </tt>
179 <a name="Dialog.__runKdialog"></a><div id="Dialog.__runKdialog-def"><a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="Dialog.__runKdialog-toggle" onclick="return toggle('Dialog.__runKdialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#__runKdialog">__runKdialog</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
180 </div><div id="Dialog.__runKdialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.__runKdialog-expanded"><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"kdialog"</tt><tt class="py-op">,</tt> <tt class="py-string">"--title"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">PIPE</tt><tt class="py-op">)</tt> </tt>
181 <a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">retCode</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
182 <a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-comment"># Drop trailing newline</tt> </tt>
183 <a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> </tt>
184 <a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt><tt class="py-op">)</tt> </tt>
185 </div><a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt>
186 <a name="Dialog.input_dialog"></a><div id="Dialog.input_dialog-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="Dialog.input_dialog-toggle" onclick="return toggle('Dialog.input_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#input_dialog">input_dialog</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Enter a value"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Enter a value"</tt><tt class="py-op">,</tt> <tt class="py-param">default</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
187 </div><div id="Dialog.input_dialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.input_dialog-expanded"><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
188 <a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> Show an input dialog</tt> </tt>
189 <a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
190 <a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.input_dialog(title="Enter a value", message="Enter a value", default="")}</tt> </tt>
191 <a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
192 <a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
193 <a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the input box</tt> </tt>
194 <a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value for the input box</tt> </tt>
195 <a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
196 <a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Method lib.scripting.Dialog.__runKdialog()=lib.scripting.Dialog-class.html#__runKdialog"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-1', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--inputbox"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
197 </div><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> </tt>
198 <a name="Dialog.password_dialog"></a><div id="Dialog.password_dialog-def"><a name="L141"></a><tt class="py-lineno">141</tt> <a class="py-toggle" href="#" id="Dialog.password_dialog-toggle" onclick="return toggle('Dialog.password_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#password_dialog">password_dialog</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Enter password"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Enter password"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
199 </div><div id="Dialog.password_dialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.password_dialog-expanded"><a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
200 <a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> Show a password input dialog</tt> </tt>
201 <a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
202 <a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.password_dialog(title="Enter password", message="Enter password")}</tt> </tt>
203 <a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
204 <a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
205 <a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the password input box</tt> </tt>
206 <a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
207 <a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-2', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--password"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
208 </div><a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt>
209 <a name="Dialog.combo_menu"></a><div id="Dialog.combo_menu-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="Dialog.combo_menu-toggle" onclick="return toggle('Dialog.combo_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#combo_menu">combo_menu</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Choose an option"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Choose an option"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
210 </div><div id="Dialog.combo_menu-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.combo_menu-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
211 <a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> Show a combobox menu</tt> </tt>
212 <a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
213 <a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.combo_menu(options, title="Choose an option", message="Choose an option")}</tt> </tt>
214 <a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
215 <a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
216 <a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
217 <a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the combobox </tt> </tt>
218 <a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
219 <a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-3', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--combobox"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">options</tt><tt class="py-op">)</tt> </tt>
220 </div><a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> </tt>
221 <a name="Dialog.list_menu"></a><div id="Dialog.list_menu-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="Dialog.list_menu-toggle" onclick="return toggle('Dialog.list_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#list_menu">list_menu</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Choose a value"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Choose a value"</tt><tt class="py-op">,</tt> <tt class="py-param">default</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
222 </div><div id="Dialog.list_menu-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.list_menu-expanded"><a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
223 <a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> Show a single-selection list menu</tt> </tt>
224 <a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
225 <a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.list_menu(options, title="Choose a value", message="Choose a value", default=None)}</tt> </tt>
226 <a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
227 <a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
228 <a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
229 <a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
230 <a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value to be selected</tt> </tt>
231 <a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
232 <a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> </tt>
233 <a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">choices</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
234 <a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
235 <a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">option</tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">:</tt> </tt>
236 <a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">optionNum</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
237 <a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">option</tt><tt class="py-op">)</tt> </tt>
238 <a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">option</tt> <tt class="py-op">==</tt> <tt class="py-name">default</tt><tt class="py-op">:</tt> </tt>
239 <a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"on"</tt><tt class="py-op">)</tt> </tt>
240 <a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
241 <a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"off"</tt><tt class="py-op">)</tt> </tt>
242 <a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
243 <a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> </tt>
244 <a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-4', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--radiolist"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">choices</tt><tt class="py-op">)</tt> </tt>
245 <a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">choice</tt> <tt class="py-op">=</tt> <tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
246 <a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> </tt>
247 <a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">choice</tt> </tt>
248 </div><a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> </tt>
249 <a name="Dialog.list_menu_multi"></a><div id="Dialog.list_menu_multi-def"><a name="L192"></a><tt class="py-lineno">192</tt> <a class="py-toggle" href="#" id="Dialog.list_menu_multi-toggle" onclick="return toggle('Dialog.list_menu_multi');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#list_menu_multi">list_menu_multi</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Choose one or more values"</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-string">"Choose one or more values"</tt><tt class="py-op">,</tt> <tt class="py-param">defaults</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
250 </div><div id="Dialog.list_menu_multi-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.list_menu_multi-expanded"><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
251 <a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"> Show a multiple-selection list menu</tt> </tt>
252 <a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
253 <a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.list_menu_multi(options, title="Choose one or more values", message="Choose one or more values", defaults=[])}</tt> </tt>
254 <a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
255 <a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
256 <a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
257 <a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
258 <a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-docstring"> @param defaults: list of default values to be selected</tt> </tt>
259 <a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
260 <a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt>
261 <a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">choices</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
262 <a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
263 <a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">option</tt> <tt class="py-keyword">in</tt> <tt class="py-name">options</tt><tt class="py-op">:</tt> </tt>
264 <a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">optionNum</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
265 <a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">option</tt><tt class="py-op">)</tt> </tt>
266 <a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">option</tt> <tt class="py-keyword">in</tt> <tt class="py-name">defaults</tt><tt class="py-op">:</tt> </tt>
267 <a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"on"</tt><tt class="py-op">)</tt> </tt>
268 <a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
269 <a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"off"</tt><tt class="py-op">)</tt> </tt>
270 <a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
271 <a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> </tt>
272 <a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-5', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--separate-output"</tt><tt class="py-op">,</tt> <tt class="py-string">"--checklist"</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">choices</tt><tt class="py-op">)</tt> </tt>
273273 <a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">results</tt> <tt class="py-op">=</tt> <tt class="py-name">output</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
274274 <a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> </tt>
275275 <a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">choices</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
276 <a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">choice</tt> <tt class="py-keyword">in</tt> <tt class="py-name">results</tt><tt class="py-op">:</tt> </tt>
277 <a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">choice</tt><tt class="py-op">)</tt> </tt>
276 <a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">index</tt> <tt class="py-keyword">in</tt> <tt class="py-name">results</tt><tt class="py-op">:</tt> </tt>
277 <a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">options</tt><tt class="py-op">[</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">index</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
278278 <a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> </tt>
279279 <a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">choices</tt> </tt>
280280 </div><a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> </tt>
281 <a name="Dialog.open_file"></a><div id="Dialog.open_file-def"><a name="L224"></a><tt class="py-lineno">224</tt> <a class="py-toggle" href="#" id="Dialog.open_file-toggle" onclick="return toggle('Dialog.open_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#open_file">open_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Open File"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
281 <a name="Dialog.open_file"></a><div id="Dialog.open_file-def"><a name="L224"></a><tt class="py-lineno">224</tt> <a class="py-toggle" href="#" id="Dialog.open_file-toggle" onclick="return toggle('Dialog.open_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#open_file">open_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Open File"</tt><tt class="py-op">,</tt> <tt class="py-param">initialDir</tt><tt class="py-op">=</tt><tt class="py-string">"~"</tt><tt class="py-op">,</tt> <tt class="py-param">fileTypes</tt><tt class="py-op">=</tt><tt class="py-string">"*|All Files"</tt><tt class="py-op">,</tt> <tt class="py-param">rememberAs</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
282282 </div><div id="Dialog.open_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.open_file-expanded"><a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
283283 <a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"><tt class="py-docstring"> Show an Open File dialog</tt> </tt>
284284 <a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
285 <a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.open_file(title="Open File")}</tt> </tt>
285 <a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.open_file(title="Open File", initialDir="~", fileTypes="*|All Files", rememberAs=None)}</tt> </tt>
286286 <a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
287287 <a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
288288 <a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> @param initialDir: starting directory for the file dialog</tt> </tt>
289 <a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
290 <a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-comment">#if rememberAs is not None:</tt> </tt>
291 <a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># return self.__runZenity(title, ["--getopenfilename", initialDir, fileTypes, ":" + rememberAs])</tt> </tt>
292 <a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#else:</tt> </tt>
293 <a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="lib.scripting.Dialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-5', '__runZenity', 'link-1');">__runZenity</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--file-selection"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
294 </div><a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> </tt>
295 <a name="Dialog.save_file"></a><div id="Dialog.save_file-def"><a name="L238"></a><tt class="py-lineno">238</tt> <a class="py-toggle" href="#" id="Dialog.save_file-toggle" onclick="return toggle('Dialog.save_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#save_file">save_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Save As"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
296 </div><div id="Dialog.save_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.save_file-expanded"><a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
297 <a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> Show a Save As dialog</tt> </tt>
298 <a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
299 <a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.save_file(title="Save As")}</tt> </tt>
289 <a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> @param fileTypes: file type filter expression</tt> </tt>
290 <a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> @param rememberAs: gives an ID to this file dialog, allowing it to open at the last used path next time</tt> </tt>
291 <a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
292 <a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">rememberAs</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
293 <a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-6', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--getopenfilename"</tt><tt class="py-op">,</tt> <tt class="py-name">initialDir</tt><tt class="py-op">,</tt> <tt class="py-name">fileTypes</tt><tt class="py-op">,</tt> <tt class="py-string">":"</tt> <tt class="py-op">+</tt> <tt class="py-name">rememberAs</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
294 <a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
295 <a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-7', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--getopenfilename"</tt><tt class="py-op">,</tt> <tt class="py-name">initialDir</tt><tt class="py-op">,</tt> <tt class="py-name">fileTypes</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
296 </div><a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> </tt>
297 <a name="Dialog.save_file"></a><div id="Dialog.save_file-def"><a name="L240"></a><tt class="py-lineno">240</tt> <a class="py-toggle" href="#" id="Dialog.save_file-toggle" onclick="return toggle('Dialog.save_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#save_file">save_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Save As"</tt><tt class="py-op">,</tt> <tt class="py-param">initialDir</tt><tt class="py-op">=</tt><tt class="py-string">"~"</tt><tt class="py-op">,</tt> <tt class="py-param">fileTypes</tt><tt class="py-op">=</tt><tt class="py-string">"*|All Files"</tt><tt class="py-op">,</tt> <tt class="py-param">rememberAs</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
298 </div><div id="Dialog.save_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.save_file-expanded"><a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
299 <a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> Show a Save As dialog</tt> </tt>
300300 <a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
301 <a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
302 <a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
303 <a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-comment">#if rememberAs is not None:</tt> </tt>
304 <a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># return self.__runZenity(title, ["--getsavefilename", initialDir, fileTypes, ":" + rememberAs])</tt> </tt>
305 <a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#else:</tt> </tt>
306 <a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="lib.scripting.Dialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-6', '__runZenity', 'link-1');">__runZenity</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--file-selection"</tt><tt class="py-op">,</tt> <tt class="py-string">"--save"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
307 </div><a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> </tt>
308 <a name="Dialog.choose_directory"></a><div id="Dialog.choose_directory-def"><a name="L251"></a><tt class="py-lineno">251</tt> <a class="py-toggle" href="#" id="Dialog.choose_directory-toggle" onclick="return toggle('Dialog.choose_directory');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#choose_directory">choose_directory</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Select Directory"</tt><tt class="py-op">,</tt> <tt class="py-param">initialDir</tt><tt class="py-op">=</tt><tt class="py-string">"~"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
309 </div><div id="Dialog.choose_directory-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.choose_directory-expanded"><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
310 <a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> Show a Directory Chooser dialog</tt> </tt>
311 <a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
312 <a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.choose_directory(title="Select Directory")}</tt> </tt>
313 <a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
314 <a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
315 <a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
316 <a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-comment">#if rememberAs is not None:</tt> </tt>
317 <a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment"># return self.__runZenity(title, ["--getexistingdirectory", initialDir, ":" + rememberAs])</tt> </tt>
318 <a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-comment">#else:</tt> </tt>
319 <a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="lib.scripting.Dialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-7', '__runZenity', 'link-1');">__runZenity</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--file-selection"</tt><tt class="py-op">,</tt> <tt class="py-string">"--directory"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
320 <a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> </tt>
321 <a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-comment">#def choose_colour(self, title="Select Colour"):</tt> </tt>
322 <a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-string">"""</tt> </tt>
323 <a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt class="py-string"> Show a Colour Chooser dialog - not supported by zenity</tt> </tt>
324 <a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
325 <a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-string"> Usage: C{dialog.choose_colour(title="Select Colour")}</tt> </tt>
326 <a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
327 <a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-string"> @param title: window title for the dialog</tt> </tt>
328 <a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt>
329 </div></div><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-comment">#return self.__runZenity(title, ["--getcolor"])</tt> </tt>
330 <a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
331 <a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> </tt>
332 <a name="System"></a><div id="System-def"><a name="L275"></a><tt class="py-lineno">275</tt> <a class="py-toggle" href="#" id="System-toggle" onclick="return toggle('System');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.System-class.html">System</a><tt class="py-op">:</tt> </tt>
333 </div><div id="System-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="System-expanded"><a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
334 <a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> Simplified access to some system commands.</tt> </tt>
335 <a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
336 <a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> </tt>
337 <a name="System.exec_command"></a><div id="System.exec_command-def"><a name="L280"></a><tt class="py-lineno">280</tt> <a class="py-toggle" href="#" id="System.exec_command-toggle" onclick="return toggle('System.exec_command');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.System-class.html#exec_command">exec_command</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">command</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
338 </div><div id="System.exec_command-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="System.exec_command-expanded"><a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
339 <a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"><tt class="py-docstring"> Execute a shell command</tt> </tt>
340 <a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
341 <a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{system.exec_command(command)}</tt> </tt>
342 <a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
343 <a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"><tt class="py-docstring"> @param command: command to be executed (including any arguments) - e.g. "ls -l"</tt> </tt>
344 <a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"><tt class="py-docstring"> @raises subprocess.CalledProcessError: if the command returns a non-zero exit code</tt> </tt>
345 <a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
346 <a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-name">command</tt><tt class="py-op">,</tt> <tt class="py-name">shell</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">PIPE</tt><tt class="py-op">)</tt> </tt>
347 <a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">retCode</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
348 <a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
349 <a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">retCode</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
350 <a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">CalledProcessError</tt><tt class="py-op">(</tt><tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt><tt class="py-op">)</tt> </tt>
351 <a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
352 <a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">output</tt> </tt>
353 </div><a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> </tt>
354 <a name="System.create_file"></a><div id="System.create_file-def"><a name="L297"></a><tt class="py-lineno">297</tt> <a class="py-toggle" href="#" id="System.create_file-toggle" onclick="return toggle('System.create_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.System-class.html#create_file">create_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fileName</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
355 </div><div id="System.create_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="System.create_file-expanded"><a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
356 <a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-docstring"> Create a file with contents</tt> </tt>
357 <a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
358 <a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{system.create_file(fileName, contents="")}</tt> </tt>
359 <a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
360 <a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt class="py-docstring"> @param fileName: full path to the file to be created</tt> </tt>
361 <a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: contents to insert into the file</tt> </tt>
362 <a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
363 <a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">fileName</tt><tt class="py-op">,</tt> <tt class="py-string">"w"</tt><tt class="py-op">)</tt> </tt>
364 <a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
365 <a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method lib.scripting.Window.close()=lib.scripting.Window-class.html#close"><a title="lib.scripting.Window.close" class="py-name" href="#" onclick="return doclink('link-8', 'close', 'link-8');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
366 </div></div><a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> </tt>
367 <a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt>
368 <a name="Clipboard"></a><div id="Clipboard-def"><a name="L311"></a><tt class="py-lineno">311</tt> <a class="py-toggle" href="#" id="Clipboard-toggle" onclick="return toggle('Clipboard');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html">Clipboard</a><tt class="py-op">:</tt> </tt>
369 </div><div id="Clipboard-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Clipboard-expanded"><a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
370 <a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"><tt class="py-docstring"> Read/write access to the X selection and clipboard</tt> </tt>
371 <a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
372 <a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> </tt>
373 <a name="Clipboard.__init__"></a><div id="Clipboard.__init__-def"><a name="L316"></a><tt class="py-lineno">316</tt> <a class="py-toggle" href="#" id="Clipboard.__init__-toggle" onclick="return toggle('Clipboard.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">app</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
374 </div><div id="Clipboard.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__init__-expanded"><a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clipBoard</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Class lib.scripting.Clipboard=lib.scripting.Clipboard-class.html"><a title="lib.scripting.Clipboard" class="py-name" href="#" onclick="return doclink('link-9', 'Clipboard', 'link-9');">Clipboard</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
375 <a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">selection</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="lib.scripting.Clipboard" class="py-name" href="#" onclick="return doclink('link-10', 'Clipboard', 'link-9');">Clipboard</a></tt><tt class="py-op">(</tt><tt class="py-name">selection</tt><tt class="py-op">=</tt><tt class="py-string">"PRIMARY"</tt><tt class="py-op">)</tt> </tt>
376 <a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">app</tt> <tt class="py-op">=</tt> <tt class="py-name">app</tt> </tt>
377 </div><a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> </tt>
378 <a name="Clipboard.fill_selection"></a><div id="Clipboard.fill_selection-def"><a name="L321"></a><tt class="py-lineno">321</tt> <a class="py-toggle" href="#" id="Clipboard.fill_selection-toggle" onclick="return toggle('Clipboard.fill_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#fill_selection">fill_selection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
379 </div><div id="Clipboard.fill_selection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.fill_selection-expanded"><a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
380 <a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the X selection</tt> </tt>
381 <a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
382 <a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_selection(contents)}</tt> </tt>
383 <a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
384 <a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
385 <a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
386 <a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-comment">#self.__execAsync(self.__fillSelection, contents)</tt> </tt>
387 <a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-comment"></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method lib.scripting.Clipboard.__fillSelection()=lib.scripting.Clipboard-class.html#__fillSelection"><a title="lib.scripting.Clipboard.__fillSelection" class="py-name" href="#" onclick="return doclink('link-11', '__fillSelection', 'link-11');">__fillSelection</a></tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
388 </div><a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> </tt>
389 <a name="Clipboard.__fillSelection"></a><div id="Clipboard.__fillSelection-def"><a name="L332"></a><tt class="py-lineno">332</tt> <a class="py-toggle" href="#" id="Clipboard.__fillSelection-toggle" onclick="return toggle('Clipboard.__fillSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__fillSelection">__fillSelection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
390 </div><div id="Clipboard.__fillSelection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__fillSelection-expanded"><a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">selection</tt><tt class="py-op">.</tt><tt class="py-name">set_text</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
391 </div><a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-comment">#self.sem.release()</tt> </tt>
392 <a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
393 <a name="Clipboard.get_selection"></a><div id="Clipboard.get_selection-def"><a name="L336"></a><tt class="py-lineno">336</tt> <a class="py-toggle" href="#" id="Clipboard.get_selection-toggle" onclick="return toggle('Clipboard.get_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#get_selection">get_selection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
394 </div><div id="Clipboard.get_selection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.get_selection-expanded"><a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
395 <a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the X selection</tt> </tt>
396 <a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
397 <a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_selection()}</tt> </tt>
398 <a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
399 <a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method lib.scripting.Clipboard.__execAsync()=lib.scripting.Clipboard-class.html#__execAsync"><a title="lib.scripting.Clipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-12', '__execAsync', 'link-12');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">selection</tt><tt class="py-op">.</tt><tt class="py-name">request_text</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method lib.scripting.Clipboard.__receive()=lib.scripting.Clipboard-class.html#__receive"><a title="lib.scripting.Clipboard.__receive" class="py-name" href="#" onclick="return doclink('link-13', '__receive', 'link-13');">__receive</a></tt><tt class="py-op">)</tt> </tt>
400 <a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt>
401 </div><a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> </tt>
402 <a name="Clipboard.__receive"></a><div id="Clipboard.__receive-def"><a name="L345"></a><tt class="py-lineno">345</tt> <a class="py-toggle" href="#" id="Clipboard.__receive-toggle" onclick="return toggle('Clipboard.__receive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__receive">__receive</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">,</tt> <tt class="py-param">text</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
403 </div><div id="Clipboard.__receive-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__receive-expanded"><a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">text</tt> </tt>
404 <a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
405 </div><a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> </tt>
406 <a name="Clipboard.fill_clipboard"></a><div id="Clipboard.fill_clipboard-def"><a name="L349"></a><tt class="py-lineno">349</tt> <a class="py-toggle" href="#" id="Clipboard.fill_clipboard-toggle" onclick="return toggle('Clipboard.fill_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#fill_clipboard">fill_clipboard</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
407 </div><div id="Clipboard.fill_clipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.fill_clipboard-expanded"><a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
408 <a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the clipboard</tt> </tt>
409 <a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
410 <a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_clipboard(contents)}</tt> </tt>
411 <a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
412 <a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
413 <a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
414 <a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method lib.scripting.Clipboard.__fillClipboard()=lib.scripting.Clipboard-class.html#__fillClipboard"><a title="lib.scripting.Clipboard.__fillClipboard" class="py-name" href="#" onclick="return doclink('link-14', '__fillClipboard', 'link-14');">__fillClipboard</a></tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
415 </div><a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> </tt>
416 <a name="Clipboard.__fillClipboard"></a><div id="Clipboard.__fillClipboard-def"><a name="L359"></a><tt class="py-lineno">359</tt> <a class="py-toggle" href="#" id="Clipboard.__fillClipboard-toggle" onclick="return toggle('Clipboard.__fillClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__fillClipboard">__fillClipboard</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
417 </div><div id="Clipboard.__fillClipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__fillClipboard-expanded"><a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clipBoard</tt><tt class="py-op">.</tt><tt class="py-name">set_text</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
418 </div><a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-comment">#self.sem.release() </tt> </tt>
419 <a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-comment"></tt> </tt>
420 <a name="Clipboard.get_clipboard"></a><div id="Clipboard.get_clipboard-def"><a name="L363"></a><tt class="py-lineno">363</tt> <a class="py-toggle" href="#" id="Clipboard.get_clipboard-toggle" onclick="return toggle('Clipboard.get_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#get_clipboard">get_clipboard</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
421 </div><div id="Clipboard.get_clipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.get_clipboard-expanded"><a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
422 <a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the clipboard</tt> </tt>
423 <a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
424 <a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_clipboard()}</tt> </tt>
425 <a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
426 <a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="lib.scripting.Clipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-15', '__execAsync', 'link-12');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clipBoard</tt><tt class="py-op">.</tt><tt class="py-name">request_text</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="lib.scripting.Clipboard.__receive" class="py-name" href="#" onclick="return doclink('link-16', '__receive', 'link-13');">__receive</a></tt><tt class="py-op">)</tt> </tt>
427 <a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt>
428 </div><a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> </tt>
429 <a name="Clipboard.__execAsync"></a><div id="Clipboard.__execAsync-def"><a name="L372"></a><tt class="py-lineno">372</tt> <a class="py-toggle" href="#" id="Clipboard.__execAsync-toggle" onclick="return toggle('Clipboard.__execAsync');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__execAsync">__execAsync</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
430 </div><div id="Clipboard.__execAsync-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__execAsync-expanded"><a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Semaphore</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
431 <a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
432 <a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
433 </div></div><a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> </tt>
434 <a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> </tt>
435 <a name="Window"></a><div id="Window-def"><a name="L378"></a><tt class="py-lineno">378</tt> <a class="py-toggle" href="#" id="Window-toggle" onclick="return toggle('Window');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Window-class.html">Window</a><tt class="py-op">:</tt> </tt>
436 </div><div id="Window-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Window-expanded"><a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
437 <a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"><tt class="py-docstring"> Basic window management using wmctrl</tt> </tt>
438 <a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
439 <a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"><tt class="py-docstring"> Note: in all cases where a window title is required (with the exception of wait_for_focus()), </tt> </tt>
440 <a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> two special values of window title are permitted:</tt> </tt>
441 <a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
442 <a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-docstring"> :ACTIVE: - select the currently active window</tt> </tt>
443 <a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"> :SELECT: - select the desired window by clicking on it</tt> </tt>
444 <a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
445 <a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> </tt>
446 <a name="Window.__init__"></a><div id="Window.__init__-def"><a name="L389"></a><tt class="py-lineno">389</tt> <a class="py-toggle" href="#" id="Window.__init__-toggle" onclick="return toggle('Window.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mediator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
447 </div><div id="Window.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.__init__-expanded"><a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt> <tt class="py-op">=</tt> <tt class="py-name">mediator</tt> </tt>
448 </div><a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> </tt>
449 <a name="Window.wait_for_focus"></a><div id="Window.wait_for_focus-def"><a name="L392"></a><tt class="py-lineno">392</tt> <a class="py-toggle" href="#" id="Window.wait_for_focus-toggle" onclick="return toggle('Window.wait_for_focus');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#wait_for_focus">wait_for_focus</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">timeOut</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
450 </div><div id="Window.wait_for_focus-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.wait_for_focus-expanded"><a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
451 <a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"><tt class="py-docstring"> Wait for window with the given title to have focus</tt> </tt>
452 <a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
453 <a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.wait_for_focus(title, timeOut=5)}</tt> </tt>
454 <a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
455 <a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> If the window becomes active, returns True. Otherwise, returns False if</tt> </tt>
456 <a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-docstring"> the window has not become active by the time the timeout has elapsed.</tt> </tt>
457 <a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
458 <a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"><tt class="py-docstring"> @param title: title to match against (as a regular expression)</tt> </tt>
459 <a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"><tt class="py-docstring"> @param timeOut: period (seconds) to wait before giving up</tt> </tt>
460 <a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
461 <a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">regex</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">)</tt> </tt>
462 <a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
463 <a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">waited</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">timeOut</tt><tt class="py-op">:</tt> </tt>
464 <a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">regex</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">interface</tt><tt class="py-op">.</tt><tt class="py-name">get_window_title</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
465 <a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
466 <a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">0.3</tt><tt class="py-op">)</tt> </tt>
467 <a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">+=</tt> <tt class="py-number">0.3</tt> </tt>
468 <a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> </tt>
469 <a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
470 </div><a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> </tt>
471 <a name="Window.wait_for_exist"></a><div id="Window.wait_for_exist-def"><a name="L414"></a><tt class="py-lineno">414</tt> <a class="py-toggle" href="#" id="Window.wait_for_exist-toggle" onclick="return toggle('Window.wait_for_exist');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#wait_for_exist">wait_for_exist</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">timeOut</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
472 </div><div id="Window.wait_for_exist-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.wait_for_exist-expanded"><a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
473 <a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"><tt class="py-docstring"> Wait for window with the given title to be created</tt> </tt>
474 <a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
475 <a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.wait_for_exist(title, timeOut=5)}</tt> </tt>
476 <a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
477 <a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"><tt class="py-docstring"> If the window is in existence, returns True. Otherwise, returns False if</tt> </tt>
478 <a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"><tt class="py-docstring"> the window has not been created by the time the timeout has elapsed.</tt> </tt>
479 <a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
480 <a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"><tt class="py-docstring"> @param title: title to match against (as a regular expression)</tt> </tt>
481 <a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"><tt class="py-docstring"> @param timeOut: period (seconds) to wait before giving up</tt> </tt>
482 <a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
483 <a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">regex</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">)</tt> </tt>
484 <a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
485 <a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">waited</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">timeOut</tt><tt class="py-op">:</tt> </tt>
486 <a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method lib.scripting.Window.__runWmctrl()=lib.scripting.Window-class.html#__runWmctrl"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-17', '__runWmctrl', 'link-17');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-l"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
487 <a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">output</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
488 <a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">regex</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">14</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
489 <a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
490 <a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> </tt>
491 <a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">0.3</tt><tt class="py-op">)</tt> </tt>
492 <a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">+=</tt> <tt class="py-number">0.3</tt> </tt>
493 <a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> </tt>
494 <a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
495 </div><a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> </tt>
496 <a name="Window.activate"></a><div id="Window.activate-def"><a name="L439"></a><tt class="py-lineno">439</tt> <a class="py-toggle" href="#" id="Window.activate-toggle" onclick="return toggle('Window.activate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#activate">activate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">switchDesktop</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
497 </div><div id="Window.activate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.activate-expanded"><a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
498 <a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"><tt class="py-docstring"> Activate the specified window, giving it input focus</tt> </tt>
499 <a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
500 <a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.activate(title, switchDesktop=False)}</tt> </tt>
501 <a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
502 <a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"><tt class="py-docstring"> If switchDesktop is False (default), the window will be moved to the current desktop</tt> </tt>
503 <a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"><tt class="py-docstring"> and activated. Otherwise, switch to the window's current desktop and activate it there.</tt> </tt>
504 <a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
505 <a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
506 <a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"><tt class="py-docstring"> @param switchDesktop: whether or not to switch to the window's current desktop</tt> </tt>
507 <a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
508 <a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">switchDesktop</tt><tt class="py-op">:</tt> </tt>
509 <a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"-a"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">]</tt> </tt>
510 <a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
511 <a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"-R"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">]</tt> </tt>
512 <a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-18', '__runWmctrl', 'link-17');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
513 </div><a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> </tt>
514 <a name="Window.close"></a><div id="Window.close-def"><a name="L457"></a><tt class="py-lineno">457</tt> <a class="py-toggle" href="#" id="Window.close-toggle" onclick="return toggle('Window.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
515 </div><div id="Window.close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.close-expanded"><a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
516 <a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"><tt class="py-docstring"> Close the specified window gracefully</tt> </tt>
517 <a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
518 <a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.close(title)}</tt> </tt>
519 <a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
520 <a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
521 <a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
522 <a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-19', '__runWmctrl', 'link-17');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-c"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
523 </div><a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> </tt>
524 <a name="Window.resize_move"></a><div id="Window.resize_move-def"><a name="L467"></a><tt class="py-lineno">467</tt> <a class="py-toggle" href="#" id="Window.resize_move-toggle" onclick="return toggle('Window.resize_move');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#resize_move">resize_move</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">xOrigin</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">yOrigin</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
525 </div><div id="Window.resize_move-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.resize_move-expanded"><a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
526 <a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"><tt class="py-docstring"> Resize and/or move the specified window</tt> </tt>
527 <a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
528 <a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.close(title, xOrigin=-1, yOrigin=-1, width=-1, height=-1)}</tt> </tt>
529 <a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
530 <a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"><tt class="py-docstring"> Leaving and of the position/dimension values as the default (-1) will cause that</tt> </tt>
531 <a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"><tt class="py-docstring"> value to be left unmodified.</tt> </tt>
532 <a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
533 <a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
534 <a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"><tt class="py-docstring"> @param xOrigin: new x origin of the window (upper left corner)</tt> </tt>
535 <a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"><tt class="py-docstring"> @param yOrigin: new y origin of the window (upper left corner)</tt> </tt>
536 <a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"><tt class="py-docstring"> @param width: new width of the window</tt> </tt>
537 <a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"><tt class="py-docstring"> @param height: new height of the window</tt> </tt>
538 <a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
539 <a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-name">mvArgs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"0"</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">xOrigin</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">yOrigin</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
540 <a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-20', '__runWmctrl', 'link-17');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-r"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-string">"-e"</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">mvArgs</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
541 </div><a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> </tt>
542 <a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> </tt>
543 <a name="Window.move_to_desktop"></a><div id="Window.move_to_desktop-def"><a name="L486"></a><tt class="py-lineno">486</tt> <a class="py-toggle" href="#" id="Window.move_to_desktop-toggle" onclick="return toggle('Window.move_to_desktop');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#move_to_desktop">move_to_desktop</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">deskNum</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
544 </div><div id="Window.move_to_desktop-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.move_to_desktop-expanded"><a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
545 <a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"><tt class="py-docstring"> Move the specified window to the given desktop</tt> </tt>
546 <a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
547 <a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.move_to_desktop(title, deskNum)}</tt> </tt>
548 <a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
549 <a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
550 <a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"><tt class="py-docstring"> @param deskNum: desktop to move the window to (note: zero based)</tt> </tt>
551 <a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
552 <a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-21', '__runWmctrl', 'link-17');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-r"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-string">"-t"</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">deskNum</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
553 </div><a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> </tt>
554 <a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> </tt>
555 <a name="Window.switch_desktop"></a><div id="Window.switch_desktop-def"><a name="L498"></a><tt class="py-lineno">498</tt> <a class="py-toggle" href="#" id="Window.switch_desktop-toggle" onclick="return toggle('Window.switch_desktop');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#switch_desktop">switch_desktop</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">deskNum</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
556 </div><div id="Window.switch_desktop-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.switch_desktop-expanded"><a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
557 <a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"><tt class="py-docstring"> Switch to the specified desktop</tt> </tt>
558 <a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
559 <a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.switch_desktop(deskNum)}</tt> </tt>
560 <a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
561 <a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"><tt class="py-docstring"> @param deskNum: desktop to switch to (note: zero based)</tt> </tt>
562 <a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
563 <a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-22', '__runWmctrl', 'link-17');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-s"</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">deskNum</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
564 </div><a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> </tt>
565 <a name="Window.set_property"></a><div id="Window.set_property-def"><a name="L508"></a><tt class="py-lineno">508</tt> <a class="py-toggle" href="#" id="Window.set_property-toggle" onclick="return toggle('Window.set_property');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#set_property">set_property</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">action</tt><tt class="py-op">,</tt> <tt class="py-param">prop</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
566 </div><div id="Window.set_property-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.set_property-expanded"><a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
567 <a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"><tt class="py-docstring"> Set a property on the given window using the specified action</tt> </tt>
568 <a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
569 <a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.set_property(title, title, action, prop)}</tt> </tt>
570 <a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
571 <a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"><tt class="py-docstring"> Allowable actions: C{add, remove, toggle}</tt> </tt>
572 <a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"><tt class="py-docstring"> Allowable properties: C{modal, sticky, maximized_vert, maximized_horz, shaded, skip_taskbar,</tt> </tt>
573 <a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"><tt class="py-docstring"> skip_pager, hidden, fullscreen, above}</tt> </tt>
574 <a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
575 <a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
576 <a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"><tt class="py-docstring"> @param action: one of the actions listed above</tt> </tt>
577 <a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"><tt class="py-docstring"> @param prop: one of the properties listed above</tt> </tt>
578 <a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
579 <a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-23', '__runWmctrl', 'link-17');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-r"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-string">"-b"</tt> <tt class="py-op">+</tt> <tt class="py-name">action</tt> <tt class="py-op">+</tt> <tt class="py-string">','</tt> <tt class="py-op">+</tt> <tt class="py-name">prop</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
580 </div><a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> </tt>
581 <a name="Window.__runWmctrl"></a><div id="Window.__runWmctrl-def"><a name="L524"></a><tt class="py-lineno">524</tt> <a class="py-toggle" href="#" id="Window.__runWmctrl-toggle" onclick="return toggle('Window.__runWmctrl');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#__runWmctrl">__runWmctrl</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
582 </div><div id="Window.__runWmctrl-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.__runWmctrl-expanded"><a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"wmctrl"</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">PIPE</tt><tt class="py-op">)</tt> </tt>
583 <a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-name">retCode</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
584 <a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-comment"># Drop trailing newline</tt> </tt>
585 <a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> </tt>
586 <a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt><tt class="py-op">)</tt> </tt>
587 </div></div><a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> </tt><script type="text/javascript">
301 <a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.save_file(title="Save As", initialDir="~", fileTypes="*|All Files", rememberAs=None)}</tt> </tt>
302 <a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
303 <a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
304 <a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"> @param initialDir: starting directory for the file dialog</tt> </tt>
305 <a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-docstring"> @param fileTypes: file type filter expression</tt> </tt>
306 <a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-docstring"> @param rememberAs: gives an ID to this file dialog, allowing it to open at the last used path next time</tt> </tt>
307 <a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
308 <a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">rememberAs</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
309 <a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-8', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--getsavefilename"</tt><tt class="py-op">,</tt> <tt class="py-name">initialDir</tt><tt class="py-op">,</tt> <tt class="py-name">fileTypes</tt><tt class="py-op">,</tt> <tt class="py-string">":"</tt> <tt class="py-op">+</tt> <tt class="py-name">rememberAs</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
310 <a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
311 <a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-9', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--getsavefilename"</tt><tt class="py-op">,</tt> <tt class="py-name">initialDir</tt><tt class="py-op">,</tt> <tt class="py-name">fileTypes</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
312 </div><a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt>
313 <a name="Dialog.choose_directory"></a><div id="Dialog.choose_directory-def"><a name="L256"></a><tt class="py-lineno">256</tt> <a class="py-toggle" href="#" id="Dialog.choose_directory-toggle" onclick="return toggle('Dialog.choose_directory');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#choose_directory">choose_directory</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Select Directory"</tt><tt class="py-op">,</tt> <tt class="py-param">initialDir</tt><tt class="py-op">=</tt><tt class="py-string">"~"</tt><tt class="py-op">,</tt> <tt class="py-param">rememberAs</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
314 </div><div id="Dialog.choose_directory-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.choose_directory-expanded"><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
315 <a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> Show a Directory Chooser dialog</tt> </tt>
316 <a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
317 <a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.choose_directory(title="Select Directory", initialDir="~", rememberAs=None)}</tt> </tt>
318 <a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
319 <a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
320 <a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> @param initialDir: starting directory for the directory chooser dialog</tt> </tt>
321 <a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> @param rememberAs: gives an ID to this file dialog, allowing it to open at the last used path next time</tt> </tt>
322 <a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
323 <a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">rememberAs</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
324 <a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-10', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--getexistingdirectory"</tt><tt class="py-op">,</tt> <tt class="py-name">initialDir</tt><tt class="py-op">,</tt> <tt class="py-string">":"</tt> <tt class="py-op">+</tt> <tt class="py-name">rememberAs</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
325 <a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
326 <a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-11', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--getexistingdirectory"</tt><tt class="py-op">,</tt> <tt class="py-name">initialDir</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
327 </div><a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> </tt>
328 <a name="Dialog.choose_colour"></a><div id="Dialog.choose_colour-def"><a name="L271"></a><tt class="py-lineno">271</tt> <a class="py-toggle" href="#" id="Dialog.choose_colour-toggle" onclick="return toggle('Dialog.choose_colour');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Dialog-class.html#choose_colour">choose_colour</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Select Colour"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
329 </div><div id="Dialog.choose_colour-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Dialog.choose_colour-expanded"><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
330 <a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> Show a Colour Chooser dialog</tt> </tt>
331 <a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
332 <a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.choose_colour(title="Select Colour")}</tt> </tt>
333 <a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
334 <a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
335 <a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
336 <a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="lib.scripting.Dialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-12', '__runKdialog', 'link-1');">__runKdialog</a></tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">"--getcolor"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
337 </div></div><a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> </tt>
338 <a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> </tt>
339 <a name="System"></a><div id="System-def"><a name="L282"></a><tt class="py-lineno">282</tt> <a class="py-toggle" href="#" id="System-toggle" onclick="return toggle('System');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.System-class.html">System</a><tt class="py-op">:</tt> </tt>
340 </div><div id="System-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="System-expanded"><a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
341 <a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"><tt class="py-docstring"> Simplified access to some system commands.</tt> </tt>
342 <a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
343 <a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt>
344 <a name="System.exec_command"></a><div id="System.exec_command-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="System.exec_command-toggle" onclick="return toggle('System.exec_command');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.System-class.html#exec_command">exec_command</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">command</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
345 </div><div id="System.exec_command-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="System.exec_command-expanded"><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
346 <a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"><tt class="py-docstring"> Execute a shell command</tt> </tt>
347 <a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
348 <a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{system.exec_command(command)}</tt> </tt>
349 <a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
350 <a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> @param command: command to be executed (including any arguments) - e.g. "ls -l"</tt> </tt>
351 <a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"> @raises subprocess.CalledProcessError: if the command returns a non-zero exit code</tt> </tt>
352 <a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
353 <a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-name">command</tt><tt class="py-op">,</tt> <tt class="py-name">shell</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">bufsize</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">PIPE</tt><tt class="py-op">)</tt> </tt>
354 <a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-name">retCode</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
355 <a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
356 <a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">retCode</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
357 <a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">CalledProcessError</tt><tt class="py-op">(</tt><tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt><tt class="py-op">)</tt> </tt>
358 <a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
359 <a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">output</tt> </tt>
360 </div><a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> </tt>
361 <a name="System.create_file"></a><div id="System.create_file-def"><a name="L304"></a><tt class="py-lineno">304</tt> <a class="py-toggle" href="#" id="System.create_file-toggle" onclick="return toggle('System.create_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.System-class.html#create_file">create_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fileName</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
362 </div><div id="System.create_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="System.create_file-expanded"><a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
363 <a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"><tt class="py-docstring"> Create a file with contents</tt> </tt>
364 <a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
365 <a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{system.create_file(fileName, contents="")}</tt> </tt>
366 <a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
367 <a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"><tt class="py-docstring"> @param fileName: full path to the file to be created</tt> </tt>
368 <a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: contents to insert into the file</tt> </tt>
369 <a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
370 <a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">fileName</tt><tt class="py-op">,</tt> <tt class="py-string">"w"</tt><tt class="py-op">)</tt> </tt>
371 <a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
372 <a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method lib.scripting.Window.close()=lib.scripting.Window-class.html#close"><a title="lib.scripting.Window.close" class="py-name" href="#" onclick="return doclink('link-13', 'close', 'link-13');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
373 </div></div><a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> </tt>
374 <a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> </tt>
375 <a name="Clipboard"></a><div id="Clipboard-def"><a name="L318"></a><tt class="py-lineno">318</tt> <a class="py-toggle" href="#" id="Clipboard-toggle" onclick="return toggle('Clipboard');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html">Clipboard</a><tt class="py-op">:</tt> </tt>
376 </div><div id="Clipboard-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Clipboard-expanded"><a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
377 <a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> Read/write access to the X selection and clipboard</tt> </tt>
378 <a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
379 <a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> </tt>
380 <a name="Clipboard.__init__"></a><div id="Clipboard.__init__-def"><a name="L323"></a><tt class="py-lineno">323</tt> <a class="py-toggle" href="#" id="Clipboard.__init__-toggle" onclick="return toggle('Clipboard.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">app</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
381 </div><div id="Clipboard.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__init__-expanded"><a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clipBoard</tt> <tt class="py-op">=</tt> <tt class="py-name">QApplication</tt><tt class="py-op">.</tt><tt class="py-name">clipboard</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
382 <a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">app</tt> <tt class="py-op">=</tt> <tt class="py-name">app</tt> </tt>
383 </div><a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> </tt>
384 <a name="Clipboard.fill_selection"></a><div id="Clipboard.fill_selection-def"><a name="L327"></a><tt class="py-lineno">327</tt> <a class="py-toggle" href="#" id="Clipboard.fill_selection-toggle" onclick="return toggle('Clipboard.fill_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#fill_selection">fill_selection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
385 </div><div id="Clipboard.fill_selection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.fill_selection-expanded"><a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
386 <a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the X selection</tt> </tt>
387 <a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
388 <a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_selection(contents)}</tt> </tt>
389 <a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
390 <a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
391 <a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
392 <a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method lib.scripting.Clipboard.__execAsync()=lib.scripting.Clipboard-class.html#__execAsync"><a title="lib.scripting.Clipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-14', '__execAsync', 'link-14');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method lib.scripting.Clipboard.__fillSelection()=lib.scripting.Clipboard-class.html#__fillSelection"><a title="lib.scripting.Clipboard.__fillSelection" class="py-name" href="#" onclick="return doclink('link-15', '__fillSelection', 'link-15');">__fillSelection</a></tt><tt class="py-op">,</tt> <tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
393 </div><a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> </tt>
394 <a name="Clipboard.__fillSelection"></a><div id="Clipboard.__fillSelection-def"><a name="L337"></a><tt class="py-lineno">337</tt> <a class="py-toggle" href="#" id="Clipboard.__fillSelection-toggle" onclick="return toggle('Clipboard.__fillSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__fillSelection">__fillSelection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
395 </div><div id="Clipboard.__fillSelection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__fillSelection-expanded"><a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clipBoard</tt><tt class="py-op">.</tt><tt class="py-name">setText</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">,</tt> <tt class="py-name">QClipboard</tt><tt class="py-op">.</tt><tt class="py-name">Selection</tt><tt class="py-op">)</tt> </tt>
396 <a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
397 </div><a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt>
398 <a name="Clipboard.get_selection"></a><div id="Clipboard.get_selection-def"><a name="L341"></a><tt class="py-lineno">341</tt> <a class="py-toggle" href="#" id="Clipboard.get_selection-toggle" onclick="return toggle('Clipboard.get_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#get_selection">get_selection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
399 </div><div id="Clipboard.get_selection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.get_selection-expanded"><a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
400 <a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the X selection</tt> </tt>
401 <a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
402 <a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_selection()}</tt> </tt>
403 <a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
404 <a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="lib.scripting.Clipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-16', '__execAsync', 'link-14');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method lib.scripting.Clipboard.__getSelection()=lib.scripting.Clipboard-class.html#__getSelection"><a title="lib.scripting.Clipboard.__getSelection" class="py-name" href="#" onclick="return doclink('link-17', '__getSelection', 'link-17');">__getSelection</a></tt><tt class="py-op">)</tt> </tt>
405 <a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
406 </div><a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> </tt>
407 <a name="Clipboard.__getSelection"></a><div id="Clipboard.__getSelection-def"><a name="L350"></a><tt class="py-lineno">350</tt> <a class="py-toggle" href="#" id="Clipboard.__getSelection-toggle" onclick="return toggle('Clipboard.__getSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__getSelection">__getSelection</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
408 </div><div id="Clipboard.__getSelection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__getSelection-expanded"><a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clipBoard</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">(</tt><tt class="py-name">QClipboard</tt><tt class="py-op">.</tt><tt class="py-name">Selection</tt><tt class="py-op">)</tt> </tt>
409 <a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
410 </div><a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> </tt>
411 <a name="Clipboard.fill_clipboard"></a><div id="Clipboard.fill_clipboard-def"><a name="L354"></a><tt class="py-lineno">354</tt> <a class="py-toggle" href="#" id="Clipboard.fill_clipboard-toggle" onclick="return toggle('Clipboard.fill_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#fill_clipboard">fill_clipboard</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
412 </div><div id="Clipboard.fill_clipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.fill_clipboard-expanded"><a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
413 <a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the clipboard</tt> </tt>
414 <a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
415 <a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_clipboard(contents)}</tt> </tt>
416 <a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
417 <a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
418 <a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
419 <a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="lib.scripting.Clipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-18', '__execAsync', 'link-14');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method lib.scripting.Clipboard.__fillClipboard()=lib.scripting.Clipboard-class.html#__fillClipboard"><a title="lib.scripting.Clipboard.__fillClipboard" class="py-name" href="#" onclick="return doclink('link-19', '__fillClipboard', 'link-19');">__fillClipboard</a></tt><tt class="py-op">,</tt> <tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
420 </div><a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> </tt>
421 <a name="Clipboard.__fillClipboard"></a><div id="Clipboard.__fillClipboard-def"><a name="L364"></a><tt class="py-lineno">364</tt> <a class="py-toggle" href="#" id="Clipboard.__fillClipboard-toggle" onclick="return toggle('Clipboard.__fillClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__fillClipboard">__fillClipboard</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
422 </div><div id="Clipboard.__fillClipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__fillClipboard-expanded"><a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clipBoard</tt><tt class="py-op">.</tt><tt class="py-name">setText</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">,</tt> <tt class="py-name">QClipboard</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Class lib.scripting.Clipboard=lib.scripting.Clipboard-class.html"><a title="lib.scripting.Clipboard" class="py-name" href="#" onclick="return doclink('link-20', 'Clipboard', 'link-20');">Clipboard</a></tt><tt class="py-op">)</tt> </tt>
423 <a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
424 </div><a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> </tt>
425 <a name="Clipboard.get_clipboard"></a><div id="Clipboard.get_clipboard-def"><a name="L368"></a><tt class="py-lineno">368</tt> <a class="py-toggle" href="#" id="Clipboard.get_clipboard-toggle" onclick="return toggle('Clipboard.get_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#get_clipboard">get_clipboard</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
426 </div><div id="Clipboard.get_clipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.get_clipboard-expanded"><a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
427 <a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the clipboard</tt> </tt>
428 <a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
429 <a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_clipboard()}</tt> </tt>
430 <a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
431 <a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="lib.scripting.Clipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-21', '__execAsync', 'link-14');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method lib.scripting.Clipboard.__getClipboard()=lib.scripting.Clipboard-class.html#__getClipboard"><a title="lib.scripting.Clipboard.__getClipboard" class="py-name" href="#" onclick="return doclink('link-22', '__getClipboard', 'link-22');">__getClipboard</a></tt><tt class="py-op">)</tt> </tt>
432 <a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
433 </div><a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> </tt>
434 <a name="Clipboard.__getClipboard"></a><div id="Clipboard.__getClipboard-def"><a name="L377"></a><tt class="py-lineno">377</tt> <a class="py-toggle" href="#" id="Clipboard.__getClipboard-toggle" onclick="return toggle('Clipboard.__getClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__getClipboard">__getClipboard</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
435 </div><div id="Clipboard.__getClipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__getClipboard-expanded"><a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clipBoard</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">(</tt><tt class="py-name">QClipboard</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="lib.scripting.Clipboard" class="py-name" href="#" onclick="return doclink('link-23', 'Clipboard', 'link-20');">Clipboard</a></tt><tt class="py-op">)</tt> </tt>
436 <a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
437 </div><a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> </tt>
438 <a name="Clipboard.__execAsync"></a><div id="Clipboard.__execAsync-def"><a name="L381"></a><tt class="py-lineno">381</tt> <a class="py-toggle" href="#" id="Clipboard.__execAsync-toggle" onclick="return toggle('Clipboard.__execAsync');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Clipboard-class.html#__execAsync">__execAsync</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
439 </div><div id="Clipboard.__execAsync-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Clipboard.__execAsync-expanded"><a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Semaphore</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
440 <a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">app</tt><tt class="py-op">.</tt><tt class="py-name">exec_in_main</tt><tt class="py-op">(</tt><tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
441 <a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sem</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
442 </div></div><a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> </tt>
443 <a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> </tt>
444 <a name="Window"></a><div id="Window-def"><a name="L387"></a><tt class="py-lineno">387</tt> <a class="py-toggle" href="#" id="Window-toggle" onclick="return toggle('Window');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Window-class.html">Window</a><tt class="py-op">:</tt> </tt>
445 </div><div id="Window-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Window-expanded"><a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
446 <a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"><tt class="py-docstring"> Basic window management using wmctrl</tt> </tt>
447 <a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
448 <a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"><tt class="py-docstring"> Note: in all cases where a window title is required (with the exception of wait_for_focus()), </tt> </tt>
449 <a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"><tt class="py-docstring"> two special values of window title are permitted:</tt> </tt>
450 <a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
451 <a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"><tt class="py-docstring"> :ACTIVE: - select the currently active window</tt> </tt>
452 <a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-docstring"> :SELECT: - select the desired window by clicking on it</tt> </tt>
453 <a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
454 <a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> </tt>
455 <a name="Window.__init__"></a><div id="Window.__init__-def"><a name="L398"></a><tt class="py-lineno">398</tt> <a class="py-toggle" href="#" id="Window.__init__-toggle" onclick="return toggle('Window.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mediator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
456 </div><div id="Window.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.__init__-expanded"><a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt> <tt class="py-op">=</tt> <tt class="py-name">mediator</tt> </tt>
457 </div><a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> </tt>
458 <a name="Window.wait_for_focus"></a><div id="Window.wait_for_focus-def"><a name="L401"></a><tt class="py-lineno">401</tt> <a class="py-toggle" href="#" id="Window.wait_for_focus-toggle" onclick="return toggle('Window.wait_for_focus');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#wait_for_focus">wait_for_focus</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">timeOut</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
459 </div><div id="Window.wait_for_focus-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.wait_for_focus-expanded"><a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
460 <a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"><tt class="py-docstring"> Wait for window with the given title to have focus</tt> </tt>
461 <a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
462 <a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.wait_for_focus(title, timeOut=5)}</tt> </tt>
463 <a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
464 <a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"><tt class="py-docstring"> If the window becomes active, returns True. Otherwise, returns False if</tt> </tt>
465 <a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-docstring"> the window has not become active by the time the timeout has elapsed.</tt> </tt>
466 <a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
467 <a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"><tt class="py-docstring"> @param title: title to match against (as a regular expression)</tt> </tt>
468 <a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"><tt class="py-docstring"> @param timeOut: period (seconds) to wait before giving up</tt> </tt>
469 <a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
470 <a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">regex</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">)</tt> </tt>
471 <a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
472 <a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">waited</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">timeOut</tt><tt class="py-op">:</tt> </tt>
473 <a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">regex</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">interface</tt><tt class="py-op">.</tt><tt class="py-name">get_window_title</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
474 <a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
475 <a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">0.3</tt><tt class="py-op">)</tt> </tt>
476 <a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">+=</tt> <tt class="py-number">0.3</tt> </tt>
477 <a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> </tt>
478 <a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
479 </div><a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> </tt>
480 <a name="Window.wait_for_exist"></a><div id="Window.wait_for_exist-def"><a name="L423"></a><tt class="py-lineno">423</tt> <a class="py-toggle" href="#" id="Window.wait_for_exist-toggle" onclick="return toggle('Window.wait_for_exist');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#wait_for_exist">wait_for_exist</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">timeOut</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
481 </div><div id="Window.wait_for_exist-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.wait_for_exist-expanded"><a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
482 <a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"><tt class="py-docstring"> Wait for window with the given title to be created</tt> </tt>
483 <a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
484 <a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.wait_for_exist(title, timeOut=5)}</tt> </tt>
485 <a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
486 <a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"><tt class="py-docstring"> If the window is in existence, returns True. Otherwise, returns False if</tt> </tt>
487 <a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"><tt class="py-docstring"> the window has not been created by the time the timeout has elapsed.</tt> </tt>
488 <a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
489 <a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"><tt class="py-docstring"> @param title: title to match against (as a regular expression)</tt> </tt>
490 <a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"><tt class="py-docstring"> @param timeOut: period (seconds) to wait before giving up</tt> </tt>
491 <a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
492 <a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">regex</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">title</tt><tt class="py-op">)</tt> </tt>
493 <a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
494 <a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">waited</tt> <tt class="py-op">&lt;</tt> <tt class="py-name">timeOut</tt><tt class="py-op">:</tt> </tt>
495 <a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method lib.scripting.Window.__runWmctrl()=lib.scripting.Window-class.html#__runWmctrl"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-24', '__runWmctrl', 'link-24');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-l"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
496 <a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">output</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
497 <a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">regex</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">14</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
498 <a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
499 <a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> </tt>
500 <a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">0.3</tt><tt class="py-op">)</tt> </tt>
501 <a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">+=</tt> <tt class="py-number">0.3</tt> </tt>
502 <a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> </tt>
503 <a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
504 </div><a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> </tt>
505 <a name="Window.activate"></a><div id="Window.activate-def"><a name="L448"></a><tt class="py-lineno">448</tt> <a class="py-toggle" href="#" id="Window.activate-toggle" onclick="return toggle('Window.activate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#activate">activate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">switchDesktop</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
506 </div><div id="Window.activate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.activate-expanded"><a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
507 <a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"><tt class="py-docstring"> Activate the specified window, giving it input focus</tt> </tt>
508 <a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
509 <a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.activate(title, switchDesktop=False)}</tt> </tt>
510 <a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
511 <a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"><tt class="py-docstring"> If switchDesktop is False (default), the window will be moved to the current desktop</tt> </tt>
512 <a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"><tt class="py-docstring"> and activated. Otherwise, switch to the window's current desktop and activate it there.</tt> </tt>
513 <a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
514 <a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
515 <a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"><tt class="py-docstring"> @param switchDesktop: whether or not to switch to the window's current desktop</tt> </tt>
516 <a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
517 <a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">switchDesktop</tt><tt class="py-op">:</tt> </tt>
518 <a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"-a"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">]</tt> </tt>
519 <a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
520 <a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"-R"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">]</tt> </tt>
521 <a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-25', '__runWmctrl', 'link-24');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
522 </div><a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> </tt>
523 <a name="Window.close"></a><div id="Window.close-def"><a name="L466"></a><tt class="py-lineno">466</tt> <a class="py-toggle" href="#" id="Window.close-toggle" onclick="return toggle('Window.close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
524 </div><div id="Window.close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.close-expanded"><a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
525 <a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"><tt class="py-docstring"> Close the specified window gracefully</tt> </tt>
526 <a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
527 <a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.close(title)}</tt> </tt>
528 <a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
529 <a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
530 <a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
531 <a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-26', '__runWmctrl', 'link-24');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-c"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
532 </div><a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> </tt>
533 <a name="Window.resize_move"></a><div id="Window.resize_move-def"><a name="L476"></a><tt class="py-lineno">476</tt> <a class="py-toggle" href="#" id="Window.resize_move-toggle" onclick="return toggle('Window.resize_move');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#resize_move">resize_move</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">xOrigin</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">yOrigin</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
534 </div><div id="Window.resize_move-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.resize_move-expanded"><a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
535 <a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"><tt class="py-docstring"> Resize and/or move the specified window</tt> </tt>
536 <a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
537 <a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.close(title, xOrigin=-1, yOrigin=-1, width=-1, height=-1)}</tt> </tt>
538 <a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
539 <a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"><tt class="py-docstring"> Leaving and of the position/dimension values as the default (-1) will cause that</tt> </tt>
540 <a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"><tt class="py-docstring"> value to be left unmodified.</tt> </tt>
541 <a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
542 <a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
543 <a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"><tt class="py-docstring"> @param xOrigin: new x origin of the window (upper left corner)</tt> </tt>
544 <a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"><tt class="py-docstring"> @param yOrigin: new y origin of the window (upper left corner)</tt> </tt>
545 <a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"><tt class="py-docstring"> @param width: new width of the window</tt> </tt>
546 <a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"><tt class="py-docstring"> @param height: new height of the window</tt> </tt>
547 <a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
548 <a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-name">mvArgs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"0"</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">xOrigin</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">yOrigin</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
549 <a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-27', '__runWmctrl', 'link-24');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-r"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-string">"-e"</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">mvArgs</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
550 </div><a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> </tt>
551 <a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> </tt>
552 <a name="Window.move_to_desktop"></a><div id="Window.move_to_desktop-def"><a name="L495"></a><tt class="py-lineno">495</tt> <a class="py-toggle" href="#" id="Window.move_to_desktop-toggle" onclick="return toggle('Window.move_to_desktop');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#move_to_desktop">move_to_desktop</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">deskNum</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
553 </div><div id="Window.move_to_desktop-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.move_to_desktop-expanded"><a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
554 <a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"><tt class="py-docstring"> Move the specified window to the given desktop</tt> </tt>
555 <a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
556 <a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.move_to_desktop(title, deskNum)}</tt> </tt>
557 <a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
558 <a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
559 <a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"><tt class="py-docstring"> @param deskNum: desktop to move the window to (note: zero based)</tt> </tt>
560 <a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
561 <a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-28', '__runWmctrl', 'link-24');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-r"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-string">"-t"</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">deskNum</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
562 </div><a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> </tt>
563 <a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> </tt>
564 <a name="Window.switch_desktop"></a><div id="Window.switch_desktop-def"><a name="L507"></a><tt class="py-lineno">507</tt> <a class="py-toggle" href="#" id="Window.switch_desktop-toggle" onclick="return toggle('Window.switch_desktop');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#switch_desktop">switch_desktop</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">deskNum</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
565 </div><div id="Window.switch_desktop-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.switch_desktop-expanded"><a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
566 <a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"><tt class="py-docstring"> Switch to the specified desktop</tt> </tt>
567 <a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
568 <a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.switch_desktop(deskNum)}</tt> </tt>
569 <a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
570 <a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"><tt class="py-docstring"> @param deskNum: desktop to switch to (note: zero based)</tt> </tt>
571 <a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
572 <a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-29', '__runWmctrl', 'link-24');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-s"</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">deskNum</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
573 </div><a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> </tt>
574 <a name="Window.set_property"></a><div id="Window.set_property-def"><a name="L517"></a><tt class="py-lineno">517</tt> <a class="py-toggle" href="#" id="Window.set_property-toggle" onclick="return toggle('Window.set_property');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#set_property">set_property</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">,</tt> <tt class="py-param">action</tt><tt class="py-op">,</tt> <tt class="py-param">prop</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
575 </div><div id="Window.set_property-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.set_property-expanded"><a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
576 <a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"><tt class="py-docstring"> Set a property on the given window using the specified action</tt> </tt>
577 <a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
578 <a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.set_property(title, title, action, prop)}</tt> </tt>
579 <a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
580 <a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"><tt class="py-docstring"> Allowable actions: C{add, remove, toggle}</tt> </tt>
581 <a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"><tt class="py-docstring"> Allowable properties: C{modal, sticky, maximized_vert, maximized_horz, shaded, skip_taskbar,</tt> </tt>
582 <a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"><tt class="py-docstring"> skip_pager, hidden, fullscreen, above}</tt> </tt>
583 <a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
584 <a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
585 <a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"><tt class="py-docstring"> @param action: one of the actions listed above</tt> </tt>
586 <a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"><tt class="py-docstring"> @param prop: one of the properties listed above</tt> </tt>
587 <a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
588 <a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-30', '__runWmctrl', 'link-24');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-r"</tt><tt class="py-op">,</tt> <tt class="py-name">title</tt><tt class="py-op">,</tt> <tt class="py-string">"-b"</tt> <tt class="py-op">+</tt> <tt class="py-name">action</tt> <tt class="py-op">+</tt> <tt class="py-string">','</tt> <tt class="py-op">+</tt> <tt class="py-name">prop</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
589 </div><a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> </tt>
590 <a name="Window.get_active_geometry"></a><div id="Window.get_active_geometry-def"><a name="L533"></a><tt class="py-lineno">533</tt> <a class="py-toggle" href="#" id="Window.get_active_geometry-toggle" onclick="return toggle('Window.get_active_geometry');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#get_active_geometry">get_active_geometry</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
591 </div><div id="Window.get_active_geometry-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.get_active_geometry-expanded"><a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
592 <a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"><tt class="py-docstring"> Get the geometry of the currently active window</tt> </tt>
593 <a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
594 <a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.get_active_geometry()}</tt> </tt>
595 <a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
596 <a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"><tt class="py-docstring"> Returns a 4-tuple containing the x-origin, y-origin, width and height of the window (in pixels)</tt> </tt>
597 <a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
598 <a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt class="py-name">active</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mediator</tt><tt class="py-op">.</tt><tt class="py-name">interface</tt><tt class="py-op">.</tt><tt class="py-name">get_window_title</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
599 <a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-31', '__runWmctrl', 'link-24');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"-l"</tt><tt class="py-op">,</tt> <tt class="py-string">"-G"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
600 <a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-name">matchingLine</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
601 <a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">output</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
602 <a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">active</tt> <tt class="py-keyword">in</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">34</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
603 <a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt class="py-name">matchingLine</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt> </tt>
604 <a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> </tt>
605 <a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">matchingLine</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
606 <a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">matchingLine</tt><tt class="py-op">[</tt><tt class="py-number">14</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
607 <a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt><tt class="py-op">)</tt> </tt>
608 <a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
609 <a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
610 </div><a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> </tt>
611 <a name="Window.__runWmctrl"></a><div id="Window.__runWmctrl-def"><a name="L554"></a><tt class="py-lineno">554</tt> <a class="py-toggle" href="#" id="Window.__runWmctrl-toggle" onclick="return toggle('Window.__runWmctrl');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Window-class.html#__runWmctrl">__runWmctrl</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
612 </div><div id="Window.__runWmctrl-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.__runWmctrl-expanded"><a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">Popen</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"wmctrl"</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt class="py-name">PIPE</tt><tt class="py-op">)</tt> </tt>
613 <a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-name">retCode</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">wait</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
614 <a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-name">output</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-comment"># Drop trailing newline</tt> </tt>
615 <a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> </tt>
616 <a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">retCode</tt><tt class="py-op">,</tt> <tt class="py-name">output</tt><tt class="py-op">)</tt> </tt>
617 </div></div><a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> </tt>
618 <a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> </tt>
619 <a name="Engine"></a><div id="Engine-def"><a name="L562"></a><tt class="py-lineno">562</tt> <a class="py-toggle" href="#" id="Engine-toggle" onclick="return toggle('Engine');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.Engine-class.html">Engine</a><tt class="py-op">:</tt> </tt>
620 </div><div id="Engine-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Engine-expanded"><a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
621 <a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to the internals of AutoKey.</tt> </tt>
622 <a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
623 <a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"><tt class="py-docstring"> Note that any configuration changes made using this API while the configuration window</tt> </tt>
624 <a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"><tt class="py-docstring"> is open will not appear until it is closed and re-opened.</tt> </tt>
625 <a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
626 <a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> </tt>
627 <a name="Engine.__init__"></a><div id="Engine.__init__-def"><a name="L570"></a><tt class="py-lineno">570</tt> <a class="py-toggle" href="#" id="Engine.__init__-toggle" onclick="return toggle('Engine.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Engine-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">configManager</tt><tt class="py-op">,</tt> <tt class="py-param">runner</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
628 </div><div id="Engine.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.__init__-expanded"><a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">configManager</tt> <tt class="py-op">=</tt> <tt class="py-name">configManager</tt> </tt>
629 <a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">runner</tt> <tt class="py-op">=</tt> <tt class="py-name">runner</tt> </tt>
630 </div><a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> </tt>
631 <a name="Engine.get_folder"></a><div id="Engine.get_folder-def"><a name="L574"></a><tt class="py-lineno">574</tt> <a class="py-toggle" href="#" id="Engine.get_folder-toggle" onclick="return toggle('Engine.get_folder');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Engine-class.html#get_folder">get_folder</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">title</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
632 </div><div id="Engine.get_folder-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.get_folder-expanded"><a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
633 <a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"><tt class="py-docstring"> Retrieve a folder by its title</tt> </tt>
634 <a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
635 <a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.get_folder(title)}</tt> </tt>
636 <a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
637 <a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"><tt class="py-docstring"> Note that if more than one folder has the same title, only the first match will be</tt> </tt>
638 <a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"><tt class="py-docstring"> returned.</tt> </tt>
639 <a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
640 <a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">folder</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">configManager</tt><tt class="py-op">.</tt><tt class="py-name">allFolders</tt><tt class="py-op">:</tt> </tt>
641 <a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">folder</tt><tt class="py-op">.</tt><tt class="py-name">title</tt> <tt class="py-op">==</tt> <tt class="py-name">title</tt><tt class="py-op">:</tt> </tt>
642 <a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">folder</tt> </tt>
643 <a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
644 </div><a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> </tt>
645 <a name="Engine.create_phrase"></a><div id="Engine.create_phrase-def"><a name="L588"></a><tt class="py-lineno">588</tt> <a class="py-toggle" href="#" id="Engine.create_phrase-toggle" onclick="return toggle('Engine.create_phrase');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Engine-class.html#create_phrase">create_phrase</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">folder</tt><tt class="py-op">,</tt> <tt class="py-param">description</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
646 </div><div id="Engine.create_phrase-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.create_phrase-expanded"><a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
647 <a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"><tt class="py-docstring"> Create a text phrase</tt> </tt>
648 <a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
649 <a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_phrase(folder, description, contents)}</tt> </tt>
650 <a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
651 <a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"><tt class="py-docstring"> A new phrase with no abbreviation or hotkey is created in the specified folder</tt> </tt>
652 <a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
653 <a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"><tt class="py-docstring"> @param folder: folder to place the abbreviation in, retrieved using C{engine.get_folder()}</tt> </tt>
654 <a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
655 <a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
656 <a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
657 <a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">model</tt><tt class="py-op">.</tt><tt class="py-name">Phrase</tt><tt class="py-op">(</tt><tt class="py-name">description</tt><tt class="py-op">,</tt> <tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
658 <a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-name">folder</tt><tt class="py-op">.</tt><tt class="py-name">add_item</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
659 <a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">configManager</tt><tt class="py-op">.</tt><tt class="py-name">config_altered</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
660 </div><a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> </tt>
661 <a name="Engine.create_abbreviation"></a><div id="Engine.create_abbreviation-def"><a name="L604"></a><tt class="py-lineno">604</tt> <a class="py-toggle" href="#" id="Engine.create_abbreviation-toggle" onclick="return toggle('Engine.create_abbreviation');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Engine-class.html#create_abbreviation">create_abbreviation</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">folder</tt><tt class="py-op">,</tt> <tt class="py-param">description</tt><tt class="py-op">,</tt> <tt class="py-param">abbr</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
662 </div><div id="Engine.create_abbreviation-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.create_abbreviation-expanded"><a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
663 <a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"><tt class="py-docstring"> Create a text abbreviation</tt> </tt>
664 <a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
665 <a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_abbreviation(folder, description, abbr, contents)}</tt> </tt>
666 <a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
667 <a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"><tt class="py-docstring"> When the given abbreviation is typed, it will be replaced with the given</tt> </tt>
668 <a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"><tt class="py-docstring"> text.</tt> </tt>
669 <a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
670 <a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"><tt class="py-docstring"> @param folder: folder to place the abbreviation in, retrieved using C{engine.get_folder()}</tt> </tt>
671 <a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
672 <a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"><tt class="py-docstring"> @param abbr: the abbreviation that will trigger the expansion</tt> </tt>
673 <a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
674 <a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"><tt class="py-docstring"> @raises Exception: if the specified abbreviation is not unique</tt> </tt>
675 <a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
676 <a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">configManager</tt><tt class="py-op">.</tt><tt class="py-name">check_abbreviation_unique</tt><tt class="py-op">(</tt><tt class="py-name">abbr</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
677 <a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"The specified abbreviation is already in use"</tt><tt class="py-op">)</tt> </tt>
678 <a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> </tt>
679 <a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">model</tt><tt class="py-op">.</tt><tt class="py-name">Phrase</tt><tt class="py-op">(</tt><tt class="py-name">description</tt><tt class="py-op">,</tt> <tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
680 <a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">modes</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">model</tt><tt class="py-op">.</tt><tt class="py-name">TriggerMode</tt><tt class="py-op">.</tt><tt class="py-name">ABBREVIATION</tt><tt class="py-op">)</tt> </tt>
681 <a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">abbreviation</tt> <tt class="py-op">=</tt> <tt class="py-name">abbr</tt> </tt>
682 <a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-name">folder</tt><tt class="py-op">.</tt><tt class="py-name">add_item</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
683 <a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">configManager</tt><tt class="py-op">.</tt><tt class="py-name">config_altered</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
684 </div><a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> </tt>
685 <a name="Engine.create_hotkey"></a><div id="Engine.create_hotkey-def"><a name="L628"></a><tt class="py-lineno">628</tt> <a class="py-toggle" href="#" id="Engine.create_hotkey-toggle" onclick="return toggle('Engine.create_hotkey');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Engine-class.html#create_hotkey">create_hotkey</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">folder</tt><tt class="py-op">,</tt> <tt class="py-param">description</tt><tt class="py-op">,</tt> <tt class="py-param">modifiers</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">contents</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
686 </div><div id="Engine.create_hotkey-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.create_hotkey-expanded"><a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
687 <a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"><tt class="py-docstring"> Create a text hotkey.</tt> </tt>
688 <a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
689 <a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_hotkey(folder, description, modifiers, key, contents)}</tt> </tt>
690 <a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
691 <a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"><tt class="py-docstring"> When the given hotkey is pressed, it will be replaced with the given</tt> </tt>
692 <a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"><tt class="py-docstring"> text. Modifiers must be given as a list of strings, with the following</tt> </tt>
693 <a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"><tt class="py-docstring"> values permitted:</tt> </tt>
694 <a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
695 <a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"><tt class="py-docstring"> &lt;control&gt;</tt> </tt>
696 <a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"><tt class="py-docstring"> &lt;alt&gt;</tt> </tt>
697 <a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"><tt class="py-docstring"> &lt;super&gt;</tt> </tt>
698 <a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"><tt class="py-docstring"> &lt;shift&gt;</tt> </tt>
699 <a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
700 <a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"><tt class="py-docstring"> The key must be an unshifted character (i.e. lowercase)</tt> </tt>
701 <a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
702 <a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"><tt class="py-docstring"> @param folder: folder to place the abbreviation in, retrieved using C{engine.get_folder()}</tt> </tt>
703 <a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
704 <a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"><tt class="py-docstring"> @param modifiers: modifiers to use with the hotkey (as a list)</tt> </tt>
705 <a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the hotkey</tt> </tt>
706 <a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
707 <a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"><tt class="py-docstring"> @raises Exception: if the specified hotkey is not unique</tt> </tt>
708 <a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
709 <a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt class="py-name">modifiers</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
710 <a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">configManager</tt><tt class="py-op">.</tt><tt class="py-name">check_hotkey_unique</tt><tt class="py-op">(</tt><tt class="py-name">modifiers</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
711 <a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"The specified hotkey and modifier combination is already in use"</tt><tt class="py-op">)</tt> </tt>
712 <a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> </tt>
713 <a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">model</tt><tt class="py-op">.</tt><tt class="py-name">Phrase</tt><tt class="py-op">(</tt><tt class="py-name">description</tt><tt class="py-op">,</tt> <tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
714 <a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">modes</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">model</tt><tt class="py-op">.</tt><tt class="py-name">TriggerMode</tt><tt class="py-op">.</tt><tt class="py-name">HOTKEY</tt><tt class="py-op">)</tt> </tt>
715 <a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">set_hotkey</tt><tt class="py-op">(</tt><tt class="py-name">modifiers</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
716 <a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-name">folder</tt><tt class="py-op">.</tt><tt class="py-name">add_item</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">)</tt> </tt>
717 <a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">configManager</tt><tt class="py-op">.</tt><tt class="py-name">config_altered</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
718 </div><a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> </tt>
719 <a name="Engine.run_script"></a><div id="Engine.run_script-def"><a name="L662"></a><tt class="py-lineno">662</tt> <a class="py-toggle" href="#" id="Engine.run_script-toggle" onclick="return toggle('Engine.run_script');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Engine-class.html#run_script">run_script</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">description</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
720 </div><div id="Engine.run_script-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.run_script-expanded"><a name="L663"></a><tt class="py-lineno">663</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
721 <a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"><tt class="py-docstring"> Run an existing script using its description to look it up</tt> </tt>
722 <a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
723 <a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.run_script(description)}</tt> </tt>
724 <a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
725 <a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description of the script to run</tt> </tt>
726 <a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"><tt class="py-docstring"> @raises Exception: if the specified script does not exist</tt> </tt>
727 <a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
728 <a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-name">targetScript</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
729 <a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">configManager</tt><tt class="py-op">.</tt><tt class="py-name">allItems</tt><tt class="py-op">:</tt> </tt>
730 <a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">description</tt> <tt class="py-op">==</tt> <tt class="py-name">description</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">Script</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
731 <a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> <tt class="py-name">targetScript</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt> </tt>
732 <a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> </tt>
733 <a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">targetScript</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
734 <a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">runner</tt><tt class="py-op">.</tt><tt class="py-name">execute</tt><tt class="py-op">(</tt><tt class="py-name">targetScript</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
735 <a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
736 <a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-string">"No script with description '%s' found"</tt> <tt class="py-op">%</tt> <tt class="py-name">description</tt><tt class="py-op">)</tt> </tt>
737 </div></div><a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"> </tt><script type="text/javascript">
588738 <!--
589739 expandto(location.href);
590740 // -->
617767 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
618768 <tr>
619769 <td align="left" class="footer">
620 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:37 2009
770 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
621771 </td>
622772 <td align="right" class="footer">
623773 <a target="mainFrame" href="http://epydoc.sourceforge.net"
150150 </td><td class="summary">
151151 <table width="100%" cellpadding="0" cellspacing="0" border="0">
152152 <tr>
153 <td><span class="summary-sig"><a name="__receive"></a><span class="summary-sig-name">__receive</span>(<span class="summary-sig-arg">self</span>,
154 <span class="summary-sig-arg">cb</span>,
155 <span class="summary-sig-arg">text</span>,
156 <span class="summary-sig-arg">data</span>=<span class="summary-sig-default">None</span>)</span></td>
157 <td align="right" valign="top">
158 <span class="codelink"><a href="lib.scripting-pysrc.html#Clipboard.__receive">source&nbsp;code</a></span>
153 <td><span class="summary-sig"><a name="__getSelection"></a><span class="summary-sig-name">__getSelection</span>(<span class="summary-sig-arg">self</span>)</span></td>
154 <td align="right" valign="top">
155 <span class="codelink"><a href="lib.scripting-pysrc.html#Clipboard.__getSelection">source&nbsp;code</a></span>
159156
160157 </td>
161158 </tr>
208205 Read text from the clipboard</td>
209206 <td align="right" valign="top">
210207 <span class="codelink"><a href="lib.scripting-pysrc.html#Clipboard.get_clipboard">source&nbsp;code</a></span>
208
209 </td>
210 </tr>
211 </table>
212
213 </td>
214 </tr>
215 <tr class="private">
216 <td width="15%" align="right" valign="top" class="summary">
217 <span class="summary-type">&nbsp;</span>
218 </td><td class="summary">
219 <table width="100%" cellpadding="0" cellspacing="0" border="0">
220 <tr>
221 <td><span class="summary-sig"><a name="__getClipboard"></a><span class="summary-sig-name">__getClipboard</span>(<span class="summary-sig-arg">self</span>)</span></td>
222 <td align="right" valign="top">
223 <span class="codelink"><a href="lib.scripting-pysrc.html#Clipboard.__getClipboard">source&nbsp;code</a></span>
211224
212225 </td>
213226 </tr>
369382 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
370383 <tr>
371384 <td align="left" class="footer">
372 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
385 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
373386 </td>
374387 <td align="right" class="footer">
375388 <a target="mainFrame" href="http://epydoc.sourceforge.net"
8282 </td><td class="summary">
8383 <table width="100%" cellpadding="0" cellspacing="0" border="0">
8484 <tr>
85 <td><span class="summary-sig"><a name="__runZenity"></a><span class="summary-sig-name">__runZenity</span>(<span class="summary-sig-arg">self</span>,
85 <td><span class="summary-sig"><a name="__runKdialog"></a><span class="summary-sig-name">__runKdialog</span>(<span class="summary-sig-arg">self</span>,
8686 <span class="summary-sig-arg">title</span>,
8787 <span class="summary-sig-arg">args</span>)</span></td>
8888 <td align="right" valign="top">
89 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.__runZenity">source&nbsp;code</a></span>
89 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.__runKdialog">source&nbsp;code</a></span>
9090
9191 </td>
9292 </tr>
101101 <table width="100%" cellpadding="0" cellspacing="0" border="0">
102102 <tr>
103103 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#input_dialog" class="summary-sig-name">input_dialog</a>(<span class="summary-sig-arg">self</span>,
104 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">&quot;Enter a value&quot;</span>,
105 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">&quot;Enter a value&quot;</span>,
106 <span class="summary-sig-arg">default</span>=<span class="summary-sig-default">&quot;&quot;</span>)</span><br />
104 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Enter a value</code><code class="variable-quote">'</code></span>,
105 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Enter a value</code><code class="variable-quote">'</code></span>,
106 <span class="summary-sig-arg">default</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
107107 Show an input dialog</td>
108108 <td align="right" valign="top">
109109 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.input_dialog">source&nbsp;code</a></span>
121121 <table width="100%" cellpadding="0" cellspacing="0" border="0">
122122 <tr>
123123 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#password_dialog" class="summary-sig-name">password_dialog</a>(<span class="summary-sig-arg">self</span>,
124 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">&quot;Enter password&quot;</span>,
125 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">&quot;Enter password&quot;</span>)</span><br />
124 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Enter password</code><code class="variable-quote">'</code></span>,
125 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Enter password</code><code class="variable-quote">'</code></span>)</span><br />
126126 Show a password input dialog</td>
127127 <td align="right" valign="top">
128128 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.password_dialog">source&nbsp;code</a></span>
129
130 </td>
131 </tr>
132 </table>
133
134 </td>
135 </tr>
136 <tr>
137 <td width="15%" align="right" valign="top" class="summary">
138 <span class="summary-type">&nbsp;</span>
139 </td><td class="summary">
140 <table width="100%" cellpadding="0" cellspacing="0" border="0">
141 <tr>
142 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#combo_menu" class="summary-sig-name">combo_menu</a>(<span class="summary-sig-arg">self</span>,
143 <span class="summary-sig-arg">options</span>,
144 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose an option</code><code class="variable-quote">'</code></span>,
145 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose an option</code><code class="variable-quote">'</code></span>)</span><br />
146 Show a combobox menu</td>
147 <td align="right" valign="top">
148 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.combo_menu">source&nbsp;code</a></span>
129149
130150 </td>
131151 </tr>
141161 <tr>
142162 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#list_menu" class="summary-sig-name">list_menu</a>(<span class="summary-sig-arg">self</span>,
143163 <span class="summary-sig-arg">options</span>,
144 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">&quot;Choose a value&quot;</span>,
145 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">&quot;Choose a value&quot;</span>,
164 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose a value</code><code class="variable-quote">'</code></span>,
165 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose a value</code><code class="variable-quote">'</code></span>,
146166 <span class="summary-sig-arg">default</span>=<span class="summary-sig-default">None</span>)</span><br />
147167 Show a single-selection list menu</td>
148168 <td align="right" valign="top">
162182 <tr>
163183 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#list_menu_multi" class="summary-sig-name">list_menu_multi</a>(<span class="summary-sig-arg">self</span>,
164184 <span class="summary-sig-arg">options</span>,
165 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">&quot;Choose one or more values&quot;</span>,
166 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default">&quot;Choose one or more values&quot;</span>,
167 <span class="summary-sig-arg">defaults</span>=<span class="summary-sig-default">[]</span>)</span><br />
185 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose one or more values</code><code class="variable-quote">'</code></span>,
186 <span class="summary-sig-arg">message</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose one or more values</code><code class="variable-quote">'</code></span>,
187 <span class="summary-sig-arg">defaults</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span><br />
168188 Show a multiple-selection list menu</td>
169189 <td align="right" valign="top">
170190 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.list_menu_multi">source&nbsp;code</a></span>
182202 <table width="100%" cellpadding="0" cellspacing="0" border="0">
183203 <tr>
184204 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#open_file" class="summary-sig-name">open_file</a>(<span class="summary-sig-arg">self</span>,
185 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">&quot;Open File&quot;</span>)</span><br />
205 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Open File</code><code class="variable-quote">'</code></span>,
206 <span class="summary-sig-arg">initialDir</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">~</code><code class="variable-quote">'</code></span>,
207 <span class="summary-sig-arg">fileTypes</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">*|All Files</code><code class="variable-quote">'</code></span>,
208 <span class="summary-sig-arg">rememberAs</span>=<span class="summary-sig-default">None</span>)</span><br />
186209 Show an Open File dialog</td>
187210 <td align="right" valign="top">
188211 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.open_file">source&nbsp;code</a></span>
200223 <table width="100%" cellpadding="0" cellspacing="0" border="0">
201224 <tr>
202225 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#save_file" class="summary-sig-name">save_file</a>(<span class="summary-sig-arg">self</span>,
203 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">&quot;Save As&quot;</span>)</span><br />
226 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Save As</code><code class="variable-quote">'</code></span>,
227 <span class="summary-sig-arg">initialDir</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">~</code><code class="variable-quote">'</code></span>,
228 <span class="summary-sig-arg">fileTypes</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">*|All Files</code><code class="variable-quote">'</code></span>,
229 <span class="summary-sig-arg">rememberAs</span>=<span class="summary-sig-default">None</span>)</span><br />
204230 Show a Save As dialog</td>
205231 <td align="right" valign="top">
206232 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.save_file">source&nbsp;code</a></span>
218244 <table width="100%" cellpadding="0" cellspacing="0" border="0">
219245 <tr>
220246 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#choose_directory" class="summary-sig-name">choose_directory</a>(<span class="summary-sig-arg">self</span>,
221 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">&quot;Select Directory&quot;</span>,
222 <span class="summary-sig-arg">initialDir</span>=<span class="summary-sig-default">&quot;~&quot;</span>)</span><br />
247 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Select Directory</code><code class="variable-quote">'</code></span>,
248 <span class="summary-sig-arg">initialDir</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">~</code><code class="variable-quote">'</code></span>,
249 <span class="summary-sig-arg">rememberAs</span>=<span class="summary-sig-default">None</span>)</span><br />
223250 Show a Directory Chooser dialog</td>
224251 <td align="right" valign="top">
225252 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.choose_directory">source&nbsp;code</a></span>
253
254 </td>
255 </tr>
256 </table>
257
258 </td>
259 </tr>
260 <tr>
261 <td width="15%" align="right" valign="top" class="summary">
262 <span class="summary-type">&nbsp;</span>
263 </td><td class="summary">
264 <table width="100%" cellpadding="0" cellspacing="0" border="0">
265 <tr>
266 <td><span class="summary-sig"><a href="lib.scripting.Dialog-class.html#choose_colour" class="summary-sig-name">choose_colour</a>(<span class="summary-sig-arg">self</span>,
267 <span class="summary-sig-arg">title</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">Select Colour</code><code class="variable-quote">'</code></span>)</span><br />
268 Show a Colour Chooser dialog</td>
269 <td align="right" valign="top">
270 <span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.choose_colour">source&nbsp;code</a></span>
226271
227272 </td>
228273 </tr>
257302 <table width="100%" cellpadding="0" cellspacing="0" border="0">
258303 <tr valign="top"><td>
259304 <h3 class="epydoc"><span class="sig"><span class="sig-name">input_dialog</span>(<span class="sig-arg">self</span>,
260 <span class="sig-arg">title</span>=<span class="sig-default">&quot;Enter a value&quot;</span>,
261 <span class="sig-arg">message</span>=<span class="sig-default">&quot;Enter a value&quot;</span>,
262 <span class="sig-arg">default</span>=<span class="sig-default">&quot;&quot;</span>)</span>
305 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Enter a value</code><code class="variable-quote">'</code></span>,
306 <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Enter a value</code><code class="variable-quote">'</code></span>,
307 <span class="sig-arg">default</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
263308 </h3>
264309 </td><td align="right" valign="top"
265310 ><span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.input_dialog">source&nbsp;code</a></span>&nbsp;
287332 <table width="100%" cellpadding="0" cellspacing="0" border="0">
288333 <tr valign="top"><td>
289334 <h3 class="epydoc"><span class="sig"><span class="sig-name">password_dialog</span>(<span class="sig-arg">self</span>,
290 <span class="sig-arg">title</span>=<span class="sig-default">&quot;Enter password&quot;</span>,
291 <span class="sig-arg">message</span>=<span class="sig-default">&quot;Enter password&quot;</span>)</span>
335 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Enter password</code><code class="variable-quote">'</code></span>,
336 <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Enter password</code><code class="variable-quote">'</code></span>)</span>
292337 </h3>
293338 </td><td align="right" valign="top"
294339 ><span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.password_dialog">source&nbsp;code</a></span>&nbsp;
307352 </dl>
308353 </td></tr></table>
309354 </div>
355 <a name="combo_menu"></a>
356 <div>
357 <table class="details" border="1" cellpadding="3"
358 cellspacing="0" width="100%" bgcolor="white">
359 <tr><td>
360 <table width="100%" cellpadding="0" cellspacing="0" border="0">
361 <tr valign="top"><td>
362 <h3 class="epydoc"><span class="sig"><span class="sig-name">combo_menu</span>(<span class="sig-arg">self</span>,
363 <span class="sig-arg">options</span>,
364 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose an option</code><code class="variable-quote">'</code></span>,
365 <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose an option</code><code class="variable-quote">'</code></span>)</span>
366 </h3>
367 </td><td align="right" valign="top"
368 ><span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.combo_menu">source&nbsp;code</a></span>&nbsp;
369 </td>
370 </tr></table>
371
372 <p>Show a combobox menu</p>
373 <p>Usage: <code>dialog.combo_menu(options, title=&quot;Choose an
374 option&quot;, message=&quot;Choose an option&quot;)</code></p>
375 <dl class="fields">
376 <dt>Parameters:</dt>
377 <dd><ul class="nomargin-top">
378 <li><strong class="pname"><code>options</code></strong> - list of options (strings) for the dialog</li>
379 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
380 <li><strong class="pname"><code>message</code></strong> - message displayed above the combobox</li>
381 </ul></dd>
382 </dl>
383 </td></tr></table>
384 </div>
310385 <a name="list_menu"></a>
311386 <div>
312387 <table class="details" border="1" cellpadding="3"
316391 <tr valign="top"><td>
317392 <h3 class="epydoc"><span class="sig"><span class="sig-name">list_menu</span>(<span class="sig-arg">self</span>,
318393 <span class="sig-arg">options</span>,
319 <span class="sig-arg">title</span>=<span class="sig-default">&quot;Choose a value&quot;</span>,
320 <span class="sig-arg">message</span>=<span class="sig-default">&quot;Choose a value&quot;</span>,
394 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose a value</code><code class="variable-quote">'</code></span>,
395 <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose a value</code><code class="variable-quote">'</code></span>,
321396 <span class="sig-arg">default</span>=<span class="sig-default">None</span>)</span>
322397 </h3>
323398 </td><td align="right" valign="top"
348423 <tr valign="top"><td>
349424 <h3 class="epydoc"><span class="sig"><span class="sig-name">list_menu_multi</span>(<span class="sig-arg">self</span>,
350425 <span class="sig-arg">options</span>,
351 <span class="sig-arg">title</span>=<span class="sig-default">&quot;Choose one or more values&quot;</span>,
352 <span class="sig-arg">message</span>=<span class="sig-default">&quot;Choose one or more values&quot;</span>,
353 <span class="sig-arg">defaults</span>=<span class="sig-default">[]</span>)</span>
426 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose one or more values</code><code class="variable-quote">'</code></span>,
427 <span class="sig-arg">message</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Choose one or more values</code><code class="variable-quote">'</code></span>,
428 <span class="sig-arg">defaults</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-group">]</code></span>)</span>
354429 </h3>
355430 </td><td align="right" valign="top"
356431 ><span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.list_menu_multi">source&nbsp;code</a></span>&nbsp;
380455 <table width="100%" cellpadding="0" cellspacing="0" border="0">
381456 <tr valign="top"><td>
382457 <h3 class="epydoc"><span class="sig"><span class="sig-name">open_file</span>(<span class="sig-arg">self</span>,
383 <span class="sig-arg">title</span>=<span class="sig-default">&quot;Open File&quot;</span>)</span>
458 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Open File</code><code class="variable-quote">'</code></span>,
459 <span class="sig-arg">initialDir</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">~</code><code class="variable-quote">'</code></span>,
460 <span class="sig-arg">fileTypes</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">*|All Files</code><code class="variable-quote">'</code></span>,
461 <span class="sig-arg">rememberAs</span>=<span class="sig-default">None</span>)</span>
384462 </h3>
385463 </td><td align="right" valign="top"
386464 ><span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.open_file">source&nbsp;code</a></span>&nbsp;
388466 </tr></table>
389467
390468 <p>Show an Open File dialog</p>
391 <p>Usage: <code>dialog.open_file(title=&quot;Open File&quot;)</code></p>
469 <p>Usage: <code>dialog.open_file(title=&quot;Open File&quot;,
470 initialDir=&quot;~&quot;, fileTypes=&quot;*|All Files&quot;,
471 rememberAs=None)</code></p>
392472 <dl class="fields">
393473 <dt>Parameters:</dt>
394474 <dd><ul class="nomargin-top">
395475 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
396476 <li><strong class="pname"><code>initialDir</code></strong> - starting directory for the file dialog</li>
477 <li><strong class="pname"><code>fileTypes</code></strong> - file type filter expression</li>
478 <li><strong class="pname"><code>rememberAs</code></strong> - gives an ID to this file dialog, allowing it to open at the last
479 used path next time</li>
397480 </ul></dd>
398481 </dl>
399482 </td></tr></table>
406489 <table width="100%" cellpadding="0" cellspacing="0" border="0">
407490 <tr valign="top"><td>
408491 <h3 class="epydoc"><span class="sig"><span class="sig-name">save_file</span>(<span class="sig-arg">self</span>,
409 <span class="sig-arg">title</span>=<span class="sig-default">&quot;Save As&quot;</span>)</span>
492 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Save As</code><code class="variable-quote">'</code></span>,
493 <span class="sig-arg">initialDir</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">~</code><code class="variable-quote">'</code></span>,
494 <span class="sig-arg">fileTypes</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">*|All Files</code><code class="variable-quote">'</code></span>,
495 <span class="sig-arg">rememberAs</span>=<span class="sig-default">None</span>)</span>
410496 </h3>
411497 </td><td align="right" valign="top"
412498 ><span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.save_file">source&nbsp;code</a></span>&nbsp;
414500 </tr></table>
415501
416502 <p>Show a Save As dialog</p>
417 <p>Usage: <code>dialog.save_file(title=&quot;Save As&quot;)</code></p>
418 <dl class="fields">
419 <dt>Parameters:</dt>
420 <dd><ul class="nomargin-top">
421 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
503 <p>Usage: <code>dialog.save_file(title=&quot;Save As&quot;,
504 initialDir=&quot;~&quot;, fileTypes=&quot;*|All Files&quot;,
505 rememberAs=None)</code></p>
506 <dl class="fields">
507 <dt>Parameters:</dt>
508 <dd><ul class="nomargin-top">
509 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
510 <li><strong class="pname"><code>initialDir</code></strong> - starting directory for the file dialog</li>
511 <li><strong class="pname"><code>fileTypes</code></strong> - file type filter expression</li>
512 <li><strong class="pname"><code>rememberAs</code></strong> - gives an ID to this file dialog, allowing it to open at the last
513 used path next time</li>
422514 </ul></dd>
423515 </dl>
424516 </td></tr></table>
431523 <table width="100%" cellpadding="0" cellspacing="0" border="0">
432524 <tr valign="top"><td>
433525 <h3 class="epydoc"><span class="sig"><span class="sig-name">choose_directory</span>(<span class="sig-arg">self</span>,
434 <span class="sig-arg">title</span>=<span class="sig-default">&quot;Select Directory&quot;</span>,
435 <span class="sig-arg">initialDir</span>=<span class="sig-default">&quot;~&quot;</span>)</span>
526 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Select Directory</code><code class="variable-quote">'</code></span>,
527 <span class="sig-arg">initialDir</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">~</code><code class="variable-quote">'</code></span>,
528 <span class="sig-arg">rememberAs</span>=<span class="sig-default">None</span>)</span>
436529 </h3>
437530 </td><td align="right" valign="top"
438531 ><span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.choose_directory">source&nbsp;code</a></span>&nbsp;
441534
442535 <p>Show a Directory Chooser dialog</p>
443536 <p>Usage: <code>dialog.choose_directory(title=&quot;Select
444 Directory&quot;)</code></p>
537 Directory&quot;, initialDir=&quot;~&quot;, rememberAs=None)</code></p>
538 <dl class="fields">
539 <dt>Parameters:</dt>
540 <dd><ul class="nomargin-top">
541 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
542 <li><strong class="pname"><code>initialDir</code></strong> - starting directory for the directory chooser dialog</li>
543 <li><strong class="pname"><code>rememberAs</code></strong> - gives an ID to this file dialog, allowing it to open at the last
544 used path next time</li>
545 </ul></dd>
546 </dl>
547 </td></tr></table>
548 </div>
549 <a name="choose_colour"></a>
550 <div>
551 <table class="details" border="1" cellpadding="3"
552 cellspacing="0" width="100%" bgcolor="white">
553 <tr><td>
554 <table width="100%" cellpadding="0" cellspacing="0" border="0">
555 <tr valign="top"><td>
556 <h3 class="epydoc"><span class="sig"><span class="sig-name">choose_colour</span>(<span class="sig-arg">self</span>,
557 <span class="sig-arg">title</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string">Select Colour</code><code class="variable-quote">'</code></span>)</span>
558 </h3>
559 </td><td align="right" valign="top"
560 ><span class="codelink"><a href="lib.scripting-pysrc.html#Dialog.choose_colour">source&nbsp;code</a></span>&nbsp;
561 </td>
562 </tr></table>
563
564 <p>Show a Colour Chooser dialog</p>
565 <p>Usage: <code>dialog.choose_colour(title=&quot;Select
566 Colour&quot;)</code></p>
445567 <dl class="fields">
446568 <dt>Parameters:</dt>
447569 <dd><ul class="nomargin-top">
477599 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
478600 <tr>
479601 <td align="left" class="footer">
480 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
602 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
481603 </td>
482604 <td align="right" class="footer">
483605 <a target="mainFrame" href="http://epydoc.sourceforge.net"
0 <?xml version="1.0" encoding="ascii"?>
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <head>
5 <title>lib.scripting.Engine</title>
6 <link rel="stylesheet" href="epydoc.css" type="text/css" />
7 <script type="text/javascript" src="epydoc.js"></script>
8 </head>
9
10 <body bgcolor="white" text="black" link="blue" vlink="#204080"
11 alink="#204080">
12 <!-- ==================== NAVIGATION BAR ==================== -->
13 <table class="navbar" border="0" width="100%" cellpadding="0"
14 bgcolor="#a0c0ff" cellspacing="0">
15 <tr valign="middle">
16 <!-- Home link -->
17 <th>&nbsp;&nbsp;&nbsp;<a
18 href="lib.scripting-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
19
20 <!-- Tree link -->
21 <th>&nbsp;&nbsp;&nbsp;<a
22 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
23
24 <!-- Index link -->
25 <th>&nbsp;&nbsp;&nbsp;<a
26 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
27
28 <!-- Help link -->
29 <th>&nbsp;&nbsp;&nbsp;<a
30 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
31
32 <th class="navbar" width="100%"></th>
33 </tr>
34 </table>
35 <table width="100%" cellpadding="0" cellspacing="0">
36 <tr valign="top">
37 <td width="100%">
38 <span class="breadcrumbs">
39 Package&nbsp;lib ::
40 <a href="lib.scripting-module.html">Module&nbsp;scripting</a> ::
41 Class&nbsp;Engine
42 </span>
43 </td>
44 <td>
45 <table cellpadding="0" cellspacing="0">
46 <!-- hide/show private -->
47 <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
48 onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
49 <tr><td align="right"><span class="options"
50 >[<a href="frames.html" target="_top">frames</a
51 >]&nbsp;|&nbsp;<a href="lib.scripting.Engine-class.html"
52 target="_top">no&nbsp;frames</a>]</span></td></tr>
53 </table>
54 </td>
55 </tr>
56 </table>
57 <!-- ==================== CLASS DESCRIPTION ==================== -->
58 <h1 class="epydoc">Class Engine</h1><p class="nomargin-top"><span class="codelink"><a href="lib.scripting-pysrc.html#Engine">source&nbsp;code</a></span></p>
59 <p>Provides access to the internals of AutoKey.</p>
60 <p>Note that any configuration changes made using this API while the
61 configuration window is open will not appear until it is closed and
62 re-opened.</p>
63
64 <!-- ==================== INSTANCE METHODS ==================== -->
65 <a name="section-InstanceMethods"></a>
66 <table class="summary" border="1" cellpadding="3"
67 cellspacing="0" width="100%" bgcolor="white">
68 <tr bgcolor="#70b0f0" class="table-header">
69 <td colspan="2" class="table-header">
70 <table border="0" cellpadding="0" cellspacing="0" width="100%">
71 <tr valign="top">
72 <td align="left"><span class="table-header">Instance Methods</span></td>
73 <td align="right" valign="top"
74 ><span class="options">[<a href="#section-InstanceMethods"
75 class="privatelink" onclick="toggle_private();"
76 >hide private</a>]</span></td>
77 </tr>
78 </table>
79 </td>
80 </tr>
81 <tr>
82 <td width="15%" align="right" valign="top" class="summary">
83 <span class="summary-type">&nbsp;</span>
84 </td><td class="summary">
85 <table width="100%" cellpadding="0" cellspacing="0" border="0">
86 <tr>
87 <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
88 <span class="summary-sig-arg">configManager</span>,
89 <span class="summary-sig-arg">runner</span>)</span></td>
90 <td align="right" valign="top">
91 <span class="codelink"><a href="lib.scripting-pysrc.html#Engine.__init__">source&nbsp;code</a></span>
92
93 </td>
94 </tr>
95 </table>
96
97 </td>
98 </tr>
99 <tr>
100 <td width="15%" align="right" valign="top" class="summary">
101 <span class="summary-type">&nbsp;</span>
102 </td><td class="summary">
103 <table width="100%" cellpadding="0" cellspacing="0" border="0">
104 <tr>
105 <td><span class="summary-sig"><a href="lib.scripting.Engine-class.html#get_folder" class="summary-sig-name">get_folder</a>(<span class="summary-sig-arg">self</span>,
106 <span class="summary-sig-arg">title</span>)</span><br />
107 Retrieve a folder by its title</td>
108 <td align="right" valign="top">
109 <span class="codelink"><a href="lib.scripting-pysrc.html#Engine.get_folder">source&nbsp;code</a></span>
110
111 </td>
112 </tr>
113 </table>
114
115 </td>
116 </tr>
117 <tr>
118 <td width="15%" align="right" valign="top" class="summary">
119 <span class="summary-type">&nbsp;</span>
120 </td><td class="summary">
121 <table width="100%" cellpadding="0" cellspacing="0" border="0">
122 <tr>
123 <td><span class="summary-sig"><a href="lib.scripting.Engine-class.html#create_phrase" class="summary-sig-name">create_phrase</a>(<span class="summary-sig-arg">self</span>,
124 <span class="summary-sig-arg">folder</span>,
125 <span class="summary-sig-arg">description</span>,
126 <span class="summary-sig-arg">contents</span>)</span><br />
127 Create a text phrase</td>
128 <td align="right" valign="top">
129 <span class="codelink"><a href="lib.scripting-pysrc.html#Engine.create_phrase">source&nbsp;code</a></span>
130
131 </td>
132 </tr>
133 </table>
134
135 </td>
136 </tr>
137 <tr>
138 <td width="15%" align="right" valign="top" class="summary">
139 <span class="summary-type">&nbsp;</span>
140 </td><td class="summary">
141 <table width="100%" cellpadding="0" cellspacing="0" border="0">
142 <tr>
143 <td><span class="summary-sig"><a href="lib.scripting.Engine-class.html#create_abbreviation" class="summary-sig-name">create_abbreviation</a>(<span class="summary-sig-arg">self</span>,
144 <span class="summary-sig-arg">folder</span>,
145 <span class="summary-sig-arg">description</span>,
146 <span class="summary-sig-arg">abbr</span>,
147 <span class="summary-sig-arg">contents</span>)</span><br />
148 Create a text abbreviation</td>
149 <td align="right" valign="top">
150 <span class="codelink"><a href="lib.scripting-pysrc.html#Engine.create_abbreviation">source&nbsp;code</a></span>
151
152 </td>
153 </tr>
154 </table>
155
156 </td>
157 </tr>
158 <tr>
159 <td width="15%" align="right" valign="top" class="summary">
160 <span class="summary-type">&nbsp;</span>
161 </td><td class="summary">
162 <table width="100%" cellpadding="0" cellspacing="0" border="0">
163 <tr>
164 <td><span class="summary-sig"><a href="lib.scripting.Engine-class.html#create_hotkey" class="summary-sig-name">create_hotkey</a>(<span class="summary-sig-arg">self</span>,
165 <span class="summary-sig-arg">folder</span>,
166 <span class="summary-sig-arg">description</span>,
167 <span class="summary-sig-arg">modifiers</span>,
168 <span class="summary-sig-arg">key</span>,
169 <span class="summary-sig-arg">contents</span>)</span><br />
170 Create a text hotkey.</td>
171 <td align="right" valign="top">
172 <span class="codelink"><a href="lib.scripting-pysrc.html#Engine.create_hotkey">source&nbsp;code</a></span>
173
174 </td>
175 </tr>
176 </table>
177
178 </td>
179 </tr>
180 <tr>
181 <td width="15%" align="right" valign="top" class="summary">
182 <span class="summary-type">&nbsp;</span>
183 </td><td class="summary">
184 <table width="100%" cellpadding="0" cellspacing="0" border="0">
185 <tr>
186 <td><span class="summary-sig"><a href="lib.scripting.Engine-class.html#run_script" class="summary-sig-name">run_script</a>(<span class="summary-sig-arg">self</span>,
187 <span class="summary-sig-arg">description</span>)</span><br />
188 Run an existing script using its description to look it up</td>
189 <td align="right" valign="top">
190 <span class="codelink"><a href="lib.scripting-pysrc.html#Engine.run_script">source&nbsp;code</a></span>
191
192 </td>
193 </tr>
194 </table>
195
196 </td>
197 </tr>
198 </table>
199 <!-- ==================== METHOD DETAILS ==================== -->
200 <a name="section-MethodDetails"></a>
201 <table class="details" border="1" cellpadding="3"
202 cellspacing="0" width="100%" bgcolor="white">
203 <tr bgcolor="#70b0f0" class="table-header">
204 <td colspan="2" class="table-header">
205 <table border="0" cellpadding="0" cellspacing="0" width="100%">
206 <tr valign="top">
207 <td align="left"><span class="table-header">Method Details</span></td>
208 <td align="right" valign="top"
209 ><span class="options">[<a href="#section-MethodDetails"
210 class="privatelink" onclick="toggle_private();"
211 >hide private</a>]</span></td>
212 </tr>
213 </table>
214 </td>
215 </tr>
216 </table>
217 <a name="get_folder"></a>
218 <div>
219 <table class="details" border="1" cellpadding="3"
220 cellspacing="0" width="100%" bgcolor="white">
221 <tr><td>
222 <table width="100%" cellpadding="0" cellspacing="0" border="0">
223 <tr valign="top"><td>
224 <h3 class="epydoc"><span class="sig"><span class="sig-name">get_folder</span>(<span class="sig-arg">self</span>,
225 <span class="sig-arg">title</span>)</span>
226 </h3>
227 </td><td align="right" valign="top"
228 ><span class="codelink"><a href="lib.scripting-pysrc.html#Engine.get_folder">source&nbsp;code</a></span>&nbsp;
229 </td>
230 </tr></table>
231
232 <p>Retrieve a folder by its title</p>
233 <p>Usage: <code>engine.get_folder(title)</code></p>
234 <p>Note that if more than one folder has the same title, only the first
235 match will be returned.</p>
236 <dl class="fields">
237 </dl>
238 </td></tr></table>
239 </div>
240 <a name="create_phrase"></a>
241 <div>
242 <table class="details" border="1" cellpadding="3"
243 cellspacing="0" width="100%" bgcolor="white">
244 <tr><td>
245 <table width="100%" cellpadding="0" cellspacing="0" border="0">
246 <tr valign="top"><td>
247 <h3 class="epydoc"><span class="sig"><span class="sig-name">create_phrase</span>(<span class="sig-arg">self</span>,
248 <span class="sig-arg">folder</span>,
249 <span class="sig-arg">description</span>,
250 <span class="sig-arg">contents</span>)</span>
251 </h3>
252 </td><td align="right" valign="top"
253 ><span class="codelink"><a href="lib.scripting-pysrc.html#Engine.create_phrase">source&nbsp;code</a></span>&nbsp;
254 </td>
255 </tr></table>
256
257 <p>Create a text phrase</p>
258 <p>Usage: <code>engine.create_phrase(folder, description,
259 contents)</code></p>
260 <p>A new phrase with no abbreviation or hotkey is created in the
261 specified folder</p>
262 <dl class="fields">
263 <dt>Parameters:</dt>
264 <dd><ul class="nomargin-top">
265 <li><strong class="pname"><code>folder</code></strong> - folder to place the abbreviation in, retrieved using
266 <code>engine.get_folder()</code></li>
267 <li><strong class="pname"><code>description</code></strong> - description for the phrase</li>
268 <li><strong class="pname"><code>contents</code></strong> - the expansion text</li>
269 </ul></dd>
270 </dl>
271 </td></tr></table>
272 </div>
273 <a name="create_abbreviation"></a>
274 <div>
275 <table class="details" border="1" cellpadding="3"
276 cellspacing="0" width="100%" bgcolor="white">
277 <tr><td>
278 <table width="100%" cellpadding="0" cellspacing="0" border="0">
279 <tr valign="top"><td>
280 <h3 class="epydoc"><span class="sig"><span class="sig-name">create_abbreviation</span>(<span class="sig-arg">self</span>,
281 <span class="sig-arg">folder</span>,
282 <span class="sig-arg">description</span>,
283 <span class="sig-arg">abbr</span>,
284 <span class="sig-arg">contents</span>)</span>
285 </h3>
286 </td><td align="right" valign="top"
287 ><span class="codelink"><a href="lib.scripting-pysrc.html#Engine.create_abbreviation">source&nbsp;code</a></span>&nbsp;
288 </td>
289 </tr></table>
290
291 <p>Create a text abbreviation</p>
292 <p>Usage: <code>engine.create_abbreviation(folder, description, abbr,
293 contents)</code></p>
294 <p>When the given abbreviation is typed, it will be replaced with the
295 given text.</p>
296 <dl class="fields">
297 <dt>Parameters:</dt>
298 <dd><ul class="nomargin-top">
299 <li><strong class="pname"><code>folder</code></strong> - folder to place the abbreviation in, retrieved using
300 <code>engine.get_folder()</code></li>
301 <li><strong class="pname"><code>description</code></strong> - description for the phrase</li>
302 <li><strong class="pname"><code>abbr</code></strong> - the abbreviation that will trigger the expansion</li>
303 <li><strong class="pname"><code>contents</code></strong> - the expansion text</li>
304 </ul></dd>
305 <dt>Raises:</dt>
306 <dd><ul class="nomargin-top">
307 <li><code><strong class='fraise'>Exception</strong></code> - if the specified abbreviation is not unique</li>
308 </ul></dd>
309 </dl>
310 </td></tr></table>
311 </div>
312 <a name="create_hotkey"></a>
313 <div>
314 <table class="details" border="1" cellpadding="3"
315 cellspacing="0" width="100%" bgcolor="white">
316 <tr><td>
317 <table width="100%" cellpadding="0" cellspacing="0" border="0">
318 <tr valign="top"><td>
319 <h3 class="epydoc"><span class="sig"><span class="sig-name">create_hotkey</span>(<span class="sig-arg">self</span>,
320 <span class="sig-arg">folder</span>,
321 <span class="sig-arg">description</span>,
322 <span class="sig-arg">modifiers</span>,
323 <span class="sig-arg">key</span>,
324 <span class="sig-arg">contents</span>)</span>
325 </h3>
326 </td><td align="right" valign="top"
327 ><span class="codelink"><a href="lib.scripting-pysrc.html#Engine.create_hotkey">source&nbsp;code</a></span>&nbsp;
328 </td>
329 </tr></table>
330
331 <p>Create a text hotkey.</p>
332 <p>Usage: <code>engine.create_hotkey(folder, description, modifiers, key,
333 contents)</code></p>
334 <p>When the given hotkey is pressed, it will be replaced with the given
335 text. Modifiers must be given as a list of strings, with the following
336 values permitted:</p>
337 <p>&lt;control&gt; &lt;alt&gt; &lt;super&gt; &lt;shift&gt;</p>
338 <p>The key must be an unshifted character (i.e. lowercase)</p>
339 <dl class="fields">
340 <dt>Parameters:</dt>
341 <dd><ul class="nomargin-top">
342 <li><strong class="pname"><code>folder</code></strong> - folder to place the abbreviation in, retrieved using
343 <code>engine.get_folder()</code></li>
344 <li><strong class="pname"><code>description</code></strong> - description for the phrase</li>
345 <li><strong class="pname"><code>modifiers</code></strong> - modifiers to use with the hotkey (as a list)</li>
346 <li><strong class="pname"><code>key</code></strong> - the hotkey</li>
347 <li><strong class="pname"><code>contents</code></strong> - the expansion text</li>
348 </ul></dd>
349 <dt>Raises:</dt>
350 <dd><ul class="nomargin-top">
351 <li><code><strong class='fraise'>Exception</strong></code> - if the specified hotkey is not unique</li>
352 </ul></dd>
353 </dl>
354 </td></tr></table>
355 </div>
356 <a name="run_script"></a>
357 <div>
358 <table class="details" border="1" cellpadding="3"
359 cellspacing="0" width="100%" bgcolor="white">
360 <tr><td>
361 <table width="100%" cellpadding="0" cellspacing="0" border="0">
362 <tr valign="top"><td>
363 <h3 class="epydoc"><span class="sig"><span class="sig-name">run_script</span>(<span class="sig-arg">self</span>,
364 <span class="sig-arg">description</span>)</span>
365 </h3>
366 </td><td align="right" valign="top"
367 ><span class="codelink"><a href="lib.scripting-pysrc.html#Engine.run_script">source&nbsp;code</a></span>&nbsp;
368 </td>
369 </tr></table>
370
371 <p>Run an existing script using its description to look it up</p>
372 <p>Usage: <code>engine.run_script(description)</code></p>
373 <dl class="fields">
374 <dt>Parameters:</dt>
375 <dd><ul class="nomargin-top">
376 <li><strong class="pname"><code>description</code></strong> - description of the script to run</li>
377 </ul></dd>
378 <dt>Raises:</dt>
379 <dd><ul class="nomargin-top">
380 <li><code><strong class='fraise'>Exception</strong></code> - if the specified script does not exist</li>
381 </ul></dd>
382 </dl>
383 </td></tr></table>
384 </div>
385 <br />
386 <!-- ==================== NAVIGATION BAR ==================== -->
387 <table class="navbar" border="0" width="100%" cellpadding="0"
388 bgcolor="#a0c0ff" cellspacing="0">
389 <tr valign="middle">
390 <!-- Home link -->
391 <th>&nbsp;&nbsp;&nbsp;<a
392 href="lib.scripting-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
393
394 <!-- Tree link -->
395 <th>&nbsp;&nbsp;&nbsp;<a
396 href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
397
398 <!-- Index link -->
399 <th>&nbsp;&nbsp;&nbsp;<a
400 href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
401
402 <!-- Help link -->
403 <th>&nbsp;&nbsp;&nbsp;<a
404 href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
405
406 <th class="navbar" width="100%"></th>
407 </tr>
408 </table>
409 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
410 <tr>
411 <td align="left" class="footer">
412 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
413 </td>
414 <td align="right" class="footer">
415 <a target="mainFrame" href="http://epydoc.sourceforge.net"
416 >http://epydoc.sourceforge.net</a>
417 </td>
418 </tr>
419 </table>
420
421 <script type="text/javascript">
422 <!--
423 // Private objects are initially displayed (because if
424 // javascript is turned off then we want them to be
425 // visible); but by default, we want to hide them. So hide
426 // them unless we have a cookie that says to show them.
427 checkCookie();
428 // -->
429 </script>
430 </body>
431 </html>
228228 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
229229 <tr>
230230 <td align="left" class="footer">
231 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
231 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
232232 </td>
233233 <td align="right" class="footer">
234234 <a target="mainFrame" href="http://epydoc.sourceforge.net"
236236 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
237237 <tr>
238238 <td align="left" class="footer">
239 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
239 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
240240 </td>
241241 <td align="right" class="footer">
242242 <a target="mainFrame" href="http://epydoc.sourceforge.net"
151151 <code>__getattribute__</code>,
152152 <code>__getitem__</code>,
153153 <code>__gt__</code>,
154 <code>__hash__</code>,
155154 <code>__init__</code>,
156155 <code>__iter__</code>,
157156 <code>__le__</code>,
161160 <code>__new__</code>,
162161 <code>__repr__</code>,
163162 <code>__setitem__</code>,
163 <code>__sizeof__</code>,
164164 <code>clear</code>,
165165 <code>copy</code>,
166166 <code>fromkeys</code>,
179179 </p>
180180 <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
181181 <code>__delattr__</code>,
182 <code>__format__</code>,
182183 <code>__reduce__</code>,
183184 <code>__reduce_ex__</code>,
184185 <code>__setattr__</code>,
185 <code>__str__</code>
186 <code>__str__</code>,
187 <code>__subclasshook__</code>
188 </p>
189 </td>
190 </tr>
191 </table>
192 <!-- ==================== CLASS VARIABLES ==================== -->
193 <a name="section-ClassVariables"></a>
194 <table class="summary" border="1" cellpadding="3"
195 cellspacing="0" width="100%" bgcolor="white">
196 <tr bgcolor="#70b0f0" class="table-header">
197 <td colspan="2" class="table-header">
198 <table border="0" cellpadding="0" cellspacing="0" width="100%">
199 <tr valign="top">
200 <td align="left"><span class="table-header">Class Variables</span></td>
201 <td align="right" valign="top"
202 ><span class="options">[<a href="#section-ClassVariables"
203 class="privatelink" onclick="toggle_private();"
204 >hide private</a>]</span></td>
205 </tr>
206 </table>
207 </td>
208 </tr>
209 <tr>
210 <td colspan="2" class="summary">
211 <p class="indent-wrapped-lines"><b>Inherited from <code>dict</code></b>:
212 <code>__hash__</code>
186213 </p>
187214 </td>
188215 </tr>
321348 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
322349 <tr>
323350 <td align="left" class="footer">
324 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
351 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
325352 </td>
326353 <td align="right" class="footer">
327354 <a target="mainFrame" href="http://epydoc.sourceforge.net"
101101 <tr>
102102 <td><span class="summary-sig"><a href="lib.scripting.System-class.html#create_file" class="summary-sig-name">create_file</a>(<span class="summary-sig-arg">self</span>,
103103 <span class="summary-sig-arg">fileName</span>,
104 <span class="summary-sig-arg">contents</span>=<span class="summary-sig-default">&quot;&quot;</span>)</span><br />
104 <span class="summary-sig-arg">contents</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span><br />
105105 Create a file with contents</td>
106106 <td align="right" valign="top">
107107 <span class="codelink"><a href="lib.scripting-pysrc.html#System.create_file">source&nbsp;code</a></span>
170170 <tr valign="top"><td>
171171 <h3 class="epydoc"><span class="sig"><span class="sig-name">create_file</span>(<span class="sig-arg">self</span>,
172172 <span class="sig-arg">fileName</span>,
173 <span class="sig-arg">contents</span>=<span class="sig-default">&quot;&quot;</span>)</span>
173 <span class="sig-arg">contents</span>=<span class="sig-default"><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code></span>)</span>
174174 </h3>
175175 </td><td align="right" valign="top"
176176 ><span class="codelink"><a href="lib.scripting-pysrc.html#System.create_file">source&nbsp;code</a></span>&nbsp;
216216 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
217217 <tr>
218218 <td align="left" class="footer">
219 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
219 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
220220 </td>
221221 <td align="right" class="footer">
222222 <a target="mainFrame" href="http://epydoc.sourceforge.net"
244244 Set a property on the given window using the specified action</td>
245245 <td align="right" valign="top">
246246 <span class="codelink"><a href="lib.scripting-pysrc.html#Window.set_property">source&nbsp;code</a></span>
247
248 </td>
249 </tr>
250 </table>
251
252 </td>
253 </tr>
254 <tr>
255 <td width="15%" align="right" valign="top" class="summary">
256 <span class="summary-type">&nbsp;</span>
257 </td><td class="summary">
258 <table width="100%" cellpadding="0" cellspacing="0" border="0">
259 <tr>
260 <td><span class="summary-sig"><a href="lib.scripting.Window-class.html#get_active_geometry" class="summary-sig-name">get_active_geometry</a>(<span class="summary-sig-arg">self</span>)</span><br />
261 Get the geometry of the currently active window</td>
262 <td align="right" valign="top">
263 <span class="codelink"><a href="lib.scripting-pysrc.html#Window.get_active_geometry">source&nbsp;code</a></span>
247264
248265 </td>
249266 </tr>
528545 </dl>
529546 </td></tr></table>
530547 </div>
548 <a name="get_active_geometry"></a>
549 <div>
550 <table class="details" border="1" cellpadding="3"
551 cellspacing="0" width="100%" bgcolor="white">
552 <tr><td>
553 <table width="100%" cellpadding="0" cellspacing="0" border="0">
554 <tr valign="top"><td>
555 <h3 class="epydoc"><span class="sig"><span class="sig-name">get_active_geometry</span>(<span class="sig-arg">self</span>)</span>
556 </h3>
557 </td><td align="right" valign="top"
558 ><span class="codelink"><a href="lib.scripting-pysrc.html#Window.get_active_geometry">source&nbsp;code</a></span>&nbsp;
559 </td>
560 </tr></table>
561
562 <p>Get the geometry of the currently active window</p>
563 <p>Usage: <code>window.get_active_geometry()</code></p>
564 <p>Returns a 4-tuple containing the x-origin, y-origin, width and height
565 of the window (in pixels)</p>
566 <dl class="fields">
567 </dl>
568 </td></tr></table>
569 </div>
531570 <br />
532571 <!-- ==================== NAVIGATION BAR ==================== -->
533572 <table class="navbar" border="0" width="100%" cellpadding="0"
555594 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
556595 <tr>
557596 <td align="left" class="footer">
558 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
597 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
559598 </td>
560599 <td align="right" class="footer">
561600 <a target="mainFrame" href="http://epydoc.sourceforge.net"
8282 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
8383 <tr>
8484 <td align="left" class="footer">
85 Generated by Epydoc 3.0.1 on Sat Nov 28 12:25:36 2009
85 Generated by Epydoc 3.0.1 on Fri Jan 8 16:51:02 2010
8686 </td>
8787 <td align="right" class="footer">
8888 <a target="mainFrame" href="http://epydoc.sourceforge.net"
66 <body>
77 <script type="text/javascript">
88 <!--
9 var pages = ["lib.scripting.Clipboard-c", "lib.scripting.Keyboard-c", "lib.scripting.Dialog-c", "lib.scripting.System-c", "lib.scripting.Window-c", "lib.scripting.Mouse-c", "lib.scripting.Store-c", "lib.scripting-m"];
9 var pages = ["lib.scripting.Clipboard-c", "lib.scripting.Keyboard-c", "lib.scripting.Dialog-c", "lib.scripting.Engine-c", "lib.scripting.System-c", "lib.scripting.Window-c", "lib.scripting.Mouse-c", "lib.scripting.Store-c", "lib.scripting-m"];
1010 var dottedName = get_anchor();
1111 if (dottedName) {
1212 var target = redirect_url(dottedName);
1414 <h2 class="toc">All Classes</h2>
1515 <a target="mainFrame" href="lib.scripting.Clipboard-class.html"
1616 >lib.scripting.Clipboard</a><br /> <a target="mainFrame" href="lib.scripting.Dialog-class.html"
17 >lib.scripting.Dialog</a><br /> <a target="mainFrame" href="lib.scripting.Keyboard-class.html"
17 >lib.scripting.Dialog</a><br /> <a target="mainFrame" href="lib.scripting.Engine-class.html"
18 >lib.scripting.Engine</a><br /> <a target="mainFrame" href="lib.scripting.Keyboard-class.html"
1819 >lib.scripting.Keyboard</a><br /> <a target="mainFrame" href="lib.scripting.Mouse-class.html"
1920 >lib.scripting.Mouse</a><br /> <a target="mainFrame" href="lib.scripting.Store-class.html"
2021 >lib.scripting.Store</a><br /> <a target="mainFrame" href="lib.scripting.System-class.html"
2122 >lib.scripting.System</a><br /> <a target="mainFrame" href="lib.scripting.Window-class.html"
22 >lib.scripting.Window</a><br /><hr />
23 >lib.scripting.Window</a><br /> <h2 class="toc">All Variables</h2>
24 <a target="mainFrame" href="lib.scripting-module.html#__package__"
25 >lib.scripting.__package__</a><br /><hr />
2326 <span class="options">[<a href="javascript:void(0);" class="privatelink"
2427 onclick="toggle_private();">hide&nbsp;private</a>]</span>
2528
1414 <h2 class="toc">Classes</h2>
1515 <a target="mainFrame" href="lib.scripting.Clipboard-class.html"
1616 >Clipboard</a><br /> <a target="mainFrame" href="lib.scripting.Dialog-class.html"
17 >Dialog</a><br /> <a target="mainFrame" href="lib.scripting.Keyboard-class.html"
17 >Dialog</a><br /> <a target="mainFrame" href="lib.scripting.Engine-class.html"
18 >Engine</a><br /> <a target="mainFrame" href="lib.scripting.Keyboard-class.html"
1819 >Keyboard</a><br /> <a target="mainFrame" href="lib.scripting.Mouse-class.html"
1920 >Mouse</a><br /> <a target="mainFrame" href="lib.scripting.Store-class.html"
2021 >Store</a><br /> <a target="mainFrame" href="lib.scripting.System-class.html"
2122 >System</a><br /> <a target="mainFrame" href="lib.scripting.Window-class.html"
22 >Window</a><br /><hr />
23 >Window</a><br /> <h2 class="toc">Variables</h2>
24 <a target="mainFrame" href="lib.scripting-module.html#__package__"
25 >__package__</a><br /><hr />
2326 <span class="options">[<a href="javascript:void(0);" class="privatelink"
2427 onclick="toggle_private();">hide&nbsp;private</a>]</span>
2528
1919
2020 setup(
2121 name="autokey",
22 version="0.61.0b",
22 version="0.61.2",
2323 author="Chris Dekter",
2424 author_email="cdekter@gmail.com",
2525 url="http://autokey.googlecode.com/",
3232 #py_modules=["autokey", "configurationmanager", "expansionservice", "interface",
3333 # "iomediator", "phrase", "phrasemenu", "ui"],
3434 package_dir={"autokey": "src/lib"},
35 packages=["autokey", "autokey.plugin", "autokey.ui"],
35 packages=["autokey", "autokey.ui"],
3636 package_data={"autokey.ui" : ["data/gui.xml", "data/api.txt"]},
3737 data_files=[("/usr/share/pixmaps", ["config/akicon.png"]),
3838 ("/usr/share/applications", ["config/autokey.desktop"])],
3636 APP_NAME = "AutoKey"
3737 CATALOG = ""
3838 PROGRAM_NAME = ki18n("AutoKey")
39 VERSION = "0.61.0b"
39 VERSION = "0.61.2"
4040 DESCRIPTION = ki18n("Desktop automation utility")
4141 LICENSE = KAboutData.License_GPL_V3
4242 COPYRIGHT = ki18n("(c) 2009 Chris Dekter")
134134 self.service = service.Service(self)
135135 self.serviceDisabled = False
136136
137 # Initialise user code dir
138 if self.configManager.userCodeDir is not None:
139 sys.path.append(self.configManager.userCodeDir)
140
137141 try:
138142 self.service.start()
139143 except Exception, e:
1818 import os, os.path, shutil, logging, pickle
1919 import iomediator, interface
2020
21 APP_VERSION = "0.61.0"
21 APP_VERSION = "0.61.2"
2222
2323 _logger = logging.getLogger("config-manager")
2424
226226
227227 self.app = app
228228 self.folders = {}
229 self.userCodeDir = None
230
229231 self.configHotkey = GlobalHotkey()
230232 self.configHotkey.set_hotkey(["<ctrl>"], "k")
231233 self.configHotkey.enabled = True
278280 keyboard.send_keys("The text %s was here previously" % text)"""
279281 sampleScripts.add_item(sel)
280282
283 abbrc = Script("Abbreviation from selection", "")
284 abbrc.code = """import time
285 time.sleep(0.25)
286 contents = clipboard.get_selection()
287 retCode, abbr = dialog.input_dialog("New Abbreviation", "Choose an abbreviation for the new phrase")
288 if retCode == 0:
289 if len(contents) > 20:
290 title = contents[0:17] + "..."
291 else:
292 title = contents
293 folder = engine.get_folder("My Phrases")
294 engine.create_abbreviation(folder, title, abbr, contents)"""
295 sampleScripts.add_item(abbrc)
296
297 phrasec = Script("Phrase from selection", "")
298 phrasec.code = """import time
299 time.sleep(0.25)
300 contents = clipboard.get_selection()
301 if len(contents) > 20:
302 title = contents[0:17] + "..."
303 else:
304 title = contents
305 folder = engine.get_folder("My Phrases")
306 engine.create_phrase(folder, title, contents)"""
307 sampleScripts.add_item(phrasec)
308
281309 self.folders[sampleScripts.title] = sampleScripts
282310
283311 # TODO - future functionality
294322 self.showPopupHotkey.set_hotkey(["<ctrl>"], " ")
295323 self.showPopupHotkey.enabled = True
296324 upgradeDone = True
325 if self.VERSION < '0.61.2':
326 self.userCodeDir = None
327 upgradeDone = True
297328
298329 if upgradeDone:
299330 self.config_altered()
494494 self.parent = None
495495 self.showInTrayMenu = False
496496
497 def copy(self, theScript):
498 self.description = theScript.description
499 self.code = theScript.code
500
501 self.prompt = theScript.prompt
502 self.omitTrigger = theScript.omitTrigger
503 self.parent = theScript.parent
504 self.showInTrayMenu = theScript.showInTrayMenu
505 self.copy_abbreviation(theScript)
506 self.copy_hotkey(theScript)
507 self.copy_window_filter(theScript)
508
497509 def get_tuple(self):
498510 return ("text-x-script", self.description, self)
499511
1717
1818 import subprocess, threading, time, re
1919 from PyQt4.QtGui import QClipboard, QApplication
20 import model
2021
2122 class Keyboard:
2223 """
528529 """
529530 self.__runWmctrl(["-r", title, "-b" + action + ',' + prop])
530531
532 def get_active_geometry(self):
533 """
534 Get the geometry of the currently active window
535
536 Usage: C{window.get_active_geometry()}
537
538 Returns a 4-tuple containing the x-origin, y-origin, width and height of the window (in pixels)
539 """
540 active = self.mediator.interface.get_window_title()
541 result, output = self.__runWmctrl(["-l", "-G"])
542 matchingLine = None
543 for line in output.split('\n'):
544 if active in line[34:].split(' ', 1)[-1]:
545 matchingLine = line
546
547 if matchingLine is not None:
548 output = matchingLine[14:].split(' ')[0:3]
549 return map(int, output)
550 else:
551 return None
552
531553 def __runWmctrl(self, args):
532554 p = subprocess.Popen(["wmctrl"] + args, stdout=subprocess.PIPE)
533555 retCode = p.wait()
534556 output = p.stdout.read()[:-1] # Drop trailing newline
535557
536558 return (retCode, output)
559
560
561 class Engine:
562 """
563 Provides access to the internals of AutoKey.
564
565 Note that any configuration changes made using this API while the configuration window
566 is open will not appear until it is closed and re-opened.
567 """
568
569 def __init__(self, configManager, runner):
570 self.configManager = configManager
571 self.runner = runner
572
573 def get_folder(self, title):
574 """
575 Retrieve a folder by its title
576
577 Usage: C{engine.get_folder(title)}
578
579 Note that if more than one folder has the same title, only the first match will be
580 returned.
581 """
582 for folder in self.configManager.allFolders:
583 if folder.title == title:
584 return folder
585 return None
586
587 def create_phrase(self, folder, description, contents):
588 """
589 Create a text phrase
590
591 Usage: C{engine.create_phrase(folder, description, contents)}
592
593 A new phrase with no abbreviation or hotkey is created in the specified folder
594
595 @param folder: folder to place the abbreviation in, retrieved using C{engine.get_folder()}
596 @param description: description for the phrase
597 @param contents: the expansion text
598 """
599 p = model.Phrase(description, contents)
600 folder.add_item(p)
601 self.configManager.config_altered()
602
603 def create_abbreviation(self, folder, description, abbr, contents):
604 """
605 Create a text abbreviation
606
607 Usage: C{engine.create_abbreviation(folder, description, abbr, contents)}
608
609 When the given abbreviation is typed, it will be replaced with the given
610 text.
611
612 @param folder: folder to place the abbreviation in, retrieved using C{engine.get_folder()}
613 @param description: description for the phrase
614 @param abbr: the abbreviation that will trigger the expansion
615 @param contents: the expansion text
616 @raises Exception: if the specified abbreviation is not unique
617 """
618 if not self.configManager.check_abbreviation_unique(abbr, None):
619 raise Exception("The specified abbreviation is already in use")
620
621 p = model.Phrase(description, contents)
622 p.modes.append(model.TriggerMode.ABBREVIATION)
623 p.abbreviation = abbr
624 folder.add_item(p)
625 self.configManager.config_altered()
626
627 def create_hotkey(self, folder, description, modifiers, key, contents):
628 """
629 Create a text hotkey.
630
631 Usage: C{engine.create_hotkey(folder, description, modifiers, key, contents)}
632
633 When the given hotkey is pressed, it will be replaced with the given
634 text. Modifiers must be given as a list of strings, with the following
635 values permitted:
636
637 <control>
638 <alt>
639 <super>
640 <shift>
641
642 The key must be an unshifted character (i.e. lowercase)
643
644 @param folder: folder to place the abbreviation in, retrieved using C{engine.get_folder()}
645 @param description: description for the phrase
646 @param modifiers: modifiers to use with the hotkey (as a list)
647 @param key: the hotkey
648 @param contents: the expansion text
649 @raises Exception: if the specified hotkey is not unique
650 """
651 modifiers.sort()
652 if not self.configManager.check_hotkey_unique(modifiers, key, None):
653 raise Exception("The specified hotkey and modifier combination is already in use")
654
655 p = model.Phrase(description, contents)
656 p.modes.append(model.TriggerMode.HOTKEY)
657 p.set_hotkey(modifiers, key)
658 folder.add_item(p)
659 self.configManager.config_altered()
660
661 def run_script(self, description):
662 """
663 Run an existing script using its description to look it up
664
665 Usage: C{engine.run_script(description)}
666
667 @param description: description of the script to run
668 @raises Exception: if the specified script does not exist
669 """
670 targetScript = None
671 for item in self.configManager.allItems:
672 if item.description == description and isinstance(item, Script):
673 targetScript = item
674
675 if targetScript is not None:
676 self.runner.execute(targetScript, "")
677 else:
678 raise Exception("No script with description '%s' found" % description)
679
680
367367 self.scope["clipboard"] = scripting.Clipboard(app)
368368 self.scope["system"] = scripting.System()
369369 self.scope["window"] = scripting.Window(mediator)
370 self.scope["engine"] = scripting.Engine(app.configManager, self)
370371
371372 def execute(self, script, buffer):
372373 logger.debug("Script runner executing: %r", script)
00 #!/usr/bin/env python
11 # coding=UTF-8
22 #
3 # Generated by pykdeuic4 from centralwidget.ui on Wed Jul 22 19:32:55 2009
3 # Generated by pykdeuic4 from uic/centralwidget.ui on Thu Jan 7 14:11:46 2010
44 #
55 # WARNING! All changes to this file will be lost.
66 from PyKDE4 import kdecore
1616 self.splitter = QtGui.QSplitter(CentralWidget)
1717 self.splitter.setOrientation(QtCore.Qt.Horizontal)
1818 self.splitter.setObjectName("splitter")
19 #self.treeWidget = QtGui.QTreeWidget(self.splitter)
2019 self.treeWidget = AkTreeWidget(self.splitter)
2120 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
2221 sizePolicy.setHorizontalStretch(1)
2322 sizePolicy.setVerticalStretch(0)
2423 sizePolicy.setHeightForWidth(self.treeWidget.sizePolicy().hasHeightForWidth())
2524 self.treeWidget.setSizePolicy(sizePolicy)
25 self.treeWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
2626 self.treeWidget.setDragEnabled(True)
2727 self.treeWidget.setDragDropMode(QtGui.QAbstractItemView.InternalMove)
28 self.treeWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
2829 self.treeWidget.setAnimated(True)
29 self.treeWidget.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
3030 self.treeWidget.setHeaderHidden(True)
3131 self.treeWidget.setObjectName("treeWidget")
3232 self.treeWidget.headerItem().setText(0, "1")
6868 self.horizontalLayout.addWidget(self.splitter)
6969
7070 self.retranslateUi(CentralWidget)
71 self.stack.setCurrentIndex(2)
71 self.stack.setCurrentIndex(0)
7272 QtCore.QMetaObject.connectSlotsByName(CentralWidget)
7373
7474 def retranslateUi(self, CentralWidget):
7575 CentralWidget.setWindowTitle(kdecore.i18n("Form"))
7676
77 from configwindow import PhrasePage, ScriptPage, FolderPage, AkTreeWidget
7877 from PyKDE4.kdeui import KDialogButtonBox
78 from configwindow import AkTreeWidget, PhrasePage, ScriptPage, FolderPage
190190
191191 lex = Qsci.QsciLexerPython(self)
192192 api = Qsci.QsciAPIs(lex)
193 # TODO load api from file
194193 api.load(API_FILE)
195 #api.add("keyboard.send_keys(keys) Send keys")
196194 api.prepare()
197195
198196 self.scriptCodeEditor.setLexer(lex)
209207
210208 def load(self, script):
211209 self.currentScript = script
212 self.descriptionLineEdit.setText(script.description)
213210 self.scriptCodeEditor.clear()
214211 self.scriptCodeEditor.append(script.code)
215212 self.showInTrayCheckbox.setChecked(script.showInTrayMenu)
220217
221218 def save(self):
222219 self.settingsWidget.save()
223 self.currentScript.description = unicode(self.descriptionLineEdit.text())
224220 self.currentScript.code = unicode(self.scriptCodeEditor.text())
225221 self.currentScript.showInTrayMenu = self.showInTrayCheckbox.isChecked()
226222
223 def set_item_title(self, title):
224 self.currentScript.description = title
227225
228226 def reset(self):
229227 self.load(self.currentScript)
261259 self.topLevelWidget().set_redo_available(self.scriptCodeEditor.isRedoAvailable())
262260
263261 def validate(self):
264 description = unicode(self.descriptionLineEdit.text())
265 if not validate(not EMPTY_FIELD_REGEX.match(description), i18n("The script description can't be empty."),
266 self.descriptionLineEdit, self.topLevelWidget()): return False
267
268262 code = unicode(self.scriptCodeEditor.text())
269263 if not validate(not EMPTY_FIELD_REGEX.match(code), i18n("The script code can't be empty."),
270264 self.scriptCodeEditor, self.topLevelWidget()): return False
272266 return True
273267
274268 # --- Signal handlers
275
276 def on_descriptionLineEdit_textEdited(self):
277 self.set_dirty()
278269
279270 def on_scriptCodeEditor_textChanged(self):
280271 self.set_dirty()
299290
300291 def load(self, phrase):
301292 self.currentPhrase = phrase
302 self.descriptionLineEdit.setText(phrase.description)
303293 self.phraseText.setPlainText(phrase.phrase)
304294 self.showInTrayCheckbox.setChecked(phrase.showInTrayMenu)
305295
311301
312302 def save(self):
313303 self.settingsWidget.save()
314 self.currentPhrase.description = unicode(self.descriptionLineEdit.text())
315304 self.currentPhrase.phrase = unicode(self.phraseText.toPlainText())
316305 self.currentPhrase.showInTrayMenu = self.showInTrayCheckbox.isChecked()
317306
320309 # self.currentPhrase.modes.append(model.TriggerMode.PREDICTIVE)
321310
322311 self.currentPhrase.prompt = self.promptCheckbox.isChecked()
312
313 def set_item_title(self, title):
314 self.currentPhrase.description = title
323315
324316 def reset(self):
325317 self.load(self.currentPhrase)
326318
327 def validate(self):
328 description = unicode(self.descriptionLineEdit.text())
329 if not validate(not EMPTY_FIELD_REGEX.match(description), i18n("The phrase description can't be empty."),
330 self.descriptionLineEdit, self.topLevelWidget()): return False
331
319 def validate(self):
332320 phrase = unicode(self.phraseText.toPlainText())
333321 if not validate(not EMPTY_FIELD_REGEX.match(phrase), i18n("The phrase content can't be empty."),
334322 self.phraseText, self.topLevelWidget()): return False
347335 """def insert_token(self, token):
348336 self.phraseText.insertPlainText(token)"""
349337
350 # --- Signal handlers
351
352 def on_descriptionLineEdit_textEdited(self):
353 self.set_dirty()
354
338 # --- Signal handlers
355339 def on_phraseText_textChanged(self):
356340 self.set_dirty()
357341
382366
383367 def load(self, folder):
384368 self.currentFolder = folder
385 self.titleLineEdit.setText(folder.title)
386369 self.showInTrayCheckbox.setChecked(folder.showInTrayMenu)
387370 self.settingsWidget.load(folder)
388371
389372 def save(self):
390 self.currentFolder.title = unicode(self.titleLineEdit.text())
391373 self.currentFolder.showInTrayMenu = self.showInTrayCheckbox.isChecked()
392374 self.settingsWidget.save()
393375
376 def set_item_title(self, title):
377 self.currentFolder.title = title
378
394379 def reset(self):
395380 self.load(self.currentFolder)
396381
397382 def validate(self):
398 title = unicode(self.titleLineEdit.text())
399 if not validate(not EMPTY_FIELD_REGEX.match(title), i18n("The folder title can't be empty."),
400 self.titleLineEdit, self.topLevelWidget()): return False
401
402383 return True
403384
404385 def set_dirty(self):
405386 self.topLevelWidget().set_dirty()
406387
407388 # --- Signal handlers
408
409 def on_titleLineEdit_textChanged(self):
410 self.set_dirty()
411
412389 def on_showInTrayCheckbox_stateChanged(self, state):
413390 self.set_dirty()
414
415391
416392
417393 class AkTreeWidget(QTreeWidget):
448424
449425 def dropEvent(self, event):
450426 target = self.itemAt(event.pos())
451 source = self.selectedItems()[0]
452 self.parentWidget().parentWidget().move_item(source, target)
453
427 sources = self.selectedItems()
428 self.parentWidget().parentWidget().move_items(sources, target)
429
454430
455431 import centralwidget
456432
468444 self.set_dirty(False)
469445 self.configManager = app.configManager
470446 self.recorder = Recorder(self.scriptPage)
447
448 self.cutCopiedItems = []
471449
472450 def populate_tree(self, config):
473451 factory = WidgetItemFactory(config.folders)
507485 menu = factory.container("Context", self.topLevelWidget())
508486 menu.popup(QCursor.pos())
509487
488 def on_treeWidget_itemChanged(self, item, column):
489 if item is self.treeWidget.selectedItems()[0]:
490 newText = unicode(item.text(0))
491 if validate(not EMPTY_FIELD_REGEX.match(newText), i18n("The name can't be empty."),
492 None, self.topLevelWidget()):
493
494 self.stack.currentWidget().set_item_title(newText)
495 self.parentWidget().app.config_altered()
496 else:
497 item.update()
498
510499 def on_treeWidget_itemSelectionChanged(self):
511 modelItem = self.__getSelection()
512
513 if isinstance(modelItem, model.Folder):
514 self.stack.setCurrentIndex(0)
515 self.folderPage.load(modelItem)
516
517 elif isinstance(modelItem, model.Phrase):
518 self.stack.setCurrentIndex(1)
519 self.phrasePage.load(modelItem)
520
521 elif isinstance(modelItem, model.Script):
522 self.stack.setCurrentIndex(2)
523 self.scriptPage.load(modelItem)
524
525 self.topLevelWidget().update_actions(modelItem)
526 self.set_dirty(False)
527 self.parentWidget().cancel_record()
500 modelItems = self.__getSelection()
501
502 if len(modelItems) == 1:
503 modelItem = modelItems[0]
504 if isinstance(modelItem, model.Folder):
505 self.stack.setCurrentIndex(0)
506 self.folderPage.load(modelItem)
507
508 elif isinstance(modelItem, model.Phrase):
509 self.stack.setCurrentIndex(1)
510 self.phrasePage.load(modelItem)
511
512 elif isinstance(modelItem, model.Script):
513 self.stack.setCurrentIndex(2)
514 self.scriptPage.load(modelItem)
515
516 self.topLevelWidget().update_actions(modelItems, True)
517 self.set_dirty(False)
518 self.parentWidget().cancel_record()
519
520 else:
521 self.topLevelWidget().update_actions(modelItems, False)
528522
529523 def on_new_topfolder(self):
530524 self.__createFolder(None)
535529
536530 def on_new_phrase(self):
537531 parentItem = self.treeWidget.selectedItems()[0]
538 parent = self.__getSelection()
532 parent = self.__extractData(parentItem)
539533
540534 phrase = model.Phrase("New Phrase", "Enter phrase contents")
541535 newItem = PhraseWidgetItem(parentItem, phrase)
543537
544538 self.treeWidget.sortItems(0, Qt.AscendingOrder)
545539 self.treeWidget.setCurrentItem(newItem)
546 self.on_treeWidget_itemSelectionChanged()
540 self.on_treeWidget_itemSelectionChanged()
541 self.on_rename()
547542
548543 def on_new_script(self):
549544 parentItem = self.treeWidget.selectedItems()[0]
550 parent = self.__getSelection()
545 parent = self.__extractData(parentItem)
551546
552547 script = model.Script("New Script", "#Enter script code")
553548 newItem = ScriptWidgetItem(parentItem, script)
555550
556551 self.treeWidget.sortItems(0, Qt.AscendingOrder)
557552 self.treeWidget.setCurrentItem(newItem)
558 self.on_treeWidget_itemSelectionChanged()
553 self.on_treeWidget_itemSelectionChanged()
554 self.on_rename()
559555
560556 def on_undo(self):
561557 self.stack.currentWidget().undo()
564560 self.stack.currentWidget().redo()
565561
566562 def on_convert(self):
563 """
564 @deprecated
565 """
567566 sourceItem = self.treeWidget.selectedItems()[0]
568567 parentItem = sourceItem.parent()
569568 source = self.__getSelection()
582581 self.treeWidget.setCurrentItem(newItem)
583582 self.on_treeWidget_itemSelectionChanged()
584583 self.parentWidget().app.config_altered()
584
585 def on_copy(self):
586 sourceObjects = self.__getSelection()
587
588 for source in sourceObjects:
589 if isinstance(source, model.Phrase):
590 newObj = model.Phrase('', '')
591 else:
592 newObj = model.Script('', '')
593 newObj.copy(source)
594 self.cutCopiedItems.append(newObj)
595
596 def on_cut(self):
597 self.cutCopiedItems = self.__getSelection()
598
599 sourceItems = self.treeWidget.selectedItems()
600 result = filter(lambda f: f.parent() not in sourceItems, sourceItems)
601 for item in result:
602 self.__removeItem(item)
603 self.parentWidget().app.config_altered()
604
605 def on_paste(self):
606 parentItem = self.treeWidget.selectedItems()[0]
607 parent = self.__extractData(parentItem)
608
609 newItems = []
610 for item in self.cutCopiedItems:
611 if isinstance(item, model.Folder):
612 f = WidgetItemFactory(None)
613 newItem = FolderWidgetItem(parentItem, item)
614 f.processFolder(newItem, item)
615 parent.add_folder(item)
616 elif isinstance(item, model.Phrase):
617 newItem = PhraseWidgetItem(parentItem, item)
618 parent.add_item(item)
619 else:
620 newItem = ScriptWidgetItem(parentItem, item)
621 parent.add_item(item)
622
623 newItems.append(newItem)
624
625 self.treeWidget.sortItems(0, Qt.AscendingOrder)
626 self.treeWidget.setCurrentItem(newItems[-1])
627 self.on_treeWidget_itemSelectionChanged()
628 self.cutCopiedItems = []
629 for item in newItems:
630 self.treeWidget.setItemSelected(item, True)
631 self.parentWidget().app.config_altered()
585632
586633 def on_delete(self):
634 widgetItems = self.treeWidget.selectedItems()
635
636 for widgetItem in widgetItems:
637 if widgetItem.childCount() > 0:
638 folder = self.__extractData(widgetItem)
639 result = KMessageBox.questionYesNo(self.topLevelWidget(),
640 "Are you sure you want to delete the %s folder and all the items in it?" % folder.title)
641 if result == KMessageBox.Yes:
642 self.__removeItem(widgetItem)
643
644 else:
645 self.__removeItem(widgetItem)
646
647 self.parentWidget().app.config_altered()
648
649 def on_rename(self):
587650 widgetItem = self.treeWidget.selectedItems()[0]
588
589 if widgetItem.childCount() > 0:
590 result = KMessageBox.questionYesNo(self.topLevelWidget(),
591 i18n("Are you sure you want to delete this folder and all the items in it?"))
592 if result == KMessageBox.Yes:
593 self.__removeItem()
594
595 else:
596 self.__removeItem()
651 self.treeWidget.editItem(widgetItem)
597652
598653 def on_save(self):
599654 if self.stack.currentWidget().validate():
611666 self.set_dirty(False)
612667 self.parentWidget().cancel_record()
613668
614 def move_item(self, source, target):
615 sourceModelItem = self.__extractData(source)
669 def move_items(self, sourceItems, target):
616670 targetModelItem = self.__extractData(target)
617671
618 self.__removeItem()
619
620 if isinstance(sourceModelItem, model.Folder):
621 targetModelItem.add_folder(sourceModelItem)
622 else:
623 targetModelItem.add_item(sourceModelItem)
624
625 target.addChild(source)
626 self.parentWidget().app.config_altered()
672 # Filter out any child objects that belong to a parent already in the list
673 result = filter(lambda f: f.parent() not in sourceItems, sourceItems)
674
675 for source in result:
676 self.__removeItem(source)
677 sourceModelItem = self.__extractData(source)
678
679 if isinstance(sourceModelItem, model.Folder):
680 targetModelItem.add_folder(sourceModelItem)
681 else:
682 targetModelItem.add_item(sourceModelItem)
683
684 target.addChild(source)
685
686 self.treeWidget.sortItems(0, Qt.AscendingOrder)
687 self.parentWidget().app.config_altered()
627688
628689
629690 # ---- Private methods
630691
631692 def __getSelection(self):
632 item = self.treeWidget.selectedItems()[0]
633 return self.__extractData(item)
693 items = self.treeWidget.selectedItems()
694 ret = []
695 for item in items:
696 ret.append(self.__extractData(item))
697
698 # Filter out any child objects that belong to a parent already in the list
699 result = filter(lambda f: f.parent not in ret, ret)
700 return result
634701
635702 def __extractData(self, item):
636703 variant = item.data(1, Qt.UserRole)
638705
639706 def __createFolder(self, parentItem):
640707 folder = model.Folder("New Folder")
641 newItem = FolderWidgetItem(parentItem, folder)
642
708 newItem = FolderWidgetItem(parentItem, folder)
709
643710 if parentItem is not None:
644 parentFolder = self.__getSelection()
711 parentFolder = self.__extractData(parentItem)
645712 parentFolder.add_folder(folder)
646713 else:
647714 self.treeWidget.addTopLevelItem(newItem)
650717 self.treeWidget.sortItems(0, Qt.AscendingOrder)
651718 self.treeWidget.setCurrentItem(newItem)
652719 self.on_treeWidget_itemSelectionChanged()
653
654 def __removeItem(self):
655 widgetItem = self.treeWidget.selectedItems()[0]
656 item = self.__getSelection()
720 self.on_rename()
721
722 def __removeItem(self, widgetItem):
657723 parent = widgetItem.parent()
724 item = self.__extractData(widgetItem)
658725
659726 if parent is None:
660727 self.treeWidget.removeItemWidget(widgetItem, 0)
667734 else:
668735 item.parent.remove_item(item)
669736
670 self.parentWidget().app.config_altered()
671737 self.treeWidget.sortItems(0, Qt.AscendingOrder)
672738
673739
703769 KStandardAction.quit(self.on_quit, self.actionCollection())
704770
705771 # Edit Menu
706 #self.cut = self.__createAction("cut-item", i18n("Cut Item"), "edit-cut", self.new_folder)
707 #self.copy = self.__createAction("copy-item", i18n("Copy Item"), "edit-copy", self.new_folder)
708 #self.paste = self.__createAction("paste-item", i18n("Paste Item"), "edit-paste", self.new_folder)
772 self.cut = self.__createAction("cut-item", i18n("Cut Item"), "edit-cut", self.centralWidget.on_cut)
773 self.copy = self.__createAction("copy-item", i18n("Copy Item"), "edit-copy", self.centralWidget.on_copy)
774 self.paste = self.__createAction("paste-item", i18n("Paste Item"), "edit-paste", self.centralWidget.on_paste)
775 self.cut.setShortcut(QKeySequence("Ctrl+Shift+x"))
776 self.copy.setShortcut(QKeySequence("Ctrl+Shift+c"))
777 self.paste.setShortcut(QKeySequence("Ctrl+Shift+v"))
709778
710779 self.undo = self.__createAction("undo", i18n("Undo"), "edit-undo", self.centralWidget.on_undo, KStandardShortcut.Undo)
711780 self.redo = self.__createAction("redo", i18n("Redo"), "edit-redo", self.centralWidget.on_redo, KStandardShortcut.Redo)
712781
713 self.convert = self.__createAction("convert", i18n("Convert to Script"), None, self.centralWidget.on_convert)
782 self.__createAction("rename", i18n("Rename"), None, self.centralWidget.on_rename)
783
784 #self.convert = self.__createAction("convert", i18n("Convert to Script"), None, self.centralWidget.on_convert)
714785 self.delete = self.__createAction("delete-item", i18n("Delete"), "edit-delete", self.centralWidget.on_delete)
786 self.delete.setShortcut(QKeySequence("Ctrl+d"))
715787 self.record = self.__createToggleAction("record", i18n("Record Macro"), self.on_record, "media-record")
716788
717789 # Settings Menu
734806 self.undo.setEnabled(False)
735807 self.redo.setEnabled(False)
736808
737 self.cutCopiedItem = None
738
739809 self.centralWidget.populate_tree(self.app.configManager)
740810
741811 self.setAutoSaveSettings()
747817 def is_dirty(self):
748818 return self.centralWidget.dirty
749819
750 def update_actions(self, item):
751 canCreate = isinstance(item, model.Folder)
752
753 self.create.setEnabled(canCreate)
754 self.newTopFolder.setEnabled(True)
755 self.newFolder.setEnabled(canCreate)
756 self.newPhrase.setEnabled(canCreate)
757 self.newScript.setEnabled(canCreate)
758 self.save.setEnabled(False)
759
760 #self.copy.setEnabled(not canCreate)
761 #self.paste.setEnabled(canCreate and self.cutCopiedItem is not None)
762 self.convert.setEnabled(isinstance(item, model.Phrase))
763 self.record.setEnabled(isinstance(item, model.Script))
764 self.undo.setEnabled(False)
765 self.redo.setEnabled(False)
820 def update_actions(self, items, changed):
821 if len(items) > 0:
822 canCreate = isinstance(items[0], model.Folder) and len(items) == 1
823 canCopy = True
824 for item in items:
825 if isinstance(item, model.Folder):
826 canCopy = False
827 break
828
829 self.create.setEnabled(True)
830 self.newTopFolder.setEnabled(True)
831 self.newFolder.setEnabled(canCreate)
832 self.newPhrase.setEnabled(canCreate)
833 self.newScript.setEnabled(canCreate)
834
835 self.copy.setEnabled(canCopy)
836 self.paste.setEnabled(canCreate and len(self.centralWidget.cutCopiedItems) > 0)
837 #self.convert.setEnabled(isinstance(item, model.Phrase))
838 self.record.setEnabled(isinstance(items[0], model.Script) and len(items) == 1)
839
840 if changed:
841 self.save.setEnabled(False)
842 self.undo.setEnabled(False)
843 self.redo.setEnabled(False)
766844
767845 def set_undo_available(self, state):
768846 self.undo.setEnabled(state)
899977 for folder in self.folders.values():
900978 item = self.__buildItem(None, folder)
901979 rootItems.append(item)
902 self.__processFolder(item, folder)
980 self.processFolder(item, folder)
903981
904982 return rootItems
905983
906 def __processFolder(self, parentItem, parentFolder):
984 def processFolder(self, parentItem, parentFolder):
907985 for folder in parentFolder.folders:
908986 item = self.__buildItem(parentItem, folder)
909 self.__processFolder(item, folder)
987 self.processFolder(item, folder)
910988
911989 for childModelItem in parentFolder.items:
912990 self.__buildItem(parentItem, childModelItem)
9291007 self.setText(0, folder.title)
9301008 self.setData(1, Qt.UserRole, QVariant(folder))
9311009 if parent is not None:
932 parent.addChild(self)
1010 parent.addChild(self)
1011
1012 self.setFlags(self.flags() | Qt.ItemIsEditable)
9331013
9341014 def update(self):
9351015 self.setText(0, self.folder.title)
9581038 if parent is not None:
9591039 parent.addChild(self)
9601040
1041 self.setFlags(self.flags() | Qt.ItemIsEditable)
1042
9611043 def update(self):
9621044 self.setText(0, self.phrase.description)
9631045
9851067 if parent is not None:
9861068 parent.addChild(self)
9871069
1070 self.setFlags(self.flags() | Qt.ItemIsEditable)
1071
9881072 def update(self):
9891073 self.setText(0, self.script.description)
9901074
1010 dialog.open_file(title="Open File", initialDir="~", fileTypes="*|All Files", rememberAs=None) Show an Open File dialog
1111 dialog.password_dialog(title="Enter password", message="Enter password") Show a password input dialog
1212 dialog.save_file(title="Save As", initialDir="~", fileTypes="*|All Files", rememberAs=None) Show a Save As dialog
13 engine.create_abbreviation(folder, description, abbr, contents) Create a text abbreviation
14 engine.create_hotkey(folder, description, modifiers, key, contents) Create a text hotkey.
15 engine.create_phrase(folder, description, contents) Create a text phrase
16 engine.get_folder(title) Retrieve a folder by its title
17 engine.run_script(description) Run an existing script using its description to look it up
1318 keyboard.send_key(key, repeat=1) Send a keyboard event
1419 keyboard.send_keys(keyString) Send a sequence of keys via keyboard events
20 mouse.click_absolute(x, y, button) Send a mouse click relative to the screen (absolute)
21 mouse.click_relative(x, y, button) Send a mouse click relative to the active window
1522 store.get_value(key) Get a value
1623 store.remove_value(key) Remove a value
1724 store.set_value(key, value) Store a value
1926 system.exec_command(command) Execute a shell command
2027 window.activate(title, switchDesktop=False) Activate the specified window, giving it input focus
2128 window.close(title) Close the specified window gracefully
29 window.get_active_geometry() Get the geometry of the currently active window
2230 window.move_to_desktop(title, deskNum) Move the specified window to the given desktop
2331 window.close(title, xOrigin=-1, yOrigin=-1, width=-1, height=-1) Resize and/or move the specified window
2432 window.set_property(title, title, action, prop) Set a property on the given window using the specified action
1313 <Action name="close-window" />
1414 </Menu>
1515 <Menu name="edit" >
16 <!--<Action name="cut-item" />
17 <Action name="copy-item" />
18 <Action name="paste-item" />-->
1916 <Action name="undo" />
2017 <Action name="redo" />
2118 <separator />
19 <Action name="cut-item" />
20 <Action name="copy-item" />
21 <Action name="paste-item" />
2222 <Action name="delete-item" />
23 <separator />
24 <Action name="convert" />
23 <separator />
24 <Action name="rename" />
25 <separator />
2526 <Action name="record" />
2627 </Menu>
2728 <Menu name="settings" >
4344 <Action name="new-phrase" />
4445 <Action name="new-script" />
4546 <separator />
47 <Action name="cut-item" />
48 <Action name="copy-item" />
49 <Action name="paste-item" />
4650 <Action name="delete-item" />
4751 <separator />
48 <Action name="convert" />
52 <Action name="rename" />
4953 </Menu>
5054
5155 <ToolBar name="ToolBar" noMerge="1" >
5256 <text>ToolBar</text>
5357 <Action name="create" />
58 <separator />
59 <Action name="cut-item" />
60 <Action name="copy-item" />
61 <Action name="paste-item" />
5462 <Action name="delete-item" />
5563 <separator />
5664 <Action name="undo" />
0 #!/usr/bin/env python
1 # coding=UTF-8
2 #
3 # Generated by pykdeuic4 from uic/enginesettings.ui on Fri Jan 1 14:50:48 2010
4 #
5 # WARNING! All changes to this file will be lost.
6 from PyKDE4 import kdecore
7 from PyKDE4 import kdeui
8 from PyQt4 import QtCore, QtGui
9
10 class Ui_Form(object):
11 def setupUi(self, Form):
12 Form.setObjectName("Form")
13 Form.resize(400, 300)
14 self.verticalLayout_2 = QtGui.QVBoxLayout(Form)
15 self.verticalLayout_2.setObjectName("verticalLayout_2")
16 self.groupBox = QtGui.QGroupBox(Form)
17 self.groupBox.setObjectName("groupBox")
18 self.verticalLayout = QtGui.QVBoxLayout(self.groupBox)
19 self.verticalLayout.setObjectName("verticalLayout")
20 self.label = QtGui.QLabel(self.groupBox)
21 self.label.setWordWrap(True)
22 self.label.setObjectName("label")
23 self.verticalLayout.addWidget(self.label)
24 self.horizontalLayout = QtGui.QHBoxLayout()
25 self.horizontalLayout.setObjectName("horizontalLayout")
26 self.folderLabel = QtGui.QLabel(self.groupBox)
27 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.MinimumExpanding, QtGui.QSizePolicy.Preferred)
28 sizePolicy.setHorizontalStretch(0)
29 sizePolicy.setVerticalStretch(0)
30 sizePolicy.setHeightForWidth(self.folderLabel.sizePolicy().hasHeightForWidth())
31 self.folderLabel.setSizePolicy(sizePolicy)
32 self.folderLabel.setObjectName("folderLabel")
33 self.horizontalLayout.addWidget(self.folderLabel)
34 self.browseButton = QtGui.QPushButton(self.groupBox)
35 self.browseButton.setObjectName("browseButton")
36 self.horizontalLayout.addWidget(self.browseButton)
37 self.verticalLayout.addLayout(self.horizontalLayout)
38 self.verticalLayout_2.addWidget(self.groupBox)
39 spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
40 self.verticalLayout_2.addItem(spacerItem)
41
42 self.retranslateUi(Form)
43 QtCore.QMetaObject.connectSlotsByName(Form)
44
45 def retranslateUi(self, Form):
46 Form.setWindowTitle(kdecore.i18n("Form"))
47 self.groupBox.setTitle(kdecore.i18n("User Module Folder"))
48 self.label.setText(kdecore.i18n("Any Python modules placed in this folder will be available for import by scripts."))
49 self.folderLabel.setText(kdecore.i18n("None selected"))
50 self.browseButton.setText(kdecore.i18n("Browse"))
51
00 #!/usr/bin/env python
11 # coding=UTF-8
22 #
3 # Generated by pykdeuic4 from uic/folderpage.ui on Thu Jul 30 14:30:25 2009
3 # Generated by pykdeuic4 from uic/folderpage.ui on Thu Jan 7 13:58:04 2010
44 #
55 # WARNING! All changes to this file will be lost.
66 from PyKDE4 import kdecore
1313 FolderPage.resize(568, 530)
1414 self.verticalLayout_2 = QtGui.QVBoxLayout(FolderPage)
1515 self.verticalLayout_2.setObjectName("verticalLayout_2")
16 self.titleLabel = QtGui.QLabel(FolderPage)
17 self.titleLabel.setObjectName("titleLabel")
18 self.verticalLayout_2.addWidget(self.titleLabel)
19 self.titleLineEdit = KLineEdit(FolderPage)
20 self.titleLineEdit.setObjectName("titleLineEdit")
21 self.verticalLayout_2.addWidget(self.titleLineEdit)
2216 self.settingsGroupBox = QtGui.QGroupBox(FolderPage)
2317 self.settingsGroupBox.setObjectName("settingsGroupBox")
2418 self.verticalLayout = QtGui.QVBoxLayout(self.settingsGroupBox)
4135
4236 def retranslateUi(self, FolderPage):
4337 FolderPage.setWindowTitle(kdecore.i18n("Form"))
44 self.titleLabel.setText(kdecore.i18n("Folder"))
45 self.settingsGroupBox.setTitle(kdecore.i18n("Settings"))
38 self.settingsGroupBox.setTitle(kdecore.i18n("Folder Settings"))
4639 self.showInTrayCheckbox.setText(kdecore.i18n("Show in tray menu"))
4740
48 from PyKDE4.kdeui import KSeparator, KLineEdit
41 from PyKDE4.kdeui import KSeparator
4942 from configwindow import SettingsWidget
00 #!/usr/bin/env python
11 # coding=UTF-8
22 #
3 # Generated by pykdeuic4 from uic/generalsettings.ui on Sat Aug 1 00:25:41 2009
3 # Generated by pykdeuic4 from uic/generalsettings.ui on Thu Jan 7 17:26:09 2010
44 #
55 # WARNING! All changes to this file will be lost.
66 from PyKDE4 import kdecore
5151
5252 def retranslateUi(self, Form):
5353 Form.setWindowTitle(kdecore.i18n("Form"))
54 self.groupBox.setTitle(kdecore.i18n("Main Window"))
54 self.groupBox.setTitle(kdecore.i18n("Application"))
5555 self.promptToSaveCheckbox.setText(kdecore.i18n("Prompt for unsaved changes"))
5656 self.showTrayCheckbox.setText(kdecore.i18n("Show a tray icon (requires restart)"))
5757 self.groupBox_2.setTitle(kdecore.i18n("Popup Menu"))
00 #!/usr/bin/env python
11 # coding=UTF-8
22 #
3 # Generated by pykdeuic4 from uic/phrasepage.ui on Fri Jul 31 11:03:00 2009
3 # Generated by pykdeuic4 from uic/phrasepage.ui on Thu Jan 7 13:58:13 2010
44 #
55 # WARNING! All changes to this file will be lost.
66 from PyKDE4 import kdecore
1313 PhrasePage.resize(540, 602)
1414 self.verticalLayout_2 = QtGui.QVBoxLayout(PhrasePage)
1515 self.verticalLayout_2.setObjectName("verticalLayout_2")
16 self.descriptionLabel = QtGui.QLabel(PhrasePage)
17 self.descriptionLabel.setObjectName("descriptionLabel")
18 self.verticalLayout_2.addWidget(self.descriptionLabel)
19 self.descriptionLineEdit = KLineEdit(PhrasePage)
20 self.descriptionLineEdit.setObjectName("descriptionLineEdit")
21 self.verticalLayout_2.addWidget(self.descriptionLineEdit)
2216 self.phraseText = KTextEdit(PhrasePage)
2317 self.phraseText.setTabChangesFocus(True)
2418 self.phraseText.setLineWrapMode(QtGui.QTextEdit.NoWrap)
4842
4943 def retranslateUi(self, PhrasePage):
5044 PhrasePage.setWindowTitle(kdecore.i18n("Form"))
51 self.descriptionLabel.setText(kdecore.i18n("Phrase"))
52 self.settingsGroupBox.setTitle(kdecore.i18n("Settings"))
45 self.settingsGroupBox.setTitle(kdecore.i18n("Phrase Settings"))
5346 self.promptCheckbox.setText(kdecore.i18n("Always prompt before pasting this phrase"))
5447 self.showInTrayCheckbox.setText(kdecore.i18n("Show in tray menu"))
5548
56 from PyKDE4.kdeui import KSeparator, KTextEdit, KLineEdit
49 from PyKDE4.kdeui import KSeparator, KTextEdit
5750 from configwindow import SettingsWidget
00 #!/usr/bin/env python
11 # coding=UTF-8
22 #
3 # Generated by pykdeuic4 from uic/scriptpage.ui on Tue Jul 28 14:58:43 2009
3 # Generated by pykdeuic4 from uic/scriptpage.ui on Thu Jan 7 13:58:21 2010
44 #
55 # WARNING! All changes to this file will be lost.
66 from PyKDE4 import kdecore
1313 ScriptPage.resize(587, 581)
1414 self.verticalLayout_2 = QtGui.QVBoxLayout(ScriptPage)
1515 self.verticalLayout_2.setObjectName("verticalLayout_2")
16 self.descriptionLabel = QtGui.QLabel(ScriptPage)
17 self.descriptionLabel.setObjectName("descriptionLabel")
18 self.verticalLayout_2.addWidget(self.descriptionLabel)
19 self.descriptionLineEdit = KLineEdit(ScriptPage)
20 self.descriptionLineEdit.setObjectName("descriptionLineEdit")
21 self.verticalLayout_2.addWidget(self.descriptionLineEdit)
2216 self.scriptCodeEditor = Qsci.QsciScintilla(ScriptPage)
2317 self.scriptCodeEditor.setObjectName("scriptCodeEditor")
2418 self.verticalLayout_2.addWidget(self.scriptCodeEditor)
4539
4640 def retranslateUi(self, ScriptPage):
4741 ScriptPage.setWindowTitle(kdecore.i18n("Form"))
48 self.descriptionLabel.setText(kdecore.i18n("Script"))
49 self.settingsGroupbox.setTitle(kdecore.i18n("Settings"))
42 self.settingsGroupbox.setTitle(kdecore.i18n("Script Settings"))
5043 self.promptCheckbox.setText(kdecore.i18n("Always prompt before running this script"))
5144 self.showInTrayCheckbox.setText(kdecore.i18n("Show in tray menu"))
5245
5346 from PyQt4 import Qsci
54 from PyKDE4.kdeui import KSeparator, KLineEdit
47 from PyKDE4.kdeui import KSeparator
5548 from configwindow import SettingsWidget
1515 # along with this program; if not, write to the Free Software
1616 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1717
18 import sys
19
1820 from PyKDE4.kdeui import *
19 from PyKDE4.kdecore import i18n
21 from PyKDE4.kdecore import i18n, KAutostart
2022 from PyQt4.QtGui import *
2123 from PyQt4.QtCore import SIGNAL, Qt
2224
2426 from autokey import iomediator, interface, model
2527 from dialogs import GlobalHotkeyDialog
2628
27 import generalsettings, specialhotkeysettings, interfacesettings
29 import generalsettings, specialhotkeysettings, interfacesettings, enginesettings
2830
2931 class GeneralSettings(QWidget, generalsettings.Ui_Form):
3032
3234 QWidget.__init__(self, parent)
3335 generalsettings.Ui_Form.__init__(self)
3436 self.setupUi(self)
35
37
3638 self.promptToSaveCheckbox.setChecked(ConfigManager.SETTINGS[PROMPT_TO_SAVE])
3739 self.showTrayCheckbox.setChecked(ConfigManager.SETTINGS[SHOW_TRAY_ICON])
3840 self.allowKbNavCheckbox.setChecked(ConfigManager.SETTINGS[MENU_TAKES_FOCUS])
139141 self.monitorKeyLabel.setText(i18n("(None configured)"))
140142 self.toggleMonitorDlg.reset()
141143
144 class EngineSettings(QWidget, enginesettings.Ui_Form):
145
146 def __init__(self, parent, configManager):
147 QWidget.__init__(self, parent)
148 enginesettings.Ui_Form.__init__(self)
149 self.setupUi(self)
150 self.configManager = configManager
151
152 if configManager.userCodeDir is not None:
153 self.folderLabel.setText(configManager.userCodeDir)
154 if configManager.userCodeDir in sys.path:
155 sys.path.remove(configManager.userCodeDir)
156
157 self.path = configManager.userCodeDir
158
159 def save(self):
160 if self.path is not None:
161 self.configManager.userCodeDir = self.path
162 sys.path.append(self.path)
163
164 def on_browseButton_pressed(self):
165 path = KFileDialog.getExistingDirectory(self.parentWidget(), i18n("Choose Directory"))
166 if path != '':
167 self.path = path
168 self.folderLabel.setText(self.path)
169
142170
143171 class InterfaceSettings(QWidget, interfacesettings.Ui_Form):
144172
177205 self.hkPage = self.addPage(SpecialHotkeySettings(self, parent.app.configManager), i18n("Special Hotkeys"))
178206 self.hkPage.setIcon(KIcon("preferences-desktop-keyboard"))
179207
208 self.ePage = self.addPage(EngineSettings(self, parent.app.configManager), i18n("Script Engine"))
209 self.ePage.setIcon(KIcon("text-x-script"))
210
180211 self.iPage = self.addPage(InterfaceSettings(self), i18n("Interface"))
181212 self.iPage.setIcon(KIcon("preferences-system"))
182213
186217 if button == KDialog.Ok:
187218 self.genPage.widget().save()
188219 self.hkPage.widget().save()
220 self.ePage.widget().save()
189221 self.iPage.widget().save()
190222 KDialog.slotButtonClicked(self, button)
223
3333 </property>
3434 <property name="dragDropMode">
3535 <enum>QAbstractItemView::InternalMove</enum>
36 </property>
37 <property name="selectionMode">
38 <enum>QAbstractItemView::ExtendedSelection</enum>
3639 </property>
3740 <property name="animated">
3841 <bool>true</bool>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <ui version="4.0">
2 <class>Form</class>
3 <widget class="QWidget" name="Form">
4 <property name="geometry">
5 <rect>
6 <x>0</x>
7 <y>0</y>
8 <width>400</width>
9 <height>300</height>
10 </rect>
11 </property>
12 <property name="windowTitle">
13 <string>Form</string>
14 </property>
15 <layout class="QVBoxLayout" name="verticalLayout_2">
16 <item>
17 <widget class="QGroupBox" name="groupBox">
18 <property name="title">
19 <string>User Module Folder</string>
20 </property>
21 <layout class="QVBoxLayout" name="verticalLayout">
22 <item>
23 <widget class="QLabel" name="label">
24 <property name="text">
25 <string>Any Python modules placed in this folder will be available for import by scripts.</string>
26 </property>
27 <property name="wordWrap">
28 <bool>true</bool>
29 </property>
30 </widget>
31 </item>
32 <item>
33 <layout class="QHBoxLayout" name="horizontalLayout">
34 <item>
35 <widget class="QLabel" name="folderLabel">
36 <property name="sizePolicy">
37 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
38 <horstretch>0</horstretch>
39 <verstretch>0</verstretch>
40 </sizepolicy>
41 </property>
42 <property name="text">
43 <string>None selected</string>
44 </property>
45 </widget>
46 </item>
47 <item>
48 <widget class="QPushButton" name="browseButton">
49 <property name="text">
50 <string>Browse</string>
51 </property>
52 </widget>
53 </item>
54 </layout>
55 </item>
56 </layout>
57 </widget>
58 </item>
59 <item>
60 <spacer name="verticalSpacer">
61 <property name="orientation">
62 <enum>Qt::Vertical</enum>
63 </property>
64 <property name="sizeHint" stdset="0">
65 <size>
66 <width>20</width>
67 <height>40</height>
68 </size>
69 </property>
70 </spacer>
71 </item>
72 </layout>
73 </widget>
74 <resources/>
75 <connections/>
76 </ui>
1414 </property>
1515 <layout class="QVBoxLayout" name="verticalLayout_2">
1616 <item>
17 <widget class="QLabel" name="titleLabel">
18 <property name="text">
19 <string>Folder</string>
20 </property>
21 </widget>
22 </item>
23 <item>
24 <widget class="KLineEdit" name="titleLineEdit"/>
25 </item>
26 <item>
2717 <widget class="QGroupBox" name="settingsGroupBox">
2818 <property name="title">
29 <string>Settings</string>
19 <string>Folder Settings</string>
3020 </property>
3121 <layout class="QVBoxLayout" name="verticalLayout">
3222 <item>
6252 </widget>
6353 <customwidgets>
6454 <customwidget>
65 <class>KLineEdit</class>
66 <extends>QLineEdit</extends>
67 <header>klineedit.h</header>
68 </customwidget>
69 <customwidget>
7055 <class>KSeparator</class>
7156 <extends>QFrame</extends>
7257 <header>kseparator.h</header>
1616 <item>
1717 <widget class="QGroupBox" name="groupBox">
1818 <property name="title">
19 <string>Main Window</string>
19 <string>Application</string>
2020 </property>
2121 <layout class="QVBoxLayout" name="verticalLayout">
2222 <item>
1414 </property>
1515 <layout class="QVBoxLayout" name="verticalLayout_2">
1616 <item>
17 <widget class="QLabel" name="descriptionLabel">
18 <property name="text">
19 <string>Phrase</string>
20 </property>
21 </widget>
22 </item>
23 <item>
24 <widget class="KLineEdit" name="descriptionLineEdit"/>
25 </item>
26 <item>
2717 <widget class="KTextEdit" name="phraseText">
2818 <property name="tabChangesFocus">
2919 <bool>true</bool>
3929 <item>
4030 <widget class="QGroupBox" name="settingsGroupBox">
4131 <property name="title">
42 <string>Settings</string>
32 <string>Phrase Settings</string>
4333 </property>
4434 <layout class="QVBoxLayout" name="verticalLayout">
4535 <item>
6959 </widget>
7060 <customwidgets>
7161 <customwidget>
72 <class>KLineEdit</class>
73 <extends>QLineEdit</extends>
74 <header>klineedit.h</header>
75 </customwidget>
76 <customwidget>
7762 <class>KSeparator</class>
7863 <extends>QFrame</extends>
7964 <header>kseparator.h</header>
1414 </property>
1515 <layout class="QVBoxLayout" name="verticalLayout_2">
1616 <item>
17 <widget class="QLabel" name="descriptionLabel">
18 <property name="text">
19 <string>Script</string>
20 </property>
21 </widget>
22 </item>
23 <item>
24 <widget class="KLineEdit" name="descriptionLineEdit"/>
25 </item>
26 <item>
2717 <widget class="QsciScintilla" name="scriptCodeEditor">
2818 <property name="toolTip">
2919 <string/>
3626 <item>
3727 <widget class="QGroupBox" name="settingsGroupbox">
3828 <property name="title">
39 <string>Settings</string>
29 <string>Script Settings</string>
4030 </property>
4131 <layout class="QVBoxLayout" name="verticalLayout">
4232 <item>
6656 </widget>
6757 <customwidgets>
6858 <customwidget>
69 <class>KLineEdit</class>
70 <extends>QLineEdit</extends>
71 <header>klineedit.h</header>
72 </customwidget>
73 <customwidget>
7459 <class>KSeparator</class>
7560 <extends>QFrame</extends>
7661 <header>kseparator.h</header>
77 </customwidget>
78 <customwidget>
79 <class>QsciScintilla</class>
80 <extends>QFrame</extends>
81 <header>Qsci/qsciscintilla.h</header>
8262 </customwidget>
8363 <customwidget>
8464 <class>SettingsWidget</class>
8666 <header>configwindow.h</header>
8767 <container>1</container>
8868 </customwidget>
69 <customwidget>
70 <class>QsciScintilla</class>
71 <extends>QFrame</extends>
72 <header>Qsci/qsciscintilla.h</header>
73 <container>1</container>
74 </customwidget>
8975 </customwidgets>
9076 <resources/>
9177 <connections/>