~stephen-j-boddy/terminator/bugfix-1318542-double-chars

« back to all changes in this revision

Viewing changes to doc/apidoc/_build/html/_modules/terminatorlib/config.html

  • Committer: Stephen Boddy
  • Date: 2015-08-08 02:11:30 UTC
  • Revision ID: stephen.j.boddy@gmail.com-20150808021130-9c1npu4gvenkcb1p
A manual has been added to Terminator
* Added source and generated html of manual, and API doc
* setup.py can install the manual (and by extension do can debuild)
* setup.py has (inactive) code for generating the html from the source
  but this will break if rtd theme is not available
* A few changes to doc strings to make the autodoc prettier
* Added help shortcut, by default F1 to open the local manual
* Added button to About tab to launch manual
* A couple of additional string to translate related to manual/help

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
 
 
3
<!DOCTYPE html>
 
4
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
 
5
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
 
6
<head>
 
7
  <meta charset="utf-8">
 
8
  
 
9
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
 
10
  
 
11
  <title>terminatorlib.config &mdash; terminatorlib 0.98 documentation</title>
 
12
  
 
13
 
 
14
  
 
15
  
 
16
 
 
17
  
 
18
 
 
19
  
 
20
  
 
21
    
 
22
 
 
23
  
 
24
 
 
25
  
 
26
  
 
27
    <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
 
28
  
 
29
 
 
30
  
 
31
 
 
32
  
 
33
    <link rel="top" title="terminatorlib 0.98 documentation" href="../../index.html"/>
 
34
        <link rel="up" title="Module code" href="../index.html"/> 
 
35
 
 
36
  
 
37
  <script src="_static/js/modernizr.min.js"></script>
 
38
 
 
39
</head>
 
40
 
 
41
<body class="wy-body-for-nav" role="document">
 
42
 
 
43
  <div class="wy-grid-for-nav">
 
44
 
 
45
    
 
46
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
 
47
      <div class="wy-side-nav-search">
 
48
        
 
49
 
 
50
        
 
51
          <a href="../../index.html" class="icon icon-home"> terminatorlib
 
52
        
 
53
 
 
54
        
 
55
        </a>
 
56
 
 
57
        
 
58
<div role="search">
 
59
  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
 
60
    <input type="text" name="q" placeholder="Search docs" />
 
61
    <input type="hidden" name="check_keywords" value="yes" />
 
62
    <input type="hidden" name="area" value="default" />
 
63
  </form>
 
64
</div>
 
65
 
 
66
        
 
67
      </div>
 
68
 
 
69
      <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
 
70
        
 
71
          
 
72
          
 
73
              <ul>
 
74
<li class="toctree-l1"><a class="reference internal" href="../../terminatorlib.html">terminatorlib package</a><ul>
 
75
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#subpackages">Subpackages</a><ul>
 
76
<li class="toctree-l3"><a class="reference internal" href="../../terminatorlib.configobj.html">terminatorlib.configobj package</a><ul>
 
77
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.configobj.html#submodules">Submodules</a></li>
 
78
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.configobj.html#module-terminatorlib.configobj.configobj">terminatorlib.configobj.configobj module</a></li>
 
79
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.configobj.html#module-terminatorlib.configobj.validate">terminatorlib.configobj.validate module</a></li>
 
80
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.configobj.html#module-terminatorlib.configobj">Module contents</a></li>
 
81
</ul>
 
82
</li>
 
83
<li class="toctree-l3"><a class="reference internal" href="../../terminatorlib.plugins.html">terminatorlib.plugins package</a><ul>
 
84
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#submodules">Submodules</a></li>
 
85
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#module-terminatorlib.plugins.activitywatch">terminatorlib.plugins.activitywatch module</a></li>
 
86
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#module-terminatorlib.plugins.custom_commands">terminatorlib.plugins.custom_commands module</a></li>
 
87
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#module-terminatorlib.plugins.logger">terminatorlib.plugins.logger module</a></li>
 
88
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#module-terminatorlib.plugins.maven">terminatorlib.plugins.maven module</a></li>
 
89
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#module-terminatorlib.plugins.terminalshot">terminatorlib.plugins.terminalshot module</a></li>
 
90
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#module-terminatorlib.plugins.testplugin">terminatorlib.plugins.testplugin module</a></li>
 
91
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#module-terminatorlib.plugins.url_handlers">terminatorlib.plugins.url_handlers module</a></li>
 
92
<li class="toctree-l4"><a class="reference internal" href="../../terminatorlib.plugins.html#module-terminatorlib.plugins">Module contents</a></li>
 
93
</ul>
 
94
</li>
 
95
</ul>
 
96
</li>
 
97
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#submodules">Submodules</a></li>
 
98
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.borg">terminatorlib.borg module</a></li>
 
99
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.config">terminatorlib.config module</a></li>
 
100
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.container">terminatorlib.container module</a></li>
 
101
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.cwd">terminatorlib.cwd module</a></li>
 
102
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.debugserver">terminatorlib.debugserver module</a></li>
 
103
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.editablelabel">terminatorlib.editablelabel module</a></li>
 
104
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.encoding">terminatorlib.encoding module</a></li>
 
105
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.factory">terminatorlib.factory module</a></li>
 
106
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.freebsd">terminatorlib.freebsd module</a></li>
 
107
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.ipc">terminatorlib.ipc module</a></li>
 
108
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.keybindings">terminatorlib.keybindings module</a></li>
 
109
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.layoutlauncher">terminatorlib.layoutlauncher module</a></li>
 
110
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.notebook">terminatorlib.notebook module</a></li>
 
111
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.optionparse">terminatorlib.optionparse module</a></li>
 
112
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.paned">terminatorlib.paned module</a></li>
 
113
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.plugin">terminatorlib.plugin module</a></li>
 
114
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.prefseditor">terminatorlib.prefseditor module</a></li>
 
115
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.searchbar">terminatorlib.searchbar module</a></li>
 
116
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.signalman">terminatorlib.signalman module</a></li>
 
117
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.terminal">terminatorlib.terminal module</a></li>
 
118
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.terminal_popup_menu">terminatorlib.terminal_popup_menu module</a></li>
 
119
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.terminator">terminatorlib.terminator module</a></li>
 
120
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.titlebar">terminatorlib.titlebar module</a></li>
 
121
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.translation">terminatorlib.translation module</a></li>
 
122
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.util">terminatorlib.util module</a></li>
 
123
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.version">terminatorlib.version module</a></li>
 
124
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib.window">terminatorlib.window module</a></li>
 
125
<li class="toctree-l2"><a class="reference internal" href="../../terminatorlib.html#module-terminatorlib">Module contents</a></li>
 
126
</ul>
 
127
</li>
 
128
</ul>
 
129
 
 
130
          
 
131
        
 
132
      </div>
 
133
      &nbsp;
 
134
    </nav>
 
135
 
 
136
    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
 
137
 
 
138
      
 
139
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
 
140
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
 
141
        <a href="../../index.html">terminatorlib</a>
 
142
      </nav>
 
143
 
 
144
 
 
145
      
 
146
      <div class="wy-nav-content">
 
147
        <div class="rst-content">
 
148
          <div role="navigation" aria-label="breadcrumbs navigation">
 
149
  <ul class="wy-breadcrumbs">
 
150
    <li><a href="../../index.html">Docs</a> &raquo;</li>
 
151
      
 
152
          <li><a href="../index.html">Module code</a> &raquo;</li>
 
153
      
 
154
    <li>terminatorlib.config</li>
 
155
      <li class="wy-breadcrumbs-aside">
 
156
        
 
157
          
 
158
        
 
159
      </li>
 
160
  </ul>
 
161
  <hr/>
 
162
</div>
 
163
          <div role="main" class="document">
 
164
            
 
165
  <h1>Source code for terminatorlib.config</h1><div class="highlight"><pre>
 
166
<span class="c">#!/usr/bin/python</span>
 
167
<span class="c">#    TerminatorConfig - layered config classes</span>
 
168
<span class="c">#    Copyright (C) 2006-2010  cmsj@tenshu.net</span>
 
169
<span class="c">#</span>
 
170
<span class="c">#  This program is free software; you can redistribute it and/or modify</span>
 
171
<span class="c">#  it under the terms of the GNU General Public License as published by</span>
 
172
<span class="c">#  the Free Software Foundation, version 2 only.</span>
 
173
<span class="c">#</span>
 
174
<span class="c">#  This program is distributed in the hope that it will be useful,</span>
 
175
<span class="c">#  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
 
176
<span class="c">#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
 
177
<span class="c">#  GNU General Public License for more details.</span>
 
178
<span class="c">#</span>
 
179
<span class="c">#  You should have received a copy of the GNU General Public License</span>
 
180
<span class="c">#  along with this program; if not, write to the Free Software</span>
 
181
<span class="c">#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span>
 
182
 
 
183
<span class="sd">&quot;&quot;&quot;Terminator by Chris Jones &lt;cmsj@tenshu.net&gt;</span>
 
184
 
 
185
<span class="sd">Classes relating to configuration</span>
 
