source: sasview/_modules/sas/guiframe/CategoryManager.html @ a462c6a

gh-pages
Last change on this file since a462c6a was a462c6a, checked in by ajj, 9 years ago

Rebuild to fix index and modules docs

  • Property mode set to 100644
File size: 82.4 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
4
5<html xmlns="http://www.w3.org/1999/xhtml">
6  <head>
7    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8   
9    <title>sas.guiframe.CategoryManager &mdash; SasView 3.0.0 documentation</title>
10   
11    <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
12    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
13   
14    <script type="text/javascript">
15      var DOCUMENTATION_OPTIONS = {
16        URL_ROOT:    '../../../',
17        VERSION:     '3.0.0',
18        COLLAPSE_INDEX: false,
19        FILE_SUFFIX: '.html',
20        HAS_SOURCE:  true
21      };
22    </script>
23    <script type="text/javascript" src="../../../_static/jquery.js"></script>
24    <script type="text/javascript" src="../../../_static/underscore.js"></script>
25    <script type="text/javascript" src="../../../_static/doctools.js"></script>
26    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
27    <link rel="top" title="SasView 3.0.0 documentation" href="../../../index.html" />
28    <link rel="up" title="sas.guiframe" href="../guiframe.html" /> 
29  </head>
30  <body>
31    <div class="related">
32      <h3>Navigation</h3>
33      <ul>
34        <li class="right" style="margin-right: 10px">
35          <a href="../../../genindex.html" title="General Index"
36             accesskey="I">index</a></li>
37        <li class="right" >
38          <a href="../../../py-modindex.html" title="Python Module Index"
39             >modules</a> |</li>
40        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
41          <li><a href="../../index.html" >Module code</a> &raquo;</li>
42          <li><a href="../guiframe.html" accesskey="U">sas.guiframe</a> &raquo;</li> 
43      </ul>
44    </div> 
45
46    <div class="document">
47      <div class="documentwrapper">
48        <div class="bodywrapper">
49          <div class="body">
50           
51  <h1>Source code for sas.guiframe.CategoryManager</h1><div class="highlight"><pre>
52<span class="c">#!/usr/bin/python</span>
53
54<span class="sd">&quot;&quot;&quot;</span>
55<span class="sd">This software was developed by Institut Laue-Langevin as part of</span>
56<span class="sd">Distributed Data Analysis of Neutron Scattering Experiments (DANSE).</span>
57
58<span class="sd">Copyright 2012 Institut Laue-Langevin</span>
59
60<span class="sd">&quot;&quot;&quot;</span>
61
62
63<span class="kn">import</span> <span class="nn">wx</span>
64<span class="kn">import</span> <span class="nn">sys</span>
65<span class="kn">import</span> <span class="nn">os</span>
66<span class="kn">from</span> <span class="nn">wx.lib.mixins.listctrl</span> <span class="kn">import</span> <span class="n">CheckListCtrlMixin</span><span class="p">,</span> <span class="n">ListCtrlAutoWidthMixin</span>
67<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span>
68<span class="kn">import</span> <span class="nn">json</span>
69<span class="kn">from</span> <span class="nn">sas.guiframe.events</span> <span class="kn">import</span> <span class="n">ChangeCategoryEvent</span>
70<span class="kn">from</span> <span class="nn">sas.guiframe.CategoryInstaller</span> <span class="kn">import</span> <span class="n">CategoryInstaller</span>
71<span class="n">IS_MAC</span> <span class="o">=</span> <span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">&#39;darwin&#39;</span><span class="p">)</span>
72
73<span class="sd">&quot;&quot;&quot; Notes</span>
74<span class="sd">The category manager mechanism works from 3 data structures used:</span>
75<span class="sd">- self.master_category_dict: keys are the names of categories, </span>
76<span class="sd">the values are lists of tuples,</span>
77<span class="sd">the first being the model names (the models belonging to that </span>
78<span class="sd">category), the second a boolean</span>
79<span class="sd">of whether or not the model is enabled</span>
80<span class="sd">- self.by_model_dict: keys are model names, values are a list </span>
81<span class="sd">of categories belonging to that model</span>
82<span class="sd">- self.model_enabled_dict: keys are model names, values are </span>
83<span class="sd">bools of whether the model is enabled</span>
84<span class="sd">use self._regenerate_model_dict() to create the latter two </span>
85<span class="sd">structures from the former</span>
86<span class="sd">use self._regenerate_master_dict() to create the first </span>
87<span class="sd">structure from the latter two</span>
88
89<span class="sd">The need for so many data structures comes from the fact </span>
90<span class="sd">sometimes we need fast access </span>
91<span class="sd">to all the models in a category (eg user selection from the gui) </span>
92<span class="sd">and sometimes we need access to all the categories </span>
93<span class="sd">corresponding to a model (eg user modification of model categories)</span>
94
95<span class="sd">&quot;&quot;&quot;</span>
96
97
98
99<div class="viewcode-block" id="CheckListCtrl"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.CheckListCtrl">[docs]</a><span class="k">class</span> <span class="nc">CheckListCtrl</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">ListCtrl</span><span class="p">,</span> <span class="n">CheckListCtrlMixin</span><span class="p">,</span> 
100                    <span class="n">ListCtrlAutoWidthMixin</span><span class="p">):</span>
101    <span class="sd">&quot;&quot;&quot;</span>
102<span class="sd">    Taken from</span>
103<span class="sd">    http://zetcode.com/wxpython/advanced/</span>
104<span class="sd">    &quot;&quot;&quot;</span>
105
106    <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">parent</span><span class="p">,</span> <span class="n">callback_func</span><span class="p">):</span>
107        <span class="sd">&quot;&quot;&quot;</span>
108<span class="sd">        Initialization</span>
109<span class="sd">        :param parent: Parent window</span>
110<span class="sd">        :param callback_func: A function to be called when</span>
111<span class="sd">        an element is clicked</span>
112<span class="sd">        &quot;&quot;&quot;</span>
113        <span class="n">wx</span><span class="o">.</span><span class="n">ListCtrl</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="n">parent</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="n">wx</span><span class="o">.</span><span class="n">LC_REPORT</span> \
114                                 <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">SUNKEN_BORDER</span><span class="p">)</span>
115        <span class="n">CheckListCtrlMixin</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
116        <span class="n">ListCtrlAutoWidthMixin</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
117
118        <span class="bp">self</span><span class="o">.</span><span class="n">callback_func</span> <span class="o">=</span> <span class="n">callback_func</span>
119       
120<div class="viewcode-block" id="CheckListCtrl.OnCheckItem"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.CheckListCtrl.OnCheckItem">[docs]</a>    <span class="k">def</span> <span class="nf">OnCheckItem</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">,</span> <span class="n">flag</span><span class="p">):</span>
121        <span class="sd">&quot;&quot;&quot;</span>
122<span class="sd">        When the user checks the item we need to save that state</span>
123<span class="sd">        &quot;&quot;&quot;</span>
124        <span class="bp">self</span><span class="o">.</span><span class="n">callback_func</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">flag</span><span class="p">)</span>
125   
126</div></div>
127<div class="viewcode-block" id="CategoryManager"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.CategoryManager">[docs]</a><span class="k">class</span> <span class="nc">CategoryManager</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Frame</span><span class="p">):</span>
128    <span class="sd">&quot;&quot;&quot;</span>
129<span class="sd">    A class for managing categories</span>
130<span class="sd">    &quot;&quot;&quot;</span>
131    <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">parent</span><span class="p">,</span> <span class="n">win_id</span><span class="p">,</span> <span class="n">title</span><span class="p">):</span>
132        <span class="sd">&quot;&quot;&quot;</span>
133<span class="sd">        Category Manager Dialog class</span>
134<span class="sd">        :param win_id: A new wx ID</span>
135<span class="sd">        :param title: Title for the window</span>
136<span class="sd">        &quot;&quot;&quot;</span>
137       
138        <span class="c"># make sure the category file is where it should be</span>
139        <span class="bp">self</span><span class="o">.</span><span class="n">performance_blocking</span> <span class="o">=</span> <span class="bp">False</span>
140
141        <span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
142        <span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
143        <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">bool</span><span class="p">)</span>
144
145        <span class="n">wx</span><span class="o">.</span><span class="n">Frame</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="n">parent</span><span class="p">,</span> <span class="n">win_id</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">660</span><span class="p">,</span> <span class="mi">400</span><span class="p">))</span>
146
147        <span class="n">panel</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Panel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
148        <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span>
149
150        <span class="bp">self</span><span class="o">.</span><span class="n">_read_category_info</span><span class="p">()</span>
151
152
153        <span class="n">vbox</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span>
154        <span class="n">hbox</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">HORIZONTAL</span><span class="p">)</span>
155
156        <span class="n">left_panel</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Panel</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
157        <span class="n">right_panel</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Panel</span><span class="p">(</span><span class="n">panel</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
158
159        <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span> <span class="o">=</span> <span class="n">CheckListCtrl</span><span class="p">(</span><span class="n">right_panel</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_check</span><span class="p">)</span>
160        <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">InsertColumn</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="s">&#39;Model&#39;</span><span class="p">,</span> <span class="n">width</span> <span class="o">=</span> <span class="mi">280</span><span class="p">)</span>
161        <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">InsertColumn</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;Category&#39;</span><span class="p">,</span> <span class="n">width</span> <span class="o">=</span> <span class="mi">240</span><span class="p">)</span>
162
163        <span class="bp">self</span><span class="o">.</span><span class="n">_fill_lists</span><span class="p">()</span> 
164        <span class="bp">self</span><span class="o">.</span><span class="n">_regenerate_model_dict</span><span class="p">()</span>
165        <span class="bp">self</span><span class="o">.</span><span class="n">_set_enabled</span><span class="p">()</span>     
166
167        <span class="n">vbox2</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span>
168
169        <span class="n">sel</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">left_panel</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;Enable All&#39;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
170        <span class="n">des</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">left_panel</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;Disable All&#39;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
171        <span class="n">modify_button</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">left_panel</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;Modify&#39;</span><span class="p">,</span> 
172                                  <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
173        <span class="n">ok_button</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">left_panel</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;OK&#39;</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
174        <span class="n">cancel_button</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">left_panel</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;Cancel&#39;</span><span class="p">,</span> 
175                                  <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>       
176
177       
178
179        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_selectall</span><span class="p">,</span> 
180                  <span class="nb">id</span><span class="o">=</span><span class="n">sel</span><span class="o">.</span><span class="n">GetId</span><span class="p">())</span>
181        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_deselectall</span><span class="p">,</span> 
182                  <span class="nb">id</span><span class="o">=</span><span class="n">des</span><span class="o">.</span><span class="n">GetId</span><span class="p">())</span>
183        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_apply</span><span class="p">,</span> 
184                  <span class="nb">id</span> <span class="o">=</span> <span class="n">modify_button</span><span class="o">.</span><span class="n">GetId</span><span class="p">())</span>
185        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_ok</span><span class="p">,</span> 
186                  <span class="nb">id</span> <span class="o">=</span> <span class="n">ok_button</span><span class="o">.</span><span class="n">GetId</span><span class="p">())</span>
187        <span class="bp">self</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_on_cancel</span><span class="p">,</span> 
188                  <span class="nb">id</span> <span class="o">=</span> <span class="n">cancel_button</span><span class="o">.</span><span class="n">GetId</span><span class="p">())</span>
189
190        <span class="n">vbox2</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">modify_button</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</span>
191        <span class="n">vbox2</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span>
192        <span class="n">vbox2</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">sel</span><span class="p">)</span>
193        <span class="n">vbox2</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">des</span><span class="p">)</span>
194        <span class="n">vbox2</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">20</span><span class="p">))</span>
195        <span class="n">vbox2</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">ok_button</span><span class="p">)</span>
196        <span class="n">vbox2</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">cancel_button</span><span class="p">)</span>
197
198        <span class="n">left_panel</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">vbox2</span><span class="p">)</span>
199
200        <span class="n">vbox</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
201        <span class="n">vbox</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">))</span>
202
203
204        <span class="n">right_panel</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">vbox</span><span class="p">)</span>
205
206        <span class="n">hbox</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">left_panel</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
207        <span class="n">hbox</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">right_panel</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">)</span>
208        <span class="n">hbox</span><span class="o">.</span><span class="n">Add</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
209
210        <span class="n">panel</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">hbox</span><span class="p">)</span>
211        <span class="bp">self</span><span class="o">.</span><span class="n">performance_blocking</span> <span class="o">=</span> <span class="bp">True</span>
212
213
214        <span class="bp">self</span><span class="o">.</span><span class="n">Centre</span><span class="p">()</span>
215        <span class="bp">self</span><span class="o">.</span><span class="n">Show</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
216
217        <span class="c"># gui stuff finished</span>
218
219    <span class="k">def</span> <span class="nf">_on_check</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">,</span> <span class="n">flag</span><span class="p">):</span>
220        <span class="sd">&quot;&quot;&quot;</span>
221<span class="sd">        When the user checks an item we need to immediately save that state.</span>
222<span class="sd">        :param index: The index of the checked item</span>
223<span class="sd">        :param flag: True or False whether the item was checked</span>
224<span class="sd">        &quot;&quot;&quot;</span>
225        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">performance_blocking</span><span class="p">:</span>
226            <span class="c"># for computational reasons we don&#39;t want to </span>
227            <span class="c"># call this function every time the gui is set up</span>
228            <span class="n">model_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">GetItem</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">GetText</span><span class="p">()</span>
229            <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span><span class="p">[</span><span class="n">model_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">flag</span>
230            <span class="bp">self</span><span class="o">.</span><span class="n">_regenerate_master_dict</span><span class="p">()</span>
231
232
233    <span class="k">def</span> <span class="nf">_fill_lists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
234        <span class="sd">&quot;&quot;&quot;</span>
235<span class="sd">        Expands lists on the GUI</span>
236<span class="sd">        &quot;&quot;&quot;</span>
237        <span class="c">## This method loops through all the models in the category by model</span>
238        <span class="c">## list and for each one converts the dictionary item to a string</span>
239        <span class="c">## which has of course two terms: the model and the category (in that</span>
240        <span class="c">## order).  The text string however directly reads the quotes, brackets,</span>
241        <span class="c">## and encoding term (u in our case) and does not understand them</span>
242        <span class="c">## as dictionary and list separators.  Thus we then have to strip those</span>
243        <span class="c">## out.  Also note the text control box, cat_list, has already been made into</span>
244        <span class="c">## a two column list with a check box.</span>
245        <span class="c">##</span>
246        <span class="c">## This works but is ugly to me (should not have to manually strip).</span>
247        <span class="c">## had to add the u stripping for the json encoding</span>
248        <span class="c">##</span>
249        <span class="c">## - PDB April 26, 2014</span>
250        <span class="c">##</span>
251        <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">DeleteAllItems</span><span class="p">()</span>
252        <span class="n">model_name_list</span> <span class="o">=</span> <span class="p">[</span><span class="n">model</span> <span class="k">for</span> <span class="n">model</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span><span class="p">]</span>
253        <span class="n">model_name_list</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span>
254
255        <span class="k">for</span> <span class="n">model</span> <span class="ow">in</span> <span class="n">model_name_list</span><span class="p">:</span>
256            <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">InsertStringItem</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">maxint</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span>
257            <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">SetStringItem</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> \
258                                            <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span><span class="p">[</span><span class="n">model</span><span class="p">])</span><span class="o">.</span>\
259                                            <span class="n">replace</span><span class="p">(</span><span class="s">&quot;u&#39;&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">)</span><span class="o">.</span>\
260                                            <span class="n">replace</span><span class="p">(</span><span class="s">&quot;&#39;&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">)</span><span class="o">.</span>\
261                                            <span class="n">replace</span><span class="p">(</span><span class="s">&quot;[&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">)</span><span class="o">.</span>\
262                                            <span class="n">replace</span><span class="p">(</span><span class="s">&quot;]&quot;</span><span class="p">,</span><span class="s">&quot;&quot;</span><span class="p">))</span>
263
264
265           
266    <span class="k">def</span> <span class="nf">_set_enabled</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
267        <span class="sd">&quot;&quot;&quot;</span>
268<span class="sd">        Updates enabled models from self.model_enabled_dict</span>
269<span class="sd">        &quot;&quot;&quot;</span>
270        <span class="n">num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">GetItemCount</span><span class="p">()</span>
271        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num</span><span class="p">):</span>
272            <span class="n">model_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">GetItem</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">GetText</span><span class="p">()</span>
273            <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">CheckItem</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> 
274                                    <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span><span class="p">[</span><span class="n">model_name</span><span class="p">]</span> <span class="p">)</span>
275                                   
276
277
278    <span class="k">def</span> <span class="nf">_on_selectall</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
279        <span class="sd">&quot;&quot;&quot;</span>
280<span class="sd">        Callback for &#39;enable all&#39;</span>
281<span class="sd">        &quot;&quot;&quot;</span>
282        <span class="bp">self</span><span class="o">.</span><span class="n">performance_blocking</span> <span class="o">=</span> <span class="bp">False</span>
283        <span class="n">num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">GetItemCount</span><span class="p">()</span>
284        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num</span><span class="p">):</span>
285            <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">CheckItem</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
286        <span class="k">for</span> <span class="n">model</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span><span class="p">:</span>
287            <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span><span class="p">[</span><span class="n">model</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span>
288        <span class="bp">self</span><span class="o">.</span><span class="n">_regenerate_master_dict</span><span class="p">()</span>
289        <span class="bp">self</span><span class="o">.</span><span class="n">performance_blocking</span> <span class="o">=</span> <span class="bp">True</span>
290
291    <span class="k">def</span> <span class="nf">_on_deselectall</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
292        <span class="sd">&quot;&quot;&quot;</span>
293<span class="sd">        Callback for &#39;disable all&#39;</span>
294<span class="sd">        &quot;&quot;&quot;</span>
295        <span class="bp">self</span><span class="o">.</span><span class="n">performance_blocking</span> <span class="o">=</span> <span class="bp">False</span>
296        <span class="n">num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">GetItemCount</span><span class="p">()</span>
297        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">num</span><span class="p">):</span>
298            <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">CheckItem</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="bp">False</span><span class="p">)</span>
299        <span class="k">for</span> <span class="n">model</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span><span class="p">:</span>
300            <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span><span class="p">[</span><span class="n">model</span><span class="p">]</span> <span class="o">=</span> <span class="bp">False</span>
301        <span class="bp">self</span><span class="o">.</span><span class="n">_regenerate_master_dict</span><span class="p">()</span>
302        <span class="bp">self</span><span class="o">.</span><span class="n">performance_blocking</span> <span class="o">=</span> <span class="bp">True</span>
303
304    <span class="k">def</span> <span class="nf">_on_apply</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
305        <span class="sd">&quot;&quot;&quot;</span>
306<span class="sd">        Call up the &#39;ChangeCat&#39; dialog for category editing</span>
307<span class="sd">        &quot;&quot;&quot;</span>
308
309        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">GetSelectedItemCount</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
310            <span class="n">wx</span><span class="o">.</span><span class="n">MessageBox</span><span class="p">(</span><span class="s">&#39;Please select a model&#39;</span><span class="p">,</span> <span class="s">&#39;Error&#39;</span><span class="p">,</span>
311                          <span class="n">wx</span><span class="o">.</span><span class="n">OK</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">ICON_EXCLAMATION</span> <span class="p">)</span>
312
313        <span class="k">else</span><span class="p">:</span>
314            <span class="n">selected_model</span> <span class="o">=</span> \
315                <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">GetItem</span><span class="p">(</span>\
316                <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="o">.</span><span class="n">GetFirstSelected</span><span class="p">(),</span> <span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="n">GetText</span><span class="p">()</span>
317
318
319            <span class="n">modify_dialog</span> <span class="o">=</span> <span class="n">ChangeCat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">selected_model</span><span class="p">,</span> 
320                                      <span class="bp">self</span><span class="o">.</span><span class="n">_get_cat_list</span><span class="p">(),</span>
321                                      <span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span><span class="p">[</span><span class="n">selected_model</span><span class="p">])</span>
322           
323            <span class="k">if</span> <span class="n">modify_dialog</span><span class="o">.</span><span class="n">ShowModal</span><span class="p">()</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">:</span>
324                <span class="k">if</span> <span class="ow">not</span> <span class="n">IS_MAC</span><span class="p">:</span>
325                    <span class="bp">self</span><span class="o">.</span><span class="n">dial_ok</span><span class="p">(</span><span class="n">modify_dialog</span><span class="p">,</span> <span class="n">selected_model</span><span class="p">)</span>
326
327<div class="viewcode-block" id="CategoryManager.dial_ok"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.CategoryManager.dial_ok">[docs]</a>    <span class="k">def</span> <span class="nf">dial_ok</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialog</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
328        <span class="sd">&quot;&quot;&quot;</span>
329<span class="sd">        modify_dialog onclose</span>
330<span class="sd">        &quot;&quot;&quot;</span>
331        <span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span><span class="p">[</span><span class="n">model</span><span class="p">]</span> <span class="o">=</span> <span class="n">dialog</span><span class="o">.</span><span class="n">get_category</span><span class="p">()</span>
332        <span class="bp">self</span><span class="o">.</span><span class="n">_regenerate_master_dict</span><span class="p">()</span>
333        <span class="bp">self</span><span class="o">.</span><span class="n">_fill_lists</span><span class="p">()</span>
334        <span class="bp">self</span><span class="o">.</span><span class="n">_set_enabled</span><span class="p">()</span>
335
336</div>
337    <span class="k">def</span> <span class="nf">_on_ok</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
338        <span class="sd">&quot;&quot;&quot;</span>
339<span class="sd">        Close the manager</span>
340<span class="sd">        &quot;&quot;&quot;</span>
341        <span class="bp">self</span><span class="o">.</span><span class="n">_save_state</span><span class="p">()</span>
342        <span class="n">evt</span> <span class="o">=</span> <span class="n">ChangeCategoryEvent</span><span class="p">()</span>
343        <span class="n">wx</span><span class="o">.</span><span class="n">PostEvent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">evt</span><span class="p">)</span>
344
345        <span class="bp">self</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span>
346
347    <span class="k">def</span> <span class="nf">_on_cancel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
348        <span class="sd">&quot;&quot;&quot;</span>
349<span class="sd">        On cancel</span>
350<span class="sd">        &quot;&quot;&quot;</span>
351        <span class="bp">self</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span>
352
353    <span class="k">def</span> <span class="nf">_save_state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
354        <span class="sd">&quot;&quot;&quot;</span>
355<span class="sd">        Serializes categorization info to file</span>
356<span class="sd">        &quot;&quot;&quot;</span>
357
358        <span class="bp">self</span><span class="o">.</span><span class="n">_regenerate_master_dict</span><span class="p">()</span>
359
360        <span class="n">cat_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">CategoryInstaller</span><span class="o">.</span><span class="n">get_user_file</span><span class="p">(),</span> <span class="s">&#39;wb&#39;</span><span class="p">)</span>
361
362        <span class="n">json</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span><span class="p">,</span> <span class="n">cat_file</span> <span class="p">)</span>
363       
364        <span class="n">cat_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
365   
366    <span class="k">def</span> <span class="nf">_read_category_info</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
367        <span class="sd">&quot;&quot;&quot;</span>
368<span class="sd">        Read in categorization info from file</span>
369<span class="sd">        &quot;&quot;&quot;</span>
370        <span class="k">try</span><span class="p">:</span>
371            <span class="nb">file</span> <span class="o">=</span> <span class="n">CategoryInstaller</span><span class="o">.</span><span class="n">get_user_file</span><span class="p">()</span>
372            <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="nb">file</span><span class="p">):</span>
373                <span class="n">cat_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s">&#39;rb&#39;</span><span class="p">)</span>
374<span class="c">#               self.master_category_dict = pickle.load(cat_file)</span>
375                <span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">cat_file</span><span class="p">)</span>
376            <span class="k">else</span><span class="p">:</span>
377                <span class="n">cat_file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">CategoryInstaller</span><span class="o">.</span><span class="n">get_default_file</span><span class="p">(),</span> <span class="s">&#39;rb&#39;</span><span class="p">)</span>
378<span class="c">#                       self.master_category_dict = pickle.load(cat_file)</span>
379                <span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="n">cat_file</span><span class="p">)</span>
380            <span class="n">cat_file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
381        <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
382            <span class="k">print</span> <span class="s">&#39;Problem reading in category file. Please review&#39;</span>
383
384
385        <span class="bp">self</span><span class="o">.</span><span class="n">_regenerate_model_dict</span><span class="p">()</span>
386
387    <span class="k">def</span> <span class="nf">_get_cat_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
388        <span class="sd">&quot;&quot;&quot;</span>
389<span class="sd">        Returns a simple list of categories</span>
390<span class="sd">        &quot;&quot;&quot;</span>
391        <span class="n">cat_list</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
392        <span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span><span class="o">.</span><span class="n">iterkeys</span><span class="p">():</span>
393            <span class="k">if</span> <span class="ow">not</span> <span class="n">category</span> <span class="o">==</span> <span class="s">&#39;Uncategorized&#39;</span><span class="p">:</span>
394                <span class="n">cat_list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">category</span><span class="p">)</span>
395   
396        <span class="k">return</span> <span class="n">cat_list</span>
397
398    <span class="k">def</span> <span class="nf">_regenerate_model_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
399        <span class="sd">&quot;&quot;&quot;</span>
400<span class="sd">        regenerates self.by_model_dict which has each model </span>
401<span class="sd">        name as the key</span>
402<span class="sd">        and the list of categories belonging to that model</span>
403<span class="sd">        along with the enabled mapping</span>
404<span class="sd">        &quot;&quot;&quot;</span>
405        <span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
406        <span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span><span class="p">:</span>
407            <span class="k">for</span> <span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">enabled</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span><span class="p">[</span><span class="n">category</span><span class="p">]:</span>
408                <span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span><span class="p">[</span><span class="n">model</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">category</span><span class="p">)</span>
409                <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span><span class="p">[</span><span class="n">model</span><span class="p">]</span> <span class="o">=</span> <span class="n">enabled</span>
410
411    <span class="k">def</span> <span class="nf">_regenerate_master_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
412        <span class="sd">&quot;&quot;&quot;</span>
413<span class="sd">        regenerates self.master_category_dict from </span>
414<span class="sd">        self.by_model_dict and self.model_enabled_dict</span>
415<span class="sd">        &quot;&quot;&quot;</span>
416        <span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span>
417        <span class="k">for</span> <span class="n">model</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span><span class="p">:</span>
418            <span class="k">for</span> <span class="n">category</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">by_model_dict</span><span class="p">[</span><span class="n">model</span><span class="p">]:</span>
419                <span class="bp">self</span><span class="o">.</span><span class="n">master_category_dict</span><span class="p">[</span><span class="n">category</span><span class="p">]</span><span class="o">.</span><span class="n">append</span>\
420                    <span class="p">((</span><span class="n">model</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_enabled_dict</span><span class="p">[</span><span class="n">model</span><span class="p">]))</span>
421   
422
423</div>
424<div class="viewcode-block" id="ChangeCat"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.ChangeCat">[docs]</a><span class="k">class</span> <span class="nc">ChangeCat</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">Dialog</span><span class="p">):</span>
425    <span class="sd">&quot;&quot;&quot;</span>
426<span class="sd">    dialog for changing the categories of a model</span>
427<span class="sd">    &quot;&quot;&quot;</span>
428
429    <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">parent</span><span class="p">,</span> <span class="n">title</span><span class="p">,</span> <span class="n">cat_list</span><span class="p">,</span> <span class="n">current_cats</span><span class="p">):</span>
430        <span class="sd">&quot;&quot;&quot;</span>
431<span class="sd">        Actual editor for a certain category</span>
432<span class="sd">        :param parent: Window parent</span>
433<span class="sd">        :param title: Window title</span>
434<span class="sd">        :param cat_list: List of all categories</span>
435<span class="sd">        :param current_cats: List of categories applied to current model</span>
436<span class="sd">        &quot;&quot;&quot;</span>
437        <span class="n">wx</span><span class="o">.</span><span class="n">Dialog</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="n">parent</span><span class="p">,</span> <span class="n">title</span> <span class="o">=</span> <span class="s">&#39;Change Category: &#39;</span><span class="o">+</span><span class="n">title</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">485</span><span class="p">,</span> <span class="mi">425</span><span class="p">))</span>
438
439        <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span> <span class="o">=</span> <span class="n">current_cats</span>
440        <span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="o">==</span> <span class="s">&#39;Uncategorized&#39;</span><span class="p">:</span>
441            <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span> <span class="o">=</span> <span class="p">[]</span>
442        <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span>
443        <span class="bp">self</span><span class="o">.</span><span class="n">selcted_model</span> <span class="o">=</span> <span class="n">title</span>
444        <span class="n">vbox</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">BoxSizer</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span>
445        <span class="bp">self</span><span class="o">.</span><span class="n">add_sb</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticBox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&quot;Add Category&quot;</span><span class="p">)</span>
446        <span class="bp">self</span><span class="o">.</span><span class="n">add_sb_sizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticBoxSizer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">add_sb</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span>
447        <span class="n">gs</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">GridSizer</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span>
448        <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span> <span class="o">=</span> <span class="n">cat_list</span>
449       
450        <span class="bp">self</span><span class="o">.</span><span class="n">cat_text</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticText</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&quot;Current categories: &quot;</span><span class="p">)</span>
451        <span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ListBox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> 
452                                             <span class="n">choices</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span>
453                                             <span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">300</span><span class="p">,</span> <span class="mi">100</span><span class="p">))</span>
454        <span class="bp">self</span><span class="o">.</span><span class="n">existing_check</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">RadioButton</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> 
455                                             <span class="n">label</span> <span class="o">=</span> <span class="s">&#39;Choose Existing&#39;</span><span class="p">)</span>
456        <span class="bp">self</span><span class="o">.</span><span class="n">new_check</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">RadioButton</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&#39;Create new&#39;</span><span class="p">)</span>
457        <span class="bp">self</span><span class="o">.</span><span class="n">exist_combo</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ComboBox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">style</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">CB_READONLY</span><span class="p">,</span> 
458                                       <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">220</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="n">choices</span> <span class="o">=</span> <span class="n">cat_list</span><span class="p">)</span>
459        <span class="bp">self</span><span class="o">.</span><span class="n">exist_combo</span><span class="o">.</span><span class="n">SetSelection</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
460       
461       
462        <span class="bp">self</span><span class="o">.</span><span class="n">remove_sb</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticBox</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&quot;Remove Category&quot;</span><span class="p">)</span>
463       
464        <span class="bp">self</span><span class="o">.</span><span class="n">remove_sb_sizer</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">StaticBoxSizer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">remove_sb</span><span class="p">,</span> 
465                                                 <span class="n">wx</span><span class="o">.</span><span class="n">VERTICAL</span><span class="p">)</span>
466
467        <span class="bp">self</span><span class="o">.</span><span class="n">new_text</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">TextCtrl</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="p">(</span><span class="mi">220</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span>
468        <span class="bp">self</span><span class="o">.</span><span class="n">ok_button</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ID_OK</span><span class="p">,</span> <span class="s">&quot;Done&quot;</span><span class="p">)</span>
469        <span class="bp">self</span><span class="o">.</span><span class="n">add_button</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&quot;Add&quot;</span><span class="p">)</span>
470        <span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_add</span><span class="p">)</span>
471        <span class="bp">self</span><span class="o">.</span><span class="n">remove_button</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">label</span> <span class="o">=</span> <span class="s">&quot;Remove Selected&quot;</span><span class="p">)</span>
472        <span class="bp">self</span><span class="o">.</span><span class="n">remove_button</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_remove</span><span class="p">)</span>
473
474        <span class="bp">self</span><span class="o">.</span><span class="n">existing_check</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_RADIOBUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_existing</span><span class="p">)</span>
475        <span class="bp">self</span><span class="o">.</span><span class="n">new_check</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_RADIOBUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_newcat</span><span class="p">)</span>
476        <span class="bp">self</span><span class="o">.</span><span class="n">existing_check</span><span class="o">.</span><span class="n">SetValue</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
477
478        <span class="n">vbox</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">cat_text</span><span class="p">,</span> <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">LEFT</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">TOP</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_LEFT</span><span class="p">,</span> 
479                 <span class="n">border</span> <span class="o">=</span> <span class="mi">10</span><span class="p">)</span>
480        <span class="n">vbox</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span><span class="p">,</span> <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">,</span> 
481                 <span class="n">border</span> <span class="o">=</span> <span class="mi">10</span>  <span class="p">)</span>
482
483        <span class="n">gs</span><span class="o">.</span><span class="n">AddMany</span><span class="p">(</span> <span class="p">[</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">existing_check</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">),</span>
484                      <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exist_combo</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">),</span>
485                      <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">new_check</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">),</span>
486                      <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">new_text</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span> <span class="p">),</span>
487                      <span class="p">((</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">)),</span>
488                      <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">add_button</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_RIGHT</span><span class="p">)</span> <span class="p">]</span> <span class="p">)</span>
489
490        <span class="bp">self</span><span class="o">.</span><span class="n">add_sb_sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="n">gs</span><span class="p">,</span> <span class="n">proportion</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> <span class="n">border</span> <span class="o">=</span> <span class="mi">5</span><span class="p">)</span>
491        <span class="n">vbox</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">add_sb_sizer</span><span class="p">,</span> <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">,</span> <span class="n">border</span> <span class="o">=</span> <span class="mi">10</span><span class="p">)</span>
492
493        <span class="bp">self</span><span class="o">.</span><span class="n">remove_sb_sizer</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">remove_button</span><span class="p">,</span> <span class="n">border</span> <span class="o">=</span> <span class="mi">5</span><span class="p">,</span> 
494                                 <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_RIGHT</span><span class="p">)</span>
495        <span class="n">vbox</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">remove_sb_sizer</span><span class="p">,</span> 
496                 <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">LEFT</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">RIGHT</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">BOTTOM</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">EXPAND</span><span class="p">,</span> 
497                 <span class="n">border</span> <span class="o">=</span> <span class="mi">10</span><span class="p">)</span>
498        <span class="n">vbox</span><span class="o">.</span><span class="n">Add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ok_button</span><span class="p">,</span> <span class="n">flag</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALL</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">ALIGN_RIGHT</span><span class="p">,</span> 
499                 <span class="n">border</span> <span class="o">=</span> <span class="mi">10</span><span class="p">)</span>
500       
501        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span><span class="o">.</span><span class="n">GetCount</span><span class="p">()</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
502                <span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span><span class="o">.</span><span class="n">SetSelection</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
503        <span class="bp">self</span><span class="o">.</span><span class="n">new_text</span><span class="o">.</span><span class="n">Disable</span><span class="p">()</span>
504        <span class="bp">self</span><span class="o">.</span><span class="n">SetSizer</span><span class="p">(</span><span class="n">vbox</span><span class="p">)</span>
505        <span class="bp">self</span><span class="o">.</span><span class="n">Centre</span><span class="p">()</span>
506        <span class="bp">self</span><span class="o">.</span><span class="n">Show</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
507        <span class="k">if</span> <span class="n">IS_MAC</span><span class="p">:</span>
508            <span class="bp">self</span><span class="o">.</span><span class="n">ok_button</span><span class="o">.</span><span class="n">Bind</span><span class="p">(</span><span class="n">wx</span><span class="o">.</span><span class="n">EVT_BUTTON</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_ok_mac</span><span class="p">)</span>
509
510<div class="viewcode-block" id="ChangeCat.on_ok_mac"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.ChangeCat.on_ok_mac">[docs]</a>    <span class="k">def</span> <span class="nf">on_ok_mac</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
511        <span class="sd">&quot;&quot;&quot;</span>
512<span class="sd">        On OK pressed (MAC only)</span>
513<span class="sd">        &quot;&quot;&quot;</span>
514        <span class="n">event</span><span class="o">.</span><span class="n">Skip</span><span class="p">()</span>
515        <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">dial_ok</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">selcted_model</span><span class="p">)</span>
516        <span class="bp">self</span><span class="o">.</span><span class="n">Destroy</span><span class="p">()</span>
517</div>
518<div class="viewcode-block" id="ChangeCat.on_add"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.ChangeCat.on_add">[docs]</a>    <span class="k">def</span> <span class="nf">on_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
519        <span class="sd">&quot;&quot;&quot;</span>
520<span class="sd">        Callback for new category added</span>
521<span class="sd">        &quot;&quot;&quot;</span>
522        <span class="n">new_cat</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
523        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">existing_check</span><span class="o">.</span><span class="n">GetValue</span><span class="p">():</span>
524            <span class="n">new_cat</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">exist_combo</span><span class="o">.</span><span class="n">GetValue</span><span class="p">())</span>
525        <span class="k">else</span><span class="p">:</span>
526            <span class="n">new_cat</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">new_text</span><span class="o">.</span><span class="n">GetValue</span><span class="p">())</span>
527            <span class="k">if</span> <span class="n">new_cat</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">cat_list</span><span class="p">:</span>
528                <span class="n">wx</span><span class="o">.</span><span class="n">MessageBox</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> is already a model&#39;</span> <span class="o">%</span> <span class="n">new_cat</span><span class="p">,</span> <span class="s">&#39;Error&#39;</span><span class="p">,</span>
529                              <span class="n">wx</span><span class="o">.</span><span class="n">OK</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">ICON_EXCLAMATION</span> <span class="p">)</span>
530                <span class="k">return</span>
531
532        <span class="k">if</span> <span class="n">new_cat</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span><span class="p">:</span>
533            <span class="n">wx</span><span class="o">.</span><span class="n">MessageBox</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> is already included in this model&#39;</span> \
534                              <span class="o">%</span> <span class="n">new_cat</span><span class="p">,</span> <span class="s">&#39;Error&#39;</span><span class="p">,</span>
535                          <span class="n">wx</span><span class="o">.</span><span class="n">OK</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">ICON_EXCLAMATION</span> <span class="p">)</span>
536            <span class="k">return</span>
537
538        <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_cat</span><span class="p">)</span>
539        <span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span><span class="o">.</span><span class="n">SetItems</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span><span class="p">)</span>
540           
541        </div>
542<div class="viewcode-block" id="ChangeCat.on_remove"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.ChangeCat.on_remove">[docs]</a>    <span class="k">def</span> <span class="nf">on_remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
543        <span class="sd">&quot;&quot;&quot;</span>
544<span class="sd">        Callback for a category removed</span>
545<span class="sd">        &quot;&quot;&quot;</span>
546        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">()</span> <span class="o">==</span> <span class="n">wx</span><span class="o">.</span><span class="n">NOT_FOUND</span><span class="p">:</span>
547            <span class="n">wx</span><span class="o">.</span><span class="n">MessageBox</span><span class="p">(</span><span class="s">&#39;Please select a category to remove&#39;</span><span class="p">,</span> <span class="s">&#39;Error&#39;</span><span class="p">,</span>
548                          <span class="n">wx</span><span class="o">.</span><span class="n">OK</span> <span class="o">|</span> <span class="n">wx</span><span class="o">.</span><span class="n">ICON_EXCLAMATION</span> <span class="p">)</span>
549        <span class="k">else</span><span class="p">:</span>
550            <span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span><span class="o">.</span><span class="n">Delete</span><span class="p">(</span> \
551                <span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span><span class="o">.</span><span class="n">GetSelection</span><span class="p">())</span>
552            <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_categories</span><span class="o">.</span><span class="n">GetItems</span><span class="p">()</span>
553
554       
555</div>
556<div class="viewcode-block" id="ChangeCat.on_newcat"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.ChangeCat.on_newcat">[docs]</a>    <span class="k">def</span> <span class="nf">on_newcat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
557        <span class="sd">&quot;&quot;&quot;</span>
558<span class="sd">        Callback for new category added</span>
559<span class="sd">        &quot;&quot;&quot;</span>
560        <span class="bp">self</span><span class="o">.</span><span class="n">new_text</span><span class="o">.</span><span class="n">Enable</span><span class="p">()</span>
561        <span class="bp">self</span><span class="o">.</span><span class="n">exist_combo</span><span class="o">.</span><span class="n">Disable</span><span class="p">()</span>
562
563</div>
564<div class="viewcode-block" id="ChangeCat.on_existing"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.ChangeCat.on_existing">[docs]</a>    <span class="k">def</span> <span class="nf">on_existing</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>   
565        <span class="sd">&quot;&quot;&quot;</span>
566<span class="sd">        Callback for existing category selected</span>
567<span class="sd">        &quot;&quot;&quot;</span>
568        <span class="bp">self</span><span class="o">.</span><span class="n">new_text</span><span class="o">.</span><span class="n">Disable</span><span class="p">()</span>
569        <span class="bp">self</span><span class="o">.</span><span class="n">exist_combo</span><span class="o">.</span><span class="n">Enable</span><span class="p">()</span>
570</div>
571<div class="viewcode-block" id="ChangeCat.get_category"><a class="viewcode-back" href="../../../dev/api/sas.guiframe.html#sas.guiframe.CategoryManager.ChangeCat.get_category">[docs]</a>    <span class="k">def</span> <span class="nf">get_category</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
572        <span class="sd">&quot;&quot;&quot;</span>
573<span class="sd">        Returns a list of categories applying to this model</span>
574<span class="sd">        &quot;&quot;&quot;</span>
575        <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span><span class="p">:</span>
576            <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;Uncategorized&quot;</span><span class="p">)</span>
577
578        <span class="n">ret</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
579        <span class="k">for</span> <span class="n">cat</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_cats</span><span class="p">:</span>
580            <span class="n">ret</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">cat</span><span class="p">))</span>
581        <span class="k">return</span> <span class="n">ret</span>
582</div></div>
583<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span>
584       
585   
586    <span class="k">if</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">):</span>
587        <span class="n">app</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">App</span><span class="p">()</span>
588        <span class="n">CategoryManager</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;Category Manager&#39;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
589        <span class="n">app</span><span class="o">.</span><span class="n">MainLoop</span><span class="p">()</span>
590    <span class="k">else</span><span class="p">:</span>
591        <span class="n">app</span> <span class="o">=</span> <span class="n">wx</span><span class="o">.</span><span class="n">App</span><span class="p">()</span>
592        <span class="n">CategoryManager</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="s">&#39;Category Manager&#39;</span><span class="p">,</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
593        <span class="n">app</span><span class="o">.</span><span class="n">MainLoop</span><span class="p">()</span>
594</pre></div>
595
596          </div>
597        </div>
598      </div>
599      <div class="sphinxsidebar">
600        <div class="sphinxsidebarwrapper">
601<div id="searchbox" style="display: none">
602  <h3>Quick search</h3>
603    <form class="search" action="../../../search.html" method="get">
604      <input type="text" name="q" />
605      <input type="submit" value="Go" />
606      <input type="hidden" name="check_keywords" value="yes" />
607      <input type="hidden" name="area" value="default" />
608    </form>
609    <p class="searchtip" style="font-size: 90%">
610    Enter search terms or a module, class or function name.
611    </p>
612</div>
613<script type="text/javascript">$('#searchbox').show(0);</script>
614        </div>
615      </div>
616      <div class="clearer"></div>
617    </div>
618    <div class="related">
619      <h3>Navigation</h3>
620      <ul>
621        <li class="right" style="margin-right: 10px">
622          <a href="../../../genindex.html" title="General Index"
623             >index</a></li>
624        <li class="right" >
625          <a href="../../../py-modindex.html" title="Python Module Index"
626             >modules</a> |</li>
627        <li><a href="../../../index.html">SasView 3.0.0 documentation</a> &raquo;</li>
628          <li><a href="../../index.html" >Module code</a> &raquo;</li>
629          <li><a href="../guiframe.html" >sas.guiframe</a> &raquo;</li> 
630      </ul>
631    </div>
632    <div class="footer">
633        &copy; Copyright 2013, The SasView Project.
634      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.3.
635    </div>
636  </body>
637</html>
Note: See TracBrowser for help on using the repository browser.