diff options
Diffstat (limited to '_build/html/_modules/desktop/icon.html')
-rw-r--r-- | _build/html/_modules/desktop/icon.html | 948 |
1 files changed, 948 insertions, 0 deletions
diff --git a/_build/html/_modules/desktop/icon.html b/_build/html/_modules/desktop/icon.html new file mode 100644 index 0000000..c702dfe --- /dev/null +++ b/_build/html/_modules/desktop/icon.html @@ -0,0 +1,948 @@ + + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>desktop.icon — Sweetener 0.7 documentation</title> + + <link rel="stylesheet" href="../../_static/default.css" type="text/css" /> + <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../../', + VERSION: '0.7', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../../_static/jquery.js"></script> + <script type="text/javascript" src="../../_static/underscore.js"></script> + <script type="text/javascript" src="../../_static/doctools.js"></script> + <link rel="top" title="Sweetener 0.7 documentation" href="../../index.html" /> + <link rel="up" title="Module code" href="../index.html" /> + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li><a href="../../index.html">Sweetener 0.7 documentation</a> »</li> + <li><a href="../index.html" accesskey="U">Module code</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <h1>Source code for desktop.icon</h1><div class="highlight"><pre> +<span class="c"># Copyright (C) 2006-2007 Red Hat, Inc.</span> +<span class="c">#</span> +<span class="c"># This library is free software; you can redistribute it and/or</span> +<span class="c"># modify it under the terms of the GNU Lesser General Public</span> +<span class="c"># License as published by the Free Software Foundation; either</span> +<span class="c"># version 2 of the License, or (at your option) any later version.</span> +<span class="c">#</span> +<span class="c"># This library is distributed in the hope that it will be useful,</span> +<span class="c"># but WITHOUT ANY WARRANTY; without even the implied warranty of</span> +<span class="c"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span> +<span class="c"># Lesser General Public License for more details.</span> +<span class="c">#</span> +<span class="c"># You should have received a copy of the GNU Lesser General Public</span> +<span class="c"># License along with this library; if not, write to the</span> +<span class="c"># Free Software Foundation, Inc., 59 Temple Place - Suite 330,</span> +<span class="c"># Boston, MA 02111-1307, USA.</span> + +<span class="sd">"""</span> +<span class="sd">A small fixed size picture, typically used to decorate components.</span> + +<span class="sd">STABLE.</span> +<span class="sd">"""</span> + +<span class="kn">import</span> <span class="nn">re</span> +<span class="kn">import</span> <span class="nn">math</span> +<span class="kn">import</span> <span class="nn">logging</span> + +<span class="kn">import</span> <span class="nn">gobject</span> +<span class="kn">import</span> <span class="nn">gtk</span> +<span class="kn">import</span> <span class="nn">cairo</span> + +<span class="kn">from</span> <span class="nn">colors</span> <span class="kn">import</span> <span class="n">XoColor</span> + + +<div class="viewcode-block" id="Node"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Node">[docs]</a><span class="k">class</span> <span class="nc">Node</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + + <span class="n">__slots__</span> <span class="o">=</span> <span class="p">[</span><span class="s">'prev'</span><span class="p">,</span> <span class="s">'next'</span><span class="p">,</span> <span class="s">'me'</span><span class="p">]</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prev</span><span class="p">,</span> <span class="n">me</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">prev</span> <span class="o">=</span> <span class="n">prev</span> + <span class="bp">self</span><span class="o">.</span><span class="n">me</span> <span class="o">=</span> <span class="n">me</span> + <span class="bp">self</span><span class="o">.</span><span class="n">next</span> <span class="o">=</span> <span class="bp">None</span> + +</div> +<div class="viewcode-block" id="LRU"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.LRU">[docs]</a><span class="k">class</span> <span class="nc">LRU</span><span class="p">:</span> + <span class="sd">"""</span> +<span class="sd"> Implementation of a length-limited O(1) LRU queue.</span> +<span class="sd"> Built for and used by PyPE:</span> +<span class="sd"> http://pype.sourceforge.net</span> +<span class="sd"> Copyright 2003 Josiah Carlson.</span> +<span class="sd"> """</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">count</span><span class="p">,</span> <span class="n">pairs</span><span class="o">=</span><span class="p">[]):</span> + <span class="c"># pylint: disable=W0102,W0612</span> + <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">count</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">d</span> <span class="o">=</span> <span class="p">{}</span> + <span class="bp">self</span><span class="o">.</span><span class="n">first</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">last</span> <span class="o">=</span> <span class="bp">None</span> + <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">pairs</span><span class="p">:</span> + <span class="bp">self</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> + + <span class="k">def</span> <span class="nf">__contains__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> + <span class="k">return</span> <span class="n">obj</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">d</span> + + <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> + <span class="n">a</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="p">[</span><span class="n">obj</span><span class="p">]</span><span class="o">.</span><span class="n">me</span> + <span class="bp">self</span><span class="p">[</span><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="k">return</span> <span class="n">a</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + + <span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">val</span><span class="p">):</span> + <span class="k">if</span> <span class="n">obj</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="p">:</span> + <span class="k">del</span> <span class="bp">self</span><span class="p">[</span><span class="n">obj</span><span class="p">]</span> + <span class="n">nobj</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">last</span><span class="p">,</span> <span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">first</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">first</span> <span class="o">=</span> <span class="n">nobj</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">last</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">last</span><span class="o">.</span><span class="n">next</span> <span class="o">=</span> <span class="n">nobj</span> + <span class="bp">self</span><span class="o">.</span><span class="n">last</span> <span class="o">=</span> <span class="n">nobj</span> + <span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="p">[</span><span class="n">obj</span><span class="p">]</span> <span class="o">=</span> <span class="n">nobj</span> + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">count</span><span class="p">:</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">first</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">last</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">first</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">last</span> <span class="o">=</span> <span class="bp">None</span> + <span class="k">return</span> + <span class="n">a</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">first</span> + <span class="n">a</span><span class="o">.</span><span class="n">next</span><span class="o">.</span><span class="n">prev</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">first</span> <span class="o">=</span> <span class="n">a</span><span class="o">.</span><span class="n">next</span> + <span class="n">a</span><span class="o">.</span><span class="n">next</span> <span class="o">=</span> <span class="bp">None</span> + <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="p">[</span><span class="n">a</span><span class="o">.</span><span class="n">me</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> + <span class="k">del</span> <span class="n">a</span> + + <span class="k">def</span> <span class="nf">__delitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> + <span class="n">nobj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="p">[</span><span class="n">obj</span><span class="p">]</span> + <span class="k">if</span> <span class="n">nobj</span><span class="o">.</span><span class="n">prev</span><span class="p">:</span> + <span class="n">nobj</span><span class="o">.</span><span class="n">prev</span><span class="o">.</span><span class="n">next</span> <span class="o">=</span> <span class="n">nobj</span><span class="o">.</span><span class="n">next</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">first</span> <span class="o">=</span> <span class="n">nobj</span><span class="o">.</span><span class="n">next</span> + <span class="k">if</span> <span class="n">nobj</span><span class="o">.</span><span class="n">next</span><span class="p">:</span> + <span class="n">nobj</span><span class="o">.</span><span class="n">next</span><span class="o">.</span><span class="n">prev</span> <span class="o">=</span> <span class="n">nobj</span><span class="o">.</span><span class="n">prev</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">last</span> <span class="o">=</span> <span class="n">nobj</span><span class="o">.</span><span class="n">prev</span> + <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="p">[</span><span class="n">obj</span><span class="p">]</span> + + <span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">cur</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">first</span> + <span class="k">while</span> <span class="n">cur</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">cur2</span> <span class="o">=</span> <span class="n">cur</span><span class="o">.</span><span class="n">next</span> + <span class="k">yield</span> <span class="n">cur</span><span class="o">.</span><span class="n">me</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> + <span class="n">cur</span> <span class="o">=</span> <span class="n">cur2</span> + +<div class="viewcode-block" id="LRU.iteritems"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.LRU.iteritems">[docs]</a> <span class="k">def</span> <span class="nf">iteritems</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">cur</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">first</span> + <span class="k">while</span> <span class="n">cur</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">cur2</span> <span class="o">=</span> <span class="n">cur</span><span class="o">.</span><span class="n">next</span> + <span class="k">yield</span> <span class="n">cur</span><span class="o">.</span><span class="n">me</span> + <span class="n">cur</span> <span class="o">=</span> <span class="n">cur2</span> +</div> +<div class="viewcode-block" id="LRU.iterkeys"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.LRU.iterkeys">[docs]</a> <span class="k">def</span> <span class="nf">iterkeys</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="p">)</span> +</div> +<div class="viewcode-block" id="LRU.itervalues"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.LRU.itervalues">[docs]</a> <span class="k">def</span> <span class="nf">itervalues</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">for</span> <span class="n">i_</span><span class="p">,</span> <span class="n">j</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">iteritems</span><span class="p">():</span> + <span class="k">yield</span> <span class="n">j</span> +</div> +<div class="viewcode-block" id="LRU.keys"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.LRU.keys">[docs]</a> <span class="k">def</span> <span class="nf">keys</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">()</span> + +</div></div> +<span class="n">_BADGE_SIZE</span> <span class="o">=</span> <span class="mf">0.45</span> + + +<span class="k">class</span> <span class="nc">_SVGLoader</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span> <span class="o">=</span> <span class="n">LRU</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_name</span><span class="p">,</span> <span class="n">entities</span><span class="p">,</span> <span class="n">cache</span><span class="p">):</span> + <span class="k">if</span> <span class="n">file_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">:</span> + <span class="n">icon</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">[</span><span class="n">file_name</span><span class="p">]</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">icon_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="s">'r'</span><span class="p">)</span> + <span class="n">icon</span> <span class="o">=</span> <span class="n">icon_file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> + <span class="n">icon_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> + + <span class="k">if</span> <span class="n">cache</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">[</span><span class="n">file_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">icon</span> + + <span class="k">for</span> <span class="n">entity</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">entities</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">):</span> + <span class="n">xml</span> <span class="o">=</span> <span class="s">'<!ENTITY </span><span class="si">%s</span><span class="s"> "</span><span class="si">%s</span><span class="s">">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">entity</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> + <span class="n">icon</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="s">'<!ENTITY </span><span class="si">%s</span><span class="s"> .*>'</span> <span class="o">%</span> <span class="n">entity</span><span class="p">,</span> <span class="n">xml</span><span class="p">,</span> <span class="n">icon</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logging</span><span class="o">.</span><span class="n">error</span><span class="p">(</span> + <span class="s">'Icon </span><span class="si">%s</span><span class="s">, entity </span><span class="si">%s</span><span class="s"> is invalid.'</span><span class="p">,</span> <span class="n">file_name</span><span class="p">,</span> <span class="n">entity</span><span class="p">)</span> + + <span class="c"># XXX this is very slow! why?</span> + <span class="kn">import</span> <span class="nn">rsvg</span> + <span class="k">return</span> <span class="n">rsvg</span><span class="o">.</span><span class="n">Handle</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">icon</span><span class="p">)</span> + + +<span class="k">class</span> <span class="nc">_IconInfo</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">attach_x</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">attach_y</span> <span class="o">=</span> <span class="mi">0</span> + + +<span class="k">class</span> <span class="nc">_BadgeInfo</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">attach_x</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">attach_y</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">icon_padding</span> <span class="o">=</span> <span class="mi">0</span> + + +<span class="k">class</span> <span class="nc">_IconBuffer</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> + + <span class="n">_surface_cache</span> <span class="o">=</span> <span class="n">LRU</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span> + <span class="n">_loader</span> <span class="o">=</span> <span class="n">_SVGLoader</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">icon_name</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">icon_size</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fill_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">background_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">stroke_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">badge_name</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">cache</span> <span class="o">=</span> <span class="bp">False</span> + <span class="bp">self</span><span class="o">.</span><span class="n">scale</span> <span class="o">=</span> <span class="mf">1.0</span> + + <span class="k">def</span> <span class="nf">_get_cache_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sensitive</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">background_color</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">color</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">background_color</span><span class="o">.</span><span class="n">red</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">background_color</span><span class="o">.</span><span class="n">green</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">background_color</span><span class="o">.</span><span class="n">blue</span><span class="p">)</span> + <span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">icon_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">file_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fill_color</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">stroke_color</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">badge_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span><span class="p">,</span> + <span class="n">color</span><span class="p">,</span> <span class="n">sensitive</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">_load_svg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_name</span><span class="p">):</span> + <span class="n">entities</span> <span class="o">=</span> <span class="p">{}</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fill_color</span><span class="p">:</span> + <span class="n">entities</span><span class="p">[</span><span class="s">'fill_color'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">fill_color</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">stroke_color</span><span class="p">:</span> + <span class="n">entities</span><span class="p">[</span><span class="s">'stroke_color'</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">stroke_color</span> + + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_loader</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">entities</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">_get_attach_points</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">info</span><span class="p">,</span> <span class="n">size_request</span><span class="p">):</span> + <span class="n">attach_points</span> <span class="o">=</span> <span class="n">info</span><span class="o">.</span><span class="n">get_attach_points</span><span class="p">()</span> + + <span class="k">if</span> <span class="n">attach_points</span><span class="p">:</span> + <span class="n">attach_x</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">attach_points</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">])</span> <span class="o">/</span> <span class="n">size_request</span> + <span class="n">attach_y</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">attach_points</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">])</span> <span class="o">/</span> <span class="n">size_request</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">attach_x</span> <span class="o">=</span> <span class="n">attach_y</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="k">return</span> <span class="n">attach_x</span><span class="p">,</span> <span class="n">attach_y</span> + + <span class="k">def</span> <span class="nf">_get_icon_info</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="n">icon_info</span> <span class="o">=</span> <span class="n">_IconInfo</span><span class="p">()</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">file_name</span><span class="p">:</span> + <span class="n">icon_info</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file_name</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">icon_name</span><span class="p">:</span> + <span class="n">theme</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">icon_theme_get_default</span><span class="p">()</span> + + <span class="n">size</span> <span class="o">=</span> <span class="mi">50</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">!=</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> + + <span class="n">info</span> <span class="o">=</span> <span class="n">theme</span><span class="o">.</span><span class="n">lookup_icon</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">icon_name</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">size</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">info</span><span class="p">:</span> + <span class="n">attach_x</span><span class="p">,</span> <span class="n">attach_y</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_attach_points</span><span class="p">(</span><span class="n">info</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span> + + <span class="n">icon_info</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="n">info</span><span class="o">.</span><span class="n">get_filename</span><span class="p">()</span> + <span class="n">icon_info</span><span class="o">.</span><span class="n">attach_x</span> <span class="o">=</span> <span class="n">attach_x</span> + <span class="n">icon_info</span><span class="o">.</span><span class="n">attach_y</span> <span class="o">=</span> <span class="n">attach_y</span> + + <span class="k">del</span> <span class="n">info</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">logging</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s">'No icon with the name </span><span class="si">%s</span><span class="s"> was found in the '</span> + <span class="s">'theme.'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">icon_name</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">icon_info</span> + + <span class="k">def</span> <span class="nf">_draw_badge</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">sensitive</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span> + <span class="n">theme</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">icon_theme_get_default</span><span class="p">()</span> + <span class="n">badge_info</span> <span class="o">=</span> <span class="n">theme</span><span class="o">.</span><span class="n">lookup_icon</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">badge_name</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">size</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="n">badge_info</span><span class="p">:</span> + <span class="n">badge_file_name</span> <span class="o">=</span> <span class="n">badge_info</span><span class="o">.</span><span class="n">get_filename</span><span class="p">()</span> + <span class="k">if</span> <span class="n">badge_file_name</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">'.svg'</span><span class="p">):</span> + <span class="n">handle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_loader</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">badge_file_name</span><span class="p">,</span> <span class="p">{},</span> <span class="bp">self</span><span class="o">.</span><span class="n">cache</span><span class="p">)</span> + + <span class="n">dimensions</span> <span class="o">=</span> <span class="n">handle</span><span class="o">.</span><span class="n">get_dimension_data</span><span class="p">()</span> + <span class="n">icon_width</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">dimensions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="n">icon_height</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">dimensions</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + + <span class="n">pixbuf</span> <span class="o">=</span> <span class="n">handle</span><span class="o">.</span><span class="n">get_pixbuf</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">pixbuf</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">gdk</span><span class="o">.</span><span class="n">pixbuf_new_from_file</span><span class="p">(</span><span class="n">badge_file_name</span><span class="p">)</span> + + <span class="n">icon_width</span> <span class="o">=</span> <span class="n">pixbuf</span><span class="o">.</span><span class="n">get_width</span><span class="p">()</span> + <span class="n">icon_height</span> <span class="o">=</span> <span class="n">pixbuf</span><span class="o">.</span><span class="n">get_height</span><span class="p">()</span> + + <span class="n">context</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">size</span><span class="p">)</span> <span class="o">/</span> <span class="n">icon_width</span><span class="p">,</span> + <span class="nb">float</span><span class="p">(</span><span class="n">size</span><span class="p">)</span> <span class="o">/</span> <span class="n">icon_height</span><span class="p">)</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="n">sensitive</span><span class="p">:</span> + <span class="n">pixbuf</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_insensitive_pixbuf</span><span class="p">(</span><span class="n">pixbuf</span><span class="p">,</span> <span class="n">widget</span><span class="p">)</span> + <span class="n">gdkcontext</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">gdk</span><span class="o">.</span><span class="n">CairoContext</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> + <span class="n">gdkcontext</span><span class="o">.</span><span class="n">set_source_pixbuf</span><span class="p">(</span><span class="n">pixbuf</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">gdkcontext</span><span class="o">.</span><span class="n">paint</span><span class="p">()</span> + + <span class="k">def</span> <span class="nf">_get_size</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">icon_width</span><span class="p">,</span> <span class="n">icon_height</span><span class="p">,</span> <span class="n">padding</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">width</span> <span class="o">+</span> <span class="n">padding</span> + <span class="n">height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">height</span> <span class="o">+</span> <span class="n">padding</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">width</span> <span class="o">=</span> <span class="n">icon_width</span> <span class="o">+</span> <span class="n">padding</span> + <span class="n">height</span> <span class="o">=</span> <span class="n">icon_height</span> <span class="o">+</span> <span class="n">padding</span> + + <span class="k">return</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span> + + <span class="k">def</span> <span class="nf">_get_badge_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">icon_info</span><span class="p">,</span> <span class="n">icon_width</span><span class="p">,</span> <span class="n">icon_height</span><span class="p">):</span> + <span class="n">info</span> <span class="o">=</span> <span class="n">_BadgeInfo</span><span class="p">()</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">badge_name</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="k">return</span> <span class="n">info</span> + + <span class="n">info</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">_BADGE_SIZE</span> <span class="o">*</span> <span class="n">icon_width</span><span class="p">)</span> + <span class="n">info</span><span class="o">.</span><span class="n">attach_x</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">icon_info</span><span class="o">.</span><span class="n">attach_x</span> <span class="o">*</span> <span class="n">icon_width</span> <span class="o">-</span> <span class="n">info</span><span class="o">.</span><span class="n">size</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> + <span class="n">info</span><span class="o">.</span><span class="n">attach_y</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">icon_info</span><span class="o">.</span><span class="n">attach_y</span> <span class="o">*</span> <span class="n">icon_height</span> <span class="o">-</span> <span class="n">info</span><span class="o">.</span><span class="n">size</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">info</span><span class="o">.</span><span class="n">attach_x</span> <span class="o"><</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">info</span><span class="o">.</span><span class="n">attach_y</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">info</span><span class="o">.</span><span class="n">icon_padding</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="o">-</span><span class="n">info</span><span class="o">.</span><span class="n">attach_x</span><span class="p">,</span> <span class="o">-</span><span class="n">info</span><span class="o">.</span><span class="n">attach_y</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">info</span><span class="o">.</span><span class="n">attach_x</span> <span class="o">+</span> <span class="n">info</span><span class="o">.</span><span class="n">size</span> <span class="o">></span> <span class="n">icon_width</span> <span class="ow">or</span> \ + <span class="n">info</span><span class="o">.</span><span class="n">attach_y</span> <span class="o">+</span> <span class="n">info</span><span class="o">.</span><span class="n">size</span> <span class="o">></span> <span class="n">icon_height</span><span class="p">:</span> + <span class="n">x_padding</span> <span class="o">=</span> <span class="n">info</span><span class="o">.</span><span class="n">attach_x</span> <span class="o">+</span> <span class="n">info</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="n">icon_width</span> + <span class="n">y_padding</span> <span class="o">=</span> <span class="n">info</span><span class="o">.</span><span class="n">attach_y</span> <span class="o">+</span> <span class="n">info</span><span class="o">.</span><span class="n">size</span> <span class="o">-</span> <span class="n">icon_height</span> + <span class="n">info</span><span class="o">.</span><span class="n">icon_padding</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">x_padding</span><span class="p">,</span> <span class="n">y_padding</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">info</span> + + <span class="k">def</span> <span class="nf">_get_xo_color</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">stroke_color</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">fill_color</span><span class="p">:</span> + <span class="k">return</span> <span class="n">XoColor</span><span class="p">(</span><span class="s">'</span><span class="si">%s</span><span class="s">,</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stroke_color</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fill_color</span><span class="p">))</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">None</span> + + <span class="k">def</span> <span class="nf">_set_xo_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">xo_color</span><span class="p">):</span> + <span class="k">if</span> <span class="n">xo_color</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">stroke_color</span> <span class="o">=</span> <span class="n">xo_color</span><span class="o">.</span><span class="n">get_stroke_color</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fill_color</span> <span class="o">=</span> <span class="n">xo_color</span><span class="o">.</span><span class="n">get_fill_color</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">stroke_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">fill_color</span> <span class="o">=</span> <span class="bp">None</span> + + <span class="k">def</span> <span class="nf">_get_insensitive_pixbuf</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pixbuf</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span> + <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">widget</span> <span class="ow">and</span> <span class="n">widget</span><span class="o">.</span><span class="n">style</span><span class="p">):</span> + <span class="k">return</span> <span class="n">pixbuf</span> + + <span class="n">icon_source</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">IconSource</span><span class="p">()</span> + <span class="c"># Special size meaning "don't touch"</span> + <span class="n">icon_source</span><span class="o">.</span><span class="n">set_size</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> + <span class="n">icon_source</span><span class="o">.</span><span class="n">set_pixbuf</span><span class="p">(</span><span class="n">pixbuf</span><span class="p">)</span> + <span class="n">icon_source</span><span class="o">.</span><span class="n">set_state</span><span class="p">(</span><span class="n">gtk</span><span class="o">.</span><span class="n">STATE_INSENSITIVE</span><span class="p">)</span> + <span class="n">icon_source</span><span class="o">.</span><span class="n">set_direction_wildcarded</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> + <span class="n">icon_source</span><span class="o">.</span><span class="n">set_size_wildcarded</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> + + <span class="n">pixbuf</span> <span class="o">=</span> <span class="n">widget</span><span class="o">.</span><span class="n">style</span><span class="o">.</span><span class="n">render_icon</span><span class="p">(</span><span class="n">icon_source</span><span class="p">,</span> <span class="n">widget</span><span class="o">.</span><span class="n">get_direction</span><span class="p">(),</span> + <span class="n">gtk</span><span class="o">.</span><span class="n">STATE_INSENSITIVE</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> + <span class="s">'sugar-icon'</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">pixbuf</span> + + <span class="k">def</span> <span class="nf">get_surface</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sensitive</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">widget</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> + <span class="n">cache_key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_cache_key</span><span class="p">(</span><span class="n">sensitive</span><span class="p">)</span> + <span class="k">if</span> <span class="n">cache_key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_surface_cache</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_surface_cache</span><span class="p">[</span><span class="n">cache_key</span><span class="p">]</span> + + <span class="n">icon_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_icon_info</span><span class="p">()</span> + <span class="k">if</span> <span class="n">icon_info</span><span class="o">.</span><span class="n">file_name</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">None</span> + + <span class="n">is_svg</span> <span class="o">=</span> <span class="n">icon_info</span><span class="o">.</span><span class="n">file_name</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">'.svg'</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">is_svg</span><span class="p">:</span> + <span class="n">handle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_load_svg</span><span class="p">(</span><span class="n">icon_info</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span> + <span class="n">dimensions</span> <span class="o">=</span> <span class="n">handle</span><span class="o">.</span><span class="n">get_dimension_data</span><span class="p">()</span> + <span class="n">icon_width</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">dimensions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> + <span class="n">icon_height</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">dimensions</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">pixbuf</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">gdk</span><span class="o">.</span><span class="n">pixbuf_new_from_file</span><span class="p">(</span><span class="n">icon_info</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span> + <span class="n">icon_width</span> <span class="o">=</span> <span class="n">pixbuf</span><span class="o">.</span><span class="n">get_width</span><span class="p">()</span> + <span class="n">icon_height</span> <span class="o">=</span> <span class="n">pixbuf</span><span class="o">.</span><span class="n">get_height</span><span class="p">()</span> + + <span class="n">badge_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_badge_info</span><span class="p">(</span><span class="n">icon_info</span><span class="p">,</span> <span class="n">icon_width</span><span class="p">,</span> <span class="n">icon_height</span><span class="p">)</span> + + <span class="n">padding</span> <span class="o">=</span> <span class="n">badge_info</span><span class="o">.</span><span class="n">icon_padding</span> + <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_size</span><span class="p">(</span><span class="n">icon_width</span><span class="p">,</span> <span class="n">icon_height</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">background_color</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">surface</span> <span class="o">=</span> <span class="n">cairo</span><span class="o">.</span><span class="n">ImageSurface</span><span class="p">(</span><span class="n">cairo</span><span class="o">.</span><span class="n">FORMAT_ARGB32</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">width</span><span class="p">),</span> + <span class="nb">int</span><span class="p">(</span><span class="n">height</span><span class="p">))</span> + <span class="n">context</span> <span class="o">=</span> <span class="n">cairo</span><span class="o">.</span><span class="n">Context</span><span class="p">(</span><span class="n">surface</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">surface</span> <span class="o">=</span> <span class="n">cairo</span><span class="o">.</span><span class="n">ImageSurface</span><span class="p">(</span><span class="n">cairo</span><span class="o">.</span><span class="n">FORMAT_RGB24</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">width</span><span class="p">),</span> + <span class="nb">int</span><span class="p">(</span><span class="n">height</span><span class="p">))</span> + <span class="n">context</span> <span class="o">=</span> <span class="n">cairo</span><span class="o">.</span><span class="n">Context</span><span class="p">(</span><span class="n">surface</span><span class="p">)</span> + <span class="n">context</span><span class="o">.</span><span class="n">set_source_rgb</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">background_color</span><span class="o">.</span><span class="n">red</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">background_color</span><span class="o">.</span><span class="n">blue</span><span class="p">,</span> + <span class="bp">self</span><span class="o">.</span><span class="n">background_color</span><span class="o">.</span><span class="n">green</span><span class="p">)</span> + <span class="n">context</span><span class="o">.</span><span class="n">paint</span><span class="p">()</span> + + <span class="n">context</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">width</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">icon_width</span> <span class="o">+</span> <span class="n">padding</span> <span class="o">*</span> <span class="mi">2</span><span class="p">),</span> + <span class="nb">float</span><span class="p">(</span><span class="n">height</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="n">icon_height</span> <span class="o">+</span> <span class="n">padding</span> <span class="o">*</span> <span class="mi">2</span><span class="p">))</span> + <span class="n">context</span><span class="o">.</span><span class="n">save</span><span class="p">()</span> + + <span class="n">context</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">padding</span><span class="p">,</span> <span class="n">padding</span><span class="p">)</span> + <span class="k">if</span> <span class="n">is_svg</span><span class="p">:</span> + <span class="k">if</span> <span class="n">sensitive</span><span class="p">:</span> + <span class="n">handle</span><span class="o">.</span><span class="n">render_cairo</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">pixbuf</span> <span class="o">=</span> <span class="n">handle</span><span class="o">.</span><span class="n">get_pixbuf</span><span class="p">()</span> + <span class="n">pixbuf</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_insensitive_pixbuf</span><span class="p">(</span><span class="n">pixbuf</span><span class="p">,</span> <span class="n">widget</span><span class="p">)</span> + <span class="n">gdkcontext</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">gdk</span><span class="o">.</span><span class="n">CairoContext</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> + <span class="n">gdkcontext</span><span class="o">.</span><span class="n">set_source_pixbuf</span><span class="p">(</span><span class="n">pixbuf</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">gdkcontext</span><span class="o">.</span><span class="n">paint</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">sensitive</span><span class="p">:</span> + <span class="n">pixbuf</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_insensitive_pixbuf</span><span class="p">(</span><span class="n">pixbuf</span><span class="p">,</span> <span class="n">widget</span><span class="p">)</span> + <span class="n">gdkcontext</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">gdk</span><span class="o">.</span><span class="n">CairoContext</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> + <span class="n">gdkcontext</span><span class="o">.</span><span class="n">set_source_pixbuf</span><span class="p">(</span><span class="n">pixbuf</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">gdkcontext</span><span class="o">.</span><span class="n">paint</span><span class="p">()</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">badge_name</span><span class="p">:</span> + <span class="n">context</span><span class="o">.</span><span class="n">restore</span><span class="p">()</span> + <span class="n">context</span><span class="o">.</span><span class="n">translate</span><span class="p">(</span><span class="n">badge_info</span><span class="o">.</span><span class="n">attach_x</span><span class="p">,</span> <span class="n">badge_info</span><span class="o">.</span><span class="n">attach_y</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_draw_badge</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">badge_info</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="n">sensitive</span><span class="p">,</span> <span class="n">widget</span><span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_surface_cache</span><span class="p">[</span><span class="n">cache_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">surface</span> + + <span class="k">return</span> <span class="n">surface</span> + + <span class="n">xo_color</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">_get_xo_color</span><span class="p">,</span> <span class="n">_set_xo_color</span><span class="p">)</span> + + +<div class="viewcode-block" id="Icon"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon">[docs]</a><span class="k">class</span> <span class="nc">Icon</span><span class="p">(</span><span class="n">gtk</span><span class="o">.</span><span class="n">Image</span><span class="p">):</span> + + <span class="n">__gtype_name__</span> <span class="o">=</span> <span class="s">'SugarIcon'</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="n">_IconBuffer</span><span class="p">()</span> + <span class="c"># HACK: need to keep a reference to the path so it doesn't get garbage</span> + <span class="c"># collected while it's still used if it's a sugar.util.TempFilePath.</span> + <span class="c"># See #1175</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_alpha</span> <span class="o">=</span> <span class="mf">1.0</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_scale</span> <span class="o">=</span> <span class="mf">1.0</span> + + <span class="n">gobject</span><span class="o">.</span><span class="n">GObject</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + +<div class="viewcode-block" id="Icon.get_file"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.get_file">[docs]</a> <span class="k">def</span> <span class="nf">get_file</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_file</span> +</div> +<div class="viewcode-block" id="Icon.set_file"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.set_file">[docs]</a> <span class="k">def</span> <span class="nf">set_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_name</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_file</span> <span class="o">=</span> <span class="n">file_name</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="n">file_name</span> +</div> + <span class="nb">file</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_file</span><span class="p">,</span> <span class="n">getter</span><span class="o">=</span><span class="n">get_file</span><span class="p">)</span> + + <span class="k">def</span> <span class="nf">_sync_image_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">icon_name</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">icon_name</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">icon_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">icon_name</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">file_name</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">file</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">file</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">pixel_size</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span> + <span class="n">width</span><span class="p">,</span> <span class="n">height</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">icon_size_lookup</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">icon_size</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">width</span> <span class="o">=</span> <span class="n">height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">pixel_size</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> <span class="o">!=</span> <span class="n">width</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">height</span> <span class="o">!=</span> <span class="n">height</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="n">width</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="n">height</span> + + <span class="k">def</span> <span class="nf">_icon_size_changed_cb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">image</span><span class="p">,</span> <span class="n">pspec</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">icon_size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">icon_size</span> + + <span class="k">def</span> <span class="nf">_icon_name_changed_cb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">image</span><span class="p">,</span> <span class="n">pspec</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">icon_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">icon_name</span> + + <span class="k">def</span> <span class="nf">_file_changed_cb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">image</span><span class="p">,</span> <span class="n">pspec</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">file</span> + +<div class="viewcode-block" id="Icon.do_size_request"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.do_size_request">[docs]</a> <span class="k">def</span> <span class="nf">do_size_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">requisition</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> requisition :</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> None</span> + +<span class="sd"> """</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_sync_image_properties</span><span class="p">()</span> + <span class="n">surface</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">get_surface</span><span class="p">()</span> + <span class="k">if</span> <span class="n">surface</span><span class="p">:</span> + <span class="n">requisition</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">surface</span><span class="o">.</span><span class="n">get_width</span><span class="p">()</span> + <span class="n">requisition</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">surface</span><span class="o">.</span><span class="n">get_height</span><span class="p">()</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">height</span><span class="p">:</span> + <span class="n">requisition</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> + <span class="n">requisition</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">requisition</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">requisition</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> +</div> +<div class="viewcode-block" id="Icon.do_expose_event"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.do_expose_event">[docs]</a> <span class="k">def</span> <span class="nf">do_expose_event</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> event :</span> + +<span class="sd"> Returns:</span> +<span class="sd"> --------</span> +<span class="sd"> None</span> + +<span class="sd"> """</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_sync_image_properties</span><span class="p">()</span> + <span class="n">sensitive</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">!=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">STATE_INSENSITIVE</span><span class="p">)</span> + <span class="n">surface</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">get_surface</span><span class="p">(</span><span class="n">sensitive</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span> + <span class="k">if</span> <span class="n">surface</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="k">return</span> + + <span class="n">xpad</span><span class="p">,</span> <span class="n">ypad</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_padding</span><span class="p">()</span> + <span class="n">xalign</span><span class="p">,</span> <span class="n">yalign</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">()</span> + <span class="n">requisition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_child_requisition</span><span class="p">()</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_direction</span><span class="p">()</span> <span class="o">!=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">TEXT_DIR_LTR</span><span class="p">:</span> + <span class="n">xalign</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">-</span> <span class="n">xalign</span> + + <span class="n">allocation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_allocation</span><span class="p">()</span> + <span class="n">x</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">allocation</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="n">xpad</span> <span class="o">+</span> + <span class="p">(</span><span class="n">allocation</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">requisition</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">*</span> <span class="n">xalign</span><span class="p">)</span> + <span class="n">y</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">allocation</span><span class="o">.</span><span class="n">y</span> <span class="o">+</span> <span class="n">ypad</span> <span class="o">+</span> + <span class="p">(</span><span class="n">allocation</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">requisition</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="o">*</span> <span class="n">yalign</span><span class="p">)</span> + + <span class="n">cr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">window</span><span class="o">.</span><span class="n">cairo_create</span><span class="p">()</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scale</span> <span class="o">!=</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="n">cr</span><span class="o">.</span><span class="n">scale</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_scale</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scale</span><span class="p">)</span> + + <span class="n">margin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> <span class="o">*</span> <span class="p">(</span><span class="mi">1</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scale</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span> + <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">x</span> <span class="o">+</span> <span class="n">margin</span><span class="p">,</span> <span class="n">y</span> <span class="o">+</span> <span class="n">margin</span> + + <span class="n">x</span> <span class="o">=</span> <span class="n">x</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scale</span> + <span class="n">y</span> <span class="o">=</span> <span class="n">y</span> <span class="o">/</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scale</span> + + <span class="n">cr</span><span class="o">.</span><span class="n">set_source_surface</span><span class="p">(</span><span class="n">surface</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> + + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alpha</span> <span class="o">==</span> <span class="mf">1.0</span><span class="p">:</span> + <span class="n">cr</span><span class="o">.</span><span class="n">paint</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">cr</span><span class="o">.</span><span class="n">paint_with_alpha</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_alpha</span><span class="p">)</span> +</div> +<div class="viewcode-block" id="Icon.set_xo_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.set_xo_color">[docs]</a> <span class="k">def</span> <span class="nf">set_xo_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> value :</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> None</span> + +<span class="sd"> """</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">xo_color</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">xo_color</span> <span class="o">=</span> <span class="n">value</span> + <span class="bp">self</span><span class="o">.</span><span class="n">queue_draw</span><span class="p">()</span> +</div> + <span class="n">xo_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span> + <span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> <span class="n">getter</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_xo_color</span><span class="p">)</span> + +<div class="viewcode-block" id="Icon.set_fill_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.set_fill_color">[docs]</a> <span class="k">def</span> <span class="nf">set_fill_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> value :</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> None</span> + +<span class="sd"> """</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">fill_color</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">fill_color</span> <span class="o">=</span> <span class="n">value</span> + <span class="bp">self</span><span class="o">.</span><span class="n">queue_draw</span><span class="p">()</span> +</div> +<div class="viewcode-block" id="Icon.get_fill_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.get_fill_color">[docs]</a> <span class="k">def</span> <span class="nf">get_fill_color</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> None</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> fill_color :</span> + +<span class="sd"> """</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">fill_color</span> +</div> + <span class="n">fill_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span> + <span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> <span class="n">getter</span><span class="o">=</span><span class="n">get_fill_color</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_fill_color</span><span class="p">)</span> + +<div class="viewcode-block" id="Icon.set_stroke_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.set_stroke_color">[docs]</a> <span class="k">def</span> <span class="nf">set_stroke_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> value :</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> None</span> + +<span class="sd"> """</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">stroke_color</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">stroke_color</span> <span class="o">=</span> <span class="n">value</span> + <span class="bp">self</span><span class="o">.</span><span class="n">queue_draw</span><span class="p">()</span> +</div> +<div class="viewcode-block" id="Icon.get_stroke_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.get_stroke_color">[docs]</a> <span class="k">def</span> <span class="nf">get_stroke_color</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> None</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> stroke_color :</span> + +<span class="sd"> """</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">stroke_color</span> +</div> + <span class="n">stroke_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span> + <span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> <span class="n">getter</span><span class="o">=</span><span class="n">get_stroke_color</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_stroke_color</span><span class="p">)</span> + +<div class="viewcode-block" id="Icon.set_badge_name"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.set_badge_name">[docs]</a> <span class="k">def</span> <span class="nf">set_badge_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Parameters</span> +<span class="sd"> ----------</span> +<span class="sd"> value:</span> + +<span class="sd"> Returns</span> +<span class="sd"> -------</span> +<span class="sd"> None</span> + +<span class="sd"> """</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">badge_name</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">badge_name</span> <span class="o">=</span> <span class="n">value</span> + <span class="bp">self</span><span class="o">.</span><span class="n">queue_resize</span><span class="p">()</span> +</div> +<div class="viewcode-block" id="Icon.get_badge_name"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.get_badge_name">[docs]</a> <span class="k">def</span> <span class="nf">get_badge_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">badge_name</span> +</div> + <span class="n">badge_name</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span> + <span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span> <span class="n">getter</span><span class="o">=</span><span class="n">get_badge_name</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_badge_name</span><span class="p">)</span> + +<div class="viewcode-block" id="Icon.set_alpha"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.set_alpha">[docs]</a> <span class="k">def</span> <span class="nf">set_alpha</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_alpha</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_alpha</span> <span class="o">=</span> <span class="n">value</span> + <span class="bp">self</span><span class="o">.</span><span class="n">queue_draw</span><span class="p">()</span> +</div> + <span class="n">alpha</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span> + <span class="nb">type</span><span class="o">=</span><span class="nb">float</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_alpha</span><span class="p">)</span> + +<div class="viewcode-block" id="Icon.set_scale"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.Icon.set_scale">[docs]</a> <span class="k">def</span> <span class="nf">set_scale</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scale</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_scale</span> <span class="o">=</span> <span class="n">value</span> + <span class="bp">self</span><span class="o">.</span><span class="n">queue_draw</span><span class="p">()</span> +</div> + <span class="n">scale</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span> + <span class="nb">type</span><span class="o">=</span><span class="nb">float</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_scale</span><span class="p">)</span> + +</div> +<div class="viewcode-block" id="CellRendererIcon"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon">[docs]</a><span class="k">class</span> <span class="nc">CellRendererIcon</span><span class="p">(</span><span class="n">gtk</span><span class="o">.</span><span class="n">GenericCellRenderer</span><span class="p">):</span> + + <span class="n">__gtype_name__</span> <span class="o">=</span> <span class="s">'SugarCellRendererIcon'</span> + + <span class="n">__gsignals__</span> <span class="o">=</span> <span class="p">{</span> + <span class="s">'clicked'</span><span class="p">:</span> <span class="p">(</span><span class="n">gobject</span><span class="o">.</span><span class="n">SIGNAL_RUN_FIRST</span><span class="p">,</span> <span class="n">gobject</span><span class="o">.</span><span class="n">TYPE_NONE</span><span class="p">,</span> <span class="p">[</span><span class="nb">object</span><span class="p">]),</span> + <span class="p">}</span> + + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tree_view</span><span class="p">):</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span> <span class="o">=</span> <span class="n">_IconBuffer</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">cache</span> <span class="o">=</span> <span class="bp">True</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_xo_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_fill_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_stroke_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_prelit_fill_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_prelit_stroke_color</span> <span class="o">=</span> <span class="bp">None</span> + + <span class="n">gobject</span><span class="o">.</span><span class="n">GObject</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.set_file_name"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_file_name">[docs]</a> <span class="k">def</span> <span class="nf">set_file_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">file_name</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">file_name</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_file_name</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.set_icon_name"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_icon_name">[docs]</a> <span class="k">def</span> <span class="nf">set_icon_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">icon_name</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">icon_name</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">icon_name</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">str</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_icon_name</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.get_xo_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.get_xo_color">[docs]</a> <span class="k">def</span> <span class="nf">get_xo_color</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xo_color</span> +</div> +<div class="viewcode-block" id="CellRendererIcon.set_xo_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_xo_color">[docs]</a> <span class="k">def</span> <span class="nf">set_xo_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_xo_color</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">xo_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> + <span class="n">getter</span><span class="o">=</span><span class="n">get_xo_color</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_xo_color</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.set_fill_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_fill_color">[docs]</a> <span class="k">def</span> <span class="nf">set_fill_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_fill_color</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_fill_color</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">fill_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_fill_color</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.set_stroke_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_stroke_color">[docs]</a> <span class="k">def</span> <span class="nf">set_stroke_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stroke_color</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_stroke_color</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">stroke_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_stroke_color</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.set_prelit_fill_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_prelit_fill_color">[docs]</a> <span class="k">def</span> <span class="nf">set_prelit_fill_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prelit_fill_color</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_prelit_fill_color</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">prelit_fill_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> + <span class="n">setter</span><span class="o">=</span><span class="n">set_prelit_fill_color</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.set_prelit_stroke_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_prelit_stroke_color">[docs]</a> <span class="k">def</span> <span class="nf">set_prelit_stroke_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prelit_stroke_color</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_prelit_stroke_color</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">prelit_stroke_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> + <span class="n">setter</span><span class="o">=</span><span class="n">set_prelit_stroke_color</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.set_background_color"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_background_color">[docs]</a> <span class="k">def</span> <span class="nf">set_background_color</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">background_color</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">background_color</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">background_color</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> + <span class="n">setter</span><span class="o">=</span><span class="n">set_background_color</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.set_size"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.set_size">[docs]</a> <span class="k">def</span> <span class="nf">set_size</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> <span class="o">!=</span> <span class="n">value</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> <span class="o">=</span> <span class="n">value</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">height</span> <span class="o">=</span> <span class="n">value</span> +</div> + <span class="n">size</span> <span class="o">=</span> <span class="n">gobject</span><span class="o">.</span><span class="n">property</span><span class="p">(</span><span class="nb">type</span><span class="o">=</span><span class="nb">object</span><span class="p">,</span> <span class="n">setter</span><span class="o">=</span><span class="n">set_size</span><span class="p">)</span> + +<div class="viewcode-block" id="CellRendererIcon.on_get_size"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.on_get_size">[docs]</a> <span class="k">def</span> <span class="nf">on_get_size</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">cell_area</span><span class="p">):</span> + <span class="n">width</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">width</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">xpad</span> <span class="o">*</span> <span class="mi">2</span> + <span class="n">height</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">height</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">ypad</span> <span class="o">*</span> <span class="mi">2</span> + <span class="n">xoffset</span> <span class="o">=</span> <span class="mi">0</span> + <span class="n">yoffset</span> <span class="o">=</span> <span class="mi">0</span> + + <span class="k">if</span> <span class="n">width</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">height</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">cell_area</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> + + <span class="k">if</span> <span class="n">widget</span><span class="o">.</span><span class="n">get_direction</span><span class="p">()</span> <span class="o">==</span> <span class="n">gtk</span><span class="o">.</span><span class="n">TEXT_DIR_RTL</span><span class="p">:</span> + <span class="n">xoffset</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">xalign</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">xoffset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">xalign</span> + + <span class="n">xoffset</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">xoffset</span> <span class="o">*</span> <span class="p">(</span><span class="n">cell_area</span><span class="o">.</span><span class="n">width</span> <span class="o">-</span> <span class="n">width</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> + <span class="n">yoffset</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">props</span><span class="o">.</span><span class="n">yalign</span> <span class="o">*</span> <span class="p">(</span><span class="n">cell_area</span><span class="o">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">height</span><span class="p">),</span> <span class="mi">0</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">xoffset</span><span class="p">,</span> <span class="n">yoffset</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span> +</div> +<div class="viewcode-block" id="CellRendererIcon.on_activate"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.on_activate">[docs]</a> <span class="k">def</span> <span class="nf">on_activate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">background_area</span><span class="p">,</span> <span class="n">cell_area</span><span class="p">,</span> + <span class="n">flags</span><span class="p">):</span> + <span class="k">pass</span> +</div> +<div class="viewcode-block" id="CellRendererIcon.on_start_editing"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.on_start_editing">[docs]</a> <span class="k">def</span> <span class="nf">on_start_editing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">background_area</span><span class="p">,</span> <span class="n">cell_area</span><span class="p">,</span> + <span class="n">flags</span><span class="p">):</span> + <span class="k">pass</span> +</div> + <span class="k">def</span> <span class="nf">_is_prelit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tree_view</span><span class="p">):</span> + <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">tree_view</span><span class="o">.</span><span class="n">get_pointer</span><span class="p">()</span> + <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">tree_view</span><span class="o">.</span><span class="n">convert_widget_to_bin_window_coords</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> + <span class="n">pos</span> <span class="o">=</span> <span class="n">tree_view</span><span class="o">.</span><span class="n">get_path_at_pos</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span> + <span class="k">if</span> <span class="n">pos</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">False</span> + + <span class="n">path_</span><span class="p">,</span> <span class="n">column</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">pos</span> + + <span class="k">for</span> <span class="n">cell_renderer</span> <span class="ow">in</span> <span class="n">column</span><span class="o">.</span><span class="n">get_cell_renderers</span><span class="p">():</span> + <span class="k">if</span> <span class="n">cell_renderer</span> <span class="o">==</span> <span class="bp">self</span><span class="p">:</span> + <span class="n">cell_x</span><span class="p">,</span> <span class="n">cell_width</span> <span class="o">=</span> <span class="n">column</span><span class="o">.</span><span class="n">cell_get_position</span><span class="p">(</span><span class="n">cell_renderer</span><span class="p">)</span> + <span class="k">if</span> <span class="n">x</span> <span class="o">></span> <span class="n">cell_x</span> <span class="ow">and</span> <span class="n">x</span> <span class="o"><</span> <span class="p">(</span><span class="n">cell_x</span> <span class="o">+</span> <span class="n">cell_width</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">True</span> + <span class="k">return</span> <span class="bp">False</span> + + <span class="k">return</span> <span class="bp">False</span> + +<div class="viewcode-block" id="CellRendererIcon.on_render"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.CellRendererIcon.on_render">[docs]</a> <span class="k">def</span> <span class="nf">on_render</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">window</span><span class="p">,</span> <span class="n">widget</span><span class="p">,</span> <span class="n">background_area</span><span class="p">,</span> <span class="n">cell_area</span><span class="p">,</span> + <span class="n">expose_area</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xo_color</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> + <span class="n">stroke_color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xo_color</span><span class="o">.</span><span class="n">get_stroke_color</span><span class="p">()</span> + <span class="n">fill_color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_xo_color</span><span class="o">.</span><span class="n">get_fill_color</span><span class="p">()</span> + <span class="n">prelit_fill_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="n">prelit_stroke_color</span> <span class="o">=</span> <span class="bp">None</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">stroke_color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stroke_color</span> + <span class="n">fill_color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_fill_color</span> + <span class="n">prelit_fill_color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prelit_fill_color</span> + <span class="n">prelit_stroke_color</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prelit_stroke_color</span> + + <span class="n">has_prelit_colors</span> <span class="o">=</span> <span class="bp">None</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="n">prelit_fill_color</span><span class="p">,</span> + <span class="n">prelit_stroke_color</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">flags</span> <span class="o">&</span> <span class="n">gtk</span><span class="o">.</span><span class="n">CELL_RENDERER_PRELIT</span> <span class="ow">and</span> <span class="n">has_prelit_colors</span> <span class="ow">and</span> \ + <span class="bp">self</span><span class="o">.</span><span class="n">_is_prelit</span><span class="p">(</span><span class="n">widget</span><span class="p">):</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">fill_color</span> <span class="o">=</span> <span class="n">prelit_fill_color</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">stroke_color</span> <span class="o">=</span> <span class="n">prelit_stroke_color</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">fill_color</span> <span class="o">=</span> <span class="n">fill_color</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">stroke_color</span> <span class="o">=</span> <span class="n">stroke_color</span> + + <span class="n">surface</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_buffer</span><span class="o">.</span><span class="n">get_surface</span><span class="p">()</span> + <span class="k">if</span> <span class="n">surface</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> + <span class="k">return</span> + + <span class="n">xoffset</span><span class="p">,</span> <span class="n">yoffset</span><span class="p">,</span> <span class="n">width_</span><span class="p">,</span> <span class="n">height_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_get_size</span><span class="p">(</span><span class="n">widget</span><span class="p">,</span> <span class="n">cell_area</span><span class="p">)</span> + + <span class="n">x</span> <span class="o">=</span> <span class="n">cell_area</span><span class="o">.</span><span class="n">x</span> <span class="o">+</span> <span class="n">xoffset</span> + <span class="n">y</span> <span class="o">=</span> <span class="n">cell_area</span><span class="o">.</span><span class="n">y</span> <span class="o">+</span> <span class="n">yoffset</span> + + <span class="n">cr</span> <span class="o">=</span> <span class="n">window</span><span class="o">.</span><span class="n">cairo_create</span><span class="p">()</span> + <span class="n">cr</span><span class="o">.</span><span class="n">set_source_surface</span><span class="p">(</span><span class="n">surface</span><span class="p">,</span> <span class="n">math</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">x</span><span class="p">),</span> <span class="n">math</span><span class="o">.</span><span class="n">floor</span><span class="p">(</span><span class="n">y</span><span class="p">))</span> + <span class="n">cr</span><span class="o">.</span><span class="n">rectangle</span><span class="p">(</span><span class="n">expose_area</span><span class="p">)</span> + <span class="n">cr</span><span class="o">.</span><span class="n">paint</span><span class="p">()</span> + +</div></div> +<div class="viewcode-block" id="get_icon_state"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.get_icon_state">[docs]</a><span class="k">def</span> <span class="nf">get_icon_state</span><span class="p">(</span><span class="n">base_name</span><span class="p">,</span> <span class="n">perc</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">5</span><span class="p">):</span> + <span class="n">strength</span> <span class="o">=</span> <span class="nb">round</span><span class="p">(</span><span class="n">perc</span> <span class="o">/</span> <span class="n">step</span><span class="p">)</span> <span class="o">*</span> <span class="n">step</span> + <span class="n">icon_theme</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">icon_theme_get_default</span><span class="p">()</span> + + <span class="k">while</span> <span class="n">strength</span> <span class="o"><=</span> <span class="mi">100</span> <span class="ow">and</span> <span class="n">strength</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span> + <span class="n">icon_name</span> <span class="o">=</span> <span class="s">'</span><span class="si">%s</span><span class="s">-</span><span class="si">%03d</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">base_name</span><span class="p">,</span> <span class="n">strength</span><span class="p">)</span> + <span class="k">if</span> <span class="n">icon_theme</span><span class="o">.</span><span class="n">has_icon</span><span class="p">(</span><span class="n">icon_name</span><span class="p">):</span> + <span class="k">return</span> <span class="n">icon_name</span> + + <span class="n">strength</span> <span class="o">=</span> <span class="n">strength</span> <span class="o">+</span> <span class="n">step</span> + +</div> +<div class="viewcode-block" id="get_icon_file_name"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.get_icon_file_name">[docs]</a><span class="k">def</span> <span class="nf">get_icon_file_name</span><span class="p">(</span><span class="n">icon_name</span><span class="p">):</span> + <span class="n">icon_theme</span> <span class="o">=</span> <span class="n">gtk</span><span class="o">.</span><span class="n">icon_theme_get_default</span><span class="p">()</span> + <span class="n">info</span> <span class="o">=</span> <span class="n">icon_theme</span><span class="o">.</span><span class="n">lookup_icon</span><span class="p">(</span><span class="n">icon_name</span><span class="p">,</span> <span class="n">gtk</span><span class="o">.</span><span class="n">ICON_SIZE_LARGE_TOOLBAR</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">info</span><span class="p">:</span> + <span class="k">return</span> <span class="bp">None</span> + <span class="n">filename</span> <span class="o">=</span> <span class="n">info</span><span class="o">.</span><span class="n">get_filename</span><span class="p">()</span> + <span class="k">del</span> <span class="n">info</span> + <span class="k">return</span> <span class="n">filename</span> + +</div> +<div class="viewcode-block" id="get_surface"><a class="viewcode-back" href="../../sweetener.html#desktop.icon.get_surface">[docs]</a><span class="k">def</span> <span class="nf">get_surface</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> + <span class="sd">"""Get cached cairo surface.</span> + +<span class="sd"> Keyword arguments:</span> +<span class="sd"> icon_name -- name of icon to load, default None</span> +<span class="sd"> file_name -- path to image file, default None</span> +<span class="sd"> fill_color -- for svg images, change default fill color</span> +<span class="sd"> default None</span> +<span class="sd"> stroke_color -- for svg images, change default stroke color</span> +<span class="sd"> default None</span> +<span class="sd"> background_color -- draw background or surface will be transparent</span> +<span class="sd"> default None</span> +<span class="sd"> badge_name -- name of icon which will be drawn on top of</span> +<span class="sd"> original image, default None</span> +<span class="sd"> width -- change image width, default None</span> +<span class="sd"> height -- change image height, default None</span> +<span class="sd"> cache -- if image is svg, keep svg file content for later</span> +<span class="sd"> scale -- scale image, default 1.0</span> + +<span class="sd"> Return: cairo surface or None if image was not found</span> + +<span class="sd"> """</span> + <span class="n">icon</span> <span class="o">=</span> <span class="n">_IconBuffer</span><span class="p">()</span> + <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> + <span class="n">icon</span><span class="o">.</span><span class="n">__setattr__</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> + <span class="k">return</span> <span class="n">icon</span><span class="o">.</span><span class="n">get_surface</span><span class="p">()</span></div> +</pre></div> + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../../genindex.html" title="General Index" + >index</a></li> + <li><a href="../../index.html">Sweetener 0.7 documentation</a> »</li> + <li><a href="../index.html" >Module code</a> »</li> + </ul> + </div> + <div class="footer"> + © Copyright 2012, Daniel Francis. + Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. + </div> + </body> +</html>
\ No newline at end of file |