80
80
<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Node</tt> </tt>
81
81
<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
82
82
<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gettext</tt> </tt>
83
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt>
84
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-name">gettext</tt><tt class="py-op">.</tt><tt class="py-name">textdomain</tt><tt class="py-op">(</tt><tt class="py-string">'screenlets'</tt><tt class="py-op">)</tt> </tt>
85
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-name">gettext</tt><tt class="py-op">.</tt><tt class="py-name">bindtextdomain</tt><tt class="py-op">(</tt><tt class="py-string">'screenlets'</tt><tt class="py-op">,</tt> <tt class="py-string">'/usr/share/locale'</tt><tt class="py-op">)</tt> </tt>
86
<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> </tt>
87
<a name="_"></a><div id="_-def"><a name="L24"></a><tt class="py-lineno"> 24</tt> <a class="py-toggle" href="#" id="_-toggle" onclick="return toggle('_');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#_">_</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
88
</div><div id="_-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_-expanded"><a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">gettext</tt><tt class="py-op">.</tt><tt class="py-name">gettext</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
89
</div><a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
90
<a name="add_menuitem"></a><div id="add_menuitem-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="add_menuitem-toggle" onclick="return toggle('add_menuitem');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#add_menuitem">add_menuitem</a> <tt class="py-op">(</tt><tt class="py-param">menu</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cb_data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
91
</div><div id="add_menuitem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="add_menuitem-expanded"><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt class="py-docstring">"""Convenience function to create a menuitem, connect</tt> </tt>
92
<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"> a callback, and add the menuitem to menu."""</tt> </tt>
93
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">label</tt> <tt class="py-op">==</tt> <tt class="py-string">"-"</tt><tt class="py-op">:</tt> </tt>
94
<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">SeparatorMenuItem</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
95
<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
96
<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
97
<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-0" class="py-name" targets="Function screenlets.menu.add_menuitem_with_item()=screenlets.menu-module.html#add_menuitem_with_item"><a title="screenlets.menu.add_menuitem_with_item" class="py-name" href="#" onclick="return doclink('link-0', 'add_menuitem_with_item', 'link-0');">add_menuitem_with_item</a></tt><tt class="py-op">(</tt><tt id="link-1" class="py-name" targets="Variable screenlets.Screenlet.menu=screenlets.Screenlet-class.html#menu,Module screenlets.menu=screenlets.menu-module.html"><a title="screenlets.Screenlet.menu
98
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-1', 'menu', 'link-1');">menu</a></tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">cb_data</tt><tt class="py-op">)</tt> </tt>
99
</div><a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt>
100
<a name="add_image_menuitem"></a><div id="add_image_menuitem-def"><a name="L36"></a><tt class="py-lineno"> 36</tt> <a class="py-toggle" href="#" id="add_image_menuitem-toggle" onclick="return toggle('add_image_menuitem');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#add_image_menuitem">add_image_menuitem</a> <tt class="py-op">(</tt><tt class="py-param">menu</tt><tt class="py-op">,</tt> <tt class="py-param">stock</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cb_data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
101
</div><div id="add_image_menuitem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="add_image_menuitem-expanded"><a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-docstring">"""Convenience function to create an ImageMenuItem, connect</tt> </tt>
102
<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"> a callback, and add the menuitem to menu."""</tt> </tt>
103
<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name" targets="Class screenlets.menu.ImageMenuItem=screenlets.menu.ImageMenuItem-class.html"><a title="screenlets.menu.ImageMenuItem" class="py-name" href="#" onclick="return doclink('link-2', 'ImageMenuItem', 'link-2');">ImageMenuItem</a></tt><tt class="py-op">(</tt><tt class="py-name">stock</tt><tt class="py-op">,</tt> <tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
104
<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-3" class="py-name"><a title="screenlets.menu.add_menuitem_with_item" class="py-name" href="#" onclick="return doclink('link-3', 'add_menuitem_with_item', 'link-0');">add_menuitem_with_item</a></tt><tt class="py-op">(</tt><tt id="link-4" class="py-name"><a title="screenlets.Screenlet.menu
105
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-4', 'menu', 'link-1');">menu</a></tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">cb_data</tt><tt class="py-op">)</tt> </tt>
106
</div><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
107
<a name="add_menuitem_with_item"></a><div id="add_menuitem_with_item-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="add_menuitem_with_item-toggle" onclick="return toggle('add_menuitem_with_item');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#add_menuitem_with_item">add_menuitem_with_item</a> <tt class="py-op">(</tt><tt class="py-param">menu</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cb_data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
108
</div><div id="add_menuitem_with_item-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="add_menuitem_with_item-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-docstring">"""Convenience function to add a menuitem to a menu</tt> </tt>
109
<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> and connect a callback."""</tt> </tt>
110
<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt><tt class="py-op">:</tt> </tt>
111
<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">cb_data</tt><tt class="py-op">:</tt> </tt>
112
<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method screenlets.plugins.Amarok.AmarokAPI.connect()=screenlets.plugins.Amarok.AmarokAPI-class.html#connect,Method screenlets.plugins.Audacious.AudaciousAPI.connect()=screenlets.plugins.Audacious.AudaciousAPI-class.html#connect,Method screenlets.plugins.Banshee.BansheeAPI.connect()=screenlets.plugins.Banshee.BansheeAPI-class.html#connect,Method screenlets.plugins.Exaile.ExaileAPI.connect()=screenlets.plugins.Exaile.ExaileAPI-class.html#connect,Method screenlets.plugins.GenericPlayer.GenericAPI.connect()=screenlets.plugins.GenericPlayer.GenericAPI-class.html#connect,Method screenlets.plugins.Juk.JukAPI.connect()=screenlets.plugins.Juk.JukAPI-class.html#connect,Method screenlets.plugins.Kaffeine.KaffeineAPI.connect()=screenlets.plugins.Kaffeine.KaffeineAPI-class.html#connect,Method screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect()=screenlets.plugins.LastFMProxy.LastFMProxyAPI-class.html#connect,Method screenlets.plugins.Listen.ListenAPI.connect()=screenlets.plugins.Listen.ListenAPI-class.html#connect,Method screenlets.plugins.Quodlibet.QuodlibetAPI.connect()=screenlets.plugins.Quodlibet.QuodlibetAPI-class.html#connect,Method screenlets.plugins.Rhythmbox.RhythmboxAPI.connect()=screenlets.plugins.Rhythmbox.RhythmboxAPI-class.html#connect,Method screenlets.plugins.Sonata.SonataAPI.connect()=screenlets.plugins.Sonata.SonataAPI-class.html#connect,Method screenlets.plugins.Songbird.SongbirdAPI.connect()=screenlets.plugins.Songbird.SongbirdAPI-class.html#connect,Function screenlets.plugins.mpdclient2.connect()=screenlets.plugins.mpdclient2-module.html#connect"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
113
screenlets.plugins.Audacious.AudaciousAPI.connect
114
screenlets.plugins.Banshee.BansheeAPI.connect
115
screenlets.plugins.Exaile.ExaileAPI.connect
116
screenlets.plugins.GenericPlayer.GenericAPI.connect
117
screenlets.plugins.Juk.JukAPI.connect
118
screenlets.plugins.Kaffeine.KaffeineAPI.connect
119
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
120
screenlets.plugins.Listen.ListenAPI.connect
121
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
122
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
123
screenlets.plugins.Sonata.SonataAPI.connect
124
screenlets.plugins.Songbird.SongbirdAPI.connect
125
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-5', 'connect', 'link-5');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">cb_data</tt><tt class="py-op">)</tt> </tt>
126
<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
127
<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
128
screenlets.plugins.Audacious.AudaciousAPI.connect
129
screenlets.plugins.Banshee.BansheeAPI.connect
130
screenlets.plugins.Exaile.ExaileAPI.connect
131
screenlets.plugins.GenericPlayer.GenericAPI.connect
132
screenlets.plugins.Juk.JukAPI.connect
133
screenlets.plugins.Kaffeine.KaffeineAPI.connect
134
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
135
screenlets.plugins.Listen.ListenAPI.connect
136
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
137
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
138
screenlets.plugins.Sonata.SonataAPI.connect
139
screenlets.plugins.Songbird.SongbirdAPI.connect
140
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-6', 'connect', 'link-5');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt>
141
<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="screenlets.Screenlet.menu
142
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-7', 'menu', 'link-1');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
143
<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method screenlets.Notify.show()=screenlets.Notify-class.html#show,Method screenlets.Screenlet.show()=screenlets.Screenlet-class.html#show,Method screenlets.Tooltip.show()=screenlets.Tooltip-class.html#show"><a title="screenlets.Notify.show
83
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package screenlets=screenlets-module.html"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-0', 'screenlets', 'link-0');">screenlets</a></tt> </tt>
84
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"> </tt>
85
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-name">gettext</tt><tt class="py-op">.</tt><tt class="py-name">textdomain</tt><tt class="py-op">(</tt><tt class="py-string">'screenlets'</tt><tt class="py-op">)</tt> </tt>
86
<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-name">gettext</tt><tt class="py-op">.</tt><tt class="py-name">bindtextdomain</tt><tt class="py-op">(</tt><tt class="py-string">'screenlets'</tt><tt class="py-op">,</tt> <tt id="link-1" class="py-name"><a title="screenlets" class="py-name" href="#" onclick="return doclink('link-1', 'screenlets', 'link-0');">screenlets</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Variable screenlets.INSTALL_PREFIX=screenlets-module.html#INSTALL_PREFIX"><a title="screenlets.INSTALL_PREFIX" class="py-name" href="#" onclick="return doclink('link-2', 'INSTALL_PREFIX', 'link-2');">INSTALL_PREFIX</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'/share/locale'</tt><tt class="py-op">)</tt> </tt>
87
<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt>
88
<a name="_"></a><div id="_-def"><a name="L25"></a><tt class="py-lineno"> 25</tt> <a class="py-toggle" href="#" id="_-toggle" onclick="return toggle('_');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#_">_</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
89
</div><div id="_-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_-expanded"><a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">gettext</tt><tt class="py-op">.</tt><tt class="py-name">gettext</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
90
</div><a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
91
<a name="add_menuitem"></a><div id="add_menuitem-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <a class="py-toggle" href="#" id="add_menuitem-toggle" onclick="return toggle('add_menuitem');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#add_menuitem">add_menuitem</a> <tt class="py-op">(</tt><tt class="py-param">menu</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cb_data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
92
</div><div id="add_menuitem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="add_menuitem-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> <tt class="py-docstring">"""Convenience function to create a menuitem, connect</tt> </tt>
93
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> a callback, and add the menuitem to menu."""</tt> </tt>
94
<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">label</tt> <tt class="py-op">==</tt> <tt class="py-string">"-"</tt><tt class="py-op">:</tt> </tt>
95
<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">SeparatorMenuItem</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
96
<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
97
<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
98
<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-3" class="py-name" targets="Function screenlets.menu.add_menuitem_with_item()=screenlets.menu-module.html#add_menuitem_with_item"><a title="screenlets.menu.add_menuitem_with_item" class="py-name" href="#" onclick="return doclink('link-3', 'add_menuitem_with_item', 'link-3');">add_menuitem_with_item</a></tt><tt class="py-op">(</tt><tt id="link-4" class="py-name" targets="Variable screenlets.Screenlet.menu=screenlets.Screenlet-class.html#menu,Module screenlets.menu=screenlets.menu-module.html"><a title="screenlets.Screenlet.menu
99
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-4', 'menu', 'link-4');">menu</a></tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">cb_data</tt><tt class="py-op">)</tt> </tt>
100
</div><a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt>
101
<a name="add_image_menuitem"></a><div id="add_image_menuitem-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="add_image_menuitem-toggle" onclick="return toggle('add_image_menuitem');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#add_image_menuitem">add_image_menuitem</a> <tt class="py-op">(</tt><tt class="py-param">menu</tt><tt class="py-op">,</tt> <tt class="py-param">stock</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cb_data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
102
</div><div id="add_image_menuitem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="add_image_menuitem-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-docstring">"""Convenience function to create an ImageMenuItem, connect</tt> </tt>
103
<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> a callback, and add the menuitem to menu."""</tt> </tt>
104
<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name" targets="Class screenlets.menu.ImageMenuItem=screenlets.menu.ImageMenuItem-class.html"><a title="screenlets.menu.ImageMenuItem" class="py-name" href="#" onclick="return doclink('link-5', 'ImageMenuItem', 'link-5');">ImageMenuItem</a></tt><tt class="py-op">(</tt><tt class="py-name">stock</tt><tt class="py-op">,</tt> <tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
105
<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name"><a title="screenlets.menu.add_menuitem_with_item" class="py-name" href="#" onclick="return doclink('link-6', 'add_menuitem_with_item', 'link-3');">add_menuitem_with_item</a></tt><tt class="py-op">(</tt><tt id="link-7" class="py-name"><a title="screenlets.Screenlet.menu
106
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-7', 'menu', 'link-4');">menu</a></tt><tt class="py-op">,</tt> <tt class="py-name">item</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">cb_data</tt><tt class="py-op">)</tt> </tt>
107
</div><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt>
108
<a name="add_submenuitem"></a><div id="add_submenuitem-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="add_submenuitem-toggle" onclick="return toggle('add_submenuitem');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#add_submenuitem">add_submenuitem</a> <tt class="py-op">(</tt><tt class="py-param">root_menu</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">,</tt> <tt class="py-param">lst</tt><tt class="py-op">,</tt> <tt class="py-param">images</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">image_size</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">22</tt><tt class="py-op">,</tt><tt class="py-number">22</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
109
</div><div id="add_submenuitem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="add_submenuitem-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-docstring">"""Convenience function to add submenuitems to a right-click menu through a list.</tt> </tt>
110
<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
111
<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> images is an optional list of filenames to be used as an image in each menuitem.</tt> </tt>
112
<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> Each item in the list should either be a string or None. (If an item is None, gtk's</tt> </tt>
113
<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> no-image icon will be used.)</tt> </tt>
114
<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
115
<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> If callback is not None, each menuitem will be connected to callback with it's</tt> </tt>
116
<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> label as callback data. If prefix exists, prefix will be prefixed to the label's</tt> </tt>
117
<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> name in the callback data.</tt> </tt>
118
<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> </tt> </tt>
119
<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> Returns the new submenu."""</tt> </tt>
120
<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">root_item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
121
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">root_menu</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">root_item</tt><tt class="py-op">)</tt> </tt>
122
<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">root_item</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method screenlets.Notify.show()=screenlets.Notify-class.html#show,Method screenlets.Screenlet.show()=screenlets.Screenlet-class.html#show,Method screenlets.Tooltip.show()=screenlets.Tooltip-class.html#show"><a title="screenlets.Notify.show
144
123
screenlets.Screenlet.show
145
124
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-8', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
146
<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">item</tt> </tt>
147
</div><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt>
148
<a name="create_menu_from_file"></a><div id="create_menu_from_file-def"><a name="L54"></a><tt class="py-lineno"> 54</tt> <a class="py-toggle" href="#" id="create_menu_from_file-toggle" onclick="return toggle('create_menu_from_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#create_menu_from_file">create_menu_from_file</a> <tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
149
</div><div id="create_menu_from_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="create_menu_from_file-expanded"><a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-docstring">"""Creates a menu from an XML-file and returns None if something went wrong"""</tt> </tt>
150
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
151
<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
152
<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Function screenlets.plugins.iCal.parse()=screenlets.plugins.iCal-module.html#parse"><a title="screenlets.plugins.iCal.parse" class="py-name" href="#" onclick="return doclink('link-9', 'parse', 'link-9');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
153
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
154
<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"XML-Error: %s"</tt> <tt class="py-op">%</tt> <tt id="link-10" class="py-name" targets="Method screenlets.plugins.Convert.Converter.str()=screenlets.plugins.Convert.Converter-class.html#str"><a title="screenlets.plugins.Convert.Converter.str" class="py-name" href="#" onclick="return doclink('link-10', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
155
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
156
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-11" class="py-name" targets="Function screenlets.menu.create_menu_from_xml()=screenlets.menu-module.html#create_menu_from_xml"><a title="screenlets.menu.create_menu_from_xml" class="py-name" href="#" onclick="return doclink('link-11', 'create_menu_from_xml', 'link-11');">create_menu_from_xml</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">firstChild</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt>
157
</div><a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> </tt>
158
<a name="create_menu_from_xml"></a><div id="create_menu_from_xml-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="create_menu_from_xml-toggle" onclick="return toggle('create_menu_from_xml');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#create_menu_from_xml">create_menu_from_xml</a> <tt class="py-op">(</tt><tt class="py-param">node</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">,</tt> <tt class="py-param">icon_size</tt><tt class="py-op">=</tt><tt class="py-number">22</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
159
</div><div id="create_menu_from_xml-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="create_menu_from_xml-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a gtk.Menu by an XML-Node"""</tt> </tt>
160
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt id="link-12" class="py-name"><a title="screenlets.Screenlet.menu
161
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-12', 'menu', 'link-1');">menu</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
162
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">childNodes</tt><tt class="py-op">:</tt> </tt>
163
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-comment">#print node</tt> </tt>
164
<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">type</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeType</tt> </tt>
165
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt> <tt class="py-op">==</tt> <tt class="py-name">Node</tt><tt class="py-op">.</tt><tt class="py-name">ELEMENT_NODE</tt><tt class="py-op">:</tt> </tt>
166
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">label</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"label"</tt><tt class="py-op">)</tt> </tt>
167
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt id="link-13" class="py-name" targets="Variable screenlets.Screenlet.id=screenlets.Screenlet-class.html#id"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-13', 'id', 'link-13');">id</a></tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"id"</tt><tt class="py-op">)</tt> </tt>
168
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
169
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">is_check</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
170
<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-comment"># <item> gtk.MenuItem</tt> </tt>
171
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"item"</tt><tt class="py-op">:</tt> </tt>
172
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
173
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-comment"># <checkitem> gtk.CheckMenuItem</tt> </tt>
174
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"checkitem"</tt><tt class="py-op">:</tt> </tt>
175
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">CheckMenuItem</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
176
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">is_check</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
177
<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">hasAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"checked"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
178
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">set_active</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
179
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-comment"># <imageitem> gtk.ImageMenuItem</tt> </tt>
180
<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"imageitem"</tt><tt class="py-op">:</tt> </tt>
181
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">icon</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"icon"</tt><tt class="py-op">)</tt> </tt>
182
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name" targets="Function screenlets.menu.imageitem_from_name()=screenlets.menu-module.html#imageitem_from_name"><a title="screenlets.menu.imageitem_from_name" class="py-name" href="#" onclick="return doclink('link-14', 'imageitem_from_name', 'link-14');">imageitem_from_name</a></tt><tt class="py-op">(</tt><tt class="py-name">icon</tt><tt class="py-op">,</tt> <tt class="py-name">label</tt><tt class="py-op">,</tt> <tt class="py-name">icon_size</tt><tt class="py-op">)</tt> </tt>
183
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-comment"># <separator> gtk.SeparatorMenuItem</tt> </tt>
184
<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"separator"</tt><tt class="py-op">:</tt> </tt>
185
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">SeparatorMenuItem</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
186
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-comment"># <appdir> </tt> </tt>
187
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"appdir"</tt><tt class="py-op">:</tt> </tt>
188
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-comment"># create menu from dir with desktop-files</tt> </tt>
189
<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt id="link-15" class="py-name" targets="Variable screenlets.ScreenletTheme.path=screenlets.ScreenletTheme-class.html#path,Variable screenlets.backend.CachingBackend.path=screenlets.backend.CachingBackend-class.html#path"><a title="screenlets.ScreenletTheme.path
190
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-15', 'path', 'link-15');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"path"</tt><tt class="py-op">)</tt> </tt>
191
<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">appmenu</tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name" targets="Class screenlets.menu.ApplicationMenu=screenlets.menu.ApplicationMenu-class.html"><a title="screenlets.menu.ApplicationMenu" class="py-name" href="#" onclick="return doclink('link-16', 'ApplicationMenu', 'link-16');">ApplicationMenu</a></tt><tt class="py-op">(</tt><tt id="link-17" class="py-name"><a title="screenlets.ScreenletTheme.path
192
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-17', 'path', 'link-15');">path</a></tt><tt class="py-op">)</tt> </tt>
193
<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">cats</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"cats"</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>
194
<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">cat</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cats</tt><tt class="py-op">:</tt> </tt>
195
<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">cat</tt><tt class="py-op">)</tt> </tt>
196
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-comment">#item = imageitem_from_name('games', cat)</tt> </tt>
197
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">submenu</tt> <tt class="py-op">=</tt> <tt class="py-name">appmenu</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method screenlets.menu.ApplicationMenu.get_menu_for_category()=screenlets.menu.ApplicationMenu-class.html#get_menu_for_category"><a title="screenlets.menu.ApplicationMenu.get_menu_for_category" class="py-name" href="#" onclick="return doclink('link-18', 'get_menu_for_category', 'link-18');">get_menu_for_category</a></tt><tt class="py-op">(</tt><tt class="py-name">cat</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt>
198
<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">set_submenu</tt><tt class="py-op">(</tt><tt class="py-name">submenu</tt><tt class="py-op">)</tt> </tt>
199
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="screenlets.Notify.show
125
<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> </tt>
126
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt id="link-9" class="py-name"><a title="screenlets.Screenlet.menu
127
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-9', 'menu', 'link-4');">menu</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
128
<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">root_item</tt><tt class="py-op">.</tt><tt class="py-name">set_submenu</tt><tt class="py-op">(</tt><tt id="link-10" class="py-name"><a title="screenlets.Screenlet.menu
129
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-10', 'menu', 'link-4');">menu</a></tt><tt class="py-op">)</tt> </tt>
130
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
131
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
132
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-11" class="py-name" targets="Variable screenlets.plugins.keyring.KeyRing.Key.name=screenlets.plugins.keyring.KeyRing.Key-class.html#name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-11', 'name', 'link-11');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">lst</tt><tt class="py-op">:</tt> </tt>
133
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-comment"># if this menu contains _some_ images</tt> </tt>
134
<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">images</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>
135
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name"><a title="screenlets.menu.ImageMenuItem" class="py-name" href="#" onclick="return doclink('link-12', 'ImageMenuItem', 'link-5');">ImageMenuItem</a></tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt id="link-13" class="py-name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-13', 'name', 'link-11');">name</a></tt><tt class="py-op">)</tt> </tt>
136
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-comment"># if there's an image for this specific item then use it</tt> </tt>
137
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">images</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</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>
138
<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">pixbuf</tt> <tt class="py-op">=</tt> <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">pixbuf_new_from_file_at_size</tt><tt class="py-op">(</tt><tt class="py-name">images</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">image_size</tt><tt class="py-op">)</tt> </tt>
139
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method screenlets.menu.ImageMenuItem.set_image_from_pixbuf()=screenlets.menu.ImageMenuItem-class.html#set_image_from_pixbuf"><a title="screenlets.menu.ImageMenuItem.set_image_from_pixbuf" class="py-name" href="#" onclick="return doclink('link-14', 'set_image_from_pixbuf', 'link-14');">set_image_from_pixbuf</a></tt><tt class="py-op">(</tt><tt class="py-name">pixbuf</tt><tt class="py-op">)</tt> </tt>
140
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-comment"># if there isn't an image then cause gtk to use the generic broken-img icon</tt> </tt>
141
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
142
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method screenlets.menu.ImageMenuItem.set_image_from_file()=screenlets.menu.ImageMenuItem-class.html#set_image_from_file"><a title="screenlets.menu.ImageMenuItem.set_image_from_file" class="py-name" href="#" onclick="return doclink('link-15', 'set_image_from_file', 'link-15');">set_image_from_file</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
143
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-comment"># if this menu doesn't contain _any_ images</tt> </tt>
144
<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
145
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-16', 'name', 'link-11');">name</a></tt><tt class="py-op">)</tt> </tt>
146
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</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>
147
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">prefix</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>
148
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method screenlets.plugins.Amarok.AmarokAPI.connect()=screenlets.plugins.Amarok.AmarokAPI-class.html#connect,Method screenlets.plugins.Audacious.AudaciousAPI.connect()=screenlets.plugins.Audacious.AudaciousAPI-class.html#connect,Method screenlets.plugins.Banshee.BansheeAPI.connect()=screenlets.plugins.Banshee.BansheeAPI-class.html#connect,Method screenlets.plugins.Exaile.ExaileAPI.connect()=screenlets.plugins.Exaile.ExaileAPI-class.html#connect,Method screenlets.plugins.GenericPlayer.GenericAPI.connect()=screenlets.plugins.GenericPlayer.GenericAPI-class.html#connect,Method screenlets.plugins.Juk.JukAPI.connect()=screenlets.plugins.Juk.JukAPI-class.html#connect,Method screenlets.plugins.Kaffeine.KaffeineAPI.connect()=screenlets.plugins.Kaffeine.KaffeineAPI-class.html#connect,Method screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect()=screenlets.plugins.LastFMProxy.LastFMProxyAPI-class.html#connect,Method screenlets.plugins.Listen.ListenAPI.connect()=screenlets.plugins.Listen.ListenAPI-class.html#connect,Method screenlets.plugins.Quodlibet.QuodlibetAPI.connect()=screenlets.plugins.Quodlibet.QuodlibetAPI-class.html#connect,Method screenlets.plugins.Rhythmbox.RhythmboxAPI.connect()=screenlets.plugins.Rhythmbox.RhythmboxAPI-class.html#connect,Method screenlets.plugins.Sonata.SonataAPI.connect()=screenlets.plugins.Sonata.SonataAPI-class.html#connect,Method screenlets.plugins.Songbird.SongbirdAPI.connect()=screenlets.plugins.Songbird.SongbirdAPI-class.html#connect,Function screenlets.plugins.mpdclient2.connect()=screenlets.plugins.mpdclient2-module.html#connect"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
149
screenlets.plugins.Audacious.AudaciousAPI.connect
150
screenlets.plugins.Banshee.BansheeAPI.connect
151
screenlets.plugins.Exaile.ExaileAPI.connect
152
screenlets.plugins.GenericPlayer.GenericAPI.connect
153
screenlets.plugins.Juk.JukAPI.connect
154
screenlets.plugins.Kaffeine.KaffeineAPI.connect
155
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
156
screenlets.plugins.Listen.ListenAPI.connect
157
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
158
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
159
screenlets.plugins.Sonata.SonataAPI.connect
160
screenlets.plugins.Songbird.SongbirdAPI.connect
161
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-17', 'connect', 'link-17');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">prefix</tt><tt class="py-op">+</tt><tt id="link-18" class="py-name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-18', 'name', 'link-11');">name</a></tt><tt class="py-op">)</tt> </tt>
162
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
163
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
164
screenlets.plugins.Audacious.AudaciousAPI.connect
165
screenlets.plugins.Banshee.BansheeAPI.connect
166
screenlets.plugins.Exaile.ExaileAPI.connect
167
screenlets.plugins.GenericPlayer.GenericAPI.connect
168
screenlets.plugins.Juk.JukAPI.connect
169
screenlets.plugins.Kaffeine.KaffeineAPI.connect
170
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
171
screenlets.plugins.Listen.ListenAPI.connect
172
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
173
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
174
screenlets.plugins.Sonata.SonataAPI.connect
175
screenlets.plugins.Songbird.SongbirdAPI.connect
176
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-19', 'connect', 'link-17');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt id="link-20" class="py-name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-20', 'name', 'link-11');">name</a></tt><tt class="py-op">)</tt> </tt>
177
<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="screenlets.Notify.show
200
178
screenlets.Screenlet.show
201
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-19', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
202
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt id="link-20" class="py-name"><a title="screenlets.Screenlet.menu
203
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-20', 'menu', 'link-1');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
204
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># to overjump further append-item calls</tt> </tt>
205
<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-comment"># <scandir> create directory list</tt> </tt>
206
<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"scandir"</tt><tt class="py-op">:</tt> </tt>
207
<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-comment"># get dirname, prefix, suffix, replace-list, skip-list</tt> </tt>
208
<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">dir</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"directory"</tt><tt class="py-op">)</tt> </tt>
209
<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-comment"># replace $HOME with environment var</tt> </tt>
210
<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">dir</tt> <tt class="py-op">=</tt> <tt class="py-name">dir</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Variable screenlets.plugins.Convert.Converter.replace=screenlets.plugins.Convert.Converter-class.html#replace"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-21', 'replace', 'link-21');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">'$HOME'</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'HOME'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
211
<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-comment">#expr = node.getAttribute("expr")</tt> </tt>
212
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">idprfx</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"id_prefix"</tt><tt class="py-op">)</tt> </tt>
213
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">idsufx</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"id_suffix"</tt><tt class="py-op">)</tt> </tt>
214
<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">srch</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"search"</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>
215
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">repl</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"replace"</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>
216
<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">skp</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"skip"</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>
217
<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-comment"># get filter attribute</tt> </tt>
218
<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">flt</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"filter"</tt><tt class="py-op">)</tt> </tt>
219
<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">flt</tt><tt class="py-op">==</tt><tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
220
<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">flt</tt><tt class="py-op">=</tt><tt class="py-string">'*'</tt> </tt>
221
<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-comment"># scan directory and append items to current menu</tt> </tt>
222
<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-comment">#fill_menu_from_directory(dir, menu, callback, regexp=expr, filter=flt)</tt> </tt>
223
<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt id="link-22" class="py-name" targets="Function screenlets.menu.fill_menu_from_directory()=screenlets.menu-module.html#fill_menu_from_directory"><a title="screenlets.menu.fill_menu_from_directory" class="py-name" href="#" onclick="return doclink('link-22', 'fill_menu_from_directory', 'link-22');">fill_menu_from_directory</a></tt><tt class="py-op">(</tt><tt class="py-name">dir</tt><tt class="py-op">,</tt> <tt id="link-23" class="py-name"><a title="screenlets.Screenlet.menu
224
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-23', 'menu', 'link-1');">menu</a></tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">filter</tt><tt class="py-op">=</tt><tt class="py-name">flt</tt><tt class="py-op">,</tt> </tt>
225
<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">id_prefix</tt><tt class="py-op">=</tt><tt class="py-name">idprfx</tt><tt class="py-op">,</tt> <tt class="py-name">id_suffix</tt><tt class="py-op">=</tt><tt class="py-name">idsufx</tt><tt class="py-op">,</tt> <tt id="link-24" class="py-name" targets="Method screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.search()=screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch-class.html#search"><a title="screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.search" class="py-name" href="#" onclick="return doclink('link-24', 'search', 'link-24');">search</a></tt><tt class="py-op">=</tt><tt class="py-name">srch</tt><tt class="py-op">,</tt> </tt>
226
<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt id="link-25" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-25', 'replace', 'link-21');">replace</a></tt><tt class="py-op">=</tt><tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">skip</tt><tt class="py-op">=</tt><tt class="py-name">skp</tt><tt class="py-op">)</tt> </tt>
227
<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-comment"># item created?</tt> </tt>
228
<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">:</tt> </tt>
229
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">hasChildNodes</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
230
<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-comment"># ... call function recursive and set returned menu as submenu</tt> </tt>
231
<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">submenu</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="screenlets.menu.create_menu_from_xml" class="py-name" href="#" onclick="return doclink('link-26', 'create_menu_from_xml', 'link-11');">create_menu_from_xml</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> </tt>
232
<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">icon_size</tt><tt class="py-op">)</tt> </tt>
233
<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">set_submenu</tt><tt class="py-op">(</tt><tt class="py-name">submenu</tt><tt class="py-op">)</tt> </tt>
234
<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="screenlets.Notify.show
179
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-21', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
180
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt id="link-22" class="py-name"><a title="screenlets.Screenlet.menu
181
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-22', 'menu', 'link-4');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
182
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
183
<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
184
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-23" class="py-name"><a title="screenlets.Screenlet.menu
185
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-23', 'menu', 'link-4');">menu</a></tt> </tt>
186
</div><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt>
187
<a name="add_menuitem_with_item"></a><div id="add_menuitem_with_item-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="add_menuitem_with_item-toggle" onclick="return toggle('add_menuitem_with_item');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#add_menuitem_with_item">add_menuitem_with_item</a> <tt class="py-op">(</tt><tt class="py-param">menu</tt><tt class="py-op">,</tt> <tt class="py-param">item</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cb_data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
188
</div><div id="add_menuitem_with_item-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="add_menuitem_with_item-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-docstring">"""Convenience function to add a menuitem to a menu</tt> </tt>
189
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> and connect a callback."""</tt> </tt>
190
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt><tt class="py-op">:</tt> </tt>
191
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">cb_data</tt><tt class="py-op">:</tt> </tt>
192
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
193
screenlets.plugins.Audacious.AudaciousAPI.connect
194
screenlets.plugins.Banshee.BansheeAPI.connect
195
screenlets.plugins.Exaile.ExaileAPI.connect
196
screenlets.plugins.GenericPlayer.GenericAPI.connect
197
screenlets.plugins.Juk.JukAPI.connect
198
screenlets.plugins.Kaffeine.KaffeineAPI.connect
199
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
200
screenlets.plugins.Listen.ListenAPI.connect
201
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
202
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
203
screenlets.plugins.Sonata.SonataAPI.connect
204
screenlets.plugins.Songbird.SongbirdAPI.connect
205
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-24', 'connect', 'link-17');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">cb_data</tt><tt class="py-op">)</tt> </tt>
206
<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
207
<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
208
screenlets.plugins.Audacious.AudaciousAPI.connect
209
screenlets.plugins.Banshee.BansheeAPI.connect
210
screenlets.plugins.Exaile.ExaileAPI.connect
211
screenlets.plugins.GenericPlayer.GenericAPI.connect
212
screenlets.plugins.Juk.JukAPI.connect
213
screenlets.plugins.Kaffeine.KaffeineAPI.connect
214
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
215
screenlets.plugins.Listen.ListenAPI.connect
216
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
217
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
218
screenlets.plugins.Sonata.SonataAPI.connect
219
screenlets.plugins.Songbird.SongbirdAPI.connect
220
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-25', 'connect', 'link-17');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt>
221
<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt id="link-26" class="py-name"><a title="screenlets.Screenlet.menu
222
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-26', 'menu', 'link-4');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
223
<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="screenlets.Notify.show
235
224
screenlets.Screenlet.show
236
225
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-27', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
237
<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-28" class="py-name"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-28', 'id', 'link-13');">id</a></tt><tt class="py-op">:</tt> </tt>
238
<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
239
screenlets.plugins.Audacious.AudaciousAPI.connect
240
screenlets.plugins.Banshee.BansheeAPI.connect
241
screenlets.plugins.Exaile.ExaileAPI.connect
242
screenlets.plugins.GenericPlayer.GenericAPI.connect
243
screenlets.plugins.Juk.JukAPI.connect
244
screenlets.plugins.Kaffeine.KaffeineAPI.connect
245
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
246
screenlets.plugins.Listen.ListenAPI.connect
247
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
248
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
249
screenlets.plugins.Sonata.SonataAPI.connect
250
screenlets.plugins.Songbird.SongbirdAPI.connect
251
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-29', 'connect', 'link-5');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt id="link-30" class="py-name"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-30', 'id', 'link-13');">id</a></tt><tt class="py-op">)</tt> </tt>
252
<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt id="link-31" class="py-name"><a title="screenlets.Screenlet.menu
253
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-31', 'menu', 'link-1');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
254
<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-32" class="py-name"><a title="screenlets.Screenlet.menu
255
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-32', 'menu', 'link-1');">menu</a></tt> </tt>
256
</div><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> </tt>
257
<a name="fill_menu_from_directory"></a><div id="fill_menu_from_directory-def"><a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="fill_menu_from_directory-toggle" onclick="return toggle('fill_menu_from_directory');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#fill_menu_from_directory">fill_menu_from_directory</a> <tt class="py-op">(</tt><tt class="py-param">dirname</tt><tt class="py-op">,</tt> <tt class="py-param">menu</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">,</tt> <tt class="py-param">filter</tt><tt class="py-op">=</tt><tt class="py-string">'*'</tt><tt class="py-op">,</tt> </tt>
258
<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-param">id_prefix</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">id_suffix</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">search</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">replace</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">skip</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>
259
</div><div id="fill_menu_from_directory-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="fill_menu_from_directory-expanded"><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-docstring">"""Create MenuItems from a directory.</tt> </tt>
260
<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> TODO: use regular expressions"""</tt> </tt>
261
<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-comment"># create theme-list from theme-directory</tt> </tt>
262
<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">lst</tt> <tt class="py-op">=</tt> <tt class="py-name">glob</tt><tt class="py-op">.</tt><tt class="py-name">glob</tt><tt class="py-op">(</tt><tt class="py-name">dirname</tt> <tt class="py-op">+</tt> <tt class="py-string">"/"</tt> <tt class="py-op">+</tt> <tt class="py-name">filter</tt><tt class="py-op">)</tt> </tt>
263
<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-comment">#print "Scanning: "+dirname + "/" + filter </tt> </tt>
264
<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">lst</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
265
<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">dlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">dirname</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
266
<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-comment"># check each entry in dir</tt> </tt>
267
<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lst</tt><tt class="py-op">:</tt> </tt>
268
<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-comment">#print "FILE: " + filename</tt> </tt>
269
<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">fname</tt> <tt class="py-op">=</tt> <tt class="py-name">filename</tt><tt class="py-op">[</tt><tt class="py-name">dlen</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
270
<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-comment"># file allowed?</tt> </tt>
271
<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">skip</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-name">fname</tt><tt class="py-op">)</tt><tt class="py-op"><</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
272
<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-comment">#print "OK"</tt> </tt>
273
<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-comment"># create label (replace unwanted strings)</tt> </tt>
274
<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-33" class="py-name"><a title="screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.search" class="py-name" href="#" onclick="return doclink('link-33', 'search', 'link-24');">search</a></tt><tt class="py-op">)</tt> </tt>
275
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">l</tt><tt class="py-op">></tt><tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">l</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-34" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-34', 'replace', 'link-21');">replace</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
276
<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
277
<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">fname</tt> <tt class="py-op">=</tt> <tt class="py-name">fname</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-35', 'replace', 'link-21');">replace</a></tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.search" class="py-name" href="#" onclick="return doclink('link-36', 'search', 'link-24');">search</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-37" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-37', 'replace', 'link-21');">replace</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
278
<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-comment"># create label (add prefix/suffix/replace)</tt> </tt>
279
<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt id="link-38" class="py-name"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-38', 'id', 'link-13');">id</a></tt> <tt class="py-op">=</tt> <tt class="py-name">id_prefix</tt> <tt class="py-op">+</tt> <tt class="py-name">fname</tt> <tt class="py-op">+</tt> <tt class="py-name">id_suffix</tt> </tt>
280
<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-comment">#print "NAME: "+fname</tt> </tt>
281
<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-comment"># create menuitem </tt> </tt>
282
<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">fname</tt><tt class="py-op">)</tt> </tt>
283
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
284
screenlets.plugins.Audacious.AudaciousAPI.connect
285
screenlets.plugins.Banshee.BansheeAPI.connect
286
screenlets.plugins.Exaile.ExaileAPI.connect
287
screenlets.plugins.GenericPlayer.GenericAPI.connect
288
screenlets.plugins.Juk.JukAPI.connect
289
screenlets.plugins.Kaffeine.KaffeineAPI.connect
290
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
291
screenlets.plugins.Listen.ListenAPI.connect
292
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
293
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
294
screenlets.plugins.Sonata.SonataAPI.connect
295
screenlets.plugins.Songbird.SongbirdAPI.connect
296
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-39', 'connect', 'link-5');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt id="link-40" class="py-name"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-40', 'id', 'link-13');">id</a></tt><tt class="py-op">)</tt> </tt>
297
<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="screenlets.Notify.show
298
screenlets.Screenlet.show
299
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-41', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
300
<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt id="link-42" class="py-name"><a title="screenlets.Screenlet.menu
301
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-42', 'menu', 'link-1');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
302
</div><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> </tt>
303
<a name="imageitem_from_name"></a><div id="imageitem_from_name-def"><a name="L169"></a><tt class="py-lineno">169</tt> <a class="py-toggle" href="#" id="imageitem_from_name-toggle" onclick="return toggle('imageitem_from_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#imageitem_from_name">imageitem_from_name</a> <tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">,</tt> <tt class="py-param">icon_size</tt><tt class="py-op">=</tt><tt class="py-number">32</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
304
</div><div id="imageitem_from_name-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="imageitem_from_name-expanded"><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-docstring">"""Creates a new gtk.ImageMenuItem from a given icon/filename.</tt> </tt>
305
<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> If an absolute path is not given, the function checks for the name</tt> </tt>
306
<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> of the icon within the current gtk-theme."""</tt> </tt>
307
<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="screenlets.menu.ImageMenuItem" class="py-name" href="#" onclick="return doclink('link-43', 'ImageMenuItem', 'link-2');">ImageMenuItem</a></tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
308
<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">image</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
309
<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">and</tt> <tt class="py-name">filename</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt>
310
<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-comment"># load from file</tt> </tt>
311
<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
312
<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">set_from_file</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
313
<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">pb</tt> <tt class="py-op">=</tt> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">get_pixbuf</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
314
<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-comment"># rescale, if too big</tt> </tt>
315
<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pb</tt><tt class="py-op">.</tt><tt class="py-name">get_width</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">icon_size</tt> <tt class="py-op">:</tt> </tt>
316
<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">pb2</tt> <tt class="py-op">=</tt> <tt class="py-name">pb</tt><tt class="py-op">.</tt><tt class="py-name">scale_simple</tt><tt class="py-op">(</tt> </tt>
317
<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">icon_size</tt><tt class="py-op">,</tt> <tt class="py-name">icon_size</tt><tt class="py-op">,</tt> </tt>
318
<a name="L184"></a><tt class="py-lineno">184</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">INTERP_HYPER</tt><tt class="py-op">)</tt> </tt>
319
<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">set_from_pixbuf</tt><tt class="py-op">(</tt><tt class="py-name">pb2</tt><tt class="py-op">)</tt> </tt>
320
<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
321
<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">set_from_pixbuf</tt><tt class="py-op">(</tt><tt class="py-name">pb</tt><tt class="py-op">)</tt> </tt>
322
<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
323
<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"Error while creating image from file: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">filename</tt> </tt>
324
<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
325
<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
326
<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">set_from_icon_name</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> <tt class="py-comment"># TODO: use better size</tt> </tt>
327
<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">image</tt><tt class="py-op">:</tt> </tt>
328
<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">set_image</tt><tt class="py-op">(</tt><tt class="py-name">image</tt><tt class="py-op">)</tt> </tt>
329
<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">item</tt> </tt>
330
</div><a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> </tt>
331
<a name="read_desktop_file"></a><div id="read_desktop_file-def"><a name="L197"></a><tt class="py-lineno">197</tt> <a class="py-toggle" href="#" id="read_desktop_file-toggle" onclick="return toggle('read_desktop_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#read_desktop_file">read_desktop_file</a> <tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
332
</div><div id="read_desktop_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="read_desktop_file-expanded"><a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-docstring">"""Read ".desktop"-file into a dict</tt> </tt>
333
<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> NOTE: Should use utils.IniReader ..."""</tt> </tt>
334
<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">list</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
335
<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> </tt>
336
<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
337
<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name" targets="Method screenlets.utils.FileMonitor.open()=screenlets.utils.FileMonitor-class.html#open"><a title="screenlets.utils.FileMonitor.open" class="py-name" href="#" onclick="return doclink('link-44', 'open', 'link-44');">open</a></tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">"r"</tt><tt class="py-op">)</tt> </tt>
338
<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
339
<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"Error: file %s not found."</tt> <tt class="py-op">%</tt> <tt class="py-name">filename</tt> </tt>
340
<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> </tt>
341
<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">readlines</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
342
<a name="L208"></a><tt class="py-lineno">208</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">lines</tt><tt class="py-op">:</tt> </tt>
343
<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">"#"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt> <tt class="py-op">!=</tt><tt class="py-string">"\n"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">"["</tt><tt class="py-op">:</tt> </tt>
344
<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">ll</tt> <tt class="py-op">=</tt> <tt class="py-name">line</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>
345
<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ll</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
346
<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">ll</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">ll</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-45', 'replace', 'link-21');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
347
<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">list</tt> </tt>
226
<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">item</tt> </tt>
227
</div><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt>
228
<a name="create_menu_from_file"></a><div id="create_menu_from_file-def"><a name="L100"></a><tt class="py-lineno">100</tt> <a class="py-toggle" href="#" id="create_menu_from_file-toggle" onclick="return toggle('create_menu_from_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#create_menu_from_file">create_menu_from_file</a> <tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
229
</div><div id="create_menu_from_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="create_menu_from_file-expanded"><a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-docstring">"""Creates a menu from an XML-file and returns None if something went wrong"""</tt> </tt>
230
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
231
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
232
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt class="py-name">xml</tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Function screenlets.plugins.iCal.parse()=screenlets.plugins.iCal-module.html#parse"><a title="screenlets.plugins.iCal.parse" class="py-name" href="#" onclick="return doclink('link-28', 'parse', 'link-28');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
233
<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
234
<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"XML-Error: %s"</tt> <tt class="py-op">%</tt> <tt id="link-29" class="py-name" targets="Method screenlets.plugins.Convert.Converter.str()=screenlets.plugins.Convert.Converter-class.html#str"><a title="screenlets.plugins.Convert.Converter.str" class="py-name" href="#" onclick="return doclink('link-29', 'str', 'link-29');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
235
<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
236
<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-30" class="py-name" targets="Function screenlets.menu.create_menu_from_xml()=screenlets.menu-module.html#create_menu_from_xml"><a title="screenlets.menu.create_menu_from_xml" class="py-name" href="#" onclick="return doclink('link-30', 'create_menu_from_xml', 'link-30');">create_menu_from_xml</a></tt><tt class="py-op">(</tt><tt class="py-name">doc</tt><tt class="py-op">.</tt><tt class="py-name">firstChild</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt>
237
</div><a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> </tt>
238
<a name="create_menu_from_xml"></a><div id="create_menu_from_xml-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="create_menu_from_xml-toggle" onclick="return toggle('create_menu_from_xml');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#create_menu_from_xml">create_menu_from_xml</a> <tt class="py-op">(</tt><tt class="py-param">node</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">,</tt> <tt class="py-param">icon_size</tt><tt class="py-op">=</tt><tt class="py-number">22</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
239
</div><div id="create_menu_from_xml-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="create_menu_from_xml-expanded"><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a gtk.Menu by an XML-Node"""</tt> </tt>
240
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt id="link-31" class="py-name"><a title="screenlets.Screenlet.menu
241
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-31', 'menu', 'link-4');">menu</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
242
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">childNodes</tt><tt class="py-op">:</tt> </tt>
243
<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-comment">#print node</tt> </tt>
244
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">type</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeType</tt> </tt>
245
<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt> <tt class="py-op">==</tt> <tt class="py-name">Node</tt><tt class="py-op">.</tt><tt class="py-name">ELEMENT_NODE</tt><tt class="py-op">:</tt> </tt>
246
<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">label</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"label"</tt><tt class="py-op">)</tt> </tt>
247
<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt id="link-32" class="py-name" targets="Variable screenlets.Screenlet.id=screenlets.Screenlet-class.html#id"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-32', 'id', 'link-32');">id</a></tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"id"</tt><tt class="py-op">)</tt> </tt>
248
<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
249
<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">is_check</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
250
<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-comment"># <item> gtk.MenuItem</tt> </tt>
251
<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"item"</tt><tt class="py-op">:</tt> </tt>
252
<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
253
<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-comment"># <checkitem> gtk.CheckMenuItem</tt> </tt>
254
<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"checkitem"</tt><tt class="py-op">:</tt> </tt>
255
<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">CheckMenuItem</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
256
<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">is_check</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
257
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">hasAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"checked"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
258
<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">set_active</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
259
<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-comment"># <imageitem> gtk.ImageMenuItem</tt> </tt>
260
<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"imageitem"</tt><tt class="py-op">:</tt> </tt>
261
<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">icon</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"icon"</tt><tt class="py-op">)</tt> </tt>
262
<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name" targets="Function screenlets.menu.imageitem_from_name()=screenlets.menu-module.html#imageitem_from_name"><a title="screenlets.menu.imageitem_from_name" class="py-name" href="#" onclick="return doclink('link-33', 'imageitem_from_name', 'link-33');">imageitem_from_name</a></tt><tt class="py-op">(</tt><tt class="py-name">icon</tt><tt class="py-op">,</tt> <tt class="py-name">label</tt><tt class="py-op">,</tt> <tt class="py-name">icon_size</tt><tt class="py-op">)</tt> </tt>
263
<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-comment"># <separator> gtk.SeparatorMenuItem</tt> </tt>
264
<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"separator"</tt><tt class="py-op">:</tt> </tt>
265
<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">SeparatorMenuItem</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
266
<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-comment"># <appdir> </tt> </tt>
267
<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"appdir"</tt><tt class="py-op">:</tt> </tt>
268
<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-comment"># create menu from dir with desktop-files</tt> </tt>
269
<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt id="link-34" class="py-name" targets="Variable screenlets.ScreenletTheme.path=screenlets.ScreenletTheme-class.html#path,Variable screenlets.backend.CachingBackend.path=screenlets.backend.CachingBackend-class.html#path"><a title="screenlets.ScreenletTheme.path
270
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-34', 'path', 'link-34');">path</a></tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"path"</tt><tt class="py-op">)</tt> </tt>
271
<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">appmenu</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name" targets="Class screenlets.menu.ApplicationMenu=screenlets.menu.ApplicationMenu-class.html"><a title="screenlets.menu.ApplicationMenu" class="py-name" href="#" onclick="return doclink('link-35', 'ApplicationMenu', 'link-35');">ApplicationMenu</a></tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="screenlets.ScreenletTheme.path
272
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-36', 'path', 'link-34');">path</a></tt><tt class="py-op">)</tt> </tt>
273
<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">cats</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"cats"</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>
274
<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">cat</tt> <tt class="py-keyword">in</tt> <tt class="py-name">cats</tt><tt class="py-op">:</tt> </tt>
275
<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">cat</tt><tt class="py-op">)</tt> </tt>
276
<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-comment">#item = imageitem_from_name('games', cat)</tt> </tt>
277
<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">submenu</tt> <tt class="py-op">=</tt> <tt class="py-name">appmenu</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method screenlets.menu.ApplicationMenu.get_menu_for_category()=screenlets.menu.ApplicationMenu-class.html#get_menu_for_category"><a title="screenlets.menu.ApplicationMenu.get_menu_for_category" class="py-name" href="#" onclick="return doclink('link-37', 'get_menu_for_category', 'link-37');">get_menu_for_category</a></tt><tt class="py-op">(</tt><tt class="py-name">cat</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt>
278
<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">set_submenu</tt><tt class="py-op">(</tt><tt class="py-name">submenu</tt><tt class="py-op">)</tt> </tt>
279
<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="screenlets.Notify.show
280
screenlets.Screenlet.show
281
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-38', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
282
<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="screenlets.Screenlet.menu
283
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-39', 'menu', 'link-4');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
284
<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># to overjump further append-item calls</tt> </tt>
285
<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-comment"># <scandir> create directory list</tt> </tt>
286
<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">nodeName</tt> <tt class="py-op">==</tt> <tt class="py-string">"scandir"</tt><tt class="py-op">:</tt> </tt>
287
<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-comment"># get dirname, prefix, suffix, replace-list, skip-list</tt> </tt>
288
<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">dir</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"directory"</tt><tt class="py-op">)</tt> </tt>
289
<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-comment"># replace $HOME with environment var</tt> </tt>
290
<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">dir</tt> <tt class="py-op">=</tt> <tt class="py-name">dir</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Variable screenlets.plugins.Convert.Converter.replace=screenlets.plugins.Convert.Converter-class.html#replace"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-40', 'replace', 'link-40');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">'$HOME'</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'HOME'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
291
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-comment">#expr = node.getAttribute("expr")</tt> </tt>
292
<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">idprfx</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"id_prefix"</tt><tt class="py-op">)</tt> </tt>
293
<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">idsufx</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"id_suffix"</tt><tt class="py-op">)</tt> </tt>
294
<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">srch</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"search"</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>
295
<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-name">repl</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"replace"</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>
296
<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">skp</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"skip"</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>
297
<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-comment"># get filter attribute</tt> </tt>
298
<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">flt</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">getAttribute</tt><tt class="py-op">(</tt><tt class="py-string">"filter"</tt><tt class="py-op">)</tt> </tt>
299
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">flt</tt><tt class="py-op">==</tt><tt class="py-string">''</tt><tt class="py-op">:</tt> </tt>
300
<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">flt</tt><tt class="py-op">=</tt><tt class="py-string">'*'</tt> </tt>
301
<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-comment"># scan directory and append items to current menu</tt> </tt>
302
<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-comment">#fill_menu_from_directory(dir, menu, callback, regexp=expr, filter=flt)</tt> </tt>
303
<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt id="link-41" class="py-name" targets="Function screenlets.menu.fill_menu_from_directory()=screenlets.menu-module.html#fill_menu_from_directory"><a title="screenlets.menu.fill_menu_from_directory" class="py-name" href="#" onclick="return doclink('link-41', 'fill_menu_from_directory', 'link-41');">fill_menu_from_directory</a></tt><tt class="py-op">(</tt><tt class="py-name">dir</tt><tt class="py-op">,</tt> <tt id="link-42" class="py-name"><a title="screenlets.Screenlet.menu
304
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-42', 'menu', 'link-4');">menu</a></tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">filter</tt><tt class="py-op">=</tt><tt class="py-name">flt</tt><tt class="py-op">,</tt> </tt>
305
<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">id_prefix</tt><tt class="py-op">=</tt><tt class="py-name">idprfx</tt><tt class="py-op">,</tt> <tt class="py-name">id_suffix</tt><tt class="py-op">=</tt><tt class="py-name">idsufx</tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name" targets="Method screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.search()=screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch-class.html#search"><a title="screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.search" class="py-name" href="#" onclick="return doclink('link-43', 'search', 'link-43');">search</a></tt><tt class="py-op">=</tt><tt class="py-name">srch</tt><tt class="py-op">,</tt> </tt>
306
<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt id="link-44" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-44', 'replace', 'link-40');">replace</a></tt><tt class="py-op">=</tt><tt class="py-name">repl</tt><tt class="py-op">,</tt> <tt class="py-name">skip</tt><tt class="py-op">=</tt><tt class="py-name">skp</tt><tt class="py-op">)</tt> </tt>
307
<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-comment"># item created?</tt> </tt>
308
<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">:</tt> </tt>
309
<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">node</tt><tt class="py-op">.</tt><tt class="py-name">hasChildNodes</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
310
<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-comment"># ... call function recursive and set returned menu as submenu</tt> </tt>
311
<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">submenu</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="screenlets.menu.create_menu_from_xml" class="py-name" href="#" onclick="return doclink('link-45', 'create_menu_from_xml', 'link-30');">create_menu_from_xml</a></tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">,</tt> </tt>
312
<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">icon_size</tt><tt class="py-op">)</tt> </tt>
313
<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">set_submenu</tt><tt class="py-op">(</tt><tt class="py-name">submenu</tt><tt class="py-op">)</tt> </tt>
314
<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="screenlets.Notify.show
315
screenlets.Screenlet.show
316
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-46', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
317
<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-47" class="py-name"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-47', 'id', 'link-32');">id</a></tt><tt class="py-op">:</tt> </tt>
318
<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
319
screenlets.plugins.Audacious.AudaciousAPI.connect
320
screenlets.plugins.Banshee.BansheeAPI.connect
321
screenlets.plugins.Exaile.ExaileAPI.connect
322
screenlets.plugins.GenericPlayer.GenericAPI.connect
323
screenlets.plugins.Juk.JukAPI.connect
324
screenlets.plugins.Kaffeine.KaffeineAPI.connect
325
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
326
screenlets.plugins.Listen.ListenAPI.connect
327
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
328
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
329
screenlets.plugins.Sonata.SonataAPI.connect
330
screenlets.plugins.Songbird.SongbirdAPI.connect
331
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-48', 'connect', 'link-17');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt id="link-49" class="py-name"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-49', 'id', 'link-32');">id</a></tt><tt class="py-op">)</tt> </tt>
332
<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt id="link-50" class="py-name"><a title="screenlets.Screenlet.menu
333
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-50', 'menu', 'link-4');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
334
<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-51" class="py-name"><a title="screenlets.Screenlet.menu
335
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-51', 'menu', 'link-4');">menu</a></tt> </tt>
336
</div><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
337
<a name="fill_menu_from_directory"></a><div id="fill_menu_from_directory-def"><a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="fill_menu_from_directory-toggle" onclick="return toggle('fill_menu_from_directory');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#fill_menu_from_directory">fill_menu_from_directory</a> <tt class="py-op">(</tt><tt class="py-param">dirname</tt><tt class="py-op">,</tt> <tt class="py-param">menu</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">,</tt> <tt class="py-param">filter</tt><tt class="py-op">=</tt><tt class="py-string">'*'</tt><tt class="py-op">,</tt> </tt>
338
<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-param">id_prefix</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">id_suffix</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">search</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">replace</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-param">skip</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>
339
</div><div id="fill_menu_from_directory-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="fill_menu_from_directory-expanded"><a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-docstring">"""Create MenuItems from a directory.</tt> </tt>
340
<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> TODO: use regular expressions"""</tt> </tt>
341
<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-comment"># create theme-list from theme-directory</tt> </tt>
342
<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">lst</tt> <tt class="py-op">=</tt> <tt class="py-name">glob</tt><tt class="py-op">.</tt><tt class="py-name">glob</tt><tt class="py-op">(</tt><tt class="py-name">dirname</tt> <tt class="py-op">+</tt> <tt class="py-string">"/"</tt> <tt class="py-op">+</tt> <tt class="py-name">filter</tt><tt class="py-op">)</tt> </tt>
343
<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-comment">#print "Scanning: "+dirname + "/" + filter </tt> </tt>
344
<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">lst</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
345
<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">dlen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">dirname</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
346
<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-comment"># check each entry in dir</tt> </tt>
347
<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">in</tt> <tt class="py-name">lst</tt><tt class="py-op">:</tt> </tt>
348
<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-comment">#print "FILE: " + filename</tt> </tt>
349
<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">fname</tt> <tt class="py-op">=</tt> <tt class="py-name">filename</tt><tt class="py-op">[</tt><tt class="py-name">dlen</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
350
<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-comment"># file allowed?</tt> </tt>
351
<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">skip</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-name">fname</tt><tt class="py-op">)</tt><tt class="py-op"><</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
352
<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-comment">#print "OK"</tt> </tt>
353
<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-comment"># create label (replace unwanted strings)</tt> </tt>
354
<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-52" class="py-name"><a title="screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.search" class="py-name" href="#" onclick="return doclink('link-52', 'search', 'link-43');">search</a></tt><tt class="py-op">)</tt> </tt>
355
<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">l</tt><tt class="py-op">></tt><tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">l</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-53" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-53', 'replace', 'link-40');">replace</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
356
<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
357
<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">fname</tt> <tt class="py-op">=</tt> <tt class="py-name">fname</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-54', 'replace', 'link-40');">replace</a></tt><tt class="py-op">(</tt><tt id="link-55" class="py-name"><a title="screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.search" class="py-name" href="#" onclick="return doclink('link-55', 'search', 'link-43');">search</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-56" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-56', 'replace', 'link-40');">replace</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
358
<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-comment"># create label (add prefix/suffix/replace)</tt> </tt>
359
<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt id="link-57" class="py-name"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-57', 'id', 'link-32');">id</a></tt> <tt class="py-op">=</tt> <tt class="py-name">id_prefix</tt> <tt class="py-op">+</tt> <tt class="py-name">fname</tt> <tt class="py-op">+</tt> <tt class="py-name">id_suffix</tt> </tt>
360
<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-comment">#print "NAME: "+fname</tt> </tt>
361
<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-comment"># create menuitem </tt> </tt>
362
<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">MenuItem</tt><tt class="py-op">(</tt><tt class="py-name">fname</tt><tt class="py-op">)</tt> </tt>
363
<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
364
screenlets.plugins.Audacious.AudaciousAPI.connect
365
screenlets.plugins.Banshee.BansheeAPI.connect
366
screenlets.plugins.Exaile.ExaileAPI.connect
367
screenlets.plugins.GenericPlayer.GenericAPI.connect
368
screenlets.plugins.Juk.JukAPI.connect
369
screenlets.plugins.Kaffeine.KaffeineAPI.connect
370
screenlets.plugins.LastFMProxy.LastFMProxyAPI.connect
371
screenlets.plugins.Listen.ListenAPI.connect
372
screenlets.plugins.Quodlibet.QuodlibetAPI.connect
373
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
374
screenlets.plugins.Sonata.SonataAPI.connect
375
screenlets.plugins.Songbird.SongbirdAPI.connect
376
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-58', 'connect', 'link-17');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt id="link-59" class="py-name"><a title="screenlets.Screenlet.id" class="py-name" href="#" onclick="return doclink('link-59', 'id', 'link-32');">id</a></tt><tt class="py-op">)</tt> </tt>
377
<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="screenlets.Notify.show
378
screenlets.Screenlet.show
379
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-60', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
380
<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt id="link-61" class="py-name"><a title="screenlets.Screenlet.menu
381
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-61', 'menu', 'link-4');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
348
382
</div><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> </tt>
349
<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-comment">#-----------------------------------------------</tt> </tt>
350
<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-comment"># Classes</tt> </tt>
351
<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-comment">#-----------------------------------------------</tt> </tt>
352
<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> </tt>
353
<a name="ApplicationMenu"></a><div id="ApplicationMenu-def"><a name="L219"></a><tt class="py-lineno">219</tt> <a class="py-toggle" href="#" id="ApplicationMenu-toggle" onclick="return toggle('ApplicationMenu');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="screenlets.menu.ApplicationMenu-class.html">ApplicationMenu</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
354
</div><div id="ApplicationMenu-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ApplicationMenu-expanded"><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-docstring">"""A utility-class to simplify the creation of gtk.Menus from directories with </tt> </tt>
355
<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"> desktop-files. Reads all files in one or multiple directories into its internal list </tt> </tt>
356
<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> and offers an easy way to create entire categories as complete gtk.Menu </tt> </tt>
357
<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> with gtk.ImageMenuItems. """</tt> </tt>
358
<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> </tt>
359
<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-comment"># the path to read files from</tt> </tt>
360
<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt id="link-46" class="py-name" targets="Variable screenlets.menu.ApplicationMenu.__path=screenlets.menu.ApplicationMenu-class.html#__path"><a title="screenlets.menu.ApplicationMenu.__path" class="py-name" href="#" onclick="return doclink('link-46', '__path', 'link-46');">__path</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
361
<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-comment"># list with apps (could be called "cache")</tt> </tt>
362
<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt id="link-47" class="py-name" targets="Variable screenlets.menu.ApplicationMenu.__applications=screenlets.menu.ApplicationMenu-class.html#__applications"><a title="screenlets.menu.ApplicationMenu.__applications" class="py-name" href="#" onclick="return doclink('link-47', '__applications', 'link-47');">__applications</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
363
<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> </tt>
364
<a name="ApplicationMenu.__init__"></a><div id="ApplicationMenu.__init__-def"><a name="L230"></a><tt class="py-lineno">230</tt> <a class="py-toggle" href="#" id="ApplicationMenu.__init__-toggle" onclick="return toggle('ApplicationMenu.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu.ApplicationMenu-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">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
365
</div><div id="ApplicationMenu.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="ApplicationMenu.__init__-expanded"><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-docstring">"""constructor"""</tt> </tt>
366
<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="screenlets.menu.ApplicationMenu.__path" class="py-name" href="#" onclick="return doclink('link-48', '__path', 'link-46');">__path</a></tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="screenlets.ScreenletTheme.path
367
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-49', 'path', 'link-15');">path</a></tt> </tt>
368
<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__categories</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
369
<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method screenlets.menu.ApplicationMenu.read_directory()=screenlets.menu.ApplicationMenu-class.html#read_directory"><a title="screenlets.menu.ApplicationMenu.read_directory" class="py-name" href="#" onclick="return doclink('link-50', 'read_directory', 'link-50');">read_directory</a></tt><tt class="py-op">(</tt><tt id="link-51" class="py-name"><a title="screenlets.ScreenletTheme.path
370
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-51', 'path', 'link-15');">path</a></tt><tt class="py-op">)</tt> </tt>
371
</div><a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> </tt>
372
<a name="ApplicationMenu.read_directory"></a><div id="ApplicationMenu.read_directory-def"><a name="L236"></a><tt class="py-lineno">236</tt> <a class="py-toggle" href="#" id="ApplicationMenu.read_directory-toggle" onclick="return toggle('ApplicationMenu.read_directory');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu.ApplicationMenu-class.html#read_directory">read_directory</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
373
</div><div id="ApplicationMenu.read_directory-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="ApplicationMenu.read_directory-expanded"><a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-docstring">"""read all desktop-files in a directory into the internal list</tt> </tt>
374
<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"> and sort them into the available categories"""</tt> </tt>
375
<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">dirlst</tt> <tt class="py-op">=</tt> <tt class="py-name">glob</tt><tt class="py-op">.</tt><tt class="py-name">glob</tt><tt class="py-op">(</tt><tt id="link-52" class="py-name"><a title="screenlets.ScreenletTheme.path
376
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-52', 'path', 'link-15');">path</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'/*'</tt><tt class="py-op">)</tt> </tt>
377
<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-comment">#print "Path: "+path</tt> </tt>
378
<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-name">namelen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-53" class="py-name"><a title="screenlets.ScreenletTheme.path
379
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-53', 'path', 'link-15');">path</a></tt><tt class="py-op">)</tt> </tt>
380
<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">file</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dirlst</tt><tt class="py-op">:</tt> </tt>
381
<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">file</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">8</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-string">'.desktop'</tt><tt class="py-op">:</tt> </tt>
382
<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">fname</tt> <tt class="py-op">=</tt> <tt class="py-name">file</tt><tt class="py-op">[</tt><tt class="py-name">namelen</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
383
<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-comment">#print "file: "+fname</tt> </tt>
384
<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">df</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name" targets="Function screenlets.menu.read_desktop_file()=screenlets.menu-module.html#read_desktop_file"><a title="screenlets.menu.read_desktop_file" class="py-name" href="#" onclick="return doclink('link-54', 'read_desktop_file', 'link-54');">read_desktop_file</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">)</tt> </tt>
385
<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt id="link-55" class="py-name" targets="Variable screenlets.plugins.keyring.KeyRing.Key.name=screenlets.plugins.keyring.KeyRing.Key-class.html#name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-55', 'name', 'link-55');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
386
<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">icon</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
387
<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt id="link-56" class="py-name" targets="Method screenlets.plugins.Mplayer.Mplayer.cmd()=screenlets.plugins.Mplayer.Mplayer-class.html#cmd"><a title="screenlets.plugins.Mplayer.Mplayer.cmd" class="py-name" href="#" onclick="return doclink('link-56', 'cmd', 'link-56');">cmd</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
388
<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
389
<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt id="link-57" class="py-name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-57', 'name', 'link-55');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-string">'Name'</tt><tt class="py-op">]</tt> </tt>
390
<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-name">icon</tt> <tt class="py-op">=</tt> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-string">'Icon'</tt><tt class="py-op">]</tt> </tt>
391
<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt id="link-58" class="py-name"><a title="screenlets.plugins.Mplayer.Mplayer.cmd" class="py-name" href="#" onclick="return doclink('link-58', 'cmd', 'link-56');">cmd</a></tt> <tt class="py-op">=</tt> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-string">'Exec'</tt><tt class="py-op">]</tt> </tt>
392
<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">cats</tt> <tt class="py-op">=</tt> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-string">'Categories'</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>
393
<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-comment">#typ = df['Type']</tt> </tt>
394
<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-comment">#if typ == "Application":</tt> </tt>
395
<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="screenlets.menu.ApplicationMenu.__applications" class="py-name" href="#" onclick="return doclink('link-59', '__applications', 'link-47');">__applications</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">df</tt><tt class="py-op">)</tt> </tt>
396
<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">ex</tt><tt class="py-op">:</tt> </tt>
397
<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"Exception: %s"</tt> <tt class="py-op">%</tt> <tt id="link-60" class="py-name"><a title="screenlets.plugins.Convert.Converter.str" class="py-name" href="#" onclick="return doclink('link-60', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">ex</tt><tt class="py-op">)</tt> </tt>
398
<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"An error occured with desktop-file: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">file</tt> </tt>
399
</div><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> </tt>
400
<a name="ApplicationMenu.get_menu_for_category"></a><div id="ApplicationMenu.get_menu_for_category-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="ApplicationMenu.get_menu_for_category-toggle" onclick="return toggle('ApplicationMenu.get_menu_for_category');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu.ApplicationMenu-class.html#get_menu_for_category">get_menu_for_category</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cat_name</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
401
</div><div id="ApplicationMenu.get_menu_for_category-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="ApplicationMenu.get_menu_for_category-expanded"><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-docstring">"""returns a gtk.Menu with all apps in the given category"""</tt> </tt>
402
<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-comment"># get apps in the category</tt> </tt>
403
<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">applist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
404
<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">app</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="screenlets.menu.ApplicationMenu.__applications" class="py-name" href="#" onclick="return doclink('link-61', '__applications', 'link-47');">__applications</a></tt><tt class="py-op">:</tt> </tt>
405
<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
406
<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">';'</tt><tt class="py-op">+</tt><tt class="py-name">app</tt><tt class="py-op">[</tt><tt class="py-string">'Categories'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-string">';'</tt><tt class="py-op">+</tt><tt class="py-name">cat_name</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>
407
<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">applist</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">app</tt><tt class="py-op">)</tt> </tt>
408
<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
409
<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
410
<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> </tt>
411
<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-comment"># remove duplicates</tt> </tt>
412
<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">app</tt> <tt class="py-keyword">in</tt> <tt class="py-name">applist</tt><tt class="py-op">:</tt> </tt>
413
<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">applist</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-name">app</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
414
<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">applist</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">app</tt><tt class="py-op">)</tt> </tt>
415
<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-comment"># sort list</tt> </tt>
416
<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">applist</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
417
<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-comment"># create menu from list</tt> </tt>
418
<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt id="link-62" class="py-name"><a title="screenlets.Screenlet.menu
419
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-62', 'menu', 'link-1');">menu</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
420
<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">app</tt> <tt class="py-keyword">in</tt> <tt class="py-name">applist</tt><tt class="py-op">:</tt> </tt>
421
<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="screenlets.menu.imageitem_from_name" class="py-name" href="#" onclick="return doclink('link-63', 'imageitem_from_name', 'link-14');">imageitem_from_name</a></tt><tt class="py-op">(</tt><tt class="py-name">app</tt><tt class="py-op">[</tt><tt class="py-string">'Icon'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">app</tt><tt class="py-op">[</tt><tt class="py-string">'Name'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">24</tt><tt class="py-op">)</tt> </tt>
422
<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">:</tt> </tt>
423
<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
383
<a name="imageitem_from_name"></a><div id="imageitem_from_name-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="imageitem_from_name-toggle" onclick="return toggle('imageitem_from_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#imageitem_from_name">imageitem_from_name</a> <tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">,</tt> <tt class="py-param">icon_size</tt><tt class="py-op">=</tt><tt class="py-number">32</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
384
</div><div id="imageitem_from_name-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="imageitem_from_name-expanded"><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-docstring">"""Creates a new gtk.ImageMenuItem from a given icon/filename.</tt> </tt>
385
<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> If an absolute path is not given, the function checks for the name</tt> </tt>
386
<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> of the icon within the current gtk-theme."""</tt> </tt>
387
<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="screenlets.menu.ImageMenuItem" class="py-name" href="#" onclick="return doclink('link-62', 'ImageMenuItem', 'link-5');">ImageMenuItem</a></tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
388
<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">image</tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
389
<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt> <tt class="py-keyword">and</tt> <tt class="py-name">filename</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-string">'/'</tt><tt class="py-op">:</tt> </tt>
390
<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-comment"># load from file</tt> </tt>
391
<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
392
<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">set_from_file</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
393
<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">pb</tt> <tt class="py-op">=</tt> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">get_pixbuf</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
394
<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-comment"># rescale, if too big</tt> </tt>
395
<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pb</tt><tt class="py-op">.</tt><tt class="py-name">get_width</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">icon_size</tt> <tt class="py-op">:</tt> </tt>
396
<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">pb2</tt> <tt class="py-op">=</tt> <tt class="py-name">pb</tt><tt class="py-op">.</tt><tt class="py-name">scale_simple</tt><tt class="py-op">(</tt> </tt>
397
<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">icon_size</tt><tt class="py-op">,</tt> <tt class="py-name">icon_size</tt><tt class="py-op">,</tt> </tt>
398
<a name="L230"></a><tt class="py-lineno">230</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">INTERP_HYPER</tt><tt class="py-op">)</tt> </tt>
399
<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">set_from_pixbuf</tt><tt class="py-op">(</tt><tt class="py-name">pb2</tt><tt class="py-op">)</tt> </tt>
400
<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
401
<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">set_from_pixbuf</tt><tt class="py-op">(</tt><tt class="py-name">pb</tt><tt class="py-op">)</tt> </tt>
402
<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
403
<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"Error while creating image from file: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">filename</tt> </tt>
404
<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
405
<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
406
<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">set_from_icon_name</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> <tt class="py-comment"># TODO: use better size</tt> </tt>
407
<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">image</tt><tt class="py-op">:</tt> </tt>
408
<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt class="py-name">set_image</tt><tt class="py-op">(</tt><tt class="py-name">image</tt><tt class="py-op">)</tt> </tt>
409
<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">item</tt> </tt>
410
</div><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> </tt>
411
<a name="read_desktop_file"></a><div id="read_desktop_file-def"><a name="L243"></a><tt class="py-lineno">243</tt> <a class="py-toggle" href="#" id="read_desktop_file-toggle" onclick="return toggle('read_desktop_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu-module.html#read_desktop_file">read_desktop_file</a> <tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
412
</div><div id="read_desktop_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="read_desktop_file-expanded"><a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-docstring">"""Read ".desktop"-file into a dict</tt> </tt>
413
<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"> NOTE: Should use utils.IniReader ..."""</tt> </tt>
414
<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">list</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
415
<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> </tt>
416
<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
417
<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name" targets="Method screenlets.utils.FileMonitor.open()=screenlets.utils.FileMonitor-class.html#open"><a title="screenlets.utils.FileMonitor.open" class="py-name" href="#" onclick="return doclink('link-63', 'open', 'link-63');">open</a></tt> <tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">"r"</tt><tt class="py-op">)</tt> </tt>
418
<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
419
<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"Error: file %s not found."</tt> <tt class="py-op">%</tt> <tt class="py-name">filename</tt> </tt>
420
<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">f</tt><tt class="py-op">:</tt> </tt>
421
<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">readlines</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
422
<a name="L254"></a><tt class="py-lineno">254</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">lines</tt><tt class="py-op">:</tt> </tt>
423
<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">"#"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt> <tt class="py-op">!=</tt><tt class="py-string">"\n"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">line</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">"["</tt><tt class="py-op">:</tt> </tt>
424
<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">ll</tt> <tt class="py-op">=</tt> <tt class="py-name">line</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>
425
<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ll</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
426
<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">ll</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">ll</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="screenlets.plugins.Convert.Converter.replace" class="py-name" href="#" onclick="return doclink('link-64', 'replace', 'link-40');">replace</a></tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt> <tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
427
<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">list</tt> </tt>
428
</div><a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> </tt>
429
<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-comment">#-----------------------------------------------</tt> </tt>
430
<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-comment"># Classes</tt> </tt>
431
<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-comment">#-----------------------------------------------</tt> </tt>
432
<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> </tt>
433
<a name="ApplicationMenu"></a><div id="ApplicationMenu-def"><a name="L265"></a><tt class="py-lineno">265</tt> <a class="py-toggle" href="#" id="ApplicationMenu-toggle" onclick="return toggle('ApplicationMenu');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="screenlets.menu.ApplicationMenu-class.html">ApplicationMenu</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
434
</div><div id="ApplicationMenu-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ApplicationMenu-expanded"><a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-docstring">"""A utility-class to simplify the creation of gtk.Menus from directories with </tt> </tt>
435
<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-docstring"> desktop-files. Reads all files in one or multiple directories into its internal list </tt> </tt>
436
<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"> and offers an easy way to create entire categories as complete gtk.Menu </tt> </tt>
437
<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> with gtk.ImageMenuItems. """</tt> </tt>
438
<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> </tt>
439
<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-comment"># the path to read files from</tt> </tt>
440
<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt id="link-65" class="py-name" targets="Variable screenlets.menu.ApplicationMenu.__path=screenlets.menu.ApplicationMenu-class.html#__path"><a title="screenlets.menu.ApplicationMenu.__path" class="py-name" href="#" onclick="return doclink('link-65', '__path', 'link-65');">__path</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
441
<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-comment"># list with apps (could be called "cache")</tt> </tt>
442
<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt id="link-66" class="py-name" targets="Variable screenlets.menu.ApplicationMenu.__applications=screenlets.menu.ApplicationMenu-class.html#__applications"><a title="screenlets.menu.ApplicationMenu.__applications" class="py-name" href="#" onclick="return doclink('link-66', '__applications', 'link-66');">__applications</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
443
<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> </tt>
444
<a name="ApplicationMenu.__init__"></a><div id="ApplicationMenu.__init__-def"><a name="L276"></a><tt class="py-lineno">276</tt> <a class="py-toggle" href="#" id="ApplicationMenu.__init__-toggle" onclick="return toggle('ApplicationMenu.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu.ApplicationMenu-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">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
445
</div><div id="ApplicationMenu.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="ApplicationMenu.__init__-expanded"><a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-docstring">"""constructor"""</tt> </tt>
446
<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="screenlets.menu.ApplicationMenu.__path" class="py-name" href="#" onclick="return doclink('link-67', '__path', 'link-65');">__path</a></tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name"><a title="screenlets.ScreenletTheme.path
447
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-68', 'path', 'link-34');">path</a></tt> </tt>
448
<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__categories</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
449
<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method screenlets.menu.ApplicationMenu.read_directory()=screenlets.menu.ApplicationMenu-class.html#read_directory"><a title="screenlets.menu.ApplicationMenu.read_directory" class="py-name" href="#" onclick="return doclink('link-69', 'read_directory', 'link-69');">read_directory</a></tt><tt class="py-op">(</tt><tt id="link-70" class="py-name"><a title="screenlets.ScreenletTheme.path
450
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-70', 'path', 'link-34');">path</a></tt><tt class="py-op">)</tt> </tt>
451
</div><a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> </tt>
452
<a name="ApplicationMenu.read_directory"></a><div id="ApplicationMenu.read_directory-def"><a name="L282"></a><tt class="py-lineno">282</tt> <a class="py-toggle" href="#" id="ApplicationMenu.read_directory-toggle" onclick="return toggle('ApplicationMenu.read_directory');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu.ApplicationMenu-class.html#read_directory">read_directory</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">path</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
453
</div><div id="ApplicationMenu.read_directory-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="ApplicationMenu.read_directory-expanded"><a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-docstring">"""read all desktop-files in a directory into the internal list</tt> </tt>
454
<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"><tt class="py-docstring"> and sort them into the available categories"""</tt> </tt>
455
<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">dirlst</tt> <tt class="py-op">=</tt> <tt class="py-name">glob</tt><tt class="py-op">.</tt><tt class="py-name">glob</tt><tt class="py-op">(</tt><tt id="link-71" class="py-name"><a title="screenlets.ScreenletTheme.path
456
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-71', 'path', 'link-34');">path</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'/*'</tt><tt class="py-op">)</tt> </tt>
457
<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-comment">#print "Path: "+path</tt> </tt>
458
<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-name">namelen</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="screenlets.ScreenletTheme.path
459
screenlets.backend.CachingBackend.path" class="py-name" href="#" onclick="return doclink('link-72', 'path', 'link-34');">path</a></tt><tt class="py-op">)</tt> </tt>
460
<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">file</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dirlst</tt><tt class="py-op">:</tt> </tt>
461
<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">file</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">8</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">==</tt><tt class="py-string">'.desktop'</tt><tt class="py-op">:</tt> </tt>
462
<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-name">fname</tt> <tt class="py-op">=</tt> <tt class="py-name">file</tt><tt class="py-op">[</tt><tt class="py-name">namelen</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
463
<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-comment">#print "file: "+fname</tt> </tt>
464
<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">df</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name" targets="Function screenlets.menu.read_desktop_file()=screenlets.menu-module.html#read_desktop_file"><a title="screenlets.menu.read_desktop_file" class="py-name" href="#" onclick="return doclink('link-73', 'read_desktop_file', 'link-73');">read_desktop_file</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">)</tt> </tt>
465
<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt id="link-74" class="py-name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-74', 'name', 'link-11');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
466
<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">icon</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
467
<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt id="link-75" class="py-name" targets="Method screenlets.plugins.Mplayer.Mplayer.cmd()=screenlets.plugins.Mplayer.Mplayer-class.html#cmd"><a title="screenlets.plugins.Mplayer.Mplayer.cmd" class="py-name" href="#" onclick="return doclink('link-75', 'cmd', 'link-75');">cmd</a></tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
468
<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
469
<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt id="link-76" class="py-name"><a title="screenlets.plugins.keyring.KeyRing.Key.name" class="py-name" href="#" onclick="return doclink('link-76', 'name', 'link-11');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-string">'Name'</tt><tt class="py-op">]</tt> </tt>
470
<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">icon</tt> <tt class="py-op">=</tt> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-string">'Icon'</tt><tt class="py-op">]</tt> </tt>
471
<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt id="link-77" class="py-name"><a title="screenlets.plugins.Mplayer.Mplayer.cmd" class="py-name" href="#" onclick="return doclink('link-77', 'cmd', 'link-75');">cmd</a></tt> <tt class="py-op">=</tt> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-string">'Exec'</tt><tt class="py-op">]</tt> </tt>
472
<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">cats</tt> <tt class="py-op">=</tt> <tt class="py-name">df</tt><tt class="py-op">[</tt><tt class="py-string">'Categories'</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>
473
<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-comment">#typ = df['Type']</tt> </tt>
474
<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-comment">#if typ == "Application":</tt> </tt>
475
<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="screenlets.menu.ApplicationMenu.__applications" class="py-name" href="#" onclick="return doclink('link-78', '__applications', 'link-66');">__applications</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">df</tt><tt class="py-op">)</tt> </tt>
476
<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">ex</tt><tt class="py-op">:</tt> </tt>
477
<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"Exception: %s"</tt> <tt class="py-op">%</tt> <tt id="link-79" class="py-name"><a title="screenlets.plugins.Convert.Converter.str" class="py-name" href="#" onclick="return doclink('link-79', 'str', 'link-29');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">ex</tt><tt class="py-op">)</tt> </tt>
478
<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">"An error occured with desktop-file: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">file</tt> </tt>
479
</div><a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> </tt>
480
<a name="ApplicationMenu.get_menu_for_category"></a><div id="ApplicationMenu.get_menu_for_category-def"><a name="L308"></a><tt class="py-lineno">308</tt> <a class="py-toggle" href="#" id="ApplicationMenu.get_menu_for_category-toggle" onclick="return toggle('ApplicationMenu.get_menu_for_category');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu.ApplicationMenu-class.html#get_menu_for_category">get_menu_for_category</a> <tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cat_name</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
481
</div><div id="ApplicationMenu.get_menu_for_category-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="ApplicationMenu.get_menu_for_category-expanded"><a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-docstring">"""returns a gtk.Menu with all apps in the given category"""</tt> </tt>
482
<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-comment"># get apps in the category</tt> </tt>
483
<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">applist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
484
<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">app</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="screenlets.menu.ApplicationMenu.__applications" class="py-name" href="#" onclick="return doclink('link-80', '__applications', 'link-66');">__applications</a></tt><tt class="py-op">:</tt> </tt>
485
<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
486
<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-string">';'</tt><tt class="py-op">+</tt><tt class="py-name">app</tt><tt class="py-op">[</tt><tt class="py-string">'Categories'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-string">';'</tt><tt class="py-op">+</tt><tt class="py-name">cat_name</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>
487
<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-name">applist</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">app</tt><tt class="py-op">)</tt> </tt>
488
<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
489
<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
490
<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> </tt>
491
<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-comment"># remove duplicates</tt> </tt>
492
<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">app</tt> <tt class="py-keyword">in</tt> <tt class="py-name">applist</tt><tt class="py-op">:</tt> </tt>
493
<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">applist</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-name">app</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
494
<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">applist</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">app</tt><tt class="py-op">)</tt> </tt>
495
<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-comment"># sort list</tt> </tt>
496
<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">applist</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
497
<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-comment"># create menu from list</tt> </tt>
498
<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt id="link-81" class="py-name"><a title="screenlets.Screenlet.menu
499
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-81', 'menu', 'link-4');">menu</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
500
<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">app</tt> <tt class="py-keyword">in</tt> <tt class="py-name">applist</tt><tt class="py-op">:</tt> </tt>
501
<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt id="link-82" class="py-name"><a title="screenlets.menu.imageitem_from_name" class="py-name" href="#" onclick="return doclink('link-82', 'imageitem_from_name', 'link-33');">imageitem_from_name</a></tt><tt class="py-op">(</tt><tt class="py-name">app</tt><tt class="py-op">[</tt><tt class="py-string">'Icon'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">app</tt><tt class="py-op">[</tt><tt class="py-string">'Name'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">24</tt><tt class="py-op">)</tt> </tt>
502
<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">item</tt><tt class="py-op">:</tt> </tt>
503
<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="screenlets.plugins.Amarok.AmarokAPI.connect
424
504
screenlets.plugins.Audacious.AudaciousAPI.connect
425
505
screenlets.plugins.Banshee.BansheeAPI.connect
426
506
screenlets.plugins.Exaile.ExaileAPI.connect
433
513
screenlets.plugins.Rhythmbox.RhythmboxAPI.connect
434
514
screenlets.plugins.Sonata.SonataAPI.connect
435
515
screenlets.plugins.Songbird.SongbirdAPI.connect
436
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-64', 'connect', 'link-5');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-string">"exec:"</tt> <tt class="py-op">+</tt> <tt class="py-name">app</tt><tt class="py-op">[</tt><tt class="py-string">'Exec'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
437
<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="screenlets.Notify.show
516
screenlets.plugins.mpdclient2.connect" class="py-name" href="#" onclick="return doclink('link-83', 'connect', 'link-17');">connect</a></tt><tt class="py-op">(</tt><tt class="py-string">"activate"</tt><tt class="py-op">,</tt> <tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-string">"exec:"</tt> <tt class="py-op">+</tt> <tt class="py-name">app</tt><tt class="py-op">[</tt><tt class="py-string">'Exec'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
517
<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-name">item</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="screenlets.Notify.show
438
518
screenlets.Screenlet.show
439
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-65', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
440
<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt id="link-66" class="py-name"><a title="screenlets.Screenlet.menu
441
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-66', 'menu', 'link-1');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
442
<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-comment"># return menu</tt> </tt>
443
<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-67" class="py-name"><a title="screenlets.Screenlet.menu
444
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-67', 'menu', 'link-1');">menu</a></tt> </tt>
445
</div></div><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> </tt>
446
<a name="DefaultMenuItem"></a><div id="DefaultMenuItem-def"><a name="L290"></a><tt class="py-lineno">290</tt> <a class="py-toggle" href="#" id="DefaultMenuItem-toggle" onclick="return toggle('DefaultMenuItem');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="screenlets.menu.DefaultMenuItem-class.html">DefaultMenuItem</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
447
</div><div id="DefaultMenuItem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DefaultMenuItem-expanded"><a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-docstring">"""A container with constants for the default menuitems"""</tt> </tt>
448
<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> </tt>
449
<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-comment"># default menuitem constants (is it right to increase like this?)</tt> </tt>
450
<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt id="link-68" class="py-name" targets="Variable screenlets.DefaultMenuItem.NONE=screenlets.DefaultMenuItem-class.html#NONE,Variable screenlets.menu.DefaultMenuItem.NONE=screenlets.menu.DefaultMenuItem-class.html#NONE"><a title="screenlets.DefaultMenuItem.NONE
451
screenlets.menu.DefaultMenuItem.NONE" class="py-name" href="#" onclick="return doclink('link-68', 'NONE', 'link-68');">NONE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
452
<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt id="link-69" class="py-name" targets="Variable screenlets.DefaultMenuItem.DELETE=screenlets.DefaultMenuItem-class.html#DELETE,Variable screenlets.menu.DefaultMenuItem.DELETE=screenlets.menu.DefaultMenuItem-class.html#DELETE"><a title="screenlets.DefaultMenuItem.DELETE
453
screenlets.menu.DefaultMenuItem.DELETE" class="py-name" href="#" onclick="return doclink('link-69', 'DELETE', 'link-69');">DELETE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
454
<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt id="link-70" class="py-name" targets="Variable screenlets.DefaultMenuItem.THEMES=screenlets.DefaultMenuItem-class.html#THEMES,Variable screenlets.menu.DefaultMenuItem.THEMES=screenlets.menu.DefaultMenuItem-class.html#THEMES"><a title="screenlets.DefaultMenuItem.THEMES
455
screenlets.menu.DefaultMenuItem.THEMES" class="py-name" href="#" onclick="return doclink('link-70', 'THEMES', 'link-70');">THEMES</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
456
<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt id="link-71" class="py-name" targets="Variable screenlets.DefaultMenuItem.INFO=screenlets.DefaultMenuItem-class.html#INFO,Variable screenlets.menu.DefaultMenuItem.INFO=screenlets.menu.DefaultMenuItem-class.html#INFO"><a title="screenlets.DefaultMenuItem.INFO
457
screenlets.menu.DefaultMenuItem.INFO" class="py-name" href="#" onclick="return doclink('link-71', 'INFO', 'link-71');">INFO</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
458
<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt id="link-72" class="py-name" targets="Variable screenlets.DefaultMenuItem.SIZE=screenlets.DefaultMenuItem-class.html#SIZE,Variable screenlets.menu.DefaultMenuItem.SIZE=screenlets.menu.DefaultMenuItem-class.html#SIZE"><a title="screenlets.DefaultMenuItem.SIZE
459
screenlets.menu.DefaultMenuItem.SIZE" class="py-name" href="#" onclick="return doclink('link-72', 'SIZE', 'link-72');">SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">8</tt> </tt>
460
<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt id="link-73" class="py-name" targets="Variable screenlets.DefaultMenuItem.WINDOW_MENU=screenlets.DefaultMenuItem-class.html#WINDOW_MENU,Variable screenlets.menu.DefaultMenuItem.WINDOW_MENU=screenlets.menu.DefaultMenuItem-class.html#WINDOW_MENU"><a title="screenlets.DefaultMenuItem.WINDOW_MENU
461
screenlets.menu.DefaultMenuItem.WINDOW_MENU" class="py-name" href="#" onclick="return doclink('link-73', 'WINDOW_MENU', 'link-73');">WINDOW_MENU</a></tt> <tt class="py-op">=</tt> <tt class="py-number">16</tt> </tt>
462
<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt id="link-74" class="py-name" targets="Variable screenlets.DefaultMenuItem.PROPERTIES=screenlets.DefaultMenuItem-class.html#PROPERTIES,Variable screenlets.menu.DefaultMenuItem.PROPERTIES=screenlets.menu.DefaultMenuItem-class.html#PROPERTIES"><a title="screenlets.DefaultMenuItem.PROPERTIES
463
screenlets.menu.DefaultMenuItem.PROPERTIES" class="py-name" href="#" onclick="return doclink('link-74', 'PROPERTIES', 'link-74');">PROPERTIES</a></tt> <tt class="py-op">=</tt> <tt class="py-number">32</tt> </tt>
464
<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt id="link-75" class="py-name"><a title="screenlets.DefaultMenuItem.DELETE
465
screenlets.menu.DefaultMenuItem.DELETE" class="py-name" href="#" onclick="return doclink('link-75', 'DELETE', 'link-69');">DELETE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">64</tt> </tt>
466
<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt id="link-76" class="py-name" targets="Variable screenlets.DefaultMenuItem.QUIT=screenlets.DefaultMenuItem-class.html#QUIT,Variable screenlets.menu.DefaultMenuItem.QUIT=screenlets.menu.DefaultMenuItem-class.html#QUIT"><a title="screenlets.DefaultMenuItem.QUIT
467
screenlets.menu.DefaultMenuItem.QUIT" class="py-name" href="#" onclick="return doclink('link-76', 'QUIT', 'link-76');">QUIT</a></tt> <tt class="py-op">=</tt> <tt class="py-number">128</tt> </tt>
468
<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt id="link-77" class="py-name" targets="Variable screenlets.DefaultMenuItem.QUIT_ALL=screenlets.DefaultMenuItem-class.html#QUIT_ALL,Variable screenlets.menu.DefaultMenuItem.QUIT_ALL=screenlets.menu.DefaultMenuItem-class.html#QUIT_ALL"><a title="screenlets.DefaultMenuItem.QUIT_ALL
469
screenlets.menu.DefaultMenuItem.QUIT_ALL" class="py-name" href="#" onclick="return doclink('link-77', 'QUIT_ALL', 'link-77');">QUIT_ALL</a></tt> <tt class="py-op">=</tt> <tt class="py-number">256</tt> </tt>
470
<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-comment"># EXPERIMENTAL!! If you use this, the file menu.xml in the </tt> </tt>
471
<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-comment"># Screenlet's data-dir is used for generating the menu ...</tt> </tt>
472
<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt id="link-78" class="py-name" targets="Variable screenlets.DefaultMenuItem.XML=screenlets.DefaultMenuItem-class.html#XML,Variable screenlets.menu.DefaultMenuItem.XML=screenlets.menu.DefaultMenuItem-class.html#XML"><a title="screenlets.DefaultMenuItem.XML
473
screenlets.menu.DefaultMenuItem.XML" class="py-name" href="#" onclick="return doclink('link-78', 'XML', 'link-78');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-number">512</tt> </tt>
474
<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt id="link-79" class="py-name" targets="Variable screenlets.DefaultMenuItem.ADD=screenlets.DefaultMenuItem-class.html#ADD,Variable screenlets.menu.DefaultMenuItem.ADD=screenlets.menu.DefaultMenuItem-class.html#ADD"><a title="screenlets.DefaultMenuItem.ADD
475
screenlets.menu.DefaultMenuItem.ADD" class="py-name" href="#" onclick="return doclink('link-79', 'ADD', 'link-79');">ADD</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1024</tt> </tt>
476
<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-comment"># the default items</tt> </tt>
477
<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt id="link-80" class="py-name" targets="Variable screenlets.DefaultMenuItem.STANDARD=screenlets.DefaultMenuItem-class.html#STANDARD,Variable screenlets.menu.DefaultMenuItem.STANDARD=screenlets.menu.DefaultMenuItem-class.html#STANDARD"><a title="screenlets.DefaultMenuItem.STANDARD
478
screenlets.menu.DefaultMenuItem.STANDARD" class="py-name" href="#" onclick="return doclink('link-80', 'STANDARD', 'link-80');">STANDARD</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">|</tt><tt class="py-number">2</tt><tt class="py-op">|</tt><tt class="py-number">8</tt><tt class="py-op">|</tt><tt class="py-number">16</tt><tt class="py-op">|</tt><tt class="py-number">32</tt><tt class="py-op">|</tt><tt class="py-number">64</tt><tt class="py-op">|</tt><tt class="py-number">128</tt><tt class="py-op">|</tt><tt class="py-number">256</tt><tt class="py-op">|</tt><tt class="py-number">1024</tt> </tt>
479
</div><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt>
480
<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> </tt>
481
<a name="ImageMenuItem"></a><div id="ImageMenuItem-def"><a name="L312"></a><tt class="py-lineno">312</tt> <a class="py-toggle" href="#" id="ImageMenuItem-toggle" onclick="return toggle('ImageMenuItem');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="screenlets.menu.ImageMenuItem-class.html">ImageMenuItem</a><tt class="py-op">(</tt><tt class="py-base-class">gtk</tt><tt class="py-op">.</tt><tt class="py-base-class">ImageMenuItem</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
482
</div><div id="ImageMenuItem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ImageMenuItem-expanded"><a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-docstring">"""A menuitem with a custom image and label.</tt> </tt>
483
<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"><tt class="py-docstring"> To set the image to a non-stock image, just</tt> </tt>
484
<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"><tt class="py-docstring"> create the menuitem without an image and then</tt> </tt>
485
<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"> set the image with the appropriate method."""</tt> </tt>
486
<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> </tt>
487
<a name="ImageMenuItem.__init__"></a><div id="ImageMenuItem.__init__-def"><a name="L318"></a><tt class="py-lineno">318</tt> <a class="py-toggle" href="#" id="ImageMenuItem.__init__-toggle" onclick="return toggle('ImageMenuItem.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu.ImageMenuItem-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">stock</tt><tt class="py-op">=</tt><tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">STOCK_MISSING_IMAGE</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
488
</div><div id="ImageMenuItem.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="ImageMenuItem.__init__-expanded"><a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-docstring">"""stock: a stock image or 'none'.</tt> </tt>
489
<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> label: text to set as the label or None."""</tt> </tt>
490
<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-comment"># call the superclass</tt> </tt>
491
<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-81" class="py-name"><a title="screenlets.menu.ImageMenuItem" class="py-name" href="#" onclick="return doclink('link-81', 'ImageMenuItem', 'link-2');">ImageMenuItem</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method screenlets.Notify.__init__()=screenlets.Notify-class.html#__init__,Method screenlets.Screenlet.__init__()=screenlets.Screenlet-class.html#__init__,Method screenlets.ScreenletTheme.__init__()=screenlets.ScreenletTheme-class.html#__init__,Method screenlets.ShapedWidget.__init__()=screenlets.ShapedWidget-class.html#__init__,Method screenlets.Tooltip.__init__()=screenlets.Tooltip-class.html#__init__,Method screenlets.backend.CachingBackend.__init__()=screenlets.backend.CachingBackend-class.html#__init__,Method screenlets.backend.GconfBackend.__init__()=screenlets.backend.GconfBackend-class.html#__init__,Method screenlets.backend.ScreenletsBackend.__init__()=screenlets.backend.ScreenletsBackend-class.html#__init__,Method screenlets.install.ScreenletInstaller.__init__()=screenlets.install.ScreenletInstaller-class.html#__init__,Method screenlets.menu.ApplicationMenu.__init__()=screenlets.menu.ApplicationMenu-class.html#__init__,Method screenlets.menu.ImageMenuItem.__init__()=screenlets.menu.ImageMenuItem-class.html#__init__,Method screenlets.options.AccountOption.__init__()=screenlets.options.AccountOption-class.html#__init__,Method screenlets.options.EditableOptions.__init__()=screenlets.options.EditableOptions-class.html#__init__,Method screenlets.options.FileOption.__init__()=screenlets.options.FileOption-class.html#__init__,Method screenlets.options.FloatOption.__init__()=screenlets.options.FloatOption-class.html#__init__,Method screenlets.options.IntOption.__init__()=screenlets.options.IntOption-class.html#__init__,Method screenlets.options.ListOptionDialog.__init__()=screenlets.options.ListOptionDialog-class.html#__init__,Method screenlets.options.Option.__init__()=screenlets.options.Option-class.html#__init__,Method screenlets.options.OptionsDialog.__init__()=screenlets.options.OptionsDialog-class.html#__init__,Method screenlets.options.StringOption.__init__()=screenlets.options.StringOption-class.html#__init__,Method screenlets.plugins.Amarok.AmarokAPI.__init__()=screenlets.plugins.Amarok.AmarokAPI-class.html#__init__,Method screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.__init__()=screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch-class.html#__init__,Method screenlets.plugins.Audacious.AudaciousAPI.__init__()=screenlets.plugins.Audacious.AudaciousAPI-class.html#__init__,Method screenlets.plugins.Banshee.BansheeAPI.__init__()=screenlets.plugins.Banshee.BansheeAPI-class.html#__init__,Method screenlets.plugins.Convert.Converter.__init__()=screenlets.plugins.Convert.Converter-class.html#__init__,Method screenlets.plugins.CoverSearch.CoverSearch.__init__()=screenlets.plugins.CoverSearch.CoverSearch-class.html#__init__,Method screenlets.plugins.Exaile.ExaileAPI.__init__()=screenlets.plugins.Exaile.ExaileAPI-class.html#__init__,Method screenlets.plugins.Flickr.Flickr.__init__()=screenlets.plugins.Flickr.Flickr-class.html#__init__,Method screenlets.plugins.GenericPlayer.GenericAPI.__init__()=screenlets.plugins.GenericPlayer.GenericAPI-class.html#__init__,Method screenlets.plugins.Gstreamer.gstreamer.__init__()=screenlets.plugins.Gstreamer.gstreamer-class.html#__init__,Method screenlets.plugins.Juk.JukAPI.__init__()=screenlets.plugins.Juk.JukAPI-class.html#__init__,Method screenlets.plugins.Kaffeine.KaffeineAPI.__init__()=screenlets.plugins.Kaffeine.KaffeineAPI-class.html#__init__,Method screenlets.plugins.LastFMProxy.LastFMProxyAPI.__init__()=screenlets.plugins.LastFMProxy.LastFMProxyAPI-class.html#__init__,Method screenlets.plugins.Listen.ListenAPI.__init__()=screenlets.plugins.Listen.ListenAPI-class.html#__init__,Method screenlets.plugins.Loader.GnomeVFSAsyncSrc.__init__()=screenlets.plugins.Loader.GnomeVFSAsyncSrc-class.html#__init__,Method screenlets.plugins.Mail.IMAPBackend.__init__()=screenlets.plugins.Mail.IMAPBackend-class.html#__init__,Method screenlets.plugins.Mail.MailCheckBackend.__init__()=screenlets.plugins.Mail.MailCheckBackend-class.html#__init__,Method screenlets.plugins.Mail.Mailer.__init__()=screenlets.plugins.Mail.Mailer-class.html#__init__,Method screenlets.plugins.Mail.POP3Backend.__init__()=screenlets.plugins.Mail.POP3Backend-class.html#__init__,Method screenlets.plugins.Mplayer.Mplayer.__init__()=screenlets.plugins.Mplayer.Mplayer-class.html#__init__,Method screenlets.plugins.Proxy.Proxy.__init__()=screenlets.plugins.Proxy.Proxy-class.html#__init__,Method screenlets.plugins.Quodlibet.QuodlibetAPI.__init__()=screenlets.plugins.Quodlibet.QuodlibetAPI-class.html#__init__,Method screenlets.plugins.Rhythmbox.RhythmboxAPI.__init__()=screenlets.plugins.Rhythmbox.RhythmboxAPI-class.html#__init__,Method screenlets.plugins.Sonata.SonataAPI.__init__()=screenlets.plugins.Sonata.SonataAPI-class.html#__init__,Method screenlets.plugins.Songbird.SongbirdAPI.__init__()=screenlets.plugins.Songbird.SongbirdAPI-class.html#__init__,Method screenlets.plugins.TemperatureConverter.TemperatureConverter.__init__()=screenlets.plugins.TemperatureConverter.TemperatureConverter-class.html#__init__,Method screenlets.plugins.iCal.DateSet.__init__()=screenlets.plugins.iCal.DateSet-class.html#__init__,Method screenlets.plugins.iCal.ICalEvent.__init__()=screenlets.plugins.iCal.ICalEvent-class.html#__init__,Method screenlets.plugins.iCal.ICalReader.__init__()=screenlets.plugins.iCal.ICalReader-class.html#__init__,Method screenlets.plugins.keyring.KeyRing.Key.__init__()=screenlets.plugins.keyring.KeyRing.Key-class.html#__init__,Method screenlets.plugins.keyring.KeyRing.__init__()=screenlets.plugins.keyring.KeyRing-class.html#__init__,Method screenlets.plugins.mpdclient2.command_sender.__init__()=screenlets.plugins.mpdclient2.command_sender-class.html#__init__,Method screenlets.plugins.mpdclient2.mpd_connection.__init__()=screenlets.plugins.mpdclient2.mpd_connection-class.html#__init__,Method screenlets.plugins.mpdclient2.response_fetcher.__init__()=screenlets.plugins.mpdclient2.response_fetcher-class.html#__init__,Method screenlets.plugins.mpdclient2.sender_n_fetcher.__init__()=screenlets.plugins.mpdclient2.sender_n_fetcher-class.html#__init__,Method screenlets.plugins.mpdclient2.socket_talker.__init__()=screenlets.plugins.mpdclient2.socket_talker-class.html#__init__,Method screenlets.sensors.CPUSensor.__init__()=screenlets.sensors.CPUSensor-class.html#__init__,Method screenlets.sensors.MemorySensor.__init__()=screenlets.sensors.MemorySensor-class.html#__init__,Method screenlets.sensors.NetSensor.__init__()=screenlets.sensors.NetSensor-class.html#__init__,Method screenlets.sensors.Sensor.__init__()=screenlets.sensors.Sensor-class.html#__init__,Method screenlets.services.ScreenletService.__init__()=screenlets.services.ScreenletService-class.html#__init__,Method screenlets.session.ScreenletSession.__init__()=screenlets.session.ScreenletSession-class.html#__init__,Method screenlets.utils.FileMonitor.__init__()=screenlets.utils.FileMonitor-class.html#__init__,Method screenlets.utils.IniReader.__init__()=screenlets.utils.IniReader-class.html#__init__,Method screenlets.utils.Notifier.__init__()=screenlets.utils.Notifier-class.html#__init__,Method screenlets.utils.ScreenletInfo.__init__()=screenlets.utils.ScreenletInfo-class.html#__init__"><a title="screenlets.Notify.__init__
519
screenlets.Tooltip.show" class="py-name" href="#" onclick="return doclink('link-84', 'show', 'link-8');">show</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
520
<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt id="link-85" class="py-name"><a title="screenlets.Screenlet.menu
521
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-85', 'menu', 'link-4');">menu</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">item</tt><tt class="py-op">)</tt> </tt>
522
<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-comment"># return menu</tt> </tt>
523
<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-86" class="py-name"><a title="screenlets.Screenlet.menu
524
screenlets.menu" class="py-name" href="#" onclick="return doclink('link-86', 'menu', 'link-4');">menu</a></tt> </tt>
525
</div></div><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt>
526
<a name="DefaultMenuItem"></a><div id="DefaultMenuItem-def"><a name="L336"></a><tt class="py-lineno">336</tt> <a class="py-toggle" href="#" id="DefaultMenuItem-toggle" onclick="return toggle('DefaultMenuItem');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="screenlets.menu.DefaultMenuItem-class.html">DefaultMenuItem</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
527
</div><div id="DefaultMenuItem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DefaultMenuItem-expanded"><a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-docstring">"""A container with constants for the default menuitems"""</tt> </tt>
528
<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> </tt>
529
<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-comment"># default menuitem constants (is it right to increase like this?)</tt> </tt>
530
<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt id="link-87" class="py-name" targets="Variable screenlets.DefaultMenuItem.NONE=screenlets.DefaultMenuItem-class.html#NONE,Variable screenlets.menu.DefaultMenuItem.NONE=screenlets.menu.DefaultMenuItem-class.html#NONE"><a title="screenlets.DefaultMenuItem.NONE
531
screenlets.menu.DefaultMenuItem.NONE" class="py-name" href="#" onclick="return doclink('link-87', 'NONE', 'link-87');">NONE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
532
<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt id="link-88" class="py-name" targets="Variable screenlets.DefaultMenuItem.DELETE=screenlets.DefaultMenuItem-class.html#DELETE,Variable screenlets.menu.DefaultMenuItem.DELETE=screenlets.menu.DefaultMenuItem-class.html#DELETE"><a title="screenlets.DefaultMenuItem.DELETE
533
screenlets.menu.DefaultMenuItem.DELETE" class="py-name" href="#" onclick="return doclink('link-88', 'DELETE', 'link-88');">DELETE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
534
<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt id="link-89" class="py-name" targets="Variable screenlets.DefaultMenuItem.THEMES=screenlets.DefaultMenuItem-class.html#THEMES,Variable screenlets.menu.DefaultMenuItem.THEMES=screenlets.menu.DefaultMenuItem-class.html#THEMES"><a title="screenlets.DefaultMenuItem.THEMES
535
screenlets.menu.DefaultMenuItem.THEMES" class="py-name" href="#" onclick="return doclink('link-89', 'THEMES', 'link-89');">THEMES</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
536
<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt id="link-90" class="py-name" targets="Variable screenlets.DefaultMenuItem.INFO=screenlets.DefaultMenuItem-class.html#INFO,Variable screenlets.menu.DefaultMenuItem.INFO=screenlets.menu.DefaultMenuItem-class.html#INFO"><a title="screenlets.DefaultMenuItem.INFO
537
screenlets.menu.DefaultMenuItem.INFO" class="py-name" href="#" onclick="return doclink('link-90', 'INFO', 'link-90');">INFO</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
538
<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt id="link-91" class="py-name" targets="Variable screenlets.DefaultMenuItem.SIZE=screenlets.DefaultMenuItem-class.html#SIZE,Variable screenlets.menu.DefaultMenuItem.SIZE=screenlets.menu.DefaultMenuItem-class.html#SIZE"><a title="screenlets.DefaultMenuItem.SIZE
539
screenlets.menu.DefaultMenuItem.SIZE" class="py-name" href="#" onclick="return doclink('link-91', 'SIZE', 'link-91');">SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">8</tt> </tt>
540
<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt id="link-92" class="py-name" targets="Variable screenlets.DefaultMenuItem.WINDOW_MENU=screenlets.DefaultMenuItem-class.html#WINDOW_MENU,Variable screenlets.menu.DefaultMenuItem.WINDOW_MENU=screenlets.menu.DefaultMenuItem-class.html#WINDOW_MENU"><a title="screenlets.DefaultMenuItem.WINDOW_MENU
541
screenlets.menu.DefaultMenuItem.WINDOW_MENU" class="py-name" href="#" onclick="return doclink('link-92', 'WINDOW_MENU', 'link-92');">WINDOW_MENU</a></tt> <tt class="py-op">=</tt> <tt class="py-number">16</tt> </tt>
542
<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt id="link-93" class="py-name" targets="Variable screenlets.DefaultMenuItem.PROPERTIES=screenlets.DefaultMenuItem-class.html#PROPERTIES,Variable screenlets.menu.DefaultMenuItem.PROPERTIES=screenlets.menu.DefaultMenuItem-class.html#PROPERTIES"><a title="screenlets.DefaultMenuItem.PROPERTIES
543
screenlets.menu.DefaultMenuItem.PROPERTIES" class="py-name" href="#" onclick="return doclink('link-93', 'PROPERTIES', 'link-93');">PROPERTIES</a></tt> <tt class="py-op">=</tt> <tt class="py-number">32</tt> </tt>
544
<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt id="link-94" class="py-name"><a title="screenlets.DefaultMenuItem.DELETE
545
screenlets.menu.DefaultMenuItem.DELETE" class="py-name" href="#" onclick="return doclink('link-94', 'DELETE', 'link-88');">DELETE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">64</tt> </tt>
546
<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt id="link-95" class="py-name" targets="Variable screenlets.DefaultMenuItem.QUIT=screenlets.DefaultMenuItem-class.html#QUIT,Variable screenlets.menu.DefaultMenuItem.QUIT=screenlets.menu.DefaultMenuItem-class.html#QUIT"><a title="screenlets.DefaultMenuItem.QUIT
547
screenlets.menu.DefaultMenuItem.QUIT" class="py-name" href="#" onclick="return doclink('link-95', 'QUIT', 'link-95');">QUIT</a></tt> <tt class="py-op">=</tt> <tt class="py-number">128</tt> </tt>
548
<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt id="link-96" class="py-name" targets="Variable screenlets.DefaultMenuItem.QUIT_ALL=screenlets.DefaultMenuItem-class.html#QUIT_ALL,Variable screenlets.menu.DefaultMenuItem.QUIT_ALL=screenlets.menu.DefaultMenuItem-class.html#QUIT_ALL"><a title="screenlets.DefaultMenuItem.QUIT_ALL
549
screenlets.menu.DefaultMenuItem.QUIT_ALL" class="py-name" href="#" onclick="return doclink('link-96', 'QUIT_ALL', 'link-96');">QUIT_ALL</a></tt> <tt class="py-op">=</tt> <tt class="py-number">256</tt> </tt>
550
<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-comment"># EXPERIMENTAL!! If you use this, the file menu.xml in the </tt> </tt>
551
<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-comment"># Screenlet's data-dir is used for generating the menu ...</tt> </tt>
552
<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt id="link-97" class="py-name" targets="Variable screenlets.DefaultMenuItem.XML=screenlets.DefaultMenuItem-class.html#XML,Variable screenlets.menu.DefaultMenuItem.XML=screenlets.menu.DefaultMenuItem-class.html#XML"><a title="screenlets.DefaultMenuItem.XML
553
screenlets.menu.DefaultMenuItem.XML" class="py-name" href="#" onclick="return doclink('link-97', 'XML', 'link-97');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-number">512</tt> </tt>
554
<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt id="link-98" class="py-name" targets="Variable screenlets.DefaultMenuItem.ADD=screenlets.DefaultMenuItem-class.html#ADD,Variable screenlets.menu.DefaultMenuItem.ADD=screenlets.menu.DefaultMenuItem-class.html#ADD"><a title="screenlets.DefaultMenuItem.ADD
555
screenlets.menu.DefaultMenuItem.ADD" class="py-name" href="#" onclick="return doclink('link-98', 'ADD', 'link-98');">ADD</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1024</tt> </tt>
556
<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-comment"># the default items</tt> </tt>
557
<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt id="link-99" class="py-name" targets="Variable screenlets.DefaultMenuItem.STANDARD=screenlets.DefaultMenuItem-class.html#STANDARD,Variable screenlets.menu.DefaultMenuItem.STANDARD=screenlets.menu.DefaultMenuItem-class.html#STANDARD"><a title="screenlets.DefaultMenuItem.STANDARD
558
screenlets.menu.DefaultMenuItem.STANDARD" class="py-name" href="#" onclick="return doclink('link-99', 'STANDARD', 'link-99');">STANDARD</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">|</tt><tt class="py-number">2</tt><tt class="py-op">|</tt><tt class="py-number">8</tt><tt class="py-op">|</tt><tt class="py-number">16</tt><tt class="py-op">|</tt><tt class="py-number">32</tt><tt class="py-op">|</tt><tt class="py-number">64</tt><tt class="py-op">|</tt><tt class="py-number">128</tt><tt class="py-op">|</tt><tt class="py-number">256</tt><tt class="py-op">|</tt><tt class="py-number">1024</tt> </tt>
559
</div><a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> </tt>
560
<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> </tt>
561
<a name="ImageMenuItem"></a><div id="ImageMenuItem-def"><a name="L358"></a><tt class="py-lineno">358</tt> <a class="py-toggle" href="#" id="ImageMenuItem-toggle" onclick="return toggle('ImageMenuItem');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="screenlets.menu.ImageMenuItem-class.html">ImageMenuItem</a><tt class="py-op">(</tt><tt class="py-base-class">gtk</tt><tt class="py-op">.</tt><tt class="py-base-class">ImageMenuItem</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
562
</div><div id="ImageMenuItem-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ImageMenuItem-expanded"><a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-docstring">"""A menuitem with a custom image and label.</tt> </tt>
563
<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"> To set the image to a non-stock image, just</tt> </tt>
564
<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> create the menuitem without an image and then</tt> </tt>
565
<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> set the image with the appropriate method."""</tt> </tt>
566
<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> </tt>
567
<a name="ImageMenuItem.__init__"></a><div id="ImageMenuItem.__init__-def"><a name="L364"></a><tt class="py-lineno">364</tt> <a class="py-toggle" href="#" id="ImageMenuItem.__init__-toggle" onclick="return toggle('ImageMenuItem.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="screenlets.menu.ImageMenuItem-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">stock</tt><tt class="py-op">=</tt><tt class="py-name">gtk</tt><tt class="py-op">.</tt><tt class="py-name">STOCK_MISSING_IMAGE</tt><tt class="py-op">,</tt> <tt class="py-param">label</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
568
</div><div id="ImageMenuItem.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="ImageMenuItem.__init__-expanded"><a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-docstring">"""stock: a stock image or 'none'.</tt> </tt>
569
<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> label: text to set as the label or None."""</tt> </tt>
570
<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-comment"># call the superclass</tt> </tt>
571
<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-100" class="py-name"><a title="screenlets.menu.ImageMenuItem" class="py-name" href="#" onclick="return doclink('link-100', 'ImageMenuItem', 'link-5');">ImageMenuItem</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Method screenlets.Notify.__init__()=screenlets.Notify-class.html#__init__,Method screenlets.Screenlet.__init__()=screenlets.Screenlet-class.html#__init__,Method screenlets.ScreenletTheme.__init__()=screenlets.ScreenletTheme-class.html#__init__,Method screenlets.ShapedWidget.__init__()=screenlets.ShapedWidget-class.html#__init__,Method screenlets.Tooltip.__init__()=screenlets.Tooltip-class.html#__init__,Method screenlets.backend.CachingBackend.__init__()=screenlets.backend.CachingBackend-class.html#__init__,Method screenlets.backend.GconfBackend.__init__()=screenlets.backend.GconfBackend-class.html#__init__,Method screenlets.backend.ScreenletsBackend.__init__()=screenlets.backend.ScreenletsBackend-class.html#__init__,Method screenlets.install.ScreenletInstaller.__init__()=screenlets.install.ScreenletInstaller-class.html#__init__,Method screenlets.menu.ApplicationMenu.__init__()=screenlets.menu.ApplicationMenu-class.html#__init__,Method screenlets.menu.ImageMenuItem.__init__()=screenlets.menu.ImageMenuItem-class.html#__init__,Method screenlets.options.AccountOption.__init__()=screenlets.options.AccountOption-class.html#__init__,Method screenlets.options.EditableOptions.__init__()=screenlets.options.EditableOptions-class.html#__init__,Method screenlets.options.FileOption.__init__()=screenlets.options.FileOption-class.html#__init__,Method screenlets.options.FloatOption.__init__()=screenlets.options.FloatOption-class.html#__init__,Method screenlets.options.IntOption.__init__()=screenlets.options.IntOption-class.html#__init__,Method screenlets.options.ListOptionDialog.__init__()=screenlets.options.ListOptionDialog-class.html#__init__,Method screenlets.options.Option.__init__()=screenlets.options.Option-class.html#__init__,Method screenlets.options.OptionsDialog.__init__()=screenlets.options.OptionsDialog-class.html#__init__,Method screenlets.options.StringOption.__init__()=screenlets.options.StringOption-class.html#__init__,Method screenlets.plugins.Amarok.AmarokAPI.__init__()=screenlets.plugins.Amarok.AmarokAPI-class.html#__init__,Method screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch.__init__()=screenlets.plugins.AmazonCoverArtSearch.AmazonCoverArtSearch-class.html#__init__,Method screenlets.plugins.Audacious.AudaciousAPI.__init__()=screenlets.plugins.Audacious.AudaciousAPI-class.html#__init__,Method screenlets.plugins.Banshee.BansheeAPI.__init__()=screenlets.plugins.Banshee.BansheeAPI-class.html#__init__,Method screenlets.plugins.Convert.Converter.__init__()=screenlets.plugins.Convert.Converter-class.html#__init__,Method screenlets.plugins.CoverSearch.CoverSearch.__init__()=screenlets.plugins.CoverSearch.CoverSearch-class.html#__init__,Method screenlets.plugins.Exaile.ExaileAPI.__init__()=screenlets.plugins.Exaile.ExaileAPI-class.html#__init__,Method screenlets.plugins.Flickr.Flickr.__init__()=screenlets.plugins.Flickr.Flickr-class.html#__init__,Method screenlets.plugins.GenericPlayer.GenericAPI.__init__()=screenlets.plugins.GenericPlayer.GenericAPI-class.html#__init__,Method screenlets.plugins.Gstreamer.gstreamer.__init__()=screenlets.plugins.Gstreamer.gstreamer-class.html#__init__,Method screenlets.plugins.Juk.JukAPI.__init__()=screenlets.plugins.Juk.JukAPI-class.html#__init__,Method screenlets.plugins.Kaffeine.KaffeineAPI.__init__()=screenlets.plugins.Kaffeine.KaffeineAPI-class.html#__init__,Method screenlets.plugins.LastFMProxy.LastFMProxyAPI.__init__()=screenlets.plugins.LastFMProxy.LastFMProxyAPI-class.html#__init__,Method screenlets.plugins.Listen.ListenAPI.__init__()=screenlets.plugins.Listen.ListenAPI-class.html#__init__,Method screenlets.plugins.Loader.GnomeVFSAsyncSrc.__init__()=screenlets.plugins.Loader.GnomeVFSAsyncSrc-class.html#__init__,Method screenlets.plugins.Mail.IMAPBackend.__init__()=screenlets.plugins.Mail.IMAPBackend-class.html#__init__,Method screenlets.plugins.Mail.MailCheckBackend.__init__()=screenlets.plugins.Mail.MailCheckBackend-class.html#__init__,Method screenlets.plugins.Mail.Mailer.__init__()=screenlets.plugins.Mail.Mailer-class.html#__init__,Method screenlets.plugins.Mail.POP3Backend.__init__()=screenlets.plugins.Mail.POP3Backend-class.html#__init__,Method screenlets.plugins.Mplayer.Mplayer.__init__()=screenlets.plugins.Mplayer.Mplayer-class.html#__init__,Method screenlets.plugins.Proxy.Proxy.__init__()=screenlets.plugins.Proxy.Proxy-class.html#__init__,Method screenlets.plugins.Quodlibet.QuodlibetAPI.__init__()=screenlets.plugins.Quodlibet.QuodlibetAPI-class.html#__init__,Method screenlets.plugins.Rhythmbox.RhythmboxAPI.__init__()=screenlets.plugins.Rhythmbox.RhythmboxAPI-class.html#__init__,Method screenlets.plugins.Sonata.SonataAPI.__init__()=screenlets.plugins.Sonata.SonataAPI-class.html#__init__,Method screenlets.plugins.Songbird.SongbirdAPI.__init__()=screenlets.plugins.Songbird.SongbirdAPI-class.html#__init__,Method screenlets.plugins.TemperatureConverter.TemperatureConverter.__init__()=screenlets.plugins.TemperatureConverter.TemperatureConverter-class.html#__init__,Method screenlets.plugins.iCal.DateSet.__init__()=screenlets.plugins.iCal.DateSet-class.html#__init__,Method screenlets.plugins.iCal.ICalEvent.__init__()=screenlets.plugins.iCal.ICalEvent-class.html#__init__,Method screenlets.plugins.iCal.ICalReader.__init__()=screenlets.plugins.iCal.ICalReader-class.html#__init__,Method screenlets.plugins.keyring.KeyRing.Key.__init__()=screenlets.plugins.keyring.KeyRing.Key-class.html#__init__,Method screenlets.plugins.keyring.KeyRing.__init__()=screenlets.plugins.keyring.KeyRing-class.html#__init__,Method screenlets.plugins.mpdclient2.command_sender.__init__()=screenlets.plugins.mpdclient2.command_sender-class.html#__init__,Method screenlets.plugins.mpdclient2.mpd_connection.__init__()=screenlets.plugins.mpdclient2.mpd_connection-class.html#__init__,Method screenlets.plugins.mpdclient2.response_fetcher.__init__()=screenlets.plugins.mpdclient2.response_fetcher-class.html#__init__,Method screenlets.plugins.mpdclient2.sender_n_fetcher.__init__()=screenlets.plugins.mpdclient2.sender_n_fetcher-class.html#__init__,Method screenlets.plugins.mpdclient2.socket_talker.__init__()=screenlets.plugins.mpdclient2.socket_talker-class.html#__init__,Method screenlets.sensors.CPUSensor.__init__()=screenlets.sensors.CPUSensor-class.html#__init__,Method screenlets.sensors.MemorySensor.__init__()=screenlets.sensors.MemorySensor-class.html#__init__,Method screenlets.sensors.NetSensor.__init__()=screenlets.sensors.NetSensor-class.html#__init__,Method screenlets.sensors.Sensor.__init__()=screenlets.sensors.Sensor-class.html#__init__,Method screenlets.services.ScreenletService.__init__()=screenlets.services.ScreenletService-class.html#__init__,Method screenlets.session.ScreenletSession.__init__()=screenlets.session.ScreenletSession-class.html#__init__,Method screenlets.utils.FileMonitor.__init__()=screenlets.utils.FileMonitor-class.html#__init__,Method screenlets.utils.IniReader.__init__()=screenlets.utils.IniReader-class.html#__init__,Method screenlets.utils.Notifier.__init__()=screenlets.utils.Notifier-class.html#__init__,Method screenlets.utils.ScreenletInfo.__init__()=screenlets.utils.ScreenletInfo-class.html#__init__"><a title="screenlets.Notify.__init__
492
572
screenlets.Screenlet.__init__
493
573
screenlets.ScreenletTheme.__init__
494
574
screenlets.ShapedWidget.__init__