186
 
 
187
<span class="sd">&gt;&gt;&gt; DEFAULTS[&#39;global_config&#39;][&#39;focus&#39;]</span>
 
188
<span class="sd">&#39;click&#39;</span>
 
189
<span class="sd">&gt;&gt;&gt; config = Config()</span>
 
190
<span class="sd">&gt;&gt;&gt; config[&#39;focus&#39;] = &#39;sloppy&#39;</span>
 
191
<span class="sd">&gt;&gt;&gt; config[&#39;focus&#39;]</span>
 
192
<span class="sd">&#39;sloppy&#39;</span>
 
193
<span class="sd">&gt;&gt;&gt; DEFAULTS[&#39;global_config&#39;][&#39;focus&#39;]</span>
 
194
<span class="sd">&#39;click&#39;</span>
 
195
<span class="sd">&gt;&gt;&gt; config2 = Config()</span>
 
196
<span class="sd">&gt;&gt;&gt; config2[&#39;focus&#39;]</span>
 
197
<span class="sd">&#39;sloppy&#39;</span>
 
198
<span class="sd">&gt;&gt;&gt; config2[&#39;focus&#39;] = &#39;click&#39;</span>
 
199
<span class="sd">&gt;&gt;&gt; config2[&#39;focus&#39;]</span>
 
200
<span class="sd">&#39;click&#39;</span>
 
201
<span class="sd">&gt;&gt;&gt; config[&#39;focus&#39;]</span>
 
202
<span class="sd">&#39;click&#39;</span>
 
203
<span class="sd">&gt;&gt;&gt; config[&#39;geometry_hinting&#39;].__class__.__name__</span>
 
204
<span class="sd">&#39;bool&#39;</span>
 
205
<span class="sd">&gt;&gt;&gt; plugintest = {}</span>
 
206
<span class="sd">&gt;&gt;&gt; plugintest[&#39;foo&#39;] = &#39;bar&#39;</span>
 
207
<span class="sd">&gt;&gt;&gt; config.plugin_set_config(&#39;testplugin&#39;, plugintest)</span>
 
208
<span class="sd">&gt;&gt;&gt; config.plugin_get_config(&#39;testplugin&#39;)</span>
 
209
<span class="sd">{&#39;foo&#39;: &#39;bar&#39;}</span>
 
210
<span class="sd">&gt;&gt;&gt; config.plugin_get(&#39;testplugin&#39;, &#39;foo&#39;)</span>
 
211
<span class="sd">&#39;bar&#39;</span>
 
212
<span class="sd">&gt;&gt;&gt; config.plugin_get(&#39;testplugin&#39;, &#39;foo&#39;, &#39;new&#39;)</span>
 
213
<span class="sd">&#39;bar&#39;</span>
 
214
<span class="sd">&gt;&gt;&gt; config.plugin_get(&#39;testplugin&#39;, &#39;algo&#39;)</span>
 
215
<span class="sd">Traceback (most recent call last):</span>
 
216
<span class="sd">...</span>
 
217
<span class="sd">KeyError: &#39;ConfigBase::get_item: unknown key algo&#39;</span>
 
218
<span class="sd">&gt;&gt;&gt; config.plugin_get(&#39;testplugin&#39;, &#39;algo&#39;, 1)</span>
 
219
<span class="sd">1</span>
 
220
<span class="sd">&gt;&gt;&gt; config.plugin_get(&#39;anothertestplugin&#39;, &#39;algo&#39;, 500)</span>
 
221
<span class="sd">500</span>
 
222
<span class="sd">&gt;&gt;&gt; config.get_profile()</span>
 
223
<span class="sd">&#39;default&#39;</span>
 
224
<span class="sd">&gt;&gt;&gt; config.set_profile(&#39;my_first_new_testing_profile&#39;)</span>
 
225
<span class="sd">&gt;&gt;&gt; config.get_profile()</span>
 
226
<span class="sd">&#39;my_first_new_testing_profile&#39;</span>
 
227
<span class="sd">&gt;&gt;&gt; config.del_profile(&#39;my_first_new_testing_profile&#39;)</span>
 
228
<span class="sd">&gt;&gt;&gt; config.get_profile()</span>
 
229
<span class="sd">&#39;default&#39;</span>
 
230
<span class="sd">&gt;&gt;&gt; config.list_profiles().__class__.__name__</span>
 
231
<span class="sd">&#39;list&#39;</span>
 
232
<span class="sd">&gt;&gt;&gt; config.options_set({})</span>
 
233
<span class="sd">&gt;&gt;&gt; config.options_get()</span>
 
234
<span class="sd">{}</span>
 
235
<span class="sd">&gt;&gt;&gt; </span>
 
236
 
 
237
<span class="sd">&quot;&quot;&quot;</span>
 
238
 
 
239
<span class="kn">import</span> <span class="nn">platform</span>
 
240
<span class="kn">import</span> <span class="nn">os</span>
 
241
<span class="kn">from</span> <span class="nn">copy</span> <span class="kn">import</span> <span class="n">copy</span>
 
242
<span class="kn">from</span> <span class="nn">configobj.configobj</span> <span class="kn">import</span> <span class="n">ConfigObj</span><span class="p">,</span> <span class="n">flatten_errors</span>
 
243
<span class="kn">from</span> <span class="nn">configobj.validate</span> <span class="kn">import</span> <span class="n">Validator</span>
 
244
<span class="kn">from</span> <span class="nn">borg</span> <span class="kn">import</span> <span class="n">Borg</span>
 
245
<span class="kn">from</span> <span class="nn">util</span> <span class="kn">import</span> <span class="n">dbg</span><span class="p">,</span> <span class="n">err</span><span class="p">,</span> <span class="n">DEBUG</span><span class="p">,</span> <span class="n">get_config_dir</span><span class="p">,</span> <span class="n">dict_diff</span>
 
246
 
 
247
<span class="k">try</span><span class="p">:</span>
 
248
    <span class="kn">import</span> <span class="nn">gconf</span>
 
249
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
 
250
    <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;Unable to import gconf, GNOME defaults unavailable&#39;</span><span class="p">)</span>
 
251
 
 
252
<span class="n">DEFAULTS</span> <span class="o">=</span> <span class="p">{</span>
 
253
        <span class="s">&#39;global_config&#39;</span><span class="p">:</span>   <span class="p">{</span>
 
254
            <span class="s">&#39;dbus&#39;</span>                  <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
255
            <span class="s">&#39;focus&#39;</span>                 <span class="p">:</span> <span class="s">&#39;click&#39;</span><span class="p">,</span>
 
256
            <span class="s">&#39;handle_size&#39;</span>           <span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
 
257
            <span class="s">&#39;geometry_hinting&#39;</span>      <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
258
            <span class="s">&#39;window_state&#39;</span>          <span class="p">:</span> <span class="s">&#39;normal&#39;</span><span class="p">,</span>
 
259
            <span class="s">&#39;borderless&#39;</span>            <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
260
            <span class="s">&#39;tab_position&#39;</span>          <span class="p">:</span> <span class="s">&#39;top&#39;</span><span class="p">,</span>
 
261
            <span class="s">&#39;broadcast_default&#39;</span>     <span class="p">:</span> <span class="s">&#39;group&#39;</span><span class="p">,</span>
 
262
            <span class="s">&#39;close_button_on_tab&#39;</span>   <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
263
            <span class="s">&#39;hide_tabbar&#39;</span>           <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
264
            <span class="s">&#39;scroll_tabbar&#39;</span>         <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
265
            <span class="s">&#39;homogeneous_tabbar&#39;</span>    <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
266
            <span class="s">&#39;hide_from_taskbar&#39;</span>     <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
267
            <span class="s">&#39;always_on_top&#39;</span>         <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
268
            <span class="s">&#39;hide_on_lose_focus&#39;</span>    <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
269
            <span class="s">&#39;sticky&#39;</span>                <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
270
            <span class="s">&#39;try_posix_regexp&#39;</span>      <span class="p">:</span> <span class="n">platform</span><span class="o">.</span><span class="n">system</span><span class="p">()</span> <span class="o">!=</span> <span class="s">&#39;Linux&#39;</span><span class="p">,</span>
 
271
            <span class="s">&#39;use_custom_url_handler&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
272
            <span class="s">&#39;custom_url_handler&#39;</span>    <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
273
            <span class="s">&#39;disable_real_transparency&#39;</span> <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
274
            <span class="s">&#39;title_hide_sizetext&#39;</span>   <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
275
            <span class="s">&#39;title_transmit_fg_color&#39;</span> <span class="p">:</span> <span class="s">&#39;#ffffff&#39;</span><span class="p">,</span>
 
276
            <span class="s">&#39;title_transmit_bg_color&#39;</span> <span class="p">:</span> <span class="s">&#39;#c80003&#39;</span><span class="p">,</span>
 
277
            <span class="s">&#39;title_receive_fg_color&#39;</span> <span class="p">:</span> <span class="s">&#39;#ffffff&#39;</span><span class="p">,</span>
 
278
            <span class="s">&#39;title_receive_bg_color&#39;</span> <span class="p">:</span> <span class="s">&#39;#0076c9&#39;</span><span class="p">,</span>
 
279
            <span class="s">&#39;title_inactive_fg_color&#39;</span> <span class="p">:</span> <span class="s">&#39;#000000&#39;</span><span class="p">,</span>
 
280
            <span class="s">&#39;title_inactive_bg_color&#39;</span> <span class="p">:</span> <span class="s">&#39;#c0bebf&#39;</span><span class="p">,</span>
 
281
            <span class="s">&#39;inactive_color_offset&#39;</span><span class="p">:</span> <span class="mf">0.8</span><span class="p">,</span>
 
282
            <span class="s">&#39;enabled_plugins&#39;</span>       <span class="p">:</span> <span class="p">[</span><span class="s">&#39;LaunchpadBugURLHandler&#39;</span><span class="p">,</span>
 
283
                                       <span class="s">&#39;LaunchpadCodeURLHandler&#39;</span><span class="p">,</span>
 
284
                                       <span class="s">&#39;APTURLHandler&#39;</span><span class="p">],</span>
 
285
            <span class="s">&#39;suppress_multiple_term_dialog&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
286
            <span class="s">&#39;always_split_with_profile&#39;</span><span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
287
            <span class="s">&#39;title_use_system_font&#39;</span> <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
288
            <span class="s">&#39;title_font&#39;</span>            <span class="p">:</span> <span class="s">&#39;Sans 9&#39;</span><span class="p">,</span>
 
289
        <span class="p">},</span>
 
290
        <span class="s">&#39;keybindings&#39;</span><span class="p">:</span> <span class="p">{</span>
 
291
            <span class="s">&#39;zoom_in&#39;</span>          <span class="p">:</span> <span class="s">&#39;&lt;Control&gt;plus&#39;</span><span class="p">,</span>
 
292
            <span class="s">&#39;zoom_out&#39;</span>         <span class="p">:</span> <span class="s">&#39;&lt;Control&gt;minus&#39;</span><span class="p">,</span>
 
293
            <span class="s">&#39;zoom_normal&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Control&gt;0&#39;</span><span class="p">,</span>
 
294
            <span class="s">&#39;new_tab&#39;</span>          <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;t&#39;</span><span class="p">,</span>
 
295
            <span class="s">&#39;cycle_next&#39;</span>       <span class="p">:</span> <span class="s">&#39;&lt;Control&gt;Tab&#39;</span><span class="p">,</span>
 
296
            <span class="s">&#39;cycle_prev&#39;</span>       <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;Tab&#39;</span><span class="p">,</span>
 
297
            <span class="s">&#39;go_next&#39;</span>          <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;n&#39;</span><span class="p">,</span>
 
298
            <span class="s">&#39;go_prev&#39;</span>          <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;p&#39;</span><span class="p">,</span>
 
299
            <span class="s">&#39;go_up&#39;</span>            <span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;Up&#39;</span><span class="p">,</span>
 
300
            <span class="s">&#39;go_down&#39;</span>          <span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;Down&#39;</span><span class="p">,</span>
 
301
            <span class="s">&#39;go_left&#39;</span>          <span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;Left&#39;</span><span class="p">,</span>
 
302
            <span class="s">&#39;go_right&#39;</span>         <span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;Right&#39;</span><span class="p">,</span>
 
303
            <span class="s">&#39;rotate_cw&#39;</span>        <span class="p">:</span> <span class="s">&#39;&lt;Super&gt;r&#39;</span><span class="p">,</span>
 
304
            <span class="s">&#39;rotate_ccw&#39;</span>       <span class="p">:</span> <span class="s">&#39;&lt;Super&gt;&lt;Shift&gt;r&#39;</span><span class="p">,</span>
 
305
            <span class="s">&#39;split_horiz&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;o&#39;</span><span class="p">,</span>
 
306
            <span class="s">&#39;split_vert&#39;</span>       <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;e&#39;</span><span class="p">,</span>
 
307
            <span class="s">&#39;close_term&#39;</span>       <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;w&#39;</span><span class="p">,</span>
 
308
            <span class="s">&#39;copy&#39;</span>             <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;c&#39;</span><span class="p">,</span>
 
309
            <span class="s">&#39;paste&#39;</span>            <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;v&#39;</span><span class="p">,</span>
 
310
            <span class="s">&#39;toggle_scrollbar&#39;</span> <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;s&#39;</span><span class="p">,</span>
 
311
            <span class="s">&#39;search&#39;</span>           <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;f&#39;</span><span class="p">,</span>
 
312
            <span class="s">&#39;page_up&#39;</span>          <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
313
            <span class="s">&#39;page_down&#39;</span>        <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
314
            <span class="s">&#39;page_up_half&#39;</span>     <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
315
            <span class="s">&#39;page_down_half&#39;</span>   <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
316
            <span class="s">&#39;line_up&#39;</span>          <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
317
            <span class="s">&#39;line_down&#39;</span>        <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
318
            <span class="s">&#39;close_window&#39;</span>     <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;q&#39;</span><span class="p">,</span>
 
319
            <span class="s">&#39;resize_up&#39;</span>        <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;Up&#39;</span><span class="p">,</span>
 
320
            <span class="s">&#39;resize_down&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;Down&#39;</span><span class="p">,</span>
 
321
            <span class="s">&#39;resize_left&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;Left&#39;</span><span class="p">,</span>
 
322
            <span class="s">&#39;resize_right&#39;</span>     <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;Right&#39;</span><span class="p">,</span>
 
323
            <span class="s">&#39;move_tab_right&#39;</span>   <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;Page_Down&#39;</span><span class="p">,</span>
 
324
            <span class="s">&#39;move_tab_left&#39;</span>    <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;Page_Up&#39;</span><span class="p">,</span>
 
325
            <span class="s">&#39;toggle_zoom&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;x&#39;</span><span class="p">,</span>
 
326
            <span class="s">&#39;scaled_zoom&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;z&#39;</span><span class="p">,</span>
 
327
            <span class="s">&#39;next_tab&#39;</span>         <span class="p">:</span> <span class="s">&#39;&lt;Control&gt;Page_Down&#39;</span><span class="p">,</span>
 
328
            <span class="s">&#39;prev_tab&#39;</span>         <span class="p">:</span> <span class="s">&#39;&lt;Control&gt;Page_Up&#39;</span><span class="p">,</span>
 
329
            <span class="s">&#39;switch_to_tab_1&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
330
            <span class="s">&#39;switch_to_tab_2&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
331
            <span class="s">&#39;switch_to_tab_3&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
332
            <span class="s">&#39;switch_to_tab_4&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
333
            <span class="s">&#39;switch_to_tab_5&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
334
            <span class="s">&#39;switch_to_tab_6&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
335
            <span class="s">&#39;switch_to_tab_7&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
336
            <span class="s">&#39;switch_to_tab_8&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
337
            <span class="s">&#39;switch_to_tab_9&#39;</span>  <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
338
            <span class="s">&#39;switch_to_tab_10&#39;</span> <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
339
            <span class="s">&#39;full_screen&#39;</span>      <span class="p">:</span> <span class="s">&#39;F11&#39;</span><span class="p">,</span>
 
340
            <span class="s">&#39;reset&#39;</span>            <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;r&#39;</span><span class="p">,</span>
 
341
            <span class="s">&#39;reset_clear&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;g&#39;</span><span class="p">,</span>
 
342
            <span class="s">&#39;hide_window&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;&lt;Alt&gt;a&#39;</span><span class="p">,</span>
 
343
            <span class="s">&#39;group_all&#39;</span>        <span class="p">:</span> <span class="s">&#39;&lt;Super&gt;g&#39;</span><span class="p">,</span>
 
344
            <span class="s">&#39;group_all_toggle&#39;</span> <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
345
            <span class="s">&#39;ungroup_all&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Super&gt;g&#39;</span><span class="p">,</span>
 
346
            <span class="s">&#39;group_tab&#39;</span>        <span class="p">:</span> <span class="s">&#39;&lt;Super&gt;t&#39;</span><span class="p">,</span>
 
347
            <span class="s">&#39;group_tab_toggle&#39;</span> <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
348
            <span class="s">&#39;ungroup_tab&#39;</span>      <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Super&gt;t&#39;</span><span class="p">,</span>
 
349
            <span class="s">&#39;new_window&#39;</span>       <span class="p">:</span> <span class="s">&#39;&lt;Shift&gt;&lt;Control&gt;i&#39;</span><span class="p">,</span>
 
350
            <span class="s">&#39;new_terminator&#39;</span>   <span class="p">:</span> <span class="s">&#39;&lt;Super&gt;i&#39;</span><span class="p">,</span>
 
351
            <span class="s">&#39;broadcast_off&#39;</span>    <span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;o&#39;</span><span class="p">,</span>
 
352
            <span class="s">&#39;broadcast_group&#39;</span>  <span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;g&#39;</span><span class="p">,</span>
 
353
            <span class="s">&#39;broadcast_all&#39;</span>    <span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;a&#39;</span><span class="p">,</span>
 
354
            <span class="s">&#39;insert_number&#39;</span>    <span class="p">:</span> <span class="s">&#39;&lt;Super&gt;1&#39;</span><span class="p">,</span>
 
355
            <span class="s">&#39;insert_padded&#39;</span>    <span class="p">:</span> <span class="s">&#39;&lt;Super&gt;0&#39;</span><span class="p">,</span>
 
356
            <span class="s">&#39;edit_window_title&#39;</span><span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;t&#39;</span><span class="p">,</span>
 
357
            <span class="s">&#39;layout_launcher&#39;</span>  <span class="p">:</span> <span class="s">&#39;&lt;Alt&gt;l&#39;</span><span class="p">,</span>
 
358
            <span class="s">&#39;next_profile&#39;</span>     <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
359
            <span class="s">&#39;previous_profile&#39;</span> <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span> 
 
360
            <span class="s">&#39;help&#39;</span>             <span class="p">:</span> <span class="s">&#39;F1&#39;</span>
 
361
        <span class="p">},</span>
 
362
        <span class="s">&#39;profiles&#39;</span><span class="p">:</span> <span class="p">{</span>
 
363
            <span class="s">&#39;default&#39;</span><span class="p">:</span>  <span class="p">{</span>
 
364
                <span class="s">&#39;allow_bold&#39;</span>            <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
365
                <span class="s">&#39;antialias&#39;</span>             <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
366
                <span class="s">&#39;audible_bell&#39;</span>          <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
367
                <span class="s">&#39;visible_bell&#39;</span>          <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
368
                <span class="s">&#39;urgent_bell&#39;</span>           <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
369
                <span class="s">&#39;icon_bell&#39;</span>             <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
370
                <span class="s">&#39;background_color&#39;</span>      <span class="p">:</span> <span class="s">&#39;#000000&#39;</span><span class="p">,</span>
 
371
                <span class="s">&#39;background_darkness&#39;</span>   <span class="p">:</span> <span class="mf">0.5</span><span class="p">,</span>
 
372
                <span class="s">&#39;background_type&#39;</span>       <span class="p">:</span> <span class="s">&#39;solid&#39;</span><span class="p">,</span>
 
373
                <span class="s">&#39;background_image&#39;</span>      <span class="p">:</span> <span class="bp">None</span><span class="p">,</span>
 
374
                <span class="s">&#39;backspace_binding&#39;</span>     <span class="p">:</span> <span class="s">&#39;ascii-del&#39;</span><span class="p">,</span>
 
375
                <span class="s">&#39;delete_binding&#39;</span>        <span class="p">:</span> <span class="s">&#39;escape-sequence&#39;</span><span class="p">,</span>
 
376
                <span class="s">&#39;color_scheme&#39;</span>          <span class="p">:</span> <span class="s">&#39;grey_on_black&#39;</span><span class="p">,</span>
 
377
                <span class="s">&#39;cursor_blink&#39;</span>          <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
378
                <span class="s">&#39;cursor_shape&#39;</span>          <span class="p">:</span> <span class="s">&#39;block&#39;</span><span class="p">,</span>
 
379
                <span class="s">&#39;cursor_color&#39;</span>          <span class="p">:</span> <span class="s">&#39;#aaaaaa&#39;</span><span class="p">,</span>
 
380
                <span class="s">&#39;emulation&#39;</span>             <span class="p">:</span> <span class="s">&#39;xterm&#39;</span><span class="p">,</span>
 
381
                <span class="s">&#39;term&#39;</span>                  <span class="p">:</span> <span class="s">&#39;xterm&#39;</span><span class="p">,</span>
 
382
                <span class="s">&#39;colorterm&#39;</span>             <span class="p">:</span> <span class="s">&#39;gnome-terminal&#39;</span><span class="p">,</span>
 
383
                <span class="s">&#39;font&#39;</span>                  <span class="p">:</span> <span class="s">&#39;Mono 10&#39;</span><span class="p">,</span>
 
384
                <span class="s">&#39;foreground_color&#39;</span>      <span class="p">:</span> <span class="s">&#39;#aaaaaa&#39;</span><span class="p">,</span>
 
385
                <span class="s">&#39;show_titlebar&#39;</span>         <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
386
                <span class="s">&#39;scrollbar_position&#39;</span>    <span class="p">:</span> <span class="s">&quot;right&quot;</span><span class="p">,</span>
 
387
                <span class="s">&#39;scroll_background&#39;</span>     <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
388
                <span class="s">&#39;scroll_on_keystroke&#39;</span>   <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
389
                <span class="s">&#39;scroll_on_output&#39;</span>      <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
390
                <span class="s">&#39;scrollback_lines&#39;</span>      <span class="p">:</span> <span class="mi">500</span><span class="p">,</span>
 
391
                <span class="s">&#39;scrollback_infinite&#39;</span>   <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
392
                <span class="s">&#39;exit_action&#39;</span>           <span class="p">:</span> <span class="s">&#39;close&#39;</span><span class="p">,</span>
 
393
                <span class="s">&#39;palette&#39;</span>               <span class="p">:</span> <span class="s">&#39;#2e3436:#cc0000:#4e9a06:#c4a000:</span><span class="se">\</span>
 
394
<span class="s">#3465a4:#75507b:#06989a:#d3d7cf:#555753:#ef2929:#8ae234:#fce94f:</span><span class="se">\</span>
 
395
<span class="s">#729fcf:#ad7fa8:#34e2e2:#eeeeec&#39;</span><span class="p">,</span>
 
396
                <span class="s">&#39;word_chars&#39;</span>            <span class="p">:</span> <span class="s">&#39;-A-Za-z0-9,./?%&amp;#:_&#39;</span><span class="p">,</span>
 
397
                <span class="s">&#39;mouse_autohide&#39;</span>        <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
398
                <span class="s">&#39;update_records&#39;</span>        <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
399
                <span class="s">&#39;login_shell&#39;</span>           <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
400
                <span class="s">&#39;use_custom_command&#39;</span>    <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
401
                <span class="s">&#39;custom_command&#39;</span>        <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
402
                <span class="s">&#39;use_system_font&#39;</span>       <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
403
                <span class="s">&#39;use_theme_colors&#39;</span>      <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
404
                <span class="s">&#39;encoding&#39;</span>              <span class="p">:</span> <span class="s">&#39;UTF-8&#39;</span><span class="p">,</span>
 
405
                <span class="s">&#39;active_encodings&#39;</span>      <span class="p">:</span> <span class="p">[</span><span class="s">&#39;UTF-8&#39;</span><span class="p">,</span> <span class="s">&#39;ISO-8859-1&#39;</span><span class="p">],</span>
 
406
                <span class="s">&#39;focus_on_close&#39;</span>        <span class="p">:</span> <span class="s">&#39;auto&#39;</span><span class="p">,</span>
 
407
                <span class="s">&#39;force_no_bell&#39;</span>         <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
408
                <span class="s">&#39;cycle_term_tab&#39;</span>        <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
409
                <span class="s">&#39;copy_on_selection&#39;</span>     <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
410
                <span class="s">&#39;alternate_screen_scroll&#39;</span><span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
411
                <span class="s">&#39;split_to_group&#39;</span>        <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
 
412
                <span class="s">&#39;autoclean_groups&#39;</span>      <span class="p">:</span> <span class="bp">True</span><span class="p">,</span>
 
413
                <span class="s">&#39;http_proxy&#39;</span>            <span class="p">:</span> <span class="s">&#39;&#39;</span><span class="p">,</span>
 
414
                <span class="s">&#39;ignore_hosts&#39;</span>          <span class="p">:</span> <span class="p">[</span><span class="s">&#39;localhost&#39;</span><span class="p">,</span><span class="s">&#39;127.0.0.0/8&#39;</span><span class="p">,</span><span class="s">&#39;*.local&#39;</span><span class="p">],</span>
 
415
            <span class="p">},</span>
 
416
        <span class="p">},</span>
 
417
        <span class="s">&#39;layouts&#39;</span><span class="p">:</span> <span class="p">{</span>
 
418
                <span class="s">&#39;default&#39;</span><span class="p">:</span> <span class="p">{</span>
 
419
                    <span class="s">&#39;window0&#39;</span><span class="p">:</span> <span class="p">{</span>
 
420
                        <span class="s">&#39;type&#39;</span><span class="p">:</span> <span class="s">&#39;Window&#39;</span><span class="p">,</span>
 
421
                        <span class="s">&#39;parent&#39;</span><span class="p">:</span> <span class="s">&#39;&#39;</span>
 
422
                        <span class="p">},</span>
 
423
                    <span class="s">&#39;child1&#39;</span><span class="p">:</span> <span class="p">{</span>
 
424
                        <span class="s">&#39;type&#39;</span><span class="p">:</span> <span class="s">&#39;Terminal&#39;</span><span class="p">,</span>
 
425
                        <span class="s">&#39;parent&#39;</span><span class="p">:</span> <span class="s">&#39;window0&#39;</span>
 
426
                        <span class="p">}</span>
 
427
                    <span class="p">}</span>
 
428
                <span class="p">},</span>
 
429
        <span class="s">&#39;plugins&#39;</span><span class="p">:</span> <span class="p">{</span>
 
430
        <span class="p">},</span>
 
431
<span class="p">}</span>
 
432
 
 
433
<div class="viewcode-block" id="Config"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config">[docs]</a><span class="k">class</span> <span class="nc">Config</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
 
434
    <span class="sd">&quot;&quot;&quot;Class to provide a slightly richer config API above ConfigBase&quot;&quot;&quot;</span>
 
435
    <span class="n">base</span> <span class="o">=</span> <span class="bp">None</span>
 
436
    <span class="n">profile</span> <span class="o">=</span> <span class="bp">None</span>
 
437
    <span class="n">gconf</span> <span class="o">=</span> <span class="bp">None</span>
 
438
    <span class="n">system_mono_font</span> <span class="o">=</span> <span class="bp">None</span>
 
439
    <span class="n">system_prop_font</span> <span class="o">=</span> <span class="bp">None</span>
 
440
    <span class="n">system_focus</span> <span class="o">=</span> <span class="bp">None</span>
 
441
    <span class="n">inhibited</span> <span class="o">=</span> <span class="bp">None</span>
 
442
    
 
443
<div class="viewcode-block" id="Config.__init__"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.__init__">[docs]</a>    <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">profile</span><span class="o">=</span><span class="s">&#39;default&#39;</span><span class="p">):</span>
 
444
        <span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o">=</span> <span class="n">ConfigBase</span><span class="p">()</span>
 
445
        <span class="bp">self</span><span class="o">.</span><span class="n">set_profile</span><span class="p">(</span><span class="n">profile</span><span class="p">)</span>
 
446
        <span class="bp">self</span><span class="o">.</span><span class="n">inhibited</span> <span class="o">=</span> <span class="bp">False</span>
 
447
</div>
 
448
<div class="viewcode-block" id="Config.__getitem__"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.__getitem__">[docs]</a>    <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">key</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
449
        <span class="sd">&quot;&quot;&quot;Look up a configuration item&quot;&quot;&quot;</span>
 
450
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">get_item</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">profile</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">))</span>
 
451
</div>
 
452
<div class="viewcode-block" id="Config.__setitem__"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.__setitem__">[docs]</a>    <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">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
 
453
        <span class="sd">&quot;&quot;&quot;Set a particular configuration item&quot;&quot;&quot;</span>
 
454
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">set_item</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="bp">self</span><span class="o">.</span><span class="n">profile</span><span class="p">))</span>
 
455
</div>
 
456
<div class="viewcode-block" id="Config.get_profile"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.get_profile">[docs]</a>    <span class="k">def</span> <span class="nf">get_profile</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
457
        <span class="sd">&quot;&quot;&quot;Get our profile&quot;&quot;&quot;</span>
 
458
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">profile</span><span class="p">)</span>
 
459
</div>
 
460
<div class="viewcode-block" id="Config.set_profile"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.set_profile">[docs]</a>    <span class="k">def</span> <span class="nf">set_profile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">profile</span><span class="p">,</span> <span class="n">force</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
 
461
        <span class="sd">&quot;&quot;&quot;Set our profile (which usually means change it)&quot;&quot;&quot;</span>
 
462
        <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">options_get</span><span class="p">()</span>
 
463
        <span class="k">if</span> <span class="ow">not</span> <span class="n">force</span> <span class="ow">and</span> <span class="n">options</span> <span class="ow">and</span> <span class="n">options</span><span class="o">.</span><span class="n">profile</span> <span class="ow">and</span> <span class="n">profile</span> <span class="o">==</span> <span class="s">&#39;default&#39;</span><span class="p">:</span>
 
464
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;overriding default profile to </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">options</span><span class="o">.</span><span class="n">profile</span><span class="p">)</span>
 
465
            <span class="n">profile</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">profile</span>
 
466
        <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;Config::set_profile: Changing profile to </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">profile</span><span class="p">)</span>
 
467
        <span class="bp">self</span><span class="o">.</span><span class="n">profile</span> <span class="o">=</span> <span class="n">profile</span>
 
468
        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">profile</span><span class="p">):</span>
 
469
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;Config::set_profile: </span><span class="si">%s</span><span class="s"> does not exist, creating&#39;</span> <span class="o">%</span> <span class="n">profile</span><span class="p">)</span>
 
470
            <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">]</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;default&#39;</span><span class="p">])</span>
 
471
</div>
 
472
<div class="viewcode-block" id="Config.add_profile"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.add_profile">[docs]</a>    <span class="k">def</span> <span class="nf">add_profile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">profile</span><span class="p">):</span>
 
473
        <span class="sd">&quot;&quot;&quot;Add a new profile&quot;&quot;&quot;</span>
 
474
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">add_profile</span><span class="p">(</span><span class="n">profile</span><span class="p">))</span>
 
475
</div>
 
476
<div class="viewcode-block" id="Config.del_profile"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.del_profile">[docs]</a>    <span class="k">def</span> <span class="nf">del_profile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">profile</span><span class="p">):</span>
 
477
        <span class="sd">&quot;&quot;&quot;Delete a profile&quot;&quot;&quot;</span>
 
478
        <span class="k">if</span> <span class="n">profile</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">profile</span><span class="p">:</span>
 
479
            <span class="c"># FIXME: We should solve this problem by updating terminals when we</span>
 
480
            <span class="c"># remove a profile</span>
 
481
            <span class="n">err</span><span class="p">(</span><span class="s">&#39;Config::del_profile: Deleting in-use profile </span><span class="si">%s</span><span class="s">.&#39;</span> <span class="o">%</span> <span class="n">profile</span><span class="p">)</span>
 
482
            <span class="bp">self</span><span class="o">.</span><span class="n">set_profile</span><span class="p">(</span><span class="s">&#39;default&#39;</span><span class="p">)</span>
 
483
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">profile</span><span class="p">):</span>
 
484
            <span class="k">del</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">])</span>
 
485
        <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">options_get</span><span class="p">()</span>
 
486
        <span class="k">if</span> <span class="n">options</span> <span class="ow">and</span> <span class="n">options</span><span class="o">.</span><span class="n">profile</span> <span class="o">==</span> <span class="n">profile</span><span class="p">:</span>
 
487
            <span class="n">options</span><span class="o">.</span><span class="n">profile</span> <span class="o">=</span> <span class="bp">None</span>
 
488
            <span class="bp">self</span><span class="o">.</span><span class="n">options_set</span><span class="p">(</span><span class="n">options</span><span class="p">)</span>
 
489
</div>
 
490
<div class="viewcode-block" id="Config.rename_profile"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.rename_profile">[docs]</a>    <span class="k">def</span> <span class="nf">rename_profile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">profile</span><span class="p">,</span> <span class="n">newname</span><span class="p">):</span>
 
491
        <span class="sd">&quot;&quot;&quot;Rename a profile&quot;&quot;&quot;</span>
 
492
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">profile</span><span class="p">):</span>
 
493
            <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">newname</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">]</span>
 
494
            <span class="k">del</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">])</span>
 
495
            <span class="k">if</span> <span class="n">profile</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">profile</span><span class="p">:</span>
 
496
                <span class="bp">self</span><span class="o">.</span><span class="n">profile</span> <span class="o">=</span> <span class="n">newname</span>
 
497
</div>
 
498
<div class="viewcode-block" id="Config.list_profiles"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.list_profiles">[docs]</a>    <span class="k">def</span> <span class="nf">list_profiles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
499
        <span class="sd">&quot;&quot;&quot;List all configured profiles&quot;&quot;&quot;</span>
 
500
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">profiles</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
 
501
</div>
 
502
<div class="viewcode-block" id="Config.add_layout"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.add_layout">[docs]</a>    <span class="k">def</span> <span class="nf">add_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">layout</span><span class="p">):</span>
 
503
        <span class="sd">&quot;&quot;&quot;Add a new layout&quot;&quot;&quot;</span>
 
504
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">add_layout</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">layout</span><span class="p">))</span>
 
505
</div>
 
506
<div class="viewcode-block" id="Config.replace_layout"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.replace_layout">[docs]</a>    <span class="k">def</span> <span class="nf">replace_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">layout</span><span class="p">):</span>
 
507
        <span class="sd">&quot;&quot;&quot;Replace an existing layout&quot;&quot;&quot;</span>
 
508
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">replace_layout</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">layout</span><span class="p">))</span> 
 
509
</div>
 
510
<div class="viewcode-block" id="Config.del_layout"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.del_layout">[docs]</a>    <span class="k">def</span> <span class="nf">del_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">layout</span><span class="p">):</span>
 
511
        <span class="sd">&quot;&quot;&quot;Delete a layout&quot;&quot;&quot;</span>
 
512
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">layouts</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">layout</span><span class="p">):</span>
 
513
            <span class="k">del</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">layout</span><span class="p">])</span>
 
514
</div>
 
515
<div class="viewcode-block" id="Config.rename_layout"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.rename_layout">[docs]</a>    <span class="k">def</span> <span class="nf">rename_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">layout</span><span class="p">,</span> <span class="n">newname</span><span class="p">):</span>
 
