Codebase list autokey / upstream/0.70.2
Imported Upstream version 0.70.2 SVN-Git Migration 6 years ago
36 changed file(s) with 1752 addition(s) and 1181 deletion(s). Raw diff Collapse all Expand all
00 Metadata-Version: 1.0
11 Name: autokey
2 Version: 0.70.1
2 Version: 0.70.2
33 Summary: Desktop automation utility
44 Home-page: http://autokey.googlecode.com/
55 Author: Chris Dekter
0 autokey (0.70.2-0~lucid) lucid; urgency=low
1
2 * Fix for issue 35 - Cleared hotkeys show in column
3 * Remove send_unicode_char() as it no longer works
4 * Handle missing modifier masks by warning (and not crashing)
5 * Don't grab hotkey combinations for Caps and Num if they aren't mapped
6 * [gtk] Autosize treeview columns
7 * [kde] Remember column and splitter positions
8 * [gtk] Fix hang when filling the clipboard/mouse selection
9 * Exorcise all remaining traces of SourceForge site
10 * Change left click action of notification icon to show the configuration window
11 * When using XRecord interface, get initial state of lock keys
12 * Distinguish between numpad and ordinary keys
13 * Fix numpad key decoding when both numlock and shift are active
14 * Grab the keyboard while grabbing the key for a hotkey in hotkey settings dialog
15 * Implement configuration option to send phrase via different modes
16 * Implement validation to check for untypable characters in a phrase
17 * Improve documentation for scripting interface (issue 37)
18 * Don't log list of phrases/scripts in debug mode as it can be a security risk
19 * Disable abbreviation popup hotkey by default
20 * Make hotkey and abbreviation validation messages more informative
21 * Detect substring abbreviation conflicts when validating
22
23 -- Chris Dekter <cdekter@gmail.com> Sat, 17 Apr 2010 10:23:02 +1000
24
025 autokey (0.70.1-0~karmic) karmic; urgency=low
126
227 * Add extra columns to treewidget to display abbreviation and/or hotkey
124124 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
125125 <tr>
126126 <td align="left" class="footer">
127 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
127 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
128128 </td>
129129 <td align="right" class="footer">
130130 <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 Mon Apr 12 22:11:24 2010
248 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
249249 </td>
250250 <td align="right" class="footer">
251251 <a target="mainFrame" href="http://epydoc.sourceforge.net"
439439 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
440440 <tr>
441441 <td align="left" class="footer">
442 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
442 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
443443 </td>
444444 <td align="right" class="footer">
445445 <a target="mainFrame" href="http://epydoc.sourceforge.net"
207207 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
208208 <tr>
209209 <td align="left" class="footer">
210 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
210 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
211211 </td>
212212 <td align="right" class="footer">
213213 <a target="mainFrame" href="http://epydoc.sourceforge.net"
5555 </table>
5656 <h1 class="epydoc">Source Code for <a href="lib.scripting-module.html">Module lib.scripting</a></h1>
5757 <pre class="py-src">
58 <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>
60 <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>
62 <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"># 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>
76 <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>
78 <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">common</tt> </tt>
79 <a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">common</tt><tt class="py-op">.</tt><tt class="py-name">USING_QT</tt><tt class="py-op">:</tt> </tt>
80 <a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">PyQt4</tt><tt class="py-op">.</tt><tt class="py-name">QtGui</tt> <tt class="py-keyword">import</tt> <tt class="py-name">QClipboard</tt><tt class="py-op">,</tt> <tt class="py-name">QApplication</tt> </tt>
81 <a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
82 <a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">gtk</tt> </tt>
83 <a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-comment">#import model</tt> </tt>
84 <a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
85 <a name="Keyboard"></a><div id="Keyboard-def"><a name="L28"></a><tt class="py-lineno"> 28</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>
86 </div><div id="Keyboard-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Keyboard-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
87 <a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to the keyboard for event generation.</tt> </tt>
88 <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>
90 <a name="Keyboard.__init__"></a><div id="Keyboard.__init__-def"><a name="L33"></a><tt class="py-lineno"> 33</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>
91 </div><div id="Keyboard.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.__init__-expanded"><a name="L34"></a><tt class="py-lineno"> 34</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>
92 </div><a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt>
93 <a name="Keyboard.send_keys"></a><div id="Keyboard.send_keys-def"><a name="L36"></a><tt class="py-lineno"> 36</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>
94 </div><div id="Keyboard.send_keys-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.send_keys-expanded"><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-docstring"> Send a sequence of keys via keyboard events</tt> </tt>
96 <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
97 <a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{keyboard.send_keys(keyString)}</tt> </tt>
98 <a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
99 <a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> @param keyString: string of keys (including special keys) to send</tt> </tt>
100 <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-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">begin_send</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
102 <a name="L45"></a><tt class="py-lineno"> 45</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>
103 <a name="L46"></a><tt class="py-lineno"> 46</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">interface</tt><tt class="py-op">.</tt><tt class="py-name">finish_send</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
104 </div><a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
105 <a name="Keyboard.send_key"></a><div id="Keyboard.send_key-def"><a name="L48"></a><tt class="py-lineno"> 48</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>
106 </div><div id="Keyboard.send_key-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.send_key-expanded"><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-docstring"> Send a keyboard event</tt> </tt>
108 <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
109 <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{keyboard.send_key(key, repeat=1)}</tt> </tt>
110 <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
111 <a name="L54"></a><tt class="py-lineno"> 54</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>
112 <a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> @param repeat: number of times to repeat the key event</tt> </tt>
113 <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-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">repeat</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
115 <a name="L58"></a><tt class="py-lineno"> 58</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>
116 <a name="L59"></a><tt class="py-lineno"> 59</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>
117 </div><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt>
118 <a name="Keyboard.fake_keypress"></a><div id="Keyboard.fake_keypress-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="Keyboard.fake_keypress-toggle" onclick="return toggle('Keyboard.fake_keypress');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html#fake_keypress">fake_keypress</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>
119 </div><div id="Keyboard.fake_keypress-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Keyboard.fake_keypress-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
120 <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> Fake a keypress</tt> </tt>
121 <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"> Usage: C{keyboard.fake_keypress(key, repeat=1)}</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"> Uses XTest to 'fake' a keypress. This is useful to send keypresses to some</tt> </tt>
125 <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> applications which won't respond to keyboard.send_key()</tt> </tt>
126 <a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
127 <a name="L70"></a><tt class="py-lineno"> 70</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>
128 <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> @param repeat: number of times to repeat the key event</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-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">repeat</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
131 <a name="L74"></a><tt class="py-lineno"> 74</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-1" class="py-name" targets="Method lib.scripting.Keyboard.fake_keypress()=lib.scripting.Keyboard-class.html#fake_keypress"><a title="lib.scripting.Keyboard.fake_keypress" class="py-name" href="#" onclick="return doclink('link-1', 'fake_keypress', 'link-1');">fake_keypress</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>
132 </div></div><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> </tt>
133 <a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> </tt>
134 <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> </tt>
135 <a name="Mouse"></a><div id="Mouse-def"><a name="L78"></a><tt class="py-lineno"> 78</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>
136 </div><div id="Mouse-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Mouse-expanded"><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"> Provides access to send mouse clicks</tt> </tt>
138 <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
139 <a name="Mouse.__init__"></a><div id="Mouse.__init__-def"><a name="L82"></a><tt class="py-lineno"> 82</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>
140 </div><div id="Mouse.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.__init__-expanded"><a name="L83"></a><tt class="py-lineno"> 83</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>
141 </div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
142 <a name="Mouse.click_relative"></a><div id="Mouse.click_relative-def"><a name="L85"></a><tt class="py-lineno"> 85</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>
143 </div><div id="Mouse.click_relative-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.click_relative-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
144 <a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> Send a mouse click relative to the active window</tt> </tt>
145 <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"> Usage: C{mouse.click_relative(x, y, button)}</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 class="py-docstring"> @param x: x-coordinate in pixels, relative to upper left corner of window</tt> </tt>
149 <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> @param y: y-coordinate in pixels, relative to upper left corner of window</tt> </tt>
150 <a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> @param button: mouse button to simulate (left=1, middle=2, right=3)</tt> </tt>
151 <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-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>
153 </div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
154 <a name="Mouse.click_absolute"></a><div id="Mouse.click_absolute-def"><a name="L97"></a><tt class="py-lineno"> 97</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>
155 </div><div id="Mouse.click_absolute-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Mouse.click_absolute-expanded"><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-docstring"> Send a mouse click relative to the screen (absolute)</tt> </tt>
157 <a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
158 <a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{mouse.click_absolute(x, y, button)}</tt> </tt>
159 <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"> @param x: x-coordinate in pixels, relative to upper left corner of window</tt> </tt>
161 <a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> @param y: y-coordinate in pixels, relative to upper left corner of window</tt> </tt>
162 <a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> @param button: mouse button to simulate (left=1, middle=2, right=3)</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-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>
165 </div></div><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
166 <a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> </tt>
167 <a name="Store"></a><div id="Store-def"><a name="L110"></a><tt class="py-lineno">110</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>
168 </div><div id="Store-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Store-expanded"><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"> Allows persistent storage of values between invocations of the script.</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>
172 <a name="Store.set_value"></a><div id="Store.set_value-def"><a name="L115"></a><tt class="py-lineno">115</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>
173 </div><div id="Store.set_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.set_value-expanded"><a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
174 <a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> Store a value</tt> </tt>
175 <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"> Usage: C{store.set_value(key, value)}</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 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>
179 </div><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt>
180 <a name="Store.get_value"></a><div id="Store.get_value-def"><a name="L123"></a><tt class="py-lineno">123</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>
181 </div><div id="Store.get_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.get_value-expanded"><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
182 <a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> Get a value</tt> </tt>
183 <a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
184 <a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{store.get_value(key)}</tt> </tt>
185 <a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
186 <a name="L129"></a><tt class="py-lineno">129</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>
187 </div><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt>
188 <a name="Store.remove_value"></a><div id="Store.remove_value-def"><a name="L131"></a><tt class="py-lineno">131</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>
189 </div><div id="Store.remove_value-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Store.remove_value-expanded"><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"> Remove a value</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"> Usage: C{store.remove_value(key)}</tt> </tt>
193 <a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
194 <a name="L137"></a><tt class="py-lineno">137</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>
195 </div></div><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> </tt>
196 <a name="QtDialog"></a><div id="QtDialog-def"><a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="QtDialog-toggle" onclick="return toggle('QtDialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.QtDialog-class.html">QtDialog</a><tt class="py-op">:</tt> </tt>
197 </div><div id="QtDialog-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="QtDialog-expanded"><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
198 <a name="L141"></a><tt class="py-lineno">141</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>
199 <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"> This version uses KDialog to integrate well with KDE.</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>
203 <a name="QtDialog.__runKdialog"></a><div id="QtDialog.__runKdialog-def"><a name="L146"></a><tt class="py-lineno">146</tt> <a class="py-toggle" href="#" id="QtDialog.__runKdialog-toggle" onclick="return toggle('QtDialog.__runKdialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
204 </div><div id="QtDialog.__runKdialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.__runKdialog-expanded"><a name="L147"></a><tt class="py-lineno">147</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>
205 <a name="L148"></a><tt class="py-lineno">148</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>
206 <a name="L149"></a><tt class="py-lineno">149</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>
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-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>
209 </div><a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> </tt>
210 <a name="QtDialog.input_dialog"></a><div id="QtDialog.input_dialog-def"><a name="L153"></a><tt class="py-lineno">153</tt> <a class="py-toggle" href="#" id="QtDialog.input_dialog-toggle" onclick="return toggle('QtDialog.input_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
211 </div><div id="QtDialog.input_dialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.input_dialog-expanded"><a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
212 <a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> Show an input dialog</tt> </tt>
213 <a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
214 <a name="L157"></a><tt class="py-lineno">157</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>
215 <a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> </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 input box</tt> </tt>
218 <a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value for the input box</tt> </tt>
219 <a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
220 <a name="L163"></a><tt class="py-lineno">163</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" targets="Method lib.scripting.QtDialog.__runKdialog()=lib.scripting.QtDialog-class.html#__runKdialog"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-2', '__runKdialog', 'link-2');">__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>
221 </div><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> </tt>
222 <a name="QtDialog.password_dialog"></a><div id="QtDialog.password_dialog-def"><a name="L165"></a><tt class="py-lineno">165</tt> <a class="py-toggle" href="#" id="QtDialog.password_dialog-toggle" onclick="return toggle('QtDialog.password_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
223 </div><div id="QtDialog.password_dialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.password_dialog-expanded"><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"> Show a password input dialog</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"> Usage: C{dialog.password_dialog(title="Enter password", message="Enter password")}</tt> </tt>
227 <a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> </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 password input box</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 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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-3', '__runKdialog', 'link-2');">__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>
232 </div><a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> </tt>
233 <a name="QtDialog.combo_menu"></a><div id="QtDialog.combo_menu-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="QtDialog.combo_menu-toggle" onclick="return toggle('QtDialog.combo_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
234 </div><div id="QtDialog.combo_menu-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.combo_menu-expanded"><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
235 <a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"> Show a combobox menu</tt> </tt>
236 <a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
237 <a name="L180"></a><tt class="py-lineno">180</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>
238 <a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
239 <a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
240 <a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
241 <a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the combobox </tt> </tt>
242 <a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
243 <a name="L186"></a><tt class="py-lineno">186</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-4" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-4', '__runKdialog', 'link-2');">__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>
244 </div><a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> </tt>
245 <a name="QtDialog.list_menu"></a><div id="QtDialog.list_menu-def"><a name="L188"></a><tt class="py-lineno">188</tt> <a class="py-toggle" href="#" id="QtDialog.list_menu-toggle" onclick="return toggle('QtDialog.list_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
246 </div><div id="QtDialog.list_menu-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.list_menu-expanded"><a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
247 <a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"> Show a single-selection list menu</tt> </tt>
248 <a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
249 <a name="L192"></a><tt class="py-lineno">192</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>
250 <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"> @param options: list of options (strings) for the dialog</tt> </tt>
252 <a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
253 <a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
254 <a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value to be selected</tt> </tt>
255 <a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
256 <a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> </tt>
257 <a name="L200"></a><tt class="py-lineno">200</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>
258 <a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
259 <a name="L202"></a><tt class="py-lineno">202</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>
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-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>
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-name">append</tt><tt class="py-op">(</tt><tt class="py-name">option</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-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>
263 <a name="L206"></a><tt class="py-lineno">206</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>
264 <a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">else</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-string">"off"</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">optionNum</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</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-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-5" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-5', '__runKdialog', 'link-2');">__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>
269 <a name="L212"></a><tt class="py-lineno">212</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>
270 <a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> </tt>
271 <a name="L214"></a><tt class="py-lineno">214</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>
272 </div><a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> </tt>
273 <a name="QtDialog.list_menu_multi"></a><div id="QtDialog.list_menu_multi-def"><a name="L216"></a><tt class="py-lineno">216</tt> <a class="py-toggle" href="#" id="QtDialog.list_menu_multi-toggle" onclick="return toggle('QtDialog.list_menu_multi');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
274 </div><div id="QtDialog.list_menu_multi-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.list_menu_multi-expanded"><a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
275 <a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> Show a multiple-selection list menu</tt> </tt>
276 <a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
277 <a name="L220"></a><tt class="py-lineno">220</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>
278 <a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
279 <a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
280 <a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
281 <a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
282 <a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"><tt class="py-docstring"> @param defaults: list of default values to be selected</tt> </tt>
283 <a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
284 <a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> </tt>
285 <a name="L228"></a><tt class="py-lineno">228</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>
286 <a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
287 <a name="L230"></a><tt class="py-lineno">230</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>
288 <a name="L231"></a><tt class="py-lineno">231</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>
289 <a name="L232"></a><tt class="py-lineno">232</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>
290 <a name="L233"></a><tt class="py-lineno">233</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>
291 <a name="L234"></a><tt class="py-lineno">234</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>
292 <a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">else</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-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>
294 <a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
295 <a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt>
296 <a name="L239"></a><tt class="py-lineno">239</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-6" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-6', '__runKdialog', 'link-2');">__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>
297 <a name="L240"></a><tt class="py-lineno">240</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>
298 <a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> </tt>
299 <a name="L242"></a><tt class="py-lineno">242</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>
300 <a name="L243"></a><tt class="py-lineno">243</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>
301 <a name="L244"></a><tt class="py-lineno">244</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>
302 <a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> </tt>
303 <a name="L246"></a><tt class="py-lineno">246</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>
304 </div><a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> </tt>
305 <a name="QtDialog.open_file"></a><div id="QtDialog.open_file-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="QtDialog.open_file-toggle" onclick="return toggle('QtDialog.open_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
306 </div><div id="QtDialog.open_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.open_file-expanded"><a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
307 <a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> Show an Open File dialog</tt> </tt>
308 <a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
309 <a name="L252"></a><tt class="py-lineno">252</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>
310 <a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
311 <a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
312 <a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"> @param initialDir: starting directory for the file dialog</tt> </tt>
313 <a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> @param fileTypes: file type filter expression</tt> </tt>
314 <a name="L257"></a><tt class="py-lineno">257</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>
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-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>
317 <a name="L260"></a><tt class="py-lineno">260</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-7', '__runKdialog', 'link-2');">__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>
318 <a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
319 <a name="L262"></a><tt class="py-lineno">262</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-8', '__runKdialog', 'link-2');">__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>
320 </div><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> </tt>
321 <a name="QtDialog.save_file"></a><div id="QtDialog.save_file-def"><a name="L264"></a><tt class="py-lineno">264</tt> <a class="py-toggle" href="#" id="QtDialog.save_file-toggle" onclick="return toggle('QtDialog.save_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
322 </div><div id="QtDialog.save_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.save_file-expanded"><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-docstring"> Show a Save As dialog</tt> </tt>
324 <a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
325 <a name="L268"></a><tt class="py-lineno">268</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>
326 <a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
327 <a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"> @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-docstring"> @param initialDir: starting directory for the file dialog</tt> </tt>
329 <a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> @param fileTypes: file type filter expression</tt> </tt>
330 <a name="L273"></a><tt class="py-lineno">273</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>
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-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>
333 <a name="L276"></a><tt class="py-lineno">276</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-9', '__runKdialog', 'link-2');">__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>
334 <a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
335 <a name="L278"></a><tt class="py-lineno">278</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-10', '__runKdialog', 'link-2');">__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>
336 </div><a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> </tt>
337 <a name="QtDialog.choose_directory"></a><div id="QtDialog.choose_directory-def"><a name="L280"></a><tt class="py-lineno">280</tt> <a class="py-toggle" href="#" id="QtDialog.choose_directory-toggle" onclick="return toggle('QtDialog.choose_directory');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
338 </div><div id="QtDialog.choose_directory-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.choose_directory-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"> Show a Directory Chooser dialog</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{dialog.choose_directory(title="Select Directory", initialDir="~", rememberAs=None)}</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 title: window title for the dialog</tt> </tt>
344 <a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"><tt class="py-docstring"> @param initialDir: starting directory for the directory chooser dialog</tt> </tt>
345 <a name="L288"></a><tt class="py-lineno">288</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>
346 <a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
347 <a name="L290"></a><tt class="py-lineno">290</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>
348 <a name="L291"></a><tt class="py-lineno">291</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-11', '__runKdialog', 'link-2');">__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>
349 <a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">else</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">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-12', '__runKdialog', 'link-2');">__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>
351 </div><a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> </tt>
352 <a name="QtDialog.choose_colour"></a><div id="QtDialog.choose_colour-def"><a name="L295"></a><tt class="py-lineno">295</tt> <a class="py-toggle" href="#" id="QtDialog.choose_colour-toggle" onclick="return toggle('QtDialog.choose_colour');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
353 </div><div id="QtDialog.choose_colour-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtDialog.choose_colour-expanded"><a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
354 <a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"> Show a Colour Chooser dialog</tt> </tt>
355 <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"> Usage: C{dialog.choose_colour(title="Select Colour")}</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"> @param title: window title for the dialog</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-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-13', '__runKdialog', 'link-2');">__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>
361 </div></div><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt>
362 <a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> </tt>
363 <a name="System"></a><div id="System-def"><a name="L306"></a><tt class="py-lineno">306</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>
364 </div><div id="System-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="System-expanded"><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"> Simplified access to some system commands.</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>
368 <a name="System.exec_command"></a><div id="System.exec_command-def"><a name="L311"></a><tt class="py-lineno">311</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-param">getOutput</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
369 </div><div id="System.exec_command-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="System.exec_command-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"> Execute a shell command</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 class="py-docstring"> Set getOutput to False if the command does not exit and return immediately. Otherwise</tt> </tt>
373 <a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"> AutoKey will not respond to any hotkeys/abbreviations etc until the process started</tt> </tt>
374 <a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-docstring"> by the command exits.</tt> </tt>
375 <a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
376 <a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{system.exec_command(command, getOutput=True)}</tt> </tt>
377 <a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
378 <a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"> @param command: command to be executed (including any arguments) - e.g. "ls -l"</tt> </tt>
379 <a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-docstring"> @param getOutput: whether to capture the (stdout) output of the command</tt> </tt>
380 <a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"> @raises subprocess.CalledProcessError: if the command returns a non-zero exit code</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-keyword">if</tt> <tt class="py-name">getOutput</tt><tt class="py-op">:</tt> </tt>
383 <a name="L326"></a><tt class="py-lineno">326</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>
384 <a name="L327"></a><tt class="py-lineno">327</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>
385 <a name="L328"></a><tt class="py-lineno">328</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>
386 <a name="L329"></a><tt class="py-lineno">329</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>
387 <a name="L330"></a><tt class="py-lineno">330</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>
388 <a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
389 <a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">output</tt> </tt>
390 <a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
391 <a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <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>
392 </div><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt>
393 <a name="System.create_file"></a><div id="System.create_file-def"><a name="L336"></a><tt class="py-lineno">336</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>
394 </div><div id="System.create_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="System.create_file-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"> Create a file with contents</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{system.create_file(fileName, contents="")}</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-docstring"> @param fileName: full path to the file to be created</tt> </tt>
400 <a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: contents to insert into the file</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-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>
403 <a name="L346"></a><tt class="py-lineno">346</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>
404 <a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-14" 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-14', 'close', 'link-14');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
405 </div></div><a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> </tt>
406 <a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> </tt>
407 <a name="GtkDialog"></a><div id="GtkDialog-def"><a name="L350"></a><tt class="py-lineno">350</tt> <a class="py-toggle" href="#" id="GtkDialog-toggle" onclick="return toggle('GtkDialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-class.html">GtkDialog</a><tt class="py-op">:</tt> </tt>
408 </div><div id="GtkDialog-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GtkDialog-expanded"><a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
409 <a name="L352"></a><tt class="py-lineno">352</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>
410 <a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
411 <a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"><tt class="py-docstring"> This version uses Zenity to integrate well with GNOME.</tt> </tt>
412 <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>
414 <a name="GtkDialog.__runZenity"></a><div id="GtkDialog.__runZenity-def"><a name="L357"></a><tt class="py-lineno">357</tt> <a class="py-toggle" href="#" id="GtkDialog.__runZenity-toggle" onclick="return toggle('GtkDialog.__runZenity');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
415 </div><div id="GtkDialog.__runZenity-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.__runZenity-expanded"><a name="L358"></a><tt class="py-lineno">358</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>
416 <a name="L359"></a><tt class="py-lineno">359</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>
417 <a name="L360"></a><tt class="py-lineno">360</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>
418 <a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> </tt>
419 <a name="L362"></a><tt class="py-lineno">362</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>
420 </div><a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> </tt>
421 <a name="GtkDialog.input_dialog"></a><div id="GtkDialog.input_dialog-def"><a name="L364"></a><tt class="py-lineno">364</tt> <a class="py-toggle" href="#" id="GtkDialog.input_dialog-toggle" onclick="return toggle('GtkDialog.input_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
422 </div><div id="GtkDialog.input_dialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.input_dialog-expanded"><a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
423 <a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> Show an input dialog</tt> </tt>
424 <a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
425 <a name="L368"></a><tt class="py-lineno">368</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>
426 <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"> @param title: window title for the dialog</tt> </tt>
428 <a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the input box</tt> </tt>
429 <a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value for the input box</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-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method lib.scripting.GtkDialog.__runZenity()=lib.scripting.GtkDialog-class.html#__runZenity"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-15', '__runZenity', 'link-15');">__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>
432 </div><a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> </tt>
433 <a name="GtkDialog.password_dialog"></a><div id="GtkDialog.password_dialog-def"><a name="L376"></a><tt class="py-lineno">376</tt> <a class="py-toggle" href="#" id="GtkDialog.password_dialog-toggle" onclick="return toggle('GtkDialog.password_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
434 </div><div id="GtkDialog.password_dialog-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.password_dialog-expanded"><a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
435 <a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-docstring"> Show a password input dialog</tt> </tt>
436 <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"> Usage: C{dialog.password_dialog(title="Enter password", message="Enter password")}</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"> @param title: window title for the dialog</tt> </tt>
440 <a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the password input box</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-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-16', '__runZenity', 'link-15');">__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>
443 <a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> </tt>
444 <a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-comment">#def combo_menu(self, options, title="Choose an option", message="Choose an option"):</tt> </tt>
445 <a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-string">"""</tt> </tt>
446 <a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"><tt class="py-string"> Show a combobox menu - not supported by zenity</tt> </tt>
447 <a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
448 <a name="L391"></a><tt class="py-lineno">391</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>
449 <a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
450 <a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"><tt class="py-string"> @param options: list of options (strings) for the dialog</tt> </tt>
451 <a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"><tt class="py-string"> @param title: window title for the dialog</tt> </tt>
452 <a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-string"> @param message: message displayed above the combobox </tt> </tt>
453 <a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt>
454 </div><a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-comment">#return self.__runZenity(title, ["--combobox", message] + options)</tt> </tt>
455 <a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> </tt>
456 <a name="GtkDialog.list_menu"></a><div id="GtkDialog.list_menu-def"><a name="L399"></a><tt class="py-lineno">399</tt> <a class="py-toggle" href="#" id="GtkDialog.list_menu-toggle" onclick="return toggle('GtkDialog.list_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
457 </div><div id="GtkDialog.list_menu-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.list_menu-expanded"><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"> Show a single-selection list menu</tt> </tt>
459 <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"> Usage: C{dialog.list_menu(options, title="Choose a value", message="Choose a value", default=None)}</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"> @param options: list of options (strings) for the dialog</tt> </tt>
463 <a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
464 <a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
465 <a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value to be selected</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>
468 <a name="L411"></a><tt class="py-lineno">411</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>
469 <a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-comment">#optionNum = 0</tt> </tt>
470 <a name="L413"></a><tt class="py-lineno">413</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>
471 <a name="L414"></a><tt class="py-lineno">414</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>
472 <a name="L415"></a><tt class="py-lineno">415</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>
473 <a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-keyword">else</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-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>
475 <a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> </tt>
476 <a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-comment">#choices.append(str(optionNum))</tt> </tt>
477 <a name="L420"></a><tt class="py-lineno">420</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>
478 <a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-comment">#optionNum += 1</tt> </tt>
479 <a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> </tt>
480 <a name="L423"></a><tt class="py-lineno">423</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-17" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-17', '__runZenity', 'link-15');">__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>
481 </div><a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> </tt>
482 <a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-comment">#return retCode, choice </tt> </tt>
483 <a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> </tt>
484 <a name="GtkDialog.list_menu_multi"></a><div id="GtkDialog.list_menu_multi-def"><a name="L427"></a><tt class="py-lineno">427</tt> <a class="py-toggle" href="#" id="GtkDialog.list_menu_multi-toggle" onclick="return toggle('GtkDialog.list_menu_multi');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
485 </div><div id="GtkDialog.list_menu_multi-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.list_menu_multi-expanded"><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"> Show a multiple-selection list menu</tt> </tt>
487 <a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
488 <a name="L431"></a><tt class="py-lineno">431</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>
489 <a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
490 <a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
491 <a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
492 <a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
493 <a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"><tt class="py-docstring"> @param defaults: list of default values to be selected</tt> </tt>
494 <a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
495 <a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> </tt>
496 <a name="L439"></a><tt class="py-lineno">439</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>
497 <a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-comment">#optionNum = 0</tt> </tt>
498 <a name="L441"></a><tt class="py-lineno">441</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>
499 <a name="L442"></a><tt class="py-lineno">442</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>
500 <a name="L443"></a><tt class="py-lineno">443</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>
501 <a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
502 <a name="L445"></a><tt class="py-lineno">445</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>
503 <a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> </tt>
504 <a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-comment">#choices.append(str(optionNum))</tt> </tt>
505 <a name="L448"></a><tt class="py-lineno">448</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>
506 <a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-comment">#optionNum += 1</tt> </tt>
507 <a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> </tt>
508 <a name="L451"></a><tt class="py-lineno">451</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-18" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-18', '__runZenity', 'link-15');">__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>
509 <a name="L452"></a><tt class="py-lineno">452</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-string">'|'</tt><tt class="py-op">)</tt> </tt>
510 <a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> </tt>
511 <a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-comment">#choices = []</tt> </tt>
512 <a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-comment">#for choice in results:</tt> </tt>
513 <a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-comment"># choices.append(choice)</tt> </tt>
514 <a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> </tt>
515 <a name="L458"></a><tt class="py-lineno">458</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">results</tt> </tt>
516 </div><a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> </tt>
517 <a name="GtkDialog.open_file"></a><div id="GtkDialog.open_file-def"><a name="L460"></a><tt class="py-lineno">460</tt> <a class="py-toggle" href="#" id="GtkDialog.open_file-toggle" onclick="return toggle('GtkDialog.open_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
518 </div><div id="GtkDialog.open_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.open_file-expanded"><a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
519 <a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"><tt class="py-docstring"> Show an Open File dialog</tt> </tt>
520 <a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
521 <a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.open_file(title="Open File")}</tt> </tt>
522 <a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
523 <a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
524 <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-comment">#if rememberAs is not None:</tt> </tt>
526 <a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-comment"># return self.__runZenity(title, ["--getopenfilename", initialDir, fileTypes, ":" + rememberAs])</tt> </tt>
527 <a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-comment">#else:</tt> </tt>
528 <a name="L471"></a><tt class="py-lineno">471</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-19" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-19', '__runZenity', 'link-15');">__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>
529 </div><a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> </tt>
530 <a name="GtkDialog.save_file"></a><div id="GtkDialog.save_file-def"><a name="L473"></a><tt class="py-lineno">473</tt> <a class="py-toggle" href="#" id="GtkDialog.save_file-toggle" onclick="return toggle('GtkDialog.save_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
531 </div><div id="GtkDialog.save_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.save_file-expanded"><a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
532 <a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"><tt class="py-docstring"> Show a Save As dialog</tt> </tt>
533 <a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
534 <a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.save_file(title="Save As")}</tt> </tt>
535 <a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
536 <a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
537 <a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
538 <a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-comment">#if rememberAs is not None:</tt> </tt>
539 <a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-comment"># return self.__runZenity(title, ["--getsavefilename", initialDir, fileTypes, ":" + rememberAs])</tt> </tt>
540 <a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-comment">#else:</tt> </tt>
541 <a name="L484"></a><tt class="py-lineno">484</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-20" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-20', '__runZenity', 'link-15');">__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>
542 </div><a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> </tt>
543 <a name="GtkDialog.choose_directory"></a><div id="GtkDialog.choose_directory-def"><a name="L486"></a><tt class="py-lineno">486</tt> <a class="py-toggle" href="#" id="GtkDialog.choose_directory-toggle" onclick="return toggle('GtkDialog.choose_directory');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
544 </div><div id="GtkDialog.choose_directory-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.choose_directory-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"> Show a Directory Chooser dialog</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{dialog.choose_directory(title="Select Directory")}</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 for the dialog</tt> </tt>
550 <a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
551 <a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt class="py-comment">#if rememberAs is not None:</tt> </tt>
552 <a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-comment"># return self.__runZenity(title, ["--getexistingdirectory", initialDir, ":" + rememberAs])</tt> </tt>
553 <a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-comment">#else:</tt> </tt>
554 <a name="L497"></a><tt class="py-lineno">497</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-21" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-21', '__runZenity', 'link-15');">__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>
555 <a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> </tt>
556 <a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-comment">#def choose_colour(self, title="Select Colour"):</tt> </tt>
557 <a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-string">"""</tt> </tt>
558 <a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"><tt class="py-string"> Show a Colour Chooser dialog - not supported by zenity</tt> </tt>
559 <a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
560 <a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"><tt class="py-string"> Usage: C{dialog.choose_colour(title="Select Colour")}</tt> </tt>
561 <a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
562 <a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"><tt class="py-string"> @param title: window title for the dialog</tt> </tt>
563 <a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt>
564 </div><a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-comment">#return self.__runZenity(title, ["--getcolor"])</tt> </tt>
565 <a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> </tt>
566 <a name="GtkDialog.calendar"></a><div id="GtkDialog.calendar-def"><a name="L509"></a><tt class="py-lineno">509</tt> <a class="py-toggle" href="#" id="GtkDialog.calendar-toggle" onclick="return toggle('GtkDialog.calendar');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-class.html#calendar">calendar</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">"Choose a date"</tt><tt class="py-op">,</tt> <tt class="py-param">format</tt><tt class="py-op">=</tt><tt class="py-string">"%Y-%m-%d"</tt><tt class="py-op">,</tt> <tt class="py-param">date</tt><tt class="py-op">=</tt><tt class="py-string">"today"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
567 </div><div id="GtkDialog.calendar-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkDialog.calendar-expanded"><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"> Show a calendar dialog</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"> Usage: C{dialog.calendar_dialog(title="Choose a date", format="%Y-%m-%d", date="YYYY-MM-DD")}</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-docstring"> @param title: window title for the dialog</tt> </tt>
573 <a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"><tt class="py-docstring"> @param format: format of date to be returned</tt> </tt>
574 <a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"><tt class="py-docstring"> @param date: initial date as YYYY-MM-DD, otherwise today</tt> </tt>
575 <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"> Use the dialog's OK button.</tt> </tt>
577 <a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"><tt class="py-docstring"> AutoKey has trouble if you double-click the date.</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-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r"[0-9]{4}-[0-9]{2}-[0-9]{2}"</tt><tt class="py-op">,</tt> <tt class="py-name">date</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
580 <a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-name">year</tt> <tt class="py-op">=</tt> <tt class="py-name">date</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt>
581 <a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-name">month</tt> <tt class="py-op">=</tt> <tt class="py-name">date</tt><tt class="py-op">[</tt><tt class="py-number">5</tt><tt class="py-op">:</tt><tt class="py-number">7</tt><tt class="py-op">]</tt> </tt>
582 <a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-name">day</tt> <tt class="py-op">=</tt> <tt class="py-name">date</tt><tt class="py-op">[</tt><tt class="py-number">8</tt><tt class="py-op">:</tt><tt class="py-number">10</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">date_args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"--year="</tt> <tt class="py-op">+</tt> <tt class="py-name">year</tt><tt class="py-op">,</tt> <tt class="py-string">"--month="</tt> <tt class="py-op">+</tt> <tt class="py-name">month</tt><tt class="py-op">,</tt> <tt class="py-string">"--day="</tt> <tt class="py-op">+</tt> <tt class="py-name">day</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-keyword">else</tt><tt class="py-op">:</tt> </tt>
585 <a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-name">date_args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </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-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-22', '__runZenity', 'link-15');">__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">"--calendar"</tt><tt class="py-op">,</tt> <tt class="py-string">"--date-format="</tt> <tt class="py-op">+</tt> <tt class="py-name">format</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">date_args</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>
588 <a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> </tt>
589 <a name="QtClipboard"></a><div id="QtClipboard-def"><a name="L532"></a><tt class="py-lineno">532</tt> <a class="py-toggle" href="#" id="QtClipboard-toggle" onclick="return toggle('QtClipboard');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-class.html">QtClipboard</a><tt class="py-op">:</tt> </tt>
590 </div><div id="QtClipboard-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="QtClipboard-expanded"><a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
591 <a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"><tt class="py-docstring"> Read/write access to the X selection and clipboard - QT version</tt> </tt>
592 <a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
593 <a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> </tt>
594 <a name="QtClipboard.__init__"></a><div id="QtClipboard.__init__-def"><a name="L537"></a><tt class="py-lineno">537</tt> <a class="py-toggle" href="#" id="QtClipboard.__init__-toggle" onclick="return toggle('QtClipboard.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
595 </div><div id="QtClipboard.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.__init__-expanded"><a name="L538"></a><tt class="py-lineno">538</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>
596 <a name="L539"></a><tt class="py-lineno">539</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>
597 </div><a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> </tt>
598 <a name="QtClipboard.fill_selection"></a><div id="QtClipboard.fill_selection-def"><a name="L541"></a><tt class="py-lineno">541</tt> <a class="py-toggle" href="#" id="QtClipboard.fill_selection-toggle" onclick="return toggle('QtClipboard.fill_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
599 </div><div id="QtClipboard.fill_selection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.fill_selection-expanded"><a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
600 <a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the X selection</tt> </tt>
601 <a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
602 <a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_selection(contents)}</tt> </tt>
603 <a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
604 <a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
605 <a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
606 <a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method lib.scripting.GtkClipboard.__execAsync()=lib.scripting.GtkClipboard-class.html#__execAsync,Method lib.scripting.QtClipboard.__execAsync()=lib.scripting.QtClipboard-class.html#__execAsync"><a title="lib.scripting.GtkClipboard.__execAsync
58 <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>
60 <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>
62 <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"># 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>
76 <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>
78 <a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-comment">#import common</tt> </tt>
79 <a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-comment">#if common.USING_QT:</tt> </tt>
80 <a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-comment"># from PyQt4.QtGui import QClipboard, QApplication</tt> </tt>
81 <a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-comment">#else:</tt> </tt>
82 <a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-comment"># import gtk</tt> </tt>
83 <a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-comment">#import model</tt> </tt>
84 <a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
85 <a name="Keyboard"></a><div id="Keyboard-def"><a name="L28"></a><tt class="py-lineno"> 28</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>
86 </div><div id="Keyboard-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Keyboard-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
87 <a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to the keyboard for event generation.</tt> </tt>
88 <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>
90 <a name="Keyboard.__init__"></a><div id="Keyboard.__init__-def"><a name="L33"></a><tt class="py-lineno"> 33</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>
91 </div><div id="Keyboard.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Keyboard.__init__-expanded"><a name="L34"></a><tt class="py-lineno"> 34</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>
92 </div><a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt>
93 <a name="Keyboard.send_keys"></a><div id="Keyboard.send_keys-def"><a name="L36"></a><tt class="py-lineno"> 36</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>
94 </div><div id="Keyboard.send_keys-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Keyboard.send_keys-expanded"><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-docstring"> Send a sequence of keys via keyboard events</tt> </tt>
96 <a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
97 <a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{keyboard.send_keys(keyString)}</tt> </tt>
98 <a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
99 <a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> @param keyString: string of keys (including special keys) to send</tt> </tt>
100 <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-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">begin_send</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
102 <a name="L45"></a><tt class="py-lineno"> 45</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>
103 <a name="L46"></a><tt class="py-lineno"> 46</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">interface</tt><tt class="py-op">.</tt><tt class="py-name">finish_send</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
104 </div><a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
105 <a name="Keyboard.send_key"></a><div id="Keyboard.send_key-def"><a name="L48"></a><tt class="py-lineno"> 48</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>
106 </div><div id="Keyboard.send_key-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Keyboard.send_key-expanded"><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-docstring"> Send a keyboard event</tt> </tt>
108 <a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
109 <a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{keyboard.send_key(key, repeat=1)}</tt> </tt>
110 <a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
111 <a name="L54"></a><tt class="py-lineno"> 54</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>
112 <a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> @param repeat: number of times to repeat the key event</tt> </tt>
113 <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-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">repeat</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
115 <a name="L58"></a><tt class="py-lineno"> 58</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>
116 <a name="L59"></a><tt class="py-lineno"> 59</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>
117 </div><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt>
118 <a name="Keyboard.fake_keypress"></a><div id="Keyboard.fake_keypress-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="Keyboard.fake_keypress-toggle" onclick="return toggle('Keyboard.fake_keypress');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.Keyboard-class.html#fake_keypress">fake_keypress</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>
119 </div><div id="Keyboard.fake_keypress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Keyboard.fake_keypress-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
120 <a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> Fake a keypress</tt> </tt>
121 <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"> Usage: C{keyboard.fake_keypress(key, repeat=1)}</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"> Uses XTest to 'fake' a keypress. This is useful to send keypresses to some</tt> </tt>
125 <a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> applications which won't respond to keyboard.send_key()</tt> </tt>
126 <a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
127 <a name="L70"></a><tt class="py-lineno"> 70</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>
128 <a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> @param repeat: number of times to repeat the key event</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-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">repeat</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
131 <a name="L74"></a><tt class="py-lineno"> 74</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-1" class="py-name" targets="Method lib.scripting.Keyboard.fake_keypress()=lib.scripting.Keyboard-class.html#fake_keypress"><a title="lib.scripting.Keyboard.fake_keypress" class="py-name" href="#" onclick="return doclink('link-1', 'fake_keypress', 'link-1');">fake_keypress</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>
132 </div></div><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> </tt>
133 <a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> </tt>
134 <a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> </tt>
135 <a name="Mouse"></a><div id="Mouse-def"><a name="L78"></a><tt class="py-lineno"> 78</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>
136 </div><div id="Mouse-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Mouse-expanded"><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"> Provides access to send mouse clicks</tt> </tt>
138 <a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
139 <a name="Mouse.__init__"></a><div id="Mouse.__init__-def"><a name="L82"></a><tt class="py-lineno"> 82</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>
140 </div><div id="Mouse.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Mouse.__init__-expanded"><a name="L83"></a><tt class="py-lineno"> 83</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>
141 </div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
142 <a name="Mouse.click_relative"></a><div id="Mouse.click_relative-def"><a name="L85"></a><tt class="py-lineno"> 85</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>
143 </div><div id="Mouse.click_relative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Mouse.click_relative-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
144 <a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> Send a mouse click relative to the active window</tt> </tt>
145 <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"> Usage: C{mouse.click_relative(x, y, button)}</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 class="py-docstring"> @param x: x-coordinate in pixels, relative to upper left corner of window</tt> </tt>
149 <a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> @param y: y-coordinate in pixels, relative to upper left corner of window</tt> </tt>
150 <a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> @param button: mouse button to simulate (left=1, middle=2, right=3)</tt> </tt>
151 <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-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>
153 </div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
154 <a name="Mouse.click_absolute"></a><div id="Mouse.click_absolute-def"><a name="L97"></a><tt class="py-lineno"> 97</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>
155 </div><div id="Mouse.click_absolute-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Mouse.click_absolute-expanded"><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-docstring"> Send a mouse click relative to the screen (absolute)</tt> </tt>
157 <a name="L100"></a><tt class="py-lineno"> 100</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
158 <a name="L101"></a><tt class="py-lineno"> 101</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{mouse.click_absolute(x, y, button)}</tt> </tt>
159 <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"> @param x: x-coordinate in pixels, relative to upper left corner of window</tt> </tt>
161 <a name="L104"></a><tt class="py-lineno"> 104</tt> <tt class="py-line"><tt class="py-docstring"> @param y: y-coordinate in pixels, relative to upper left corner of window</tt> </tt>
162 <a name="L105"></a><tt class="py-lineno"> 105</tt> <tt class="py-line"><tt class="py-docstring"> @param button: mouse button to simulate (left=1, middle=2, right=3)</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-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>
165 </div></div><a name="L108"></a><tt class="py-lineno"> 108</tt> <tt class="py-line"> </tt>
166 <a name="L109"></a><tt class="py-lineno"> 109</tt> <tt class="py-line"> </tt>
167 <a name="Store"></a><div id="Store-def"><a name="L110"></a><tt class="py-lineno"> 110</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>
168 </div><div id="Store-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Store-expanded"><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"> Allows persistent storage of values between invocations of the script.</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>
172 <a name="Store.set_value"></a><div id="Store.set_value-def"><a name="L115"></a><tt class="py-lineno"> 115</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>
173 </div><div id="Store.set_value-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Store.set_value-expanded"><a name="L116"></a><tt class="py-lineno"> 116</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
174 <a name="L117"></a><tt class="py-lineno"> 117</tt> <tt class="py-line"><tt class="py-docstring"> Store a value</tt> </tt>
175 <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"> Usage: C{store.set_value(key, value)}</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 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>
179 </div><a name="L122"></a><tt class="py-lineno"> 122</tt> <tt class="py-line"> </tt>
180 <a name="Store.get_value"></a><div id="Store.get_value-def"><a name="L123"></a><tt class="py-lineno"> 123</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>
181 </div><div id="Store.get_value-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Store.get_value-expanded"><a name="L124"></a><tt class="py-lineno"> 124</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
182 <a name="L125"></a><tt class="py-lineno"> 125</tt> <tt class="py-line"><tt class="py-docstring"> Get a value</tt> </tt>
183 <a name="L126"></a><tt class="py-lineno"> 126</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
184 <a name="L127"></a><tt class="py-lineno"> 127</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{store.get_value(key)}</tt> </tt>
185 <a name="L128"></a><tt class="py-lineno"> 128</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
186 <a name="L129"></a><tt class="py-lineno"> 129</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>
187 </div><a name="L130"></a><tt class="py-lineno"> 130</tt> <tt class="py-line"> </tt>
188 <a name="Store.remove_value"></a><div id="Store.remove_value-def"><a name="L131"></a><tt class="py-lineno"> 131</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>
189 </div><div id="Store.remove_value-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Store.remove_value-expanded"><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"> Remove a value</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"> Usage: C{store.remove_value(key)}</tt> </tt>
193 <a name="L136"></a><tt class="py-lineno"> 136</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
194 <a name="L137"></a><tt class="py-lineno"> 137</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>
195 </div></div><a name="L138"></a><tt class="py-lineno"> 138</tt> <tt class="py-line"> </tt>
196 <a name="QtDialog"></a><div id="QtDialog-def"><a name="L139"></a><tt class="py-lineno"> 139</tt> <a class="py-toggle" href="#" id="QtDialog-toggle" onclick="return toggle('QtDialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.QtDialog-class.html">QtDialog</a><tt class="py-op">:</tt> </tt>
197 </div><div id="QtDialog-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="QtDialog-expanded"><a name="L140"></a><tt class="py-lineno"> 140</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
198 <a name="L141"></a><tt class="py-lineno"> 141</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>
199 <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"> This version uses KDialog to integrate well with KDE.</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"> A note on exit codes: an exit code of 0 indicates that the user clicked OK.</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>
205 <a name="QtDialog.__runKdialog"></a><div id="QtDialog.__runKdialog-def"><a name="L148"></a><tt class="py-lineno"> 148</tt> <a class="py-toggle" href="#" id="QtDialog.__runKdialog-toggle" onclick="return toggle('QtDialog.__runKdialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
206 </div><div id="QtDialog.__runKdialog-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.__runKdialog-expanded"><a name="L149"></a><tt class="py-lineno"> 149</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>
207 <a name="L150"></a><tt class="py-lineno"> 150</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>
208 <a name="L151"></a><tt class="py-lineno"> 151</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>
209 <a name="L152"></a><tt class="py-lineno"> 152</tt> <tt class="py-line"> </tt>
210 <a name="L153"></a><tt class="py-lineno"> 153</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>
211 </div><a name="L154"></a><tt class="py-lineno"> 154</tt> <tt class="py-line"> </tt>
212 <a name="QtDialog.input_dialog"></a><div id="QtDialog.input_dialog-def"><a name="L155"></a><tt class="py-lineno"> 155</tt> <a class="py-toggle" href="#" id="QtDialog.input_dialog-toggle" onclick="return toggle('QtDialog.input_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
213 </div><div id="QtDialog.input_dialog-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.input_dialog-expanded"><a name="L156"></a><tt class="py-lineno"> 156</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
214 <a name="L157"></a><tt class="py-lineno"> 157</tt> <tt class="py-line"><tt class="py-docstring"> Show an input dialog</tt> </tt>
215 <a name="L158"></a><tt class="py-lineno"> 158</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
216 <a name="L159"></a><tt class="py-lineno"> 159</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>
217 <a name="L160"></a><tt class="py-lineno"> 160</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
218 <a name="L161"></a><tt class="py-lineno"> 161</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
219 <a name="L162"></a><tt class="py-lineno"> 162</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the input box</tt> </tt>
220 <a name="L163"></a><tt class="py-lineno"> 163</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value for the input box</tt> </tt>
221 <a name="L164"></a><tt class="py-lineno"> 164</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user input</tt> </tt>
222 <a name="L165"></a><tt class="py-lineno"> 165</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</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-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Method lib.scripting.QtDialog.__runKdialog()=lib.scripting.QtDialog-class.html#__runKdialog"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-2', '__runKdialog', 'link-2');">__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>
225 </div><a name="L168"></a><tt class="py-lineno"> 168</tt> <tt class="py-line"> </tt>
226 <a name="QtDialog.password_dialog"></a><div id="QtDialog.password_dialog-def"><a name="L169"></a><tt class="py-lineno"> 169</tt> <a class="py-toggle" href="#" id="QtDialog.password_dialog-toggle" onclick="return toggle('QtDialog.password_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
227 </div><div id="QtDialog.password_dialog-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.password_dialog-expanded"><a name="L170"></a><tt class="py-lineno"> 170</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
228 <a name="L171"></a><tt class="py-lineno"> 171</tt> <tt class="py-line"><tt class="py-docstring"> Show a password input dialog</tt> </tt>
229 <a name="L172"></a><tt class="py-lineno"> 172</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
230 <a name="L173"></a><tt class="py-lineno"> 173</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.password_dialog(title="Enter password", message="Enter password")}</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 class="py-docstring"> @param title: window title for the dialog</tt> </tt>
233 <a name="L176"></a><tt class="py-lineno"> 176</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the password input box</tt> </tt>
234 <a name="L177"></a><tt class="py-lineno"> 177</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user input</tt> </tt>
235 <a name="L178"></a><tt class="py-lineno"> 178</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
236 <a name="L179"></a><tt class="py-lineno"> 179</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
237 <a name="L180"></a><tt class="py-lineno"> 180</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-3', '__runKdialog', 'link-2');">__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>
238 </div><a name="L181"></a><tt class="py-lineno"> 181</tt> <tt class="py-line"> </tt>
239 <a name="QtDialog.combo_menu"></a><div id="QtDialog.combo_menu-def"><a name="L182"></a><tt class="py-lineno"> 182</tt> <a class="py-toggle" href="#" id="QtDialog.combo_menu-toggle" onclick="return toggle('QtDialog.combo_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
240 </div><div id="QtDialog.combo_menu-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.combo_menu-expanded"><a name="L183"></a><tt class="py-lineno"> 183</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
241 <a name="L184"></a><tt class="py-lineno"> 184</tt> <tt class="py-line"><tt class="py-docstring"> Show a combobox menu</tt> </tt>
242 <a name="L185"></a><tt class="py-lineno"> 185</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
243 <a name="L186"></a><tt class="py-lineno"> 186</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>
244 <a name="L187"></a><tt class="py-lineno"> 187</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
245 <a name="L188"></a><tt class="py-lineno"> 188</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
246 <a name="L189"></a><tt class="py-lineno"> 189</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
247 <a name="L190"></a><tt class="py-lineno"> 190</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the combobox</tt> </tt>
248 <a name="L191"></a><tt class="py-lineno"> 191</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user choice</tt> </tt>
249 <a name="L192"></a><tt class="py-lineno"> 192</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
250 <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-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-4', '__runKdialog', 'link-2');">__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>
252 </div><a name="L195"></a><tt class="py-lineno"> 195</tt> <tt class="py-line"> </tt>
253 <a name="QtDialog.list_menu"></a><div id="QtDialog.list_menu-def"><a name="L196"></a><tt class="py-lineno"> 196</tt> <a class="py-toggle" href="#" id="QtDialog.list_menu-toggle" onclick="return toggle('QtDialog.list_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
254 </div><div id="QtDialog.list_menu-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.list_menu-expanded"><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"> Show a single-selection list menu</tt> </tt>
256 <a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
257 <a name="L200"></a><tt class="py-lineno"> 200</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>
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 class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
260 <a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
261 <a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
262 <a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value to be selected</tt> </tt>
263 <a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user choice</tt> </tt>
264 <a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
265 <a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
266 <a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"> </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-op">[</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-name">optionNum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
269 <a name="L212"></a><tt class="py-lineno"> 212</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>
270 <a name="L213"></a><tt class="py-lineno"> 213</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>
271 <a name="L214"></a><tt class="py-lineno"> 214</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>
272 <a name="L215"></a><tt class="py-lineno"> 215</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>
273 <a name="L216"></a><tt class="py-lineno"> 216</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>
274 <a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
275 <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-name">append</tt><tt class="py-op">(</tt><tt class="py-string">"off"</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-name">optionNum</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
277 <a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"> </tt>
278 <a name="L221"></a><tt class="py-lineno"> 221</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-5" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-5', '__runKdialog', 'link-2');">__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>
279 <a name="L222"></a><tt class="py-lineno"> 222</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>
280 <a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"> </tt>
281 <a name="L224"></a><tt class="py-lineno"> 224</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>
282 </div><a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"> </tt>
283 <a name="QtDialog.list_menu_multi"></a><div id="QtDialog.list_menu_multi-def"><a name="L226"></a><tt class="py-lineno"> 226</tt> <a class="py-toggle" href="#" id="QtDialog.list_menu_multi-toggle" onclick="return toggle('QtDialog.list_menu_multi');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
284 </div><div id="QtDialog.list_menu_multi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.list_menu_multi-expanded"><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"> Show a multiple-selection list menu</tt> </tt>
286 <a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
287 <a name="L230"></a><tt class="py-lineno"> 230</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>
288 <a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
289 <a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
290 <a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
291 <a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
292 <a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"><tt class="py-docstring"> @param defaults: list of default values to be selected</tt> </tt>
293 <a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user choice</tt> </tt>
294 <a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
295 <a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
296 <a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"> </tt>
297 <a name="L240"></a><tt class="py-lineno"> 240</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>
298 <a name="L241"></a><tt class="py-lineno"> 241</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
299 <a name="L242"></a><tt class="py-lineno"> 242</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>
300 <a name="L243"></a><tt class="py-lineno"> 243</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>
301 <a name="L244"></a><tt class="py-lineno"> 244</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>
302 <a name="L245"></a><tt class="py-lineno"> 245</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>
303 <a name="L246"></a><tt class="py-lineno"> 246</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>
304 <a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
305 <a name="L248"></a><tt class="py-lineno"> 248</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>
306 <a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"> <tt class="py-name">optionNum</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
307 <a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"> </tt>
308 <a name="L251"></a><tt class="py-lineno"> 251</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-6" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-6', '__runKdialog', 'link-2');">__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>
309 <a name="L252"></a><tt class="py-lineno"> 252</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>
310 <a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"> </tt>
311 <a name="L254"></a><tt class="py-lineno"> 254</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>
312 <a name="L255"></a><tt class="py-lineno"> 255</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>
313 <a name="L256"></a><tt class="py-lineno"> 256</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>
314 <a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"> </tt>
315 <a name="L258"></a><tt class="py-lineno"> 258</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>
316 </div><a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"> </tt>
317 <a name="QtDialog.open_file"></a><div id="QtDialog.open_file-def"><a name="L260"></a><tt class="py-lineno"> 260</tt> <a class="py-toggle" href="#" id="QtDialog.open_file-toggle" onclick="return toggle('QtDialog.open_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
318 </div><div id="QtDialog.open_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.open_file-expanded"><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"> Show an Open File dialog</tt> </tt>
320 <a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
321 <a name="L264"></a><tt class="py-lineno"> 264</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>
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-docstring"> @param title: window title for the dialog</tt> </tt>
324 <a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"><tt class="py-docstring"> @param initialDir: starting directory for the file dialog</tt> </tt>
325 <a name="L268"></a><tt class="py-lineno"> 268</tt> <tt class="py-line"><tt class="py-docstring"> @param fileTypes: file type filter expression</tt> </tt>
326 <a name="L269"></a><tt class="py-lineno"> 269</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>
327 <a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and file path</tt> </tt>
328 <a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
329 <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-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>
331 <a name="L274"></a><tt class="py-lineno"> 274</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-7', '__runKdialog', 'link-2');">__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>
332 <a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
333 <a name="L276"></a><tt class="py-lineno"> 276</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-8', '__runKdialog', 'link-2');">__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>
334 </div><a name="L277"></a><tt class="py-lineno"> 277</tt> <tt class="py-line"> </tt>
335 <a name="QtDialog.save_file"></a><div id="QtDialog.save_file-def"><a name="L278"></a><tt class="py-lineno"> 278</tt> <a class="py-toggle" href="#" id="QtDialog.save_file-toggle" onclick="return toggle('QtDialog.save_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
336 </div><div id="QtDialog.save_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.save_file-expanded"><a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
337 <a name="L280"></a><tt class="py-lineno"> 280</tt> <tt class="py-line"><tt class="py-docstring"> Show a Save As dialog</tt> </tt>
338 <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"> Usage: C{dialog.save_file(title="Save As", initialDir="~", fileTypes="*|All Files", rememberAs=None)}</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"> @param title: window title for the dialog</tt> </tt>
342 <a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"><tt class="py-docstring"> @param initialDir: starting directory for the file dialog</tt> </tt>
343 <a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"><tt class="py-docstring"> @param fileTypes: file type filter expression</tt> </tt>
344 <a name="L287"></a><tt class="py-lineno"> 287</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>
345 <a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and file path</tt> </tt>
346 <a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</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-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>
349 <a name="L292"></a><tt class="py-lineno"> 292</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-9', '__runKdialog', 'link-2');">__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>
350 <a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"> <tt class="py-keyword">else</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">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-10', '__runKdialog', 'link-2');">__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>
352 </div><a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"> </tt>
353 <a name="QtDialog.choose_directory"></a><div id="QtDialog.choose_directory-def"><a name="L296"></a><tt class="py-lineno"> 296</tt> <a class="py-toggle" href="#" id="QtDialog.choose_directory-toggle" onclick="return toggle('QtDialog.choose_directory');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
354 </div><div id="QtDialog.choose_directory-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.choose_directory-expanded"><a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
355 <a name="L298"></a><tt class="py-lineno"> 298</tt> <tt class="py-line"><tt class="py-docstring"> Show a Directory Chooser dialog</tt> </tt>
356 <a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
357 <a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.choose_directory(title="Select Directory", initialDir="~", rememberAs=None)}</tt> </tt>
358 <a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
359 <a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
360 <a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"><tt class="py-docstring"> @param initialDir: starting directory for the directory chooser dialog</tt> </tt>
361 <a name="L304"></a><tt class="py-lineno"> 304</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>
362 <a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and chosen path</tt> </tt>
363 <a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</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-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>
366 <a name="L309"></a><tt class="py-lineno"> 309</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-11', '__runKdialog', 'link-2');">__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>
367 <a name="L310"></a><tt class="py-lineno"> 310</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
368 <a name="L311"></a><tt class="py-lineno"> 311</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.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-12', '__runKdialog', 'link-2');">__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>
369 </div><a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> </tt>
370 <a name="QtDialog.choose_colour"></a><div id="QtDialog.choose_colour-def"><a name="L313"></a><tt class="py-lineno"> 313</tt> <a class="py-toggle" href="#" id="QtDialog.choose_colour-toggle" onclick="return toggle('QtDialog.choose_colour');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtDialog-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>
371 </div><div id="QtDialog.choose_colour-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtDialog.choose_colour-expanded"><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 class="py-docstring"> Show a Colour Chooser dialog</tt> </tt>
373 <a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
374 <a name="L317"></a><tt class="py-lineno"> 317</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.choose_colour(title="Select Colour")}</tt> </tt>
375 <a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
376 <a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
377 <a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and colour</tt> </tt>
378 <a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
379 <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-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="lib.scripting.QtDialog.__runKdialog" class="py-name" href="#" onclick="return doclink('link-13', '__runKdialog', 'link-2');">__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>
381 </div></div><a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"> </tt>
382 <a name="L325"></a><tt class="py-lineno"> 325</tt> <tt class="py-line"> </tt>
383 <a name="System"></a><div id="System-def"><a name="L326"></a><tt class="py-lineno"> 326</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>
384 </div><div id="System-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="System-expanded"><a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
385 <a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"><tt class="py-docstring"> Simplified access to some system commands.</tt> </tt>
386 <a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
387 <a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"> </tt>
388 <a name="System.exec_command"></a><div id="System.exec_command-def"><a name="L331"></a><tt class="py-lineno"> 331</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-param">getOutput</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
389 </div><div id="System.exec_command-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="System.exec_command-expanded"><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"> Execute a shell command</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-docstring"> Set getOutput to False if the command does not exit and return immediately. Otherwise</tt> </tt>
393 <a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"><tt class="py-docstring"> AutoKey will not respond to any hotkeys/abbreviations etc until the process started</tt> </tt>
394 <a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"><tt class="py-docstring"> by the command exits.</tt> </tt>
395 <a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
396 <a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{system.exec_command(command, getOutput=True)}</tt> </tt>
397 <a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
398 <a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"><tt class="py-docstring"> @param command: command to be executed (including any arguments) - e.g. "ls -l"</tt> </tt>
399 <a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"><tt class="py-docstring"> @param getOutput: whether to capture the (stdout) output of the command</tt> </tt>
400 <a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"><tt class="py-docstring"> @raise subprocess.CalledProcessError: if the command returns a non-zero exit code</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-keyword">if</tt> <tt class="py-name">getOutput</tt><tt class="py-op">:</tt> </tt>
403 <a name="L346"></a><tt class="py-lineno"> 346</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>
404 <a name="L347"></a><tt class="py-lineno"> 347</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>
405 <a name="L348"></a><tt class="py-lineno"> 348</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>
406 <a name="L349"></a><tt class="py-lineno"> 349</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>
407 <a name="L350"></a><tt class="py-lineno"> 350</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>
408 <a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"> <tt class="py-keyword">else</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-keyword">return</tt> <tt class="py-name">output</tt> </tt>
410 <a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
411 <a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"> <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>
412 </div><a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"> </tt>
413 <a name="System.create_file"></a><div id="System.create_file-def"><a name="L356"></a><tt class="py-lineno"> 356</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>
414 </div><div id="System.create_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="System.create_file-expanded"><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"> Create a file with 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"> Usage: C{system.create_file(fileName, contents="")}</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-docstring"> @param fileName: full path to the file to be created</tt> </tt>
420 <a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: contents to insert into the file</tt> </tt>
421 <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-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>
423 <a name="L366"></a><tt class="py-lineno"> 366</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>
424 <a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-14" 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-14', 'close', 'link-14');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
425 </div></div><a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"> </tt>
426 <a name="L369"></a><tt class="py-lineno"> 369</tt> <tt class="py-line"> </tt>
427 <a name="GtkDialog"></a><div id="GtkDialog-def"><a name="L370"></a><tt class="py-lineno"> 370</tt> <a class="py-toggle" href="#" id="GtkDialog-toggle" onclick="return toggle('GtkDialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-class.html">GtkDialog</a><tt class="py-op">:</tt> </tt>
428 </div><div id="GtkDialog-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="GtkDialog-expanded"><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"> Provides a simple interface for the display of some basic dialogs to collect information from the user.</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-docstring"> This version uses Zenity to integrate well with GNOME.</tt> </tt>
432 <a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
433 <a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"><tt class="py-docstring"> A note on exit codes: an exit code of 0 indicates that the user clicked OK.</tt> </tt>
434 <a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
435 <a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"> </tt>
436 <a name="GtkDialog.__runZenity"></a><div id="GtkDialog.__runZenity-def"><a name="L379"></a><tt class="py-lineno"> 379</tt> <a class="py-toggle" href="#" id="GtkDialog.__runZenity-toggle" onclick="return toggle('GtkDialog.__runZenity');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
437 </div><div id="GtkDialog.__runZenity-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.__runZenity-expanded"><a name="L380"></a><tt class="py-lineno"> 380</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>
438 <a name="L381"></a><tt class="py-lineno"> 381</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>
439 <a name="L382"></a><tt class="py-lineno"> 382</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>
440 <a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> </tt>
441 <a name="L384"></a><tt class="py-lineno"> 384</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>
442 </div><a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"> </tt>
443 <a name="GtkDialog.input_dialog"></a><div id="GtkDialog.input_dialog-def"><a name="L386"></a><tt class="py-lineno"> 386</tt> <a class="py-toggle" href="#" id="GtkDialog.input_dialog-toggle" onclick="return toggle('GtkDialog.input_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
444 </div><div id="GtkDialog.input_dialog-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.input_dialog-expanded"><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 class="py-docstring"> Show an input dialog</tt> </tt>
446 <a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
447 <a name="L390"></a><tt class="py-lineno"> 390</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>
448 <a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
449 <a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
450 <a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the input box</tt> </tt>
451 <a name="L394"></a><tt class="py-lineno"> 394</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value for the input box</tt> </tt>
452 <a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user input</tt> </tt>
453 <a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</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-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method lib.scripting.GtkDialog.__runZenity()=lib.scripting.GtkDialog-class.html#__runZenity"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-15', '__runZenity', 'link-15');">__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>
456 </div><a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"> </tt>
457 <a name="GtkDialog.password_dialog"></a><div id="GtkDialog.password_dialog-def"><a name="L400"></a><tt class="py-lineno"> 400</tt> <a class="py-toggle" href="#" id="GtkDialog.password_dialog-toggle" onclick="return toggle('GtkDialog.password_dialog');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
458 </div><div id="GtkDialog.password_dialog-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.password_dialog-expanded"><a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
459 <a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"><tt class="py-docstring"> Show a password input dialog</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-docstring"> Usage: C{dialog.password_dialog(title="Enter password", message="Enter password")}</tt> </tt>
462 <a name="L405"></a><tt class="py-lineno"> 405</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
463 <a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
464 <a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the password input box</tt> </tt>
465 <a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user input</tt> </tt>
466 <a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
467 <a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
468 <a name="L411"></a><tt class="py-lineno"> 411</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-16" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-16', '__runZenity', 'link-15');">__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>
469 <a name="L412"></a><tt class="py-lineno"> 412</tt> <tt class="py-line"> </tt>
470 <a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"> <tt class="py-comment">#def combo_menu(self, options, title="Choose an option", message="Choose an option"):</tt> </tt>
471 <a name="L414"></a><tt class="py-lineno"> 414</tt> <tt class="py-line"> <tt class="py-string">"""</tt> </tt>
472 <a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"><tt class="py-string"> Show a combobox menu - not supported by zenity</tt> </tt>
473 <a name="L416"></a><tt class="py-lineno"> 416</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
474 <a name="L417"></a><tt class="py-lineno"> 417</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>
475 <a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
476 <a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"><tt class="py-string"> @param options: list of options (strings) for the dialog</tt> </tt>
477 <a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"><tt class="py-string"> @param title: window title for the dialog</tt> </tt>
478 <a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"><tt class="py-string"> @param message: message displayed above the combobox </tt> </tt>
479 <a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt>
480 </div><a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"> <tt class="py-comment">#return self.__runZenity(title, ["--combobox", message] + options)</tt> </tt>
481 <a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"> </tt>
482 <a name="GtkDialog.list_menu"></a><div id="GtkDialog.list_menu-def"><a name="L425"></a><tt class="py-lineno"> 425</tt> <a class="py-toggle" href="#" id="GtkDialog.list_menu-toggle" onclick="return toggle('GtkDialog.list_menu');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
483 </div><div id="GtkDialog.list_menu-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.list_menu-expanded"><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"> Show a single-selection list menu</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"> Usage: C{dialog.list_menu(options, title="Choose a value", message="Choose a value", default=None)}</tt> </tt>
487 <a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
488 <a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"><tt class="py-docstring"> @param options: list of options (strings) for the dialog</tt> </tt>
489 <a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
490 <a name="L433"></a><tt class="py-lineno"> 433</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
491 <a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"><tt class="py-docstring"> @param default: default value to be selected</tt> </tt>
492 <a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user choice</tt> </tt>
493 <a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
494 <a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
495 <a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"> </tt>
496 <a name="L439"></a><tt class="py-lineno"> 439</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>
497 <a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"> <tt class="py-comment">#optionNum = 0</tt> </tt>
498 <a name="L441"></a><tt class="py-lineno"> 441</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>
499 <a name="L442"></a><tt class="py-lineno"> 442</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>
500 <a name="L443"></a><tt class="py-lineno"> 443</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>
501 <a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
502 <a name="L445"></a><tt class="py-lineno"> 445</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>
503 <a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"> </tt>
504 <a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"> <tt class="py-comment">#choices.append(str(optionNum))</tt> </tt>
505 <a name="L448"></a><tt class="py-lineno"> 448</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>
506 <a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"> <tt class="py-comment">#optionNum += 1</tt> </tt>
507 <a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"> </tt>
508 <a name="L451"></a><tt class="py-lineno"> 451</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-17" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-17', '__runZenity', 'link-15');">__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>
509 </div><a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"> </tt>
510 <a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"> <tt class="py-comment">#return retCode, choice </tt> </tt>
511 <a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"> </tt>
512 <a name="GtkDialog.list_menu_multi"></a><div id="GtkDialog.list_menu_multi-def"><a name="L455"></a><tt class="py-lineno"> 455</tt> <a class="py-toggle" href="#" id="GtkDialog.list_menu_multi-toggle" onclick="return toggle('GtkDialog.list_menu_multi');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
513 </div><div id="GtkDialog.list_menu_multi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.list_menu_multi-expanded"><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"> Show a multiple-selection list menu</tt> </tt>
515 <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"> Usage: C{dialog.list_menu_multi(options, title="Choose one or more values", message="Choose one or more values", defaults=[])}</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"> @param options: list of options (strings) for the dialog</tt> </tt>
519 <a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
520 <a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"><tt class="py-docstring"> @param message: message displayed above the list</tt> </tt>
521 <a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"><tt class="py-docstring"> @param defaults: list of default values to be selected</tt> </tt>
522 <a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and user choice</tt> </tt>
523 <a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
524 <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>
526 <a name="L469"></a><tt class="py-lineno"> 469</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>
527 <a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"> <tt class="py-comment">#optionNum = 0</tt> </tt>
528 <a name="L471"></a><tt class="py-lineno"> 471</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>
529 <a name="L472"></a><tt class="py-lineno"> 472</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>
530 <a name="L473"></a><tt class="py-lineno"> 473</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>
531 <a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
532 <a name="L475"></a><tt class="py-lineno"> 475</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>
533 <a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"> </tt>
534 <a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"> <tt class="py-comment">#choices.append(str(optionNum))</tt> </tt>
535 <a name="L478"></a><tt class="py-lineno"> 478</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>
536 <a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"> <tt class="py-comment">#optionNum += 1</tt> </tt>
537 <a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"> </tt>
538 <a name="L481"></a><tt class="py-lineno"> 481</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-18" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-18', '__runZenity', 'link-15');">__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>
539 <a name="L482"></a><tt class="py-lineno"> 482</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-string">'|'</tt><tt class="py-op">)</tt> </tt>
540 <a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"> </tt>
541 <a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"> <tt class="py-comment">#choices = []</tt> </tt>
542 <a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"> <tt class="py-comment">#for choice in results:</tt> </tt>
543 <a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"> <tt class="py-comment"># choices.append(choice)</tt> </tt>
544 <a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"> </tt>
545 <a name="L488"></a><tt class="py-lineno"> 488</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">results</tt> </tt>
546 </div><a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"> </tt>
547 <a name="GtkDialog.open_file"></a><div id="GtkDialog.open_file-def"><a name="L490"></a><tt class="py-lineno"> 490</tt> <a class="py-toggle" href="#" id="GtkDialog.open_file-toggle" onclick="return toggle('GtkDialog.open_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
548 </div><div id="GtkDialog.open_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.open_file-expanded"><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"> Show an Open File dialog</tt> </tt>
550 <a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
551 <a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.open_file(title="Open File")}</tt> </tt>
552 <a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
553 <a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
554 <a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and file path</tt> </tt>
555 <a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
556 <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-comment">#if rememberAs is not None:</tt> </tt>
558 <a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"> <tt class="py-comment"># return self.__runZenity(title, ["--getopenfilename", initialDir, fileTypes, ":" + rememberAs])</tt> </tt>
559 <a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"> <tt class="py-comment">#else:</tt> </tt>
560 <a name="L503"></a><tt class="py-lineno"> 503</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-19" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-19', '__runZenity', 'link-15');">__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>
561 </div><a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"> </tt>
562 <a name="GtkDialog.save_file"></a><div id="GtkDialog.save_file-def"><a name="L505"></a><tt class="py-lineno"> 505</tt> <a class="py-toggle" href="#" id="GtkDialog.save_file-toggle" onclick="return toggle('GtkDialog.save_file');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
563 </div><div id="GtkDialog.save_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.save_file-expanded"><a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
564 <a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"><tt class="py-docstring"> Show a Save As dialog</tt> </tt>
565 <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"> Usage: C{dialog.save_file(title="Save As")}</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"> @param title: window title for the dialog</tt> </tt>
569 <a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and file path</tt> </tt>
570 <a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</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-comment">#if rememberAs is not None:</tt> </tt>
573 <a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-comment"># return self.__runZenity(title, ["--getsavefilename", initialDir, fileTypes, ":" + rememberAs])</tt> </tt>
574 <a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"> <tt class="py-comment">#else:</tt> </tt>
575 <a name="L518"></a><tt class="py-lineno"> 518</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-20" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-20', '__runZenity', 'link-15');">__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>
576 </div><a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"> </tt>
577 <a name="GtkDialog.choose_directory"></a><div id="GtkDialog.choose_directory-def"><a name="L520"></a><tt class="py-lineno"> 520</tt> <a class="py-toggle" href="#" id="GtkDialog.choose_directory-toggle" onclick="return toggle('GtkDialog.choose_directory');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-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>
578 </div><div id="GtkDialog.choose_directory-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.choose_directory-expanded"><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-docstring"> Show a Directory Chooser dialog</tt> </tt>
580 <a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
581 <a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.choose_directory(title="Select Directory")}</tt> </tt>
582 <a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
583 <a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
584 <a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and path</tt> </tt>
585 <a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
586 <a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
587 <a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"> <tt class="py-comment">#if rememberAs is not None:</tt> </tt>
588 <a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"> <tt class="py-comment"># return self.__runZenity(title, ["--getexistingdirectory", initialDir, ":" + rememberAs])</tt> </tt>
589 <a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"> <tt class="py-comment">#else:</tt> </tt>
590 <a name="L533"></a><tt class="py-lineno"> 533</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-21" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-21', '__runZenity', 'link-15');">__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>
591 <a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"> </tt>
592 <a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"> <tt class="py-comment">#def choose_colour(self, title="Select Colour"):</tt> </tt>
593 <a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"> <tt class="py-string">"""</tt> </tt>
594 <a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"><tt class="py-string"> Show a Colour Chooser dialog - not supported by zenity</tt> </tt>
595 <a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
596 <a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"><tt class="py-string"> Usage: C{dialog.choose_colour(title="Select Colour")}</tt> </tt>
597 <a name="L540"></a><tt class="py-lineno"> 540</tt> <tt class="py-line"><tt class="py-string"> </tt> </tt>
598 <a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"><tt class="py-string"> @param title: window title for the dialog</tt> </tt>
599 <a name="L542"></a><tt class="py-lineno"> 542</tt> <tt class="py-line"><tt class="py-string"> """</tt> </tt>
600 </div><a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"> <tt class="py-comment">#return self.__runZenity(title, ["--getcolor"])</tt> </tt>
601 <a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"> </tt>
602 <a name="GtkDialog.calendar"></a><div id="GtkDialog.calendar-def"><a name="L545"></a><tt class="py-lineno"> 545</tt> <a class="py-toggle" href="#" id="GtkDialog.calendar-toggle" onclick="return toggle('GtkDialog.calendar');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkDialog-class.html#calendar">calendar</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">"Choose a date"</tt><tt class="py-op">,</tt> <tt class="py-param">format</tt><tt class="py-op">=</tt><tt class="py-string">"%Y-%m-%d"</tt><tt class="py-op">,</tt> <tt class="py-param">date</tt><tt class="py-op">=</tt><tt class="py-string">"today"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
603 </div><div id="GtkDialog.calendar-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkDialog.calendar-expanded"><a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
604 <a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"><tt class="py-docstring"> Show a calendar dialog</tt> </tt>
605 <a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
606 <a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{dialog.calendar_dialog(title="Choose a date", format="%Y-%m-%d", date="YYYY-MM-DD")}</tt> </tt>
607 <a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
608 <a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title for the dialog</tt> </tt>
609 <a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"><tt class="py-docstring"> @param format: format of date to be returned</tt> </tt>
610 <a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"><tt class="py-docstring"> @param date: initial date as YYYY-MM-DD, otherwise today</tt> </tt>
611 <a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"><tt class="py-docstring"> @return: a tuple containing the exit code and date</tt> </tt>
612 <a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, str)}</tt> </tt>
613 <a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
614 <a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">r"[0-9]{4}-[0-9]{2}-[0-9]{2}"</tt><tt class="py-op">,</tt> <tt class="py-name">date</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
615 <a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"> <tt class="py-name">year</tt> <tt class="py-op">=</tt> <tt class="py-name">date</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt>
616 <a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"> <tt class="py-name">month</tt> <tt class="py-op">=</tt> <tt class="py-name">date</tt><tt class="py-op">[</tt><tt class="py-number">5</tt><tt class="py-op">:</tt><tt class="py-number">7</tt><tt class="py-op">]</tt> </tt>
617 <a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"> <tt class="py-name">day</tt> <tt class="py-op">=</tt> <tt class="py-name">date</tt><tt class="py-op">[</tt><tt class="py-number">8</tt><tt class="py-op">:</tt><tt class="py-number">10</tt><tt class="py-op">]</tt> </tt>
618 <a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"> <tt class="py-name">date_args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"--year="</tt> <tt class="py-op">+</tt> <tt class="py-name">year</tt><tt class="py-op">,</tt> <tt class="py-string">"--month="</tt> <tt class="py-op">+</tt> <tt class="py-name">month</tt><tt class="py-op">,</tt> <tt class="py-string">"--day="</tt> <tt class="py-op">+</tt> <tt class="py-name">day</tt><tt class="py-op">]</tt> </tt>
619 <a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
620 <a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"> <tt class="py-name">date_args</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
621 <a name="L564"></a><tt class="py-lineno"> 564</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-22" class="py-name"><a title="lib.scripting.GtkDialog.__runZenity" class="py-name" href="#" onclick="return doclink('link-22', '__runZenity', 'link-15');">__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">"--calendar"</tt><tt class="py-op">,</tt> <tt class="py-string">"--date-format="</tt> <tt class="py-op">+</tt> <tt class="py-name">format</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">date_args</tt><tt class="py-op">)</tt> </tt>
622 </div></div><a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"> </tt>
623 <a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"> </tt>
624 <a name="QtClipboard"></a><div id="QtClipboard-def"><a name="L567"></a><tt class="py-lineno"> 567</tt> <a class="py-toggle" href="#" id="QtClipboard-toggle" onclick="return toggle('QtClipboard');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-class.html">QtClipboard</a><tt class="py-op">:</tt> </tt>
625 </div><div id="QtClipboard-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="QtClipboard-expanded"><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 class="py-docstring"> Read/write access to the X selection and clipboard - QT version</tt> </tt>
627 <a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
628 <a name="L571"></a><tt class="py-lineno"> 571</tt> <tt class="py-line"> </tt>
629 <a name="QtClipboard.__init__"></a><div id="QtClipboard.__init__-def"><a name="L572"></a><tt class="py-lineno"> 572</tt> <a class="py-toggle" href="#" id="QtClipboard.__init__-toggle" onclick="return toggle('QtClipboard.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
630 </div><div id="QtClipboard.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.__init__-expanded"><a name="L573"></a><tt class="py-lineno"> 573</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>
631 <a name="L574"></a><tt class="py-lineno"> 574</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>
632 </div><a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"> </tt>
633 <a name="QtClipboard.fill_selection"></a><div id="QtClipboard.fill_selection-def"><a name="L576"></a><tt class="py-lineno"> 576</tt> <a class="py-toggle" href="#" id="QtClipboard.fill_selection-toggle" onclick="return toggle('QtClipboard.fill_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
634 </div><div id="QtClipboard.fill_selection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.fill_selection-expanded"><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"> Copy text into the X selection</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"> Usage: C{clipboard.fill_selection(contents)}</tt> </tt>
638 <a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
639 <a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
640 <a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
641 <a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method lib.scripting.GtkClipboard.__execAsync()=lib.scripting.GtkClipboard-class.html#__execAsync,Method lib.scripting.QtClipboard.__execAsync()=lib.scripting.QtClipboard-class.html#__execAsync"><a title="lib.scripting.GtkClipboard.__execAsync
607642 lib.scripting.QtClipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-23', '__execAsync', 'link-23');">__execAsync</a></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.GtkClipboard.__fillSelection()=lib.scripting.GtkClipboard-class.html#__fillSelection,Method lib.scripting.QtClipboard.__fillSelection()=lib.scripting.QtClipboard-class.html#__fillSelection"><a title="lib.scripting.GtkClipboard.__fillSelection
608643 lib.scripting.QtClipboard.__fillSelection" class="py-name" href="#" onclick="return doclink('link-24', '__fillSelection', 'link-24');">__fillSelection</a></tt><tt class="py-op">,</tt> <tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
609 </div><a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> </tt>
610 <a name="QtClipboard.__fillSelection"></a><div id="QtClipboard.__fillSelection-def"><a name="L551"></a><tt class="py-lineno">551</tt> <a class="py-toggle" href="#" id="QtClipboard.__fillSelection-toggle" onclick="return toggle('QtClipboard.__fillSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
611 </div><div id="QtClipboard.__fillSelection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.__fillSelection-expanded"><a name="L552"></a><tt class="py-lineno">552</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>
612 <a name="L553"></a><tt class="py-lineno">553</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>
613 </div><a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> </tt>
614 <a name="QtClipboard.get_selection"></a><div id="QtClipboard.get_selection-def"><a name="L555"></a><tt class="py-lineno">555</tt> <a class="py-toggle" href="#" id="QtClipboard.get_selection-toggle" onclick="return toggle('QtClipboard.get_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
615 </div><div id="QtClipboard.get_selection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.get_selection-expanded"><a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
616 <a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the X selection</tt> </tt>
617 <a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
618 <a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_selection()}</tt> </tt>
619 <a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
620 <a name="L561"></a><tt class="py-lineno">561</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.GtkClipboard.__execAsync
644 </div><a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"> </tt>
645 <a name="QtClipboard.__fillSelection"></a><div id="QtClipboard.__fillSelection-def"><a name="L586"></a><tt class="py-lineno"> 586</tt> <a class="py-toggle" href="#" id="QtClipboard.__fillSelection-toggle" onclick="return toggle('QtClipboard.__fillSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
646 </div><div id="QtClipboard.__fillSelection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.__fillSelection-expanded"><a name="L587"></a><tt class="py-lineno"> 587</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>
647 <a name="L588"></a><tt class="py-lineno"> 588</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>
648 </div><a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> </tt>
649 <a name="QtClipboard.get_selection"></a><div id="QtClipboard.get_selection-def"><a name="L590"></a><tt class="py-lineno"> 590</tt> <a class="py-toggle" href="#" id="QtClipboard.get_selection-toggle" onclick="return toggle('QtClipboard.get_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
650 </div><div id="QtClipboard.get_selection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.get_selection-expanded"><a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
651 <a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the X selection</tt> </tt>
652 <a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
653 <a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_selection()}</tt> </tt>
654 <a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
655 <a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"><tt class="py-docstring"> @return: text contents of the mouse selection</tt> </tt>
656 <a name="L597"></a><tt class="py-lineno"> 597</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{str}</tt> </tt>
657 <a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
658 <a name="L599"></a><tt class="py-lineno"> 599</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.GtkClipboard.__execAsync
621659 lib.scripting.QtClipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-25', '__execAsync', 'link-23');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method lib.scripting.QtClipboard.__getSelection()=lib.scripting.QtClipboard-class.html#__getSelection"><a title="lib.scripting.QtClipboard.__getSelection" class="py-name" href="#" onclick="return doclink('link-26', '__getSelection', 'link-26');">__getSelection</a></tt><tt class="py-op">)</tt> </tt>
622 <a name="L562"></a><tt class="py-lineno">562</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>
623 </div><a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> </tt>
624 <a name="QtClipboard.__getSelection"></a><div id="QtClipboard.__getSelection-def"><a name="L564"></a><tt class="py-lineno">564</tt> <a class="py-toggle" href="#" id="QtClipboard.__getSelection-toggle" onclick="return toggle('QtClipboard.__getSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
625 </div><div id="QtClipboard.__getSelection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.__getSelection-expanded"><a name="L565"></a><tt class="py-lineno">565</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>
626 <a name="L566"></a><tt class="py-lineno">566</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>
627 </div><a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> </tt>
628 <a name="QtClipboard.fill_clipboard"></a><div id="QtClipboard.fill_clipboard-def"><a name="L568"></a><tt class="py-lineno">568</tt> <a class="py-toggle" href="#" id="QtClipboard.fill_clipboard-toggle" onclick="return toggle('QtClipboard.fill_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
629 </div><div id="QtClipboard.fill_clipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.fill_clipboard-expanded"><a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
630 <a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the clipboard</tt> </tt>
631 <a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
632 <a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_clipboard(contents)}</tt> </tt>
633 <a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
634 <a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
635 <a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
636 <a name="L576"></a><tt class="py-lineno">576</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.GtkClipboard.__execAsync
660 <a name="L600"></a><tt class="py-lineno"> 600</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>
661 </div><a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"> </tt>
662 <a name="QtClipboard.__getSelection"></a><div id="QtClipboard.__getSelection-def"><a name="L602"></a><tt class="py-lineno"> 602</tt> <a class="py-toggle" href="#" id="QtClipboard.__getSelection-toggle" onclick="return toggle('QtClipboard.__getSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
663 </div><div id="QtClipboard.__getSelection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.__getSelection-expanded"><a name="L603"></a><tt class="py-lineno"> 603</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>
664 <a name="L604"></a><tt class="py-lineno"> 604</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>
665 </div><a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"> </tt>
666 <a name="QtClipboard.fill_clipboard"></a><div id="QtClipboard.fill_clipboard-def"><a name="L606"></a><tt class="py-lineno"> 606</tt> <a class="py-toggle" href="#" id="QtClipboard.fill_clipboard-toggle" onclick="return toggle('QtClipboard.fill_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
667 </div><div id="QtClipboard.fill_clipboard-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.fill_clipboard-expanded"><a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
668 <a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the clipboard</tt> </tt>
669 <a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
670 <a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_clipboard(contents)}</tt> </tt>
671 <a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
672 <a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
673 <a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
674 <a name="L614"></a><tt class="py-lineno"> 614</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.GtkClipboard.__execAsync
637675 lib.scripting.QtClipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-27', '__execAsync', 'link-23');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method lib.scripting.GtkClipboard.__fillClipboard()=lib.scripting.GtkClipboard-class.html#__fillClipboard,Method lib.scripting.QtClipboard.__fillClipboard()=lib.scripting.QtClipboard-class.html#__fillClipboard"><a title="lib.scripting.GtkClipboard.__fillClipboard
638676 lib.scripting.QtClipboard.__fillClipboard" class="py-name" href="#" onclick="return doclink('link-28', '__fillClipboard', 'link-28');">__fillClipboard</a></tt><tt class="py-op">,</tt> <tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
639 </div><a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> </tt>
640 <a name="QtClipboard.__fillClipboard"></a><div id="QtClipboard.__fillClipboard-def"><a name="L578"></a><tt class="py-lineno">578</tt> <a class="py-toggle" href="#" id="QtClipboard.__fillClipboard-toggle" onclick="return toggle('QtClipboard.__fillClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
641 </div><div id="QtClipboard.__fillClipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.__fillClipboard-expanded"><a name="L579"></a><tt class="py-lineno">579</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">Clipboard</tt><tt class="py-op">)</tt> </tt>
642 <a name="L580"></a><tt class="py-lineno">580</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>
643 </div><a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"> </tt>
644 <a name="QtClipboard.get_clipboard"></a><div id="QtClipboard.get_clipboard-def"><a name="L582"></a><tt class="py-lineno">582</tt> <a class="py-toggle" href="#" id="QtClipboard.get_clipboard-toggle" onclick="return toggle('QtClipboard.get_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
645 </div><div id="QtClipboard.get_clipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.get_clipboard-expanded"><a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
646 <a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the clipboard</tt> </tt>
647 <a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
648 <a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_clipboard()}</tt> </tt>
649 <a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
650 <a name="L588"></a><tt class="py-lineno">588</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.GtkClipboard.__execAsync
677 </div><a name="L615"></a><tt class="py-lineno"> 615</tt> <tt class="py-line"> </tt>
678 <a name="QtClipboard.__fillClipboard"></a><div id="QtClipboard.__fillClipboard-def"><a name="L616"></a><tt class="py-lineno"> 616</tt> <a class="py-toggle" href="#" id="QtClipboard.__fillClipboard-toggle" onclick="return toggle('QtClipboard.__fillClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
679 </div><div id="QtClipboard.__fillClipboard-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.__fillClipboard-expanded"><a name="L617"></a><tt class="py-lineno"> 617</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">Clipboard</tt><tt class="py-op">)</tt> </tt>
680 <a name="L618"></a><tt class="py-lineno"> 618</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>
681 </div><a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"> </tt>
682 <a name="QtClipboard.get_clipboard"></a><div id="QtClipboard.get_clipboard-def"><a name="L620"></a><tt class="py-lineno"> 620</tt> <a class="py-toggle" href="#" id="QtClipboard.get_clipboard-toggle" onclick="return toggle('QtClipboard.get_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
683 </div><div id="QtClipboard.get_clipboard-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.get_clipboard-expanded"><a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
684 <a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the clipboard</tt> </tt>
685 <a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
686 <a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_clipboard()}</tt> </tt>
687 <a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
688 <a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"><tt class="py-docstring"> @return: text contents of the clipboard</tt> </tt>
689 <a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{str}</tt> </tt>
690 <a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
691 <a name="L629"></a><tt class="py-lineno"> 629</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.GtkClipboard.__execAsync
651692 lib.scripting.QtClipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-29', '__execAsync', 'link-23');">__execAsync</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method lib.scripting.QtClipboard.__getClipboard()=lib.scripting.QtClipboard-class.html#__getClipboard"><a title="lib.scripting.QtClipboard.__getClipboard" class="py-name" href="#" onclick="return doclink('link-30', '__getClipboard', 'link-30');">__getClipboard</a></tt><tt class="py-op">)</tt> </tt>
652 <a name="L589"></a><tt class="py-lineno">589</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>
653 </div><a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> </tt>
654 <a name="QtClipboard.__getClipboard"></a><div id="QtClipboard.__getClipboard-def"><a name="L591"></a><tt class="py-lineno">591</tt> <a class="py-toggle" href="#" id="QtClipboard.__getClipboard-toggle" onclick="return toggle('QtClipboard.__getClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
655 </div><div id="QtClipboard.__getClipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.__getClipboard-expanded"><a name="L592"></a><tt class="py-lineno">592</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">Clipboard</tt><tt class="py-op">)</tt> </tt>
656 <a name="L593"></a><tt class="py-lineno">593</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>
657 </div><a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> </tt>
658 <a name="QtClipboard.__execAsync"></a><div id="QtClipboard.__execAsync-def"><a name="L595"></a><tt class="py-lineno">595</tt> <a class="py-toggle" href="#" id="QtClipboard.__execAsync-toggle" onclick="return toggle('QtClipboard.__execAsync');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
659 </div><div id="QtClipboard.__execAsync-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="QtClipboard.__execAsync-expanded"><a name="L596"></a><tt class="py-lineno">596</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>
660 <a name="L597"></a><tt class="py-lineno">597</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>
661 <a name="L598"></a><tt class="py-lineno">598</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>
662 </div></div><a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> </tt>
663 <a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> </tt>
664 <a name="GtkClipboard"></a><div id="GtkClipboard-def"><a name="L601"></a><tt class="py-lineno">601</tt> <a class="py-toggle" href="#" id="GtkClipboard-toggle" onclick="return toggle('GtkClipboard');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-class.html">GtkClipboard</a><tt class="py-op">:</tt> </tt>
665 </div><div id="GtkClipboard-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GtkClipboard-expanded"><a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
666 <a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"><tt class="py-docstring"> Read/write access to the X selection and clipboard - GTK version</tt> </tt>
667 <a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
668 <a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> </tt>
669 <a name="GtkClipboard.__init__"></a><div id="GtkClipboard.__init__-def"><a name="L606"></a><tt class="py-lineno">606</tt> <a class="py-toggle" href="#" id="GtkClipboard.__init__-toggle" onclick="return toggle('GtkClipboard.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
670 </div><div id="GtkClipboard.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.__init__-expanded"><a name="L607"></a><tt class="py-lineno">607</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 class="py-name">Clipboard</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
671 <a name="L608"></a><tt class="py-lineno">608</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 class="py-name">Clipboard</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>
672 <a name="L609"></a><tt class="py-lineno">609</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>
673 </div><a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> </tt>
674 <a name="GtkClipboard.fill_selection"></a><div id="GtkClipboard.fill_selection-def"><a name="L611"></a><tt class="py-lineno">611</tt> <a class="py-toggle" href="#" id="GtkClipboard.fill_selection-toggle" onclick="return toggle('GtkClipboard.fill_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
675 </div><div id="GtkClipboard.fill_selection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.fill_selection-expanded"><a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
676 <a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the X selection</tt> </tt>
677 <a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
678 <a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_selection(contents)}</tt> </tt>
679 <a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
680 <a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
681 <a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
682 <a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-comment">#self.__execAsync(self.__fillSelection, contents)</tt> </tt>
683 <a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="lib.scripting.GtkClipboard.__fillSelection
693 <a name="L630"></a><tt class="py-lineno"> 630</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>
694 </div><a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"> </tt>
695 <a name="QtClipboard.__getClipboard"></a><div id="QtClipboard.__getClipboard-def"><a name="L632"></a><tt class="py-lineno"> 632</tt> <a class="py-toggle" href="#" id="QtClipboard.__getClipboard-toggle" onclick="return toggle('QtClipboard.__getClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
696 </div><div id="QtClipboard.__getClipboard-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.__getClipboard-expanded"><a name="L633"></a><tt class="py-lineno"> 633</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">Clipboard</tt><tt class="py-op">)</tt> </tt>
697 <a name="L634"></a><tt class="py-lineno"> 634</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>
698 </div><a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> </tt>
699 <a name="QtClipboard.__execAsync"></a><div id="QtClipboard.__execAsync-def"><a name="L636"></a><tt class="py-lineno"> 636</tt> <a class="py-toggle" href="#" id="QtClipboard.__execAsync-toggle" onclick="return toggle('QtClipboard.__execAsync');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.QtClipboard-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>
700 </div><div id="QtClipboard.__execAsync-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="QtClipboard.__execAsync-expanded"><a name="L637"></a><tt class="py-lineno"> 637</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>
701 <a name="L638"></a><tt class="py-lineno"> 638</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>
702 <a name="L639"></a><tt class="py-lineno"> 639</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>
703 </div></div><a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"> </tt>
704 <a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"> </tt>
705 <a name="GtkClipboard"></a><div id="GtkClipboard-def"><a name="L642"></a><tt class="py-lineno"> 642</tt> <a class="py-toggle" href="#" id="GtkClipboard-toggle" onclick="return toggle('GtkClipboard');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-class.html">GtkClipboard</a><tt class="py-op">:</tt> </tt>
706 </div><div id="GtkClipboard-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="GtkClipboard-expanded"><a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
707 <a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"><tt class="py-docstring"> Read/write access to the X selection and clipboard - GTK version</tt> </tt>
708 <a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
709 <a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"> </tt>
710 <a name="GtkClipboard.__init__"></a><div id="GtkClipboard.__init__-def"><a name="L647"></a><tt class="py-lineno"> 647</tt> <a class="py-toggle" href="#" id="GtkClipboard.__init__-toggle" onclick="return toggle('GtkClipboard.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
711 </div><div id="GtkClipboard.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.__init__-expanded"><a name="L648"></a><tt class="py-lineno"> 648</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 class="py-name">Clipboard</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
712 <a name="L649"></a><tt class="py-lineno"> 649</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 class="py-name">Clipboard</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>
713 <a name="L650"></a><tt class="py-lineno"> 650</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>
714 </div><a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"> </tt>
715 <a name="GtkClipboard.fill_selection"></a><div id="GtkClipboard.fill_selection-def"><a name="L652"></a><tt class="py-lineno"> 652</tt> <a class="py-toggle" href="#" id="GtkClipboard.fill_selection-toggle" onclick="return toggle('GtkClipboard.fill_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
716 </div><div id="GtkClipboard.fill_selection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.fill_selection-expanded"><a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
717 <a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the X selection</tt> </tt>
718 <a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
719 <a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_selection(contents)}</tt> </tt>
720 <a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
721 <a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
722 <a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
723 <a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"> <tt class="py-comment">#self.__execAsync(self.__fillSelection, contents)</tt> </tt>
724 <a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="lib.scripting.GtkClipboard.__fillSelection
684725 lib.scripting.QtClipboard.__fillSelection" class="py-name" href="#" onclick="return doclink('link-31', '__fillSelection', 'link-24');">__fillSelection</a></tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
685 </div><a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> </tt>
686 <a name="GtkClipboard.__fillSelection"></a><div id="GtkClipboard.__fillSelection-def"><a name="L622"></a><tt class="py-lineno">622</tt> <a class="py-toggle" href="#" id="GtkClipboard.__fillSelection-toggle" onclick="return toggle('GtkClipboard.__fillSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
687 </div><div id="GtkClipboard.__fillSelection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.__fillSelection-expanded"><a name="L623"></a><tt class="py-lineno">623</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>
688 </div><a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-comment">#self.sem.release()</tt> </tt>
689 <a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> </tt>
690 <a name="GtkClipboard.get_selection"></a><div id="GtkClipboard.get_selection-def"><a name="L626"></a><tt class="py-lineno">626</tt> <a class="py-toggle" href="#" id="GtkClipboard.get_selection-toggle" onclick="return toggle('GtkClipboard.get_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
691 </div><div id="GtkClipboard.get_selection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.get_selection-expanded"><a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
692 <a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the X selection</tt> </tt>
693 <a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
694 <a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_selection()}</tt> </tt>
695 <a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
696 <a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="lib.scripting.GtkClipboard.__execAsync
726 </div><a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"> </tt>
727 <a name="GtkClipboard.__fillSelection"></a><div id="GtkClipboard.__fillSelection-def"><a name="L663"></a><tt class="py-lineno"> 663</tt> <a class="py-toggle" href="#" id="GtkClipboard.__fillSelection-toggle" onclick="return toggle('GtkClipboard.__fillSelection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
728 </div><div id="GtkClipboard.__fillSelection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.__fillSelection-expanded"><a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">gdk</tt><tt class="py-op">.</tt><tt class="py-name">threads_enter</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
729 <a name="L665"></a><tt class="py-lineno"> 665</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>
730 <a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">gdk</tt><tt class="py-op">.</tt><tt class="py-name">threads_leave</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
731 </div><a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"> <tt class="py-comment">#self.sem.release()</tt> </tt>
732 <a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"> </tt>
733 <a name="GtkClipboard.get_selection"></a><div id="GtkClipboard.get_selection-def"><a name="L669"></a><tt class="py-lineno"> 669</tt> <a class="py-toggle" href="#" id="GtkClipboard.get_selection-toggle" onclick="return toggle('GtkClipboard.get_selection');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
734 </div><div id="GtkClipboard.get_selection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.get_selection-expanded"><a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
735 <a name="L671"></a><tt class="py-lineno"> 671</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the X selection</tt> </tt>
736 <a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
737 <a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_selection()}</tt> </tt>
738 <a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
739 <a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"><tt class="py-docstring"> @return: text contents of the mouse selection</tt> </tt>
740 <a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{str}</tt> </tt>
741 <a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
742 <a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="lib.scripting.GtkClipboard.__execAsync
697743 lib.scripting.QtClipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-32', '__execAsync', 'link-23');">__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-33" class="py-name" targets="Method lib.scripting.GtkClipboard.__receive()=lib.scripting.GtkClipboard-class.html#__receive"><a title="lib.scripting.GtkClipboard.__receive" class="py-name" href="#" onclick="return doclink('link-33', '__receive', 'link-33');">__receive</a></tt><tt class="py-op">)</tt> </tt>
698 <a name="L633"></a><tt class="py-lineno">633</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>
699 </div><a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> </tt>
700 <a name="GtkClipboard.__receive"></a><div id="GtkClipboard.__receive-def"><a name="L635"></a><tt class="py-lineno">635</tt> <a class="py-toggle" href="#" id="GtkClipboard.__receive-toggle" onclick="return toggle('GtkClipboard.__receive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
701 </div><div id="GtkClipboard.__receive-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.__receive-expanded"><a name="L636"></a><tt class="py-lineno">636</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>
702 <a name="L637"></a><tt class="py-lineno">637</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>
703 </div><a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> </tt>
704 <a name="GtkClipboard.fill_clipboard"></a><div id="GtkClipboard.fill_clipboard-def"><a name="L639"></a><tt class="py-lineno">639</tt> <a class="py-toggle" href="#" id="GtkClipboard.fill_clipboard-toggle" onclick="return toggle('GtkClipboard.fill_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
705 </div><div id="GtkClipboard.fill_clipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.fill_clipboard-expanded"><a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
706 <a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the clipboard</tt> </tt>
707 <a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
708 <a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_clipboard(contents)}</tt> </tt>
709 <a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
710 <a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
711 <a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
712 <a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="lib.scripting.GtkClipboard.__fillClipboard
744 <a name="L679"></a><tt class="py-lineno"> 679</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>
745 </div><a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"> </tt>
746 <a name="GtkClipboard.__receive"></a><div id="GtkClipboard.__receive-def"><a name="L681"></a><tt class="py-lineno"> 681</tt> <a class="py-toggle" href="#" id="GtkClipboard.__receive-toggle" onclick="return toggle('GtkClipboard.__receive');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
747 </div><div id="GtkClipboard.__receive-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.__receive-expanded"><a name="L682"></a><tt class="py-lineno"> 682</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>
748 <a name="L683"></a><tt class="py-lineno"> 683</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>
749 </div><a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"> </tt>
750 <a name="GtkClipboard.fill_clipboard"></a><div id="GtkClipboard.fill_clipboard-def"><a name="L685"></a><tt class="py-lineno"> 685</tt> <a class="py-toggle" href="#" id="GtkClipboard.fill_clipboard-toggle" onclick="return toggle('GtkClipboard.fill_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
751 </div><div id="GtkClipboard.fill_clipboard-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.fill_clipboard-expanded"><a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
752 <a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"><tt class="py-docstring"> Copy text into the clipboard</tt> </tt>
753 <a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
754 <a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.fill_clipboard(contents)}</tt> </tt>
755 <a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
756 <a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: string to be placed in the selection</tt> </tt>
757 <a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
758 <a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="lib.scripting.GtkClipboard.__fillClipboard
713759 lib.scripting.QtClipboard.__fillClipboard" class="py-name" href="#" onclick="return doclink('link-34', '__fillClipboard', 'link-28');">__fillClipboard</a></tt><tt class="py-op">(</tt><tt class="py-name">contents</tt><tt class="py-op">)</tt> </tt>
714 </div><a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> </tt>
715 <a name="GtkClipboard.__fillClipboard"></a><div id="GtkClipboard.__fillClipboard-def"><a name="L649"></a><tt class="py-lineno">649</tt> <a class="py-toggle" href="#" id="GtkClipboard.__fillClipboard-toggle" onclick="return toggle('GtkClipboard.__fillClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
716 </div><div id="GtkClipboard.__fillClipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.__fillClipboard-expanded"><a name="L650"></a><tt class="py-lineno">650</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>
717 </div><a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-comment">#self.sem.release() </tt> </tt>
718 <a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> </tt>
719 <a name="GtkClipboard.get_clipboard"></a><div id="GtkClipboard.get_clipboard-def"><a name="L653"></a><tt class="py-lineno">653</tt> <a class="py-toggle" href="#" id="GtkClipboard.get_clipboard-toggle" onclick="return toggle('GtkClipboard.get_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
720 </div><div id="GtkClipboard.get_clipboard-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.get_clipboard-expanded"><a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
721 <a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the clipboard</tt> </tt>
722 <a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
723 <a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_clipboard()}</tt> </tt>
724 <a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
725 <a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="lib.scripting.GtkClipboard.__execAsync
760 </div><a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"> </tt>
761 <a name="GtkClipboard.__fillClipboard"></a><div id="GtkClipboard.__fillClipboard-def"><a name="L695"></a><tt class="py-lineno"> 695</tt> <a class="py-toggle" href="#" id="GtkClipboard.__fillClipboard-toggle" onclick="return toggle('GtkClipboard.__fillClipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
762 </div><div id="GtkClipboard.__fillClipboard-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.__fillClipboard-expanded"><a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">gdk</tt><tt class="py-op">.</tt><tt class="py-name">threads_enter</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
763 <a name="L697"></a><tt class="py-lineno"> 697</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>
764 <a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">gdk</tt><tt class="py-op">.</tt><tt class="py-name">threads_leave</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
765 </div><a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> <tt class="py-comment">#self.sem.release() </tt> </tt>
766 <a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"> </tt>
767 <a name="GtkClipboard.get_clipboard"></a><div id="GtkClipboard.get_clipboard-def"><a name="L701"></a><tt class="py-lineno"> 701</tt> <a class="py-toggle" href="#" id="GtkClipboard.get_clipboard-toggle" onclick="return toggle('GtkClipboard.get_clipboard');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
768 </div><div id="GtkClipboard.get_clipboard-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.get_clipboard-expanded"><a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
769 <a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"><tt class="py-docstring"> Read text from the clipboard</tt> </tt>
770 <a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
771 <a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{clipboard.get_clipboard()}</tt> </tt>
772 <a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
773 <a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"><tt class="py-docstring"> @return: text contents of the clipboard</tt> </tt>
774 <a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{str}</tt> </tt>
775 <a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
776 <a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="lib.scripting.GtkClipboard.__execAsync
726777 lib.scripting.QtClipboard.__execAsync" class="py-name" href="#" onclick="return doclink('link-35', '__execAsync', 'link-23');">__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-36" class="py-name"><a title="lib.scripting.GtkClipboard.__receive" class="py-name" href="#" onclick="return doclink('link-36', '__receive', 'link-33');">__receive</a></tt><tt class="py-op">)</tt> </tt>
727 <a name="L660"></a><tt class="py-lineno">660</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>
728 </div><a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> </tt>
729 <a name="GtkClipboard.__execAsync"></a><div id="GtkClipboard.__execAsync-def"><a name="L662"></a><tt class="py-lineno">662</tt> <a class="py-toggle" href="#" id="GtkClipboard.__execAsync-toggle" onclick="return toggle('GtkClipboard.__execAsync');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
730 </div><div id="GtkClipboard.__execAsync-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GtkClipboard.__execAsync-expanded"><a name="L663"></a><tt class="py-lineno">663</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>
731 <a name="L664"></a><tt class="py-lineno">664</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>
732 <a name="L665"></a><tt class="py-lineno">665</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>
733 </div></div><a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"> </tt>
734 <a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> </tt>
735 <a name="Window"></a><div id="Window-def"><a name="L668"></a><tt class="py-lineno">668</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>
736 </div><div id="Window-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Window-expanded"><a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
737 <a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"><tt class="py-docstring"> Basic window management using wmctrl</tt> </tt>
738 <a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
739 <a name="L672"></a><tt class="py-lineno">672</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>
740 <a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"><tt class="py-docstring"> two special values of window title are permitted:</tt> </tt>
741 <a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
742 <a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"><tt class="py-docstring"> :ACTIVE: - select the currently active window</tt> </tt>
743 <a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"><tt class="py-docstring"> :SELECT: - select the desired window by clicking on it</tt> </tt>
744 <a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
745 <a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> </tt>
746 <a name="Window.__init__"></a><div id="Window.__init__-def"><a name="L679"></a><tt class="py-lineno">679</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>
747 </div><div id="Window.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.__init__-expanded"><a name="L680"></a><tt class="py-lineno">680</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>
748 </div><a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> </tt>
749 <a name="Window.wait_for_focus"></a><div id="Window.wait_for_focus-def"><a name="L682"></a><tt class="py-lineno">682</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>
750 </div><div id="Window.wait_for_focus-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.wait_for_focus-expanded"><a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
751 <a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"><tt class="py-docstring"> Wait for window with the given title to have focus</tt> </tt>
752 <a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
753 <a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.wait_for_focus(title, timeOut=5)}</tt> </tt>
754 <a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
755 <a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"><tt class="py-docstring"> If the window becomes active, returns True. Otherwise, returns False if</tt> </tt>
756 <a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"><tt class="py-docstring"> the window has not become active by the time the timeout has elapsed.</tt> </tt>
757 <a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
758 <a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"><tt class="py-docstring"> @param title: title to match against (as a regular expression)</tt> </tt>
759 <a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"><tt class="py-docstring"> @param timeOut: period (seconds) to wait before giving up</tt> </tt>
760 <a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
761 <a name="L694"></a><tt class="py-lineno">694</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>
762 <a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
763 <a name="L696"></a><tt class="py-lineno">696</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>
764 <a name="L697"></a><tt class="py-lineno">697</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>
765 <a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
766 <a name="L699"></a><tt class="py-lineno">699</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>
767 <a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">+=</tt> <tt class="py-number">0.3</tt> </tt>
768 <a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> </tt>
769 <a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
770 </div><a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> </tt>
771 <a name="Window.wait_for_exist"></a><div id="Window.wait_for_exist-def"><a name="L704"></a><tt class="py-lineno">704</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>
772 </div><div id="Window.wait_for_exist-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.wait_for_exist-expanded"><a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
773 <a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"><tt class="py-docstring"> Wait for window with the given title to be created</tt> </tt>
774 <a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
775 <a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.wait_for_exist(title, timeOut=5)}</tt> </tt>
776 <a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
777 <a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"><tt class="py-docstring"> If the window is in existence, returns True. Otherwise, returns False if</tt> </tt>
778 <a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"><tt class="py-docstring"> the window has not been created by the time the timeout has elapsed.</tt> </tt>
779 <a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
780 <a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"><tt class="py-docstring"> @param title: title to match against (as a regular expression)</tt> </tt>
781 <a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"><tt class="py-docstring"> @param timeOut: period (seconds) to wait before giving up</tt> </tt>
782 <a name="L715"></a><tt class="py-lineno">715</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
783 <a name="L716"></a><tt class="py-lineno">716</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>
784 <a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
785 <a name="L718"></a><tt class="py-lineno">718</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>
786 <a name="L719"></a><tt class="py-lineno">719</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-37" 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-37', '__runWmctrl', 'link-37');">__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>
787 <a name="L720"></a><tt class="py-lineno">720</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>
788 <a name="L721"></a><tt class="py-lineno">721</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>
789 <a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
790 <a name="L723"></a><tt class="py-lineno">723</tt> <tt class="py-line"> </tt>
791 <a name="L724"></a><tt class="py-lineno">724</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>
792 <a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">+=</tt> <tt class="py-number">0.3</tt> </tt>
793 <a name="L726"></a><tt class="py-lineno">726</tt> <tt class="py-line"> </tt>
794 <a name="L727"></a><tt class="py-lineno">727</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
795 </div><a name="L728"></a><tt class="py-lineno">728</tt> <tt class="py-line"> </tt>
796 <a name="Window.activate"></a><div id="Window.activate-def"><a name="L729"></a><tt class="py-lineno">729</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>
797 </div><div id="Window.activate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.activate-expanded"><a name="L730"></a><tt class="py-lineno">730</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
798 <a name="L731"></a><tt class="py-lineno">731</tt> <tt class="py-line"><tt class="py-docstring"> Activate the specified window, giving it input focus</tt> </tt>
799 <a name="L732"></a><tt class="py-lineno">732</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
800 <a name="L733"></a><tt class="py-lineno">733</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.activate(title, switchDesktop=False)}</tt> </tt>
801 <a name="L734"></a><tt class="py-lineno">734</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
802 <a name="L735"></a><tt class="py-lineno">735</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>
803 <a name="L736"></a><tt class="py-lineno">736</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>
804 <a name="L737"></a><tt class="py-lineno">737</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
805 <a name="L738"></a><tt class="py-lineno">738</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
806 <a name="L739"></a><tt class="py-lineno">739</tt> <tt class="py-line"><tt class="py-docstring"> @param switchDesktop: whether or not to switch to the window's current desktop</tt> </tt>
807 <a name="L740"></a><tt class="py-lineno">740</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
808 <a name="L741"></a><tt class="py-lineno">741</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">switchDesktop</tt><tt class="py-op">:</tt> </tt>
809 <a name="L742"></a><tt class="py-lineno">742</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>
810 <a name="L743"></a><tt class="py-lineno">743</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
811 <a name="L744"></a><tt class="py-lineno">744</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>
812 <a name="L745"></a><tt class="py-lineno">745</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-38', '__runWmctrl', 'link-37');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
813 </div><a name="L746"></a><tt class="py-lineno">746</tt> <tt class="py-line"> </tt>
814 <a name="Window.close"></a><div id="Window.close-def"><a name="L747"></a><tt class="py-lineno">747</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>
815 </div><div id="Window.close-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.close-expanded"><a name="L748"></a><tt class="py-lineno">748</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
816 <a name="L749"></a><tt class="py-lineno">749</tt> <tt class="py-line"><tt class="py-docstring"> Close the specified window gracefully</tt> </tt>
817 <a name="L750"></a><tt class="py-lineno">750</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
818 <a name="L751"></a><tt class="py-lineno">751</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.close(title)}</tt> </tt>
819 <a name="L752"></a><tt class="py-lineno">752</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
820 <a name="L753"></a><tt class="py-lineno">753</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
821 <a name="L754"></a><tt class="py-lineno">754</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
822 <a name="L755"></a><tt class="py-lineno">755</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-39', '__runWmctrl', 'link-37');">__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>
823 </div><a name="L756"></a><tt class="py-lineno">756</tt> <tt class="py-line"> </tt>
824 <a name="Window.resize_move"></a><div id="Window.resize_move-def"><a name="L757"></a><tt class="py-lineno">757</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>
825 </div><div id="Window.resize_move-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.resize_move-expanded"><a name="L758"></a><tt class="py-lineno">758</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
826 <a name="L759"></a><tt class="py-lineno">759</tt> <tt class="py-line"><tt class="py-docstring"> Resize and/or move the specified window</tt> </tt>
827 <a name="L760"></a><tt class="py-lineno">760</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
828 <a name="L761"></a><tt class="py-lineno">761</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.close(title, xOrigin=-1, yOrigin=-1, width=-1, height=-1)}</tt> </tt>
829 <a name="L762"></a><tt class="py-lineno">762</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
830 <a name="L763"></a><tt class="py-lineno">763</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>
831 <a name="L764"></a><tt class="py-lineno">764</tt> <tt class="py-line"><tt class="py-docstring"> value to be left unmodified.</tt> </tt>
832 <a name="L765"></a><tt class="py-lineno">765</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
833 <a name="L766"></a><tt class="py-lineno">766</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
834 <a name="L767"></a><tt class="py-lineno">767</tt> <tt class="py-line"><tt class="py-docstring"> @param xOrigin: new x origin of the window (upper left corner)</tt> </tt>
835 <a name="L768"></a><tt class="py-lineno">768</tt> <tt class="py-line"><tt class="py-docstring"> @param yOrigin: new y origin of the window (upper left corner)</tt> </tt>
836 <a name="L769"></a><tt class="py-lineno">769</tt> <tt class="py-line"><tt class="py-docstring"> @param width: new width of the window</tt> </tt>
837 <a name="L770"></a><tt class="py-lineno">770</tt> <tt class="py-line"><tt class="py-docstring"> @param height: new height of the window</tt> </tt>
838 <a name="L771"></a><tt class="py-lineno">771</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
839 <a name="L772"></a><tt class="py-lineno">772</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>
840 <a name="L773"></a><tt class="py-lineno">773</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-40', '__runWmctrl', 'link-37');">__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>
841 </div><a name="L774"></a><tt class="py-lineno">774</tt> <tt class="py-line"> </tt>
842 <a name="L775"></a><tt class="py-lineno">775</tt> <tt class="py-line"> </tt>
843 <a name="Window.move_to_desktop"></a><div id="Window.move_to_desktop-def"><a name="L776"></a><tt class="py-lineno">776</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>
844 </div><div id="Window.move_to_desktop-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.move_to_desktop-expanded"><a name="L777"></a><tt class="py-lineno">777</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
845 <a name="L778"></a><tt class="py-lineno">778</tt> <tt class="py-line"><tt class="py-docstring"> Move the specified window to the given desktop</tt> </tt>
846 <a name="L779"></a><tt class="py-lineno">779</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
847 <a name="L780"></a><tt class="py-lineno">780</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.move_to_desktop(title, deskNum)}</tt> </tt>
848 <a name="L781"></a><tt class="py-lineno">781</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
849 <a name="L782"></a><tt class="py-lineno">782</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
850 <a name="L783"></a><tt class="py-lineno">783</tt> <tt class="py-line"><tt class="py-docstring"> @param deskNum: desktop to move the window to (note: zero based)</tt> </tt>
851 <a name="L784"></a><tt class="py-lineno">784</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
852 <a name="L785"></a><tt class="py-lineno">785</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-41', '__runWmctrl', 'link-37');">__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>
853 </div><a name="L786"></a><tt class="py-lineno">786</tt> <tt class="py-line"> </tt>
854 <a name="L787"></a><tt class="py-lineno">787</tt> <tt class="py-line"> </tt>
855 <a name="Window.switch_desktop"></a><div id="Window.switch_desktop-def"><a name="L788"></a><tt class="py-lineno">788</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>
856 </div><div id="Window.switch_desktop-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.switch_desktop-expanded"><a name="L789"></a><tt class="py-lineno">789</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
857 <a name="L790"></a><tt class="py-lineno">790</tt> <tt class="py-line"><tt class="py-docstring"> Switch to the specified desktop</tt> </tt>
858 <a name="L791"></a><tt class="py-lineno">791</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
859 <a name="L792"></a><tt class="py-lineno">792</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.switch_desktop(deskNum)}</tt> </tt>
860 <a name="L793"></a><tt class="py-lineno">793</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
861 <a name="L794"></a><tt class="py-lineno">794</tt> <tt class="py-line"><tt class="py-docstring"> @param deskNum: desktop to switch to (note: zero based)</tt> </tt>
862 <a name="L795"></a><tt class="py-lineno">795</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
863 <a name="L796"></a><tt class="py-lineno">796</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-42', '__runWmctrl', 'link-37');">__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>
864 </div><a name="L797"></a><tt class="py-lineno">797</tt> <tt class="py-line"> </tt>
865 <a name="Window.set_property"></a><div id="Window.set_property-def"><a name="L798"></a><tt class="py-lineno">798</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>
866 </div><div id="Window.set_property-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.set_property-expanded"><a name="L799"></a><tt class="py-lineno">799</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
867 <a name="L800"></a><tt class="py-lineno">800</tt> <tt class="py-line"><tt class="py-docstring"> Set a property on the given window using the specified action</tt> </tt>
868 <a name="L801"></a><tt class="py-lineno">801</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
869 <a name="L802"></a><tt class="py-lineno">802</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.set_property(title, title, action, prop)}</tt> </tt>
870 <a name="L803"></a><tt class="py-lineno">803</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
871 <a name="L804"></a><tt class="py-lineno">804</tt> <tt class="py-line"><tt class="py-docstring"> Allowable actions: C{add, remove, toggle}</tt> </tt>
872 <a name="L805"></a><tt class="py-lineno">805</tt> <tt class="py-line"><tt class="py-docstring"> Allowable properties: C{modal, sticky, maximized_vert, maximized_horz, shaded, skip_taskbar,</tt> </tt>
873 <a name="L806"></a><tt class="py-lineno">806</tt> <tt class="py-line"><tt class="py-docstring"> skip_pager, hidden, fullscreen, above}</tt> </tt>
874 <a name="L807"></a><tt class="py-lineno">807</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
875 <a name="L808"></a><tt class="py-lineno">808</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
876 <a name="L809"></a><tt class="py-lineno">809</tt> <tt class="py-line"><tt class="py-docstring"> @param action: one of the actions listed above</tt> </tt>
877 <a name="L810"></a><tt class="py-lineno">810</tt> <tt class="py-line"><tt class="py-docstring"> @param prop: one of the properties listed above</tt> </tt>
878 <a name="L811"></a><tt class="py-lineno">811</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
879 <a name="L812"></a><tt class="py-lineno">812</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-43', '__runWmctrl', 'link-37');">__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>
880 </div><a name="L813"></a><tt class="py-lineno">813</tt> <tt class="py-line"> </tt>
881 <a name="Window.get_active_geometry"></a><div id="Window.get_active_geometry-def"><a name="L814"></a><tt class="py-lineno">814</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>
882 </div><div id="Window.get_active_geometry-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.get_active_geometry-expanded"><a name="L815"></a><tt class="py-lineno">815</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
883 <a name="L816"></a><tt class="py-lineno">816</tt> <tt class="py-line"><tt class="py-docstring"> Get the geometry of the currently active window</tt> </tt>
884 <a name="L817"></a><tt class="py-lineno">817</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
885 <a name="L818"></a><tt class="py-lineno">818</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.get_active_geometry()}</tt> </tt>
886 <a name="L819"></a><tt class="py-lineno">819</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
887 <a name="L820"></a><tt class="py-lineno">820</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>
888 <a name="L821"></a><tt class="py-lineno">821</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
889 <a name="L822"></a><tt class="py-lineno">822</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>
890 <a name="L823"></a><tt class="py-lineno">823</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-44" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-44', '__runWmctrl', 'link-37');">__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>
891 <a name="L824"></a><tt class="py-lineno">824</tt> <tt class="py-line"> <tt class="py-name">matchingLine</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
892 <a name="L825"></a><tt class="py-lineno">825</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>
893 <a name="L826"></a><tt class="py-lineno">826</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>
894 <a name="L827"></a><tt class="py-lineno">827</tt> <tt class="py-line"> <tt class="py-name">matchingLine</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt> </tt>
895 <a name="L828"></a><tt class="py-lineno">828</tt> <tt class="py-line"> </tt>
896 <a name="L829"></a><tt class="py-lineno">829</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>
897 <a name="L830"></a><tt class="py-lineno">830</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>
898 <a name="L831"></a><tt class="py-lineno">831</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>
899 <a name="L832"></a><tt class="py-lineno">832</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
900 <a name="L833"></a><tt class="py-lineno">833</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
901 </div><a name="L834"></a><tt class="py-lineno">834</tt> <tt class="py-line"> </tt>
902 <a name="Window.__runWmctrl"></a><div id="Window.__runWmctrl-def"><a name="L835"></a><tt class="py-lineno">835</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>
903 </div><div id="Window.__runWmctrl-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Window.__runWmctrl-expanded"><a name="L836"></a><tt class="py-lineno">836</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>
904 <a name="L837"></a><tt class="py-lineno">837</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>
905 <a name="L838"></a><tt class="py-lineno">838</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>
906 <a name="L839"></a><tt class="py-lineno">839</tt> <tt class="py-line"> </tt>
907 <a name="L840"></a><tt class="py-lineno">840</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>
908 </div></div><a name="L841"></a><tt class="py-lineno">841</tt> <tt class="py-line"> </tt>
909 <a name="L842"></a><tt class="py-lineno">842</tt> <tt class="py-line"> </tt>
910 <a name="Engine"></a><div id="Engine-def"><a name="L843"></a><tt class="py-lineno">843</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>
911 </div><div id="Engine-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Engine-expanded"><a name="L844"></a><tt class="py-lineno">844</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
912 <a name="L845"></a><tt class="py-lineno">845</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to the internals of AutoKey.</tt> </tt>
913 <a name="L846"></a><tt class="py-lineno">846</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
914 <a name="L847"></a><tt class="py-lineno">847</tt> <tt class="py-line"><tt class="py-docstring"> Note that any configuration changes made using this API while the configuration window</tt> </tt>
915 <a name="L848"></a><tt class="py-lineno">848</tt> <tt class="py-line"><tt class="py-docstring"> is open will not appear until it is closed and re-opened.</tt> </tt>
916 <a name="L849"></a><tt class="py-lineno">849</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
917 <a name="L850"></a><tt class="py-lineno">850</tt> <tt class="py-line"> </tt>
918 <a name="Engine.__init__"></a><div id="Engine.__init__-def"><a name="L851"></a><tt class="py-lineno">851</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>
919 </div><div id="Engine.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.__init__-expanded"><a name="L852"></a><tt class="py-lineno">852</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>
920 <a name="L853"></a><tt class="py-lineno">853</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>
921 </div><a name="L854"></a><tt class="py-lineno">854</tt> <tt class="py-line"> </tt>
922 <a name="Engine.get_folder"></a><div id="Engine.get_folder-def"><a name="L855"></a><tt class="py-lineno">855</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>
923 </div><div id="Engine.get_folder-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.get_folder-expanded"><a name="L856"></a><tt class="py-lineno">856</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
924 <a name="L857"></a><tt class="py-lineno">857</tt> <tt class="py-line"><tt class="py-docstring"> Retrieve a folder by its title</tt> </tt>
925 <a name="L858"></a><tt class="py-lineno">858</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
926 <a name="L859"></a><tt class="py-lineno">859</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.get_folder(title)}</tt> </tt>
927 <a name="L860"></a><tt class="py-lineno">860</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
928 <a name="L861"></a><tt class="py-lineno">861</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>
929 <a name="L862"></a><tt class="py-lineno">862</tt> <tt class="py-line"><tt class="py-docstring"> returned.</tt> </tt>
930 <a name="L863"></a><tt class="py-lineno">863</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
931 <a name="L864"></a><tt class="py-lineno">864</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>
932 <a name="L865"></a><tt class="py-lineno">865</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>
933 <a name="L866"></a><tt class="py-lineno">866</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">folder</tt> </tt>
934 <a name="L867"></a><tt class="py-lineno">867</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
935 </div><a name="L868"></a><tt class="py-lineno">868</tt> <tt class="py-line"> </tt>
936 <a name="Engine.create_phrase"></a><div id="Engine.create_phrase-def"><a name="L869"></a><tt class="py-lineno">869</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>
937 </div><div id="Engine.create_phrase-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.create_phrase-expanded"><a name="L870"></a><tt class="py-lineno">870</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
938 <a name="L871"></a><tt class="py-lineno">871</tt> <tt class="py-line"><tt class="py-docstring"> Create a text phrase</tt> </tt>
939 <a name="L872"></a><tt class="py-lineno">872</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
940 <a name="L873"></a><tt class="py-lineno">873</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_phrase(folder, description, contents)}</tt> </tt>
941 <a name="L874"></a><tt class="py-lineno">874</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
942 <a name="L875"></a><tt class="py-lineno">875</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>
943 <a name="L876"></a><tt class="py-lineno">876</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
944 <a name="L877"></a><tt class="py-lineno">877</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>
945 <a name="L878"></a><tt class="py-lineno">878</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
946 <a name="L879"></a><tt class="py-lineno">879</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
947 <a name="L880"></a><tt class="py-lineno">880</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
948 <a name="L881"></a><tt class="py-lineno">881</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>
949 <a name="L882"></a><tt class="py-lineno">882</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>
950 <a name="L883"></a><tt class="py-lineno">883</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>
951 </div><a name="L884"></a><tt class="py-lineno">884</tt> <tt class="py-line"> </tt>
952 <a name="Engine.create_abbreviation"></a><div id="Engine.create_abbreviation-def"><a name="L885"></a><tt class="py-lineno">885</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>
953 </div><div id="Engine.create_abbreviation-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.create_abbreviation-expanded"><a name="L886"></a><tt class="py-lineno">886</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
954 <a name="L887"></a><tt class="py-lineno">887</tt> <tt class="py-line"><tt class="py-docstring"> Create a text abbreviation</tt> </tt>
955 <a name="L888"></a><tt class="py-lineno">888</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
956 <a name="L889"></a><tt class="py-lineno">889</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_abbreviation(folder, description, abbr, contents)}</tt> </tt>
957 <a name="L890"></a><tt class="py-lineno">890</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
958 <a name="L891"></a><tt class="py-lineno">891</tt> <tt class="py-line"><tt class="py-docstring"> When the given abbreviation is typed, it will be replaced with the given</tt> </tt>
959 <a name="L892"></a><tt class="py-lineno">892</tt> <tt class="py-line"><tt class="py-docstring"> text.</tt> </tt>
960 <a name="L893"></a><tt class="py-lineno">893</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
961 <a name="L894"></a><tt class="py-lineno">894</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>
962 <a name="L895"></a><tt class="py-lineno">895</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
963 <a name="L896"></a><tt class="py-lineno">896</tt> <tt class="py-line"><tt class="py-docstring"> @param abbr: the abbreviation that will trigger the expansion</tt> </tt>
964 <a name="L897"></a><tt class="py-lineno">897</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
965 <a name="L898"></a><tt class="py-lineno">898</tt> <tt class="py-line"><tt class="py-docstring"> @raises Exception: if the specified abbreviation is not unique</tt> </tt>
966 <a name="L899"></a><tt class="py-lineno">899</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
967 <a name="L900"></a><tt class="py-lineno">900</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>
968 <a name="L901"></a><tt class="py-lineno">901</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>
969 <a name="L902"></a><tt class="py-lineno">902</tt> <tt class="py-line"> </tt>
970 <a name="L903"></a><tt class="py-lineno">903</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>
971 <a name="L904"></a><tt class="py-lineno">904</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>
972 <a name="L905"></a><tt class="py-lineno">905</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>
973 <a name="L906"></a><tt class="py-lineno">906</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>
974 <a name="L907"></a><tt class="py-lineno">907</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>
975 </div><a name="L908"></a><tt class="py-lineno">908</tt> <tt class="py-line"> </tt>
976 <a name="Engine.create_hotkey"></a><div id="Engine.create_hotkey-def"><a name="L909"></a><tt class="py-lineno">909</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>
977 </div><div id="Engine.create_hotkey-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.create_hotkey-expanded"><a name="L910"></a><tt class="py-lineno">910</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
978 <a name="L911"></a><tt class="py-lineno">911</tt> <tt class="py-line"><tt class="py-docstring"> Create a text hotkey.</tt> </tt>
979 <a name="L912"></a><tt class="py-lineno">912</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
980 <a name="L913"></a><tt class="py-lineno">913</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_hotkey(folder, description, modifiers, key, contents)}</tt> </tt>
981 <a name="L914"></a><tt class="py-lineno">914</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
982 <a name="L915"></a><tt class="py-lineno">915</tt> <tt class="py-line"><tt class="py-docstring"> When the given hotkey is pressed, it will be replaced with the given</tt> </tt>
983 <a name="L916"></a><tt class="py-lineno">916</tt> <tt class="py-line"><tt class="py-docstring"> text. Modifiers must be given as a list of strings, with the following</tt> </tt>
984 <a name="L917"></a><tt class="py-lineno">917</tt> <tt class="py-line"><tt class="py-docstring"> values permitted:</tt> </tt>
985 <a name="L918"></a><tt class="py-lineno">918</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
986 <a name="L919"></a><tt class="py-lineno">919</tt> <tt class="py-line"><tt class="py-docstring"> &lt;control&gt;</tt> </tt>
987 <a name="L920"></a><tt class="py-lineno">920</tt> <tt class="py-line"><tt class="py-docstring"> &lt;alt&gt;</tt> </tt>
988 <a name="L921"></a><tt class="py-lineno">921</tt> <tt class="py-line"><tt class="py-docstring"> &lt;super&gt;</tt> </tt>
989 <a name="L922"></a><tt class="py-lineno">922</tt> <tt class="py-line"><tt class="py-docstring"> &lt;shift&gt;</tt> </tt>
990 <a name="L923"></a><tt class="py-lineno">923</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
991 <a name="L924"></a><tt class="py-lineno">924</tt> <tt class="py-line"><tt class="py-docstring"> The key must be an unshifted character (i.e. lowercase)</tt> </tt>
992 <a name="L925"></a><tt class="py-lineno">925</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
993 <a name="L926"></a><tt class="py-lineno">926</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>
994 <a name="L927"></a><tt class="py-lineno">927</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
995 <a name="L928"></a><tt class="py-lineno">928</tt> <tt class="py-line"><tt class="py-docstring"> @param modifiers: modifiers to use with the hotkey (as a list)</tt> </tt>
996 <a name="L929"></a><tt class="py-lineno">929</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the hotkey</tt> </tt>
997 <a name="L930"></a><tt class="py-lineno">930</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
998 <a name="L931"></a><tt class="py-lineno">931</tt> <tt class="py-line"><tt class="py-docstring"> @raises Exception: if the specified hotkey is not unique</tt> </tt>
999 <a name="L932"></a><tt class="py-lineno">932</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
1000 <a name="L933"></a><tt class="py-lineno">933</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>
1001 <a name="L934"></a><tt class="py-lineno">934</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>
1002 <a name="L935"></a><tt class="py-lineno">935</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>
1003 <a name="L936"></a><tt class="py-lineno">936</tt> <tt class="py-line"> </tt>
1004 <a name="L937"></a><tt class="py-lineno">937</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>
1005 <a name="L938"></a><tt class="py-lineno">938</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>
1006 <a name="L939"></a><tt class="py-lineno">939</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>
1007 <a name="L940"></a><tt class="py-lineno">940</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>
1008 <a name="L941"></a><tt class="py-lineno">941</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>
1009 </div><a name="L942"></a><tt class="py-lineno">942</tt> <tt class="py-line"> </tt>
1010 <a name="Engine.run_script"></a><div id="Engine.run_script-def"><a name="L943"></a><tt class="py-lineno">943</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>
1011 </div><div id="Engine.run_script-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Engine.run_script-expanded"><a name="L944"></a><tt class="py-lineno">944</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
1012 <a name="L945"></a><tt class="py-lineno">945</tt> <tt class="py-line"><tt class="py-docstring"> Run an existing script using its description to look it up</tt> </tt>
1013 <a name="L946"></a><tt class="py-lineno">946</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1014 <a name="L947"></a><tt class="py-lineno">947</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.run_script(description)}</tt> </tt>
1015 <a name="L948"></a><tt class="py-lineno">948</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1016 <a name="L949"></a><tt class="py-lineno">949</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description of the script to run</tt> </tt>
1017 <a name="L950"></a><tt class="py-lineno">950</tt> <tt class="py-line"><tt class="py-docstring"> @raises Exception: if the specified script does not exist</tt> </tt>
1018 <a name="L951"></a><tt class="py-lineno">951</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
1019 <a name="L952"></a><tt class="py-lineno">952</tt> <tt class="py-line"> <tt class="py-name">targetScript</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
1020 <a name="L953"></a><tt class="py-lineno">953</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>
1021 <a name="L954"></a><tt class="py-lineno">954</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>
1022 <a name="L955"></a><tt class="py-lineno">955</tt> <tt class="py-line"> <tt class="py-name">targetScript</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt> </tt>
1023 <a name="L956"></a><tt class="py-lineno">956</tt> <tt class="py-line"> </tt>
1024 <a name="L957"></a><tt class="py-lineno">957</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>
1025 <a name="L958"></a><tt class="py-lineno">958</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>
1026 <a name="L959"></a><tt class="py-lineno">959</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
1027 <a name="L960"></a><tt class="py-lineno">960</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>
1028 </div></div><a name="L961"></a><tt class="py-lineno">961</tt> <tt class="py-line"> </tt><script type="text/javascript">
778 <a name="L711"></a><tt class="py-lineno"> 711</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>
779 </div><a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"> </tt>
780 <a name="GtkClipboard.__execAsync"></a><div id="GtkClipboard.__execAsync-def"><a name="L713"></a><tt class="py-lineno"> 713</tt> <a class="py-toggle" href="#" id="GtkClipboard.__execAsync-toggle" onclick="return toggle('GtkClipboard.__execAsync');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lib.scripting.GtkClipboard-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>
781 </div><div id="GtkClipboard.__execAsync-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GtkClipboard.__execAsync-expanded"><a name="L714"></a><tt class="py-lineno"> 714</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>
782 <a name="L715"></a><tt class="py-lineno"> 715</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>
783 <a name="L716"></a><tt class="py-lineno"> 716</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>
784 </div></div><a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"> </tt>
785 <a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"> </tt>
786 <a name="Window"></a><div id="Window-def"><a name="L719"></a><tt class="py-lineno"> 719</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>
787 </div><div id="Window-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Window-expanded"><a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
788 <a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"><tt class="py-docstring"> Basic window management using wmctrl</tt> </tt>
789 <a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
790 <a name="L723"></a><tt class="py-lineno"> 723</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>
791 <a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"><tt class="py-docstring"> two special values of window title are permitted:</tt> </tt>
792 <a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
793 <a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"><tt class="py-docstring"> :ACTIVE: - select the currently active window</tt> </tt>
794 <a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"><tt class="py-docstring"> :SELECT: - select the desired window by clicking on it</tt> </tt>
795 <a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
796 <a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"> </tt>
797 <a name="Window.__init__"></a><div id="Window.__init__-def"><a name="L730"></a><tt class="py-lineno"> 730</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>
798 </div><div id="Window.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.__init__-expanded"><a name="L731"></a><tt class="py-lineno"> 731</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>
799 </div><a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> </tt>
800 <a name="Window.wait_for_focus"></a><div id="Window.wait_for_focus-def"><a name="L733"></a><tt class="py-lineno"> 733</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>
801 </div><div id="Window.wait_for_focus-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.wait_for_focus-expanded"><a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
802 <a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"><tt class="py-docstring"> Wait for window with the given title to have focus</tt> </tt>
803 <a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
804 <a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.wait_for_focus(title, timeOut=5)}</tt> </tt>
805 <a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
806 <a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"><tt class="py-docstring"> If the window becomes active, returns True. Otherwise, returns False if</tt> </tt>
807 <a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"><tt class="py-docstring"> the window has not become active by the time the timeout has elapsed.</tt> </tt>
808 <a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
809 <a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"><tt class="py-docstring"> @param title: title to match against (as a regular expression)</tt> </tt>
810 <a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"><tt class="py-docstring"> @param timeOut: period (seconds) to wait before giving up</tt> </tt>
811 <a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: boolean</tt> </tt>
812 <a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
813 <a name="L746"></a><tt class="py-lineno"> 746</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>
814 <a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
815 <a name="L748"></a><tt class="py-lineno"> 748</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>
816 <a name="L749"></a><tt class="py-lineno"> 749</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>
817 <a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
818 <a name="L751"></a><tt class="py-lineno"> 751</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>
819 <a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">+=</tt> <tt class="py-number">0.3</tt> </tt>
820 <a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"> </tt>
821 <a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
822 </div><a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"> </tt>
823 <a name="Window.wait_for_exist"></a><div id="Window.wait_for_exist-def"><a name="L756"></a><tt class="py-lineno"> 756</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>
824 </div><div id="Window.wait_for_exist-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.wait_for_exist-expanded"><a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
825 <a name="L758"></a><tt class="py-lineno"> 758</tt> <tt class="py-line"><tt class="py-docstring"> Wait for window with the given title to be created</tt> </tt>
826 <a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
827 <a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.wait_for_exist(title, timeOut=5)}</tt> </tt>
828 <a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
829 <a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"><tt class="py-docstring"> If the window is in existence, returns True. Otherwise, returns False if</tt> </tt>
830 <a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"><tt class="py-docstring"> the window has not been created by the time the timeout has elapsed.</tt> </tt>
831 <a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
832 <a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"><tt class="py-docstring"> @param title: title to match against (as a regular expression)</tt> </tt>
833 <a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"><tt class="py-docstring"> @param timeOut: period (seconds) to wait before giving up</tt> </tt>
834 <a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: boolean</tt> </tt>
835 <a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
836 <a name="L769"></a><tt class="py-lineno"> 769</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>
837 <a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
838 <a name="L771"></a><tt class="py-lineno"> 771</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>
839 <a name="L772"></a><tt class="py-lineno"> 772</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-37" 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-37', '__runWmctrl', 'link-37');">__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>
840 <a name="L773"></a><tt class="py-lineno"> 773</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>
841 <a name="L774"></a><tt class="py-lineno"> 774</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>
842 <a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
843 <a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"> </tt>
844 <a name="L777"></a><tt class="py-lineno"> 777</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>
845 <a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"> <tt class="py-name">waited</tt> <tt class="py-op">+=</tt> <tt class="py-number">0.3</tt> </tt>
846 <a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"> </tt>
847 <a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
848 </div><a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"> </tt>
849 <a name="Window.activate"></a><div id="Window.activate-def"><a name="L782"></a><tt class="py-lineno"> 782</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>
850 </div><div id="Window.activate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.activate-expanded"><a name="L783"></a><tt class="py-lineno"> 783</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
851 <a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"><tt class="py-docstring"> Activate the specified window, giving it input focus</tt> </tt>
852 <a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
853 <a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.activate(title, switchDesktop=False)}</tt> </tt>
854 <a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
855 <a name="L788"></a><tt class="py-lineno"> 788</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>
856 <a name="L789"></a><tt class="py-lineno"> 789</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>
857 <a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
858 <a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
859 <a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"><tt class="py-docstring"> @param switchDesktop: whether or not to switch to the window's current desktop</tt> </tt>
860 <a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
861 <a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">switchDesktop</tt><tt class="py-op">:</tt> </tt>
862 <a name="L795"></a><tt class="py-lineno"> 795</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>
863 <a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
864 <a name="L797"></a><tt class="py-lineno"> 797</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>
865 <a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-38', '__runWmctrl', 'link-37');">__runWmctrl</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
866 </div><a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"> </tt>
867 <a name="Window.close"></a><div id="Window.close-def"><a name="L800"></a><tt class="py-lineno"> 800</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>
868 </div><div id="Window.close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.close-expanded"><a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
869 <a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"><tt class="py-docstring"> Close the specified window gracefully</tt> </tt>
870 <a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
871 <a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.close(title)}</tt> </tt>
872 <a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
873 <a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
874 <a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
875 <a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-39', '__runWmctrl', 'link-37');">__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>
876 </div><a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"> </tt>
877 <a name="Window.resize_move"></a><div id="Window.resize_move-def"><a name="L810"></a><tt class="py-lineno"> 810</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>
878 </div><div id="Window.resize_move-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.resize_move-expanded"><a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
879 <a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"><tt class="py-docstring"> Resize and/or move the specified window</tt> </tt>
880 <a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
881 <a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.close(title, xOrigin=-1, yOrigin=-1, width=-1, height=-1)}</tt> </tt>
882 <a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
883 <a name="L816"></a><tt class="py-lineno"> 816</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>
884 <a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"><tt class="py-docstring"> value to be left unmodified.</tt> </tt>
885 <a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
886 <a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
887 <a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"><tt class="py-docstring"> @param xOrigin: new x origin of the window (upper left corner)</tt> </tt>
888 <a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"><tt class="py-docstring"> @param yOrigin: new y origin of the window (upper left corner)</tt> </tt>
889 <a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"><tt class="py-docstring"> @param width: new width of the window</tt> </tt>
890 <a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"><tt class="py-docstring"> @param height: new height of the window</tt> </tt>
891 <a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
892 <a name="L825"></a><tt class="py-lineno"> 825</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>
893 <a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-40', '__runWmctrl', 'link-37');">__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>
894 </div><a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"> </tt>
895 <a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"> </tt>
896 <a name="Window.move_to_desktop"></a><div id="Window.move_to_desktop-def"><a name="L829"></a><tt class="py-lineno"> 829</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>
897 </div><div id="Window.move_to_desktop-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.move_to_desktop-expanded"><a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
898 <a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"><tt class="py-docstring"> Move the specified window to the given desktop</tt> </tt>
899 <a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
900 <a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.move_to_desktop(title, deskNum)}</tt> </tt>
901 <a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
902 <a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
903 <a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"><tt class="py-docstring"> @param deskNum: desktop to move the window to (note: zero based)</tt> </tt>
904 <a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
905 <a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-41', '__runWmctrl', 'link-37');">__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>
906 </div><a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"> </tt>
907 <a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> </tt>
908 <a name="Window.switch_desktop"></a><div id="Window.switch_desktop-def"><a name="L841"></a><tt class="py-lineno"> 841</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>
909 </div><div id="Window.switch_desktop-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.switch_desktop-expanded"><a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
910 <a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"><tt class="py-docstring"> Switch to the specified desktop</tt> </tt>
911 <a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
912 <a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.switch_desktop(deskNum)}</tt> </tt>
913 <a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
914 <a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"><tt class="py-docstring"> @param deskNum: desktop to switch to (note: zero based)</tt> </tt>
915 <a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
916 <a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-42', '__runWmctrl', 'link-37');">__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>
917 </div><a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> </tt>
918 <a name="Window.set_property"></a><div id="Window.set_property-def"><a name="L851"></a><tt class="py-lineno"> 851</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>
919 </div><div id="Window.set_property-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.set_property-expanded"><a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
920 <a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"><tt class="py-docstring"> Set a property on the given window using the specified action</tt> </tt>
921 <a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
922 <a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.set_property(title, title, action, prop)}</tt> </tt>
923 <a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
924 <a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"><tt class="py-docstring"> Allowable actions: C{add, remove, toggle}</tt> </tt>
925 <a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"><tt class="py-docstring"> Allowable properties: C{modal, sticky, maximized_vert, maximized_horz, shaded, skip_taskbar,</tt> </tt>
926 <a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"><tt class="py-docstring"> skip_pager, hidden, fullscreen, above}</tt> </tt>
927 <a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
928 <a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"><tt class="py-docstring"> @param title: window title to match against (as case-insensitive substring match)</tt> </tt>
929 <a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"><tt class="py-docstring"> @param action: one of the actions listed above</tt> </tt>
930 <a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"><tt class="py-docstring"> @param prop: one of the properties listed above</tt> </tt>
931 <a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
932 <a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-43', '__runWmctrl', 'link-37');">__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>
933 </div><a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"> </tt>
934 <a name="Window.get_active_geometry"></a><div id="Window.get_active_geometry-def"><a name="L867"></a><tt class="py-lineno"> 867</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>
935 </div><div id="Window.get_active_geometry-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.get_active_geometry-expanded"><a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
936 <a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"><tt class="py-docstring"> Get the geometry of the currently active window</tt> </tt>
937 <a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
938 <a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{window.get_active_geometry()}</tt> </tt>
939 <a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
940 <a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"><tt class="py-docstring"> @return: a 4-tuple containing the x-origin, y-origin, width and height of the window (in pixels)</tt> </tt>
941 <a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: C{tuple(int, int, int, int)}</tt> </tt>
942 <a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
943 <a name="L876"></a><tt class="py-lineno"> 876</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>
944 <a name="L877"></a><tt class="py-lineno"> 877</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-44" class="py-name"><a title="lib.scripting.Window.__runWmctrl" class="py-name" href="#" onclick="return doclink('link-44', '__runWmctrl', 'link-37');">__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>
945 <a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"> <tt class="py-name">matchingLine</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
946 <a name="L879"></a><tt class="py-lineno"> 879</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>
947 <a name="L880"></a><tt class="py-lineno"> 880</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>
948 <a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"> <tt class="py-name">matchingLine</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt> </tt>
949 <a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"> </tt>
950 <a name="L883"></a><tt class="py-lineno"> 883</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>
951 <a name="L884"></a><tt class="py-lineno"> 884</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>
952 <a name="L885"></a><tt class="py-lineno"> 885</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>
953 <a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
954 <a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
955 </div><a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"> </tt>
956 <a name="Window.__runWmctrl"></a><div id="Window.__runWmctrl-def"><a name="L889"></a><tt class="py-lineno"> 889</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>
957 </div><div id="Window.__runWmctrl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Window.__runWmctrl-expanded"><a name="L890"></a><tt class="py-lineno"> 890</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>
958 <a name="L891"></a><tt class="py-lineno"> 891</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>
959 <a name="L892"></a><tt class="py-lineno"> 892</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>
960 <a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"> </tt>
961 <a name="L894"></a><tt class="py-lineno"> 894</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>
962 </div></div><a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"> </tt>
963 <a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"> </tt>
964 <a name="Engine"></a><div id="Engine-def"><a name="L897"></a><tt class="py-lineno"> 897</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>
965 </div><div id="Engine-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Engine-expanded"><a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
966 <a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"><tt class="py-docstring"> Provides access to the internals of AutoKey.</tt> </tt>
967 <a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
968 <a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"><tt class="py-docstring"> Note that any configuration changes made using this API while the configuration window</tt> </tt>
969 <a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"><tt class="py-docstring"> is open will not appear until it is closed and re-opened.</tt> </tt>
970 <a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
971 <a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"> </tt>
972 <a name="Engine.__init__"></a><div id="Engine.__init__-def"><a name="L905"></a><tt class="py-lineno"> 905</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>
973 </div><div id="Engine.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Engine.__init__-expanded"><a name="L906"></a><tt class="py-lineno"> 906</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>
974 <a name="L907"></a><tt class="py-lineno"> 907</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>
975 </div><a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> </tt>
976 <a name="Engine.get_folder"></a><div id="Engine.get_folder-def"><a name="L909"></a><tt class="py-lineno"> 909</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>
977 </div><div id="Engine.get_folder-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Engine.get_folder-expanded"><a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
978 <a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"><tt class="py-docstring"> Retrieve a folder by its title</tt> </tt>
979 <a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
980 <a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.get_folder(title)}</tt> </tt>
981 <a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
982 <a name="L915"></a><tt class="py-lineno"> 915</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>
983 <a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"><tt class="py-docstring"> returned.</tt> </tt>
984 <a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
985 <a name="L918"></a><tt class="py-lineno"> 918</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>
986 <a name="L919"></a><tt class="py-lineno"> 919</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>
987 <a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">folder</tt> </tt>
988 <a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
989 </div><a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"> </tt>
990 <a name="Engine.create_phrase"></a><div id="Engine.create_phrase-def"><a name="L923"></a><tt class="py-lineno"> 923</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>
991 </div><div id="Engine.create_phrase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Engine.create_phrase-expanded"><a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
992 <a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"><tt class="py-docstring"> Create a text phrase</tt> </tt>
993 <a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
994 <a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_phrase(folder, description, contents)}</tt> </tt>
995 <a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
996 <a name="L929"></a><tt class="py-lineno"> 929</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>
997 <a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
998 <a name="L931"></a><tt class="py-lineno"> 931</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>
999 <a name="L932"></a><tt class="py-lineno"> 932</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
1000 <a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
1001 <a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
1002 <a name="L935"></a><tt class="py-lineno"> 935</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>
1003 <a name="L936"></a><tt class="py-lineno"> 936</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>
1004 <a name="L937"></a><tt class="py-lineno"> 937</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>
1005 </div><a name="L938"></a><tt class="py-lineno"> 938</tt> <tt class="py-line"> </tt>
1006 <a name="Engine.create_abbreviation"></a><div id="Engine.create_abbreviation-def"><a name="L939"></a><tt class="py-lineno"> 939</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>
1007 </div><div id="Engine.create_abbreviation-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Engine.create_abbreviation-expanded"><a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
1008 <a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"><tt class="py-docstring"> Create a text abbreviation</tt> </tt>
1009 <a name="L942"></a><tt class="py-lineno"> 942</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1010 <a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_abbreviation(folder, description, abbr, contents)}</tt> </tt>
1011 <a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1012 <a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"><tt class="py-docstring"> When the given abbreviation is typed, it will be replaced with the given</tt> </tt>
1013 <a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"><tt class="py-docstring"> text.</tt> </tt>
1014 <a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1015 <a name="L948"></a><tt class="py-lineno"> 948</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>
1016 <a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
1017 <a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"><tt class="py-docstring"> @param abbr: the abbreviation that will trigger the expansion</tt> </tt>
1018 <a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
1019 <a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"><tt class="py-docstring"> @raise Exception: if the specified abbreviation is not unique</tt> </tt>
1020 <a name="L953"></a><tt class="py-lineno"> 953</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
1021 <a name="L954"></a><tt class="py-lineno"> 954</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>
1022 <a name="L955"></a><tt class="py-lineno"> 955</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>
1023 <a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"> </tt>
1024 <a name="L957"></a><tt class="py-lineno"> 957</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>
1025 <a name="L958"></a><tt class="py-lineno"> 958</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>
1026 <a name="L959"></a><tt class="py-lineno"> 959</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>
1027 <a name="L960"></a><tt class="py-lineno"> 960</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>
1028 <a name="L961"></a><tt class="py-lineno"> 961</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>
1029 </div><a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"> </tt>
1030 <a name="Engine.create_hotkey"></a><div id="Engine.create_hotkey-def"><a name="L963"></a><tt class="py-lineno"> 963</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>
1031 </div><div id="Engine.create_hotkey-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Engine.create_hotkey-expanded"><a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
1032 <a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"><tt class="py-docstring"> Create a text hotkey.</tt> </tt>
1033 <a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1034 <a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.create_hotkey(folder, description, modifiers, key, contents)}</tt> </tt>
1035 <a name="L968"></a><tt class="py-lineno"> 968</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1036 <a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"><tt class="py-docstring"> When the given hotkey is pressed, it will be replaced with the given</tt> </tt>
1037 <a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"><tt class="py-docstring"> text. Modifiers must be given as a list of strings, with the following</tt> </tt>
1038 <a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"><tt class="py-docstring"> values permitted:</tt> </tt>
1039 <a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1040 <a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"><tt class="py-docstring"> &lt;ctrl&gt;</tt> </tt>
1041 <a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"><tt class="py-docstring"> &lt;alt&gt;</tt> </tt>
1042 <a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"><tt class="py-docstring"> &lt;super&gt;</tt> </tt>
1043 <a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"><tt class="py-docstring"> &lt;shift&gt;</tt> </tt>
1044 <a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1045 <a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"><tt class="py-docstring"> The key must be an unshifted character (i.e. lowercase)</tt> </tt>
1046 <a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1047 <a name="L980"></a><tt class="py-lineno"> 980</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>
1048 <a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description for the phrase</tt> </tt>
1049 <a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"><tt class="py-docstring"> @param modifiers: modifiers to use with the hotkey (as a list)</tt> </tt>
1050 <a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"><tt class="py-docstring"> @param key: the hotkey</tt> </tt>
1051 <a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"><tt class="py-docstring"> @param contents: the expansion text</tt> </tt>
1052 <a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"><tt class="py-docstring"> @raise Exception: if the specified hotkey is not unique</tt> </tt>
1053 <a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
1054 <a name="L987"></a><tt class="py-lineno"> 987</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>
1055 <a name="L988"></a><tt class="py-lineno"> 988</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>
1056 <a name="L989"></a><tt class="py-lineno"> 989</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>
1057 <a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> </tt>
1058 <a name="L991"></a><tt class="py-lineno"> 991</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>
1059 <a name="L992"></a><tt class="py-lineno"> 992</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>
1060 <a name="L993"></a><tt class="py-lineno"> 993</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>
1061 <a name="L994"></a><tt class="py-lineno"> 994</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>
1062 <a name="L995"></a><tt class="py-lineno"> 995</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>
1063 </div><a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> </tt>
1064 <a name="Engine.run_script"></a><div id="Engine.run_script-def"><a name="L997"></a><tt class="py-lineno"> 997</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>
1065 </div><div id="Engine.run_script-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Engine.run_script-expanded"><a name="L998"></a><tt class="py-lineno"> 998</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
1066 <a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"><tt class="py-docstring"> Run an existing script using its description to look it up</tt> </tt>
1067 <a name="L1000"></a><tt class="py-lineno">1000</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1068 <a name="L1001"></a><tt class="py-lineno">1001</tt> <tt class="py-line"><tt class="py-docstring"> Usage: C{engine.run_script(description)}</tt> </tt>
1069 <a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
1070 <a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"><tt class="py-docstring"> @param description: description of the script to run</tt> </tt>
1071 <a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"><tt class="py-docstring"> @raise Exception: if the specified script does not exist</tt> </tt>
1072 <a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
1073 <a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"> <tt class="py-name">targetScript</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
1074 <a name="L1007"></a><tt class="py-lineno">1007</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>
1075 <a name="L1008"></a><tt class="py-lineno">1008</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>
1076 <a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"> <tt class="py-name">targetScript</tt> <tt class="py-op">=</tt> <tt class="py-name">item</tt> </tt>
1077 <a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> </tt>
1078 <a name="L1011"></a><tt class="py-lineno">1011</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>
1079 <a name="L1012"></a><tt class="py-lineno">1012</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>
1080 <a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
1081 <a name="L1014"></a><tt class="py-lineno">1014</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>
1082 </div></div><a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"> </tt><script type="text/javascript">
10291083 <!--
10301084 expandto(location.href);
10311085 // -->
10581112 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
10591113 <tr>
10601114 <td align="left" class="footer">
1061 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
1115 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
10621116 </td>
10631117 <td align="right" class="footer">
10641118 <a target="mainFrame" href="http://epydoc.sourceforge.net"
334334 <p>When the given hotkey is pressed, it will be replaced with the given
335335 text. Modifiers must be given as a list of strings, with the following
336336 values permitted:</p>
337 <p>&lt;control&gt; &lt;alt&gt; &lt;super&gt; &lt;shift&gt;</p>
337 <p>&lt;ctrl&gt; &lt;alt&gt; &lt;super&gt; &lt;shift&gt;</p>
338338 <p>The key must be an unshifted character (i.e. lowercase)</p>
339339 <dl class="fields">
340340 <dt>Parameters:</dt>
409409 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
410410 <tr>
411411 <td align="left" class="footer">
412 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
412 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
413413 </td>
414414 <td align="right" class="footer">
415415 <a target="mainFrame" href="http://epydoc.sourceforge.net"
129129 </tr>
130130 <tr>
131131 <td width="15%" align="right" valign="top" class="summary">
132 <span class="summary-type">&nbsp;</span>
132 <span class="summary-type"><code>str</code></span>
133133 </td><td class="summary">
134134 <table width="100%" cellpadding="0" cellspacing="0" border="0">
135135 <tr>
200200 </tr>
201201 <tr>
202202 <td width="15%" align="right" valign="top" class="summary">
203 <span class="summary-type">&nbsp;</span>
203 <span class="summary-type"><code>str</code></span>
204204 </td><td class="summary">
205205 <table width="100%" cellpadding="0" cellspacing="0" border="0">
206206 <tr>
294294 <p>Read text from the X selection</p>
295295 <p>Usage: <code>clipboard.get_selection()</code></p>
296296 <dl class="fields">
297 <dt>Returns: <code>str</code></dt>
298 <dd>text contents of the mouse selection</dd>
297299 </dl>
298300 </td></tr></table>
299301 </div>
339341 <p>Read text from the clipboard</p>
340342 <p>Usage: <code>clipboard.get_clipboard()</code></p>
341343 <dl class="fields">
344 <dt>Returns: <code>str</code></dt>
345 <dd>text contents of the clipboard</dd>
342346 </dl>
343347 </td></tr></table>
344348 </div>
369373 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
370374 <tr>
371375 <td align="left" class="footer">
372 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
376 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
373377 </td>
374378 <td align="right" class="footer">
375379 <a target="mainFrame" href="http://epydoc.sourceforge.net"
5959 <p>Provides a simple interface for the display of some basic dialogs to
6060 collect information from the user.</p>
6161 <p>This version uses Zenity to integrate well with GNOME.</p>
62 <p>A note on exit codes: an exit code of 0 indicates that the user
63 clicked OK.</p>
6264
6365 <!-- ==================== INSTANCE METHODS ==================== -->
6466 <a name="section-InstanceMethods"></a>
9799 </tr>
98100 <tr>
99101 <td width="15%" align="right" valign="top" class="summary">
100 <span class="summary-type">&nbsp;</span>
102 <span class="summary-type"><code>tuple(int, str)</code></span>
101103 </td><td class="summary">
102104 <table width="100%" cellpadding="0" cellspacing="0" border="0">
103105 <tr>
117119 </tr>
118120 <tr>
119121 <td width="15%" align="right" valign="top" class="summary">
120 <span class="summary-type">&nbsp;</span>
122 <span class="summary-type"><code>tuple(int, str)</code></span>
121123 </td><td class="summary">
122124 <table width="100%" cellpadding="0" cellspacing="0" border="0">
123125 <tr>
136138 </tr>
137139 <tr>
138140 <td width="15%" align="right" valign="top" class="summary">
139 <span class="summary-type">&nbsp;</span>
141 <span class="summary-type"><code>tuple(int, str)</code></span>
140142 </td><td class="summary">
141143 <table width="100%" cellpadding="0" cellspacing="0" border="0">
142144 <tr>
157159 </tr>
158160 <tr>
159161 <td width="15%" align="right" valign="top" class="summary">
160 <span class="summary-type">&nbsp;</span>
162 <span class="summary-type"><code>tuple(int, str)</code></span>
161163 </td><td class="summary">
162164 <table width="100%" cellpadding="0" cellspacing="0" border="0">
163165 <tr>
178180 </tr>
179181 <tr>
180182 <td width="15%" align="right" valign="top" class="summary">
181 <span class="summary-type">&nbsp;</span>
183 <span class="summary-type"><code>tuple(int, str)</code></span>
182184 </td><td class="summary">
183185 <table width="100%" cellpadding="0" cellspacing="0" border="0">
184186 <tr>
196198 </tr>
197199 <tr>
198200 <td width="15%" align="right" valign="top" class="summary">
199 <span class="summary-type">&nbsp;</span>
201 <span class="summary-type"><code>tuple(int, str)</code></span>
200202 </td><td class="summary">
201203 <table width="100%" cellpadding="0" cellspacing="0" border="0">
202204 <tr>
214216 </tr>
215217 <tr>
216218 <td width="15%" align="right" valign="top" class="summary">
217 <span class="summary-type">&nbsp;</span>
219 <span class="summary-type"><code>tuple(int, str)</code></span>
218220 </td><td class="summary">
219221 <table width="100%" cellpadding="0" cellspacing="0" border="0">
220222 <tr>
233235 </tr>
234236 <tr>
235237 <td width="15%" align="right" valign="top" class="summary">
236 <span class="summary-type">&nbsp;</span>
238 <span class="summary-type"><code>tuple(int, str)</code></span>
237239 </td><td class="summary">
238240 <table width="100%" cellpadding="0" cellspacing="0" border="0">
239241 <tr>
297299 <li><strong class="pname"><code>message</code></strong> - message displayed above the input box</li>
298300 <li><strong class="pname"><code>default</code></strong> - default value for the input box</li>
299301 </ul></dd>
302 <dt>Returns: <code>tuple(int, str)</code></dt>
303 <dd>a tuple containing the exit code and user input</dd>
300304 </dl>
301305 </td></tr></table>
302306 </div>
325329 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
326330 <li><strong class="pname"><code>message</code></strong> - message displayed above the password input box</li>
327331 </ul></dd>
332 <dt>Returns: <code>tuple(int, str)</code></dt>
333 <dd>a tuple containing the exit code and user input</dd>
328334 </dl>
329335 </td></tr></table>
330336 </div>
357363 <li><strong class="pname"><code>message</code></strong> - message displayed above the list</li>
358364 <li><strong class="pname"><code>default</code></strong> - default value to be selected</li>
359365 </ul></dd>
366 <dt>Returns: <code>tuple(int, str)</code></dt>
367 <dd>a tuple containing the exit code and user choice</dd>
360368 </dl>
361369 </td></tr></table>
362370 </div>
390398 <li><strong class="pname"><code>message</code></strong> - message displayed above the list</li>
391399 <li><strong class="pname"><code>defaults</code></strong> - list of default values to be selected</li>
392400 </ul></dd>
401 <dt>Returns: <code>tuple(int, str)</code></dt>
402 <dd>a tuple containing the exit code and user choice</dd>
393403 </dl>
394404 </td></tr></table>
395405 </div>
415425 <dd><ul class="nomargin-top">
416426 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
417427 </ul></dd>
428 <dt>Returns: <code>tuple(int, str)</code></dt>
429 <dd>a tuple containing the exit code and file path</dd>
418430 </dl>
419431 </td></tr></table>
420432 </div>
440452 <dd><ul class="nomargin-top">
441453 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
442454 </ul></dd>
455 <dt>Returns: <code>tuple(int, str)</code></dt>
456 <dd>a tuple containing the exit code and file path</dd>
443457 </dl>
444458 </td></tr></table>
445459 </div>
467481 <dd><ul class="nomargin-top">
468482 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
469483 </ul></dd>
484 <dt>Returns: <code>tuple(int, str)</code></dt>
485 <dd>a tuple containing the exit code and path</dd>
470486 </dl>
471487 </td></tr></table>
472488 </div>
495511 <dd><ul class="nomargin-top">
496512 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
497513 <li><strong class="pname"><code>format</code></strong> - format of date to be returned</li>
498 <li><strong class="pname"><code>date</code></strong> - initial date as YYYY-MM-DD, otherwise today
499 <p>Use the dialog's OK button. AutoKey has trouble if you
500 double-click the date.</p></li>
501 </ul></dd>
514 <li><strong class="pname"><code>date</code></strong> - initial date as YYYY-MM-DD, otherwise today</li>
515 </ul></dd>
516 <dt>Returns: <code>tuple(int, str)</code></dt>
517 <dd>a tuple containing the exit code and date</dd>
502518 </dl>
503519 </td></tr></table>
504520 </div>
529545 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
530546 <tr>
531547 <td align="left" class="footer">
532 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
548 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
533549 </td>
534550 <td align="right" class="footer">
535551 <a target="mainFrame" href="http://epydoc.sourceforge.net"
277277 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
278278 <tr>
279279 <td align="left" class="footer">
280 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
280 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
281281 </td>
282282 <td align="right" class="footer">
283283 <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 Mon Apr 12 22:11:24 2010
239 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
240240 </td>
241241 <td align="right" class="footer">
242242 <a target="mainFrame" href="http://epydoc.sourceforge.net"
129129 </tr>
130130 <tr>
131131 <td width="15%" align="right" valign="top" class="summary">
132 <span class="summary-type">&nbsp;</span>
132 <span class="summary-type"><code>str</code></span>
133133 </td><td class="summary">
134134 <table width="100%" cellpadding="0" cellspacing="0" border="0">
135135 <tr>
197197 </tr>
198198 <tr>
199199 <td width="15%" align="right" valign="top" class="summary">
200 <span class="summary-type">&nbsp;</span>
200 <span class="summary-type"><code>str</code></span>
201201 </td><td class="summary">
202202 <table width="100%" cellpadding="0" cellspacing="0" border="0">
203203 <tr>
307307 <p>Read text from the X selection</p>
308308 <p>Usage: <code>clipboard.get_selection()</code></p>
309309 <dl class="fields">
310 <dt>Returns: <code>str</code></dt>
311 <dd>text contents of the mouse selection</dd>
310312 </dl>
311313 </td></tr></table>
312314 </div>
352354 <p>Read text from the clipboard</p>
353355 <p>Usage: <code>clipboard.get_clipboard()</code></p>
354356 <dl class="fields">
357 <dt>Returns: <code>str</code></dt>
358 <dd>text contents of the clipboard</dd>
355359 </dl>
356360 </td></tr></table>
357361 </div>
382386 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
383387 <tr>
384388 <td align="left" class="footer">
385 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
389 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
386390 </td>
387391 <td align="right" class="footer">
388392 <a target="mainFrame" href="http://epydoc.sourceforge.net"
5959 <p>Provides a simple interface for the display of some basic dialogs to
6060 collect information from the user.</p>
6161 <p>This version uses KDialog to integrate well with KDE.</p>
62 <p>A note on exit codes: an exit code of 0 indicates that the user
63 clicked OK.</p>
6264
6365 <!-- ==================== INSTANCE METHODS ==================== -->
6466 <a name="section-InstanceMethods"></a>
9799 </tr>
98100 <tr>
99101 <td width="15%" align="right" valign="top" class="summary">
100 <span class="summary-type">&nbsp;</span>
102 <span class="summary-type"><code>tuple(int, str)</code></span>
101103 </td><td class="summary">
102104 <table width="100%" cellpadding="0" cellspacing="0" border="0">
103105 <tr>
117119 </tr>
118120 <tr>
119121 <td width="15%" align="right" valign="top" class="summary">
120 <span class="summary-type">&nbsp;</span>
122 <span class="summary-type"><code>tuple(int, str)</code></span>
121123 </td><td class="summary">
122124 <table width="100%" cellpadding="0" cellspacing="0" border="0">
123125 <tr>
136138 </tr>
137139 <tr>
138140 <td width="15%" align="right" valign="top" class="summary">
139 <span class="summary-type">&nbsp;</span>
141 <span class="summary-type"><code>tuple(int, str)</code></span>
140142 </td><td class="summary">
141143 <table width="100%" cellpadding="0" cellspacing="0" border="0">
142144 <tr>
156158 </tr>
157159 <tr>
158160 <td width="15%" align="right" valign="top" class="summary">
159 <span class="summary-type">&nbsp;</span>
161 <span class="summary-type"><code>tuple(int, str)</code></span>
160162 </td><td class="summary">
161163 <table width="100%" cellpadding="0" cellspacing="0" border="0">
162164 <tr>
177179 </tr>
178180 <tr>
179181 <td width="15%" align="right" valign="top" class="summary">
180 <span class="summary-type">&nbsp;</span>
182 <span class="summary-type"><code>tuple(int, str)</code></span>
181183 </td><td class="summary">
182184 <table width="100%" cellpadding="0" cellspacing="0" border="0">
183185 <tr>
198200 </tr>
199201 <tr>
200202 <td width="15%" align="right" valign="top" class="summary">
201 <span class="summary-type">&nbsp;</span>
203 <span class="summary-type"><code>tuple(int, str)</code></span>
202204 </td><td class="summary">
203205 <table width="100%" cellpadding="0" cellspacing="0" border="0">
204206 <tr>
219221 </tr>
220222 <tr>
221223 <td width="15%" align="right" valign="top" class="summary">
222 <span class="summary-type">&nbsp;</span>
224 <span class="summary-type"><code>tuple(int, str)</code></span>
223225 </td><td class="summary">
224226 <table width="100%" cellpadding="0" cellspacing="0" border="0">
225227 <tr>
240242 </tr>
241243 <tr>
242244 <td width="15%" align="right" valign="top" class="summary">
243 <span class="summary-type">&nbsp;</span>
245 <span class="summary-type"><code>tuple(int, str)</code></span>
244246 </td><td class="summary">
245247 <table width="100%" cellpadding="0" cellspacing="0" border="0">
246248 <tr>
260262 </tr>
261263 <tr>
262264 <td width="15%" align="right" valign="top" class="summary">
263 <span class="summary-type">&nbsp;</span>
265 <span class="summary-type"><code>tuple(int, str)</code></span>
264266 </td><td class="summary">
265267 <table width="100%" cellpadding="0" cellspacing="0" border="0">
266268 <tr>
322324 <li><strong class="pname"><code>message</code></strong> - message displayed above the input box</li>
323325 <li><strong class="pname"><code>default</code></strong> - default value for the input box</li>
324326 </ul></dd>
327 <dt>Returns: <code>tuple(int, str)</code></dt>
328 <dd>a tuple containing the exit code and user input</dd>
325329 </dl>
326330 </td></tr></table>
327331 </div>
350354 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
351355 <li><strong class="pname"><code>message</code></strong> - message displayed above the password input box</li>
352356 </ul></dd>
357 <dt>Returns: <code>tuple(int, str)</code></dt>
358 <dd>a tuple containing the exit code and user input</dd>
353359 </dl>
354360 </td></tr></table>
355361 </div>
380386 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
381387 <li><strong class="pname"><code>message</code></strong> - message displayed above the combobox</li>
382388 </ul></dd>
389 <dt>Returns: <code>tuple(int, str)</code></dt>
390 <dd>a tuple containing the exit code and user choice</dd>
383391 </dl>
384392 </td></tr></table>
385393 </div>
412420 <li><strong class="pname"><code>message</code></strong> - message displayed above the list</li>
413421 <li><strong class="pname"><code>default</code></strong> - default value to be selected</li>
414422 </ul></dd>
423 <dt>Returns: <code>tuple(int, str)</code></dt>
424 <dd>a tuple containing the exit code and user choice</dd>
415425 </dl>
416426 </td></tr></table>
417427 </div>
445455 <li><strong class="pname"><code>message</code></strong> - message displayed above the list</li>
446456 <li><strong class="pname"><code>defaults</code></strong> - list of default values to be selected</li>
447457 </ul></dd>
458 <dt>Returns: <code>tuple(int, str)</code></dt>
459 <dd>a tuple containing the exit code and user choice</dd>
448460 </dl>
449461 </td></tr></table>
450462 </div>
479491 <li><strong class="pname"><code>rememberAs</code></strong> - gives an ID to this file dialog, allowing it to open at the last
480492 used path next time</li>
481493 </ul></dd>
494 <dt>Returns: <code>tuple(int, str)</code></dt>
495 <dd>a tuple containing the exit code and file path</dd>
482496 </dl>
483497 </td></tr></table>
484498 </div>
513527 <li><strong class="pname"><code>rememberAs</code></strong> - gives an ID to this file dialog, allowing it to open at the last
514528 used path next time</li>
515529 </ul></dd>
530 <dt>Returns: <code>tuple(int, str)</code></dt>
531 <dd>a tuple containing the exit code and file path</dd>
516532 </dl>
517533 </td></tr></table>
518534 </div>
544560 <li><strong class="pname"><code>rememberAs</code></strong> - gives an ID to this file dialog, allowing it to open at the last
545561 used path next time</li>
546562 </ul></dd>
563 <dt>Returns: <code>tuple(int, str)</code></dt>
564 <dd>a tuple containing the exit code and chosen path</dd>
547565 </dl>
548566 </td></tr></table>
549567 </div>
570588 <dd><ul class="nomargin-top">
571589 <li><strong class="pname"><code>title</code></strong> - window title for the dialog</li>
572590 </ul></dd>
591 <dt>Returns: <code>tuple(int, str)</code></dt>
592 <dd>a tuple containing the exit code and colour</dd>
573593 </dl>
574594 </td></tr></table>
575595 </div>
600620 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
601621 <tr>
602622 <td align="left" class="footer">
603 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
623 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
604624 </td>
605625 <td align="right" class="footer">
606626 <a target="mainFrame" href="http://epydoc.sourceforge.net"
348348 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
349349 <tr>
350350 <td align="left" class="footer">
351 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
351 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
352352 </td>
353353 <td align="right" class="footer">
354354 <a target="mainFrame" href="http://epydoc.sourceforge.net"
223223 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
224224 <tr>
225225 <td align="left" class="footer">
226 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
226 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
227227 </td>
228228 <td align="right" class="footer">
229229 <a target="mainFrame" href="http://epydoc.sourceforge.net"
9999 </tr>
100100 <tr>
101101 <td width="15%" align="right" valign="top" class="summary">
102 <span class="summary-type">&nbsp;</span>
102 <span class="summary-type">boolean</span>
103103 </td><td class="summary">
104104 <table width="100%" cellpadding="0" cellspacing="0" border="0">
105105 <tr>
118118 </tr>
119119 <tr>
120120 <td width="15%" align="right" valign="top" class="summary">
121 <span class="summary-type">&nbsp;</span>
121 <span class="summary-type">boolean</span>
122122 </td><td class="summary">
123123 <table width="100%" cellpadding="0" cellspacing="0" border="0">
124124 <tr>
253253 </tr>
254254 <tr>
255255 <td width="15%" align="right" valign="top" class="summary">
256 <span class="summary-type">&nbsp;</span>
256 <span class="summary-type"><code>tuple(int, int, int, int)</code></span>
257257 </td><td class="summary">
258258 <table width="100%" cellpadding="0" cellspacing="0" border="0">
259259 <tr>
331331 <li><strong class="pname"><code>title</code></strong> - title to match against (as a regular expression)</li>
332332 <li><strong class="pname"><code>timeOut</code></strong> - period (seconds) to wait before giving up</li>
333333 </ul></dd>
334 <dt>Returns: boolean</dt>
334335 </dl>
335336 </td></tr></table>
336337 </div>
361362 <li><strong class="pname"><code>title</code></strong> - title to match against (as a regular expression)</li>
362363 <li><strong class="pname"><code>timeOut</code></strong> - period (seconds) to wait before giving up</li>
363364 </ul></dd>
365 <dt>Returns: boolean</dt>
364366 </dl>
365367 </td></tr></table>
366368 </div>
561563
562564 <p>Get the geometry of the currently active window</p>
563565 <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">
566 <dl class="fields">
567 <dt>Returns: <code>tuple(int, int, int, int)</code></dt>
568 <dd>a 4-tuple containing the x-origin, y-origin, width and height of
569 the window (in pixels)</dd>
567570 </dl>
568571 </td></tr></table>
569572 </div>
594597 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
595598 <tr>
596599 <td align="left" class="footer">
597 Generated by Epydoc 3.0.1 on Mon Apr 12 22:11:24 2010
600 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
598601 </td>
599602 <td align="right" class="footer">
600603 <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 Mon Apr 12 22:11:24 2010
85 Generated by Epydoc 3.0.1 on Fri Apr 16 22:13:19 2010
8686 </td>
8787 <td align="right" class="footer">
8888 <a target="mainFrame" href="http://epydoc.sourceforge.net"
00 <?xml version="1.0"?>
11 <glade-interface>
2 <!-- interface-requires gtk+ 2.6 -->
2 <!-- interface-requires gtk+ 2.14 -->
33 <!-- interface-naming-policy toplevel-contextual -->
44 <widget class="GtkWindow" id="window1">
55 <child>
6969 </packing>
7070 </child>
7171 <child>
72 <widget class="GtkHBox" id="sendModeHbox">
73 <property name="visible">True</property>
74 <property name="spacing">5</property>
75 <child>
76 <widget class="GtkLabel" id="label1">
77 <property name="visible">True</property>
78 <property name="label" translatable="yes">Paste using</property>
79 </widget>
80 <packing>
81 <property name="expand">False</property>
82 <property name="position">0</property>
83 </packing>
84 </child>
85 <child>
86 <placeholder/>
87 </child>
88 </widget>
89 <packing>
90 <property name="position">2</property>
91 </packing>
92 </child>
93 <child>
7294 <widget class="GtkHSeparator" id="hseparator1">
7395 <property name="visible">True</property>
7496 </widget>
7597 <packing>
7698 <property name="expand">False</property>
77 <property name="position">2</property>
99 <property name="padding">5</property>
100 <property name="position">3</property>
78101 </packing>
79102 </child>
80103 </widget>
1919
2020 setup(
2121 name="autokey",
22 version="0.70.1",
22 version="0.70.2",
2323 author="Chris Dekter",
2424 author_email="cdekter@gmail.com",
2525 url="http://autokey.googlecode.com/",
2626
2727 APP_NAME = "AutoKey"
2828 CATALOG = ""
29 VERSION = "0.70.1"
30 HOMEPAGE = "http://autokey.sourceforge.net/"
29 VERSION = "0.70.2"
30 HOMEPAGE = "http://autokey.googlecode.com/"
3131 BUG_EMAIL = "cdekter@gmail.com"
3232
3333 FAQ_URL = "http://code.google.com/p/autokey/wiki/FAQ"
3434 HELP_URL = "http://code.google.com/p/autokey/w/list"
35 DONATE_URL = "https://sourceforge.net/donate/index.php?group_id=216191"
35 DONATE_URL = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=L333CPRZ6J8JC"
3636
3737 CONFIG_WINDOW_TITLE = "Configuration"
3838
4747 UNDO_USING_BACKSPACE = "undoUsingBackspace"
4848 WINDOW_DEFAULT_SIZE = "windowDefaultSize"
4949 HPANE_POSITION = "hPanePosition"
50 COLUMN_WIDTHS = "columnWidths"
5051 SHOW_TOOLBAR = "showToolbar"
5152
5253 # TODO - Future functionality
235236 UNDO_USING_BACKSPACE : True,
236237 WINDOW_DEFAULT_SIZE : (600, 400),
237238 HPANE_POSITION : 150,
239 COLUMN_WIDTHS : [150, 50, 100],
238240 SHOW_TOOLBAR : True
239241 # TODO - Future functionality
240242 #TRACK_RECENT_ENTRY : True,
262264 self.toggleServiceHotkey.enabled = True
263265
264266 self.showPopupHotkey = GlobalHotkey()
265 self.showPopupHotkey.set_hotkey(["<super>"], "b")
266 self.showPopupHotkey.enabled = True
267 self.showPopupHotkey.enabled = False
267268
268269 if configData is not None:
269270 self.load_from_serialized(configData)
423424 self.globalHotkeys.append(self.configHotkey)
424425 self.globalHotkeys.append(self.toggleServiceHotkey)
425426 self.globalHotkeys.append(self.showPopupHotkey)
426 _logger.debug("Global hotkeys: %s", self.globalHotkeys)
427
428 _logger.debug("Hotkey folders: %s", self.hotKeyFolders)
429 _logger.debug("Hotkey phrases: %s", self.hotKeys)
430 _logger.debug("Abbreviation phrases: %s", self.abbreviations)
431 _logger.debug("All folders: %s", self.allFolders)
432 _logger.debug("All phrases: %s", self.allItems)
427 #_logger.debug("Global hotkeys: %s", self.globalHotkeys)
428
429 #_logger.debug("Hotkey folders: %s", self.hotKeyFolders)
430 #_logger.debug("Hotkey phrases: %s", self.hotKeys)
431 #_logger.debug("Abbreviation phrases: %s", self.abbreviations)
432 #_logger.debug("All folders: %s", self.allFolders)
433 #_logger.debug("All phrases: %s", self.allItems)
433434
434435 save_config(self)
435436
497498 raise ImportException("The abbreviation '" + phrase.abbreviation + "' is already in use.")
498499 return (folder, importer.phrases)
499500
500 def check_abbreviation_unique(self, abbreviation, targetPhrase):
501 def check_abbreviation_unique(self, abbreviation, targetItem):
501502 """
502503 Checks that the given abbreviation is not already in use.
503504
507508 for item in self.allFolders:
508509 if TriggerMode.ABBREVIATION in item.modes:
509510 if item.abbreviation == abbreviation:
510 return item is targetPhrase
511 return item is targetItem, item.title
511512
512513 for item in self.allItems:
513514 if TriggerMode.ABBREVIATION in item.modes:
514515 if item.abbreviation == abbreviation:
515 return item is targetPhrase
516
517 return True
516 return item is targetItem, item.description
517
518 return True, ""
519
520 def check_abbreviation_substring(self, abbreviation, targetItem):
521 for item in self.allFolders:
522 if TriggerMode.ABBREVIATION in item.modes:
523 if abbreviation in item.abbreviation or item.abbreviation in abbreviation:
524 return item is targetItem, item.title
525
526 for item in self.allItems:
527 if TriggerMode.ABBREVIATION in item.modes:
528 if abbreviation in item.abbreviation or item.abbreviation in abbreviation:
529 return item is targetItem, item.description
530
531 return True, ""
532
533 """def __checkSubstringAbbr(self, item1, item2, abbr):
534 # Check if the given abbreviation is a substring match for the given item
535 # If it is, check a few other rules to see if it matters
536 print "substring check %s against %s" % (item.abbreviation, abbr)
537 try:
538 index = item.abbreviation.index(abbr)
539 print index
540 if index == 0 and len(abbr) < len(item.abbreviation):
541 return item.immediate
542 elif (index + len(abbr)) == len(item.abbreviation):
543 return item.triggerInside
544 elif len(abbr) != len(item.abbreviation):
545 return item.triggerInside and item.immediate
546 else:
547 return False
548 except ValueError:
549 return False"""
550
551 """def __buildErrorMsg(self, conflictItem, msg):
552 if isinstance(conflictItem, Folder):
553 return msg % ("folder", conflictItem.title)
554 elif isinstance(conflictItem, Phrase):
555 return msg % ("phrase", conflictItem.description)
556 else:
557 return msg % ("script", conflictItem.description)"""
518558
519559 def check_hotkey_unique(self, modifiers, hotKey, targetPhrase):
520560 """
528568 for item in self.allFolders:
529569 if TriggerMode.HOTKEY in item.modes:
530570 if item.modifiers == modifiers and item.hotKey == hotKey:
531 return item is targetPhrase
571 return item is targetPhrase, item.title
532572
533573 for item in self.allItems:
534574 if TriggerMode.HOTKEY in item.modes:
535575 if item.modifiers == modifiers and item.hotKey == hotKey:
536 return item is targetPhrase
576 return item is targetPhrase, item.description
537577
538578 for item in self.globalHotkeys:
539579 if item.enabled:
540580 if item.modifiers == modifiers and item.hotKey == hotKey:
541 return item is targetPhrase
542
543 return True
581 return item is targetPhrase, "a global hotkey"
582
583 return True, ""
544584
545585 # Legacy Importer ----
546586
709749
710750 def check_hotkey(self, modifiers, key, windowTitle):
711751 if AbstractHotkey.check_hotkey(self, modifiers, key, windowTitle) and self.enabled:
712 _logger.debug("Triggered global hotkey using modifiers: %s key: %s" % (repr(modifiers), key))
752 _logger.debug("Triggered global hotkey using modifiers: %r key: %r", modifiers, key)
713753 self.closure()
714754 return False
715755
756 def get_hotkey_string(self, key=None, modifiers=None):
757 if key is None and modifiers is None:
758 if not self.enabled:
759 return ""
760
761 key = self.hotKey
762 modifiers = self.modifiers
763
764 ret = ""
765
766 for modifier in modifiers:
767 ret += modifier
768 ret += "+"
769
770 if key == ' ':
771 ret += "<space>"
772 else:
773 ret += key
774
775 return ret
3737
3838 CONFIG_WINDOW_TITLE = _(common.CONFIG_WINDOW_TITLE + " - AutoKey")
3939
40
41 WEBSITE = "http://code.google.com/p/autokey"
42
4340 UI_DESCRIPTION_FILE = os.path.join(os.path.dirname(__file__), "data/menus.xml")
4441
4542 def get_ui(fileName):
417414 scrolledWindow.add(self.editor)
418415 self.promptCheckbox = builder.get_object("promptCheckbox")
419416 self.showInTrayCheckbox = builder.get_object("showInTrayCheckbox")
417 self.sendModeCombo = gtk.combo_box_new_text()
418 self.sendModeCombo.connect("changed", self.on_modified)
419 sendModeHbox = builder.get_object("sendModeHbox")
420 sendModeHbox.pack_start(self.sendModeCombo, False, False)
420421
421422 vbox = builder.get_object("settingsVbox")
422423 self.settingsWidget = SettingsWidget(parentWindow)
423424 vbox.pack_start(self.settingsWidget.ui)
425
426 # Populate combo
427 l = model.SEND_MODES.keys()
428 l.sort()
429 for val in l:
430 self.sendModeCombo.append_text(val)
424431
425432 # Configure script editor
426433 #self.__m = gtksourceview2.LanguageManager()
446453 self.promptCheckbox.set_active(thePhrase.prompt)
447454 self.showInTrayCheckbox.set_active(thePhrase.showInTrayMenu)
448455 self.settingsWidget.load(thePhrase)
456
457 l = model.SEND_MODES.keys()
458 l.sort()
459 for k, v in model.SEND_MODES.iteritems():
460 if v == thePhrase.sendMode:
461 self.sendModeCombo.set_active(l.index(k))
462 break
463
449464
450465 def save(self):
451466 self.currentItem.phrase = self.buffer.get_text(self.buffer.get_start_iter(),
453468
454469 self.currentItem.prompt = self.promptCheckbox.get_active()
455470 self.currentItem.showInTrayMenu = self.showInTrayCheckbox.get_active()
471 self.currentItem.sendMode = model.SEND_MODES[self.sendModeCombo.get_active_text()]
456472
457473 self.settingsWidget.save()
474
475 def validate(self):
476 text = self.buffer.get_text(self.buffer.get_start_iter(), self.buffer.get_end_iter()).decode("utf-8")
477 if not validate(not EMPTY_FIELD_REGEX.match(text), _("The script code can't be empty"), self.editor,
478 self.parentWindow.ui):
479 return False
480
481 badChars = self.parentWindow.app.service.mediator.check_string_mapping(text)
482
483 if len(badChars) > 0 and model.SEND_MODES[self.sendModeCombo.get_active_text()] == model.SendMode.KEYBOARD:
484 badCharPrint = u'[ '
485 for char in badChars:
486 badCharPrint += u"'"
487 badCharPrint += unicode(char)
488 badCharPrint += u"'"
489 badCharPrint += u', '
490 badCharPrint = badCharPrint[:-2]
491 badCharPrint += u' ]'
492 badCharPrint = badCharPrint.encode("utf-8")
493
494 msg = _("The phrase text contains characters that are not in your current keyboard map: \n%s\n") % badCharPrint
495 msg += _("If you don't choose a different paste mode, these characters won't be pasted.")
496
497 dlg = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK,
498 message_format=msg)
499 dlg.run()
500 dlg.destroy()
501
502 return True
503
504
458505
459506 class ConfigWindow:
460507
545592 rootIter = self.treeView.get_model().get_iter_root()
546593 self.treeView.get_selection().select_iter(rootIter)
547594 self.on_tree_selection_changed(self.treeView)
595 self.treeView.columns_autosize()
548596
549597 width, height = ConfigManager.SETTINGS[WINDOW_DEFAULT_SIZE]
550598 self.set_default_size(width, height)
874922 p = gtk.gdk.pixbuf_new_from_file(common.ICON_FILE)
875923 p = p.scale_simple(100, 100, gtk.gdk.INTERP_BILINEAR)
876924 dlg.set_logo(p)
877 dlg.set_website(WEBSITE)
925 dlg.set_website(common.HOMEPAGE)
878926 dlg.set_authors(["Chris Dekter (Developer) <cdekter@gmail.com>",
879927 "Sam Peterson (Original developer) <peabodyenator@gmail.com>"])
880928 dlg.run()
10121060 column1.pack_end(textRenderer, True)
10131061 column1.add_attribute(iconRenderer, "icon-name", 0)
10141062 column1.add_attribute(textRenderer, "text", 1)
1063 column1.set_expand(True)
10151064 column1.set_min_width(150)
10161065 self.treeView.append_column(column1)
10171066
10201069 textRenderer.set_property("editable", False)
10211070 column2.pack_start(textRenderer, True)
10221071 column2.add_attribute(textRenderer, "text", 2)
1072 column2.set_expand(False)
10231073 column2.set_min_width(50)
10241074 self.treeView.append_column(column2)
10251075
10281078 textRenderer.set_property("editable", False)
10291079 column3.pack_start(textRenderer, True)
10301080 column3.add_attribute(textRenderer, "text", 3)
1081 column3.set_expand(False)
10311082 column3.set_min_width(100)
10321083 self.treeView.append_column(column3)
10331084
00 <?xml version="1.0"?>
11 <interface>
2 <!-- interface-requires gtk+ 2.6 -->
2 <!-- interface-requires gtk+ 2.14 -->
33 <!-- interface-naming-policy toplevel-contextual -->
44 <object class="GtkAlignment" id="phrasepage">
55 <property name="visible">True</property>
6767 </packing>
6868 </child>
6969 <child>
70 <object class="GtkHBox" id="sendModeHbox">
71 <property name="visible">True</property>
72 <property name="spacing">5</property>
73 <child>
74 <object class="GtkLabel" id="label1">
75 <property name="visible">True</property>
76 <property name="label" translatable="yes">Paste using</property>
77 </object>
78 <packing>
79 <property name="expand">False</property>
80 <property name="position">0</property>
81 </packing>
82 </child>
83 <child>
84 <placeholder/>
85 </child>
86 </object>
87 <packing>
88 <property name="position">2</property>
89 </packing>
90 </child>
91 <child>
7092 <object class="GtkHSeparator" id="hseparator1">
7193 <property name="visible">True</property>
7294 </object>
7395 <packing>
7496 <property name="expand">False</property>
75 <property name="position">2</property>
97 <property name="padding">5</property>
98 <property name="position">3</property>
7699 </packing>
77100 </child>
78101 </object>
142142
143143 def valid(self):
144144 configManager = self.configManager
145 if not validate(configManager.check_abbreviation_unique(self.get_abbr(), self.targetItem),
146 _("The abbreviation is already in use.\nAbbreviations must be unique."),
145
146 unique, itemName = configManager.check_abbreviation_unique(self.get_abbr(), self.targetItem)
147 if not validate(unique, _("The abbreviation is already in use by '%s'.") % itemName,
147148 self.abbrEntry, self.ui): return False
148149
149 if not validate(not EMPTY_FIELD_REGEX.match(self.get_abbr()), _("Abbreviation can't be empty."),
150 if not validate(not EMPTY_FIELD_REGEX.match(self.get_abbr()), _("The abbreviation can't be empty."),
150151 self.abbrEntry, self.ui): return False
152
153 substrUnique, itemName = configManager.check_abbreviation_substring(self.get_abbr(), self.targetItem)
154 if not substrUnique:
155 dlg = gtk.MessageDialog(type=gtk.MESSAGE_WARNING, buttons=gtk.BUTTONS_OK,
156 message_format=_("The abbreviation may conflict with the one defined for '%s'.") % itemName)
157 dlg.run()
158 dlg.destroy()
151159
152160 return True
153161
245253 self._setKeyLabel(key)
246254 self.key = key
247255 self.setButton.set_sensitive(True)
256
257 def cancel_grab(self):
258 self.setButton.set_sensitive(True)
259 self._setKeyLabel(self.key)
248260
249261 def build_modifiers(self):
250262 modifiers = []
266278 def valid(self):
267279 configManager = self.configManager
268280 modifiers = self.build_modifiers()
269
270 if not validate(configManager.check_hotkey_unique(modifiers, self.key, self.targetItem),
271 _("The hotkey is already in use.\nHotkeys must be unique."), None,
281
282 unique, itemName = configManager.check_hotkey_unique(modifiers, self.key, self.targetItem)
283 if not validate(unique, _("The hotkey is already in use by '%s'.") % itemName, None,
272284 self.ui): return False
273285
274 if not validate(self.key is not None, _("You must specify a key for the Hotkey."),
286 if not validate(self.key is not None, _("You must specify a key for the hotkey."),
275287 None, self.ui): return False
276288
277 if not validate(len(modifiers) > 0, _("You must select at least one modifier for the Hotkey"),
289 if not validate(len(modifiers) > 0, _("You must select at least one modifier for the hotkey"),
278290 None, self.ui): return False
279291
280292 return True
5757 self.icon = gtk.status_icon_new_from_file(STATUS_ICON_FILE)
5858 self.update_tool_tip()
5959 self.icon.connect("popup_menu", self.on_popup_menu)
60 self.icon.connect("activate", self.on_activate)
60 self.icon.connect("activate", self.on_show_configure)
6161
6262 self.connect("show-notify", self.on_show_notify)
6363
7878
7979 # Signal Handlers ----
8080
81 def on_activate(self, widget, data=None):
82 self.app.show_abbr_selector()
81 #def on_activate(self, widget, data=None):
82 # self.app.show_abbr_selector()
8383
8484 def on_popup_menu(self, status_icon, button, activate_time, data=None):
8585 # Main Menu items
179179 Grab a specific hotkey in the given window
180180 """
181181 logger.debug("Grabbing hotkey: %r %r", modifiers, key)
182 keycode = self.__lookupKeyCode(key)
183 mask = 0
184 for mod in modifiers:
185 mask |= self.modMasks[mod]
186
187 window.grab_key(keycode, mask, True, X.GrabModeAsync, X.GrabModeAsync)
188 window.grab_key(keycode, mask|self.modMasks[Key.NUMLOCK], True, X.GrabModeAsync, X.GrabModeAsync)
189 window.grab_key(keycode, mask|self.modMasks[Key.CAPSLOCK], True, X.GrabModeAsync, X.GrabModeAsync)
190 window.grab_key(keycode, mask|self.modMasks[Key.CAPSLOCK]|self.modMasks[Key.NUMLOCK], True, X.GrabModeAsync, X.GrabModeAsync)
182 try:
183 keycode = self.__lookupKeyCode(key)
184 mask = 0
185 for mod in modifiers:
186 mask |= self.modMasks[mod]
187
188 window.grab_key(keycode, mask, True, X.GrabModeAsync, X.GrabModeAsync)
189
190 if Key.NUMLOCK in self.modMasks:
191 window.grab_key(keycode, mask|self.modMasks[Key.NUMLOCK], True, X.GrabModeAsync, X.GrabModeAsync)
192
193 if Key.CAPSLOCK in self.modMasks:
194 window.grab_key(keycode, mask|self.modMasks[Key.CAPSLOCK], True, X.GrabModeAsync, X.GrabModeAsync)
195
196 if Key.CAPSLOCK in self.modMasks and Key.NUMLOCK in self.modMasks:
197 window.grab_key(keycode, mask|self.modMasks[Key.CAPSLOCK]|self.modMasks[Key.NUMLOCK], True, X.GrabModeAsync, X.GrabModeAsync)
198
199 except Exception, e:
200 logger.warn("Failed to grab hotkey %r %r: %s", modifiers, key, str(e))
191201
192202 def grab_hotkey(self, item):
193203 """
234244 Ungrab a specific hotkey in the given window
235245 """
236246 logger.debug("Ungrabbing hotkey: %r %r", modifiers, key)
237 keycode = self.__lookupKeyCode(key)
238 mask = 0
239 for mod in modifiers:
240 mask |= self.modMasks[mod]
241
242 window.ungrab_key(keycode, mask)
243 window.ungrab_key(keycode, mask|self.modMasks[Key.NUMLOCK])
244 window.ungrab_key(keycode, mask|self.modMasks[Key.CAPSLOCK])
245 window.ungrab_key(keycode, mask|self.modMasks[Key.CAPSLOCK]|self.modMasks[Key.NUMLOCK])
246
247 try:
248 keycode = self.__lookupKeyCode(key)
249 mask = 0
250 for mod in modifiers:
251 mask |= self.modMasks[mod]
252
253 window.ungrab_key(keycode, mask)
254
255 if Key.NUMLOCK in self.modMasks:
256 window.ungrab_key(keycode, mask|self.modMasks[Key.NUMLOCK])
257
258 if Key.CAPSLOCK in self.modMasks:
259 window.ungrab_key(keycode, mask|self.modMasks[Key.CAPSLOCK])
260
261 if Key.CAPSLOCK in self.modMasks and Key.NUMLOCK in self.modMasks:
262 window.ungrab_key(keycode, mask|self.modMasks[Key.CAPSLOCK]|self.modMasks[Key.NUMLOCK])
263 except Exception, e:
264 logger.warn("Failed to ungrab hotkey %r %r: %s", modifiers, key, str(e))
265
247266 def lookup_string(self, keyCode, shifted, numlock, altGrid):
248267 if keyCode == 0:
249268 return "<unknown>"
250269
251270 keySym = self.localDisplay.keycode_to_keysym(keyCode, 0)
252271
253 if keySym in XK_TO_AK_NUMLOCKED and numlock:
272 if keySym in XK_TO_AK_NUMLOCKED and numlock and not (numlock and shifted):
254273 return XK_TO_AK_NUMLOCKED[keySym]
255274
256275 elif keySym in XK_TO_AK_MAP:
264283 except ValueError:
265284 return "<code%d>" % keyCode
266285
267 def send_string_clipboard(self, string):
286 def send_string_clipboard(self, string, pasteCommand):
268287 logger.debug("Sending string: %r", string)
269
270 if common.USING_QT:
271 self.sem = threading.Semaphore(0)
272 self.app.exec_in_main(self.__fillSelection, string)
273 self.sem.acquire()
274 else:
275 self.__fillSelection(string)
276
277 focus = self.localDisplay.get_input_focus().focus
278 xtest.fake_input(focus, X.ButtonPress, X.Button2)
279 xtest.fake_input(focus, X.ButtonRelease, X.Button2)
288
289 if pasteCommand is None:
290 if common.USING_QT:
291 self.sem = threading.Semaphore(0)
292 self.app.exec_in_main(self.__fillSelection, string)
293 self.sem.acquire()
294 else:
295 self.__fillSelection(string)
296
297 focus = self.localDisplay.get_input_focus().focus
298 xtest.fake_input(focus, X.ButtonPress, X.Button2)
299 xtest.fake_input(focus, X.ButtonRelease, X.Button2)
300
301 else:
302 if common.USING_QT:
303 self.sem = threading.Semaphore(0)
304 self.app.exec_in_main(self.__fillClipboard, string)
305 self.sem.acquire()
306 else:
307 self.__fillClipboard(string)
308
309 self.mediator.send_string(pasteCommand)
310
280311 logger.debug("Send via clipboard done")
281312
282313 def __fillSelection(self, string):
284315 self.clipBoard.setText(string, QClipboard.Selection)
285316 self.sem.release()
286317 else:
318 gtk.gdk.threads_enter()
287319 self.selection.set_text(string.encode("utf-8"))
320 gtk.gdk.threads_leave()
321
322 def __fillClipboard(self, string):
323 if common.USING_QT:
324 self.clipBoard.setText(string, QClipboard.Clipboard)
325 self.sem.release()
326 else:
327 gtk.gdk.threads_enter()
328 self.clipBoard.set_text(string.encode("utf-8"))
329 gtk.gdk.threads_leave()
288330
289331 def begin_send(self):
290332 self.queuedEvents = []
303345 elif event.type == X.KeyRelease:
304346 self.__sendKeyReleaseEvent(event.detail, event.state)
305347 self.localDisplay.flush()
348
349 def grab_keyboard(self):
350 t = threading.Thread(target=self.__grab_keyboard)
351 t.start()
352
353 def __grab_keyboard(self):
354 self.dpyLock.acquire()
355 self.rootWindow.grab_keyboard(True, X.GrabModeAsync, X.GrabModeAsync, X.CurrentTime)
356 self.localDisplay.flush()
357 self.dpyLock.release()
358
359 def ungrab_keyboard(self):
360 self.dpyLock.acquire()
361 self.localDisplay.ungrab_keyboard(X.CurrentTime)
362 self.localDisplay.flush()
363 self.dpyLock.release()
364
365 def check_string_mapping(self, string):
366 badChars = []
367 for char in string:
368 keyCodeList = self.localDisplay.keysym_to_keycodes(ord(char))
369 if len(keyCodeList) == 0:
370 badChars.append(char)
371
372 return badChars
306373
307374 def send_string(self, string):
308375 """
310377 """
311378 logger.debug("Sending string: %r", string)
312379 for char in string:
313 keyCodeList = self.localDisplay.keysym_to_keycodes(ord(char))
314 if len(keyCodeList) > 0:
315 keyCode, offset = keyCodeList[0]
316 if offset == 0:
317 self.__sendKeyCode(keyCode)
318 if offset == 1:
319 self.__sendKeyCode(keyCode, self.modMasks[Key.SHIFT])
320 if offset == 4:
321 self.__sendKeyCode(keyCode, self.modMasks[Key.ALT_GR])
322 else:
323 self.send_unicode_char(char)
380 try:
381 keyCodeList = self.localDisplay.keysym_to_keycodes(ord(char))
382 if len(keyCodeList) > 0:
383 keyCode, offset = keyCodeList[0]
384 if offset == 0:
385 self.__sendKeyCode(keyCode)
386 if offset == 1:
387 self.__sendKeyCode(keyCode, self.modMasks[Key.SHIFT])
388 if offset == 4:
389 self.__sendKeyCode(keyCode, self.modMasks[Key.ALT_GR])
390 else:
391 logger.warn("Char %r not in keymap - not sending", char)
392 except Exception, e:
393 logger.warn("Error sending char %r: %s", char, str(e))
324394
325395 def send_key(self, keyName):
326396 """
339409 Send a modified key (e.g. when emulating a hotkey)
340410 """
341411 logger.debug("Send modified key: modifiers: %s key: %s", modifiers, keyName)
342 """for modifier in modifiers:
343 modifierCode = self.keyCodes[modifier.lower()]
344 xtest.fake_input(self.rootWindow, X.KeyPress, modifierCode)
345
346 keyCode = self.__lookupKeyCode(keyName)
347 xtest.fake_input(self.rootWindow, X.KeyPress, keyCode)
348 xtest.fake_input(self.rootWindow, X.KeyRelease, keyCode)
349
350 for modifier in modifiers:
351 modifierCode = self.keyCodes[modifier.lower()]
352 xtest.fake_input(self.rootWindow, X.KeyRelease, modifierCode)"""
353 mask = 0
354 for mod in modifiers:
355 mask |= self.modMasks[mod]
356 keyCode = self.__lookupKeyCode(keyName)
357 self.__sendKeyCode(keyCode, mask)
358
359 def send_unicode_char(self, char):
360 logger.debug("Send unicode char: %s", char)
361 self.send_modified_key('u', [Key.CONTROL, Key.SHIFT])
362
363 keyDigits = "%04x" % ord(char)
364
365 for digit in keyDigits:
366 keyCode = self.__lookupKeyCode(digit)
367 xtest.fake_input(self.rootWindow, X.KeyPress, keyCode)
368 xtest.fake_input(self.rootWindow, X.KeyRelease, keyCode)
369
370 keyCode = self.__lookupKeyCode('<enter>')
371 xtest.fake_input(self.rootWindow, X.KeyPress, keyCode)
372 xtest.fake_input(self.rootWindow, X.KeyRelease, keyCode)
412 try:
413 mask = 0
414 for mod in modifiers:
415 mask |= self.modMasks[mod]
416 keyCode = self.__lookupKeyCode(keyName)
417 self.__sendKeyCode(keyCode, mask)
418 except Exception, e:
419 logger.warn("Error sending modified key %r %r: %s", modifiers, keyName, str(e))
373420
374421 def send_mouse_click(self, xCoord, yCoord, button, relative):
375422 # Get current pointer position so we can return it there
630677 def __init__(self, mediator, app):
631678 XInterfaceBase.__init__(self, mediator, app)
632679 self.recordDisplay = display.Display()
680 self.__locksChecked = False
633681
634682 # Check for record extension
635683 if not self.recordDisplay.has_extension("RECORD"):
670718 if reply.category != record.FromServer:
671719 return
672720 if reply.client_swapped:
673 print "* received swapped protocol data, cowardly ignored"
674721 return
675722 if not len(reply.data) or ord(reply.data[0]) < 2:
676723 # not an event
680727 while len(data):
681728 event, data = rq.EventField(None).parse_binary_value(data, self.recordDisplay.display, None, None)
682729 if event.type == X.KeyPress:
730
731 # On first keypress, check initial state of the locks
732 if not self.__locksChecked:
733 if Key.NUMLOCK in self.modMasks:
734 state = (event.state & self.modMasks[Key.NUMLOCK]) != 0
735 self.mediator.set_modifier_state(Key.NUMLOCK, state)
736 if Key.CAPSLOCK in self.modMasks:
737 state = (event.state & self.modMasks[Key.CAPSLOCK]) != 0
738 self.mediator.set_modifier_state(Key.CAPSLOCK, state)
739 self.__locksChecked = True
740
683741 self._handleKeyPress(event.detail)
684742 elif event.type == X.KeyRelease:
685743 self._handleKeyRelease(event.detail)
793851 XK.XK_End : Key.END,
794852 XK.XK_Page_Up : Key.PAGE_UP,
795853 XK.XK_Page_Down : Key.PAGE_DOWN,
796 XK.XK_KP_Insert : Key.INSERT,
797 XK.XK_KP_Delete : Key.DELETE,
798 XK.XK_KP_End : Key.END,
799 XK.XK_KP_Down : Key.DOWN,
800 XK.XK_KP_Page_Down : Key.PAGE_DOWN,
801 XK.XK_KP_Left : Key.LEFT,
802 XK.XK_KP_5 : "<unknown>",
803 XK.XK_KP_Right : Key.RIGHT,
804 XK.XK_KP_Home : Key.HOME,
805 XK.XK_KP_Up: Key.UP,
806 XK.XK_KP_Page_Up : Key.PAGE_UP,
807 XK.XK_KP_Divide : "/",
808 XK.XK_KP_Multiply : "*",
809 XK.XK_KP_Add : "+",
810 XK.XK_KP_Subtract : "-",
854 XK.XK_KP_Insert : Key.NP_INSERT,
855 XK.XK_KP_Delete : Key.NP_DELETE,
856 XK.XK_KP_End : Key.NP_END,
857 XK.XK_KP_Down : Key.NP_DOWN,
858 XK.XK_KP_Page_Down : Key.NP_PAGE_DOWN,
859 XK.XK_KP_Left : Key.NP_LEFT,
860 XK.XK_KP_Begin : Key.NP_5,
861 XK.XK_KP_Right : Key.NP_RIGHT,
862 XK.XK_KP_Home : Key.NP_HOME,
863 XK.XK_KP_Up: Key.NP_UP,
864 XK.XK_KP_Page_Up : Key.NP_PAGE_UP,
865 XK.XK_KP_Divide : Key.NP_DIVIDE,
866 XK.XK_KP_Multiply : Key.NP_MULTIPLY,
867 XK.XK_KP_Add : Key.NP_ADD,
868 XK.XK_KP_Subtract : Key.NP_SUBTRACT,
811869 XK.XK_KP_Enter : Key.ENTER,
812870 }
813871
820878 XK.XK_KP_Down : "2",
821879 XK.XK_KP_Page_Down : "3",
822880 XK.XK_KP_Left : "4",
823 XK.XK_KP_5 : "5",
881 XK.XK_KP_Begin : "5",
824882 XK.XK_KP_Right : "6",
825883 XK.XK_KP_Home : "7",
826884 XK.XK_KP_Up: "8",
2020 ATSPI_INTERFACE = "AT-SPI"
2121
2222 INTERFACES = [X_RECORD_INTERFACE, X_EVDEV_INTERFACE, ATSPI_INTERFACE]
23 CURRENT_INTERFACE = None
2324
2425 # Key codes enumeration
2526 class Key:
3031 DOWN = "<down>"
3132 BACKSPACE = "<backspace>"
3233 TAB = "<tab>"
33 #RETURN = '\n'
3434 ENTER = "<enter>"
35 #SPACE = ' '
3635 SCROLL_LOCK = "<scroll_lock>"
3736 PRINT_SCREEN = "<print_screen>"
3837 PAUSE = "<pause>"
6968 PAGE_UP = "<page_up>"
7069 PAGE_DOWN = "<page_down>"
7170
71 # Numpad
72 NP_INSERT = "<np_insert>"
73 NP_DELETE = "<np_delete>"
74 NP_HOME = "<np_home>"
75 NP_END = "<np_end>"
76 NP_PAGE_UP = "<np_page_up>"
77 NP_PAGE_DOWN = "<np_page_down>"
78 NP_LEFT = "<np_left>"
79 NP_RIGHT = "<np_right>"
80 NP_UP = "<np_up>"
81 NP_DOWN = "<np_down>"
82 NP_DIVIDE = "<np_divide>"
83 NP_MULTIPLY = "<np_multiply>"
84 NP_ADD = "<np_add>"
85 NP_SUBTRACT = "<np_subtract>"
86 NP_5 = "<np_5>"
87
7288 @classmethod
7389 def is_key(klass, keyString):
7490 # Key strings must be treated as case insensitive - always convert to lowercase
123139 elif self.interfaceType == X_EVDEV_INTERFACE:
124140 self.interface = EvDevInterface(self, service.app)
125141 else:
126 self.interface = AtSpiInterface(self, service.app)
142 self.interface = AtSpiInterface(self, service.app)
143
144 global CURRENT_INTERFACE
145 CURRENT_INTERFACE = self.interface
127146 self.interface.start()
128147 self.start()
129148
133152 #self.join()
134153
135154 # Callback methods for Interfaces ----
155
156 def set_modifier_state(self, modifier, state):
157 _logger.debug("Set modifier %s to %r", modifier, state)
158 self.modifiers[modifier] = state
136159
137160 def handle_modifier_down(self, modifier):
138161 """
195218 target.handle_mouseclick(rootX, rootY, relX, relY, button, self.interface.get_window_title())
196219
197220 # Methods for expansion service ----
221
222 def check_string_mapping(self, string):
223 return self.interface.check_string_mapping(string)
198224
199225 def send_string(self, string):
200226 """
238264
239265 self.release_lock()
240266
241 def paste_string(self, string):
267 def paste_string(self, string, pasteCommand):
242268 if len(string) > 0:
243269 self.acquire_lock()
244270 _logger.debug("Send via clipboard")
245 self.interface.send_string_clipboard(string)
271 self.interface.send_string_clipboard(string, pasteCommand)
246272 self.release_lock()
247273
248274 def remove_string(self, string):
362388 self.targetParent = parent
363389
364390 def start(self):
391 # In QT version, sometimes the mouseclick event arrives before we finish initialising
392 # sleep slightly to prevent this
393 time.sleep(0.1)
365394 IoMediator.listeners.append(self)
395 CURRENT_INTERFACE.grab_keyboard()
366396
367397 def handle_keypress(self, key, windowName=""):
368398 if not key in MODIFIERS:
369399 IoMediator.listeners.remove(self)
370400 self.targetParent.set_key(key)
401 CURRENT_INTERFACE.ungrab_keyboard()
371402
372403 def handle_hotkey(self, key, modifiers, windowName):
373404 pass
374405
375406 def handle_mouseclick(self, rootX, rootY, relX, relY, button, windowTitle):
376 pass
407 IoMediator.listeners.remove(self)
408 CURRENT_INTERFACE.ungrab_keyboard()
409 self.targetParent.cancel_grab()
377410
378411
379412 class Recorder(KeyGrabber):
2121 from scripting import Store
2222
2323 DEFAULT_WORDCHAR_REGEX = '[\w]'
24
25 def get_value_or_default(jsonData, key, default):
26 if key in jsonData:
27 return jsonData[key]
28 else:
29 return default
2430
2531 class AbstractAbbreviation:
2632 """
208214
209215 def get_hotkey_string(self, key=None, modifiers=None):
210216 if key is None and modifiers is None:
211 if self.hotKey is None:
217 if TriggerMode.HOTKEY not in self.modes:
212218 return ""
213219
214220 key = self.hotKey
389395 PREDICTIVE = 2
390396 HOTKEY = 3
391397
398 class SendMode:
399 """
400 Enumeration class for phrase send modes
401
402 KEYBOARD: Send using key events
403 CB_CTRL_V: Send via clipboard and paste with Ctrl+v
404 CB_CTRL_SHIFT_V: Send via clipboard and paste with Ctrl+Shift+v
405 SELECTION: Send via X selection and paste with middle mouse button
406 """
407 KEYBOARD = "kb"
408 CB_CTRL_V = Key.CONTROL + "+v"
409 CB_CTRL_SHIFT_V = Key.CONTROL + '+' + Key.SHIFT + "+v"
410 CB_SHIFT_INSERT = Key.SHIFT + '+' + Key.INSERT
411 SELECTION = None
412
413 SEND_MODES = {
414 "Keyboard" : SendMode.KEYBOARD,
415 "Clipboard (Ctrl+V)" : SendMode.CB_CTRL_V,
416 "Clipboard (Ctrl+Shift+V)" : SendMode.CB_CTRL_SHIFT_V,
417 "Clipboard (Shift+Insert)" : SendMode.CB_SHIFT_INSERT,
418 "Mouse Selection" : SendMode.SELECTION
419 }
392420
393421 class Phrase(AbstractAbbreviation, AbstractHotkey, AbstractWindowFilter):
394422 """
408436 self.matchCase = False
409437 self.parent = None
410438 self.showInTrayMenu = False
439 self.sendMode = SendMode.KEYBOARD
411440
412441 def get_serializable(self):
413442 d = {
422451 "showInTrayMenu": self.showInTrayMenu,
423452 "abbreviation": AbstractAbbreviation.get_serializable(self),
424453 "hotkey": AbstractHotkey.get_serializable(self),
425 "filter": AbstractWindowFilter.get_serializable(self)
454 "filter": AbstractWindowFilter.get_serializable(self),
455 "sendMode" : self.sendMode
426456 }
427457 return d
428458
437467 self.matchCase = data["matchCase"]
438468 self.parent = parent
439469 self.showInTrayMenu = data["showInTrayMenu"]
470 self.sendMode = get_value_or_default(data, "sendMode", SendMode.KEYBOARD)
440471 AbstractAbbreviation.load_from_serialized(self, data["abbreviation"])
441472 AbstractHotkey.load_from_serialized(self, data["hotkey"])
442473 AbstractWindowFilter.load_from_serialized(self, data["filter"])
274274 QWidget.__init__(self)
275275 phrasepage.Ui_PhrasePage.__init__(self)
276276 self.setupUi(self)
277
278 self.initialising = True
279 l = model.SEND_MODES.keys()
280 l.sort()
281 for val in l:
282 self.sendModeCombo.addItem(val)
283 self.initialising = False
277284
278285 def load(self, phrase):
279286 self.currentPhrase = phrase
280287 self.phraseText.setPlainText(phrase.phrase)
281288 self.showInTrayCheckbox.setChecked(phrase.showInTrayMenu)
289
290 for k, v in model.SEND_MODES.iteritems():
291 if v == phrase.sendMode:
292 self.sendModeCombo.setCurrentIndex(self.sendModeCombo.findText(k))
293 break
282294
283295 # TODO - re-enable me if restoring predictive functionality
284296 #self.predictCheckbox.setChecked(model.TriggerMode.PREDICTIVE in phrase.modes)
290302 self.settingsWidget.save()
291303 self.currentPhrase.phrase = unicode(self.phraseText.toPlainText())
292304 self.currentPhrase.showInTrayMenu = self.showInTrayCheckbox.isChecked()
305
306 self.currentPhrase.sendMode = model.SEND_MODES[str(self.sendModeCombo.currentText())]
293307
294308 # TODO - re-enable me if restoring predictive functionality
295309 #if self.predictCheckbox.isChecked():
307321 phrase = unicode(self.phraseText.toPlainText())
308322 if not validate(not EMPTY_FIELD_REGEX.match(phrase), i18n("The phrase content can't be empty."),
309323 self.phraseText, self.topLevelWidget()): return False
310
324
325 badChars = self.topLevelWidget().app.service.mediator.check_string_mapping(phrase)
326
327 if len(badChars) > 0 and model.SEND_MODES[str(self.sendModeCombo.currentText())] == model.SendMode.KEYBOARD:
328 badCharPrint = u'[ '
329 for char in badChars:
330 badCharPrint += u"'"
331 badCharPrint += unicode(char)
332 badCharPrint += u"'"
333 badCharPrint += u', '
334 badCharPrint = badCharPrint[:-2]
335 badCharPrint += u' ]'
336
337 KMessageBox.information(self.topLevelWidget(), i18n("The phrase text contains characters that are not in your current keyboard map:\n" ) + badCharPrint +
338 i18n("\nIf you don't choose a different paste mode, these characters won't be pasted."))
339
311340 return True
312341
313342 def set_dirty(self):
340369
341370 def on_showInTrayCheckbox_stateChanged(self, state):
342371 self.set_dirty()
372
373 def on_sendModeCombo_currentIndexChanged(self, index):
374 if not self.initialising:
375 self.set_dirty()
343376
344377
345378 import folderpage
439472
440473 self.cutCopiedItems = []
441474
442 self.treeWidget.setColumnWidth(0, 150)
443 self.treeWidget.setColumnWidth(1, 50)
444 self.treeWidget.setColumnWidth(2, 100)
475 [self.treeWidget.setColumnWidth(x, ConfigManager.SETTINGS[COLUMN_WIDTHS][x]) for x in range(3)]
445476
446477 def populate_tree(self, config):
447478 factory = WidgetItemFactory(config.folders)
453484 self.treeWidget.sortItems(0, Qt.AscendingOrder)
454485 self.treeWidget.setCurrentItem(self.treeWidget.topLevelItem(0))
455486 self.on_treeWidget_itemSelectionChanged()
487
488 def set_splitter(self, winSize):
489 pos = ConfigManager.SETTINGS[HPANE_POSITION]
490 self.splitter.setSizes([pos, winSize.width() - pos])
456491
457492 def set_dirty(self, dirty):
458493 self.dirty = dirty
838873 self.redo.setEnabled(False)
839874
840875 self.centralWidget.populate_tree(self.app.configManager)
876 self.centralWidget.set_splitter(self.size())
841877
842878 self.setAutoSaveSettings()
843879
929965 # ---- Signal handlers ----
930966
931967 def queryClose(self):
968 ConfigManager.SETTINGS[HPANE_POSITION] = self.centralWidget.splitter.sizes()[0] + 4
969 l = []
970 for x in xrange(3):
971 l.append(self.centralWidget.treeWidget.columnWidth(x))
972 ConfigManager.SETTINGS[COLUMN_WIDTHS] = l
973
932974 if self.is_dirty():
933975 if self.centralWidget.promptToSave():
934976 return False
134134
135135 def __valid(self):
136136 configManager = self.parentWidget().topLevelWidget().app.configManager
137 if not validate(configManager.check_abbreviation_unique(self.get_abbr(), self.targetItem),
138 i18n("The abbreviation is already in use.\nAbbreviations must be unique."),
139 self.widget.abbrLineEdit, self): return False
140
141 if not validate(not EMPTY_FIELD_REGEX.match(self.get_abbr()), i18n("Abbreviation can't be empty."),
137
138 unique, itemName = configManager.check_abbreviation_unique(self.get_abbr(), self.targetItem)
139 if not validate(unique, i18n("The abbreviation is already in use by '") + itemName + "'.",
140 self.widget.abbrLineEdit, self): return False
141
142 if not validate(not EMPTY_FIELD_REGEX.match(self.get_abbr()), i18n("The abbreviation can't be empty."),
142143 self.widget.abbrLineEdit, self): return False
143
144
145 substrUnique, itemName = configManager.check_abbreviation_substring(self.get_abbr(), self.targetItem)
146 if not substrUnique:
147 KMessageBox.information(self, i18n("The abbreviation may conflict with the one defined for '") + itemName + "'.")
148
144149 return True
145150
146151
228233 self._setKeyLabel(key)
229234 self.key = key
230235 self.widget.setButton.setEnabled(True)
236
237 def cancel_grab(self):
238 self.widget.setButton.setEnabled(True)
239 self._setKeyLabel(self.key)
231240
232241 def build_modifiers(self):
233242 modifiers = []
258267 def __valid(self):
259268 configManager = self.parentWidget().topLevelWidget().app.configManager
260269 modifiers = self.build_modifiers()
261
262 if not validate(configManager.check_hotkey_unique(modifiers, self.key, self.targetItem),
263 i18n("The hotkey is already in use.\nHotkeys must be unique."), None,
270
271 unique, itemName = configManager.check_hotkey_unique(modifiers, self.key, self.targetItem)
272 if not validate(unique, i18n("The hotkey is already in use by '") + itemName + "'.", None,
264273 self): return False
265274
266 if not validate(self.key is not None, i18n("You must specify a key for the Hotkey."),
275 if not validate(self.key is not None, i18n("You must specify a key for the hotkey."),
267276 None, self): return False
268277
269 if not validate(len(modifiers) > 0, i18n("You must select at least one modifier for the Hotkey"),
278 if not validate(len(modifiers) > 0, i18n("You must select at least one modifier for the hotkey"),
270279 None, self): return False
271280
272281 return True
1818 from PyKDE4.kdeui import KNotification, KSystemTrayIcon, KIcon, KStandardAction, KToggleAction
1919 from PyKDE4.kdecore import i18n
2020 from PyQt4.QtCore import SIGNAL
21 from PyQt4.QtGui import QSystemTrayIcon
2122
2223 import popupmenu
2324 from autokey.configmanager import *
3435
3536 if ConfigManager.SETTINGS[SHOW_TRAY_ICON]:
3637 self.icon = KSystemTrayIcon(ICON_FILE)
38 self.icon.connect(self.icon, SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), self.on_activate)
39
3740 self.build_menu()
3841 self.update_tool_tip()
3942 self.icon.show()
8184 def on_quit(self):
8285 self.app.shutdown()
8386
87 def on_activate(self, reason):
88 if reason == QSystemTrayIcon.ActivationReason(QSystemTrayIcon.Trigger):
89 self.on_configure()
90
8491 def on_configure(self):
8592 self.app.show_configure()
8693
00 #!/usr/bin/env python
11 # coding=UTF-8
22 #
3 # Generated by pykdeuic4 from uic/phrasepage.ui on Thu Jan 7 13:58:13 2010
3 # Generated by pykdeuic4 from phrasepage.ui on Thu Apr 15 17:05:34 2010
44 #
55 # WARNING! All changes to this file will be lost.
66 from PyKDE4 import kdecore
1010 class Ui_PhrasePage(object):
1111 def setupUi(self, PhrasePage):
1212 PhrasePage.setObjectName("PhrasePage")
13 PhrasePage.resize(540, 602)
13 PhrasePage.resize(540, 421)
1414 self.verticalLayout_2 = QtGui.QVBoxLayout(PhrasePage)
1515 self.verticalLayout_2.setObjectName("verticalLayout_2")
1616 self.phraseText = KTextEdit(PhrasePage)
2929 self.showInTrayCheckbox = QtGui.QCheckBox(self.settingsGroupBox)
3030 self.showInTrayCheckbox.setObjectName("showInTrayCheckbox")
3131 self.verticalLayout.addWidget(self.showInTrayCheckbox)
32 self.horizontalLayout_2 = QtGui.QHBoxLayout()
33 self.horizontalLayout_2.setObjectName("horizontalLayout_2")
34 self.label = QtGui.QLabel(self.settingsGroupBox)
35 self.label.setObjectName("label")
36 self.horizontalLayout_2.addWidget(self.label)
37 self.sendModeCombo = QtGui.QComboBox(self.settingsGroupBox)
38 self.sendModeCombo.setObjectName("sendModeCombo")
39 self.horizontalLayout_2.addWidget(self.sendModeCombo)
40 spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
41 self.horizontalLayout_2.addItem(spacerItem)
42 self.verticalLayout.addLayout(self.horizontalLayout_2)
3243 self.kseparator = KSeparator(self.settingsGroupBox)
3344 self.kseparator.setObjectName("kseparator")
3445 self.verticalLayout.addWidget(self.kseparator)
4556 self.settingsGroupBox.setTitle(kdecore.i18n("Phrase Settings"))
4657 self.promptCheckbox.setText(kdecore.i18n("Always prompt before pasting this phrase"))
4758 self.showInTrayCheckbox.setText(kdecore.i18n("Show in tray menu"))
59 self.label.setText(kdecore.i18n("Paste using"))
4860
4961 from PyKDE4.kdeui import KSeparator, KTextEdit
5062 from configwindow import SettingsWidget
140140 Provides a simple interface for the display of some basic dialogs to collect information from the user.
141141
142142 This version uses KDialog to integrate well with KDE.
143
144 A note on exit codes: an exit code of 0 indicates that the user clicked OK.
143145 """
144146
145147 def __runKdialog(self, title, args):
158160 @param title: window title for the dialog
159161 @param message: message displayed above the input box
160162 @param default: default value for the input box
163 @return: a tuple containing the exit code and user input
164 @rtype: C{tuple(int, str)}
161165 """
162166 return self.__runKdialog(title, ["--inputbox", message, default])
163167
169173
170174 @param title: window title for the dialog
171175 @param message: message displayed above the password input box
176 @return: a tuple containing the exit code and user input
177 @rtype: C{tuple(int, str)}
172178 """
173179 return self.__runKdialog(title, ["--password", message])
174180
180186
181187 @param options: list of options (strings) for the dialog
182188 @param title: window title for the dialog
183 @param message: message displayed above the combobox
189 @param message: message displayed above the combobox
190 @return: a tuple containing the exit code and user choice
191 @rtype: C{tuple(int, str)}
184192 """
185193 return self.__runKdialog(title, ["--combobox", message] + options)
186194
194202 @param title: window title for the dialog
195203 @param message: message displayed above the list
196204 @param default: default value to be selected
205 @return: a tuple containing the exit code and user choice
206 @rtype: C{tuple(int, str)}
197207 """
198208
199209 choices = []
222232 @param title: window title for the dialog
223233 @param message: message displayed above the list
224234 @param defaults: list of default values to be selected
235 @return: a tuple containing the exit code and user choice
236 @rtype: C{tuple(int, str)}
225237 """
226238
227239 choices = []
254266 @param initialDir: starting directory for the file dialog
255267 @param fileTypes: file type filter expression
256268 @param rememberAs: gives an ID to this file dialog, allowing it to open at the last used path next time
269 @return: a tuple containing the exit code and file path
270 @rtype: C{tuple(int, str)}
257271 """
258272 if rememberAs is not None:
259273 return self.__runKdialog(title, ["--getopenfilename", initialDir, fileTypes, ":" + rememberAs])
270284 @param initialDir: starting directory for the file dialog
271285 @param fileTypes: file type filter expression
272286 @param rememberAs: gives an ID to this file dialog, allowing it to open at the last used path next time
287 @return: a tuple containing the exit code and file path
288 @rtype: C{tuple(int, str)}
273289 """
274290 if rememberAs is not None:
275291 return self.__runKdialog(title, ["--getsavefilename", initialDir, fileTypes, ":" + rememberAs])
285301 @param title: window title for the dialog
286302 @param initialDir: starting directory for the directory chooser dialog
287303 @param rememberAs: gives an ID to this file dialog, allowing it to open at the last used path next time
304 @return: a tuple containing the exit code and chosen path
305 @rtype: C{tuple(int, str)}
288306 """
289307 if rememberAs is not None:
290308 return self.__runKdialog(title, ["--getexistingdirectory", initialDir, ":" + rememberAs])
298316 Usage: C{dialog.choose_colour(title="Select Colour")}
299317
300318 @param title: window title for the dialog
319 @return: a tuple containing the exit code and colour
320 @rtype: C{tuple(int, str)}
301321 """
302322 return self.__runKdialog(title, ["--getcolor"])
303323
319339
320340 @param command: command to be executed (including any arguments) - e.g. "ls -l"
321341 @param getOutput: whether to capture the (stdout) output of the command
322 @raises subprocess.CalledProcessError: if the command returns a non-zero exit code
342 @raise subprocess.CalledProcessError: if the command returns a non-zero exit code
323343 """
324344 if getOutput:
325345 p = subprocess.Popen(command, shell=True, bufsize=-1, stdout=subprocess.PIPE)
351371 Provides a simple interface for the display of some basic dialogs to collect information from the user.
352372
353373 This version uses Zenity to integrate well with GNOME.
374
375 A note on exit codes: an exit code of 0 indicates that the user clicked OK.
354376 """
355377
356378 def __runZenity(self, title, args):
369391 @param title: window title for the dialog
370392 @param message: message displayed above the input box
371393 @param default: default value for the input box
394 @return: a tuple containing the exit code and user input
395 @rtype: C{tuple(int, str)}
372396 """
373397 return self.__runZenity(title, ["--entry", "--text", message, "--entry-text", default])
374398
380404
381405 @param title: window title for the dialog
382406 @param message: message displayed above the password input box
407 @return: a tuple containing the exit code and user input
408 @rtype: C{tuple(int, str)}
383409 """
384410 return self.__runZenity(title, ["--entry", "--text", message, "--hide-text"])
385411
405431 @param title: window title for the dialog
406432 @param message: message displayed above the list
407433 @param default: default value to be selected
434 @return: a tuple containing the exit code and user choice
435 @rtype: C{tuple(int, str)}
408436 """
409437
410438 choices = []
433461 @param title: window title for the dialog
434462 @param message: message displayed above the list
435463 @param defaults: list of default values to be selected
464 @return: a tuple containing the exit code and user choice
465 @rtype: C{tuple(int, str)}
436466 """
437467
438468 choices = []
463493 Usage: C{dialog.open_file(title="Open File")}
464494
465495 @param title: window title for the dialog
496 @return: a tuple containing the exit code and file path
497 @rtype: C{tuple(int, str)}
466498 """
467499 #if rememberAs is not None:
468500 # return self.__runZenity(title, ["--getopenfilename", initialDir, fileTypes, ":" + rememberAs])
476508 Usage: C{dialog.save_file(title="Save As")}
477509
478510 @param title: window title for the dialog
511 @return: a tuple containing the exit code and file path
512 @rtype: C{tuple(int, str)}
479513 """
480514 #if rememberAs is not None:
481515 # return self.__runZenity(title, ["--getsavefilename", initialDir, fileTypes, ":" + rememberAs])
489523 Usage: C{dialog.choose_directory(title="Select Directory")}
490524
491525 @param title: window title for the dialog
526 @return: a tuple containing the exit code and path
527 @rtype: C{tuple(int, str)}
492528 """
493529 #if rememberAs is not None:
494530 # return self.__runZenity(title, ["--getexistingdirectory", initialDir, ":" + rememberAs])
514550 @param title: window title for the dialog
515551 @param format: format of date to be returned
516552 @param date: initial date as YYYY-MM-DD, otherwise today
517
518 Use the dialog's OK button.
519 AutoKey has trouble if you double-click the date.
553 @return: a tuple containing the exit code and date
554 @rtype: C{tuple(int, str)}
520555 """
521556 if re.match(r"[0-9]{4}-[0-9]{2}-[0-9]{2}", date):
522557 year = date[0:4]
556591 Read text from the X selection
557592
558593 Usage: C{clipboard.get_selection()}
594
595 @return: text contents of the mouse selection
596 @rtype: C{str}
559597 """
560598 self.__execAsync(self.__getSelection)
561599 return str(self.text)
583621 Read text from the clipboard
584622
585623 Usage: C{clipboard.get_clipboard()}
624
625 @return: text contents of the clipboard
626 @rtype: C{str}
586627 """
587628 self.__execAsync(self.__getClipboard)
588629 return str(self.text)
619660 self.__fillSelection(contents)
620661
621662 def __fillSelection(self, string):
663 gtk.gdk.threads_enter()
622664 self.selection.set_text(string.encode("utf-8"))
665 gtk.gdk.threads_leave()
623666 #self.sem.release()
624667
625668 def get_selection(self):
627670 Read text from the X selection
628671
629672 Usage: C{clipboard.get_selection()}
673
674 @return: text contents of the mouse selection
675 @rtype: C{str}
630676 """
631677 self.__execAsync(self.selection.request_text, self.__receive)
632678 return self.text.decode("utf-8")
646692 self.__fillClipboard(contents)
647693
648694 def __fillClipboard(self, string):
695 gtk.gdk.threads_enter()
649696 self.clipBoard.set_text(string.encode("utf-8"))
697 gtk.gdk.threads_leave()
650698 #self.sem.release()
651699
652700 def get_clipboard(self):
654702 Read text from the clipboard
655703
656704 Usage: C{clipboard.get_clipboard()}
705
706 @return: text contents of the clipboard
707 @rtype: C{str}
657708 """
658709 self.__execAsync(self.clipBoard.request_text, self.__receive)
659710 return self.text.decode("utf-8")
689740
690741 @param title: title to match against (as a regular expression)
691742 @param timeOut: period (seconds) to wait before giving up
743 @rtype: boolean
692744 """
693745 regex = re.compile(title)
694746 waited = 0
711763
712764 @param title: title to match against (as a regular expression)
713765 @param timeOut: period (seconds) to wait before giving up
766 @rtype: boolean
714767 """
715768 regex = re.compile(title)
716769 waited = 0
816869
817870 Usage: C{window.get_active_geometry()}
818871
819 Returns a 4-tuple containing the x-origin, y-origin, width and height of the window (in pixels)
872 @return: a 4-tuple containing the x-origin, y-origin, width and height of the window (in pixels)
873 @rtype: C{tuple(int, int, int, int)}
820874 """
821875 active = self.mediator.interface.get_window_title()
822876 result, output = self.__runWmctrl(["-l", "-G"])
894948 @param description: description for the phrase
895949 @param abbr: the abbreviation that will trigger the expansion
896950 @param contents: the expansion text
897 @raises Exception: if the specified abbreviation is not unique
951 @raise Exception: if the specified abbreviation is not unique
898952 """
899953 if not self.configManager.check_abbreviation_unique(abbr, None):
900954 raise Exception("The specified abbreviation is already in use")
915969 text. Modifiers must be given as a list of strings, with the following
916970 values permitted:
917971
918 <control>
972 <ctrl>
919973 <alt>
920974 <super>
921975 <shift>
927981 @param modifiers: modifiers to use with the hotkey (as a list)
928982 @param key: the hotkey
929983 @param contents: the expansion text
930 @raises Exception: if the specified hotkey is not unique
984 @raise Exception: if the specified hotkey is not unique
931985 """
932986 modifiers.sort()
933987 if not self.configManager.check_hotkey_unique(modifiers, key, None):
9461000 Usage: C{engine.run_script(description)}
9471001
9481002 @param description: description of the script to run
949 @raises Exception: if the specified script does not exist
1003 @raise Exception: if the specified script does not exist
9501004 """
9511005 targetScript = None
9521006 for item in self.configManager.allItems:
309309
310310 mediator.interface.begin_send()
311311 mediator.send_backspace(expansion.backspaces)
312 mediator.send_string(expansion.string)
312 if phrase.sendMode == model.SendMode.KEYBOARD:
313 mediator.send_string(expansion.string)
314 else:
315 mediator.paste_string(expansion.string, phrase.sendMode)
313316 mediator.interface.finish_send()
314317
315318 self.lastExpansion = expansion
66 <x>0</x>
77 <y>0</y>
88 <width>540</width>
9 <height>602</height>
9 <height>421</height>
1010 </rect>
1111 </property>
1212 <property name="windowTitle">
4747 </widget>
4848 </item>
4949 <item>
50 <layout class="QHBoxLayout" name="horizontalLayout_2">
51 <item>
52 <widget class="QLabel" name="label">
53 <property name="text">
54 <string>Paste using</string>
55 </property>
56 </widget>
57 </item>
58 <item>
59 <widget class="QComboBox" name="sendModeCombo"/>
60 </item>
61 <item>
62 <spacer name="horizontalSpacer">
63 <property name="orientation">
64 <enum>Qt::Horizontal</enum>
65 </property>
66 <property name="sizeHint" stdset="0">
67 <size>
68 <width>40</width>
69 <height>20</height>
70 </size>
71 </property>
72 </spacer>
73 </item>
74 </layout>
75 </item>
76 <item>
5077 <widget class="KSeparator" name="kseparator"/>
5178 </item>
5279 <item>