source: trunk/sphinxdocs/build/html/_modules/makeMacApp.html @ 1472

Last change on this file since 1472 was 1472, checked in by toby, 9 years ago

fix wx3 bug: no wx.CB_SORT on Mac

  • Property svn:mime-type set to text/html
File size: 30.9 KB
Line 
1
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
6
7<html xmlns="http://www.w3.org/1999/xhtml">
8  <head>
9    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10   
11    <title>makeMacApp &mdash; GSAS-II 0.2.0 documentation</title>
12   
13    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
14    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
15   
16    <script type="text/javascript">
17      var DOCUMENTATION_OPTIONS = {
18        URL_ROOT:    '../',
19        VERSION:     '0.2.0',
20        COLLAPSE_INDEX: false,
21        FILE_SUFFIX: '.html',
22        HAS_SOURCE:  true
23      };
24    </script>
25    <script type="text/javascript" src="../_static/jquery.js"></script>
26    <script type="text/javascript" src="../_static/underscore.js"></script>
27    <script type="text/javascript" src="../_static/doctools.js"></script>
28    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
29    <link rel="top" title="GSAS-II 0.2.0 documentation" href="../index.html" />
30    <link rel="up" title="Module code" href="index.html" /> 
31  </head>
32  <body>
33    <div class="related">
34      <h3>Navigation</h3>
35      <ul>
36        <li class="right" style="margin-right: 10px">
37          <a href="../genindex.html" title="General Index"
38             accesskey="I">index</a></li>
39        <li class="right" >
40          <a href="../py-modindex.html" title="Python Module Index"
41             >modules</a> |</li>
42        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
43          <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
44      </ul>
45    </div> 
46
47    <div class="document">
48      <div class="documentwrapper">
49        <div class="bodywrapper">
50          <div class="body">
51           
52  <h1>Source code for makeMacApp</h1><div class="highlight"><pre>
53<span class="c">#!/usr/bin/env python</span>
54<span class="sd">&#39;&#39;&#39;</span>
55<span class="sd">*makeMacApp: Create Mac Applet*</span>
56<span class="sd">===============================</span>
57
58<span class="sd">This script creates an AppleScript app to launch GSAS-II. The app is</span>
59<span class="sd">created in the directory where the GSAS-II script is located.</span>
60<span class="sd">A softlink to Python is created, but is named GSAS-II, so that </span>
61<span class="sd">GSAS-II shows up as the name of the app rather than Python in the</span>
62<span class="sd">menu bar, etc. Note that this requires finding an app version of Python</span>
63<span class="sd">(expected name .../Resources/Python.app/Contents/MacOS/Python in</span>
64<span class="sd">directory tree of the calling python interpreter).</span>
65
66<span class="sd">Run this script with one optional argument, the path to the GSASII.py</span>
67<span class="sd">The script path may be specified relative to the current path or given</span>
68<span class="sd">an absolute path, but will be accessed via an absolute path. </span>
69<span class="sd">If no arguments are supplied, the GSASII.py script is assumed to be in the</span>
70<span class="sd">same directory as this file.</span>
71
72<span class="sd">&#39;&#39;&#39;</span>
73<span class="kn">import</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">os</span><span class="o">,</span> <span class="nn">os.path</span><span class="o">,</span> <span class="nn">stat</span><span class="o">,</span> <span class="nn">shutil</span><span class="o">,</span> <span class="nn">subprocess</span><span class="o">,</span> <span class="nn">plistlib</span>
74<span class="k">def</span> <span class="nf">Usage</span><span class="p">():</span>
75    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n\t</span><span class="s">Usage: python &quot;</span><span class="o">+</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="s">&quot; [&lt;GSAS-II script&gt;]</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">)</span>
76    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
77
78<div class="viewcode-block" id="RunPython"><a class="viewcode-back" href="../GSASIIscripts.html#makeMacApp.RunPython">[docs]</a><span class="k">def</span> <span class="nf">RunPython</span><span class="p">(</span><span class="n">image</span><span class="p">,</span><span class="n">cmd</span><span class="p">):</span>
79    <span class="s">&#39;Run a command in a python image&#39;</span>
80    <span class="k">try</span><span class="p">:</span>
81        <span class="n">err</span><span class="o">=</span><span class="bp">None</span>
82        <span class="n">p</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">([</span><span class="n">image</span><span class="p">,</span><span class="s">&#39;-c&#39;</span><span class="p">,</span><span class="n">cmd</span><span class="p">],</span><span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
83        <span class="n">out</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
84        <span class="n">err</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">stderr</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
85        <span class="n">p</span><span class="o">.</span><span class="n">communicate</span><span class="p">()</span>
86        <span class="k">return</span> <span class="n">out</span><span class="p">,</span><span class="n">err</span>
87    <span class="k">except</span> <span class="ne">Exception</span><span class="p">(</span><span class="n">err</span><span class="p">):</span>
88        <span class="k">return</span> <span class="s">&#39;&#39;</span><span class="p">,</span><span class="s">&#39;Exception = &#39;</span><span class="o">+</span><span class="n">err</span>
89</div>
90<span class="n">project</span><span class="o">=</span><span class="s">&quot;GSAS-II&quot;</span>
91<span class="n">AppleScript</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
92<span class="sd">&#39;&#39;&#39;Contains an AppleScript to start GSAS-II launching python and the</span>
93<span class="sd">GSAS-II python script</span>
94<span class="sd">&#39;&#39;&#39;</span>
95
96<span class="n">AppleScript</span> <span class="o">+=</span> <span class="s">&#39;&#39;&#39;(*   GSAS-II AppleScript by B. Toby (brian.toby@anl.gov)</span>
97<span class="s">     It can launch GSAS-II by double clicking or by dropping a data file</span>
98<span class="s">     or folder over the app.</span>
99<span class="s">     It runs GSAS-II in a terminal window.</span>
100<span class="s">*)</span>
101
102<span class="s">(* test if a file is present and exit with an error message if it is not  *)</span>
103<span class="s">on TestFilePresent(appwithpath)</span>
104<span class="s">        tell application &quot;System Events&quot;</span>
105<span class="s">                if (file appwithpath exists) then</span>
106<span class="s">                else</span>
107<span class="s">                        display dialog &quot;Error: file &quot; &amp; appwithpath &amp; &quot; not found. If you have moved this file recreate the AppleScript with bootstrap.py.&quot; with icon caution buttons {{&quot;Quit&quot;}}</span>
108<span class="s">                        return</span>
109<span class="s">                end if</span>
110<span class="s">        end tell</span>
111<span class="s">end TestFilePresent</span>
112
113<span class="s">(* </span>
114<span class="s">------------------------------------------------------------------------</span>
115<span class="s">this section responds to a double-click. No file is supplied to GSAS-II</span>
116<span class="s">------------------------------------------------------------------------ </span>
117<span class="s">*)</span>
118<span class="s">on run</span>
119<span class="s">        set python to &quot;{:s}&quot;</span>
120<span class="s">        set appwithpath to &quot;{:s}&quot;</span>
121<span class="s">        set env to &quot;{:s}&quot;</span>
122<span class="s">        TestFilePresent(appwithpath)</span>
123<span class="s">        TestFilePresent(python)</span>
124<span class="s">        tell application &quot;Terminal&quot;</span>
125<span class="s">                activate</span>
126<span class="s">                do script env &amp; python &amp; &quot; &quot; &amp; appwithpath &amp; &quot;; exit&quot;</span>
127<span class="s">        end tell</span>
128<span class="s">end run</span>
129
130<span class="s">(*</span>
131<span class="s">-----------------------------------------------------------------------------------------------</span>
132<span class="s">this section handles starting with files dragged into the AppleScript</span>
133<span class="s"> o it goes through the list of file(s) dragged in</span>
134<span class="s"> o then it converts the colon-delimited macintosh file location to a POSIX filename</span>
135<span class="s"> o for every non-directory file dragged into the icon, it starts GSAS-II, passing the file name</span>
136<span class="s">------------------------------------------------------------------------------------------------</span>
137<span class="s">*)</span>
138
139<span class="s">on open names</span>
140<span class="s">        set python to &quot;{:s}&quot;</span>
141<span class="s">        set appwithpath to &quot;{:s}&quot;</span>
142<span class="s">        set env to &quot;{:s}&quot;</span>
143<span class="s"> </span>
144<span class="s">        TestFilePresent(appwithpath)</span>
145<span class="s">        repeat with filename in names</span>
146<span class="s">                set filestr to (filename as string)</span>
147<span class="s">                if filestr ends with &quot;:&quot; then</span>
148<span class="s">                        (* should not happen, skip directories *)</span>
149<span class="s">                else</span>
150<span class="s">                        (* if this is an input file, open it *)</span>
151<span class="s">                        set filename to the quoted form of the POSIX path of filename</span>
152<span class="s">                        tell application &quot;Terminal&quot;</span>
153<span class="s">                                activate</span>
154<span class="s">                                do script env &amp; python &amp; &quot; &quot; &amp; appwithpath &amp; &quot; &quot; &amp; filename &amp; &quot;; exit&quot;</span>
155<span class="s">                        end tell</span>
156<span class="s">                end if</span>
157<span class="s">        end repeat</span>
158<span class="s">end open</span>
159<span class="s">&#39;&#39;&#39;</span>
160
161<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>
162    <span class="c"># find the main GSAS-II script if not on command line</span>
163    <span class="k">if</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">==</span> <span class="mi">1</span><span class="p">:</span>
164        <span class="n">script</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">abspath</span><span class="p">(</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>
165            <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">__file__</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span>
166            <span class="s">&quot;GSASII.py&quot;</span>
167            <span class="p">))</span>
168    <span class="k">elif</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">==</span> <span class="mi">2</span><span class="p">:</span>
169        <span class="n">script</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">abspath</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>
170    <span class="k">else</span><span class="p">:</span>
171        <span class="n">Usage</span><span class="p">()</span>
172
173    <span class="c"># make sure we found it</span>
174    <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">exists</span><span class="p">(</span><span class="n">script</span><span class="p">):</span>
175        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">File &quot;</span><span class="o">+</span><span class="n">script</span><span class="o">+</span><span class="s">&quot; not found&quot;</span><span class="p">)</span>
176        <span class="n">Usage</span><span class="p">()</span>
177    <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">splitext</span><span class="p">(</span><span class="n">script</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s">&#39;.py&#39;</span><span class="p">:</span>
178        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">Script &quot;</span><span class="o">+</span><span class="n">script</span><span class="o">+</span><span class="s">&quot; does not have extension .py&quot;</span><span class="p">)</span>
179        <span class="n">Usage</span><span class="p">()</span>
180    <span class="c"># where the app will be created</span>
181    <span class="n">scriptdir</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">split</span><span class="p">(</span><span class="n">script</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
182    <span class="c"># name of app</span>
183    <span class="n">apppath</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">abspath</span><span class="p">(</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">scriptdir</span><span class="p">,</span><span class="n">project</span><span class="o">+</span><span class="s">&quot;.app&quot;</span><span class="p">))</span>
184    <span class="n">iconfile</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">scriptdir</span><span class="p">,</span><span class="s">&#39;gsas2.icns&#39;</span><span class="p">)</span> <span class="c"># optional icon file</span>
185
186    <span class="c"># find the python application; must be an OS X app</span>
187    <span class="n">pythonpath</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">realpath</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</span><span class="p">)</span>
188    <span class="n">top</span> <span class="o">=</span> <span class="bp">True</span>
189    <span class="k">while</span> <span class="n">top</span><span class="p">:</span>
190        <span class="n">pythonapp</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">pythonpath</span><span class="p">,</span><span class="s">&#39;Resources&#39;</span><span class="p">,</span><span class="s">&#39;Python.app&#39;</span><span class="p">,</span><span class="s">&#39;Contents&#39;</span><span class="p">,</span><span class="s">&#39;MacOS&#39;</span><span class="p">,</span><span class="s">&#39;Python&#39;</span><span class="p">)</span>
191        <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">exists</span><span class="p">(</span><span class="n">pythonapp</span><span class="p">):</span> <span class="k">break</span>
192        <span class="n">pythonpath</span><span class="p">,</span><span class="n">top</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">split</span><span class="p">(</span><span class="n">pythonpath</span><span class="p">)</span>
193    <span class="k">else</span><span class="p">:</span>
194        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">Sorry, failed to find a Resources directory associated with &quot;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">executable</span><span class="p">))</span>
195        <span class="n">pythonapp</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">executable</span>
196   
197    <span class="c"># create a link to the python app, but named to match the project</span>
198    <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">exists</span><span class="p">(</span><span class="s">&#39;/tmp/testpython&#39;</span><span class="p">):</span> <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s">&#39;/tmp/testpython&#39;</span><span class="p">)</span>
199    <span class="n">os</span><span class="o">.</span><span class="n">symlink</span><span class="p">(</span><span class="n">pythonapp</span><span class="p">,</span><span class="s">&#39;/tmp/testpython&#39;</span><span class="p">)</span>
200    <span class="c"># test if it runs</span>
201    <span class="n">testout</span><span class="p">,</span><span class="n">errout</span> <span class="o">=</span> <span class="n">RunPython</span><span class="p">(</span><span class="s">&#39;/tmp/testpython&#39;</span><span class="p">,</span><span class="s">&#39;import numpy; import wx; print(&quot;OK&quot;)&#39;</span><span class="p">)</span>
202    <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="s">&#39;/tmp/testpython&#39;</span><span class="p">)</span>
203    <span class="c">#print testout,errout</span>
204    <span class="k">if</span> <span class="n">testout</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">!=</span> <span class="s">&quot;OK&quot;</span><span class="p">:</span>
205        <span class="k">print</span> <span class="s">&#39;Run of python app failed, resorting to non-app version of Python, Alas!&#39;</span>
206        <span class="n">pythonapp</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">executable</span>
207        <span class="c"># is this brain-dead Canopy 1.4.0, if so, switch to pythonw</span>
208        <span class="k">try</span><span class="p">:</span>
209            <span class="kn">import</span> <span class="nn">canopy.version</span>
210            <span class="k">if</span> <span class="n">canopy</span><span class="o">.</span><span class="n">version</span><span class="o">.</span><span class="n">version</span> <span class="o">==</span> <span class="s">&#39;1.4.0&#39;</span><span class="p">:</span>
211                <span class="k">print</span> <span class="s">&#39;using pythonw for Canopy 1.4.0&#39;</span>
212                <span class="n">pythonapp</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">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">pythonapp</span><span class="p">)[</span><span class="mi">0</span><span class="p">],</span><span class="s">&#39;pythonw&#39;</span><span class="p">)</span>
213                <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">exists</span><span class="p">(</span><span class="n">pythonapp</span><span class="p">):</span>
214                    <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">&#39;no pythonw here: &#39;</span><span class="o">+</span><span class="n">pythonapp</span><span class="p">)</span>
215        <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
216            <span class="k">pass</span>
217        <span class="n">newpython</span> <span class="o">=</span> <span class="n">pythonapp</span>
218    <span class="k">else</span><span class="p">:</span>
219        <span class="c"># new name to call python</span>
220        <span class="n">newpython</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">apppath</span><span class="p">,</span><span class="s">&quot;Contents&quot;</span><span class="p">,</span><span class="s">&quot;MacOS&quot;</span><span class="p">,</span><span class="n">project</span><span class="p">)</span>
221
222    <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">exists</span><span class="p">(</span><span class="n">apppath</span><span class="p">):</span> <span class="c"># cleanup</span>
223        <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">Removing old &quot;</span><span class="o">+</span><span class="n">project</span><span class="o">+</span><span class="s">&quot; app (&quot;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">apppath</span><span class="p">)</span><span class="o">+</span><span class="s">&quot;)&quot;</span><span class="p">)</span>
224        <span class="n">shutil</span><span class="o">.</span><span class="n">rmtree</span><span class="p">(</span><span class="n">apppath</span><span class="p">)</span>
225
226    <span class="n">shell</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="s">&quot;/tmp/&quot;</span><span class="p">,</span><span class="s">&quot;appscrpt.script&quot;</span><span class="p">)</span>
227    <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">shell</span><span class="p">,</span> <span class="s">&quot;w&quot;</span><span class="p">)</span>
228    <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">AppleScript</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">newpython</span><span class="p">,</span><span class="n">script</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">,</span><span class="n">newpython</span><span class="p">,</span><span class="n">script</span><span class="p">,</span><span class="s">&#39;&#39;</span><span class="p">))</span>
229    <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
230
231    <span class="k">try</span><span class="p">:</span> 
232        <span class="n">subprocess</span><span class="o">.</span><span class="n">check_output</span><span class="p">([</span><span class="s">&quot;osacompile&quot;</span><span class="p">,</span><span class="s">&quot;-o&quot;</span><span class="p">,</span><span class="n">apppath</span><span class="p">,</span><span class="n">shell</span><span class="p">],</span><span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">STDOUT</span><span class="p">)</span>
233    <span class="k">except</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">CalledProcessError</span><span class="p">,</span> <span class="n">msg</span><span class="p">:</span>
234        <span class="k">print</span> <span class="s">&#39;&#39;&#39;Error compiling AppleScript.</span>
235<span class="s">        Report the next message along with details about your Mac to toby@anl.gov&#39;&#39;&#39;</span>
236        <span class="k">print</span> <span class="n">msg</span><span class="o">.</span><span class="n">output</span>
237        <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
238
239    <span class="c"># create a link to the python app, but named to match the project</span>
240    <span class="k">if</span> <span class="n">pythonapp</span> <span class="o">!=</span> <span class="n">newpython</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">symlink</span><span class="p">(</span><span class="n">pythonapp</span><span class="p">,</span><span class="n">newpython</span><span class="p">)</span>
241
242    <span class="c"># change the icon</span>
243    <span class="n">oldicon</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">apppath</span><span class="p">,</span><span class="s">&quot;Contents&quot;</span><span class="p">,</span><span class="s">&quot;Resources&quot;</span><span class="p">,</span><span class="s">&quot;droplet.icns&quot;</span><span class="p">)</span>
244    <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">exists</span><span class="p">(</span><span class="n">iconfile</span><span class="p">)</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">oldicon</span><span class="p">):</span>
245        <span class="n">shutil</span><span class="o">.</span><span class="n">copyfile</span><span class="p">(</span><span class="n">iconfile</span><span class="p">,</span><span class="n">oldicon</span><span class="p">)</span>
246
247    <span class="c"># Edit the app plist file to restrict the type of files that can be dropped</span>
248    <span class="n">d</span> <span class="o">=</span> <span class="n">plistlib</span><span class="o">.</span><span class="n">readPlist</span><span class="p">(</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">apppath</span><span class="p">,</span><span class="s">&quot;Contents&quot;</span><span class="p">,</span><span class="s">&#39;Info.plist&#39;</span><span class="p">))</span>
249    <span class="n">d</span><span class="p">[</span><span class="s">&#39;CFBundleDocumentTypes&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[{</span>
250        <span class="s">&#39;CFBundleTypeExtensions&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s">&#39;gpx&#39;</span><span class="p">],</span>
251        <span class="s">&#39;CFBundleTypeName&#39;</span><span class="p">:</span> <span class="s">&#39;GSAS-II project&#39;</span><span class="p">,</span>
252        <span class="s">&#39;CFBundleTypeRole&#39;</span><span class="p">:</span> <span class="s">&#39;Editor&#39;</span><span class="p">}]</span>
253   
254    <span class="n">plistlib</span><span class="o">.</span><span class="n">writePlist</span><span class="p">(</span><span class="n">d</span><span class="p">,</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">apppath</span><span class="p">,</span><span class="s">&quot;Contents&quot;</span><span class="p">,</span><span class="s">&#39;Info.plist&#39;</span><span class="p">))</span>
255
256    <span class="k">print</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="s">Created &quot;</span><span class="o">+</span><span class="n">project</span><span class="o">+</span><span class="s">&quot; app (&quot;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">apppath</span><span class="p">)</span><span class="o">+</span>
257          <span class="s">&quot;).</span><span class="se">\n</span><span class="s">Viewing app in Finder so you can drag it to the dock if, you wish.&quot;</span><span class="p">)</span>
258    <span class="n">subprocess</span><span class="o">.</span><span class="n">call</span><span class="p">([</span><span class="s">&quot;open&quot;</span><span class="p">,</span><span class="s">&quot;-R&quot;</span><span class="p">,</span><span class="n">apppath</span><span class="p">])</span>
259</pre></div>
260
261          </div>
262        </div>
263      </div>
264      <div class="sphinxsidebar">
265        <div class="sphinxsidebarwrapper">
266            <p class="logo"><a href="../index.html">
267              <img class="logo" src="../_static/G2_html_logo.png" alt="Logo"/>
268            </a></p>
269<div id="searchbox" style="display: none">
270  <h3>Quick search</h3>
271    <form class="search" action="../search.html" method="get">
272      <input type="text" name="q" />
273      <input type="submit" value="Go" />
274      <input type="hidden" name="check_keywords" value="yes" />
275      <input type="hidden" name="area" value="default" />
276    </form>
277    <p class="searchtip" style="font-size: 90%">
278    Enter search terms or a module, class or function name.
279    </p>
280</div>
281<script type="text/javascript">$('#searchbox').show(0);</script>
282        </div>
283      </div>
284      <div class="clearer"></div>
285    </div>
286    <div class="related">
287      <h3>Navigation</h3>
288      <ul>
289        <li class="right" style="margin-right: 10px">
290          <a href="../genindex.html" title="General Index"
291             >index</a></li>
292        <li class="right" >
293          <a href="../py-modindex.html" title="Python Module Index"
294             >modules</a> |</li>
295        <li><a href="../index.html">GSAS-II 0.2.0 documentation</a> &raquo;</li>
296          <li><a href="index.html" >Module code</a> &raquo;</li> 
297      </ul>
298    </div>
299    <div class="footer">
300        &copy; Copyright 2013, Von Dreele and Toby for Argonne National Laboratory.
301      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
302    </div>
303  </body>
304</html>
Note: See TracBrowser for help on using the repository browser.