516
        <span class="sd">&quot;&quot;&quot;Rename a layout&quot;&quot;&quot;</span>
 
517
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">layouts</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">layout</span><span class="p">):</span>
 
518
            <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">newname</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">layout</span><span class="p">]</span>
 
519
            <span class="k">del</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">layout</span><span class="p">])</span>
 
520
</div>
 
521
<div class="viewcode-block" id="Config.list_layouts"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.list_layouts">[docs]</a>    <span class="k">def</span> <span class="nf">list_layouts</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
522
        <span class="sd">&quot;&quot;&quot;List all configured layouts&quot;&quot;&quot;</span>
 
523
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">layouts</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
 
524
</div>
 
525
<div class="viewcode-block" id="Config.get_system_prop_font"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.get_system_prop_font">[docs]</a>    <span class="k">def</span> <span class="nf">get_system_prop_font</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
526
        <span class="sd">&quot;&quot;&quot;Look up the system font&quot;&quot;&quot;</span>
 
527
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_prop_font</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
 
528
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">system_prop_font</span><span class="p">)</span>
 
529
        <span class="k">elif</span> <span class="s">&#39;gconf&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">globals</span><span class="p">():</span>
 
530
            <span class="k">return</span>
 
531
        <span class="k">else</span><span class="p">:</span>
 
532
            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
533
                <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span> <span class="o">=</span> <span class="n">gconf</span><span class="o">.</span><span class="n">client_get_default</span><span class="p">()</span>
 
534
 
 
535
            <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
 
536
                        <span class="s">&#39;/desktop/gnome/interface/font_name&#39;</span><span class="p">)</span>
 
537
            <span class="k">if</span> <span class="n">value</span><span class="p">:</span>
 
538
                <span class="bp">self</span><span class="o">.</span><span class="n">system_prop_font</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">get_string</span><span class="p">()</span>
 
539
            <span class="k">else</span><span class="p">:</span>
 
540
                <span class="bp">self</span><span class="o">.</span><span class="n">system_prop_font</span> <span class="o">=</span> <span class="s">&quot;Sans 10&quot;</span>
 
541
            <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span><span class="o">.</span><span class="n">notify_add</span><span class="p">(</span>
 
542
                        <span class="s">&#39;/desktop/gnome/interface/font_name&#39;</span><span class="p">,</span> 
 
543
                        <span class="bp">self</span><span class="o">.</span><span class="n">on_gconf_notify</span><span class="p">)</span>
 
544
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">system_prop_font</span><span class="p">)</span>
 
545
</div>
 
546
<div class="viewcode-block" id="Config.get_system_mono_font"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.get_system_mono_font">[docs]</a>    <span class="k">def</span> <span class="nf">get_system_mono_font</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
547
        <span class="sd">&quot;&quot;&quot;Look up the system font&quot;&quot;&quot;</span>
 
548
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_mono_font</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
 
549
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">system_mono_font</span><span class="p">)</span>
 
550
        <span class="k">elif</span> <span class="s">&#39;gconf&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">globals</span><span class="p">():</span>
 
551
            <span class="k">return</span>
 
552
        <span class="k">else</span><span class="p">:</span>
 
553
            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
554
                <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span> <span class="o">=</span> <span class="n">gconf</span><span class="o">.</span><span class="n">client_get_default</span><span class="p">()</span>
 
555
 
 
556
            <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span>
 
557
                        <span class="s">&#39;/desktop/gnome/interface/monospace_font_name&#39;</span><span class="p">)</span>
 
558
            <span class="k">if</span> <span class="n">value</span><span class="p">:</span>
 
559
                <span class="bp">self</span><span class="o">.</span><span class="n">system_mono_font</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">get_string</span><span class="p">()</span>
 
560
            <span class="k">else</span><span class="p">:</span>
 
561
                <span class="bp">self</span><span class="o">.</span><span class="n">system_mono_font</span> <span class="o">=</span> <span class="s">&quot;Mono 10&quot;</span>
 
562
            <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span><span class="o">.</span><span class="n">notify_add</span><span class="p">(</span>
 
563
                        <span class="s">&#39;/desktop/gnome/interface/monospace_font_name&#39;</span><span class="p">,</span> 
 
564
                        <span class="bp">self</span><span class="o">.</span><span class="n">on_gconf_notify</span><span class="p">)</span>
 
565
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">system_mono_font</span><span class="p">)</span>
 
566
</div>
 
567
<div class="viewcode-block" id="Config.get_system_focus"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.get_system_focus">[docs]</a>    <span class="k">def</span> <span class="nf">get_system_focus</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
568
        <span class="sd">&quot;&quot;&quot;Look up the system focus setting&quot;&quot;&quot;</span>
 
569
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_focus</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
 
570
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">system_focus</span><span class="p">)</span>
 
571
        <span class="k">elif</span> <span class="s">&#39;gconf&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="nb">globals</span><span class="p">():</span>
 
572
            <span class="k">return</span>
 
573
        <span class="k">else</span><span class="p">:</span>
 
574
            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
575
                <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span> <span class="o">=</span> <span class="n">gconf</span><span class="o">.</span><span class="n">client_get_default</span><span class="p">()</span>
 
576
 
 
577
            <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/apps/metacity/general/focus_mode&#39;</span><span class="p">)</span>
 
578
            <span class="k">if</span> <span class="n">value</span><span class="p">:</span>
 
579
                <span class="bp">self</span><span class="o">.</span><span class="n">system_focus</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">get_string</span><span class="p">()</span>
 
580
                <span class="bp">self</span><span class="o">.</span><span class="n">gconf</span><span class="o">.</span><span class="n">notify_add</span><span class="p">(</span><span class="s">&#39;/apps/metacity/general/focus_mode&#39;</span><span class="p">,</span>
 
581
                        <span class="bp">self</span><span class="o">.</span><span class="n">on_gconf_notify</span><span class="p">)</span>
 
582
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">system_focus</span><span class="p">)</span>
 
583
</div>
 
584
<div class="viewcode-block" id="Config.on_gconf_notify"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.on_gconf_notify">[docs]</a>    <span class="k">def</span> <span class="nf">on_gconf_notify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_client</span><span class="p">,</span> <span class="n">_cnxn_id</span><span class="p">,</span> <span class="n">_entry</span><span class="p">,</span> <span class="n">_what</span><span class="p">):</span>
 
585
        <span class="sd">&quot;&quot;&quot;Handle a gconf watch changing&quot;&quot;&quot;</span>
 
586
        <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;GConf notification received. Invalidating caches&#39;</span><span class="p">)</span>
 
587
        <span class="bp">self</span><span class="o">.</span><span class="n">system_focus</span> <span class="o">=</span> <span class="bp">None</span>
 
588
        <span class="bp">self</span><span class="o">.</span><span class="n">system_font</span> <span class="o">=</span> <span class="bp">None</span>
 
589
</div>
 
590
<div class="viewcode-block" id="Config.save"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.save">[docs]</a>    <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
591
        <span class="sd">&quot;&quot;&quot;Cause ConfigBase to save our config to file&quot;&quot;&quot;</span>
 
592
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">inhibited</span> <span class="ow">is</span> <span class="bp">True</span><span class="p">:</span>
 
593
            <span class="k">return</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
 
594
        <span class="k">else</span><span class="p">:</span>
 
595
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">save</span><span class="p">())</span>
 
596
</div>
 
597
<div class="viewcode-block" id="Config.inhibit_save"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.inhibit_save">[docs]</a>    <span class="k">def</span> <span class="nf">inhibit_save</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
598
        <span class="sd">&quot;&quot;&quot;Prevent calls to save() being honoured&quot;&quot;&quot;</span>
 
599
        <span class="bp">self</span><span class="o">.</span><span class="n">inhibited</span> <span class="o">=</span> <span class="bp">True</span>
 
600
</div>
 
601
<div class="viewcode-block" id="Config.uninhibit_save"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.uninhibit_save">[docs]</a>    <span class="k">def</span> <span class="nf">uninhibit_save</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
602
        <span class="sd">&quot;&quot;&quot;Allow calls to save() to be honoured&quot;&quot;&quot;</span>
 
603
        <span class="bp">self</span><span class="o">.</span><span class="n">inhibited</span> <span class="o">=</span> <span class="bp">False</span>
 
604
</div>
 
605
<div class="viewcode-block" id="Config.options_set"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.options_set">[docs]</a>    <span class="k">def</span> <span class="nf">options_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">):</span>
 
606
        <span class="sd">&quot;&quot;&quot;Set the command line options&quot;&quot;&quot;</span>
 
607
        <span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">command_line_options</span> <span class="o">=</span> <span class="n">options</span>
 
608
</div>
 
609
<div class="viewcode-block" id="Config.options_get"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.options_get">[docs]</a>    <span class="k">def</span> <span class="nf">options_get</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
610
        <span class="sd">&quot;&quot;&quot;Get the command line options&quot;&quot;&quot;</span>
 
611
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">command_line_options</span><span class="p">)</span>
 
612
</div>
 
613
<div class="viewcode-block" id="Config.plugin_get"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.plugin_get">[docs]</a>    <span class="k">def</span> <span class="nf">plugin_get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pluginname</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
614
        <span class="sd">&quot;&quot;&quot;Get a plugin config value, if doesn&#39;t exist</span>
 
615
<span class="sd">            return default if specified</span>
 
616
<span class="sd">        &quot;&quot;&quot;</span>
 
617
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">get_item</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">plugin</span><span class="o">=</span><span class="n">pluginname</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">))</span>
 
618
</div>
 
619
<div class="viewcode-block" id="Config.plugin_set"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.plugin_set">[docs]</a>    <span class="k">def</span> <span class="nf">plugin_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pluginname</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
 
620
        <span class="sd">&quot;&quot;&quot;Set a plugin config value&quot;&quot;&quot;</span>
 
621
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">set_item</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="n">plugin</span><span class="o">=</span><span class="n">pluginname</span><span class="p">))</span>
 
622
</div>
 
623
<div class="viewcode-block" id="Config.plugin_get_config"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.plugin_get_config">[docs]</a>    <span class="k">def</span> <span class="nf">plugin_get_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">):</span>
 
624
        <span class="sd">&quot;&quot;&quot;Return a whole config tree for a given plugin&quot;&quot;&quot;</span>
 
625
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">get_plugin</span><span class="p">(</span><span class="n">plugin</span><span class="p">))</span>
 
626
</div>
 
627
<div class="viewcode-block" id="Config.plugin_set_config"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.plugin_set_config">[docs]</a>    <span class="k">def</span> <span class="nf">plugin_set_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">tree</span><span class="p">):</span>
 
628
        <span class="sd">&quot;&quot;&quot;Set a whole config tree for a given plugin&quot;&quot;&quot;</span>
 
629
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">set_plugin</span><span class="p">(</span><span class="n">plugin</span><span class="p">,</span> <span class="n">tree</span><span class="p">))</span>
 
630
</div>
 
631
<div class="viewcode-block" id="Config.plugin_del_config"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.plugin_del_config">[docs]</a>    <span class="k">def</span> <span class="nf">plugin_del_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">):</span>
 
632
        <span class="sd">&quot;&quot;&quot;Delete a whole config tree for a given plugin&quot;&quot;&quot;</span>
 
633
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">del_plugin</span><span class="p">(</span><span class="n">plugin</span><span class="p">))</span>
 
634
</div>
 
635
<div class="viewcode-block" id="Config.layout_get_config"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.layout_get_config">[docs]</a>    <span class="k">def</span> <span class="nf">layout_get_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">layout</span><span class="p">):</span>
 
636
        <span class="sd">&quot;&quot;&quot;Return a layout&quot;&quot;&quot;</span>
 
637
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">get_layout</span><span class="p">(</span><span class="n">layout</span><span class="p">))</span>
 
638
</div>
 
639
<div class="viewcode-block" id="Config.layout_set_config"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.Config.layout_set_config">[docs]</a>    <span class="k">def</span> <span class="nf">layout_set_config</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">layout</span><span class="p">,</span> <span class="n">tree</span><span class="p">):</span>
 
640
        <span class="sd">&quot;&quot;&quot;Set a layout&quot;&quot;&quot;</span>
 
641
        <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">base</span><span class="o">.</span><span class="n">set_layout</span><span class="p">(</span><span class="n">layout</span><span class="p">,</span> <span class="n">tree</span><span class="p">))</span>
 
642
</div></div>
 
643
<div class="viewcode-block" id="ConfigBase"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase">[docs]</a><span class="k">class</span> <span class="nc">ConfigBase</span><span class="p">(</span><span class="n">Borg</span><span class="p">):</span>
 
644
    <span class="sd">&quot;&quot;&quot;Class to provide access to our user configuration&quot;&quot;&quot;</span>
 
645
    <span class="n">loaded</span> <span class="o">=</span> <span class="bp">None</span>
 
646
    <span class="n">whined</span> <span class="o">=</span> <span class="bp">None</span>
 
647
    <span class="n">sections</span> <span class="o">=</span> <span class="bp">None</span>
 
648
    <span class="n">global_config</span> <span class="o">=</span> <span class="bp">None</span>
 
649
    <span class="n">profiles</span> <span class="o">=</span> <span class="bp">None</span>
 
650
    <span class="n">keybindings</span> <span class="o">=</span> <span class="bp">None</span>
 
651
    <span class="n">plugins</span> <span class="o">=</span> <span class="bp">None</span>
 
652
    <span class="n">layouts</span> <span class="o">=</span> <span class="bp">None</span>
 
653
    <span class="n">command_line_options</span> <span class="o">=</span> <span class="bp">None</span>
 
654
 
 
655
<div class="viewcode-block" id="ConfigBase.__init__"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.__init__">[docs]</a>    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
656
        <span class="sd">&quot;&quot;&quot;Class initialiser&quot;&quot;&quot;</span>
 
657
 
 
658
        <span class="n">Borg</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="bp">self</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">)</span>
 
659
 
 
660
        <span class="bp">self</span><span class="o">.</span><span class="n">prepare_attributes</span><span class="p">()</span>
 
661
        <span class="kn">import</span> <span class="nn">optionparse</span>
 
662
        <span class="bp">self</span><span class="o">.</span><span class="n">command_line_options</span> <span class="o">=</span> <span class="n">optionparse</span><span class="o">.</span><span class="n">options</span>
 
663
        <span class="bp">self</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
 
664
</div>
 
665
<div class="viewcode-block" id="ConfigBase.prepare_attributes"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.prepare_attributes">[docs]</a>    <span class="k">def</span> <span class="nf">prepare_attributes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
666
        <span class="sd">&quot;&quot;&quot;Set up our borg environment&quot;&quot;&quot;</span>
 
667
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loaded</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
668
            <span class="bp">self</span><span class="o">.</span><span class="n">loaded</span> <span class="o">=</span> <span class="bp">False</span>
 
669
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">whined</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
670
            <span class="bp">self</span><span class="o">.</span><span class="n">whined</span> <span class="o">=</span> <span class="bp">False</span>
 
671
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sections</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
672
            <span class="bp">self</span><span class="o">.</span><span class="n">sections</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;global_config&#39;</span><span class="p">,</span> <span class="s">&#39;keybindings&#39;</span><span class="p">,</span> <span class="s">&#39;profiles&#39;</span><span class="p">,</span>
 
673
                             <span class="s">&#39;layouts&#39;</span><span class="p">,</span> <span class="s">&#39;plugins&#39;</span><span class="p">]</span>
 
674
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_config</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
675
            <span class="bp">self</span><span class="o">.</span><span class="n">global_config</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;global_config&#39;</span><span class="p">])</span>
 
676
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
677
            <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span> <span class="o">=</span> <span class="p">{}</span>
 
678
            <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="s">&#39;default&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;default&#39;</span><span class="p">])</span>
 
679
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">keybindings</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
680
            <span class="bp">self</span><span class="o">.</span><span class="n">keybindings</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;keybindings&#39;</span><span class="p">])</span>
 
681
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
682
            <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span> <span class="o">=</span> <span class="p">{}</span>
 
683
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
684
            <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span> <span class="o">=</span> <span class="p">{}</span>
 
685
            <span class="k">for</span> <span class="n">layout</span> <span class="ow">in</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;layouts&#39;</span><span class="p">]:</span>
 
686
                <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">layout</span><span class="p">]</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;layouts&#39;</span><span class="p">][</span><span class="n">layout</span><span class="p">])</span>
 
687
</div>
 
688
<div class="viewcode-block" id="ConfigBase.defaults_to_configspec"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.defaults_to_configspec">[docs]</a>    <span class="k">def</span> <span class="nf">defaults_to_configspec</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
689
        <span class="sd">&quot;&quot;&quot;Convert our tree of default values into a ConfigObj validation</span>
 
690
<span class="sd">        specification&quot;&quot;&quot;</span>
 
691
        <span class="n">configspecdata</span> <span class="o">=</span> <span class="p">{}</span>
 
692
 
 
693
        <span class="n">keymap</span> <span class="o">=</span> <span class="p">{</span>
 
694
                <span class="s">&#39;int&#39;</span><span class="p">:</span> <span class="s">&#39;integer&#39;</span><span class="p">,</span>
 
695
                <span class="s">&#39;str&#39;</span><span class="p">:</span> <span class="s">&#39;string&#39;</span><span class="p">,</span>
 
696
                <span class="s">&#39;bool&#39;</span><span class="p">:</span> <span class="s">&#39;boolean&#39;</span><span class="p">,</span>
 
697
                <span class="p">}</span>
 
698
 
 
699
        <span class="n">section</span> <span class="o">=</span> <span class="p">{}</span>
 
700
        <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;global_config&#39;</span><span class="p">]:</span>
 
701
            <span class="n">keytype</span> <span class="o">=</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;global_config&#39;</span><span class="p">][</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span>
 
702
            <span class="n">value</span> <span class="o">=</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;global_config&#39;</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
 
703
            <span class="k">if</span> <span class="n">keytype</span> <span class="ow">in</span> <span class="n">keymap</span><span class="p">:</span>
 
704
                <span class="n">keytype</span> <span class="o">=</span> <span class="n">keymap</span><span class="p">[</span><span class="n">keytype</span><span class="p">]</span>
 
705
            <span class="k">elif</span> <span class="n">keytype</span> <span class="o">==</span> <span class="s">&#39;list&#39;</span><span class="p">:</span>
 
706
                <span class="n">value</span> <span class="o">=</span> <span class="s">&#39;list(</span><span class="si">%s</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="s">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
 
707
 
 
708
            <span class="n">keytype</span> <span class="o">=</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s">(default=</span><span class="si">%s</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">keytype</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
 
709
 
 
710
            <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;custom_url_handler&#39;</span><span class="p">:</span>
 
711
                <span class="n">keytype</span> <span class="o">=</span> <span class="s">&#39;string(default=&quot;&quot;)&#39;</span>
 
712
 
 
713
            <span class="n">section</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">keytype</span>
 
714
        <span class="n">configspecdata</span><span class="p">[</span><span class="s">&#39;global_config&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">section</span>
 
715
 
 
716
        <span class="n">section</span> <span class="o">=</span> <span class="p">{}</span>
 
717
        <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;keybindings&#39;</span><span class="p">]:</span>
 
718
            <span class="n">value</span> <span class="o">=</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;keybindings&#39;</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
 
719
            <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">value</span> <span class="o">==</span> <span class="s">&#39;&#39;</span><span class="p">:</span>
 
720
                <span class="k">continue</span>
 
721
            <span class="n">section</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;string(default=</span><span class="si">%s</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="n">value</span>
 
722
        <span class="n">configspecdata</span><span class="p">[</span><span class="s">&#39;keybindings&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">section</span>
 
723
 
 
724
        <span class="n">section</span> <span class="o">=</span> <span class="p">{}</span>
 
725
        <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;default&#39;</span><span class="p">]:</span>
 
726
            <span class="n">keytype</span> <span class="o">=</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;default&#39;</span><span class="p">][</span><span class="n">key</span><span class="p">]</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span>
 
727
            <span class="n">value</span> <span class="o">=</span> <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;default&#39;</span><span class="p">][</span><span class="n">key</span><span class="p">]</span>
 
728
            <span class="k">if</span> <span class="n">keytype</span> <span class="ow">in</span> <span class="n">keymap</span><span class="p">:</span>
 
729
                <span class="n">keytype</span> <span class="o">=</span> <span class="n">keymap</span><span class="p">[</span><span class="n">keytype</span><span class="p">]</span>
 
730
            <span class="k">elif</span> <span class="n">keytype</span> <span class="o">==</span> <span class="s">&#39;list&#39;</span><span class="p">:</span>
 
731
                <span class="n">value</span> <span class="o">=</span> <span class="s">&#39;list(</span><span class="si">%s</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="s">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
 
732
            <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;background_image&#39;</span><span class="p">:</span>
 
733
                <span class="n">keytype</span> <span class="o">=</span> <span class="s">&#39;string&#39;</span>
 
734
            <span class="k">if</span> <span class="n">keytype</span> <span class="o">==</span> <span class="s">&#39;string&#39;</span><span class="p">:</span>
 
735
                <span class="n">value</span> <span class="o">=</span> <span class="s">&#39;&quot;</span><span class="si">%s</span><span class="s">&quot;&#39;</span> <span class="o">%</span> <span class="n">value</span>
 
736
 
 
737
            <span class="n">keytype</span> <span class="o">=</span> <span class="s">&#39;</span><span class="si">%s</span><span class="s">(default=</span><span class="si">%s</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">keytype</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
 
738
 
 
739
            <span class="n">section</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">keytype</span>
 
740
        <span class="n">configspecdata</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
 
741
        <span class="n">configspecdata</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;__many__&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">section</span>
 
742
 
 
743
        <span class="n">section</span> <span class="o">=</span> <span class="p">{}</span>
 
744
        <span class="n">section</span><span class="p">[</span><span class="s">&#39;type&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;string&#39;</span>
 
745
        <span class="n">section</span><span class="p">[</span><span class="s">&#39;parent&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;string&#39;</span>
 
746
        <span class="n">section</span><span class="p">[</span><span class="s">&#39;profile&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;string(default=default)&#39;</span>
 
747
        <span class="n">section</span><span class="p">[</span><span class="s">&#39;command&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;string(default=&quot;&quot;)&#39;</span>
 
748
        <span class="n">section</span><span class="p">[</span><span class="s">&#39;position&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;string(default=&quot;&quot;)&#39;</span>
 
749
        <span class="n">section</span><span class="p">[</span><span class="s">&#39;size&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s">&#39;list(default=list(-1,-1))&#39;</span>
 
750
        <span class="n">configspecdata</span><span class="p">[</span><span class="s">&#39;layouts&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
 
751
        <span class="n">configspecdata</span><span class="p">[</span><span class="s">&#39;layouts&#39;</span><span class="p">][</span><span class="s">&#39;__many__&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
 
752
        <span class="n">configspecdata</span><span class="p">[</span><span class="s">&#39;layouts&#39;</span><span class="p">][</span><span class="s">&#39;__many__&#39;</span><span class="p">][</span><span class="s">&#39;__many__&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">section</span>
 
753
 
 
754
        <span class="n">configspecdata</span><span class="p">[</span><span class="s">&#39;plugins&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
 
755
 
 
756
        <span class="n">configspec</span> <span class="o">=</span> <span class="n">ConfigObj</span><span class="p">(</span><span class="n">configspecdata</span><span class="p">)</span>
 
757
        <span class="k">if</span> <span class="n">DEBUG</span> <span class="o">==</span> <span class="bp">True</span><span class="p">:</span>
 
758
            <span class="n">configspec</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="s">&#39;/tmp/terminator_configspec_debug.txt&#39;</span><span class="p">,</span> <span class="s">&#39;w&#39;</span><span class="p">))</span>
 
759
        <span class="k">return</span><span class="p">(</span><span class="n">configspec</span><span class="p">)</span>
 
760
</div>
 
761
<div class="viewcode-block" id="ConfigBase.load"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.load">[docs]</a>    <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
762
        <span class="sd">&quot;&quot;&quot;Load configuration data from our various sources&quot;&quot;&quot;</span>
 
763
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">loaded</span> <span class="ow">is</span> <span class="bp">True</span><span class="p">:</span>
 
764
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::load: config already loaded&#39;</span><span class="p">)</span>
 
765
            <span class="k">return</span>
 
766
 
 
767
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">command_line_options</span><span class="p">:</span>
 
768
            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">command_line_options</span><span class="o">.</span><span class="n">config</span><span class="p">:</span>
 
769
                <span class="bp">self</span><span class="o">.</span><span class="n">command_line_options</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">get_config_dir</span><span class="p">(),</span> <span class="s">&#39;config&#39;</span><span class="p">)</span>
 
770
            <span class="n">filename</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">command_line_options</span><span class="o">.</span><span class="n">config</span>
 
771
        <span class="k">else</span><span class="p">:</span>
 
772
            <span class="n">filename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">get_config_dir</span><span class="p">(),</span> <span class="s">&#39;config&#39;</span><span class="p">)</span>
 
773
 
 
774
        <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;looking for config file: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">filename</span><span class="p">)</span>
 
775
        <span class="k">try</span><span class="p">:</span>
 
776
            <span class="n">configfile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s">&#39;r&#39;</span><span class="p">)</span>
 
777
        <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">ex</span><span class="p">:</span>
 
778
            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">whined</span><span class="p">:</span>
 
779
                <span class="n">err</span><span class="p">(</span><span class="s">&#39;ConfigBase::load: Unable to open </span><span class="si">%s</span><span class="s"> (</span><span class="si">%s</span><span class="s">)&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">ex</span><span class="p">))</span>
 
780
                <span class="bp">self</span><span class="o">.</span><span class="n">whined</span> <span class="o">=</span> <span class="bp">True</span>
 
781
            <span class="k">return</span>
 
782
        <span class="c"># If we have successfully loaded a config, allow future whining</span>
 
783
        <span class="bp">self</span><span class="o">.</span><span class="n">whined</span> <span class="o">=</span> <span class="bp">False</span>
 
784
 
 
785
        <span class="k">try</span><span class="p">:</span>
 
786
            <span class="n">configspec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">defaults_to_configspec</span><span class="p">()</span>
 
787
            <span class="n">parser</span> <span class="o">=</span> <span class="n">ConfigObj</span><span class="p">(</span><span class="n">configfile</span><span class="p">,</span> <span class="n">configspec</span><span class="o">=</span><span class="n">configspec</span><span class="p">)</span>
 
788
            <span class="n">validator</span> <span class="o">=</span> <span class="n">Validator</span><span class="p">()</span>
 
789
            <span class="n">result</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">validate</span><span class="p">(</span><span class="n">validator</span><span class="p">,</span> <span class="n">preserve_errors</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
 
790
        <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">ex</span><span class="p">:</span>
 
791
            <span class="n">err</span><span class="p">(</span><span class="s">&#39;Unable to load configuration: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">ex</span><span class="p">)</span>
 
792
            <span class="k">return</span>
 
793
 
 
794
        <span class="k">if</span> <span class="n">result</span> <span class="o">!=</span> <span class="bp">True</span><span class="p">:</span>
 
795
            <span class="n">err</span><span class="p">(</span><span class="s">&#39;ConfigBase::load: config format is not valid&#39;</span><span class="p">)</span>
 
796
            <span class="k">for</span> <span class="p">(</span><span class="n">section_list</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">_other</span><span class="p">)</span> <span class="ow">in</span> <span class="n">flatten_errors</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
 
797
                <span class="k">if</span> <span class="n">key</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
 
798
                    <span class="n">err</span><span class="p">(</span><span class="s">&#39;[</span><span class="si">%s</span><span class="s">]: </span><span class="si">%s</span><span class="s"> is invalid&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="s">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">section_list</span><span class="p">),</span> <span class="n">key</span><span class="p">))</span>
 
799
                <span class="k">else</span><span class="p">:</span>
 
800
                    <span class="n">err</span><span class="p">(</span><span class="s">&#39;[</span><span class="si">%s</span><span class="s">] missing&#39;</span> <span class="o">%</span> <span class="s">&#39;,&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">section_list</span><span class="p">))</span>
 
801
        <span class="k">else</span><span class="p">:</span>
 
802
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;config validated successfully&#39;</span><span class="p">)</span>
 
803
 
 
804
        <span class="k">for</span> <span class="n">section_name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">sections</span><span class="p">:</span>
 
805
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::load: Processing section: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">section_name</span><span class="p">)</span>
 
806
            <span class="n">section</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section_name</span><span class="p">)</span>
 
807
            <span class="k">if</span> <span class="n">section_name</span> <span class="o">==</span> <span class="s">&#39;profiles&#39;</span><span class="p">:</span>
 
808
                <span class="k">for</span> <span class="n">profile</span> <span class="ow">in</span> <span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">]:</span>
 
809
                    <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::load: Processing profile: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">profile</span><span class="p">)</span>
 
810
                    <span class="k">if</span> <span class="ow">not</span> <span class="n">section</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">section_name</span><span class="p">):</span>
 
811
                        <span class="c"># FIXME: Should this be outside the loop?</span>
 
812
                        <span class="n">section</span><span class="p">[</span><span class="n">profile</span><span class="p">]</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;default&#39;</span><span class="p">])</span>
 
813
                    <span class="n">section</span><span class="p">[</span><span class="n">profile</span><span class="p">]</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">][</span><span class="n">profile</span><span class="p">])</span>
 
814
            <span class="k">elif</span> <span class="n">section_name</span> <span class="o">==</span> <span class="s">&#39;plugins&#39;</span><span class="p">:</span>
 
815
                <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">section_name</span><span class="p">):</span>
 
816
                    <span class="k">continue</span>
 
817
                <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">]:</span>
 
818
                    <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::load: Processing </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">section_name</span><span class="p">,</span>
 
819
                                                                 <span class="n">part</span><span class="p">))</span>
 
820
                    <span class="n">section</span><span class="p">[</span><span class="n">part</span><span class="p">]</span> <span class="o">=</span> <span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">][</span><span class="n">part</span><span class="p">]</span>
 
821
            <span class="k">elif</span> <span class="n">section_name</span> <span class="o">==</span> <span class="s">&#39;layouts&#39;</span><span class="p">:</span>
 
822
                <span class="k">for</span> <span class="n">layout</span> <span class="ow">in</span> <span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">]:</span>
 
823
                    <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::load: Processing </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">section_name</span><span class="p">,</span>
 
824
                                                                 <span class="n">layout</span><span class="p">))</span>
 
825
                    <span class="k">if</span> <span class="n">layout</span> <span class="o">==</span> <span class="s">&#39;default&#39;</span> <span class="ow">and</span> \
 
826
                       <span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">][</span><span class="n">layout</span><span class="p">]</span> <span class="o">==</span> <span class="p">{}:</span>
 
827
                           <span class="k">continue</span>
 
828
                    <span class="n">section</span><span class="p">[</span><span class="n">layout</span><span class="p">]</span> <span class="o">=</span> <span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">][</span><span class="n">layout</span><span class="p">]</span>
 
829
            <span class="k">else</span><span class="p">:</span>
 
830
                <span class="k">try</span><span class="p">:</span>
 
831
                    <span class="n">section</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">])</span>
 
832
                <span class="k">except</span> <span class="ne">KeyError</span><span class="p">,</span> <span class="n">ex</span><span class="p">:</span>
 
833
                    <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::load: skipping missing section </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span>
 
834
                            <span class="n">section_name</span><span class="p">)</span>
 
835
 
 
836
        <span class="bp">self</span><span class="o">.</span><span class="n">loaded</span> <span class="o">=</span> <span class="bp">True</span>
 
837
</div>
 
838
<div class="viewcode-block" id="ConfigBase.reload"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.reload">[docs]</a>    <span class="k">def</span> <span class="nf">reload</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
839
        <span class="sd">&quot;&quot;&quot;Force a reload of the base config&quot;&quot;&quot;</span>
 
840
        <span class="bp">self</span><span class="o">.</span><span class="n">loaded</span> <span class="o">=</span> <span class="bp">False</span>
 
841
        <span class="bp">self</span><span class="o">.</span><span class="n">load</span><span class="p">()</span>
 
842
        </div>
 
843
<div class="viewcode-block" id="ConfigBase.save"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.save">[docs]</a>    <span class="k">def</span> <span class="nf">save</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
844
        <span class="sd">&quot;&quot;&quot;Save the config to a file&quot;&quot;&quot;</span>
 
845
        <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::save: saving config&#39;</span><span class="p">)</span>
 
846
        <span class="n">parser</span> <span class="o">=</span> <span class="n">ConfigObj</span><span class="p">()</span>
 
847
        <span class="n">parser</span><span class="o">.</span><span class="n">indent_type</span> <span class="o">=</span> <span class="s">&#39;  &#39;</span>
 
848
 
 
849
        <span class="k">for</span> <span class="n">section_name</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;global_config&#39;</span><span class="p">,</span> <span class="s">&#39;keybindings&#39;</span><span class="p">]:</span>
 
850
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::save: Processing section: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">section_name</span><span class="p">)</span>
 
851
            <span class="n">section</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">section_name</span><span class="p">)</span>
 
852
            <span class="n">parser</span><span class="p">[</span><span class="n">section_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">dict_diff</span><span class="p">(</span><span class="n">DEFAULTS</span><span class="p">[</span><span class="n">section_name</span><span class="p">],</span> <span class="n">section</span><span class="p">)</span>
 
853
 
 
854
        <span class="n">parser</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
 
855
        <span class="k">for</span> <span class="n">profile</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">:</span>
 
856
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::save: Processing profile: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">profile</span><span class="p">)</span>
 
857
            <span class="n">parser</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="n">profile</span><span class="p">]</span> <span class="o">=</span> <span class="n">dict_diff</span><span class="p">(</span>
 
858
                    <span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;default&#39;</span><span class="p">],</span> <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">])</span>
 
859
 
 
860
        <span class="n">parser</span><span class="p">[</span><span class="s">&#39;layouts&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
 
861
        <span class="k">for</span> <span class="n">layout</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">:</span>
 
862
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::save: Processing layout: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">layout</span><span class="p">)</span>
 
863
            <span class="n">parser</span><span class="p">[</span><span class="s">&#39;layouts&#39;</span><span class="p">][</span><span class="n">layout</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">layout</span><span class="p">]</span>
 
864
 
 
865
        <span class="n">parser</span><span class="p">[</span><span class="s">&#39;plugins&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
 
866
        <span class="k">for</span> <span class="n">plugin</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">:</span>
 
867
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::save: Processing plugin: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">plugin</span><span class="p">)</span>
 
868
            <span class="n">parser</span><span class="p">[</span><span class="s">&#39;plugins&#39;</span><span class="p">][</span><span class="n">plugin</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">]</span>
 
869
 
 
870
        <span class="n">config_dir</span> <span class="o">=</span> <span class="n">get_config_dir</span><span class="p">()</span>
 
871
        <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">config_dir</span><span class="p">):</span>
 
872
            <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">config_dir</span><span class="p">)</span>
 
873
        <span class="k">try</span><span class="p">:</span>
 
874
            <span class="n">parser</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">command_line_options</span><span class="o">.</span><span class="n">config</span><span class="p">,</span> <span class="s">&#39;w&#39;</span><span class="p">))</span>
 
875
        <span class="k">except</span> <span class="ne">Exception</span><span class="p">,</span> <span class="n">ex</span><span class="p">:</span>
 
876
            <span class="n">err</span><span class="p">(</span><span class="s">&#39;ConfigBase::save: Unable to save config: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">ex</span><span class="p">)</span>
 
877
</div>
 
878
<div class="viewcode-block" id="ConfigBase.get_item"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.get_item">[docs]</a>    <span class="k">def</span> <span class="nf">get_item</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="n">profile</span><span class="o">=</span><span class="s">&#39;default&#39;</span><span class="p">,</span> <span class="n">plugin</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
879
        <span class="sd">&quot;&quot;&quot;Look up a configuration item&quot;&quot;&quot;</span>
 
880
        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">profile</span><span class="p">):</span>
 
881
            <span class="c"># Hitting this generally implies a bug</span>
 
882
            <span class="n">profile</span> <span class="o">=</span> <span class="s">&#39;default&#39;</span>
 
883
 
 
884
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_config</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
 
885
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::get_item: </span><span class="si">%s</span><span class="s"> found in globals: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span>
 
886
                    <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_config</span><span class="p">[</span><span class="n">key</span><span class="p">]))</span>
 
887
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">global_config</span><span class="p">[</span><span class="n">key</span><span class="p">])</span>
 
888
        <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">]</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
 
889
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::get_item: </span><span class="si">%s</span><span class="s"> found in profile </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span>
 
890
                    <span class="n">key</span><span class="p">,</span> <span class="n">profile</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">][</span><span class="n">key</span><span class="p">]))</span>
 
891
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">][</span><span class="n">key</span><span class="p">])</span>
 
892
        <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;keybindings&#39;</span><span class="p">:</span>
 
893
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">keybindings</span><span class="p">)</span>
 
894
        <span class="k">elif</span> <span class="n">plugin</span> <span class="ow">and</span> <span class="n">plugin</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span> <span class="ow">and</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">]:</span>
 
895
            <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::get_item: </span><span class="si">%s</span><span class="s"> found in plugin </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span>
 
896
                    <span class="n">key</span><span class="p">,</span> <span class="n">plugin</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">][</span><span class="n">key</span><span class="p">]))</span>
 
897
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">][</span><span class="n">key</span><span class="p">])</span>
 
898
        <span class="k">elif</span> <span class="n">default</span><span class="p">:</span>
 
899
            <span class="k">return</span> <span class="n">default</span>
 
900
        <span class="k">else</span><span class="p">:</span>
 
901
            <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s">&#39;ConfigBase::get_item: unknown key </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
 
902
</div>
 
903
<div class="viewcode-block" id="ConfigBase.set_item"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.set_item">[docs]</a>    <span class="k">def</span> <span class="nf">set_item</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="n">value</span><span class="p">,</span> <span class="n">profile</span><span class="o">=</span><span class="s">&#39;default&#39;</span><span class="p">,</span> <span class="n">plugin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
904
        <span class="sd">&quot;&quot;&quot;Set a configuration item&quot;&quot;&quot;</span>
 
905
        <span class="n">dbg</span><span class="p">(</span><span class="s">&#39;ConfigBase::set_item: Setting </span><span class="si">%s</span><span class="s">=</span><span class="si">%s</span><span class="s"> (profile=</span><span class="si">%s</span><span class="s">, plugin=</span><span class="si">%s</span><span class="s">)&#39;</span> <span class="o">%</span>
 
906
                <span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">profile</span><span class="p">,</span> <span class="n">plugin</span><span class="p">))</span>
 
907
 
 
908
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_config</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
 
909
            <span class="bp">self</span><span class="o">.</span><span class="n">global_config</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
 
910
        <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">]</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">key</span><span class="p">):</span>
 
911
            <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
 
912
        <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;keybindings&#39;</span><span class="p">:</span>
 
913
            <span class="bp">self</span><span class="o">.</span><span class="n">keybindings</span> <span class="o">=</span> <span class="n">value</span>
 
914
        <span class="k">elif</span> <span class="n">plugin</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
 
915
            <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">plugin</span><span class="p">):</span>
 
916
                <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
 
917
            <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">][</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
 
918
        <span class="k">else</span><span class="p">:</span>
 
919
            <span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s">&#39;ConfigBase::set_item: unknown key </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
 
920
 
 
921
        <span class="k">return</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
 
922
</div>
 
923
<div class="viewcode-block" id="ConfigBase.get_plugin"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.get_plugin">[docs]</a>    <span class="k">def</span> <span class="nf">get_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">):</span>
 
924
        <span class="sd">&quot;&quot;&quot;Return a whole tree for a plugin&quot;&quot;&quot;</span>
 
925
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">plugin</span><span class="p">):</span>
 
926
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">])</span>
 
927
</div>
 
928
<div class="viewcode-block" id="ConfigBase.set_plugin"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.set_plugin">[docs]</a>    <span class="k">def</span> <span class="nf">set_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">,</span> <span class="n">tree</span><span class="p">):</span>
 
929
        <span class="sd">&quot;&quot;&quot;Set a whole tree for a plugin&quot;&quot;&quot;</span>
 
930
        <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">]</span> <span class="o">=</span> <span class="n">tree</span>
 
931
</div>
 
932
<div class="viewcode-block" id="ConfigBase.del_plugin"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.del_plugin">[docs]</a>    <span class="k">def</span> <span class="nf">del_plugin</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">plugin</span><span class="p">):</span>
 
933
        <span class="sd">&quot;&quot;&quot;Delete a whole tree for a plugin&quot;&quot;&quot;</span>
 
934
        <span class="k">if</span> <span class="n">plugin</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">:</span>
 
935
            <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">plugins</span><span class="p">[</span><span class="n">plugin</span><span class="p">]</span>
 
936
</div>
 
937
<div class="viewcode-block" id="ConfigBase.add_profile"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.add_profile">[docs]</a>    <span class="k">def</span> <span class="nf">add_profile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">profile</span><span class="p">):</span>
 
938
        <span class="sd">&quot;&quot;&quot;Add a new profile&quot;&quot;&quot;</span>
 
939
        <span class="k">if</span> <span class="n">profile</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">:</span>
 
940
            <span class="k">return</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
 
941
        <span class="bp">self</span><span class="o">.</span><span class="n">profiles</span><span class="p">[</span><span class="n">profile</span><span class="p">]</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">DEFAULTS</span><span class="p">[</span><span class="s">&#39;profiles&#39;</span><span class="p">][</span><span class="s">&#39;default&#39;</span><span class="p">])</span>
 
942
        <span class="k">return</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
 
943
</div>
 
944
<div class="viewcode-block" id="ConfigBase.add_layout"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.add_layout">[docs]</a>    <span class="k">def</span> <span class="nf">add_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">layout</span><span class="p">):</span>
 
945
        <span class="sd">&quot;&quot;&quot;Add a new layout&quot;&quot;&quot;</span>
 
946
        <span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">:</span>
 
947
            <span class="k">return</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
 
948
        <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">layout</span>
 
949
        <span class="k">return</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
 
950
</div>
 
951
<div class="viewcode-block" id="ConfigBase.replace_layout"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.replace_layout">[docs]</a>    <span class="k">def</span> <span class="nf">replace_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">layout</span><span class="p">):</span>
 
952
        <span class="sd">&quot;&quot;&quot;Replaces a layout with the given name&quot;&quot;&quot;</span>
 
953
        <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">:</span>
 
954
            <span class="k">return</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
 
955
        <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">layout</span>
 
956
        <span class="k">return</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
 
957
</div>
 
958
<div class="viewcode-block" id="ConfigBase.get_layout"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.get_layout">[docs]</a>    <span class="k">def</span> <span class="nf">get_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">layout</span><span class="p">):</span>
 
959
        <span class="sd">&quot;&quot;&quot;Return a layout&quot;&quot;&quot;</span>
 
960
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="n">layout</span><span class="p">):</span>
 
961
            <span class="k">return</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">layout</span><span class="p">])</span>
 
962
        <span class="k">else</span><span class="p">:</span>
 
963
            <span class="n">err</span><span class="p">(</span><span class="s">&#39;layout does not exist: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">layout</span><span class="p">)</span>
 
964
</div>
 
965
<div class="viewcode-block" id="ConfigBase.set_layout"><a class="viewcode-back" href="../../terminatorlib.html#terminatorlib.config.ConfigBase.set_layout">[docs]</a>    <span class="k">def</span> <span class="nf">set_layout</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">layout</span><span class="p">,</span> <span class="n">tree</span><span class="p">):</span>
 
966
        <span class="sd">&quot;&quot;&quot;Set a layout&quot;&quot;&quot;</span>
 
967
        <span class="bp">self</span><span class="o">.</span><span class="n">layouts</span><span class="p">[</span><span class="n">layout</span><span class="p">]</span> <span class="o">=</span> <span class="n">tree</span>
 
968
</pre></div></div></div>
 
969
 
 
970
          </div>
 
971
          <footer>
 
972
  
 
973
 
 
974
  <hr/>
 
975
 
 
976
  <div role="contentinfo">
 
977
    <p>
 
978
        &copy; Copyright 2015, Stephen Boddy, licensed under the CC-BY-SA..
 
979
    </p>
 
980
  </div>
 
981
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
 
982
 
 
983
</footer>
 
984
 
 
985
        </div>
 
986
      </div>
 
987
 
 
988
    </section>
 
989
 
 
990
  </div>
 
991
  
 
992
 
 
993
 
 
994
  
 
995
 
 
996
    <script type="text/javascript">
 
997
        var DOCUMENTATION_OPTIONS = {
 
998
            URL_ROOT:'../../',
 
999
            VERSION:'0.98',
 
1000
            COLLAPSE_INDEX:false,
 
1001
            FILE_SUFFIX:'.html',
 
1002
            HAS_SOURCE:  true
 
1003
        };
 
1004
    </script>
 
1005
      <script type="text/javascript" src="../../_static/jquery.js"></script>
 
1006
      <script type="text/javascript" src="../../_static/underscore.js"></script>
 
1007
      <script type="text/javascript" src="../../_static/doctools.js"></script>
 
1008
 
 
1009
  
 
1010
 
 
1011
  
 
1012
  
 
1013
    <script type="text/javascript" src="../../_static/js/theme.js"></script>
 
1014
  
 
1015
 
 
1016
  
 
1017
  
 
1018
  <script type="text/javascript">
 
1019
      jQuery(function () {
 
1020
          SphinxRtdTheme.StickyNav.enable();
 
1021
      });
 
1022
  </script>
 
1023
   
 
1024
 
 
1025
</body>
 
1026
</html>
 
 
b'\\ No newline at end of file'