Merge lp:~gatesphere/leo-editor/sphinx-docs into lp:leo-editor
- sphinx-docs
- Merge into trunk3
Proposed by
Jake Peck
Status: | Merged |
---|---|
Merged at revision: | 5763 |
Proposed branch: | lp:~gatesphere/leo-editor/sphinx-docs |
Merge into: | lp:leo-editor |
Diff against target: |
184287 lines (+183259/-0) 166 files modified
sphinx-docs/Makefile (+181/-0) sphinx-docs/_build/html/.buildinfo (+4/-0) sphinx-docs/_build/html/_modules/index.html (+206/-0) sphinx-docs/_build/html/_modules/leo/__init__.html (+104/-0) sphinx-docs/_build/html/_modules/leo/core/leoApp.html (+3371/-0) sphinx-docs/_build/html/_modules/leo/core/leoAtFile.html (+5787/-0) sphinx-docs/_build/html/_modules/leo/core/leoBridge.html (+482/-0) sphinx-docs/_build/html/_modules/leo/core/leoBridgeTest.html (+175/-0) sphinx-docs/_build/html/_modules/leo/core/leoCache.html (+897/-0) sphinx-docs/_build/html/_modules/leo/core/leoChapters.html (+1175/-0) sphinx-docs/_build/html/_modules/leo/core/leoColor.html (+881/-0) sphinx-docs/_build/html/_modules/leo/core/leoCommands.html (+8636/-0) sphinx-docs/_build/html/_modules/leo/core/leoCompare.html (+594/-0) sphinx-docs/_build/html/_modules/leo/core/leoConfig.html (+2310/-0) sphinx-docs/_build/html/_modules/leo/core/leoDebugger.html (+132/-0) sphinx-docs/_build/html/_modules/leo/core/leoDynamicTest.html (+208/-0) sphinx-docs/_build/html/_modules/leo/core/leoFileCommands.html (+2512/-0) sphinx-docs/_build/html/_modules/leo/core/leoFind.html (+1870/-0) sphinx-docs/_build/html/_modules/leo/core/leoFrame.html (+2836/-0) sphinx-docs/_build/html/_modules/leo/core/leoGlobals.html (+6576/-0) sphinx-docs/_build/html/_modules/leo/core/leoGui.html (+663/-0) sphinx-docs/_build/html/_modules/leo/core/leoIPython.html (+1408/-0) sphinx-docs/_build/html/_modules/leo/core/leoInspect.html (+4349/-0) sphinx-docs/_build/html/_modules/leo/core/leoKeys.html (+4831/-0) sphinx-docs/_build/html/_modules/leo/core/leoMenu.html (+1678/-0) sphinx-docs/_build/html/_modules/leo/core/leoNodes.html (+2697/-0) sphinx-docs/_build/html/_modules/leo/core/leoPlugins.html (+829/-0) sphinx-docs/_build/html/_modules/leo/core/leoPymacs.html (+251/-0) sphinx-docs/_build/html/_modules/leo/core/leoRst.html (+2433/-0) sphinx-docs/_build/html/_modules/leo/core/leoShadow.html (+1238/-0) sphinx-docs/_build/html/_modules/leo/core/leoTangle.html (+3553/-0) sphinx-docs/_build/html/_modules/leo/core/leoTest.html (+1906/-0) sphinx-docs/_build/html/_modules/leo/core/leoUndo.html (+2377/-0) sphinx-docs/_build/html/_modules/leo/core/runLeo.html (+179/-0) sphinx-docs/_build/html/_modules/leo/extensions/asciidoc.html (+3760/-0) sphinx-docs/_build/html/_modules/leo/extensions/colors.html (+860/-0) sphinx-docs/_build/html/_modules/leo/extensions/patch_11_01.html (+810/-0) sphinx-docs/_build/html/_modules/leo/external/codewise.html (+1053/-0) sphinx-docs/_build/html/_modules/leo/external/edb.html (+1911/-0) sphinx-docs/_build/html/_modules/leo/external/leosax.html (+294/-0) sphinx-docs/_build/html/_modules/leo/external/stringlist.html (+255/-0) sphinx-docs/_build/html/_modules/leo/plugins/FileActions.html (+314/-0) sphinx-docs/_build/html/_modules/leo/plugins/add_directives.html (+148/-0) sphinx-docs/_build/html/_modules/leo/plugins/at_folder.html (+163/-0) sphinx-docs/_build/html/_modules/leo/plugins/at_produce.html (+251/-0) sphinx-docs/_build/html/_modules/leo/plugins/at_view.html (+368/-0) sphinx-docs/_build/html/_modules/leo/plugins/bibtex.html (+377/-0) sphinx-docs/_build/html/_modules/leo/plugins/chapter_hoist.html (+204/-0) sphinx-docs/_build/html/_modules/leo/plugins/codewisecompleter.html (+533/-0) sphinx-docs/_build/html/_modules/leo/plugins/colorize_headlines.html (+142/-0) sphinx-docs/_build/html/_modules/leo/plugins/cursesGui.html (+655/-0) sphinx-docs/_build/html/_modules/leo/plugins/datenodes.html (+391/-0) sphinx-docs/_build/html/_modules/leo/plugins/debugger_pudb.html (+136/-0) sphinx-docs/_build/html/_modules/leo/plugins/dtest.html (+245/-0) sphinx-docs/_build/html/_modules/leo/plugins/dump_globals.html (+128/-0) sphinx-docs/_build/html/_modules/leo/plugins/empty_leo_file.html (+144/-0) sphinx-docs/_build/html/_modules/leo/plugins/enable_gc.html (+123/-0) sphinx-docs/_build/html/_modules/leo/plugins/expfolder.html (+214/-0) sphinx-docs/_build/html/_modules/leo/plugins/geotag.html (+198/-0) sphinx-docs/_build/html/_modules/leo/plugins/gitarchive.html (+205/-0) sphinx-docs/_build/html/_modules/leo/plugins/import_cisco_config.html (+309/-0) sphinx-docs/_build/html/_modules/leo/plugins/initinclass.html (+162/-0) sphinx-docs/_build/html/_modules/leo/plugins/ipython.html (+399/-0) sphinx-docs/_build/html/_modules/leo/plugins/jinjarender.html (+205/-0) sphinx-docs/_build/html/_modules/leo/plugins/leoOPML.html (+1127/-0) sphinx-docs/_build/html/_modules/leo/plugins/leo_interface.html (+405/-0) sphinx-docs/_build/html/_modules/leo/plugins/leo_to_html.html (+876/-0) sphinx-docs/_build/html/_modules/leo/plugins/leo_to_rtf.html (+270/-0) sphinx-docs/_build/html/_modules/leo/plugins/leocursor.html (+345/-0) sphinx-docs/_build/html/_modules/leo/plugins/leofeeds.html (+233/-0) sphinx-docs/_build/html/_modules/leo/plugins/leomail.html (+188/-0) sphinx-docs/_build/html/_modules/leo/plugins/lineNumbers.html (+168/-0) sphinx-docs/_build/html/_modules/leo/plugins/macros.html (+303/-0) sphinx-docs/_build/html/_modules/leo/plugins/maximizeNewWindows.html (+146/-0) sphinx-docs/_build/html/_modules/leo/plugins/mime.html (+306/-0) sphinx-docs/_build/html/_modules/leo/plugins/mnplugins.html (+230/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_autosave.html (+231/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_framesize.html (+125/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_http.html (+1307/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_leo2ascd.html (+526/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_read_dir_outline.html (+267/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_scripting.html (+937/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_speedups.html (+203/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_tempfname.html (+227/-0) sphinx-docs/_build/html/_modules/leo/plugins/mod_timestamp.html (+125/-0) sphinx-docs/_build/html/_modules/leo/plugins/multifile.html (+310/-0) sphinx-docs/_build/html/_modules/leo/plugins/niceNosent.html (+195/-0) sphinx-docs/_build/html/_modules/leo/plugins/nodeActions.html (+544/-0) sphinx-docs/_build/html/_modules/leo/plugins/open_shell.html (+240/-0) sphinx-docs/_build/html/_modules/leo/plugins/outline_export.html (+143/-0) sphinx-docs/_build/html/_modules/leo/plugins/paste_as_headlines.html (+199/-0) sphinx-docs/_build/html/_modules/leo/plugins/pluginsTest.html (+211/-0) sphinx-docs/_build/html/_modules/leo/plugins/plugins_menu.html (+528/-0) sphinx-docs/_build/html/_modules/leo/plugins/pygeotag/pygeotag.html (+320/-0) sphinx-docs/_build/html/_modules/leo/plugins/qtframecommands.html (+189/-0) sphinx-docs/_build/html/_modules/leo/plugins/quit_leo.html (+121/-0) sphinx-docs/_build/html/_modules/leo/plugins/read_only_nodes.html (+525/-0) sphinx-docs/_build/html/_modules/leo/plugins/redirect_to_log.html (+114/-0) sphinx-docs/_build/html/_modules/leo/plugins/rst3.html (+2018/-0) sphinx-docs/_build/html/_modules/leo/plugins/run_nodes.html (+492/-0) sphinx-docs/_build/html/_modules/leo/plugins/screenshots.html (+2448/-0) sphinx-docs/_build/html/_modules/leo/plugins/script_io_to_body.html (+191/-0) sphinx-docs/_build/html/_modules/leo/plugins/scripts_menu.html (+175/-0) sphinx-docs/_build/html/_modules/leo/plugins/setHomeDirectory.html (+103/-0) sphinx-docs/_build/html/_modules/leo/plugins/slideshow.html (+333/-0) sphinx-docs/_build/html/_modules/leo/plugins/startfile.html (+206/-0) sphinx-docs/_build/html/_modules/leo/plugins/testRegisterCommand.html (+122/-0) sphinx-docs/_build/html/_modules/leo/plugins/textnode.html (+199/-0) sphinx-docs/_build/html/_modules/leo/plugins/tkGui.html (+9117/-0) sphinx-docs/_build/html/_modules/leo/plugins/tomboy_import.html (+237/-0) sphinx-docs/_build/html/_modules/leo/plugins/trace_gc_plugin.html (+142/-0) sphinx-docs/_build/html/_modules/leo/plugins/trace_keys.html (+122/-0) sphinx-docs/_build/html/_modules/leo/plugins/trace_tags.html (+169/-0) sphinx-docs/_build/html/_modules/leo/plugins/valuespace.html (+850/-0) sphinx-docs/_build/html/_modules/leo/plugins/vim.html (+388/-0) sphinx-docs/_build/html/_modules/leo/plugins/word_count.html (+168/-0) sphinx-docs/_build/html/_modules/leo/plugins/word_export.html (+247/-0) sphinx-docs/_build/html/_modules/leo/plugins/xemacs.html (+243/-0) sphinx-docs/_build/html/_modules/leo/plugins/xsltWithNodes.html (+764/-0) sphinx-docs/_build/html/_modules/leo/plugins/zenity_file_dialogs.html (+224/-0) sphinx-docs/_build/html/_sources/index.txt (+27/-0) sphinx-docs/_build/html/_sources/leo.core.txt (+303/-0) sphinx-docs/_build/html/_sources/leo.extensions.txt (+55/-0) sphinx-docs/_build/html/_sources/leo.external.concurrent.futures.txt (+47/-0) sphinx-docs/_build/html/_sources/leo.external.concurrent.txt (+22/-0) sphinx-docs/_build/html/_sources/leo.external.txt (+86/-0) sphinx-docs/_build/html/_sources/leo.modes.txt (+1111/-0) sphinx-docs/_build/html/_sources/leo.plugins.pygeotag.txt (+15/-0) sphinx-docs/_build/html/_sources/leo.plugins.txt (+1006/-0) sphinx-docs/_build/html/_sources/leo.txt (+25/-0) sphinx-docs/_build/html/_static/basic.css (+540/-0) sphinx-docs/_build/html/_static/default.css (+256/-0) sphinx-docs/_build/html/_static/doctools.js (+235/-0) sphinx-docs/_build/html/_static/jquery.js (+4/-0) sphinx-docs/_build/html/_static/pygments.css (+62/-0) sphinx-docs/_build/html/_static/searchtools.js (+622/-0) sphinx-docs/_build/html/_static/sidebar.js (+159/-0) sphinx-docs/_build/html/_static/underscore.js (+31/-0) sphinx-docs/_build/html/_static/websupport.js (+808/-0) sphinx-docs/_build/html/genindex.html (+24126/-0) sphinx-docs/_build/html/index.html (+324/-0) sphinx-docs/_build/html/leo.core.html (+21087/-0) sphinx-docs/_build/html/leo.extensions.html (+1730/-0) sphinx-docs/_build/html/leo.external.concurrent.futures.html (+150/-0) sphinx-docs/_build/html/leo.external.concurrent.html (+150/-0) sphinx-docs/_build/html/leo.external.html (+1826/-0) sphinx-docs/_build/html/leo.html (+387/-0) sphinx-docs/_build/html/leo.modes.html (+672/-0) sphinx-docs/_build/html/leo.plugins.html (+10167/-0) sphinx-docs/_build/html/leo.plugins.pygeotag.html (+208/-0) sphinx-docs/_build/html/py-modindex.html (+739/-0) sphinx-docs/_build/html/search.html (+105/-0) sphinx-docs/_build/html/searchindex.js (+1/-0) sphinx-docs/conf.py (+316/-0) sphinx-docs/index.rst (+27/-0) sphinx-docs/leo.core.rst (+303/-0) sphinx-docs/leo.extensions.rst (+55/-0) sphinx-docs/leo.external.concurrent.futures.rst (+47/-0) sphinx-docs/leo.external.concurrent.rst (+22/-0) sphinx-docs/leo.external.rst (+86/-0) sphinx-docs/leo.plugins.pygeotag.rst (+15/-0) sphinx-docs/leo.plugins.rst (+1006/-0) sphinx-docs/leo.rst (+25/-0) sphinx-docs/make.bat (+246/-0) sphinx-docs/make.log (+562/-0) sphinx-docs/sphinxDocs.leo (+35/-0) |
To merge this branch: | bzr merge lp:~gatesphere/leo-editor/sphinx-docs |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jake Peck | Pending | ||
Review via email: mp+162366@code.launchpad.net |
Commit message
Description of the change
Adds support for ReadTheDocs autogenerated Sphinx-based API documentation. Does not touch the codebase, but rather puts all sphinx-related stuff in the root dir `sphinx-docs`.
To post a comment you must log in.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added directory 'sphinx-docs' |
2 | === added file 'sphinx-docs/Makefile' |
3 | --- sphinx-docs/Makefile 1970-01-01 00:00:00 +0000 |
4 | +++ sphinx-docs/Makefile 2013-05-03 14:47:26 +0000 |
5 | @@ -0,0 +1,181 @@ |
6 | +#@+leo-ver=5-thin |
7 | +#@+node:peckj.20130503092808.1691: * @file Makefile |
8 | +#@@language makefile |
9 | +# Makefile for Sphinx documentation |
10 | +# |
11 | + |
12 | +# You can set these variables from the command line. |
13 | +SPHINXOPTS = |
14 | +SPHINXBUILD = sphinx-build |
15 | +PAPER = |
16 | +BUILDDIR = _build |
17 | + |
18 | +# User-friendly check for sphinx-build |
19 | +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) |
20 | +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) |
21 | +endif |
22 | + |
23 | +# Internal variables. |
24 | +PAPEROPT_a4 = -D latex_paper_size=a4 |
25 | +PAPEROPT_letter = -D latex_paper_size=letter |
26 | +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . |
27 | +# the i18n builder cannot share the environment and doctrees with the others |
28 | +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . |
29 | + |
30 | +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext |
31 | + |
32 | +help: |
33 | + @echo "Please use \`make <target>' where <target> is one of" |
34 | + @echo " html to make standalone HTML files" |
35 | + @echo " dirhtml to make HTML files named index.html in directories" |
36 | + @echo " singlehtml to make a single large HTML file" |
37 | + @echo " pickle to make pickle files" |
38 | + @echo " json to make JSON files" |
39 | + @echo " htmlhelp to make HTML files and a HTML help project" |
40 | + @echo " qthelp to make HTML files and a qthelp project" |
41 | + @echo " devhelp to make HTML files and a Devhelp project" |
42 | + @echo " epub to make an epub" |
43 | + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" |
44 | + @echo " latexpdf to make LaTeX files and run them through pdflatex" |
45 | + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" |
46 | + @echo " text to make text files" |
47 | + @echo " man to make manual pages" |
48 | + @echo " texinfo to make Texinfo files" |
49 | + @echo " info to make Texinfo files and run them through makeinfo" |
50 | + @echo " gettext to make PO message catalogs" |
51 | + @echo " changes to make an overview of all changed/added/deprecated items" |
52 | + @echo " xml to make Docutils-native XML files" |
53 | + @echo " pseudoxml to make pseudoxml-XML files for display purposes" |
54 | + @echo " linkcheck to check all external links for integrity" |
55 | + @echo " doctest to run all doctests embedded in the documentation (if enabled)" |
56 | + |
57 | +clean: |
58 | + rm -rf $(BUILDDIR)/* |
59 | + |
60 | +html: |
61 | + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html |
62 | + @echo |
63 | + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." |
64 | + |
65 | +dirhtml: |
66 | + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml |
67 | + @echo |
68 | + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." |
69 | + |
70 | +singlehtml: |
71 | + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml |
72 | + @echo |
73 | + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." |
74 | + |
75 | +pickle: |
76 | + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle |
77 | + @echo |
78 | + @echo "Build finished; now you can process the pickle files." |
79 | + |
80 | +json: |
81 | + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json |
82 | + @echo |
83 | + @echo "Build finished; now you can process the JSON files." |
84 | + |
85 | +htmlhelp: |
86 | + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp |
87 | + @echo |
88 | + @echo "Build finished; now you can run HTML Help Workshop with the" \ |
89 | + ".hhp project file in $(BUILDDIR)/htmlhelp." |
90 | + |
91 | +qthelp: |
92 | + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp |
93 | + @echo |
94 | + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ |
95 | + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" |
96 | + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Leo.qhcp" |
97 | + @echo "To view the help file:" |
98 | + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Leo.qhc" |
99 | + |
100 | +devhelp: |
101 | + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp |
102 | + @echo |
103 | + @echo "Build finished." |
104 | + @echo "To view the help file:" |
105 | + @echo "# mkdir -p $$HOME/.local/share/devhelp/Leo" |
106 | + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Leo" |
107 | + @echo "# devhelp" |
108 | + |
109 | +epub: |
110 | + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub |
111 | + @echo |
112 | + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." |
113 | + |
114 | +latex: |
115 | + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
116 | + @echo |
117 | + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." |
118 | + @echo "Run \`make' in that directory to run these through (pdf)latex" \ |
119 | + "(use \`make latexpdf' here to do that automatically)." |
120 | + |
121 | +latexpdf: |
122 | + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
123 | + @echo "Running LaTeX files through pdflatex..." |
124 | + $(MAKE) -C $(BUILDDIR)/latex all-pdf |
125 | + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." |
126 | + |
127 | +latexpdfja: |
128 | + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex |
129 | + @echo "Running LaTeX files through platex and dvipdfmx..." |
130 | + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja |
131 | + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." |
132 | + |
133 | +text: |
134 | + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text |
135 | + @echo |
136 | + @echo "Build finished. The text files are in $(BUILDDIR)/text." |
137 | + |
138 | +man: |
139 | + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man |
140 | + @echo |
141 | + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." |
142 | + |
143 | +texinfo: |
144 | + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo |
145 | + @echo |
146 | + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." |
147 | + @echo "Run \`make' in that directory to run these through makeinfo" \ |
148 | + "(use \`make info' here to do that automatically)." |
149 | + |
150 | +info: |
151 | + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo |
152 | + @echo "Running Texinfo files through makeinfo..." |
153 | + make -C $(BUILDDIR)/texinfo info |
154 | + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." |
155 | + |
156 | +gettext: |
157 | + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale |
158 | + @echo |
159 | + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." |
160 | + |
161 | +changes: |
162 | + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes |
163 | + @echo |
164 | + @echo "The overview file is in $(BUILDDIR)/changes." |
165 | + |
166 | +linkcheck: |
167 | + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck |
168 | + @echo |
169 | + @echo "Link check complete; look for any errors in the above output " \ |
170 | + "or in $(BUILDDIR)/linkcheck/output.txt." |
171 | + |
172 | +doctest: |
173 | + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest |
174 | + @echo "Testing of doctests in the sources finished, look at the " \ |
175 | + "results in $(BUILDDIR)/doctest/output.txt." |
176 | + |
177 | +xml: |
178 | + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml |
179 | + @echo |
180 | + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." |
181 | + |
182 | +pseudoxml: |
183 | + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml |
184 | + @echo |
185 | + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." |
186 | +#@-leo |
187 | |
188 | === added directory 'sphinx-docs/_build' |
189 | === added directory 'sphinx-docs/_build/doctrees' |
190 | === added file 'sphinx-docs/_build/doctrees/environment.pickle' |
191 | Binary files sphinx-docs/_build/doctrees/environment.pickle 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/environment.pickle 2013-05-03 14:47:26 +0000 differ |
192 | === added file 'sphinx-docs/_build/doctrees/index.doctree' |
193 | Binary files sphinx-docs/_build/doctrees/index.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/index.doctree 2013-05-03 14:47:26 +0000 differ |
194 | === added file 'sphinx-docs/_build/doctrees/leo.core.doctree' |
195 | Binary files sphinx-docs/_build/doctrees/leo.core.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.core.doctree 2013-05-03 14:47:26 +0000 differ |
196 | === added file 'sphinx-docs/_build/doctrees/leo.doctree' |
197 | Binary files sphinx-docs/_build/doctrees/leo.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.doctree 2013-05-03 14:47:26 +0000 differ |
198 | === added file 'sphinx-docs/_build/doctrees/leo.extensions.doctree' |
199 | Binary files sphinx-docs/_build/doctrees/leo.extensions.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.extensions.doctree 2013-05-03 14:47:26 +0000 differ |
200 | === added file 'sphinx-docs/_build/doctrees/leo.external.concurrent.doctree' |
201 | Binary files sphinx-docs/_build/doctrees/leo.external.concurrent.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.external.concurrent.doctree 2013-05-03 14:47:26 +0000 differ |
202 | === added file 'sphinx-docs/_build/doctrees/leo.external.concurrent.futures.doctree' |
203 | Binary files sphinx-docs/_build/doctrees/leo.external.concurrent.futures.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.external.concurrent.futures.doctree 2013-05-03 14:47:26 +0000 differ |
204 | === added file 'sphinx-docs/_build/doctrees/leo.external.doctree' |
205 | Binary files sphinx-docs/_build/doctrees/leo.external.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.external.doctree 2013-05-03 14:47:26 +0000 differ |
206 | === added file 'sphinx-docs/_build/doctrees/leo.modes.doctree' |
207 | Binary files sphinx-docs/_build/doctrees/leo.modes.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.modes.doctree 2013-05-03 14:47:26 +0000 differ |
208 | === added file 'sphinx-docs/_build/doctrees/leo.plugins.doctree' |
209 | Binary files sphinx-docs/_build/doctrees/leo.plugins.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.plugins.doctree 2013-05-03 14:47:26 +0000 differ |
210 | === added file 'sphinx-docs/_build/doctrees/leo.plugins.pygeotag.doctree' |
211 | Binary files sphinx-docs/_build/doctrees/leo.plugins.pygeotag.doctree 1970-01-01 00:00:00 +0000 and sphinx-docs/_build/doctrees/leo.plugins.pygeotag.doctree 2013-05-03 14:47:26 +0000 differ |
212 | === added directory 'sphinx-docs/_build/html' |
213 | === added file 'sphinx-docs/_build/html/.buildinfo' |
214 | --- sphinx-docs/_build/html/.buildinfo 1970-01-01 00:00:00 +0000 |
215 | +++ sphinx-docs/_build/html/.buildinfo 2013-05-03 14:47:26 +0000 |
216 | @@ -0,0 +1,4 @@ |
217 | +# Sphinx build info version 1 |
218 | +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. |
219 | +config: 1659204ed049af35611a59d0e4ea13de |
220 | +tags: a205e9ed8462ae86fdd2f73488852ba9 |
221 | |
222 | === added directory 'sphinx-docs/_build/html/_modules' |
223 | === added file 'sphinx-docs/_build/html/_modules/index.html' |
224 | --- sphinx-docs/_build/html/_modules/index.html 1970-01-01 00:00:00 +0000 |
225 | +++ sphinx-docs/_build/html/_modules/index.html 2013-05-03 14:47:26 +0000 |
226 | @@ -0,0 +1,206 @@ |
227 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
228 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
229 | + |
230 | + |
231 | +<html xmlns="http://www.w3.org/1999/xhtml"> |
232 | + <head> |
233 | + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
234 | + |
235 | + <title>Overview: module code — Leo API 4.11dev documentation</title> |
236 | + |
237 | + <link rel="stylesheet" href="../_static/default.css" type="text/css" /> |
238 | + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> |
239 | + |
240 | + <script type="text/javascript"> |
241 | + var DOCUMENTATION_OPTIONS = { |
242 | + URL_ROOT: '../', |
243 | + VERSION: '4.11dev', |
244 | + COLLAPSE_INDEX: false, |
245 | + FILE_SUFFIX: '.html', |
246 | + HAS_SOURCE: true |
247 | + }; |
248 | + </script> |
249 | + <script type="text/javascript" src="../_static/jquery.js"></script> |
250 | + <script type="text/javascript" src="../_static/underscore.js"></script> |
251 | + <script type="text/javascript" src="../_static/doctools.js"></script> |
252 | + <link rel="top" title="Leo API 4.11dev documentation" href="../index.html" /> |
253 | + </head> |
254 | + <body> |
255 | + <div class="related"> |
256 | + <h3>Navigation</h3> |
257 | + <ul> |
258 | + <li class="right" style="margin-right: 10px"> |
259 | + <a href="../genindex.html" title="General Index" |
260 | + accesskey="I">index</a></li> |
261 | + <li class="right" > |
262 | + <a href="../py-modindex.html" title="Python Module Index" |
263 | + >modules</a> |</li> |
264 | + <li><a href="../index.html">Leo API 4.11dev documentation</a> »</li> |
265 | + </ul> |
266 | + </div> |
267 | + |
268 | + <div class="document"> |
269 | + <div class="documentwrapper"> |
270 | + <div class="bodywrapper"> |
271 | + <div class="body"> |
272 | + |
273 | + <h1>All modules for which code is available</h1> |
274 | +<ul><li><a href="leo/__init__.html">leo.__init__</a></li> |
275 | +<li><a href="leo/core/leoApp.html">leo.core.leoApp</a></li> |
276 | +<li><a href="leo/core/leoAtFile.html">leo.core.leoAtFile</a></li> |
277 | +<li><a href="leo/core/leoBridge.html">leo.core.leoBridge</a></li> |
278 | +<li><a href="leo/core/leoBridgeTest.html">leo.core.leoBridgeTest</a></li> |
279 | +<li><a href="leo/core/leoCache.html">leo.core.leoCache</a></li> |
280 | +<li><a href="leo/core/leoChapters.html">leo.core.leoChapters</a></li> |
281 | +<li><a href="leo/core/leoColor.html">leo.core.leoColor</a></li> |
282 | +<li><a href="leo/core/leoCommands.html">leo.core.leoCommands</a></li> |
283 | +<li><a href="leo/core/leoCompare.html">leo.core.leoCompare</a></li> |
284 | +<li><a href="leo/core/leoConfig.html">leo.core.leoConfig</a></li> |
285 | +<li><a href="leo/core/leoDebugger.html">leo.core.leoDebugger</a></li> |
286 | +<li><a href="leo/core/leoDynamicTest.html">leo.core.leoDynamicTest</a></li> |
287 | +<li><a href="leo/core/leoFileCommands.html">leo.core.leoFileCommands</a></li> |
288 | +<li><a href="leo/core/leoFind.html">leo.core.leoFind</a></li> |
289 | +<li><a href="leo/core/leoFrame.html">leo.core.leoFrame</a></li> |
290 | +<li><a href="leo/core/leoGlobals.html">leo.core.leoGlobals</a></li> |
291 | +<li><a href="leo/core/leoGui.html">leo.core.leoGui</a></li> |
292 | +<li><a href="leo/core/leoIPython.html">leo.core.leoIPython</a></li> |
293 | +<li><a href="leo/core/leoInspect.html">leo.core.leoInspect</a></li> |
294 | +<li><a href="leo/core/leoKeys.html">leo.core.leoKeys</a></li> |
295 | +<li><a href="leo/core/leoMenu.html">leo.core.leoMenu</a></li> |
296 | +<li><a href="leo/core/leoNodes.html">leo.core.leoNodes</a></li> |
297 | +<li><a href="leo/core/leoPlugins.html">leo.core.leoPlugins</a></li> |
298 | +<li><a href="leo/core/leoPymacs.html">leo.core.leoPymacs</a></li> |
299 | +<li><a href="leo/core/leoRst.html">leo.core.leoRst</a></li> |
300 | +<li><a href="leo/core/leoShadow.html">leo.core.leoShadow</a></li> |
301 | +<li><a href="leo/core/leoTangle.html">leo.core.leoTangle</a></li> |
302 | +<li><a href="leo/core/leoTest.html">leo.core.leoTest</a></li> |
303 | +<li><a href="leo/core/leoUndo.html">leo.core.leoUndo</a></li> |
304 | +<li><a href="leo/core/runLeo.html">leo.core.runLeo</a></li> |
305 | +<li><a href="leo/extensions/asciidoc.html">leo.extensions.asciidoc</a></li> |
306 | +<li><a href="leo/extensions/colors.html">leo.extensions.colors</a></li> |
307 | +<li><a href="leo/extensions/patch_11_01.html">leo.extensions.patch_11_01</a></li> |
308 | +<li><a href="leo/external/codewise.html">leo.external.codewise</a></li> |
309 | +<li><a href="leo/external/edb.html">leo.external.edb</a></li> |
310 | +<li><a href="leo/external/leosax.html">leo.external.leosax</a></li> |
311 | +<li><a href="leo/external/stringlist.html">leo.external.stringlist</a></li> |
312 | +<li><a href="leo/plugins/FileActions.html">leo.plugins.FileActions</a></li> |
313 | +<li><a href="leo/plugins/add_directives.html">leo.plugins.add_directives</a></li> |
314 | +<li><a href="leo/plugins/at_folder.html">leo.plugins.at_folder</a></li> |
315 | +<li><a href="leo/plugins/at_produce.html">leo.plugins.at_produce</a></li> |
316 | +<li><a href="leo/plugins/at_view.html">leo.plugins.at_view</a></li> |
317 | +<li><a href="leo/plugins/bibtex.html">leo.plugins.bibtex</a></li> |
318 | +<li><a href="leo/plugins/chapter_hoist.html">leo.plugins.chapter_hoist</a></li> |
319 | +<li><a href="leo/plugins/codewisecompleter.html">leo.plugins.codewisecompleter</a></li> |
320 | +<li><a href="leo/plugins/colorize_headlines.html">leo.plugins.colorize_headlines</a></li> |
321 | +<li><a href="leo/plugins/cursesGui.html">leo.plugins.cursesGui</a></li> |
322 | +<li><a href="leo/plugins/datenodes.html">leo.plugins.datenodes</a></li> |
323 | +<li><a href="leo/plugins/debugger_pudb.html">leo.plugins.debugger_pudb</a></li> |
324 | +<li><a href="leo/plugins/dtest.html">leo.plugins.dtest</a></li> |
325 | +<li><a href="leo/plugins/dump_globals.html">leo.plugins.dump_globals</a></li> |
326 | +<li><a href="leo/plugins/empty_leo_file.html">leo.plugins.empty_leo_file</a></li> |
327 | +<li><a href="leo/plugins/enable_gc.html">leo.plugins.enable_gc</a></li> |
328 | +<li><a href="leo/plugins/expfolder.html">leo.plugins.expfolder</a></li> |
329 | +<li><a href="leo/plugins/geotag.html">leo.plugins.geotag</a></li> |
330 | +<li><a href="leo/plugins/gitarchive.html">leo.plugins.gitarchive</a></li> |
331 | +<li><a href="leo/plugins/import_cisco_config.html">leo.plugins.import_cisco_config</a></li> |
332 | +<li><a href="leo/plugins/initinclass.html">leo.plugins.initinclass</a></li> |
333 | +<li><a href="leo/plugins/ipython.html">leo.plugins.ipython</a></li> |
334 | +<li><a href="leo/plugins/jinjarender.html">leo.plugins.jinjarender</a></li> |
335 | +<li><a href="leo/plugins/leoOPML.html">leo.plugins.leoOPML</a></li> |
336 | +<li><a href="leo/plugins/leo_interface.html">leo.plugins.leo_interface</a></li> |
337 | +<li><a href="leo/plugins/leo_to_html.html">leo.plugins.leo_to_html</a></li> |
338 | +<li><a href="leo/plugins/leo_to_rtf.html">leo.plugins.leo_to_rtf</a></li> |
339 | +<li><a href="leo/plugins/leocursor.html">leo.plugins.leocursor</a></li> |
340 | +<li><a href="leo/plugins/leofeeds.html">leo.plugins.leofeeds</a></li> |
341 | +<li><a href="leo/plugins/leomail.html">leo.plugins.leomail</a></li> |
342 | +<li><a href="leo/plugins/lineNumbers.html">leo.plugins.lineNumbers</a></li> |
343 | +<li><a href="leo/plugins/macros.html">leo.plugins.macros</a></li> |
344 | +<li><a href="leo/plugins/maximizeNewWindows.html">leo.plugins.maximizeNewWindows</a></li> |
345 | +<li><a href="leo/plugins/mime.html">leo.plugins.mime</a></li> |
346 | +<li><a href="leo/plugins/mnplugins.html">leo.plugins.mnplugins</a></li> |
347 | +<li><a href="leo/plugins/mod_autosave.html">leo.plugins.mod_autosave</a></li> |
348 | +<li><a href="leo/plugins/mod_framesize.html">leo.plugins.mod_framesize</a></li> |
349 | +<li><a href="leo/plugins/mod_http.html">leo.plugins.mod_http</a></li> |
350 | +<li><a href="leo/plugins/mod_leo2ascd.html">leo.plugins.mod_leo2ascd</a></li> |
351 | +<li><a href="leo/plugins/mod_read_dir_outline.html">leo.plugins.mod_read_dir_outline</a></li> |
352 | +<li><a href="leo/plugins/mod_scripting.html">leo.plugins.mod_scripting</a></li> |
353 | +<li><a href="leo/plugins/mod_speedups.html">leo.plugins.mod_speedups</a></li> |
354 | +<li><a href="leo/plugins/mod_tempfname.html">leo.plugins.mod_tempfname</a></li> |
355 | +<li><a href="leo/plugins/mod_timestamp.html">leo.plugins.mod_timestamp</a></li> |
356 | +<li><a href="leo/plugins/multifile.html">leo.plugins.multifile</a></li> |
357 | +<li><a href="leo/plugins/niceNosent.html">leo.plugins.niceNosent</a></li> |
358 | +<li><a href="leo/plugins/nodeActions.html">leo.plugins.nodeActions</a></li> |
359 | +<li><a href="leo/plugins/open_shell.html">leo.plugins.open_shell</a></li> |
360 | +<li><a href="leo/plugins/outline_export.html">leo.plugins.outline_export</a></li> |
361 | +<li><a href="leo/plugins/paste_as_headlines.html">leo.plugins.paste_as_headlines</a></li> |
362 | +<li><a href="leo/plugins/pluginsTest.html">leo.plugins.pluginsTest</a></li> |
363 | +<li><a href="leo/plugins/plugins_menu.html">leo.plugins.plugins_menu</a></li> |
364 | +<li><a href="leo/plugins/pygeotag/pygeotag.html">leo.plugins.pygeotag.pygeotag</a></li> |
365 | +<li><a href="leo/plugins/qtframecommands.html">leo.plugins.qtframecommands</a></li> |
366 | +<li><a href="leo/plugins/quit_leo.html">leo.plugins.quit_leo</a></li> |
367 | +<li><a href="leo/plugins/read_only_nodes.html">leo.plugins.read_only_nodes</a></li> |
368 | +<li><a href="leo/plugins/redirect_to_log.html">leo.plugins.redirect_to_log</a></li> |
369 | +<li><a href="leo/plugins/rst3.html">leo.plugins.rst3</a></li> |
370 | +<li><a href="leo/plugins/run_nodes.html">leo.plugins.run_nodes</a></li> |
371 | +<li><a href="leo/plugins/screenshots.html">leo.plugins.screenshots</a></li> |
372 | +<li><a href="leo/plugins/script_io_to_body.html">leo.plugins.script_io_to_body</a></li> |
373 | +<li><a href="leo/plugins/scripts_menu.html">leo.plugins.scripts_menu</a></li> |
374 | +<li><a href="leo/plugins/setHomeDirectory.html">leo.plugins.setHomeDirectory</a></li> |
375 | +<li><a href="leo/plugins/slideshow.html">leo.plugins.slideshow</a></li> |
376 | +<li><a href="leo/plugins/startfile.html">leo.plugins.startfile</a></li> |
377 | +<li><a href="leo/plugins/testRegisterCommand.html">leo.plugins.testRegisterCommand</a></li> |
378 | +<li><a href="leo/plugins/textnode.html">leo.plugins.textnode</a></li> |
379 | +<li><a href="leo/plugins/tkGui.html">leo.plugins.tkGui</a></li> |
380 | +<li><a href="leo/plugins/tomboy_import.html">leo.plugins.tomboy_import</a></li> |
381 | +<li><a href="leo/plugins/trace_gc_plugin.html">leo.plugins.trace_gc_plugin</a></li> |
382 | +<li><a href="leo/plugins/trace_keys.html">leo.plugins.trace_keys</a></li> |
383 | +<li><a href="leo/plugins/trace_tags.html">leo.plugins.trace_tags</a></li> |
384 | +<li><a href="leo/plugins/valuespace.html">leo.plugins.valuespace</a></li> |
385 | +<li><a href="leo/plugins/vim.html">leo.plugins.vim</a></li> |
386 | +<li><a href="leo/plugins/word_count.html">leo.plugins.word_count</a></li> |
387 | +<li><a href="leo/plugins/word_export.html">leo.plugins.word_export</a></li> |
388 | +<li><a href="leo/plugins/xemacs.html">leo.plugins.xemacs</a></li> |
389 | +<li><a href="leo/plugins/xsltWithNodes.html">leo.plugins.xsltWithNodes</a></li> |
390 | +<li><a href="leo/plugins/zenity_file_dialogs.html">leo.plugins.zenity_file_dialogs</a></li> |
391 | +</ul> |
392 | + |
393 | + </div> |
394 | + </div> |
395 | + </div> |
396 | + <div class="sphinxsidebar"> |
397 | + <div class="sphinxsidebarwrapper"> |
398 | +<div id="searchbox" style="display: none"> |
399 | + <h3>Quick search</h3> |
400 | + <form class="search" action="../search.html" method="get"> |
401 | + <input type="text" name="q" /> |
402 | + <input type="submit" value="Go" /> |
403 | + <input type="hidden" name="check_keywords" value="yes" /> |
404 | + <input type="hidden" name="area" value="default" /> |
405 | + </form> |
406 | + <p class="searchtip" style="font-size: 90%"> |
407 | + Enter search terms or a module, class or function name. |
408 | + </p> |
409 | +</div> |
410 | +<script type="text/javascript">$('#searchbox').show(0);</script> |
411 | + </div> |
412 | + </div> |
413 | + <div class="clearer"></div> |
414 | + </div> |
415 | + <div class="related"> |
416 | + <h3>Navigation</h3> |
417 | + <ul> |
418 | + <li class="right" style="margin-right: 10px"> |
419 | + <a href="../genindex.html" title="General Index" |
420 | + >index</a></li> |
421 | + <li class="right" > |
422 | + <a href="../py-modindex.html" title="Python Module Index" |
423 | + >modules</a> |</li> |
424 | + <li><a href="../index.html">Leo API 4.11dev documentation</a> »</li> |
425 | + </ul> |
426 | + </div> |
427 | + <div class="footer"> |
428 | + © Copyright 2013, Ed K. Ream. |
429 | + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. |
430 | + </div> |
431 | + </body> |
432 | +</html> |
433 | \ No newline at end of file |
434 | |
435 | === added directory 'sphinx-docs/_build/html/_modules/leo' |
436 | === added file 'sphinx-docs/_build/html/_modules/leo/__init__.html' |
437 | --- sphinx-docs/_build/html/_modules/leo/__init__.html 1970-01-01 00:00:00 +0000 |
438 | +++ sphinx-docs/_build/html/_modules/leo/__init__.html 2013-05-03 14:47:26 +0000 |
439 | @@ -0,0 +1,104 @@ |
440 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
441 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
442 | + |
443 | + |
444 | +<html xmlns="http://www.w3.org/1999/xhtml"> |
445 | + <head> |
446 | + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
447 | + |
448 | + <title>leo.__init__ — Leo API 4.11dev documentation</title> |
449 | + |
450 | + <link rel="stylesheet" href="../../_static/default.css" type="text/css" /> |
451 | + <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> |
452 | + |
453 | + <script type="text/javascript"> |
454 | + var DOCUMENTATION_OPTIONS = { |
455 | + URL_ROOT: '../../', |
456 | + VERSION: '4.11dev', |
457 | + COLLAPSE_INDEX: false, |
458 | + FILE_SUFFIX: '.html', |
459 | + HAS_SOURCE: true |
460 | + }; |
461 | + </script> |
462 | + <script type="text/javascript" src="../../_static/jquery.js"></script> |
463 | + <script type="text/javascript" src="../../_static/underscore.js"></script> |
464 | + <script type="text/javascript" src="../../_static/doctools.js"></script> |
465 | + <link rel="top" title="Leo API 4.11dev documentation" href="../../index.html" /> |
466 | + <link rel="up" title="Module code" href="../index.html" /> |
467 | + </head> |
468 | + <body> |
469 | + <div class="related"> |
470 | + <h3>Navigation</h3> |
471 | + <ul> |
472 | + <li class="right" style="margin-right: 10px"> |
473 | + <a href="../../genindex.html" title="General Index" |
474 | + accesskey="I">index</a></li> |
475 | + <li class="right" > |
476 | + <a href="../../py-modindex.html" title="Python Module Index" |
477 | + >modules</a> |</li> |
478 | + <li><a href="../../index.html">Leo API 4.11dev documentation</a> »</li> |
479 | + <li><a href="../index.html" accesskey="U">Module code</a> »</li> |
480 | + </ul> |
481 | + </div> |
482 | + |
483 | + <div class="document"> |
484 | + <div class="documentwrapper"> |
485 | + <div class="bodywrapper"> |
486 | + <div class="body"> |
487 | + |
488 | + <h1>Source code for leo.__init__</h1><pre> |
489 | +# This file makes the leo directory a package. |
490 | + |
491 | +# The function allows the following code to work:: |
492 | +# |
493 | +# import leo |
494 | +# leo.run() |
495 | + |
496 | +<div class="viewcode-block" id="run"><a class="viewcode-back" href="../../leo.html#leo.__init__.run">[docs]</a>def run(*args,**keys): |
497 | + import pdb ; pdb = pdb.set_trace |
498 | + import leo.core.runLeo as runLeo |
499 | + runLeo.run(*args,**keys) |
500 | +</div> |
501 | +</pre> |
502 | + |
503 | + </div> |
504 | + </div> |
505 | + </div> |
506 | + <div class="sphinxsidebar"> |
507 | + <div class="sphinxsidebarwrapper"> |
508 | +<div id="searchbox" style="display: none"> |
509 | + <h3>Quick search</h3> |
510 | + <form class="search" action="../../search.html" method="get"> |
511 | + <input type="text" name="q" /> |
512 | + <input type="submit" value="Go" /> |
513 | + <input type="hidden" name="check_keywords" value="yes" /> |
514 | + <input type="hidden" name="area" value="default" /> |
515 | + </form> |
516 | + <p class="searchtip" style="font-size: 90%"> |
517 | + Enter search terms or a module, class or function name. |
518 | + </p> |
519 | +</div> |
520 | +<script type="text/javascript">$('#searchbox').show(0);</script> |
521 | + </div> |
522 | + </div> |
523 | + <div class="clearer"></div> |
524 | + </div> |
525 | + <div class="related"> |
526 | + <h3>Navigation</h3> |
527 | + <ul> |
528 | + <li class="right" style="margin-right: 10px"> |
529 | + <a href="../../genindex.html" title="General Index" |
530 | + >index</a></li> |
531 | + <li class="right" > |
532 | + <a href="../../py-modindex.html" title="Python Module Index" |
533 | + >modules</a> |</li> |
534 | + <li><a href="../../index.html">Leo API 4.11dev documentation</a> »</li> |
535 | + <li><a href="../index.html" >Module code</a> »</li> |
536 | + </ul> |
537 | + </div> |
538 | + <div class="footer"> |
539 | + © Copyright 2013, Ed K. Ream. |
540 | + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. |
541 | + </div> |
542 | + </body> |
543 | +</html> |
544 | \ No newline at end of file |
545 | |
546 | === added directory 'sphinx-docs/_build/html/_modules/leo/core' |
547 | === added file 'sphinx-docs/_build/html/_modules/leo/core/leoApp.html' |
548 | --- sphinx-docs/_build/html/_modules/leo/core/leoApp.html 1970-01-01 00:00:00 +0000 |
549 | +++ sphinx-docs/_build/html/_modules/leo/core/leoApp.html 2013-05-03 14:47:26 +0000 |
550 | @@ -0,0 +1,3371 @@ |
551 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
552 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
553 | + |
554 | + |
555 | +<html xmlns="http://www.w3.org/1999/xhtml"> |
556 | + <head> |
557 | + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
558 | + |
559 | + <title>leo.core.leoApp — Leo API 4.11dev documentation</title> |
560 | + |
561 | + <link rel="stylesheet" href="../../../_static/default.css" type="text/css" /> |
562 | + <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> |
563 | + |
564 | + <script type="text/javascript"> |
565 | + var DOCUMENTATION_OPTIONS = { |
566 | + URL_ROOT: '../../../', |
567 | + VERSION: '4.11dev', |
568 | + COLLAPSE_INDEX: false, |
569 | + FILE_SUFFIX: '.html', |
570 | + HAS_SOURCE: true |
571 | + }; |
572 | + </script> |
573 | + <script type="text/javascript" src="../../../_static/jquery.js"></script> |
574 | + <script type="text/javascript" src="../../../_static/underscore.js"></script> |
575 | + <script type="text/javascript" src="../../../_static/doctools.js"></script> |
576 | + <link rel="top" title="Leo API 4.11dev documentation" href="../../../index.html" /> |
577 | + <link rel="up" title="Module code" href="../../index.html" /> |
578 | + </head> |
579 | + <body> |
580 | + <div class="related"> |
581 | + <h3>Navigation</h3> |
582 | + <ul> |
583 | + <li class="right" style="margin-right: 10px"> |
584 | + <a href="../../../genindex.html" title="General Index" |
585 | + accesskey="I">index</a></li> |
586 | + <li class="right" > |
587 | + <a href="../../../py-modindex.html" title="Python Module Index" |
588 | + >modules</a> |</li> |
589 | + <li><a href="../../../index.html">Leo API 4.11dev documentation</a> »</li> |
590 | + <li><a href="../../index.html" accesskey="U">Module code</a> »</li> |
591 | + </ul> |
592 | + </div> |
593 | + |
594 | + <div class="document"> |
595 | + <div class="documentwrapper"> |
596 | + <div class="bodywrapper"> |
597 | + <div class="body"> |
598 | + |
599 | + <h1>Source code for leo.core.leoApp</h1><div class="highlight"><pre> |
600 | +<span class="c"># -*- coding: utf-8 -*-</span> |
601 | +<span class="c">#@+leo-ver=5-thin</span> |
602 | +<span class="c">#@+node:ekr.20031218072017.2608: * @file leoApp.py</span> |
603 | +<span class="c">#@@first</span> |
604 | + |
605 | +<span class="c">#@@language python</span> |
606 | +<span class="c">#@@tabwidth -4</span> |
607 | +<span class="c">#@@pagewidth 60</span> |
608 | + |
609 | +<span class="c">#@+<< imports >></span> |
610 | +<span class="c">#@+node:ekr.20120219194520.10463: ** << imports >> (leoApp)</span> |
611 | +<span class="kn">import</span> <span class="nn">leo.core.leoGlobals</span> <span class="kn">as</span> <span class="nn">g</span> |
612 | + |
613 | +<span class="kn">import</span> <span class="nn">os</span> |
614 | +<span class="kn">import</span> <span class="nn">optparse</span> |
615 | +<span class="kn">import</span> <span class="nn">string</span> |
616 | +<span class="kn">import</span> <span class="nn">sys</span> |
617 | +<span class="kn">import</span> <span class="nn">traceback</span> |
618 | +<span class="kn">import</span> <span class="nn">zipfile</span> |
619 | + |
620 | +<span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> |
621 | + <span class="kn">import</span> <span class="nn">io</span> |
622 | + <span class="n">StringIO</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">StringIO</span> |
623 | +<span class="k">else</span><span class="p">:</span> |
624 | + <span class="kn">import</span> <span class="nn">cStringIO</span> |
625 | + <span class="n">StringIO</span> <span class="o">=</span> <span class="n">cStringIO</span><span class="o">.</span><span class="n">StringIO</span> |
626 | +<span class="c">#@-<< imports >></span> |
627 | + |
628 | +<span class="c">#@+others</span> |
629 | +<span class="c">#@+node:ekr.20120209051836.10241: ** class LeoApp</span> |
630 | +<div class="viewcode-block" id="LeoApp"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp">[docs]</a><span class="k">class</span> <span class="nc">LeoApp</span><span class="p">:</span> |
631 | + |
632 | + <span class="sd">"""A class representing the Leo application itself.</span> |
633 | + |
634 | +<span class="sd"> Ivars of this class are Leo's global variables."""</span> |
635 | + |
636 | + <span class="c">#@+others</span> |
637 | + <span class="c">#@+node:ekr.20031218072017.1416: *3* app.__init__</span> |
638 | + <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
639 | + |
640 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
641 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'leoApp.__init__'</span><span class="p">)</span> |
642 | + |
643 | + <span class="c"># These ivars are Leo's global vars.</span> |
644 | + <span class="c"># leoGlobals.py contains global switches to be set by hand.</span> |
645 | + |
646 | + <span class="c"># Command-line arguments...</span> |
647 | + <span class="bp">self</span><span class="o">.</span><span class="n">batchMode</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: run in batch mode.</span> |
648 | + <span class="bp">self</span><span class="o">.</span><span class="n">enablePlugins</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># True: run start1 hook to load plugins. --no-plugins</span> |
649 | + <span class="bp">self</span><span class="o">.</span><span class="n">gui</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The gui class.</span> |
650 | + <span class="bp">self</span><span class="o">.</span><span class="n">guiArgName</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The gui name given in --gui option.</span> |
651 | + <span class="bp">self</span><span class="o">.</span><span class="n">qt_use_tabs</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: allow tabbed main window.</span> |
652 | + <span class="bp">self</span><span class="o">.</span><span class="n">restore_session</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: restore session on startup.</span> |
653 | + <span class="bp">self</span><span class="o">.</span><span class="n">save_session</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: save session on close.</span> |
654 | + <span class="bp">self</span><span class="o">.</span><span class="n">silentMode</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: no signon.</span> |
655 | + <span class="bp">self</span><span class="o">.</span><span class="n">start_fullscreen</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># For qtGui plugin.</span> |
656 | + <span class="bp">self</span><span class="o">.</span><span class="n">start_maximized</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># For qtGui plugin.</span> |
657 | + <span class="bp">self</span><span class="o">.</span><span class="n">start_minimized</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># For qtGui plugin.</span> |
658 | + <span class="bp">self</span><span class="o">.</span><span class="n">translateToUpperCase</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># Never set to True.</span> |
659 | + <span class="bp">self</span><span class="o">.</span><span class="n">useIpython</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: add support for IPython.</span> |
660 | + <span class="bp">self</span><span class="o">.</span><span class="n">use_psyco</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: use psyco optimization.</span> |
661 | + <span class="bp">self</span><span class="o">.</span><span class="n">use_splash_screen</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># True: put up a splash screen.</span> |
662 | + |
663 | + <span class="c"># Debugging & statistics...</span> |
664 | + <span class="bp">self</span><span class="o">.</span><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span> <span class="c"># General purpose debugging count.</span> |
665 | + <span class="bp">self</span><span class="o">.</span><span class="n">debug</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># Enable debugging. (Can be slow.)</span> |
666 | + <span class="bp">self</span><span class="o">.</span><span class="n">debugSwitch</span> <span class="o">=</span> <span class="mi">0</span> <span class="c"># 0: Brief; 1: Full.</span> |
667 | + <span class="bp">self</span><span class="o">.</span><span class="n">disable_redraw</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: disable all redraws.</span> |
668 | + <span class="bp">self</span><span class="o">.</span><span class="n">disableSave</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># May be set by plugins.</span> |
669 | + <span class="bp">self</span><span class="o">.</span><span class="n">positions</span> <span class="o">=</span> <span class="mi">0</span> <span class="c"># The number of positions generated.</span> |
670 | + <span class="bp">self</span><span class="o">.</span><span class="n">scanErrors</span> <span class="o">=</span> <span class="mi">0</span> <span class="c"># The number of errors seen by g.scanError.</span> |
671 | + <span class="bp">self</span><span class="o">.</span><span class="n">statsDict</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># dict used by g.stat, g.clear_stats, g.print_stats.</span> |
672 | + |
673 | + <span class="c"># Error messages...</span> |
674 | + <span class="bp">self</span><span class="o">.</span><span class="n">atPathInBodyWarning</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Set by get_directives_dict.</span> |
675 | + <span class="bp">self</span><span class="o">.</span><span class="n">menuWarningsGiven</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: supress warnings in menu code.</span> |
676 | + <span class="bp">self</span><span class="o">.</span><span class="n">unicodeErrorGiven</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># True: suppres unicode tracebacks.</span> |
677 | + |
678 | + <span class="c"># Global directories...</span> |
679 | + <span class="bp">self</span><span class="o">.</span><span class="n">extensionsDir</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The leo/extensions directory</span> |
680 | + <span class="bp">self</span><span class="o">.</span><span class="n">globalConfigDir</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># leo/config directory</span> |
681 | + <span class="bp">self</span><span class="o">.</span><span class="n">globalOpenDir</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The directory last used to open a file.</span> |
682 | + <span class="bp">self</span><span class="o">.</span><span class="n">homeDir</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The user's home directory.</span> |
683 | + <span class="bp">self</span><span class="o">.</span><span class="n">homeLeoDir</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The user's home/.leo directory.</span> |
684 | + <span class="bp">self</span><span class="o">.</span><span class="n">loadDir</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The leo/core directory.</span> |
685 | + <span class="bp">self</span><span class="o">.</span><span class="n">machineDir</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The machine-specific directory.</span> |
686 | + |
687 | + <span class="c"># Global data...</span> |
688 | + <span class="bp">self</span><span class="o">.</span><span class="n">globalKillBuffer</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># The global kill buffer.</span> |
689 | + <span class="bp">self</span><span class="o">.</span><span class="n">globalRegisters</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># The global register list.</span> |
690 | + <span class="bp">self</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The id part of gnx's.</span> |
691 | + <span class="bp">self</span><span class="o">.</span><span class="n">lossage</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># List of last 100 keystrokes.</span> |
692 | + <span class="bp">self</span><span class="o">.</span><span class="n">numberOfUntitledWindows</span><span class="o">=</span><span class="mi">0</span> <span class="c"># Number of opened untitled windows.</span> |
693 | + <span class="bp">self</span><span class="o">.</span><span class="n">windowList</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># Global list of all frames.</span> |
694 | + <span class="bp">self</span><span class="o">.</span><span class="n">realMenuNameDict</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># Translations of menu names.</span> |
695 | + |
696 | + <span class="c"># Global controller/manager objects...</span> |
697 | + <span class="bp">self</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The singleton leoConfig instance.</span> |
698 | + <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The singleton leoCacher instance.</span> |
699 | + <span class="bp">self</span><span class="o">.</span><span class="n">loadManager</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The singleton LoadManager instance.</span> |
700 | + <span class="c"># self.logManager = None # The singleton LogManager instance.</span> |
701 | + <span class="c"># self.openWithManager = None # The singleton OpenWithManager instance.</span> |
702 | + <span class="bp">self</span><span class="o">.</span><span class="n">nodeIndices</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The singleton nodeIndices instance.</span> |
703 | + <span class="bp">self</span><span class="o">.</span><span class="n">pluginsController</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The singleton PluginsManager instance.</span> |
704 | + <span class="bp">self</span><span class="o">.</span><span class="n">sessionManager</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The singleton SessionManager instance.</span> |
705 | + |
706 | + <span class="c"># Global status vars...</span> |
707 | + |
708 | + <span class="k">if</span> <span class="mi">1</span><span class="p">:</span> <span class="c">#### To be moved to the Commands class...</span> |
709 | + <span class="bp">self</span><span class="o">.</span><span class="n">commandName</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The name of the command being executed.</span> |
710 | + <span class="bp">self</span><span class="o">.</span><span class="n">commandInterruptFlag</span><span class="o">=</span><span class="bp">False</span> <span class="c"># True: command within a command.</span> |
711 | + |
712 | + <span class="bp">self</span><span class="o">.</span><span class="n">dragging</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: dragging.</span> |
713 | + <span class="bp">self</span><span class="o">.</span><span class="n">inBridge</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: running from leoBridge module.</span> |
714 | + <span class="bp">self</span><span class="o">.</span><span class="n">inScript</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: executing a script.</span> |
715 | + <span class="bp">self</span><span class="o">.</span><span class="n">initing</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># True: we are initiing the app.</span> |
716 | + <span class="bp">self</span><span class="o">.</span><span class="n">killed</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: we are about to destroy the root window.</span> |
717 | + <span class="bp">self</span><span class="o">.</span><span class="n">preReadFlag</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: we are pre-reading a settings file.</span> |
718 | + <span class="bp">self</span><span class="o">.</span><span class="n">quitting</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: quitting. Locks out some events.</span> |
719 | + <span class="bp">self</span><span class="o">.</span><span class="n">reverting</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: executing the revert command.</span> |
720 | + |
721 | + <span class="c">#### To be moved to the LogManager.</span> |
722 | + |
723 | + <span class="c"># The global log...</span> |
724 | + <span class="bp">self</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The LeoFrame containing the present log.</span> |
725 | + <span class="bp">self</span><span class="o">.</span><span class="n">logInited</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># False: all log message go to logWaiting list.</span> |
726 | + <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: no changes to log are allowed.</span> |
727 | + <span class="bp">self</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># List of messages waiting to go to a log.</span> |
728 | + <span class="bp">self</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># Queue of messages to be sent to the printer.</span> |
729 | + <span class="bp">self</span><span class="o">.</span><span class="n">signon</span> <span class="o">=</span> <span class="s">''</span> |
730 | + <span class="bp">self</span><span class="o">.</span><span class="n">signon2</span> <span class="o">=</span> <span class="s">''</span> |
731 | + <span class="bp">self</span><span class="o">.</span><span class="n">signon_printed</span> <span class="o">=</span> <span class="bp">False</span> |
732 | + |
733 | + <span class="c"># Global types.</span> |
734 | + <span class="kn">import</span> <span class="nn">leo.core.leoFrame</span> <span class="kn">as</span> <span class="nn">leoFrame</span> |
735 | + <span class="kn">import</span> <span class="nn">leo.core.leoGui</span> <span class="kn">as</span> <span class="nn">leoGui</span> |
736 | + <span class="bp">self</span><span class="o">.</span><span class="n">nullGui</span> <span class="o">=</span> <span class="n">leoGui</span><span class="o">.</span><span class="n">nullGui</span><span class="p">()</span> |
737 | + <span class="bp">self</span><span class="o">.</span><span class="n">nullLog</span> <span class="o">=</span> <span class="n">leoFrame</span><span class="o">.</span><span class="n">nullLog</span><span class="p">()</span> |
738 | + |
739 | + <span class="c">#### To be moved to OpenWithManager.</span> |
740 | + |
741 | + <span class="c"># Open with data...</span> |
742 | + <span class="bp">self</span><span class="o">.</span><span class="n">hasOpenWithMenu</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: open with plugin has been loaded.</span> |
743 | + <span class="bp">self</span><span class="o">.</span><span class="n">openWithFiles</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># List of data used by Open With command.</span> |
744 | + <span class="bp">self</span><span class="o">.</span><span class="n">openWithFileNum</span> <span class="o">=</span> <span class="mi">0</span> <span class="c"># Number of Open-With temp file names.</span> |
745 | + <span class="bp">self</span><span class="o">.</span><span class="n">openWithTable</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Passed to createOpenWithMenuFromTable.</span> |
746 | + |
747 | + <span class="c">#### To be moved to to the pluginsController.</span> |
748 | + |
749 | + <span class="c"># Plugins and event handlers...</span> |
750 | + <span class="bp">self</span><span class="o">.</span><span class="n">afterHandler</span> <span class="o">=</span> <span class="bp">None</span> |
751 | + <span class="bp">self</span><span class="o">.</span><span class="n">hookError</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: suppress further calls to hooks.</span> |
752 | + <span class="bp">self</span><span class="o">.</span><span class="n">hookFunction</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Application wide hook function.</span> |
753 | + <span class="bp">self</span><span class="o">.</span><span class="n">idle_imported</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: we have done an import idle</span> |
754 | + <span class="bp">self</span><span class="o">.</span><span class="n">idleTimeDelay</span> <span class="o">=</span> <span class="mi">100</span> <span class="c"># Delay in msec between calls to "idle time" hook.</span> |
755 | + <span class="bp">self</span><span class="o">.</span><span class="n">idleTimeHook</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: the global idleTimeHookHandler will reshedule itself.</span> |
756 | + |
757 | + <span class="c"># Support for scripting...</span> |
758 | + <span class="bp">self</span><span class="o">.</span><span class="n">searchDict</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># For communication between find/change scripts.</span> |
759 | + <span class="bp">self</span><span class="o">.</span><span class="n">scriptDict</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># For use by scripts. Cleared before running each script.</span> |
760 | + <span class="bp">self</span><span class="o">.</span><span class="n">permanentScriptDict</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># For use by scrips. Never cleared automatically.</span> |
761 | + |
762 | + <span class="c"># Unit testing...</span> |
763 | + <span class="bp">self</span><span class="o">.</span><span class="n">isExternalUnitTest</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: we are running a unit test externally.</span> |
764 | + <span class="bp">self</span><span class="o">.</span><span class="n">runningAllUnitTests</span> <span class="o">=</span> <span class="bp">False</span><span class="c"># True: we are running all unit tests (Only for local tests).</span> |
765 | + <span class="bp">self</span><span class="o">.</span><span class="n">unitTestDict</span> <span class="o">=</span> <span class="p">{}</span> <span class="c"># For communication between unit tests and code.</span> |
766 | + <span class="bp">self</span><span class="o">.</span><span class="n">unitTestGui</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># A way to override the gui in external unit tests.</span> |
767 | + <span class="bp">self</span><span class="o">.</span><span class="n">unitTesting</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True if unit testing.</span> |
768 | + <span class="bp">self</span><span class="o">.</span><span class="n">unitTestMenusDict</span> <span class="o">=</span> <span class="p">{}</span> |
769 | + <span class="c"># Created in leoMenu.createMenuEntries for a unit test.</span> |
770 | + <span class="c"># keys are command names. values are sets of strokes.</span> |
771 | + |
772 | + <span class="c"># Define all global data. </span> |
773 | + <span class="bp">self</span><span class="o">.</span><span class="n">define_global_constants</span><span class="p">()</span> |
774 | + <span class="bp">self</span><span class="o">.</span><span class="n">define_language_delims_dict</span><span class="p">()</span> |
775 | + <span class="bp">self</span><span class="o">.</span><span class="n">define_language_extension_dict</span><span class="p">()</span> |
776 | + <span class="bp">self</span><span class="o">.</span><span class="n">define_extension_dict</span><span class="p">()</span> |
777 | + <span class="bp">self</span><span class="o">.</span><span class="n">global_commands_dict</span> <span class="o">=</span> <span class="p">{}</span> |
778 | + |
779 | + <span class="bp">self</span><span class="o">.</span><span class="n">ipk</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># python kernel instance</span> |
780 | + <span class="c">#@+node:ekr.20031218072017.1417: *4* app.define_global_constants</span> |
781 | +<div class="viewcode-block" id="LeoApp.define_global_constants"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.define_global_constants">[docs]</a> <span class="k">def</span> <span class="nf">define_global_constants</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
782 | + |
783 | + <span class="c"># self.prolog_string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"</span> |
784 | + |
785 | + <span class="bp">self</span><span class="o">.</span><span class="n">prolog_prefix_string</span> <span class="o">=</span> <span class="s">"<?xml version=</span><span class="se">\"</span><span class="s">1.0</span><span class="se">\"</span><span class="s"> encoding="</span> |
786 | + <span class="bp">self</span><span class="o">.</span><span class="n">prolog_postfix_string</span> <span class="o">=</span> <span class="s">"?>"</span> |
787 | + <span class="bp">self</span><span class="o">.</span><span class="n">prolog_namespace_string</span> <span class="o">=</span> \ |
788 | + <span class="s">'xmlns:leo="http://edreamleo.org/namespaces/leo-python-editor/1.1"'</span> |
789 | + <span class="c">#@+node:ekr.20120522160137.9909: *4* app.define_language_delims_dict</span></div> |
790 | +<div class="viewcode-block" id="LeoApp.define_language_delims_dict"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.define_language_delims_dict">[docs]</a> <span class="k">def</span> <span class="nf">define_language_delims_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
791 | + |
792 | + <span class="bp">self</span><span class="o">.</span><span class="n">language_delims_dict</span> <span class="o">=</span> <span class="p">{</span> |
793 | + <span class="c"># Internally, lower case is used for all language names.</span> |
794 | + <span class="c"># Keys are languages, values are 1,2 or 3-tuples of delims.</span> |
795 | + <span class="s">"actionscript"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> <span class="c">#jason 2003-07-03</span> |
796 | + <span class="s">"ada"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> |
797 | + <span class="s">"ada95"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> |
798 | + <span class="s">"ahk"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
799 | + <span class="s">"antlr"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
800 | + <span class="s">"apacheconf"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
801 | + <span class="s">"apdl"</span> <span class="p">:</span> <span class="s">"!"</span><span class="p">,</span> |
802 | + <span class="s">"applescript"</span> <span class="p">:</span> <span class="s">"-- (* *)"</span><span class="p">,</span> |
803 | + <span class="s">"asp"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
804 | + <span class="s">"aspect_j"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
805 | + <span class="s">"assembly_macro32"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
806 | + <span class="s">"assembly_mcs51"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
807 | + <span class="s">"assembly_parrot"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
808 | + <span class="s">"assembly_r2000"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
809 | + <span class="s">"assembly_x86"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
810 | + <span class="s">"autohotkey"</span> <span class="p">:</span> <span class="s">"; /* */"</span><span class="p">,</span> <span class="c">#TL - AutoHotkey language</span> |
811 | + <span class="s">"awk"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
812 | + <span class="s">"b"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
813 | + <span class="s">"batch"</span> <span class="p">:</span> <span class="s">"REM_"</span><span class="p">,</span> <span class="c"># Use the REM hack.</span> |
814 | + <span class="s">"bbj"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> |
815 | + <span class="s">"bcel"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
816 | + <span class="s">"bibtex"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> |
817 | + <span class="s">"c"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> <span class="c"># C, C++ or objective C.</span> |
818 | + <span class="s">"chill"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> |
819 | + <span class="s">"cobol"</span> <span class="p">:</span> <span class="s">"*"</span><span class="p">,</span> |
820 | + <span class="s">"coldfusion"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
821 | + <span class="s">"config"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c"># Leo 4.5.1</span> |
822 | + <span class="s">"cplusplus"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
823 | + <span class="s">"cpp"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span><span class="c"># C++.</span> |
824 | + <span class="s">"csharp"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> <span class="c"># C#</span> |
825 | + <span class="s">"css"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> <span class="c"># 4/1/04</span> |
826 | + <span class="s">"cweb"</span> <span class="p">:</span> <span class="s">"@q@ @>"</span><span class="p">,</span> <span class="c"># Use the "cweb hack"</span> |
827 | + <span class="s">"cython"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
828 | + <span class="s">"d"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
829 | + <span class="s">"doxygen"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
830 | + <span class="s">"eiffel"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> |
831 | + <span class="s">"elisp"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
832 | + <span class="s">"erlang"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> |
833 | + <span class="s">"factor"</span> <span class="p">:</span> <span class="s">"! ( )"</span><span class="p">,</span> |
834 | + <span class="s">"forth"</span> <span class="p">:</span> <span class="s">"</span><span class="se">\\</span><span class="s">_ _(_ _)"</span><span class="p">,</span> <span class="c"># Use the "REM hack"</span> |
835 | + <span class="s">"fortran"</span> <span class="p">:</span> <span class="s">"C"</span><span class="p">,</span> |
836 | + <span class="s">"fortran90"</span> <span class="p">:</span> <span class="s">"!"</span><span class="p">,</span> |
837 | + <span class="s">"foxpro"</span> <span class="p">:</span> <span class="s">"&&"</span><span class="p">,</span> |
838 | + <span class="s">"gettext"</span> <span class="p">:</span> <span class="s">"# "</span><span class="p">,</span> |
839 | + <span class="s">"groovy"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
840 | + <span class="s">"haskell"</span> <span class="p">:</span> <span class="s">"--_ {-_ _-}"</span><span class="p">,</span> |
841 | + <span class="s">"haxe"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
842 | + <span class="s">"html"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
843 | + <span class="s">"i4gl"</span> <span class="p">:</span> <span class="s">"-- { }"</span><span class="p">,</span> |
844 | + <span class="s">"icon"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
845 | + <span class="s">"idl"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
846 | + <span class="s">"inform"</span> <span class="p">:</span> <span class="s">"!"</span><span class="p">,</span> |
847 | + <span class="s">"ini"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
848 | + <span class="s">"inno_setup"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
849 | + <span class="s">"interlis"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> |
850 | + <span class="s">"io"</span> <span class="p">:</span> <span class="s">"// */"</span><span class="p">,</span> |
851 | + <span class="s">"java"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
852 | + <span class="s">"javascript"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> <span class="c"># EKR: 2011/11/12: For javascript import test.</span> |
853 | + <span class="s">"javaserverpage"</span> <span class="p">:</span> <span class="s">"<</span><span class="si">%-- --%</span><span class="s">>"</span><span class="p">,</span> <span class="c"># EKR: 2011/11/25 (See also, jsp)</span> |
854 | + <span class="s">"jhtml"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
855 | + <span class="s">"jmk"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
856 | + <span class="s">"jsp"</span> <span class="p">:</span> <span class="s">"<</span><span class="si">%-- --%</span><span class="s">>"</span><span class="p">,</span> |
857 | + <span class="s">"kshell"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c"># Leo 4.5.1.</span> |
858 | + <span class="s">"latex"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> |
859 | + <span class="s">"lilypond"</span> <span class="p">:</span> <span class="s">"</span><span class="si">% %</span><span class="s">{ %}"</span><span class="p">,</span> |
860 | + <span class="s">"lisp"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> <span class="c"># EKR: 2010/09/29</span> |
861 | + <span class="s">"lotos"</span> <span class="p">:</span> <span class="s">"(* *)"</span><span class="p">,</span> |
862 | + <span class="s">"lua"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> <span class="c"># ddm 13/02/06</span> |
863 | + <span class="s">"mail"</span> <span class="p">:</span> <span class="s">">"</span><span class="p">,</span> |
864 | + <span class="s">"makefile"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
865 | + <span class="s">"maple"</span> <span class="p">:</span> <span class="s">"//"</span><span class="p">,</span> |
866 | + <span class="s">"matlab"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> <span class="c"># EKR: 2011/10/21</span> |
867 | + <span class="s">"md"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> <span class="c"># PeckJ: 2013/02/08</span> |
868 | + <span class="s">"ml"</span> <span class="p">:</span> <span class="s">"(* *)"</span><span class="p">,</span> |
869 | + <span class="s">"modula3"</span> <span class="p">:</span> <span class="s">"(* *)"</span><span class="p">,</span> |
870 | + <span class="s">"moin"</span> <span class="p">:</span> <span class="s">"##"</span><span class="p">,</span> |
871 | + <span class="s">"mqsc"</span> <span class="p">:</span> <span class="s">"*"</span><span class="p">,</span> |
872 | + <span class="s">"netrexx"</span> <span class="p">:</span> <span class="s">"-- /* */"</span><span class="p">,</span> |
873 | + <span class="s">"noweb"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> <span class="c"># EKR: 2009-01-30. Use Latex for doc chunks.</span> |
874 | + <span class="s">"nqc"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
875 | + <span class="s">"nsi"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> <span class="c"># EKR: 2010/10/27</span> |
876 | + <span class="s">"nsis2"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
877 | + <span class="s">"objective_c"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
878 | + <span class="s">"objectrexx"</span> <span class="p">:</span> <span class="s">"-- /* */"</span><span class="p">,</span> |
879 | + <span class="s">"occam"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> |
880 | + <span class="s">"omnimark"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
881 | + <span class="s">"pascal"</span> <span class="p">:</span> <span class="s">"// { }"</span><span class="p">,</span> |
882 | + <span class="s">"perl"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
883 | + <span class="s">"perlpod"</span> <span class="p">:</span> <span class="s">"# __=pod__ __=cut__"</span><span class="p">,</span> <span class="c"># 9/25/02: The perlpod hack.</span> |
884 | + <span class="s">"php"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> <span class="c"># 6/23/07: was "//",</span> |
885 | + <span class="s">"pike"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
886 | + <span class="s">"pl1"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> |
887 | + <span class="s">"plain"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c"># We must pick something.</span> |
888 | + <span class="s">"plsql"</span> <span class="p">:</span> <span class="s">"-- /* */"</span><span class="p">,</span> <span class="c"># SQL scripts qt02537 2005-05-27</span> |
889 | + <span class="s">"pop11"</span> <span class="p">:</span> <span class="s">";;; /* */"</span><span class="p">,</span> |
890 | + <span class="s">"postscript"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> |
891 | + <span class="s">"povray"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
892 | + <span class="s">"powerdynamo"</span> <span class="p">:</span> <span class="s">"// <!-- -->"</span><span class="p">,</span> |
893 | + <span class="s">"prolog"</span> <span class="p">:</span> <span class="s">"% /* */"</span><span class="p">,</span> |
894 | + <span class="s">"psp"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
895 | + <span class="s">"ptl"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
896 | + <span class="s">"pvwave"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
897 | + <span class="s">"pyrex"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
898 | + <span class="s">"python"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
899 | + <span class="s">"r"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
900 | + <span class="s">"rapidq"</span> <span class="p">:</span> <span class="s">"'"</span><span class="p">,</span> <span class="c"># fil 2004-march-11</span> |
901 | + <span class="s">"rebol"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> <span class="c"># jason 2003-07-03</span> |
902 | + <span class="s">"redcode"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> |
903 | + <span class="s">"rest"</span> <span class="p">:</span> <span class="s">".._"</span><span class="p">,</span> |
904 | + <span class="s">"rhtml"</span> <span class="p">:</span> <span class="s">"<</span><span class="si">%# %</span><span class="s">>"</span><span class="p">,</span> |
905 | + <span class="s">"rib"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
906 | + <span class="s">"rpmspec"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
907 | + <span class="s">"rst"</span> <span class="p">:</span> <span class="s">".._"</span><span class="p">,</span> |
908 | + <span class="s">"ruby"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c"># thyrsus 2008-11-05</span> |
909 | + <span class="s">"rview"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
910 | + <span class="s">"sas"</span> <span class="p">:</span> <span class="s">"* /* */"</span><span class="p">,</span> |
911 | + <span class="s">"scala"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
912 | + <span class="s">"scheme"</span> <span class="p">:</span> <span class="s">"; #| |#"</span><span class="p">,</span> |
913 | + <span class="s">"sdl_pr"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> |
914 | + <span class="s">"sgml"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
915 | + <span class="s">"shell"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c"># shell scripts</span> |
916 | + <span class="s">"shellscript"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
917 | + <span class="s">"shtml"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
918 | + <span class="s">"smalltalk"</span> <span class="p">:</span> <span class="s">'" "'</span><span class="p">,</span> <span class="c"># Comments are enclosed in double quotes(!!)</span> |
919 | + <span class="s">"smi_mib"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> |
920 | + <span class="s">"splus"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
921 | + <span class="s">"sqr"</span> <span class="p">:</span> <span class="s">"!"</span><span class="p">,</span> |
922 | + <span class="s">"squidconf"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
923 | + <span class="s">"ssharp"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
924 | + <span class="s">"swig"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
925 | + <span class="s">"tcl"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
926 | + <span class="s">"tcltk"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> |
927 | + <span class="s">"tex"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> <span class="c"># Bug fix: 2008-1-30: Fixed Mark Edginton's bug.</span> |
928 | + <span class="s">"text"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c"># We must pick something.</span> |
929 | + <span class="s">"texinfo"</span> <span class="p">:</span> <span class="s">"@c"</span><span class="p">,</span> |
930 | + <span class="s">"tpl"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
931 | + <span class="s">"tsql"</span> <span class="p">:</span> <span class="s">"-- /* */"</span><span class="p">,</span> |
932 | + <span class="s">"typescript"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> <span class="c"># For typescript import test.</span> |
933 | + <span class="s">"unknown"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c"># Set when @comment is seen.</span> |
934 | + <span class="s">"unknown_language"</span> <span class="p">:</span> <span class="s">'#--unknown-language--'</span><span class="p">,</span> <span class="c"># For unknown extensions in @shadow files.</span> |
935 | + <span class="s">"uscript"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
936 | + <span class="s">"vbscript"</span> <span class="p">:</span> <span class="s">"'"</span><span class="p">,</span> |
937 | + <span class="s">"velocity"</span> <span class="p">:</span> <span class="s">"## #* *#"</span><span class="p">,</span> |
938 | + <span class="s">"verilog"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> |
939 | + <span class="s">"vhdl"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> |
940 | + <span class="s">"vim"</span> <span class="p">:</span> <span class="s">"</span><span class="se">\"</span><span class="s">"</span><span class="p">,</span> |
941 | + <span class="s">"vimoutline"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c">#TL 8/25/08 Vim's outline plugin</span> |
942 | + <span class="s">"xml"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
943 | + <span class="s">"xsl"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
944 | + <span class="s">"xslt"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
945 | + <span class="s">"zpt"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> |
946 | + |
947 | + <span class="c"># These aren't real languages, or have no delims...</span> |
948 | + <span class="c"># "cvs_commit" : "",</span> |
949 | + <span class="c"># "dsssl" : "; <!-- -->",</span> |
950 | + <span class="c"># "embperl" : "<!-- -->", # Internal colorizing state.</span> |
951 | + <span class="c"># "freemarker" : "",</span> |
952 | + <span class="c"># "hex" : "",</span> |
953 | + <span class="c"># "jcl" : "",</span> |
954 | + <span class="c"># "patch" : "",</span> |
955 | + <span class="c"># "phpsection" : "<!-- -->", # Internal colorizing state.</span> |
956 | + <span class="c"># "props" : "#", # Unknown language.</span> |
957 | + <span class="c"># "pseudoplain" : "",</span> |
958 | + <span class="c"># "relax_ng_compact" : "#", # An xml schema.</span> |
959 | + <span class="c"># "rtf" : "",</span> |
960 | + <span class="c"># "svn_commit" : "",</span> |
961 | + <span class="p">}</span> |
962 | + <span class="c">#@+node:ekr.20120522160137.9910: *4* app.define_language_extension_dict</span></div> |
963 | +<div class="viewcode-block" id="LeoApp.define_language_extension_dict"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.define_language_extension_dict">[docs]</a> <span class="k">def</span> <span class="nf">define_language_extension_dict</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
964 | + |
965 | + <span class="c"># Used only by c.getOpenWithExt.</span> |
966 | + |
967 | + <span class="c"># Keys are languages, values are extensions.</span> |
968 | + <span class="bp">self</span><span class="o">.</span><span class="n">language_extension_dict</span> <span class="o">=</span> <span class="p">{</span> |
969 | + <span class="s">"actionscript"</span> <span class="p">:</span> <span class="s">"as"</span><span class="p">,</span> <span class="c">#jason 2003-07-03</span> |
970 | + <span class="s">"ada"</span> <span class="p">:</span> <span class="s">"ada"</span><span class="p">,</span> |
971 | + <span class="s">"ada95"</span> <span class="p">:</span> <span class="s">"ada"</span><span class="p">,</span> |
972 | + <span class="s">"ahk"</span> <span class="p">:</span> <span class="s">"ahk"</span><span class="p">,</span> |
973 | + <span class="s">"antlr"</span> <span class="p">:</span> <span class="s">"g"</span><span class="p">,</span> |
974 | + <span class="s">"apacheconf"</span> <span class="p">:</span> <span class="s">"conf"</span><span class="p">,</span> |
975 | + <span class="s">"apdl"</span> <span class="p">:</span> <span class="s">"apdl"</span><span class="p">,</span> |
976 | + <span class="s">"applescript"</span> <span class="p">:</span> <span class="s">"scpt"</span><span class="p">,</span> |
977 | + <span class="s">"asp"</span> <span class="p">:</span> <span class="s">"asp"</span><span class="p">,</span> |
978 | + <span class="s">"aspect_j"</span> <span class="p">:</span> <span class="s">"aj"</span><span class="p">,</span> |
979 | + <span class="s">"autohotkey"</span> <span class="p">:</span> <span class="s">"ahk"</span><span class="p">,</span> <span class="c">#TL - AutoHotkey language</span> |
980 | + <span class="s">"awk"</span> <span class="p">:</span> <span class="s">"awk"</span><span class="p">,</span> |
981 | + <span class="s">"b"</span> <span class="p">:</span> <span class="s">"b"</span><span class="p">,</span> |
982 | + <span class="s">"batch"</span> <span class="p">:</span> <span class="s">"bat"</span><span class="p">,</span> <span class="c"># Leo 4.5.1.</span> |
983 | + <span class="s">"bbj"</span> <span class="p">:</span> <span class="s">"bbj"</span><span class="p">,</span> |
984 | + <span class="s">"bcel"</span> <span class="p">:</span> <span class="s">"bcel"</span><span class="p">,</span> |
985 | + <span class="s">"bibtex"</span> <span class="p">:</span> <span class="s">"bib"</span><span class="p">,</span> |
986 | + <span class="s">"c"</span> <span class="p">:</span> <span class="s">"c"</span><span class="p">,</span> |
987 | + <span class="s">"chill"</span> <span class="p">:</span> <span class="s">"ch"</span><span class="p">,</span> <span class="c"># Only one extension is valid: .c186, .c286</span> |
988 | + <span class="s">"cobol"</span> <span class="p">:</span> <span class="s">"cbl"</span><span class="p">,</span> <span class="c"># Only one extension is valid: .cob</span> |
989 | + <span class="s">"coldfusion"</span> <span class="p">:</span> <span class="s">"cfm"</span><span class="p">,</span> |
990 | + <span class="s">"config"</span> <span class="p">:</span> <span class="s">"cfg"</span><span class="p">,</span> |
991 | + <span class="s">"cplusplus"</span> <span class="p">:</span> <span class="s">"c++"</span><span class="p">,</span> |
992 | + <span class="s">"cpp"</span> <span class="p">:</span> <span class="s">"cpp"</span><span class="p">,</span> |
993 | + <span class="s">"css"</span> <span class="p">:</span> <span class="s">"css"</span><span class="p">,</span> <span class="c"># 4/1/04</span> |
994 | + <span class="s">"cweb"</span> <span class="p">:</span> <span class="s">"w"</span><span class="p">,</span> |
995 | + <span class="s">"cython"</span> <span class="p">:</span> <span class="s">"pyx"</span><span class="p">,</span> <span class="c"># Only one extension is valid at present: .pyi, .pyd.</span> |
996 | + <span class="s">"d"</span> <span class="p">:</span> <span class="s">"d"</span><span class="p">,</span> |
997 | + <span class="s">"eiffel"</span> <span class="p">:</span> <span class="s">"e"</span><span class="p">,</span> |
998 | + <span class="s">"elisp"</span> <span class="p">:</span> <span class="s">"el"</span><span class="p">,</span> |
999 | + <span class="s">"erlang"</span> <span class="p">:</span> <span class="s">"erl"</span><span class="p">,</span> |
1000 | + <span class="s">"factor"</span> <span class="p">:</span> <span class="s">"factor"</span><span class="p">,</span> |
1001 | + <span class="s">"forth"</span> <span class="p">:</span> <span class="s">"forth"</span><span class="p">,</span> |
1002 | + <span class="s">"fortran"</span> <span class="p">:</span> <span class="s">"f"</span><span class="p">,</span> |
1003 | + <span class="s">"fortran90"</span> <span class="p">:</span> <span class="s">"f90"</span><span class="p">,</span> |
1004 | + <span class="s">"foxpro"</span> <span class="p">:</span> <span class="s">"prg"</span><span class="p">,</span> |
1005 | + <span class="s">"gettext"</span> <span class="p">:</span> <span class="s">"po"</span><span class="p">,</span> |
1006 | + <span class="s">"groovy"</span> <span class="p">:</span> <span class="s">"groovy"</span><span class="p">,</span> |
1007 | + <span class="s">"haskell"</span> <span class="p">:</span> <span class="s">"hs"</span><span class="p">,</span> |
1008 | + <span class="s">"haxe"</span> <span class="p">:</span> <span class="s">"hx"</span><span class="p">,</span> |
1009 | + <span class="s">"html"</span> <span class="p">:</span> <span class="s">"html"</span><span class="p">,</span> |
1010 | + <span class="s">"i4gl"</span> <span class="p">:</span> <span class="s">"i4gl"</span><span class="p">,</span> |
1011 | + <span class="s">"icon"</span> <span class="p">:</span> <span class="s">"icn"</span><span class="p">,</span> |
1012 | + <span class="s">"idl"</span> <span class="p">:</span> <span class="s">"idl"</span><span class="p">,</span> |
1013 | + <span class="s">"inform"</span> <span class="p">:</span> <span class="s">"inf"</span><span class="p">,</span> |
1014 | + <span class="s">"ini"</span> <span class="p">:</span> <span class="s">"ini"</span><span class="p">,</span> |
1015 | + <span class="s">"inno_setup"</span> <span class="p">:</span> <span class="s">"iss"</span><span class="p">,</span> |
1016 | + <span class="s">"io"</span> <span class="p">:</span> <span class="s">"io"</span><span class="p">,</span> |
1017 | + <span class="s">"java"</span> <span class="p">:</span> <span class="s">"java"</span><span class="p">,</span> |
1018 | + <span class="s">"javascript"</span> <span class="p">:</span> <span class="s">"js"</span><span class="p">,</span> <span class="c"># EKR: 2011/11/12: For javascript import test.</span> |
1019 | + <span class="s">"javaserverpage"</span><span class="p">:</span> <span class="s">"jsp"</span><span class="p">,</span> <span class="c"># EKR: 2011/11/25</span> |
1020 | + <span class="s">"jhtml"</span> <span class="p">:</span> <span class="s">"jhtml"</span><span class="p">,</span> |
1021 | + <span class="s">"jmk"</span> <span class="p">:</span> <span class="s">"jmk"</span><span class="p">,</span> |
1022 | + <span class="s">"jsp"</span> <span class="p">:</span> <span class="s">"jsp"</span><span class="p">,</span> |
1023 | + <span class="s">"kshell"</span> <span class="p">:</span> <span class="s">"ksh"</span><span class="p">,</span> <span class="c"># Leo 4.5.1.</span> |
1024 | + <span class="s">"latex"</span> <span class="p">:</span> <span class="s">"tex"</span><span class="p">,</span> <span class="c"># 1/8/04</span> |
1025 | + <span class="s">"lilypond"</span> <span class="p">:</span> <span class="s">"ly"</span><span class="p">,</span> |
1026 | + <span class="s">"lua"</span> <span class="p">:</span> <span class="s">"lua"</span><span class="p">,</span> <span class="c"># ddm 13/02/06</span> |
1027 | + <span class="s">"mail"</span> <span class="p">:</span> <span class="s">"eml"</span><span class="p">,</span> |
1028 | + <span class="s">"makefile"</span> <span class="p">:</span> <span class="s">"mak"</span><span class="p">,</span> |
1029 | + <span class="s">"maple"</span> <span class="p">:</span> <span class="s">"mpl"</span><span class="p">,</span> |
1030 | + <span class="s">"matlab"</span> <span class="p">:</span> <span class="s">"m"</span><span class="p">,</span> |
1031 | + <span class="s">"md"</span> <span class="p">:</span> <span class="s">"md"</span><span class="p">,</span> <span class="c"># PeckJ: 2013/02/07</span> |
1032 | + <span class="s">"ml"</span> <span class="p">:</span> <span class="s">"ml"</span><span class="p">,</span> |
1033 | + <span class="s">"modula3"</span> <span class="p">:</span> <span class="s">"mod"</span><span class="p">,</span> |
1034 | + <span class="s">"moin"</span> <span class="p">:</span> <span class="s">"wiki"</span><span class="p">,</span> |
1035 | + <span class="s">"mqsc"</span> <span class="p">:</span> <span class="s">"mqsc"</span><span class="p">,</span> |
1036 | + <span class="s">"noweb"</span> <span class="p">:</span> <span class="s">"nw"</span><span class="p">,</span> |
1037 | + <span class="s">"nqc"</span> <span class="p">:</span> <span class="s">"nqc"</span><span class="p">,</span> |
1038 | + <span class="s">"nsi"</span> <span class="p">:</span> <span class="s">"nsi"</span><span class="p">,</span> <span class="c"># EKR: 2010/10/27</span> |
1039 | + <span class="s">"nsis2"</span> <span class="p">:</span> <span class="s">"nsi"</span><span class="p">,</span> |
1040 | + <span class="s">"objective_c"</span> <span class="p">:</span> <span class="s">"mm"</span><span class="p">,</span> <span class="c"># Only one extension is valid: .m</span> |
1041 | + <span class="s">"objectrexx"</span> <span class="p">:</span> <span class="s">"rex"</span><span class="p">,</span> |
1042 | + <span class="s">"occam"</span> <span class="p">:</span> <span class="s">"occ"</span><span class="p">,</span> |
1043 | + <span class="s">"omnimark"</span> <span class="p">:</span> <span class="s">"xom"</span><span class="p">,</span> |
1044 | + <span class="s">"pascal"</span> <span class="p">:</span> <span class="s">"p"</span><span class="p">,</span> |
1045 | + <span class="s">"perl"</span> <span class="p">:</span> <span class="s">"pl"</span><span class="p">,</span> |
1046 | + <span class="s">"perlpod"</span> <span class="p">:</span> <span class="s">"pod"</span><span class="p">,</span> |
1047 | + <span class="s">"php"</span> <span class="p">:</span> <span class="s">"php"</span><span class="p">,</span> |
1048 | + <span class="s">"pike"</span> <span class="p">:</span> <span class="s">"pike"</span><span class="p">,</span> |
1049 | + <span class="s">"pl1"</span> <span class="p">:</span> <span class="s">"pl1"</span><span class="p">,</span> |
1050 | + <span class="s">"plain"</span> <span class="p">:</span> <span class="s">"txt"</span><span class="p">,</span> |
1051 | + <span class="s">"plsql"</span> <span class="p">:</span> <span class="s">"sql"</span><span class="p">,</span> <span class="c"># qt02537 2005-05-27</span> |
1052 | + <span class="c"># "pop11" : "p", # Conflicts with pascall.</span> |
1053 | + <span class="s">"postscript"</span> <span class="p">:</span> <span class="s">"ps"</span><span class="p">,</span> |
1054 | + <span class="s">"povray"</span> <span class="p">:</span> <span class="s">"pov"</span><span class="p">,</span> |
1055 | + <span class="s">"prolog"</span> <span class="p">:</span> <span class="s">"pro"</span><span class="p">,</span> |
1056 | + <span class="s">"psp"</span> <span class="p">:</span> <span class="s">"psp"</span><span class="p">,</span> |
1057 | + <span class="s">"ptl"</span> <span class="p">:</span> <span class="s">"ptl"</span><span class="p">,</span> |
1058 | + <span class="s">"pyrex"</span> <span class="p">:</span> <span class="s">"pyx"</span><span class="p">,</span> |
1059 | + <span class="s">"python"</span> <span class="p">:</span> <span class="s">"py"</span><span class="p">,</span> |
1060 | + <span class="s">"r"</span> <span class="p">:</span> <span class="s">"r"</span><span class="p">,</span> |
1061 | + <span class="s">"rapidq"</span> <span class="p">:</span> <span class="s">"bas"</span><span class="p">,</span> <span class="c"># fil 2004-march-11</span> |
1062 | + <span class="s">"rebol"</span> <span class="p">:</span> <span class="s">"r"</span><span class="p">,</span> <span class="c"># jason 2003-07-03</span> |
1063 | + <span class="s">"rhtml"</span> <span class="p">:</span> <span class="s">"rhtml"</span><span class="p">,</span> |
1064 | + <span class="s">"rib"</span> <span class="p">:</span> <span class="s">"rib"</span><span class="p">,</span> |
1065 | + <span class="s">"rst"</span> <span class="p">:</span> <span class="s">"rest"</span><span class="p">,</span> |
1066 | + <span class="s">"ruby"</span> <span class="p">:</span> <span class="s">"rb"</span><span class="p">,</span> <span class="c"># thyrsus 2008-11-05</span> |
1067 | + <span class="s">"sas"</span> <span class="p">:</span> <span class="s">"sas"</span><span class="p">,</span> |
1068 | + <span class="s">"scala"</span> <span class="p">:</span> <span class="s">"scala"</span><span class="p">,</span> |
1069 | + <span class="s">"scheme"</span> <span class="p">:</span> <span class="s">"scm"</span><span class="p">,</span> |
1070 | + <span class="s">"sgml"</span> <span class="p">:</span> <span class="s">"sgml"</span><span class="p">,</span> |
1071 | + <span class="s">"shell"</span> <span class="p">:</span> <span class="s">"sh"</span><span class="p">,</span> <span class="c"># DS 4/1/04</span> |
1072 | + <span class="s">"shellscript"</span> <span class="p">:</span> <span class="s">"sh"</span><span class="p">,</span> |
1073 | + <span class="s">"shtml"</span> <span class="p">:</span> <span class="s">"ssi"</span><span class="p">,</span> <span class="c"># Only one extension is valid: .shtml</span> |
1074 | + <span class="s">"smalltalk"</span> <span class="p">:</span> <span class="s">"sm"</span><span class="p">,</span> |
1075 | + <span class="s">"splus"</span> <span class="p">:</span> <span class="s">"splus"</span><span class="p">,</span> |
1076 | + <span class="s">"sqr"</span> <span class="p">:</span> <span class="s">"sqr"</span><span class="p">,</span> |
1077 | + <span class="s">"ssharp"</span> <span class="p">:</span> <span class="s">"ss"</span><span class="p">,</span> |
1078 | + <span class="s">"swig"</span> <span class="p">:</span> <span class="s">"i"</span><span class="p">,</span> |
1079 | + <span class="s">"tcl"</span> <span class="p">:</span> <span class="s">"tcl"</span><span class="p">,</span> |
1080 | + <span class="s">"tcltk"</span> <span class="p">:</span> <span class="s">"tcl"</span><span class="p">,</span> |
1081 | + <span class="s">"tex"</span> <span class="p">:</span> <span class="s">"tex"</span><span class="p">,</span> |
1082 | + <span class="s">"texinfo"</span> <span class="p">:</span> <span class="s">"info"</span><span class="p">,</span> |
1083 | + <span class="s">"text"</span> <span class="p">:</span> <span class="s">"txt"</span><span class="p">,</span> |
1084 | + <span class="s">"tpl"</span> <span class="p">:</span> <span class="s">"tpl"</span><span class="p">,</span> |
1085 | + <span class="s">"tsql"</span> <span class="p">:</span> <span class="s">"sql"</span><span class="p">,</span> <span class="c"># A guess.</span> |
1086 | + <span class="s">"typescript"</span> <span class="p">:</span> <span class="s">"ts"</span><span class="p">,</span> |
1087 | + <span class="s">"unknown"</span> <span class="p">:</span> <span class="s">"txt"</span><span class="p">,</span> <span class="c"># Set when @comment is seen.</span> |
1088 | + <span class="s">"uscript"</span> <span class="p">:</span> <span class="s">"uc"</span><span class="p">,</span> |
1089 | + <span class="s">"vbscript"</span> <span class="p">:</span> <span class="s">"vbs"</span><span class="p">,</span> |
1090 | + <span class="s">"velocity"</span> <span class="p">:</span> <span class="s">"vtl"</span><span class="p">,</span> |
1091 | + <span class="s">"verilog"</span> <span class="p">:</span> <span class="s">"v"</span><span class="p">,</span> |
1092 | + <span class="s">"vhdl"</span> <span class="p">:</span> <span class="s">"vhd"</span><span class="p">,</span> <span class="c"># Only one extension is valid: .vhdl</span> |
1093 | + <span class="s">"vim"</span> <span class="p">:</span> <span class="s">"vim"</span><span class="p">,</span> |
1094 | + <span class="s">"vimoutline"</span> <span class="p">:</span> <span class="s">"otl"</span><span class="p">,</span> <span class="c">#TL 8/25/08 Vim's outline plugin</span> |
1095 | + <span class="s">"xml"</span> <span class="p">:</span> <span class="s">"xml"</span><span class="p">,</span> |
1096 | + <span class="s">"xsl"</span> <span class="p">:</span> <span class="s">"xsl"</span><span class="p">,</span> |
1097 | + <span class="s">"xslt"</span> <span class="p">:</span> <span class="s">"xsl"</span><span class="p">,</span> |
1098 | + <span class="s">"zpt"</span> <span class="p">:</span> <span class="s">"zpt"</span><span class="p">,</span> |
1099 | + <span class="p">}</span> |
1100 | + |
1101 | + <span class="c"># These aren't real languages, or have no delims...</span> |
1102 | + <span class="c"># cvs_commit, dsssl, embperl, freemarker, hex, jcl,</span> |
1103 | + <span class="c"># patch, phpsection, progress, props, pseudoplain,</span> |
1104 | + <span class="c"># relax_ng_compact, rtf, svn_commit.</span> |
1105 | + |
1106 | + <span class="c"># These have extensions which conflict with other languages.</span> |
1107 | + <span class="c"># assembly_macro32: .asm or .a</span> |
1108 | + <span class="c"># assembly_mcs51: .asm or .a</span> |
1109 | + <span class="c"># assembly_parrot: .asm or .a</span> |
1110 | + <span class="c"># assembly_r2000: .asm or .a</span> |
1111 | + <span class="c"># assembly_x86: .asm or .a</span> |
1112 | + <span class="c"># squidconf: .conf</span> |
1113 | + <span class="c"># rpmspec: .rpm</span> |
1114 | + <span class="c">#@+node:ekr.20120522160137.9911: *4* app.define_extension_dict</span></div> |
1115 | +<div class="viewcode-block" id="LeoApp.define_extension_dict"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.define_extension_dict">[docs]</a> <span class="k">def</span> <span class="nf">define_extension_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1116 | + |
1117 | + <span class="c"># Keys are extensions, values are languages</span> |
1118 | + <span class="bp">self</span><span class="o">.</span><span class="n">extension_dict</span> <span class="o">=</span> <span class="p">{</span> |
1119 | + <span class="c"># "ada": "ada",</span> |
1120 | + <span class="s">"ada"</span><span class="p">:</span> <span class="s">"ada95"</span><span class="p">,</span> <span class="c"># modes/ada95.py exists.</span> |
1121 | + <span class="s">"ahk"</span><span class="p">:</span> <span class="s">"autohotkey"</span><span class="p">,</span> |
1122 | + <span class="s">"aj"</span><span class="p">:</span> <span class="s">"aspect_j"</span><span class="p">,</span> |
1123 | + <span class="s">"apdl"</span><span class="p">:</span> <span class="s">"apdl"</span><span class="p">,</span> |
1124 | + <span class="s">"as"</span><span class="p">:</span> <span class="s">"actionscript"</span><span class="p">,</span> <span class="c">#jason 2003-07-03</span> |
1125 | + <span class="s">"asp"</span><span class="p">:</span> <span class="s">"asp"</span><span class="p">,</span> |
1126 | + <span class="s">"awk"</span><span class="p">:</span> <span class="s">"awk"</span><span class="p">,</span> |
1127 | + <span class="s">"b"</span><span class="p">:</span> <span class="s">"b"</span><span class="p">,</span> |
1128 | + <span class="s">"bas"</span><span class="p">:</span> <span class="s">"rapidq"</span><span class="p">,</span> <span class="c"># fil 2004-march-11</span> |
1129 | + <span class="s">"bat"</span><span class="p">:</span> <span class="s">"batch"</span><span class="p">,</span> |
1130 | + <span class="s">"bbj"</span><span class="p">:</span> <span class="s">"bbj"</span><span class="p">,</span> |
1131 | + <span class="s">"bcel"</span><span class="p">:</span> <span class="s">"bcel"</span><span class="p">,</span> |
1132 | + <span class="s">"bib"</span><span class="p">:</span> <span class="s">"bibtex"</span><span class="p">,</span> |
1133 | + <span class="s">"c"</span><span class="p">:</span> <span class="s">"c"</span><span class="p">,</span> |
1134 | + <span class="s">"c++"</span><span class="p">:</span> <span class="s">"cplusplus"</span><span class="p">,</span> |
1135 | + <span class="s">"cbl"</span><span class="p">:</span> <span class="s">"cobol"</span><span class="p">,</span> <span class="c"># Only one extension is valid: .cob</span> |
1136 | + <span class="s">"cfg"</span><span class="p">:</span> <span class="s">"config"</span><span class="p">,</span> |
1137 | + <span class="s">"cfm"</span><span class="p">:</span> <span class="s">"coldfusion"</span><span class="p">,</span> |
1138 | + <span class="s">"ch"</span><span class="p">:</span> <span class="s">"chill"</span><span class="p">,</span> <span class="c"># Other extensions, .c186,.c286</span> |
1139 | + <span class="s">"conf"</span><span class="p">:</span> <span class="s">"apacheconf"</span><span class="p">,</span> |
1140 | + <span class="s">"cpp"</span><span class="p">:</span> <span class="s">"cpp"</span><span class="p">,</span> |
1141 | + <span class="s">"css"</span><span class="p">:</span> <span class="s">"css"</span><span class="p">,</span> |
1142 | + <span class="s">"d"</span><span class="p">:</span> <span class="s">"d"</span><span class="p">,</span> |
1143 | + <span class="s">"e"</span><span class="p">:</span> <span class="s">"eiffel"</span><span class="p">,</span> |
1144 | + <span class="s">"el"</span><span class="p">:</span> <span class="s">"elisp"</span><span class="p">,</span> |
1145 | + <span class="s">"eml"</span><span class="p">:</span> <span class="s">"mail"</span><span class="p">,</span> |
1146 | + <span class="s">"erl"</span><span class="p">:</span> <span class="s">"erlang"</span><span class="p">,</span> |
1147 | + <span class="s">"f"</span><span class="p">:</span> <span class="s">"fortran"</span><span class="p">,</span> |
1148 | + <span class="s">"f90"</span><span class="p">:</span> <span class="s">"fortran90"</span><span class="p">,</span> |
1149 | + <span class="s">"factor"</span><span class="p">:</span> <span class="s">"factor"</span><span class="p">,</span> |
1150 | + <span class="s">"forth"</span><span class="p">:</span> <span class="s">"forth"</span><span class="p">,</span> |
1151 | + <span class="s">"g"</span><span class="p">:</span> <span class="s">"antlr"</span><span class="p">,</span> |
1152 | + <span class="s">"groovy"</span><span class="p">:</span> <span class="s">"groovy"</span><span class="p">,</span> |
1153 | + <span class="s">"h"</span><span class="p">:</span> <span class="s">"c"</span><span class="p">,</span> <span class="c"># 2012/05/23.</span> |
1154 | + <span class="s">"hs"</span><span class="p">:</span> <span class="s">"haskell"</span><span class="p">,</span> |
1155 | + <span class="s">"html"</span><span class="p">:</span> <span class="s">"html"</span><span class="p">,</span> |
1156 | + <span class="s">"hx"</span><span class="p">:</span> <span class="s">"haxe"</span><span class="p">,</span> |
1157 | + <span class="s">"i"</span><span class="p">:</span> <span class="s">"swig"</span><span class="p">,</span> |
1158 | + <span class="s">"i4gl"</span><span class="p">:</span> <span class="s">"i4gl"</span><span class="p">,</span> |
1159 | + <span class="s">"icn"</span><span class="p">:</span> <span class="s">"icon"</span><span class="p">,</span> |
1160 | + <span class="s">"idl"</span><span class="p">:</span> <span class="s">"idl"</span><span class="p">,</span> |
1161 | + <span class="s">"inf"</span><span class="p">:</span> <span class="s">"inform"</span><span class="p">,</span> |
1162 | + <span class="s">"info"</span><span class="p">:</span> <span class="s">"texinfo"</span><span class="p">,</span> |
1163 | + <span class="s">"ini"</span><span class="p">:</span> <span class="s">"ini"</span><span class="p">,</span> |
1164 | + <span class="s">"io"</span><span class="p">:</span> <span class="s">"io"</span><span class="p">,</span> |
1165 | + <span class="s">"iss"</span><span class="p">:</span> <span class="s">"inno_setup"</span><span class="p">,</span> |
1166 | + <span class="s">"java"</span><span class="p">:</span> <span class="s">"java"</span><span class="p">,</span> |
1167 | + <span class="s">"jhtml"</span><span class="p">:</span> <span class="s">"jhtml"</span><span class="p">,</span> |
1168 | + <span class="s">"jmk"</span><span class="p">:</span> <span class="s">"jmk"</span><span class="p">,</span> |
1169 | + <span class="s">"js"</span><span class="p">:</span> <span class="s">"javascript"</span><span class="p">,</span> <span class="c"># For javascript import test.</span> |
1170 | + <span class="s">"jsp"</span><span class="p">:</span> <span class="s">"javaserverpage"</span><span class="p">,</span> |
1171 | + <span class="c"># "jsp": "jsp",</span> |
1172 | + <span class="s">"ksh"</span><span class="p">:</span> <span class="s">"kshell"</span><span class="p">,</span> <span class="c"># Leo 4.5.1.</span> |
1173 | + <span class="s">"lua"</span><span class="p">:</span> <span class="s">"lua"</span><span class="p">,</span> <span class="c"># ddm 13/02/06</span> |
1174 | + <span class="s">"ly"</span><span class="p">:</span> <span class="s">"lilypond"</span><span class="p">,</span> |
1175 | + <span class="s">"m"</span><span class="p">:</span> <span class="s">"matlab"</span><span class="p">,</span> <span class="c"># EKR: 2011/10/21</span> |
1176 | + <span class="s">"mak"</span><span class="p">:</span> <span class="s">"makefile"</span><span class="p">,</span> |
1177 | + <span class="s">"md"</span><span class="p">:</span> <span class="s">"md"</span><span class="p">,</span> <span class="c"># PeckJ 2013/02/07</span> |
1178 | + <span class="s">"ml"</span><span class="p">:</span> <span class="s">"ml"</span><span class="p">,</span> |
1179 | + <span class="s">"mm"</span><span class="p">:</span> <span class="s">"objective_c"</span><span class="p">,</span> <span class="c"># Only one extension is valid: .m</span> |
1180 | + <span class="s">"mod"</span><span class="p">:</span> <span class="s">"modula3"</span><span class="p">,</span> |
1181 | + <span class="s">"mpl"</span><span class="p">:</span> <span class="s">"maple"</span><span class="p">,</span> |
1182 | + <span class="s">"mqsc"</span><span class="p">:</span> <span class="s">"mqsc"</span><span class="p">,</span> |
1183 | + <span class="s">"nqc"</span><span class="p">:</span> <span class="s">"nqc"</span><span class="p">,</span> |
1184 | + <span class="s">"nsi"</span><span class="p">:</span> <span class="s">"nsi"</span><span class="p">,</span> <span class="c"># EKR: 2010/10/27</span> |
1185 | + <span class="c"># "nsi": "nsis2",</span> |
1186 | + <span class="s">"nw"</span><span class="p">:</span> <span class="s">"noweb"</span><span class="p">,</span> |
1187 | + <span class="s">"occ"</span><span class="p">:</span> <span class="s">"occam"</span><span class="p">,</span> |
1188 | + <span class="s">"otl"</span><span class="p">:</span> <span class="s">"vimoutline"</span><span class="p">,</span> <span class="c">#TL 8/25/08 Vim's outline plugin</span> |
1189 | + <span class="s">"p"</span><span class="p">:</span> <span class="s">"pascal"</span><span class="p">,</span> |
1190 | + <span class="c"># "p": "pop11", # Conflicts with pascal.</span> |
1191 | + <span class="s">"php"</span><span class="p">:</span> <span class="s">"php"</span><span class="p">,</span> |
1192 | + <span class="s">"pike"</span><span class="p">:</span> <span class="s">"pike"</span><span class="p">,</span> |
1193 | + <span class="s">"pl"</span><span class="p">:</span> <span class="s">"perl"</span><span class="p">,</span> |
1194 | + <span class="s">"pl1"</span><span class="p">:</span> <span class="s">"pl1"</span><span class="p">,</span> |
1195 | + <span class="s">"po"</span><span class="p">:</span> <span class="s">"gettext"</span><span class="p">,</span> |
1196 | + <span class="s">"pod"</span><span class="p">:</span> <span class="s">"perlpod"</span><span class="p">,</span> |
1197 | + <span class="s">"pov"</span><span class="p">:</span> <span class="s">"povray"</span><span class="p">,</span> |
1198 | + <span class="s">"prg"</span><span class="p">:</span> <span class="s">"foxpro"</span><span class="p">,</span> |
1199 | + <span class="s">"pro"</span><span class="p">:</span> <span class="s">"prolog"</span><span class="p">,</span> |
1200 | + <span class="s">"ps"</span><span class="p">:</span> <span class="s">"postscript"</span><span class="p">,</span> |
1201 | + <span class="s">"psp"</span><span class="p">:</span> <span class="s">"psp"</span><span class="p">,</span> |
1202 | + <span class="s">"ptl"</span><span class="p">:</span> <span class="s">"ptl"</span><span class="p">,</span> |
1203 | + <span class="s">"py"</span><span class="p">:</span> <span class="s">"python"</span><span class="p">,</span> |
1204 | + <span class="s">"pyx"</span><span class="p">:</span> <span class="s">"cython"</span><span class="p">,</span> <span class="c"># Other extensions, .pyd,.pyi</span> |
1205 | + <span class="c"># "pyx": "pyrex",</span> |
1206 | + <span class="c"># "r": "r", # modes/r.py does not exist.</span> |
1207 | + <span class="s">"r"</span><span class="p">:</span> <span class="s">"rebol"</span><span class="p">,</span> <span class="c"># jason 2003-07-03</span> |
1208 | + <span class="s">"rb"</span><span class="p">:</span> <span class="s">"ruby"</span><span class="p">,</span> <span class="c"># thyrsus 2008-11-05</span> |
1209 | + <span class="s">"rest"</span><span class="p">:</span> <span class="s">"rst"</span><span class="p">,</span> |
1210 | + <span class="s">"rex"</span><span class="p">:</span> <span class="s">"objectrexx"</span><span class="p">,</span> |
1211 | + <span class="s">"rhtml"</span><span class="p">:</span> <span class="s">"rhtml"</span><span class="p">,</span> |
1212 | + <span class="s">"rib"</span><span class="p">:</span> <span class="s">"rib"</span><span class="p">,</span> |
1213 | + <span class="s">"sas"</span><span class="p">:</span> <span class="s">"sas"</span><span class="p">,</span> |
1214 | + <span class="s">"scala"</span><span class="p">:</span> <span class="s">"scala"</span><span class="p">,</span> |
1215 | + <span class="s">"scm"</span><span class="p">:</span> <span class="s">"scheme"</span><span class="p">,</span> |
1216 | + <span class="s">"scpt"</span><span class="p">:</span> <span class="s">"applescript"</span><span class="p">,</span> |
1217 | + <span class="s">"sgml"</span><span class="p">:</span> <span class="s">"sgml"</span><span class="p">,</span> |
1218 | + <span class="s">"sh"</span><span class="p">:</span> <span class="s">"shell"</span><span class="p">,</span> <span class="c"># DS 4/1/04. modes/shell.py exists.</span> |
1219 | + <span class="c"># "sh": "shellscript",</span> |
1220 | + <span class="s">"shtml"</span><span class="p">:</span> <span class="s">"shtml"</span><span class="p">,</span> |
1221 | + <span class="s">"sm"</span><span class="p">:</span> <span class="s">"smalltalk"</span><span class="p">,</span> |
1222 | + <span class="s">"splus"</span><span class="p">:</span> <span class="s">"splus"</span><span class="p">,</span> |
1223 | + <span class="s">"sql"</span><span class="p">:</span> <span class="s">"plsql"</span><span class="p">,</span> <span class="c"># qt02537 2005-05-27</span> |
1224 | + <span class="s">"sqr"</span><span class="p">:</span> <span class="s">"sqr"</span><span class="p">,</span> |
1225 | + <span class="s">"ss"</span><span class="p">:</span> <span class="s">"ssharp"</span><span class="p">,</span> |
1226 | + <span class="s">"ssi"</span><span class="p">:</span> <span class="s">"shtml"</span><span class="p">,</span> |
1227 | + <span class="s">"tcl"</span><span class="p">:</span> <span class="s">"tcl"</span><span class="p">,</span> <span class="c"># modes/tcl.py exists.</span> |
1228 | + <span class="c"># "tcl": "tcltk",</span> |
1229 | + <span class="s">"tex"</span><span class="p">:</span> <span class="s">"latex"</span><span class="p">,</span> |
1230 | + <span class="c"># "tex": "tex",</span> |
1231 | + <span class="s">"tpl"</span><span class="p">:</span> <span class="s">"tpl"</span><span class="p">,</span> |
1232 | + <span class="s">"ts"</span><span class="p">:</span> <span class="s">"typescript"</span><span class="p">,</span> |
1233 | + <span class="s">"txt"</span><span class="p">:</span> <span class="s">"plain"</span><span class="p">,</span> |
1234 | + <span class="c"># "txt": "text",</span> |
1235 | + <span class="c"># "txt": "unknown", # Set when @comment is seen.</span> |
1236 | + <span class="s">"uc"</span><span class="p">:</span> <span class="s">"uscript"</span><span class="p">,</span> |
1237 | + <span class="s">"v"</span><span class="p">:</span> <span class="s">"verilog"</span><span class="p">,</span> |
1238 | + <span class="s">"vbs"</span><span class="p">:</span> <span class="s">"vbscript"</span><span class="p">,</span> |
1239 | + <span class="s">"vhd"</span><span class="p">:</span> <span class="s">"vhdl"</span><span class="p">,</span> |
1240 | + <span class="s">"vhdl"</span><span class="p">:</span> <span class="s">"vhdl"</span><span class="p">,</span> |
1241 | + <span class="s">"vim"</span><span class="p">:</span> <span class="s">"vim"</span><span class="p">,</span> |
1242 | + <span class="s">"vtl"</span><span class="p">:</span> <span class="s">"velocity"</span><span class="p">,</span> |
1243 | + <span class="s">"w"</span><span class="p">:</span> <span class="s">"cweb"</span><span class="p">,</span> |
1244 | + <span class="s">"wiki"</span><span class="p">:</span> <span class="s">"moin"</span><span class="p">,</span> |
1245 | + <span class="s">"xml"</span><span class="p">:</span> <span class="s">"xml"</span><span class="p">,</span> |
1246 | + <span class="s">"xom"</span><span class="p">:</span> <span class="s">"omnimark"</span><span class="p">,</span> |
1247 | + <span class="s">"xsl"</span><span class="p">:</span> <span class="s">"xsl"</span><span class="p">,</span> |
1248 | + <span class="s">"zpt"</span><span class="p">:</span> <span class="s">"zpt"</span><span class="p">,</span> |
1249 | + <span class="p">}</span> |
1250 | + |
1251 | + <span class="c"># These aren't real languages, or have no delims...</span> |
1252 | + <span class="c"># cvs_commit, dsssl, embperl, freemarker, hex, jcl,</span> |
1253 | + <span class="c"># patch, phpsection, progress, props, pseudoplain,</span> |
1254 | + <span class="c"># relax_ng_compact, rtf, svn_commit.</span> |
1255 | + |
1256 | + <span class="c"># These have extensions which conflict with other languages.</span> |
1257 | + <span class="c"># assembly_macro32: .asm or .a</span> |
1258 | + <span class="c"># assembly_mcs51: .asm or .a</span> |
1259 | + <span class="c"># assembly_parrot: .asm or .a</span> |
1260 | + <span class="c"># assembly_r2000: .asm or .a</span> |
1261 | + <span class="c"># assembly_x86: .asm or .a</span> |
1262 | + <span class="c"># squidconf: .conf</span> |
1263 | + <span class="c"># rpmspec: .rpm</span> |
1264 | + |
1265 | + <span class="c"># Extra language extensions, used to associate extensions with mode files.</span> |
1266 | + <span class="c"># Used by importCommands.languageForExtension.</span> |
1267 | + <span class="c"># Keys are extensions, values are corresponding mode file (without .py)</span> |
1268 | + <span class="c"># A value of 'none' is a signal to unit tests that no extension file exists.</span> |
1269 | + <span class="bp">self</span><span class="o">.</span><span class="n">extra_extension_dict</span> <span class="o">=</span> <span class="p">{</span> |
1270 | + <span class="s">'pod'</span> <span class="p">:</span> <span class="s">'perl'</span><span class="p">,</span> |
1271 | + <span class="s">'unknown_language'</span><span class="p">:</span> <span class="s">'none'</span><span class="p">,</span> |
1272 | + <span class="s">'w'</span> <span class="p">:</span> <span class="s">'none'</span><span class="p">,</span> <span class="c"># cweb</span> |
1273 | + <span class="p">}</span> |
1274 | + |
1275 | + <span class="c">#@+node:ekr.20031218072017.2609: *3* app.closeLeoWindow</span></div> |
1276 | +<div class="viewcode-block" id="LeoApp.closeLeoWindow"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.closeLeoWindow">[docs]</a> <span class="k">def</span> <span class="nf">closeLeoWindow</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">frame</span><span class="p">,</span><span class="n">new_c</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> |
1277 | + |
1278 | + <span class="sd">"""Attempt to close a Leo window.</span> |
1279 | + |
1280 | +<span class="sd"> Return False if the user veto's the close."""</span> |
1281 | + |
1282 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
1283 | + <span class="n">c</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">c</span> |
1284 | + |
1285 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">c</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">callers</span><span class="p">())</span> |
1286 | + |
1287 | + <span class="n">c</span><span class="o">.</span><span class="n">endEditing</span><span class="p">()</span> <span class="c"># Commit any open edits.</span> |
1288 | + |
1289 | + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">promptingForClose</span><span class="p">:</span> |
1290 | + <span class="c"># There is already a dialog open asking what to do.</span> |
1291 | + <span class="k">return</span> <span class="bp">False</span> |
1292 | + |
1293 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">recentFilesManager</span><span class="o">.</span><span class="n">writeRecentFilesFile</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> |
1294 | + <span class="c"># Make sure .leoRecentFiles.txt is written.</span> |
1295 | + |
1296 | + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">changed</span><span class="p">:</span> |
1297 | + <span class="n">c</span><span class="o">.</span><span class="n">promptingForClose</span> <span class="o">=</span> <span class="bp">True</span> |
1298 | + <span class="n">veto</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">promptForSave</span><span class="p">()</span> |
1299 | + <span class="n">c</span><span class="o">.</span><span class="n">promptingForClose</span> <span class="o">=</span> <span class="bp">False</span> |
1300 | + <span class="k">if</span> <span class="n">veto</span><span class="p">:</span> <span class="k">return</span> <span class="bp">False</span> |
1301 | + |
1302 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">setLog</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> <span class="c"># no log until we reactive a window.</span> |
1303 | + |
1304 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"close-frame"</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">)</span> |
1305 | + <span class="c"># This may remove frame from the window list.</span> |
1306 | + |
1307 | + <span class="k">if</span> <span class="n">frame</span> <span class="ow">in</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
1308 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">destroyWindow</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> |
1309 | + |
1310 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
1311 | + <span class="n">c2</span> <span class="o">=</span> <span class="n">new_c</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">c</span> |
1312 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">selectLeoWindow</span><span class="p">(</span><span class="n">c2</span><span class="p">)</span> |
1313 | + |
1314 | + <span class="k">elif</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
1315 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">finishQuit</span><span class="p">()</span> |
1316 | + |
1317 | + <span class="k">return</span> <span class="bp">True</span> <span class="c"># The window has been closed.</span> |
1318 | + <span class="c">#@+node:ville.20090602181814.6219: *3* app.commanders</span></div> |
1319 | +<div class="viewcode-block" id="LeoApp.commanders"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.commanders">[docs]</a> <span class="k">def</span> <span class="nf">commanders</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1320 | + <span class="sd">""" Return list of currently active controllers """</span> |
1321 | + |
1322 | + <span class="k">return</span> <span class="p">[</span><span class="n">f</span><span class="o">.</span><span class="n">c</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">]</span> |
1323 | + <span class="c">#@+node:ekr.20090717112235.6007: *3* app.computeSignon</span></div> |
1324 | +<div class="viewcode-block" id="LeoApp.computeSignon"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.computeSignon">[docs]</a> <span class="k">def</span> <span class="nf">computeSignon</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1325 | + |
1326 | + <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> |
1327 | + |
1328 | + <span class="kn">import</span> <span class="nn">leo.core.leoVersion</span> <span class="kn">as</span> <span class="nn">leoVersion</span> |
1329 | + <span class="n">build</span><span class="p">,</span><span class="n">date</span> <span class="o">=</span> <span class="n">leoVersion</span><span class="o">.</span><span class="n">build</span><span class="p">,</span><span class="n">leoVersion</span><span class="o">.</span><span class="n">date</span> |
1330 | + <span class="n">guiVersion</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="ow">and</span> <span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">getFullVersion</span><span class="p">()</span> <span class="ow">or</span> <span class="s">'no gui!'</span> |
1331 | + <span class="n">leoVer</span> <span class="o">=</span> <span class="n">leoVersion</span><span class="o">.</span><span class="n">version</span> |
1332 | + <span class="n">n1</span><span class="p">,</span><span class="n">n2</span><span class="p">,</span><span class="n">n3</span><span class="p">,</span><span class="n">junk</span><span class="p">,</span><span class="n">junk</span><span class="o">=</span><span class="n">sys</span><span class="o">.</span><span class="n">version_info</span> |
1333 | + |
1334 | + <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'win'</span><span class="p">):</span> |
1335 | + <span class="n">sysVersion</span> <span class="o">=</span> <span class="s">'Windows '</span> |
1336 | + <span class="k">try</span><span class="p">:</span> |
1337 | + <span class="n">v</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">sys</span><span class="o">.</span><span class="n">getwindowsversion</span><span class="p">()</span> |
1338 | + <span class="n">sysVersion</span> <span class="o">+=</span> <span class="s">', '</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">z</span><span class="p">)</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">v</span><span class="p">])</span> |
1339 | + <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> |
1340 | + <span class="k">pass</span> |
1341 | + |
1342 | + <span class="k">else</span><span class="p">:</span> <span class="n">sysVersion</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> |
1343 | + |
1344 | + <span class="n">app</span><span class="o">.</span><span class="n">signon</span> <span class="o">=</span> <span class="s">'Leo </span><span class="si">%s</span><span class="s">, build </span><span class="si">%s</span><span class="s">, </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span> |
1345 | + <span class="n">leoVer</span><span class="p">,</span><span class="n">build</span><span class="p">,</span><span class="n">date</span><span class="p">)</span> |
1346 | + <span class="n">app</span><span class="o">.</span><span class="n">signon2</span> <span class="o">=</span> <span class="s">'Python </span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">, </span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span> |
1347 | + <span class="n">n1</span><span class="p">,</span><span class="n">n2</span><span class="p">,</span><span class="n">n3</span><span class="p">,</span><span class="n">guiVersion</span><span class="p">,</span><span class="n">sysVersion</span><span class="p">)</span> |
1348 | + <span class="c">#@+node:ekr.20100831090251.5838: *3* app.createXGui</span> |
1349 | + <span class="c">#@+node:ekr.20100831090251.5840: *4* app.createCursesGui</span></div> |
1350 | +<div class="viewcode-block" id="LeoApp.createCursesGui"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.createCursesGui">[docs]</a> <span class="k">def</span> <span class="nf">createCursesGui</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="o">=</span><span class="s">''</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> |
1351 | + |
1352 | + <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> |
1353 | + |
1354 | + <span class="n">app</span><span class="o">.</span><span class="n">pluginsController</span><span class="o">.</span><span class="n">loadOnePlugin</span><span class="p">(</span><span class="s">'leo.plugins.cursesGui'</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span> |
1355 | + <span class="c">#@+node:ekr.20090619065122.8593: *4* app.createDefaultGui</span></div> |
1356 | +<div class="viewcode-block" id="LeoApp.createDefaultGui"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.createDefaultGui">[docs]</a> <span class="k">def</span> <span class="nf">createDefaultGui</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="o">=</span><span class="s">''</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> |
1357 | + |
1358 | + <span class="sd">"""A convenience routines for plugins to create the default gui class."""</span> |
1359 | + |
1360 | + <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> <span class="p">;</span> <span class="n">argName</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">guiArgName</span> |
1361 | + |
1362 | + <span class="c"># This method can be called twice if we had to get .leoID.txt.</span> |
1363 | + <span class="k">if</span> <span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">:</span> <span class="k">return</span> |
1364 | + |
1365 | + <span class="k">if</span> <span class="n">argName</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'qt'</span><span class="p">,</span><span class="s">'qttabs'</span><span class="p">):</span> <span class="c"># 2011/06/15.</span> |
1366 | + <span class="n">app</span><span class="o">.</span><span class="n">createQtGui</span><span class="p">(</span><span class="n">fileName</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span> |
1367 | + <span class="k">elif</span> <span class="n">argName</span> <span class="o">==</span> <span class="s">'null'</span><span class="p">:</span> |
1368 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">nullGui</span> |
1369 | + <span class="k">elif</span> <span class="n">argName</span> <span class="o">==</span> <span class="s">'curses'</span><span class="p">:</span> |
1370 | + <span class="n">app</span><span class="o">.</span><span class="n">createCursesGui</span><span class="p">()</span> |
1371 | + |
1372 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">:</span> |
1373 | + <span class="k">print</span><span class="p">(</span><span class="s">'Leo requires Qt to be installed.'</span><span class="p">)</span> |
1374 | + <span class="c">#@+node:ekr.20031218072017.1938: *4* app.createNullGuiWithScript</span></div> |
1375 | +<div class="viewcode-block" id="LeoApp.createNullGuiWithScript"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.createNullGuiWithScript">[docs]</a> <span class="k">def</span> <span class="nf">createNullGuiWithScript</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">script</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> |
1376 | + |
1377 | + <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> |
1378 | + |
1379 | + <span class="n">app</span><span class="o">.</span><span class="n">batchMode</span> <span class="o">=</span> <span class="bp">True</span> |
1380 | + <span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">nullGui</span> |
1381 | + <span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">setScript</span><span class="p">(</span><span class="n">script</span><span class="p">)</span> |
1382 | + <span class="c">#@+node:ekr.20090202191501.1: *4* app.createQtGui</span></div> |
1383 | +<div class="viewcode-block" id="LeoApp.createQtGui"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.createQtGui">[docs]</a> <span class="k">def</span> <span class="nf">createQtGui</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="o">=</span><span class="s">''</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> |
1384 | + |
1385 | + <span class="c"># Do NOT omit fileName param: it is used in plugin code.</span> |
1386 | + |
1387 | + <span class="sd">"""A convenience routines for plugins to create the Qt gui class."""</span> |
1388 | + |
1389 | + <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> |
1390 | + <span class="k">try</span><span class="p">:</span> |
1391 | + <span class="c"># Take care to try the same imports as in qtGui.py.</span> |
1392 | + <span class="kn">import</span> <span class="nn">PyQt4.QtCore</span> |
1393 | + <span class="kn">import</span> <span class="nn">PyQt4.QtGui</span> |
1394 | + <span class="kn">import</span> <span class="nn">leo.plugins.qtGui</span> <span class="kn">as</span> <span class="nn">qtGui</span> |
1395 | + <span class="k">if</span> <span class="mi">0</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">PyQt4</span><span class="p">)</span> <span class="c"># To remove a pyflakes warning.</span> |
1396 | + <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> |
1397 | + <span class="n">qtGui</span> <span class="o">=</span> <span class="bp">None</span> |
1398 | + |
1399 | + <span class="k">if</span> <span class="n">qtGui</span><span class="p">:</span> |
1400 | + <span class="n">qtGui</span><span class="o">.</span><span class="n">init</span><span class="p">()</span> |
1401 | + <span class="k">if</span> <span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="ow">and</span> <span class="n">fileName</span> <span class="ow">and</span> <span class="n">verbose</span><span class="p">:</span> |
1402 | + <span class="k">print</span><span class="p">(</span><span class="s">'qtGui created in </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">fileName</span><span class="p">)</span> |
1403 | + <span class="c">#@+node:ekr.20090126063121.3: *4* app.createWxGui</span></div> |
1404 | +<div class="viewcode-block" id="LeoApp.createWxGui"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.createWxGui">[docs]</a> <span class="k">def</span> <span class="nf">createWxGui</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="o">=</span><span class="s">''</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> |
1405 | + |
1406 | + <span class="c"># Do NOT omit fileName param: it is used in plugin code.</span> |
1407 | + |
1408 | + <span class="sd">"""A convenience routines for plugins to create the wx gui class."""</span> |
1409 | + |
1410 | + <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> |
1411 | + |
1412 | + <span class="n">app</span><span class="o">.</span><span class="n">pluginsController</span><span class="o">.</span><span class="n">loadOnePlugin</span> <span class="p">(</span><span class="s">'leo.plugins.wxGui'</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span> |
1413 | + |
1414 | + <span class="k">if</span> <span class="n">fileName</span> <span class="ow">and</span> <span class="n">verbose</span><span class="p">:</span> |
1415 | + |
1416 | + <span class="k">print</span><span class="p">(</span><span class="s">'wxGui created in </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">fileName</span><span class="p">)</span> |
1417 | + <span class="c">#@+node:ekr.20031218072017.2612: *3* app.destroyAllOpenWithFiles</span></div> |
1418 | +<div class="viewcode-block" id="LeoApp.destroyAllOpenWithFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.destroyAllOpenWithFiles">[docs]</a> <span class="k">def</span> <span class="nf">destroyAllOpenWithFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1419 | + |
1420 | + <span class="sd">"""Try to remove temp files created with the Open With command.</span> |
1421 | + |
1422 | +<span class="sd"> This may fail if the files are still open.</span> |
1423 | + |
1424 | +<span class="sd"> Called by g.app.finishQuit"""</span> |
1425 | + |
1426 | + <span class="c"># We can't use g.es here because the log stream no longer exists.</span> |
1427 | + |
1428 | + <span class="k">for</span> <span class="n">theDict</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">openWithFiles</span><span class="p">[:]:</span> |
1429 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">destroyOpenWithFileWithDict</span><span class="p">(</span><span class="n">theDict</span><span class="p">)</span> |
1430 | + |
1431 | + <span class="c"># Delete the list so the gc can recycle Leo windows!</span> |
1432 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">openWithFiles</span> <span class="o">=</span> <span class="p">[]</span> |
1433 | + <span class="c">#@+node:ekr.20031218072017.2613: *3* app.destroyOpenWithFilesForFrame</span></div> |
1434 | +<div class="viewcode-block" id="LeoApp.destroyOpenWithFilesForFrame"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.destroyOpenWithFilesForFrame">[docs]</a> <span class="k">def</span> <span class="nf">destroyOpenWithFilesForFrame</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">frame</span><span class="p">):</span> |
1435 | + |
1436 | + <span class="sd">"""Close all "Open With" files associated with frame</span> |
1437 | + |
1438 | +<span class="sd"> Called by app.destroyWindow.</span> |
1439 | +<span class="sd"> """</span> |
1440 | + |
1441 | + <span class="c"># Make a copy of the list: it may change in the loop.</span> |
1442 | + <span class="n">openWithFiles</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">openWithFiles</span> |
1443 | + |
1444 | + <span class="k">for</span> <span class="n">theDict</span> <span class="ow">in</span> <span class="n">openWithFiles</span><span class="p">[:]:</span> <span class="c"># 6/30/03</span> |
1445 | + <span class="n">c</span> <span class="o">=</span> <span class="n">theDict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"c"</span><span class="p">)</span> |
1446 | + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span> <span class="o">==</span> <span class="n">frame</span><span class="p">:</span> |
1447 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">destroyOpenWithFileWithDict</span><span class="p">(</span><span class="n">theDict</span><span class="p">)</span> |
1448 | + <span class="c">#@+node:ekr.20031218072017.2614: *3* app.destroyOpenWithFileWithDict</span></div> |
1449 | +<div class="viewcode-block" id="LeoApp.destroyOpenWithFileWithDict"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.destroyOpenWithFileWithDict">[docs]</a> <span class="k">def</span> <span class="nf">destroyOpenWithFileWithDict</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">theDict</span><span class="p">):</span> |
1450 | + |
1451 | + <span class="sd">'''</span> |
1452 | +<span class="sd"> A helper for app.destroyAllOpenWithFiles and</span> |
1453 | +<span class="sd"> app.destroyOpenWithFilesForFrame.</span> |
1454 | +<span class="sd"> '''</span> |
1455 | + |
1456 | + <span class="n">path</span> <span class="o">=</span> <span class="n">theDict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"path"</span><span class="p">)</span> |
1457 | + <span class="k">if</span> <span class="n">path</span> <span class="ow">and</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">path</span><span class="p">):</span> |
1458 | + <span class="k">try</span><span class="p">:</span> |
1459 | + <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> |
1460 | + <span class="n">g</span><span class="o">.</span><span class="n">pr</span><span class="p">(</span><span class="s">"deleting temp file: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="n">g</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> |
1461 | + <span class="k">except</span><span class="p">:</span> |
1462 | + <span class="n">g</span><span class="o">.</span><span class="n">pr</span><span class="p">(</span><span class="s">"can not delete temp file: </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="n">path</span><span class="p">)</span> |
1463 | + |
1464 | + <span class="c"># Remove theDict from the list so the gc can recycle the Leo window!</span> |
1465 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">openWithFiles</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">theDict</span><span class="p">)</span> |
1466 | + <span class="c">#@+node:ekr.20031218072017.2615: *3* app.destroyWindow</span></div> |
1467 | +<div class="viewcode-block" id="LeoApp.destroyWindow"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.destroyWindow">[docs]</a> <span class="k">def</span> <span class="nf">destroyWindow</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">frame</span><span class="p">):</span> |
1468 | + |
1469 | + <span class="c"># g.trace(frame in g.app.windowList,frame)</span> |
1470 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">destroyOpenWithFilesForFrame</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> |
1471 | + |
1472 | + <span class="k">if</span> <span class="n">frame</span> <span class="ow">in</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
1473 | + <span class="c"># g.trace(g.app.windowList)</span> |
1474 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> |
1475 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">forgetOpenFile</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">fileName</span><span class="p">())</span> |
1476 | + |
1477 | + <span class="c"># force the window to go away now.</span> |
1478 | + <span class="c"># Important: this also destroys all the objects of the commander.</span> |
1479 | + <span class="n">frame</span><span class="o">.</span><span class="n">destroySelf</span><span class="p">()</span> |
1480 | + <span class="c">#@+node:ekr.20031218072017.1732: *3* app.finishQuit</span></div> |
1481 | +<div class="viewcode-block" id="LeoApp.finishQuit"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.finishQuit">[docs]</a> <span class="k">def</span> <span class="nf">finishQuit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1482 | + |
1483 | + <span class="c"># forceShutdown may already have fired the "end1" hook.</span> |
1484 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">killed</span><span class="p">:</span> |
1485 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"end1"</span><span class="p">)</span> |
1486 | + |
1487 | + <span class="bp">self</span><span class="o">.</span><span class="n">destroyAllOpenWithFiles</span><span class="p">()</span> |
1488 | + |
1489 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">:</span> |
1490 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">destroySelf</span><span class="p">()</span> |
1491 | + |
1492 | + <span class="c"># Don't use g.trace!</span> |
1493 | + <span class="c"># print('app.finishQuit: setting g.app.killed',g.callers())</span> |
1494 | + |
1495 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">killed</span> <span class="o">=</span> <span class="bp">True</span> |
1496 | + <span class="c"># Disable all further hooks and events.</span> |
1497 | + <span class="c"># Alas, "idle" events can still be called</span> |
1498 | + <span class="c"># even after the following code.</span> |
1499 | + |
1500 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">afterHandler</span><span class="p">:</span> |
1501 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">afterHandler</span> <span class="o">=</span> <span class="bp">None</span> |
1502 | + <span class="c">#@+node:ekr.20031218072017.2616: *3* app.forceShutdown</span></div> |
1503 | +<div class="viewcode-block" id="LeoApp.forceShutdown"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.forceShutdown">[docs]</a> <span class="k">def</span> <span class="nf">forceShutdown</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1504 | + |
1505 | + <span class="sd">"""Forces an immediate shutdown of Leo at any time.</span> |
1506 | + |
1507 | +<span class="sd"> In particular, may be called from plugins during startup."""</span> |
1508 | + |
1509 | + <span class="c"># Wait until everything is quiet before really quitting.</span> |
1510 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"end1"</span><span class="p">)</span> |
1511 | + |
1512 | + <span class="bp">self</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Disable writeWaitingLog</span> |
1513 | + <span class="bp">self</span><span class="o">.</span><span class="n">killed</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># Disable all further hooks.</span> |
1514 | + |
1515 | + <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">windowList</span><span class="p">[:]:</span> |
1516 | + <span class="bp">self</span><span class="o">.</span><span class="n">destroyWindow</span><span class="p">(</span><span class="n">w</span><span class="p">)</span> |
1517 | + |
1518 | + <span class="bp">self</span><span class="o">.</span><span class="n">finishQuit</span><span class="p">()</span> |
1519 | + <span class="c">#@+node:ekr.20031218072017.2188: *3* app.newCommander & helper</span></div> |
1520 | +<div class="viewcode-block" id="LeoApp.newCommander"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.newCommander">[docs]</a> <span class="k">def</span> <span class="nf">newCommander</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="p">,</span><span class="n">relativeFileName</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">gui</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">previousSettings</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> |
1521 | + |
1522 | + <span class="sd">"""Create a commander and its view frame for the Leo main window."""</span> |
1523 | + |
1524 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
1525 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'g.app.newCommander: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="nb">repr</span><span class="p">(</span><span class="n">fileName</span><span class="p">))</span> |
1526 | + |
1527 | + <span class="c"># Create the commander and its subcommanders.</span> |
1528 | + <span class="c"># This takes about 3/4 sec when called by the leoBridge module.</span> |
1529 | + <span class="kn">import</span> <span class="nn">leo.core.leoCommands</span> <span class="kn">as</span> <span class="nn">leoCommands</span> |
1530 | + |
1531 | + <span class="k">return</span> <span class="n">leoCommands</span><span class="o">.</span><span class="n">Commands</span><span class="p">(</span><span class="n">fileName</span><span class="p">,</span><span class="n">relativeFileName</span><span class="p">,</span><span class="n">gui</span><span class="p">,</span><span class="n">previousSettings</span><span class="p">)</span> |
1532 | + <span class="c">#@+node:ekr.20031218072017.2617: *3* app.onQuit</span></div> |
1533 | +<div class="viewcode-block" id="LeoApp.onQuit"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.onQuit">[docs]</a> <span class="k">def</span> <span class="nf">onQuit</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> |
1534 | + |
1535 | + <span class="sd">'''Exit Leo, prompting to save unsaved outlines first.'''</span> |
1536 | + |
1537 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">quitting</span> <span class="o">=</span> <span class="bp">True</span> |
1538 | + |
1539 | + <span class="c"># Don't use g.trace here.</span> |
1540 | + <span class="c"># print('onQuit',g.app.save_session,g.app.sessionManager)</span> |
1541 | + |
1542 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">save_session</span> <span class="ow">and</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">sessionManager</span><span class="p">:</span> |
1543 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">sessionManager</span><span class="o">.</span><span class="n">save_snapshot</span><span class="p">()</span> |
1544 | + |
1545 | + <span class="k">while</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
1546 | + <span class="n">w</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> |
1547 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">closeLeoWindow</span><span class="p">(</span><span class="n">w</span><span class="p">):</span> |
1548 | + <span class="k">break</span> |
1549 | + |
1550 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
1551 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">quitting</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># If we get here the quit has been disabled.</span> |
1552 | + <span class="c">#@+node:ekr.20120304065838.15588: *3* app.selectLeoWindow</span></div> |
1553 | +<div class="viewcode-block" id="LeoApp.selectLeoWindow"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.selectLeoWindow">[docs]</a> <span class="k">def</span> <span class="nf">selectLeoWindow</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">):</span> |
1554 | + |
1555 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
1556 | + <span class="k">assert</span> <span class="n">c</span> |
1557 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">title</span><span class="p">)</span> |
1558 | + |
1559 | + <span class="n">frame</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span> |
1560 | + <span class="n">frame</span><span class="o">.</span><span class="n">deiconify</span><span class="p">()</span> |
1561 | + <span class="n">frame</span><span class="o">.</span><span class="n">lift</span><span class="p">()</span> |
1562 | + <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> |
1563 | + |
1564 | + <span class="n">master</span> <span class="o">=</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">top</span><span class="p">,</span><span class="s">'leo_master'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">frame</span><span class="o">.</span><span class="n">top</span><span class="o">.</span><span class="n">leo_master</span> |
1565 | + |
1566 | + <span class="k">if</span> <span class="n">master</span><span class="p">:</span> <span class="c"># 2011/11/21: selecting the new tab ensures focus is set.</span> |
1567 | + <span class="c"># frame.top.leo_master is a TabbedTopLevel.</span> |
1568 | + <span class="n">master</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> |
1569 | + |
1570 | + <span class="n">c</span><span class="o">.</span><span class="n">bodyWantsFocus</span><span class="p">()</span> |
1571 | + <span class="n">c</span><span class="o">.</span><span class="n">outerUpdate</span><span class="p">()</span> |
1572 | + <span class="c">#@+node:ville.20090620122043.6275: *3* app.setGlobalDb</span></div> |
1573 | +<div class="viewcode-block" id="LeoApp.setGlobalDb"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.setGlobalDb">[docs]</a> <span class="k">def</span> <span class="nf">setGlobalDb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1574 | + <span class="sd">""" Create global pickleshare db</span> |
1575 | + |
1576 | +<span class="sd"> Usable by::</span> |
1577 | + |
1578 | +<span class="sd"> g.app.db['hello'] = [1,2,5]</span> |
1579 | + |
1580 | +<span class="sd"> """</span> |
1581 | + |
1582 | + <span class="c"># Fixes bug 670108.</span> |
1583 | + <span class="kn">import</span> <span class="nn">leo.core.leoCache</span> <span class="kn">as</span> <span class="nn">leoCache</span> |
1584 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">leoCache</span><span class="o">.</span><span class="n">cacher</span><span class="p">()</span><span class="o">.</span><span class="n">initGlobalDB</span><span class="p">()</span> |
1585 | + <span class="c">#@+node:ekr.20031218072017.1978: *3* app.setLeoID</span></div> |
1586 | +<div class="viewcode-block" id="LeoApp.setLeoID"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.setLeoID">[docs]</a> <span class="k">def</span> <span class="nf">setLeoID</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span> |
1587 | + |
1588 | + <span class="n">tag</span> <span class="o">=</span> <span class="s">".leoID.txt"</span> |
1589 | + <span class="n">homeLeoDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span> |
1590 | + <span class="n">globalConfigDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">globalConfigDir</span> |
1591 | + <span class="n">loadDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span> |
1592 | + |
1593 | + <span class="n">verbose</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span> |
1594 | + <span class="c">#@+<< return if we can set leoID from sys.leoID >></span> |
1595 | + <span class="c">#@+node:ekr.20031218072017.1979: *4* << return if we can set leoID from sys.leoID>></span> |
1596 | + <span class="c"># This would be set by in Python's sitecustomize.py file.</span> |
1597 | + |
1598 | + <span class="c"># Use hasattr & getattr to suppress pylint warning.</span> |
1599 | + <span class="c"># Use a "non-constant" attribute to suppress another warning!</span> |
1600 | + |
1601 | + <span class="n">nonConstantAttr</span> <span class="o">=</span> <span class="s">"leoID"</span> |
1602 | + |
1603 | + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">sys</span><span class="p">,</span><span class="n">nonConstantAttr</span><span class="p">):</span> |
1604 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">sys</span><span class="p">,</span><span class="n">nonConstantAttr</span><span class="p">)</span> |
1605 | + <span class="k">if</span> <span class="n">verbose</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
1606 | + <span class="n">g</span><span class="o">.</span><span class="n">red</span><span class="p">(</span><span class="s">"leoID="</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span><span class="p">,</span><span class="n">spaces</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> |
1607 | + <span class="c"># Careful: periods in the id field of a gnx will corrupt the .leo file!</span> |
1608 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'.'</span><span class="p">,</span><span class="s">'-'</span><span class="p">)</span> |
1609 | + <span class="k">return</span> |
1610 | + <span class="k">else</span><span class="p">:</span> |
1611 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="bp">None</span> |
1612 | + <span class="c">#@-<< return if we can set leoID from sys.leoID >></span> |
1613 | + <span class="c">#@+<< return if we can set leoID from "leoID.txt" >></span> |
1614 | + <span class="c">#@+node:ekr.20031218072017.1980: *4* << return if we can set leoID from "leoID.txt" >></span> |
1615 | + <span class="k">for</span> <span class="n">theDir</span> <span class="ow">in</span> <span class="p">(</span><span class="n">homeLeoDir</span><span class="p">,</span><span class="n">globalConfigDir</span><span class="p">,</span><span class="n">loadDir</span><span class="p">):</span> |
1616 | + <span class="c"># N.B. We would use the _working_ directory if theDir is None!</span> |
1617 | + <span class="k">if</span> <span class="n">theDir</span><span class="p">:</span> |
1618 | + <span class="k">try</span><span class="p">:</span> |
1619 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_join</span><span class="p">(</span><span class="n">theDir</span><span class="p">,</span><span class="n">tag</span><span class="p">)</span> |
1620 | + <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="s">'r'</span><span class="p">)</span> |
1621 | + <span class="n">s</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span> |
1622 | + <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> |
1623 | + <span class="k">if</span> <span class="n">s</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> |
1624 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> |
1625 | + <span class="c"># Careful: periods in the id field of a gnx</span> |
1626 | + <span class="c"># will corrupt the .leo file!</span> |
1627 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'.'</span><span class="p">,</span><span class="s">'-'</span><span class="p">)</span> |
1628 | + <span class="k">if</span> <span class="n">verbose</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
1629 | + <span class="n">g</span><span class="o">.</span><span class="n">red</span><span class="p">(</span><span class="s">'leoID='</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span><span class="p">,</span><span class="s">' (in '</span><span class="p">,</span><span class="n">theDir</span><span class="p">,</span><span class="s">')'</span><span class="p">,</span><span class="n">spaces</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> |
1630 | + <span class="k">return</span> |
1631 | + <span class="k">elif</span> <span class="n">verbose</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
1632 | + <span class="n">g</span><span class="o">.</span><span class="n">red</span><span class="p">(</span><span class="s">'empty '</span><span class="p">,</span><span class="n">tag</span><span class="p">,</span><span class="s">' (in '</span><span class="p">,</span><span class="n">theDir</span><span class="p">,</span><span class="s">')'</span><span class="p">,</span><span class="n">spaces</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> |
1633 | + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> |
1634 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="bp">None</span> |
1635 | + <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> |
1636 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="bp">None</span> |
1637 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'unexpected exception in app.setLeoID'</span><span class="p">)</span> |
1638 | + <span class="n">g</span><span class="o">.</span><span class="n">es_exception</span><span class="p">()</span> |
1639 | + <span class="c">#@-<< return if we can set leoID from "leoID.txt" >></span> |
1640 | + <span class="c">#@+<< return if we can set leoID from os.getenv('USER') >></span> |
1641 | + <span class="c">#@+node:ekr.20060211140947.1: *4* << return if we can set leoID from os.getenv('USER') >></span> |
1642 | + <span class="k">try</span><span class="p">:</span> |
1643 | + <span class="n">theId</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">'USER'</span><span class="p">)</span> |
1644 | + <span class="k">if</span> <span class="n">theId</span><span class="p">:</span> |
1645 | + <span class="k">if</span> <span class="n">verbose</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
1646 | + <span class="n">g</span><span class="o">.</span><span class="n">blue</span><span class="p">(</span><span class="s">"setting leoID from os.getenv('USER'):"</span><span class="p">,</span> |
1647 | + <span class="nb">repr</span><span class="p">(</span><span class="n">theId</span><span class="p">))</span> |
1648 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="n">theId</span> |
1649 | + <span class="c"># Careful: periods in the id field of a gnx</span> |
1650 | + <span class="c"># will corrupt the .leo file!</span> |
1651 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'.'</span><span class="p">,</span><span class="s">'-'</span><span class="p">)</span> |
1652 | + <span class="k">return</span> |
1653 | + |
1654 | + <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> |
1655 | + <span class="k">pass</span> |
1656 | + <span class="c">#@-<< return if we can set leoID from os.getenv('USER') >></span> |
1657 | + <span class="c">#@+<< put up a dialog requiring a valid id >></span> |
1658 | + <span class="c">#@+node:ekr.20031218072017.1981: *4* << put up a dialog requiring a valid id >></span> |
1659 | + <span class="c"># 2011/06/13: Don't put up a splash screen.</span> |
1660 | + <span class="c"># It would obscure the coming dialog.</span> |
1661 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">use_splash_screen</span> <span class="o">=</span> <span class="bp">False</span> |
1662 | + |
1663 | + <span class="c"># New in 4.1: get an id for gnx's. Plugins may set g.app.leoID.</span> |
1664 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
1665 | + <span class="c"># Create the Qt gui if it exists.</span> |
1666 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">createDefaultGui</span><span class="p">(</span><span class="n">fileName</span><span class="o">=</span><span class="s">'g.app.setLeoId'</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
1667 | + |
1668 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># Neither gui could be created: this should never happen.</span> |
1669 | + <span class="k">print</span><span class="p">(</span><span class="s">"Please enter LeoID (e.g. your username, 'johndoe'...)"</span><span class="p">)</span> |
1670 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> <span class="c"># 2010/02/04.</span> |
1671 | + <span class="n">leoid</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s">'LeoID: '</span><span class="p">)</span> |
1672 | + <span class="k">else</span><span class="p">:</span> |
1673 | + <span class="n">leoid</span> <span class="o">=</span> <span class="nb">raw_input</span><span class="p">(</span><span class="s">'LeoID: '</span><span class="p">)</span> |
1674 | + <span class="k">else</span><span class="p">:</span> |
1675 | + <span class="n">leoid</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">runAskLeoIDDialog</span><span class="p">()</span> |
1676 | + |
1677 | + <span class="c"># Bug fix: 2/6/05: put result in g.app.leoID.</span> |
1678 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="n">leoid</span> |
1679 | + |
1680 | + <span class="c"># Careful: periods in the id field of a gnx will corrupt the .leo file!</span> |
1681 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">'.'</span><span class="p">,</span><span class="s">'-'</span><span class="p">)</span> |
1682 | + |
1683 | + <span class="c"># g.trace(g.app.leoID)</span> |
1684 | + <span class="n">g</span><span class="o">.</span><span class="n">blue</span><span class="p">(</span><span class="s">'leoID='</span><span class="p">,</span><span class="nb">repr</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span><span class="p">),</span><span class="n">spaces</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> |
1685 | + <span class="c">#@-<< put up a dialog requiring a valid id >></span> |
1686 | + <span class="c">#@+<< attempt to create leoID.txt >></span> |
1687 | + <span class="c">#@+node:ekr.20031218072017.1982: *4* << attempt to create leoID.txt >> (changed)</span> |
1688 | + <span class="k">for</span> <span class="n">theDir</span> <span class="ow">in</span> <span class="p">(</span><span class="n">homeLeoDir</span><span class="p">,</span><span class="n">globalConfigDir</span><span class="p">,</span><span class="n">loadDir</span><span class="p">):</span> |
1689 | + <span class="c"># N.B. We would use the _working_ directory if theDir is None!</span> |
1690 | + <span class="k">if</span> <span class="n">theDir</span><span class="p">:</span> |
1691 | + <span class="k">try</span><span class="p">:</span> |
1692 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_join</span><span class="p">(</span><span class="n">theDir</span><span class="p">,</span><span class="n">tag</span><span class="p">)</span> |
1693 | + <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="s">'w'</span><span class="p">)</span> |
1694 | + <span class="n">s</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span> |
1695 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> <span class="c"># 2010/08/27</span> |
1696 | + <span class="n">s</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">toEncodedString</span><span class="p">(</span><span class="n">s</span><span class="p">,</span><span class="n">encoding</span><span class="o">=</span><span class="s">'utf-8'</span><span class="p">,</span><span class="n">reportErrors</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
1697 | + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
1698 | + <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> |
1699 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
1700 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">''</span><span class="p">,</span><span class="n">tag</span><span class="p">,</span><span class="s">'created in'</span><span class="p">,</span><span class="n">theDir</span><span class="p">)</span> |
1701 | + <span class="k">return</span> |
1702 | + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> |
1703 | + <span class="k">pass</span> |
1704 | + |
1705 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'can not create'</span><span class="p">,</span><span class="n">tag</span><span class="p">,</span><span class="s">'in'</span><span class="p">,</span><span class="n">theDir</span><span class="p">)</span> |
1706 | + <span class="c">#@-<< attempt to create leoID.txt >></span> |
1707 | + <span class="c">#@+node:ekr.20031218072017.1847: *3* app.setLog, lockLog, unlocklog</span></div> |
1708 | +<div class="viewcode-block" id="LeoApp.setLog"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.setLog">[docs]</a> <span class="k">def</span> <span class="nf">setLog</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">log</span><span class="p">):</span> |
1709 | + |
1710 | + <span class="sd">"""set the frame to which log messages will go"""</span> |
1711 | + |
1712 | + <span class="c"># print("app.setLog:",log)</span> |
1713 | + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span><span class="p">:</span> |
1714 | + <span class="bp">self</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">log</span> |
1715 | +</div> |
1716 | +<div class="viewcode-block" id="LeoApp.lockLog"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.lockLog">[docs]</a> <span class="k">def</span> <span class="nf">lockLog</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1717 | + <span class="sd">"""Disable changes to the log"""</span> |
1718 | + <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">True</span> |
1719 | +</div> |
1720 | +<div class="viewcode-block" id="LeoApp.unlockLog"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.unlockLog">[docs]</a> <span class="k">def</span> <span class="nf">unlockLog</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1721 | + <span class="sd">"""Enable changes to the log"""</span> |
1722 | + <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">False</span> |
1723 | + <span class="c">#@+node:ekr.20031218072017.2619: *3* app.writeWaitingLog</span></div> |
1724 | +<div class="viewcode-block" id="LeoApp.writeWaitingLog"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.writeWaitingLog">[docs]</a> <span class="k">def</span> <span class="nf">writeWaitingLog</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">):</span> |
1725 | + |
1726 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> |
1727 | + <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> |
1728 | + |
1729 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> |
1730 | + <span class="c"># Do not call g.es, g.es_print, g.pr or g.trace here!</span> |
1731 | + <span class="k">print</span><span class="p">(</span><span class="s">'** writeWaitingLog'</span><span class="p">,</span><span class="s">'silent'</span><span class="p">,</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span><span class="p">,</span><span class="n">c</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">())</span> |
1732 | + <span class="c"># print('writeWaitingLog',g.callers())</span> |
1733 | + <span class="c"># import sys ; print('writeWaitingLog: argv',sys.argv)</span> |
1734 | + |
1735 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">exists</span><span class="p">:</span> |
1736 | + <span class="k">return</span> |
1737 | + |
1738 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
1739 | + <span class="n">app</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> |
1740 | + <span class="n">app</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> |
1741 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">setLog</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> <span class="c"># Prepare to requeue for other commanders.</span> |
1742 | + <span class="k">return</span> |
1743 | + |
1744 | + <span class="n">table</span> <span class="o">=</span> <span class="p">[</span> |
1745 | + <span class="p">(</span><span class="s">'Leo Log Window'</span><span class="p">,</span><span class="s">'red'</span><span class="p">),</span> |
1746 | + <span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">signon</span><span class="p">,</span><span class="bp">None</span><span class="p">),</span> |
1747 | + <span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">signon2</span><span class="p">,</span><span class="bp">None</span><span class="p">),</span> |
1748 | + <span class="p">]</span> |
1749 | + <span class="n">table</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> |
1750 | + |
1751 | + <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> <span class="c"># 2010/10/20</span> |
1752 | + <span class="n">app</span><span class="o">.</span><span class="n">logInited</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># Prevent recursive call.</span> |
1753 | + |
1754 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">app</span><span class="o">.</span><span class="n">signon_printed</span><span class="p">:</span> |
1755 | + <span class="n">app</span><span class="o">.</span><span class="n">signon_printed</span> <span class="o">=</span> <span class="bp">True</span> |
1756 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">app</span><span class="o">.</span><span class="n">silentMode</span><span class="p">:</span> <span class="c"># 2011/11/02:</span> |
1757 | + <span class="k">print</span><span class="p">(</span><span class="s">''</span><span class="p">)</span> |
1758 | + <span class="k">print</span><span class="p">(</span><span class="s">'** isPython3: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">)</span> |
1759 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">enableDB</span><span class="p">:</span> |
1760 | + <span class="k">print</span><span class="p">(</span><span class="s">'** caching disabled'</span><span class="p">)</span> |
1761 | + <span class="k">print</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">signon</span><span class="p">)</span> |
1762 | + <span class="k">print</span><span class="p">(</span><span class="n">app</span><span class="o">.</span><span class="n">signon2</span><span class="p">)</span> |
1763 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">app</span><span class="o">.</span><span class="n">silentMode</span><span class="p">:</span> <span class="c"># 2011/11/02:</span> |
1764 | + <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">app</span><span class="o">.</span><span class="n">printWaiting</span><span class="p">:</span> |
1765 | + <span class="k">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
1766 | + <span class="n">app</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> |
1767 | + |
1768 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">app</span><span class="o">.</span><span class="n">silentMode</span><span class="p">:</span> <span class="c"># 2011/11/02:</span> |
1769 | + <span class="k">for</span> <span class="n">s</span><span class="p">,</span><span class="n">color</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> |
1770 | + <span class="n">app</span><span class="o">.</span><span class="n">logWaiting</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,(</span><span class="n">s</span><span class="o">+</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">,</span><span class="n">color</span><span class="p">),)</span> |
1771 | + <span class="k">for</span> <span class="n">s</span><span class="p">,</span><span class="n">color</span> <span class="ow">in</span> <span class="n">app</span><span class="o">.</span><span class="n">logWaiting</span><span class="p">:</span> |
1772 | + <span class="n">g</span><span class="o">.</span><span class="n">es</span><span class="p">(</span><span class="s">''</span><span class="p">,</span><span class="n">s</span><span class="p">,</span><span class="n">color</span><span class="o">=</span><span class="n">color</span><span class="p">,</span><span class="n">newline</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> |
1773 | + <span class="c"># The caller must write the newlines.</span> |
1774 | + <span class="n">app</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> |
1775 | + |
1776 | + <span class="c"># Essential when opening multiple files...</span> |
1777 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">setLog</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> |
1778 | + <span class="c">#@+node:ekr.20120427064024.10068: *3* app.Detecting already-open files</span> |
1779 | + <span class="c">#@+node:ekr.20120427064024.10064: *4* app.checkForOpenFile</span></div> |
1780 | +<div class="viewcode-block" id="LeoApp.checkForOpenFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.checkForOpenFile">[docs]</a> <span class="k">def</span> <span class="nf">checkForOpenFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
1781 | + |
1782 | + <span class="n">d</span><span class="p">,</span><span class="n">tag</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">db</span><span class="p">,</span><span class="s">'open-leo-files'</span> |
1783 | + |
1784 | + <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">batchMode</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">reverting</span><span class="p">:</span> |
1785 | + <span class="k">return</span> <span class="bp">True</span> |
1786 | + <span class="k">else</span><span class="p">:</span> |
1787 | + <span class="n">aList</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> |
1788 | + <span class="k">if</span> <span class="n">fn</span> <span class="ow">in</span> <span class="n">aList</span><span class="p">:</span> |
1789 | + <span class="n">result</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">runAskYesNoDialog</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> |
1790 | + <span class="n">title</span><span class="o">=</span><span class="s">'Open Leo File Again?'</span><span class="p">,</span> |
1791 | + <span class="n">message</span><span class="o">=</span><span class="s">'</span><span class="si">%s</span><span class="s"> is already open. Open it again?'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">),</span> |
1792 | + <span class="p">)</span> |
1793 | + <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="s">'yes'</span><span class="p">:</span> |
1794 | + <span class="n">clear</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">runAskYesNoDialog</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> |
1795 | + <span class="n">title</span><span class="o">=</span><span class="s">'Reset open count?'</span><span class="p">,</span> |
1796 | + <span class="n">message</span><span class="o">=</span><span class="s">'Reset open count for </span><span class="si">%s</span><span class="s">?'</span> \ |
1797 | + <span class="s">"</span><span class="se">\n</span><span class="s">Say yes if you know this outline"</span> \ |
1798 | + <span class="s">"</span><span class="se">\n</span><span class="s">is not really open elsewhere"</span><span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">),</span> |
1799 | + <span class="p">)</span> |
1800 | + <span class="k">if</span> <span class="n">clear</span> <span class="o">==</span> <span class="s">'yes'</span><span class="p">:</span> |
1801 | + <span class="n">d</span><span class="p">[</span><span class="n">tag</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">i</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">d</span><span class="p">[</span><span class="n">tag</span><span class="p">]</span> <span class="k">if</span> <span class="n">i</span> <span class="o">!=</span> <span class="n">fn</span><span class="p">]</span> |
1802 | + <span class="c"># IMPORTANT - rest of load process will add another</span> |
1803 | + <span class="c"># entry for this Leo instance, don't do it here</span> |
1804 | + <span class="k">return</span> <span class="n">result</span> <span class="o">==</span> <span class="s">'yes'</span> |
1805 | + <span class="k">else</span><span class="p">:</span> |
1806 | + <span class="k">return</span> <span class="bp">True</span> |
1807 | + <span class="c">#@+node:ekr.20120427064024.10066: *4* app.forgetOpenFile</span></div> |
1808 | +<div class="viewcode-block" id="LeoApp.forgetOpenFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.forgetOpenFile">[docs]</a> <span class="k">def</span> <span class="nf">forgetOpenFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
1809 | + |
1810 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
1811 | + <span class="n">d</span><span class="p">,</span><span class="n">tag</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">db</span><span class="p">,</span><span class="s">'open-leo-files'</span> |
1812 | + |
1813 | + <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">batchMode</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">reverting</span><span class="p">:</span> |
1814 | + <span class="k">pass</span> |
1815 | + <span class="k">else</span><span class="p">:</span> |
1816 | + <span class="n">aList</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> |
1817 | + <span class="k">if</span> <span class="n">fn</span> <span class="ow">in</span> <span class="n">aList</span><span class="p">:</span> |
1818 | + <span class="n">aList</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
1819 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> |
1820 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'removed: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">),</span><span class="n">g</span><span class="o">.</span><span class="n">callers</span><span class="p">())</span> |
1821 | + <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">aList</span><span class="p">:</span> |
1822 | + <span class="k">print</span><span class="p">(</span><span class="s">' </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">z</span><span class="p">))</span> |
1823 | + <span class="n">d</span><span class="p">[</span><span class="n">tag</span><span class="p">]</span> <span class="o">=</span> <span class="n">aList</span> |
1824 | + <span class="k">else</span><span class="p">:</span> |
1825 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'did not remove: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">))</span> |
1826 | + <span class="c">#@+node:ekr.20120427064024.10065: *4* app.rememberOpenFile</span></div> |
1827 | +<div class="viewcode-block" id="LeoApp.rememberOpenFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LeoApp.rememberOpenFile">[docs]</a> <span class="k">def</span> <span class="nf">rememberOpenFile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
1828 | + |
1829 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
1830 | + <span class="n">d</span><span class="p">,</span><span class="n">tag</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">db</span><span class="p">,</span><span class="s">'open-leo-files'</span> |
1831 | + |
1832 | + <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="bp">None</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">batchMode</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">reverting</span><span class="p">:</span> |
1833 | + <span class="k">pass</span> |
1834 | + <span class="k">elif</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">preReadFlag</span><span class="p">:</span> |
1835 | + <span class="k">pass</span> |
1836 | + <span class="k">else</span><span class="p">:</span> |
1837 | + <span class="n">aList</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> |
1838 | + <span class="c"># It's proper to add duplicates to this list.</span> |
1839 | + <span class="n">aList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
1840 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> |
1841 | + <span class="c"># Trace doesn't work well while initing.</span> |
1842 | + <span class="k">print</span><span class="p">(</span><span class="s">'rememberOpenFile:added: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">))</span> |
1843 | + <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">aList</span><span class="p">:</span> |
1844 | + <span class="k">print</span><span class="p">(</span><span class="s">' </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">z</span><span class="p">))</span> |
1845 | + <span class="n">d</span><span class="p">[</span><span class="n">tag</span><span class="p">]</span> <span class="o">=</span> <span class="n">aList</span> |
1846 | + <span class="c">#@-others</span> |
1847 | +<span class="c">#@+node:ekr.20120209051836.10242: ** class LoadManager</span></div></div> |
1848 | +<div class="viewcode-block" id="LoadManager"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager">[docs]</a><span class="k">class</span> <span class="nc">LoadManager</span><span class="p">:</span> |
1849 | + |
1850 | + <span class="sd">'''A class to manage loading .leo files, including configuration files.'''</span> |
1851 | + |
1852 | + <span class="c">#@+others</span> |
1853 | + <span class="c">#@+node:ekr.20120214060149.15851: *3* LM.ctor</span> |
1854 | + <span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1855 | + |
1856 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
1857 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'LoadManager.__init__'</span><span class="p">)</span> |
1858 | + |
1859 | + <span class="c"># Global settings & shortcuts dicts.</span> |
1860 | + <span class="c"># The are the defaults for computing settings and shortcuts for all loaded files.</span> |
1861 | + <span class="bp">self</span><span class="o">.</span><span class="n">globalSettingsDict</span> <span class="o">=</span> <span class="bp">None</span> |
1862 | + <span class="c"># A g.TypedDict containing the merger of default settings,</span> |
1863 | + <span class="c"># settings in leoSettings.leo and settings in myLeoSettings.leo</span> |
1864 | + <span class="bp">self</span><span class="o">.</span><span class="n">globalShortcutsDict</span> <span class="o">=</span> <span class="bp">None</span> |
1865 | + <span class="c"># A g.TypedDictOfLists containg the merger of shortcuts in</span> |
1866 | + <span class="c"># leoSettings.leo and settings in myLeoSettings.leo.</span> |
1867 | + |
1868 | + <span class="c"># LoadManager ivars corresponding to user options....</span> |
1869 | + <span class="bp">self</span><span class="o">.</span><span class="n">files</span> <span class="o">=</span> <span class="p">[]</span> |
1870 | + <span class="c"># List of files to be loaded.</span> |
1871 | + <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> |
1872 | + <span class="c"># Dictionary of user options. Keys are option names.</span> |
1873 | + |
1874 | + <span class="k">if</span> <span class="mi">0</span><span class="p">:</span> <span class="c"># use lm.options.get instead.</span> |
1875 | + <span class="bp">self</span><span class="o">.</span><span class="n">script</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The fileName of a script, or None.</span> |
1876 | + <span class="bp">self</span><span class="o">.</span><span class="n">script_name</span> <span class="o">=</span> <span class="bp">None</span> |
1877 | + <span class="bp">self</span><span class="o">.</span><span class="n">script_path</span> <span class="o">=</span> <span class="bp">None</span> |
1878 | + <span class="bp">self</span><span class="o">.</span><span class="n">script_path_w</span> <span class="o">=</span> <span class="bp">None</span> |
1879 | + <span class="bp">self</span><span class="o">.</span><span class="n">screenshot_fn</span> <span class="o">=</span> <span class="bp">None</span> |
1880 | + <span class="bp">self</span><span class="o">.</span><span class="n">selectHeadline</span> <span class="o">=</span> <span class="bp">None</span> |
1881 | + <span class="bp">self</span><span class="o">.</span><span class="n">versionFlag</span> <span class="o">=</span> <span class="bp">False</span> |
1882 | + <span class="bp">self</span><span class="o">.</span><span class="n">windowFlag</span> <span class="o">=</span> <span class="bp">False</span> |
1883 | + <span class="bp">self</span><span class="o">.</span><span class="n">windowSize</span> <span class="o">=</span> <span class="bp">None</span> |
1884 | + |
1885 | + <span class="c"># Ivars of *other* classes corresponding to command-line arguments...</span> |
1886 | + <span class="c"># g.app.batchMode Set in createNullGuiWithScript</span> |
1887 | + <span class="c"># g.app.gui = None The gui class.</span> |
1888 | + <span class="c"># g.app.guiArgName The gui name given in --gui option.</span> |
1889 | + <span class="c"># g.app.qt_use_tabs </span> |
1890 | + <span class="c"># g.app.silentMode </span> |
1891 | + <span class="c"># g.app.start_fullscreen </span> |
1892 | + <span class="c"># g.app.start_maximized .</span> |
1893 | + <span class="c"># g.app.start_minimized</span> |
1894 | + <span class="c"># g.app.useIpython</span> |
1895 | + <span class="c"># g.app.use_splash_screen</span> |
1896 | + <span class="c"># g.enableDB --no-cache</span> |
1897 | + <span class="c">#@+node:ekr.20120211121736.10812: *3* LM.Directory & file utils</span> |
1898 | + <span class="c">#@+node:ekr.20120219154958.10481: *4* LM.completeFileName</span> |
1899 | +<div class="viewcode-block" id="LoadManager.completeFileName"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.completeFileName">[docs]</a> <span class="k">def</span> <span class="nf">completeFileName</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="p">):</span> |
1900 | + |
1901 | + <span class="n">fileName</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">toUnicode</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
1902 | + <span class="n">fileName</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
1903 | + |
1904 | + <span class="c"># 2011/10/12: don't add .leo to *any* file.</span> |
1905 | + <span class="k">return</span> <span class="n">fileName</span> |
1906 | + <span class="c">#@+node:ekr.20120209051836.10372: *4* LM.computeLeoSettingsPath</span></div> |
1907 | +<div class="viewcode-block" id="LoadManager.computeLeoSettingsPath"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeLeoSettingsPath">[docs]</a> <span class="k">def</span> <span class="nf">computeLeoSettingsPath</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1908 | + |
1909 | + <span class="sd">'''Return the full path to leoSettings.leo.'''</span> |
1910 | + |
1911 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> |
1912 | + <span class="c"># lm = self</span> |
1913 | + <span class="n">join</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize_join</span> |
1914 | + <span class="n">settings_fn</span> <span class="o">=</span> <span class="s">'leoSettings.leo'</span> |
1915 | + <span class="n">table</span> <span class="o">=</span> <span class="p">(</span> |
1916 | + <span class="c"># First, leoSettings.leo in the home directories.</span> |
1917 | + <span class="n">join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeDir</span><span class="p">,</span> <span class="n">settings_fn</span><span class="p">),</span> |
1918 | + <span class="n">join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span><span class="p">,</span> <span class="n">settings_fn</span><span class="p">),</span> |
1919 | + <span class="c"># Last, leoSettings.leo in leo/config directory.</span> |
1920 | + <span class="n">join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">globalConfigDir</span><span class="p">,</span> <span class="n">settings_fn</span><span class="p">)</span> |
1921 | + <span class="p">)</span> |
1922 | + <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> |
1923 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'computeLeoSettingsPath'</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">path</span><span class="p">),</span><span class="nb">repr</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> |
1924 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">path</span><span class="p">):</span> |
1925 | + <span class="k">break</span> |
1926 | + <span class="k">else</span><span class="p">:</span> |
1927 | + <span class="n">path</span> <span class="o">=</span> <span class="bp">None</span> |
1928 | + <span class="k">return</span> <span class="n">path</span> |
1929 | + <span class="c">#@+node:ekr.20120209051836.10373: *4* LM.computeMyLeoSettingsPath</span></div> |
1930 | +<div class="viewcode-block" id="LoadManager.computeMyLeoSettingsPath"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeMyLeoSettingsPath">[docs]</a> <span class="k">def</span> <span class="nf">computeMyLeoSettingsPath</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1931 | + |
1932 | + <span class="sd">'''Return the full path to myLeoSettings.leo.</span> |
1933 | + |
1934 | +<span class="sd"> The "footnote": Get the local directory from lm.files[0]'''</span> |
1935 | + |
1936 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> |
1937 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
1938 | + <span class="n">join</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize_join</span> |
1939 | + <span class="n">settings_fn</span> <span class="o">=</span> <span class="s">'myLeoSettings.leo'</span> |
1940 | + |
1941 | + <span class="c"># This seems pointless: we need a machine *directory*.</span> |
1942 | + <span class="c"># For now, however, we'll keep the existing code as is.</span> |
1943 | + <span class="n">machine_fn</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeMachineName</span><span class="p">()</span> <span class="o">+</span> <span class="n">settings_fn</span> |
1944 | + |
1945 | + <span class="c"># First, compute the directory of the first loaded file.</span> |
1946 | + <span class="c"># All entries in lm.files are full, absolute paths.</span> |
1947 | + <span class="n">localDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_dirname</span><span class="p">(</span><span class="n">lm</span><span class="o">.</span><span class="n">files</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">if</span> <span class="n">lm</span><span class="o">.</span><span class="n">files</span> <span class="k">else</span> <span class="bp">None</span> |
1948 | + |
1949 | + <span class="n">table</span> <span class="o">=</span> <span class="p">(</span> |
1950 | + <span class="c"># First, myLeoSettings.leo in the local directory</span> |
1951 | + <span class="n">join</span><span class="p">(</span><span class="n">localDir</span><span class="p">,</span> <span class="n">settings_fn</span><span class="p">),</span> |
1952 | + |
1953 | + <span class="c"># Next, myLeoSettings.leo in the home directories.</span> |
1954 | + <span class="n">join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeDir</span><span class="p">,</span> <span class="n">settings_fn</span><span class="p">),</span> |
1955 | + <span class="n">join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span><span class="p">,</span> <span class="n">settings_fn</span><span class="p">),</span> |
1956 | + |
1957 | + <span class="c"># Next, <machine-name>myLeoSettings.leo in the home directories.</span> |
1958 | + <span class="n">join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeDir</span><span class="p">,</span> <span class="n">machine_fn</span><span class="p">),</span> |
1959 | + <span class="n">join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span><span class="p">,</span> <span class="n">machine_fn</span><span class="p">),</span> |
1960 | + |
1961 | + <span class="c"># Last, leoSettings.leo in leo/config directory.</span> |
1962 | + <span class="n">join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">globalConfigDir</span><span class="p">,</span> <span class="n">settings_fn</span><span class="p">),</span> |
1963 | + <span class="p">)</span> |
1964 | + |
1965 | + <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> |
1966 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'computeMyLeoSettingsPath'</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">path</span><span class="p">),</span><span class="nb">repr</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> |
1967 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">path</span><span class="p">):</span> |
1968 | + <span class="k">break</span> |
1969 | + <span class="k">else</span><span class="p">:</span> |
1970 | + <span class="n">path</span> <span class="o">=</span> <span class="bp">None</span> |
1971 | + |
1972 | + <span class="k">return</span> <span class="n">path</span> |
1973 | + <span class="c">#@+node:ekr.20120209051836.10252: *4* LM.computeStandardDirectories & helpers</span></div> |
1974 | +<div class="viewcode-block" id="LoadManager.computeStandardDirectories"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeStandardDirectories">[docs]</a> <span class="k">def</span> <span class="nf">computeStandardDirectories</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1975 | + |
1976 | + <span class="sd">'''Compute the locations of standard directories and</span> |
1977 | +<span class="sd"> set the corresponding ivars.'''</span> |
1978 | + |
1979 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
1980 | + |
1981 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeLoadDir</span><span class="p">()</span> |
1982 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoDir</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeLeoDir</span><span class="p">()</span> |
1983 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeDir</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeHomeDir</span><span class="p">()</span> |
1984 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeHomeLeoDir</span><span class="p">()</span> |
1985 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">globalConfigDir</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeGlobalConfigDir</span><span class="p">()</span> |
1986 | + |
1987 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">extensionsDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize_join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span><span class="p">,</span><span class="s">'..'</span><span class="p">,</span><span class="s">'extensions'</span><span class="p">)</span> |
1988 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">testDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize_join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span><span class="p">,</span><span class="s">'..'</span><span class="p">,</span><span class="s">'test'</span><span class="p">)</span> |
1989 | + <span class="c">#@+node:ekr.20120209051836.10253: *5* lm.computeGlobalConfigDir</span></div> |
1990 | +<div class="viewcode-block" id="LoadManager.computeGlobalConfigDir"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeGlobalConfigDir">[docs]</a> <span class="k">def</span> <span class="nf">computeGlobalConfigDir</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
1991 | + |
1992 | + <span class="c"># lm = self</span> |
1993 | + |
1994 | + <span class="c"># To avoid pylint complaints that sys.leo_config_directory does not exist.</span> |
1995 | + <span class="n">leo_config_dir</span> <span class="o">=</span> <span class="p">(</span> |
1996 | + <span class="nb">hasattr</span><span class="p">(</span><span class="n">sys</span><span class="p">,</span><span class="s">'leo_config_directory'</span><span class="p">)</span> <span class="ow">and</span> |
1997 | + <span class="nb">getattr</span><span class="p">(</span><span class="n">sys</span><span class="p">,</span><span class="s">'leo_config_directory'</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">None</span><span class="p">)</span> |
1998 | + <span class="k">if</span> <span class="n">leo_config_dir</span><span class="p">:</span> |
1999 | + <span class="n">theDir</span> <span class="o">=</span> <span class="n">leo_config_dir</span> |
2000 | + <span class="k">else</span><span class="p">:</span> |
2001 | + <span class="n">theDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span><span class="p">,</span><span class="s">".."</span><span class="p">,</span><span class="s">"config"</span><span class="p">)</span> |
2002 | + <span class="k">if</span> <span class="n">theDir</span><span class="p">:</span> |
2003 | + <span class="n">theDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">theDir</span><span class="p">)</span> |
2004 | + <span class="k">if</span> <span class="p">(</span> |
2005 | + <span class="ow">not</span> <span class="n">theDir</span> <span class="ow">or</span> |
2006 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">theDir</span><span class="p">)</span> <span class="ow">or</span> |
2007 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_isdir</span><span class="p">(</span><span class="n">theDir</span><span class="p">)</span> |
2008 | + <span class="p">):</span> |
2009 | + <span class="n">theDir</span> <span class="o">=</span> <span class="bp">None</span> |
2010 | + <span class="k">return</span> <span class="n">theDir</span> |
2011 | + <span class="c">#@+node:ekr.20120209051836.10254: *5* lm.computeHomeDir</span></div> |
2012 | +<div class="viewcode-block" id="LoadManager.computeHomeDir"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeHomeDir">[docs]</a> <span class="k">def</span> <span class="nf">computeHomeDir</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2013 | + |
2014 | + <span class="sd">"""Returns the user's home directory."""</span> |
2015 | + |
2016 | + <span class="n">home</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">expanduser</span><span class="p">(</span><span class="s">"~"</span><span class="p">)</span> |
2017 | + <span class="c"># Windows searches the HOME, HOMEPATH and HOMEDRIVE</span> |
2018 | + <span class="c"># environment vars, then gives up.</span> |
2019 | + |
2020 | + <span class="k">if</span> <span class="n">home</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">home</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">home</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">==</span><span class="s">'%'</span> <span class="ow">and</span> <span class="n">home</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">==</span><span class="s">'%'</span><span class="p">:</span> |
2021 | + <span class="c"># Get the indirect reference to the true home.</span> |
2022 | + <span class="n">home</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="n">home</span><span class="p">[</span><span class="mi">1</span><span class="p">:</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span><span class="n">default</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span> |
2023 | + |
2024 | + <span class="k">if</span> <span class="n">home</span><span class="p">:</span> |
2025 | + <span class="c"># Important: This returns the _working_ directory if home is None!</span> |
2026 | + <span class="c"># This was the source of the 4.3 .leoID.txt problems.</span> |
2027 | + <span class="n">home</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">home</span><span class="p">)</span> |
2028 | + <span class="k">if</span> <span class="p">(</span> |
2029 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">home</span><span class="p">)</span> <span class="ow">or</span> |
2030 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_isdir</span><span class="p">(</span><span class="n">home</span><span class="p">)</span> |
2031 | + <span class="p">):</span> |
2032 | + <span class="n">home</span> <span class="o">=</span> <span class="bp">None</span> |
2033 | + |
2034 | + <span class="c"># g.trace(home)</span> |
2035 | + <span class="k">return</span> <span class="n">home</span> |
2036 | + <span class="c">#@+node:ekr.20120209051836.10260: *5* lm.computeHomeLeoDir</span></div> |
2037 | +<div class="viewcode-block" id="LoadManager.computeHomeLeoDir"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeHomeLeoDir">[docs]</a> <span class="k">def</span> <span class="nf">computeHomeLeoDir</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2038 | + |
2039 | + <span class="c"># lm = self</span> |
2040 | + <span class="n">homeLeoDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize_join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeDir</span><span class="p">,</span><span class="s">'.leo'</span><span class="p">)</span> |
2041 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">homeLeoDir</span><span class="p">):</span> |
2042 | + <span class="n">g</span><span class="o">.</span><span class="n">makeAllNonExistentDirectories</span><span class="p">(</span><span class="n">homeLeoDir</span><span class="p">,</span><span class="n">force</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
2043 | + <span class="k">return</span> <span class="n">homeLeoDir</span> |
2044 | + <span class="c">#@+node:ekr.20120209051836.10255: *5* lm.computeLeoDir</span></div> |
2045 | +<div class="viewcode-block" id="LoadManager.computeLeoDir"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeLeoDir">[docs]</a> <span class="k">def</span> <span class="nf">computeLeoDir</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2046 | + |
2047 | + <span class="c"># lm = self</span> |
2048 | + <span class="n">loadDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span> |
2049 | + <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_dirname</span><span class="p">(</span><span class="n">loadDir</span><span class="p">)</span> |
2050 | + <span class="c"># We don't want the result in sys.path</span> |
2051 | + <span class="c">#@+node:ekr.20120209051836.10256: *5* lm.computeLoadDir</span></div> |
2052 | +<div class="viewcode-block" id="LoadManager.computeLoadDir"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeLoadDir">[docs]</a> <span class="k">def</span> <span class="nf">computeLoadDir</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2053 | + |
2054 | + <span class="sd">"""Returns the directory containing leo.py."""</span> |
2055 | + |
2056 | + <span class="kn">import</span> <span class="nn">sys</span> |
2057 | + |
2058 | + <span class="k">try</span><span class="p">:</span> |
2059 | + <span class="c"># Fix a hangnail: on Windows the drive letter returned by</span> |
2060 | + <span class="c"># __file__ is randomly upper or lower case!</span> |
2061 | + <span class="c"># The made for an ugly recent files list.</span> |
2062 | + <span class="n">path</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">__file__</span> <span class="c"># was leo.__file__</span> |
2063 | + <span class="c"># g.trace(repr(path))</span> |
2064 | + <span class="k">if</span> <span class="n">path</span><span class="p">:</span> |
2065 | + <span class="c"># Possible fix for bug 735938:</span> |
2066 | + <span class="c"># Do the following only if path exists.</span> |
2067 | + <span class="c">#@+<< resolve symlinks >></span> |
2068 | + <span class="c">#@+node:ekr.20120209051836.10257: *6* << resolve symlinks >></span> |
2069 | + <span class="k">if</span> <span class="n">path</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">'pyc'</span><span class="p">):</span> |
2070 | + <span class="n">srcfile</span> <span class="o">=</span> <span class="n">path</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> |
2071 | + <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">islink</span><span class="p">(</span><span class="n">srcfile</span><span class="p">):</span> |
2072 | + <span class="n">path</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">srcfile</span><span class="p">)</span> |
2073 | + <span class="c">#@-<< resolve symlinks >></span> |
2074 | + <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span><span class="o">==</span><span class="s">'win32'</span><span class="p">:</span> |
2075 | + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="o">></span> <span class="mi">2</span> <span class="ow">and</span> <span class="n">path</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">==</span><span class="s">':'</span><span class="p">:</span> |
2076 | + <span class="c"># Convert the drive name to upper case.</span> |
2077 | + <span class="n">path</span> <span class="o">=</span> <span class="n">path</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">+</span> <span class="n">path</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> |
2078 | + |
2079 | + |
2080 | + <span class="n">path</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> |
2081 | + <span class="n">loadDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_dirname</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> |
2082 | + <span class="k">else</span><span class="p">:</span> <span class="n">loadDir</span> <span class="o">=</span> <span class="bp">None</span> |
2083 | + |
2084 | + <span class="k">if</span> <span class="p">(</span> |
2085 | + <span class="ow">not</span> <span class="n">loadDir</span> <span class="ow">or</span> |
2086 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">loadDir</span><span class="p">)</span> <span class="ow">or</span> |
2087 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_isdir</span><span class="p">(</span><span class="n">loadDir</span><span class="p">)</span> |
2088 | + <span class="p">):</span> |
2089 | + <span class="n">loadDir</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">()</span> |
2090 | + <span class="c"># From Marc-Antoine Parent.</span> |
2091 | + <span class="k">if</span> <span class="n">loadDir</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">"Contents/Resources"</span><span class="p">):</span> |
2092 | + <span class="n">loadDir</span> <span class="o">+=</span> <span class="s">"/leo/plugins"</span> |
2093 | + <span class="k">else</span><span class="p">:</span> |
2094 | + <span class="n">g</span><span class="o">.</span><span class="n">pr</span><span class="p">(</span><span class="s">"Exception getting load directory"</span><span class="p">)</span> |
2095 | + <span class="n">loadDir</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">loadDir</span><span class="p">)</span> |
2096 | + <span class="c"># g.trace(loadDir)</span> |
2097 | + <span class="k">return</span> <span class="n">loadDir</span> |
2098 | + <span class="k">except</span><span class="p">:</span> |
2099 | + <span class="k">print</span><span class="p">(</span><span class="s">"Exception getting load directory"</span><span class="p">)</span> |
2100 | + <span class="k">raise</span> |
2101 | + <span class="c">#@+node:ekr.20120213164030.10697: *5* lm.computeMachineName</span></div> |
2102 | +<div class="viewcode-block" id="LoadManager.computeMachineName"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeMachineName">[docs]</a> <span class="k">def</span> <span class="nf">computeMachineName</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2103 | + |
2104 | + <span class="sd">'''Return the name of the current machine, i.e, HOSTNAME.'''</span> |
2105 | + |
2106 | + <span class="c"># This is prepended to leoSettings.leo or myLeoSettings.leo</span> |
2107 | + <span class="c"># to give the machine-specific setting name.</span> |
2108 | + <span class="c"># How can this be worth doing??</span> |
2109 | + |
2110 | + <span class="k">try</span><span class="p">:</span> |
2111 | + <span class="kn">import</span> <span class="nn">os</span> |
2112 | + <span class="n">name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">'HOSTNAME'</span><span class="p">)</span> |
2113 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> |
2114 | + <span class="n">name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getenv</span><span class="p">(</span><span class="s">'COMPUTERNAME'</span><span class="p">)</span> |
2115 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> |
2116 | + <span class="kn">import</span> <span class="nn">socket</span> |
2117 | + <span class="n">name</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">gethostname</span><span class="p">()</span> |
2118 | + <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> |
2119 | + <span class="n">name</span> <span class="o">=</span> <span class="s">''</span> |
2120 | + |
2121 | + <span class="c"># g.trace(name)</span> |
2122 | + |
2123 | + <span class="k">return</span> <span class="n">name</span> |
2124 | + <span class="c">#@+node:ekr.20120211121736.10772: *4* LM.computeWorkbookFileName</span></div> |
2125 | +<div class="viewcode-block" id="LoadManager.computeWorkbookFileName"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeWorkbookFileName">[docs]</a> <span class="k">def</span> <span class="nf">computeWorkbookFileName</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2126 | + |
2127 | + <span class="c"># lm = self</span> |
2128 | + |
2129 | + <span class="c"># Get the name of the workbook.</span> |
2130 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getString</span><span class="p">(</span><span class="n">setting</span><span class="o">=</span><span class="s">'default_leo_file'</span><span class="p">)</span> |
2131 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2132 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">fn</span><span class="p">:</span> <span class="k">return</span> |
2133 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
2134 | + <span class="k">return</span> <span class="n">fn</span> |
2135 | + <span class="k">elif</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_isabs</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
2136 | + <span class="c"># Create the file.</span> |
2137 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'Using default leo file name:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">))</span> |
2138 | + <span class="k">return</span> <span class="n">fn</span> |
2139 | + <span class="k">else</span><span class="p">:</span> |
2140 | + <span class="c"># It's too risky to open a default file if it is relative.</span> |
2141 | + <span class="k">return</span> <span class="bp">None</span> |
2142 | + <span class="c">#@+node:ekr.20120219154958.10485: *4* LM.reportDirectories</span></div> |
2143 | +<div class="viewcode-block" id="LoadManager.reportDirectories"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.reportDirectories">[docs]</a> <span class="k">def</span> <span class="nf">reportDirectories</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">verbose</span><span class="p">):</span> |
2144 | + |
2145 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">verbose</span><span class="p">:</span> <span class="k">return</span> |
2146 | + |
2147 | + <span class="k">if</span> <span class="mi">1</span><span class="p">:</span> <span class="c"># old</span> |
2148 | + |
2149 | + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> |
2150 | + <span class="k">for</span> <span class="n">kind</span><span class="p">,</span><span class="n">theDir</span> <span class="ow">in</span> <span class="p">(</span> |
2151 | + <span class="p">(</span><span class="s">"load"</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span><span class="p">),</span> |
2152 | + <span class="p">(</span><span class="s">"global config"</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">globalConfigDir</span><span class="p">),</span> |
2153 | + <span class="p">(</span><span class="s">"home"</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeDir</span><span class="p">),</span> |
2154 | + <span class="p">):</span> |
2155 | + <span class="n">g</span><span class="o">.</span><span class="n">blue</span><span class="p">(</span><span class="s">"</span><span class="si">%s</span><span class="s"> dir:"</span> <span class="o">%</span> <span class="p">(</span><span class="n">kind</span><span class="p">),</span><span class="n">theDir</span><span class="p">)</span> |
2156 | + |
2157 | + <span class="k">else</span><span class="p">:</span> |
2158 | + <span class="n">aList</span> <span class="o">=</span> <span class="p">(</span> |
2159 | + <span class="s">'homeDir'</span><span class="p">,</span><span class="s">'homeLeoDir'</span><span class="p">,</span> |
2160 | + <span class="s">'leoDir'</span><span class="p">,</span><span class="s">'loadDir'</span><span class="p">,</span> |
2161 | + <span class="s">'extensionsDir'</span><span class="p">,</span><span class="s">'globalConfigDir'</span><span class="p">)</span> |
2162 | + |
2163 | + <span class="k">for</span> <span class="n">ivar</span> <span class="ow">in</span> <span class="n">aList</span><span class="p">:</span> |
2164 | + <span class="n">val</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="p">,</span><span class="n">ivar</span><span class="p">)</span> |
2165 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'</span><span class="si">%20s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">ivar</span><span class="p">),</span><span class="n">val</span><span class="p">)</span> |
2166 | + |
2167 | + <span class="c">#@+node:ekr.20120215062153.10740: *3* LM.Settings</span> |
2168 | + <span class="c">#@+node:ekr.20120130101219.10182: *4* lm.computeBindingLetter</span></div> |
2169 | +<div class="viewcode-block" id="LoadManager.computeBindingLetter"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeBindingLetter">[docs]</a> <span class="k">def</span> <span class="nf">computeBindingLetter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">kind</span><span class="p">):</span> |
2170 | + |
2171 | + <span class="c"># lm = self</span> |
2172 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> |
2173 | + <span class="k">return</span> <span class="s">'D'</span> |
2174 | + <span class="n">table</span> <span class="o">=</span> <span class="p">(</span> |
2175 | + <span class="p">(</span><span class="s">'M'</span><span class="p">,</span><span class="s">'myLeoSettings.leo'</span><span class="p">),</span> |
2176 | + <span class="p">(</span><span class="s">' '</span><span class="p">,</span><span class="s">'leoSettings.leo'</span><span class="p">),</span> |
2177 | + <span class="p">(</span><span class="s">'F'</span><span class="p">,</span><span class="s">'.leo'</span><span class="p">),</span> |
2178 | + <span class="p">)</span> |
2179 | + <span class="k">for</span> <span class="n">letter</span><span class="p">,</span><span class="n">kind2</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> |
2180 | + <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="n">kind2</span><span class="o">.</span><span class="n">lower</span><span class="p">()):</span> |
2181 | + <span class="k">return</span> <span class="n">letter</span> |
2182 | + <span class="k">else</span><span class="p">:</span> |
2183 | + <span class="k">return</span> <span class="s">'D'</span> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">'mode'</span><span class="p">)</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span> <span class="k">else</span> <span class="s">'@'</span> |
2184 | + <span class="c">#@+node:ekr.20120223062418.10421: *4* lm.computeLocalSettings (where the crash happened)</span></div> |
2185 | +<div class="viewcode-block" id="LoadManager.computeLocalSettings"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeLocalSettings">[docs]</a> <span class="k">def</span> <span class="nf">computeLocalSettings</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span><span class="p">,</span><span class="n">localFlag</span><span class="p">):</span> |
2186 | + |
2187 | + <span class="sd">'''Merge the settings dicts from c's outline into *new copies of*</span> |
2188 | +<span class="sd"> settings_d and shortcuts_d.'''</span> |
2189 | + |
2190 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
2191 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'lm.computeLocalSettings: </span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span> |
2192 | + <span class="n">c</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(),</span><span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span><span class="p">))</span> |
2193 | + |
2194 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2195 | + |
2196 | + <span class="n">shortcuts_d2</span><span class="p">,</span><span class="n">settings_d2</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">createSettingsDicts</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">localFlag</span><span class="p">)</span> |
2197 | + |
2198 | + <span class="k">assert</span> <span class="n">shortcuts_d</span> |
2199 | + <span class="k">assert</span> <span class="n">settings_d</span> |
2200 | + |
2201 | + <span class="k">if</span> <span class="n">settings_d2</span><span class="p">:</span> |
2202 | + <span class="n">settings_d</span> <span class="o">=</span> <span class="n">settings_d</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> |
2203 | + <span class="n">settings_d</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">settings_d2</span><span class="p">)</span> |
2204 | + |
2205 | + <span class="k">if</span> <span class="n">shortcuts_d2</span><span class="p">:</span> |
2206 | + <span class="n">shortcuts_d</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">mergeShortcutsDicts</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">shortcuts_d</span><span class="p">,</span><span class="n">shortcuts_d2</span><span class="p">)</span> |
2207 | + |
2208 | + <span class="k">return</span> <span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span> |
2209 | + <span class="c">#@+node:ekr.20121126202114.3: *4* lm.createDefaultSettingsDicts (New)</span></div> |
2210 | +<div class="viewcode-block" id="LoadManager.createDefaultSettingsDicts"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.createDefaultSettingsDicts">[docs]</a> <span class="k">def</span> <span class="nf">createDefaultSettingsDicts</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2211 | + |
2212 | + <span class="sd">'''Create lm.globalSettingsDict & lm.globalShortcutsDict.'''</span> |
2213 | + |
2214 | + <span class="n">settings_d</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">defaultsDict</span> |
2215 | + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">settings_d</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">TypedDict</span><span class="p">),</span><span class="n">settings_d</span> |
2216 | + <span class="n">settings_d</span><span class="o">.</span><span class="n">setName</span><span class="p">(</span><span class="s">'lm.globalSettingsDict'</span><span class="p">)</span> |
2217 | + |
2218 | + <span class="n">shortcuts_d</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">TypedDictOfLists</span><span class="p">(</span> |
2219 | + <span class="n">name</span><span class="o">=</span><span class="s">'lm.globalShortcutsDict'</span><span class="p">,</span> |
2220 | + <span class="n">keyType</span><span class="o">=</span><span class="nb">type</span><span class="p">(</span><span class="s">'s'</span><span class="p">),</span> <span class="n">valType</span><span class="o">=</span><span class="n">g</span><span class="o">.</span><span class="n">ShortcutInfo</span><span class="p">)</span> |
2221 | + |
2222 | + <span class="k">return</span> <span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span> |
2223 | + <span class="c">#@+node:ekr.20120214165710.10726: *4* lm.createSettingsDicts</span></div> |
2224 | +<div class="viewcode-block" id="LoadManager.createSettingsDicts"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.createSettingsDicts">[docs]</a> <span class="k">def</span> <span class="nf">createSettingsDicts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">localFlag</span><span class="p">):</span> |
2225 | + |
2226 | + <span class="kn">import</span> <span class="nn">leo.core.leoConfig</span> <span class="kn">as</span> <span class="nn">leoConfig</span> |
2227 | + |
2228 | + <span class="n">parser</span> <span class="o">=</span> <span class="n">leoConfig</span><span class="o">.</span><span class="n">SettingsTreeParser</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">localFlag</span><span class="p">)</span> |
2229 | + <span class="c"># returns the *raw* shortcutsDict, not a *merged* shortcuts dict.</span> |
2230 | + |
2231 | + <span class="n">shortcutsDict</span><span class="p">,</span><span class="n">settingsDict</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">traverse</span><span class="p">()</span> |
2232 | + |
2233 | + <span class="k">return</span> <span class="n">shortcutsDict</span><span class="p">,</span><span class="n">settingsDict</span> |
2234 | + <span class="c">#@+node:ekr.20120223062418.10414: *4* LM.getPreviousSettings</span></div> |
2235 | +<div class="viewcode-block" id="LoadManager.getPreviousSettings"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.getPreviousSettings">[docs]</a> <span class="k">def</span> <span class="nf">getPreviousSettings</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
2236 | + |
2237 | + <span class="sd">'''Return the settings in effect for fn. Typically,</span> |
2238 | +<span class="sd"> this involves pre-reading fn.'''</span> |
2239 | + |
2240 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2241 | + <span class="n">settingsName</span> <span class="o">=</span> <span class="s">'settings dict for </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">g</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2242 | + <span class="n">shortcutsName</span> <span class="o">=</span> <span class="s">'shortcuts dict for </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">g</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2243 | + |
2244 | + <span class="c"># A special case: settings in leoSettings.leo do *not* override</span> |
2245 | + <span class="c"># the global settings, that is, settings in myLeoSettings.leo.</span> |
2246 | + <span class="n">isLeoSettings</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(</span><span class="n">fn</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">'leosettings.leo'</span> |
2247 | + |
2248 | + <span class="k">if</span> <span class="n">fn</span> <span class="ow">and</span> <span class="n">lm</span><span class="o">.</span><span class="n">isLeoFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">isLeoSettings</span> <span class="ow">and</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
2249 | + <span class="c"># Open the file usinging a null gui.</span> |
2250 | + <span class="k">try</span><span class="p">:</span> |
2251 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">preReadFlag</span> <span class="o">=</span> <span class="bp">True</span> |
2252 | + <span class="n">c</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">openSettingsFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2253 | + <span class="k">finally</span><span class="p">:</span> |
2254 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">preReadFlag</span> <span class="o">=</span> <span class="bp">False</span> |
2255 | + |
2256 | + <span class="c"># Merge the settings from c into *copies* of the global dicts.</span> |
2257 | + <span class="n">d1</span><span class="p">,</span><span class="n">d2</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeLocalSettings</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> |
2258 | + <span class="n">lm</span><span class="o">.</span><span class="n">globalSettingsDict</span><span class="p">,</span><span class="n">lm</span><span class="o">.</span><span class="n">globalShortcutsDict</span><span class="p">,</span><span class="n">localFlag</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
2259 | + <span class="c"># d1 and d2 are copies.</span> |
2260 | + <span class="n">d1</span><span class="o">.</span><span class="n">setName</span><span class="p">(</span><span class="n">settingsName</span><span class="p">)</span> |
2261 | + <span class="n">d2</span><span class="o">.</span><span class="n">setName</span><span class="p">(</span><span class="n">shortcutsName</span><span class="p">)</span> |
2262 | + <span class="k">else</span><span class="p">:</span> |
2263 | + <span class="c"># Get the settings from the globals settings dicts.</span> |
2264 | + <span class="n">d1</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">globalSettingsDict</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">settingsName</span><span class="p">)</span> |
2265 | + <span class="n">d2</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">globalShortcutsDict</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">shortcutsName</span><span class="p">)</span> |
2266 | + |
2267 | + <span class="k">return</span> <span class="n">PreviousSettings</span><span class="p">(</span><span class="n">d1</span><span class="p">,</span><span class="n">d2</span><span class="p">)</span> |
2268 | + <span class="c">#@+node:ekr.20120214132927.10723: *4* lm.mergeShortcutsDicts & helpers</span></div> |
2269 | +<div class="viewcode-block" id="LoadManager.mergeShortcutsDicts"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.mergeShortcutsDicts">[docs]</a> <span class="k">def</span> <span class="nf">mergeShortcutsDicts</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">old_d</span><span class="p">,</span><span class="n">new_d</span><span class="p">):</span> |
2270 | + |
2271 | + <span class="sd">'''Create a new dict by overriding all shortcuts in old_d by shortcuts in new_d.</span> |
2272 | + |
2273 | +<span class="sd"> Both old_d and new_d remain unchanged.'''</span> |
2274 | + |
2275 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
2276 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2277 | + |
2278 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">old_d</span><span class="p">:</span> <span class="k">return</span> <span class="n">new_d</span> |
2279 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">new_d</span><span class="p">:</span> <span class="k">return</span> <span class="n">old_d</span> |
2280 | + |
2281 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> |
2282 | + <span class="n">new_n</span><span class="p">,</span><span class="n">old_n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">new_d</span><span class="o">.</span><span class="n">keys</span><span class="p">())),</span><span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">old_d</span><span class="o">.</span><span class="n">keys</span><span class="p">()))</span> |
2283 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'new </span><span class="si">%4s</span><span class="s"> </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">new_n</span><span class="p">,</span><span class="nb">id</span><span class="p">(</span><span class="n">new_d</span><span class="p">),</span><span class="n">new_d</span><span class="o">.</span><span class="n">name</span><span class="p">()))</span> |
2284 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'old </span><span class="si">%4s</span><span class="s"> </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">old_n</span><span class="p">,</span><span class="nb">id</span><span class="p">(</span><span class="n">old_d</span><span class="p">),</span><span class="n">old_d</span><span class="o">.</span><span class="n">name</span><span class="p">()))</span> |
2285 | + |
2286 | + <span class="n">inverted_old_d</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">invert</span><span class="p">(</span><span class="n">old_d</span><span class="p">)</span> |
2287 | + <span class="n">inverted_new_d</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">invert</span><span class="p">(</span><span class="n">new_d</span><span class="p">)</span> |
2288 | + |
2289 | + <span class="c"># Fix bug 951921: check for duplicate shortcuts only in the new file.</span> |
2290 | + <span class="n">lm</span><span class="o">.</span><span class="n">checkForDuplicateShortcuts</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">inverted_new_d</span><span class="p">)</span> |
2291 | + |
2292 | + <span class="n">inverted_old_d</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">inverted_new_d</span><span class="p">)</span> <span class="c"># Updates inverted_old_d in place.</span> |
2293 | + <span class="n">result</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">uninvert</span><span class="p">(</span><span class="n">inverted_old_d</span><span class="p">)</span> |
2294 | + |
2295 | + <span class="k">return</span> <span class="n">result</span> |
2296 | + <span class="c">#@+node:ekr.20120311070142.9904: *5* lm.checkForDuplicateShortcuts</span></div> |
2297 | +<div class="viewcode-block" id="LoadManager.checkForDuplicateShortcuts"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.checkForDuplicateShortcuts">[docs]</a> <span class="k">def</span> <span class="nf">checkForDuplicateShortcuts</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">d</span><span class="p">):</span> |
2298 | + |
2299 | + <span class="sd">'''Check for duplicates in an "inverted" dictionary d</span> |
2300 | +<span class="sd"> whose keys are strokes and whose values are lists of ShortcutInfo nodes.</span> |
2301 | + |
2302 | +<span class="sd"> Duplicates happen only if panes conflict.</span> |
2303 | +<span class="sd"> '''</span> |
2304 | + |
2305 | + <span class="c"># lm = self</span> |
2306 | + |
2307 | + <span class="c"># Fix bug 951921: check for duplicate shortcuts only in the new file.</span> |
2308 | + <span class="k">for</span> <span class="n">ks</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">())):</span> |
2309 | + <span class="n">conflict</span><span class="p">,</span><span class="n">panes</span> <span class="o">=</span> <span class="bp">False</span><span class="p">,[</span><span class="s">'all'</span><span class="p">]</span> |
2310 | + <span class="n">aList</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">ks</span><span class="p">)</span> |
2311 | + <span class="n">aList2</span> <span class="o">=</span> <span class="p">[</span><span class="n">si</span> <span class="k">for</span> <span class="n">si</span> <span class="ow">in</span> <span class="n">aList</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">si</span><span class="o">.</span><span class="n">pane</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'mode'</span><span class="p">)]</span> |
2312 | + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">aList</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> |
2313 | + <span class="k">for</span> <span class="n">si</span> <span class="ow">in</span> <span class="n">aList2</span><span class="p">:</span> |
2314 | + <span class="k">if</span> <span class="n">si</span><span class="o">.</span><span class="n">pane</span> <span class="ow">in</span> <span class="n">panes</span><span class="p">:</span> |
2315 | + <span class="n">conflict</span> <span class="o">=</span> <span class="bp">True</span> <span class="p">;</span> <span class="k">break</span> |
2316 | + <span class="k">else</span><span class="p">:</span> |
2317 | + <span class="n">panes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">si</span><span class="o">.</span><span class="n">pane</span><span class="p">)</span> |
2318 | + <span class="k">if</span> <span class="n">conflict</span><span class="p">:</span> |
2319 | + <span class="n">g</span><span class="o">.</span><span class="n">es_print</span><span class="p">(</span><span class="s">'conflicting key bindings in </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">()))</span> |
2320 | + <span class="k">for</span> <span class="n">si</span> <span class="ow">in</span> <span class="n">aList2</span><span class="p">:</span> |
2321 | + <span class="n">g</span><span class="o">.</span><span class="n">es_print</span><span class="p">(</span><span class="s">'</span><span class="si">%6s</span><span class="s"> </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">si</span><span class="o">.</span><span class="n">pane</span><span class="p">,</span><span class="n">si</span><span class="o">.</span><span class="n">stroke</span><span class="o">.</span><span class="n">s</span><span class="p">,</span><span class="n">si</span><span class="o">.</span><span class="n">commandName</span><span class="p">))</span> |
2322 | + <span class="c">#@+node:ekr.20120214132927.10724: *5* lm.invert</span></div> |
2323 | +<div class="viewcode-block" id="LoadManager.invert"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.invert">[docs]</a> <span class="k">def</span> <span class="nf">invert</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">d</span><span class="p">):</span> |
2324 | + |
2325 | + <span class="sd">'''Invert a shortcut dict whose keys are command names,</span> |
2326 | +<span class="sd"> returning a dict whose keys are strokes.'''</span> |
2327 | + |
2328 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> <span class="p">;</span> <span class="n">verbose</span> <span class="o">=</span> <span class="bp">True</span> |
2329 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'*'</span><span class="o">*</span><span class="mi">40</span><span class="p">,</span><span class="n">d</span><span class="o">.</span><span class="n">name</span><span class="p">())</span> |
2330 | + |
2331 | + <span class="n">result</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">TypedDictOfLists</span><span class="p">(</span> |
2332 | + <span class="n">name</span><span class="o">=</span><span class="s">'inverted </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">d</span><span class="o">.</span><span class="n">name</span><span class="p">(),</span> |
2333 | + <span class="n">keyType</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">KeyStroke</span><span class="p">,</span> |
2334 | + <span class="n">valType</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">ShortcutInfo</span><span class="p">)</span> |
2335 | + |
2336 | + <span class="k">for</span> <span class="n">commandName</span> <span class="ow">in</span> <span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> |
2337 | + <span class="k">for</span> <span class="n">si</span> <span class="ow">in</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">commandName</span><span class="p">,[]):</span> |
2338 | + <span class="c"># This assert can fail if there is an exception in the ShortcutInfo ctor.</span> |
2339 | + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">si</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">ShortcutInfo</span><span class="p">),</span><span class="n">si</span> |
2340 | + |
2341 | + <span class="n">stroke</span> <span class="o">=</span> <span class="n">si</span><span class="o">.</span><span class="n">stroke</span> <span class="c"># This is canonicalized.</span> |
2342 | + <span class="n">si</span><span class="o">.</span><span class="n">commandName</span> <span class="o">=</span> <span class="n">commandName</span> <span class="c"># Add info.</span> |
2343 | + <span class="k">assert</span> <span class="n">stroke</span> |
2344 | + <span class="k">if</span> <span class="n">trace</span> <span class="ow">and</span> <span class="n">verbose</span><span class="p">:</span> |
2345 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'</span><span class="si">%40s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">commandName</span><span class="p">,</span><span class="n">stroke</span><span class="p">))</span> |
2346 | + <span class="n">result</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">stroke</span><span class="p">,</span><span class="n">si</span><span class="p">)</span> |
2347 | + |
2348 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'returns </span><span class="si">%4s</span><span class="s"> </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span> |
2349 | + <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">keys</span><span class="p">())),</span><span class="nb">id</span><span class="p">(</span><span class="n">d</span><span class="p">),</span><span class="n">result</span><span class="o">.</span><span class="n">name</span><span class="p">()))</span> |
2350 | + <span class="k">return</span> <span class="n">result</span> |
2351 | + <span class="c">#@+node:ekr.20120214132927.10725: *5* lm.uninvert</span></div> |
2352 | +<div class="viewcode-block" id="LoadManager.uninvert"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.uninvert">[docs]</a> <span class="k">def</span> <span class="nf">uninvert</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">d</span><span class="p">):</span> |
2353 | + |
2354 | + <span class="sd">'''Uninvert an inverted shortcut dict whose keys are strokes,</span> |
2355 | +<span class="sd"> returning a dict whose keys are command names.'''</span> |
2356 | + |
2357 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> <span class="p">;</span> <span class="n">verbose</span> <span class="o">=</span> <span class="bp">True</span> |
2358 | + <span class="k">if</span> <span class="n">trace</span> <span class="ow">and</span> <span class="n">verbose</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'*'</span><span class="o">*</span><span class="mi">40</span><span class="p">)</span> |
2359 | + |
2360 | + <span class="k">assert</span> <span class="n">d</span><span class="o">.</span><span class="n">keyType</span> <span class="o">==</span> <span class="n">g</span><span class="o">.</span><span class="n">KeyStroke</span><span class="p">,</span><span class="n">d</span><span class="o">.</span><span class="n">keyType</span> |
2361 | + <span class="n">result</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">TypedDictOfLists</span><span class="p">(</span> |
2362 | + <span class="n">name</span><span class="o">=</span><span class="s">'uninverted </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">d</span><span class="o">.</span><span class="n">name</span><span class="p">(),</span> |
2363 | + <span class="n">keyType</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="s">'commandName'</span><span class="p">),</span> |
2364 | + <span class="n">valType</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">ShortcutInfo</span><span class="p">)</span> |
2365 | + |
2366 | + <span class="k">for</span> <span class="n">stroke</span> <span class="ow">in</span> <span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span> |
2367 | + <span class="k">for</span> <span class="n">si</span> <span class="ow">in</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">stroke</span><span class="p">,[]):</span> |
2368 | + <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">si</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">ShortcutInfo</span><span class="p">),</span><span class="n">si</span> |
2369 | + <span class="n">commandName</span> <span class="o">=</span> <span class="n">si</span><span class="o">.</span><span class="n">commandName</span> |
2370 | + <span class="k">if</span> <span class="n">trace</span> <span class="ow">and</span> <span class="n">verbose</span><span class="p">:</span> |
2371 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'uninvert </span><span class="si">%20s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">stroke</span><span class="p">,</span><span class="n">commandName</span><span class="p">))</span> |
2372 | + <span class="k">assert</span> <span class="n">commandName</span> |
2373 | + <span class="n">result</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">commandName</span><span class="p">,</span><span class="n">si</span><span class="p">)</span> |
2374 | + |
2375 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'returns </span><span class="si">%4s</span><span class="s"> </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span> |
2376 | + <span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">keys</span><span class="p">())),</span><span class="nb">id</span><span class="p">(</span><span class="n">d</span><span class="p">),</span><span class="n">result</span><span class="o">.</span><span class="n">name</span><span class="p">()))</span> |
2377 | + <span class="k">return</span> <span class="n">result</span> |
2378 | + <span class="c">#@+node:ekr.20120222103014.10312: *4* lm.openSettingsFile</span></div> |
2379 | +<div class="viewcode-block" id="LoadManager.openSettingsFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.openSettingsFile">[docs]</a> <span class="k">def</span> <span class="nf">openSettingsFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
2380 | + |
2381 | + <span class="sd">'''Open a settings file with a null gui. Return the commander.</span> |
2382 | + |
2383 | +<span class="sd"> The caller must init the c.config object.'''</span> |
2384 | + |
2385 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
2386 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'lm.openSettingsFile: g.app.gui: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span> |
2387 | + <span class="n">g</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(</span><span class="n">fn</span><span class="p">)))</span> |
2388 | + |
2389 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2390 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">fn</span><span class="p">:</span> <span class="k">return</span> <span class="bp">None</span> |
2391 | + |
2392 | + <span class="n">giveMessage</span> <span class="o">=</span> <span class="p">(</span> |
2393 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span> <span class="ow">and</span> |
2394 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span> <span class="ow">and</span> |
2395 | + <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">batchMode</span><span class="p">)</span> |
2396 | + <span class="c"># and not g.app.inBridge</span> |
2397 | + <span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> |
2398 | + <span class="c"># This occurs early in startup, so use the following.</span> |
2399 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">giveMessage</span><span class="p">:</span> <span class="k">return</span> |
2400 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> |
2401 | + <span class="n">s</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">toEncodedString</span><span class="p">(</span><span class="n">s</span><span class="p">,</span><span class="s">'ascii'</span><span class="p">)</span> |
2402 | + <span class="n">g</span><span class="o">.</span><span class="n">blue</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
2403 | + |
2404 | + <span class="n">theFile</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">openLeoOrZipFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2405 | + |
2406 | + <span class="k">if</span> <span class="n">theFile</span><span class="p">:</span> |
2407 | + <span class="n">message</span><span class="p">(</span><span class="s">'reading settings in </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">))</span> |
2408 | + |
2409 | + <span class="c"># Changing g.app.gui here is a major hack. It is necessary.</span> |
2410 | + <span class="n">oldGui</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span> |
2411 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">nullGui</span> |
2412 | + <span class="n">c</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">newCommander</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2413 | + <span class="n">frame</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span> |
2414 | + <span class="n">frame</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">enable</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> |
2415 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">lockLog</span><span class="p">()</span> |
2416 | + <span class="n">ok</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">fileCommands</span><span class="o">.</span><span class="n">openLeoFile</span><span class="p">(</span><span class="n">theFile</span><span class="p">,</span><span class="n">fn</span><span class="p">,</span> |
2417 | + <span class="n">readAtFileNodesFlag</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span><span class="n">silent</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
2418 | + <span class="c"># closes theFile.</span> |
2419 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unlockLog</span><span class="p">()</span> |
2420 | + <span class="n">c</span><span class="o">.</span><span class="n">openDirectory</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">openDirectory</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_dirname</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2421 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="o">=</span> <span class="n">oldGui</span> |
2422 | + <span class="k">return</span> <span class="n">ok</span> <span class="ow">and</span> <span class="n">c</span> <span class="ow">or</span> <span class="bp">None</span> |
2423 | + <span class="c">#@+node:ekr.20120213081706.10382: *4* lm.readGlobalSettingsFiles (changed)</span></div> |
2424 | +<div class="viewcode-block" id="LoadManager.readGlobalSettingsFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.readGlobalSettingsFiles">[docs]</a> <span class="k">def</span> <span class="nf">readGlobalSettingsFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2425 | + |
2426 | + <span class="sd">'''Read leoSettings.leo and myLeoSettings.leo using a null gui.'''</span> |
2427 | + |
2428 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
2429 | + <span class="n">verbose</span> <span class="o">=</span> <span class="bp">False</span> |
2430 | + <span class="n">tag</span> <span class="o">=</span> <span class="s">'lm.readGlobalSettingsFiles'</span> |
2431 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2432 | + |
2433 | + <span class="k">if</span> <span class="n">trace</span> <span class="ow">and</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">:</span> |
2434 | + <span class="k">print</span><span class="p">(</span><span class="s">'</span><span class="se">\n</span><span class="s"><<<<< </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span> |
2435 | + |
2436 | + <span class="c"># Open the standard settings files with a nullGui.</span> |
2437 | + <span class="c"># Important: their commanders do not exist outside this method!</span> |
2438 | + <span class="n">commanders</span> <span class="o">=</span> <span class="p">[</span> |
2439 | + <span class="n">lm</span><span class="o">.</span><span class="n">openSettingsFile</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="p">(</span> |
2440 | + <span class="n">lm</span><span class="o">.</span><span class="n">computeLeoSettingsPath</span><span class="p">(),</span> |
2441 | + <span class="n">lm</span><span class="o">.</span><span class="n">computeMyLeoSettingsPath</span><span class="p">())]</span> |
2442 | + |
2443 | + <span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">createDefaultSettingsDicts</span><span class="p">()</span> |
2444 | + |
2445 | + <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">commanders</span><span class="p">:</span> |
2446 | + <span class="k">if</span> <span class="n">c</span><span class="p">:</span> |
2447 | + <span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeLocalSettings</span><span class="p">(</span> |
2448 | + <span class="n">c</span><span class="p">,</span><span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span><span class="p">,</span><span class="n">localFlag</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span> |
2449 | + |
2450 | + <span class="c"># Adjust the name.</span> |
2451 | + <span class="n">shortcuts_d</span><span class="o">.</span><span class="n">setName</span><span class="p">(</span><span class="s">'lm.globalShortcutsDict'</span><span class="p">)</span> |
2452 | + |
2453 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> |
2454 | + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> |
2455 | + <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">commanders</span><span class="p">:</span> |
2456 | + <span class="k">print</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> |
2457 | + <span class="n">lm</span><span class="o">.</span><span class="n">traceSettingsDict</span><span class="p">(</span><span class="n">settings_d</span><span class="p">,</span><span class="n">verbose</span><span class="p">)</span> |
2458 | + <span class="n">lm</span><span class="o">.</span><span class="n">traceShortcutsDict</span><span class="p">(</span><span class="n">shortcuts_d</span><span class="p">,</span><span class="n">verbose</span><span class="p">)</span> |
2459 | + <span class="k">print</span><span class="p">(</span><span class="s">'</span><span class="se">\n</span><span class="s">>>>>></span><span class="si">%s</span><span class="s">...'</span> <span class="o">%</span> <span class="n">tag</span><span class="p">)</span> |
2460 | + |
2461 | + <span class="n">lm</span><span class="o">.</span><span class="n">globalSettingsDict</span> <span class="o">=</span> <span class="n">settings_d</span> |
2462 | + <span class="n">lm</span><span class="o">.</span><span class="n">globalShortcutsDict</span> <span class="o">=</span> <span class="n">shortcuts_d</span> |
2463 | + <span class="c">#@+node:ekr.20120214165710.10838: *4* lm.traceSettingsDict</span></div> |
2464 | +<div class="viewcode-block" id="LoadManager.traceSettingsDict"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.traceSettingsDict">[docs]</a> <span class="k">def</span> <span class="nf">traceSettingsDict</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">d</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> |
2465 | + |
2466 | + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> |
2467 | + <span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> |
2468 | + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">())):</span> |
2469 | + <span class="n">gs</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> |
2470 | + <span class="k">print</span><span class="p">(</span><span class="s">'</span><span class="si">%35s</span><span class="s"> </span><span class="si">%17s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">key</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(</span><span class="n">gs</span><span class="o">.</span><span class="n">path</span><span class="p">),</span><span class="n">gs</span><span class="o">.</span><span class="n">val</span><span class="p">))</span> |
2471 | + <span class="k">if</span> <span class="n">d</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">''</span><span class="p">)</span> |
2472 | + <span class="k">else</span><span class="p">:</span> |
2473 | + <span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> |
2474 | + <span class="c">#@+node:ekr.20120214165710.10822: *4* lm.traceShortcutsDict</span></div> |
2475 | +<div class="viewcode-block" id="LoadManager.traceShortcutsDict"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.traceShortcutsDict">[docs]</a> <span class="k">def</span> <span class="nf">traceShortcutsDict</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">d</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> |
2476 | + |
2477 | + <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> |
2478 | + <span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> |
2479 | + <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="nb">sorted</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">keys</span><span class="p">())):</span> |
2480 | + <span class="n">val</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> |
2481 | + <span class="c"># print('%20s %s' % (key,val.dump()))</span> |
2482 | + <span class="k">print</span><span class="p">(</span><span class="s">'</span><span class="si">%35s</span><span class="s"> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">key</span><span class="p">,[</span><span class="n">z</span><span class="o">.</span><span class="n">stroke</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">val</span><span class="p">]))</span> |
2483 | + <span class="k">if</span> <span class="n">d</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">''</span><span class="p">)</span> |
2484 | + <span class="k">else</span><span class="p">:</span> |
2485 | + <span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> |
2486 | + <span class="c">#@+node:ekr.20120219154958.10452: *3* LM.load</span></div> |
2487 | +<div class="viewcode-block" id="LoadManager.load"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.load">[docs]</a> <span class="k">def</span> <span class="nf">load</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">pymacs</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> |
2488 | + |
2489 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2490 | + |
2491 | + <span class="c"># Phase 1: before loading plugins.</span> |
2492 | + <span class="c"># Scan options, set directories and read settings.</span> |
2493 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">lm</span><span class="o">.</span><span class="n">isValidPython</span><span class="p">():</span> <span class="k">return</span> |
2494 | + |
2495 | + <span class="n">lm</span><span class="o">.</span><span class="n">doPrePluginsInit</span><span class="p">(</span><span class="n">fileName</span><span class="p">,</span><span class="n">pymacs</span><span class="p">)</span> |
2496 | + <span class="c"># sets lm.options and lm.files</span> |
2497 | + |
2498 | + <span class="k">if</span> <span class="n">lm</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'version'</span><span class="p">):</span> |
2499 | + <span class="k">print</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">signon</span><span class="p">)</span> |
2500 | + <span class="k">return</span> |
2501 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">:</span> |
2502 | + <span class="k">return</span> |
2503 | + |
2504 | + <span class="c"># Phase 2: load plugins: the gui has already been set.</span> |
2505 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"start1"</span><span class="p">)</span> |
2506 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">killed</span><span class="p">:</span> <span class="k">return</span> |
2507 | + |
2508 | + <span class="c"># Phase 3: after loading plugins. Create one or more frames.</span> |
2509 | + <span class="n">ok</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">doPostPluginsInit</span><span class="p">()</span> |
2510 | + |
2511 | + <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> |
2512 | + <span class="n">g</span><span class="o">.</span><span class="n">es</span><span class="p">(</span><span class="s">''</span><span class="p">)</span> <span class="c"># Clears horizontal scrolling in the log pane.</span> |
2513 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">runMainLoop</span><span class="p">()</span> |
2514 | + <span class="c"># For scripts, the gui is a nullGui.</span> |
2515 | + <span class="c"># and the gui.setScript has already been called.</span> |
2516 | + <span class="c">#@+node:ekr.20120219154958.10477: *4* LM.doPrePluginsInit & helpers</span></div> |
2517 | +<div class="viewcode-block" id="LoadManager.doPrePluginsInit"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.doPrePluginsInit">[docs]</a> <span class="k">def</span> <span class="nf">doPrePluginsInit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="p">,</span><span class="n">pymacs</span><span class="p">):</span> |
2518 | + |
2519 | + <span class="sd">''' Scan options, set directories and read settings.'''</span> |
2520 | + |
2521 | + <span class="c"># trace = False</span> |
2522 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2523 | + <span class="n">lm</span><span class="o">.</span><span class="n">computeStandardDirectories</span><span class="p">()</span> |
2524 | + <span class="n">lm</span><span class="o">.</span><span class="n">adjustSysPath</span><span class="p">()</span> |
2525 | + |
2526 | + <span class="c"># Scan the options as early as possible.</span> |
2527 | + <span class="n">lm</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="n">options</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">scanOptions</span><span class="p">(</span><span class="n">fileName</span><span class="p">,</span><span class="n">pymacs</span><span class="p">)</span> |
2528 | + <span class="c"># also sets lm.files.</span> |
2529 | + |
2530 | + <span class="k">if</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'version'</span><span class="p">):</span> |
2531 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">computeSignon</span><span class="p">()</span> |
2532 | + <span class="k">return</span> |
2533 | + |
2534 | + <span class="n">script</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'script'</span><span class="p">)</span> |
2535 | + <span class="n">verbose</span> <span class="o">=</span> <span class="n">script</span> <span class="ow">is</span> <span class="bp">None</span> |
2536 | + |
2537 | + <span class="c"># Init the app.</span> |
2538 | + <span class="n">lm</span><span class="o">.</span><span class="n">initApp</span><span class="p">(</span><span class="n">verbose</span><span class="p">)</span> |
2539 | + <span class="n">lm</span><span class="o">.</span><span class="n">reportDirectories</span><span class="p">(</span><span class="n">verbose</span><span class="p">)</span> |
2540 | + |
2541 | + <span class="c"># Read settings *after* setting g.app.config and *before* opening plugins.</span> |
2542 | + <span class="c"># This means if-gui has effect only in per-file settings.</span> |
2543 | + <span class="n">lm</span><span class="o">.</span><span class="n">readGlobalSettingsFiles</span><span class="p">()</span> |
2544 | + <span class="c"># reads only standard settings files, using a null gui.</span> |
2545 | + <span class="c"># uses lm.files[0] to compute the local directory</span> |
2546 | + <span class="c"># that might contain myLeoSettings.leo.</span> |
2547 | + |
2548 | + <span class="c"># Read the recent files file.</span> |
2549 | + <span class="n">localConfigFile</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">files</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">lm</span><span class="o">.</span><span class="n">files</span> <span class="k">else</span> <span class="bp">None</span> |
2550 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">recentFilesManager</span><span class="o">.</span><span class="n">readRecentFiles</span><span class="p">(</span><span class="n">localConfigFile</span><span class="p">)</span> |
2551 | + |
2552 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">setGlobalDb</span><span class="p">()</span> |
2553 | + |
2554 | + <span class="c"># Create the gui after reading options and settings.</span> |
2555 | + <span class="n">lm</span><span class="o">.</span><span class="n">createGui</span><span class="p">(</span><span class="n">pymacs</span><span class="p">)</span> |
2556 | + |
2557 | + <span class="c"># We can't print the signon until we know the gui.</span> |
2558 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">computeSignon</span><span class="p">()</span> <span class="c"># Set app.signon/signon2 for commanders.</span> |
2559 | + <span class="c">#@+node:ekr.20120219154958.10478: *5* LM.createGui</span></div> |
2560 | +<div class="viewcode-block" id="LoadManager.createGui"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.createGui">[docs]</a> <span class="k">def</span> <span class="nf">createGui</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">pymacs</span><span class="p">):</span> |
2561 | + |
2562 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
2563 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'</span><span class="se">\n</span><span class="s">==================== LM.createGui'</span><span class="p">)</span> |
2564 | + |
2565 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2566 | + |
2567 | + <span class="n">gui_option</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'gui'</span><span class="p">)</span> |
2568 | + <span class="n">windowFlag</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'windowFlag'</span><span class="p">)</span> |
2569 | + <span class="n">script</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'script'</span><span class="p">)</span> |
2570 | + |
2571 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">:</span> |
2572 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="o">==</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">nullGui</span><span class="p">:</span> |
2573 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Enable g.app.createDefaultGui </span> |
2574 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">createDefaultGui</span><span class="p">(</span><span class="n">__file__</span><span class="p">)</span> |
2575 | + <span class="k">else</span><span class="p">:</span> |
2576 | + <span class="c"># This can happen when launching Leo from IPython.</span> |
2577 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'g.app.gui'</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">)</span> |
2578 | + <span class="k">elif</span> <span class="n">gui_option</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
2579 | + <span class="k">if</span> <span class="n">script</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">windowFlag</span><span class="p">:</span> |
2580 | + <span class="c"># Always use null gui for scripts.</span> |
2581 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">createNullGuiWithScript</span><span class="p">(</span><span class="n">script</span><span class="p">)</span> |
2582 | + <span class="k">else</span><span class="p">:</span> |
2583 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">createDefaultGui</span><span class="p">(</span><span class="n">__file__</span><span class="p">)</span> |
2584 | + <span class="k">else</span><span class="p">:</span> |
2585 | + <span class="n">lm</span><span class="o">.</span><span class="n">createSpecialGui</span><span class="p">(</span><span class="n">gui_option</span><span class="p">,</span><span class="n">pymacs</span><span class="p">,</span><span class="n">script</span><span class="p">,</span><span class="n">windowFlag</span><span class="p">)</span> |
2586 | + <span class="c">#@+node:ekr.20120219154958.10479: *5* LM.createSpecialGui</span></div> |
2587 | +<div class="viewcode-block" id="LoadManager.createSpecialGui"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.createSpecialGui">[docs]</a> <span class="k">def</span> <span class="nf">createSpecialGui</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">gui</span><span class="p">,</span><span class="n">pymacs</span><span class="p">,</span><span class="n">script</span><span class="p">,</span><span class="n">windowFlag</span><span class="p">):</span> |
2588 | + |
2589 | + <span class="c"># lm = self</span> |
2590 | + |
2591 | + <span class="k">if</span> <span class="n">pymacs</span><span class="p">:</span> |
2592 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">createNullGuiWithScript</span><span class="p">(</span><span class="n">script</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span> |
2593 | + <span class="k">elif</span> <span class="n">script</span><span class="p">:</span> |
2594 | + <span class="k">if</span> <span class="n">windowFlag</span><span class="p">:</span> |
2595 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">createDefaultGui</span><span class="p">()</span> |
2596 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">setScript</span><span class="p">(</span><span class="n">script</span><span class="o">=</span><span class="n">script</span><span class="p">)</span> |
2597 | + <span class="n">sys</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> |
2598 | + <span class="k">else</span><span class="p">:</span> |
2599 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">createNullGuiWithScript</span><span class="p">(</span><span class="n">script</span><span class="o">=</span><span class="n">script</span><span class="p">)</span> |
2600 | + <span class="k">else</span><span class="p">:</span> |
2601 | + <span class="c"># assert g.app.guiArgName</span> |
2602 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">createDefaultGui</span><span class="p">()</span> |
2603 | + <span class="c">#@+node:ekr.20120219154958.10480: *5* LM.adjustSysPath</span></div> |
2604 | +<div class="viewcode-block" id="LoadManager.adjustSysPath"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.adjustSysPath">[docs]</a> <span class="k">def</span> <span class="nf">adjustSysPath</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2605 | + |
2606 | + <span class="sd">'''Adjust sys.path to enable imports as usual with Leo.</span> |
2607 | + |
2608 | +<span class="sd"> This method is no longer needed:</span> |
2609 | + |
2610 | +<span class="sd"> 1. g.importModule will import from the</span> |
2611 | +<span class="sd"> 'external' or 'extensions' folders as needed</span> |
2612 | +<span class="sd"> without altering sys.path.</span> |
2613 | + |
2614 | +<span class="sd"> 2. Plugins now do fully qualified imports.</span> |
2615 | +<span class="sd"> '''</span> |
2616 | + |
2617 | + <span class="k">pass</span> |
2618 | + <span class="c">#@+node:ekr.20120219154958.10482: *5* LM.getDefaultFile</span></div> |
2619 | +<div class="viewcode-block" id="LoadManager.getDefaultFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.getDefaultFile">[docs]</a> <span class="k">def</span> <span class="nf">getDefaultFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2620 | + |
2621 | + <span class="c"># Get the name of the workbook.</span> |
2622 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getString</span><span class="p">(</span><span class="s">'default_leo_file'</span><span class="p">)</span> |
2623 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2624 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">fn</span><span class="p">:</span> <span class="k">return</span> |
2625 | + |
2626 | + <span class="c"># g.trace(g.os_path_exists(fn),fn)</span> |
2627 | + |
2628 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
2629 | + <span class="k">return</span> <span class="n">fn</span> |
2630 | + <span class="k">elif</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_isabs</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
2631 | + <span class="c"># Create the file.</span> |
2632 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'Using default leo file name:</span><span class="se">\n</span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">))</span> |
2633 | + <span class="k">return</span> <span class="n">fn</span> |
2634 | + <span class="k">else</span><span class="p">:</span> |
2635 | + <span class="c"># It's too risky to open a default file if it is relative.</span> |
2636 | + <span class="k">return</span> <span class="bp">None</span> |
2637 | + <span class="c">#@+node:ekr.20120219154958.10484: *5* LM.initApp</span></div> |
2638 | +<div class="viewcode-block" id="LoadManager.initApp"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.initApp">[docs]</a> <span class="k">def</span> <span class="nf">initApp</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">verbose</span><span class="p">):</span> |
2639 | + |
2640 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
2641 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'LM.initApp'</span><span class="p">)</span> |
2642 | + |
2643 | + <span class="k">assert</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadManager</span> |
2644 | + |
2645 | + <span class="kn">import</span> <span class="nn">leo.core.leoConfig</span> <span class="kn">as</span> <span class="nn">leoConfig</span> |
2646 | + <span class="kn">import</span> <span class="nn">leo.core.leoNodes</span> <span class="kn">as</span> <span class="nn">leoNodes</span> |
2647 | + <span class="kn">import</span> <span class="nn">leo.core.leoPlugins</span> <span class="kn">as</span> <span class="nn">leoPlugins</span> |
2648 | + <span class="kn">import</span> <span class="nn">leo.core.leoSessions</span> <span class="kn">as</span> <span class="nn">leoSessions</span> |
2649 | + |
2650 | + <span class="c"># Import leoIPython only if requested. The import is quite slow.</span> |
2651 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">useIpython</span><span class="p">:</span> |
2652 | + <span class="kn">import</span> <span class="nn">leo.core.leoIPython</span> <span class="kn">as</span> <span class="nn">leoIPython</span> |
2653 | + <span class="c"># Use the GlobalIPythonManager created during the import process.</span> |
2654 | + <span class="c"># This ensures that only one copy is ever created.</span> |
2655 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">ipm</span> <span class="o">=</span> <span class="n">leoIPython</span><span class="o">.</span><span class="n">g_ipm</span> |
2656 | + |
2657 | + <span class="c"># Make sure we call the new leoPlugins.init top-level function.</span> |
2658 | + <span class="c"># This prevents a crash when run is called repeatedly from</span> |
2659 | + <span class="c"># IPython's lleo extension.</span> |
2660 | + <span class="n">leoPlugins</span><span class="o">.</span><span class="n">init</span><span class="p">()</span> |
2661 | + |
2662 | + <span class="c"># Force the user to set g.app.leoID.</span> |
2663 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">setLeoID</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="n">verbose</span><span class="p">)</span> |
2664 | + |
2665 | + <span class="c"># Create early classes *after* doing plugins.init()</span> |
2666 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">recentFilesManager</span> <span class="o">=</span> <span class="n">RecentFilesManager</span><span class="p">()</span> |
2667 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">config</span> <span class="o">=</span> <span class="n">leoConfig</span><span class="o">.</span><span class="n">GlobalConfigManager</span><span class="p">()</span> |
2668 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">nodeIndices</span> <span class="o">=</span> <span class="n">leoNodes</span><span class="o">.</span><span class="n">nodeIndices</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">leoID</span><span class="p">)</span> |
2669 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">sessionManager</span> <span class="o">=</span> <span class="n">leoSessions</span><span class="o">.</span><span class="n">SessionManager</span><span class="p">()</span> |
2670 | + |
2671 | + <span class="c"># Complete the plugins class last.</span> |
2672 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">pluginsController</span><span class="o">.</span><span class="n">finishCreate</span><span class="p">()</span> |
2673 | + <span class="c">#@+node:ekr.20120219154958.10486: *5* LM.scanOptions & helper</span></div> |
2674 | +<div class="viewcode-block" id="LoadManager.scanOptions"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.scanOptions">[docs]</a> <span class="k">def</span> <span class="nf">scanOptions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="p">,</span><span class="n">pymacs</span><span class="p">):</span> |
2675 | + |
2676 | + <span class="sd">'''Handle all options, remove them from sys.argv and set lm.options.'''</span> |
2677 | + |
2678 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> |
2679 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2680 | + |
2681 | + <span class="c"># print('scanOptions',sys.argv)</span> |
2682 | + |
2683 | + <span class="c"># Note: this automatically implements the --help option.</span> |
2684 | + <span class="n">parser</span> <span class="o">=</span> <span class="n">optparse</span><span class="o">.</span><span class="n">OptionParser</span><span class="p">()</span> |
2685 | + <span class="n">add</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_option</span> |
2686 | + |
2687 | + <span class="n">add</span><span class="p">(</span><span class="s">'--fullscreen'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span> |
2688 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'start fullscreen (Qt only)'</span><span class="p">)</span> |
2689 | + <span class="n">add</span><span class="p">(</span><span class="s">'--ipython'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span><span class="n">dest</span><span class="o">=</span><span class="s">"use_ipython"</span><span class="p">,</span> |
2690 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'enable ipython support'</span><span class="p">)</span> |
2691 | + <span class="n">add</span><span class="p">(</span><span class="s">'--gui'</span><span class="p">,</span> |
2692 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'gui to use (qt/qttabs)'</span><span class="p">)</span> |
2693 | + <span class="n">add</span><span class="p">(</span><span class="s">'--maximized'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span> |
2694 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'start maximized (Qt only)'</span><span class="p">)</span> |
2695 | + <span class="n">add</span><span class="p">(</span><span class="s">'--minimized'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span> |
2696 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'start minimized'</span><span class="p">)</span> |
2697 | + <span class="n">add</span><span class="p">(</span><span class="s">'--no-cache'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">'no_cache'</span><span class="p">,</span> |
2698 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'disable reading of cached files'</span><span class="p">)</span> |
2699 | + <span class="n">add</span><span class="p">(</span><span class="s">'--no-plugins'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">'no_plugins'</span><span class="p">,</span> |
2700 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'disable all plugins'</span><span class="p">)</span> |
2701 | + <span class="n">add</span><span class="p">(</span><span class="s">'--no-splash'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">'no_splash_screen'</span><span class="p">,</span> |
2702 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'disable the splash screen'</span><span class="p">)</span> |
2703 | + <span class="n">add</span><span class="p">(</span><span class="s">'--screen-shot'</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">'screenshot_fn'</span><span class="p">,</span> |
2704 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'take a screen shot and then exit'</span><span class="p">)</span> |
2705 | + <span class="n">add</span><span class="p">(</span><span class="s">'--script'</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">"script"</span><span class="p">,</span> |
2706 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'execute a script and then exit'</span><span class="p">)</span> |
2707 | + <span class="n">add</span><span class="p">(</span><span class="s">'--script-window'</span><span class="p">,</span><span class="n">dest</span><span class="o">=</span><span class="s">"script_window"</span><span class="p">,</span> |
2708 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'open a window for scripts'</span><span class="p">)</span> |
2709 | + <span class="n">add</span><span class="p">(</span><span class="s">'--select'</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">'select'</span><span class="p">,</span> |
2710 | + <span class="n">help</span><span class="o">=</span><span class="s">'headline or gnx of node to select'</span><span class="p">)</span> |
2711 | + <span class="n">add</span><span class="p">(</span><span class="s">'--session-restore'</span><span class="p">,</span><span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span><span class="n">dest</span><span class="o">=</span><span class="s">'session_restore'</span><span class="p">,</span> |
2712 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'restore previously saved session tabs at startup'</span><span class="p">)</span> |
2713 | + <span class="n">add</span><span class="p">(</span><span class="s">'--session-save'</span><span class="p">,</span><span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span><span class="n">dest</span><span class="o">=</span><span class="s">'session_save'</span><span class="p">,</span> |
2714 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'save session tabs on exit'</span><span class="p">)</span> |
2715 | + <span class="n">add</span><span class="p">(</span><span class="s">'--silent'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">"silent"</span><span class="p">,</span> |
2716 | + <span class="n">help</span> <span class="o">=</span> <span class="s">'disable all log messages'</span><span class="p">)</span> |
2717 | + <span class="n">add</span><span class="p">(</span><span class="s">'--version'</span><span class="p">,</span> <span class="n">action</span><span class="o">=</span><span class="s">"store_true"</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">"version"</span><span class="p">,</span> |
2718 | + <span class="n">help</span><span class="o">=</span><span class="s">'print version number and exit'</span><span class="p">)</span> |
2719 | + <span class="n">add</span><span class="p">(</span><span class="s">'--window-size'</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">'window_size'</span><span class="p">,</span> |
2720 | + <span class="n">help</span><span class="o">=</span><span class="s">'initial window size in height x width format'</span><span class="p">)</span> |
2721 | + |
2722 | + <span class="c"># Parse the options, and remove them from sys.argv.</span> |
2723 | + <span class="n">options</span><span class="p">,</span> <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">()</span> |
2724 | + <span class="n">sys</span><span class="o">.</span><span class="n">argv</span> <span class="o">=</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">0</span><span class="p">]]</span> <span class="p">;</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> |
2725 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> |
2726 | + <span class="c"># print('scanOptions:',sys.argv)</span> |
2727 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'options'</span><span class="p">,</span><span class="n">options</span><span class="p">)</span> |
2728 | + |
2729 | + <span class="c"># Handle the args...</span> |
2730 | + |
2731 | + <span class="c"># --gui</span> |
2732 | + <span class="n">gui</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">gui</span> |
2733 | + |
2734 | + <span class="k">if</span> <span class="n">gui</span><span class="p">:</span> |
2735 | + <span class="n">gui</span> <span class="o">=</span> <span class="n">gui</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> |
2736 | + <span class="k">if</span> <span class="n">gui</span> <span class="o">==</span> <span class="s">'qttabs'</span><span class="p">:</span> |
2737 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">qt_use_tabs</span> <span class="o">=</span> <span class="bp">True</span> |
2738 | + <span class="k">elif</span> <span class="n">gui</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'curses'</span><span class="p">,</span><span class="s">'qt'</span><span class="p">,</span><span class="s">'null'</span><span class="p">):</span> |
2739 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">qt_use_tabs</span> <span class="o">=</span> <span class="bp">False</span> |
2740 | + <span class="k">else</span><span class="p">:</span> |
2741 | + <span class="k">print</span><span class="p">(</span><span class="s">'scanOptions: unknown gui: </span><span class="si">%s</span><span class="s">. Using qt gui'</span> <span class="o">%</span> <span class="n">gui</span><span class="p">)</span> |
2742 | + <span class="n">gui</span> <span class="o">=</span> <span class="s">'qt'</span> |
2743 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">qt_use_tabs</span> <span class="o">=</span> <span class="bp">False</span> |
2744 | + <span class="k">elif</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">'darwin'</span><span class="p">:</span> |
2745 | + <span class="n">gui</span> <span class="o">=</span> <span class="s">'qt'</span> |
2746 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">qt_use_tabs</span> <span class="o">=</span> <span class="bp">False</span> |
2747 | + <span class="k">else</span><span class="p">:</span> |
2748 | + <span class="n">gui</span> <span class="o">=</span> <span class="s">'qttabs'</span> |
2749 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">qt_use_tabs</span> <span class="o">=</span> <span class="bp">True</span> |
2750 | + |
2751 | + <span class="k">assert</span> <span class="n">gui</span> |
2752 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">guiArgName</span> <span class="o">=</span> <span class="n">gui</span> |
2753 | + |
2754 | + <span class="c"># --ipython</span> |
2755 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">useIpython</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">use_ipython</span> |
2756 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'g.app.useIpython'</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">useIpython</span><span class="p">)</span> |
2757 | + |
2758 | + <span class="c"># --fullscreen</span> |
2759 | + <span class="c"># --minimized</span> |
2760 | + <span class="c"># --maximized</span> |
2761 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">start_fullscreen</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">fullscreen</span> |
2762 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">start_maximized</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">maximized</span> |
2763 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">start_minimized</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">minimized</span> |
2764 | + |
2765 | + <span class="c"># --no-cache</span> |
2766 | + <span class="k">if</span> <span class="n">options</span><span class="o">.</span><span class="n">no_cache</span><span class="p">:</span> |
2767 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'scanOptions: disabling caching'</span><span class="p">)</span> |
2768 | + <span class="n">g</span><span class="o">.</span><span class="n">enableDB</span> <span class="o">=</span> <span class="bp">False</span> |
2769 | + |
2770 | + <span class="c"># --no-plugins</span> |
2771 | + <span class="k">if</span> <span class="n">options</span><span class="o">.</span><span class="n">no_plugins</span><span class="p">:</span> |
2772 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'scanOptions: disabling plugins'</span><span class="p">)</span> |
2773 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">enablePlugins</span> <span class="o">=</span> <span class="bp">False</span> |
2774 | + |
2775 | + <span class="c"># --no-splash</span> |
2776 | + <span class="c"># g.trace('--no-splash',options.no_splash_screen)</span> |
2777 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">use_splash_screen</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">options</span><span class="o">.</span><span class="n">no_splash_screen</span> |
2778 | + |
2779 | + <span class="c"># --screen-shot=fn</span> |
2780 | + <span class="n">screenshot_fn</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">screenshot_fn</span> |
2781 | + <span class="k">if</span> <span class="n">screenshot_fn</span><span class="p">:</span> |
2782 | + <span class="n">screenshot_fn</span> <span class="o">=</span> <span class="n">screenshot_fn</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s">'"'</span><span class="p">)</span> |
2783 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'scanOptions: screenshot_fn'</span><span class="p">,</span><span class="n">screenshot_fn</span><span class="p">)</span> |
2784 | + |
2785 | + <span class="c"># --script</span> |
2786 | + <span class="n">script_path</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">script</span> |
2787 | + <span class="n">script_path_w</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">script_window</span> |
2788 | + <span class="k">if</span> <span class="n">script_path</span> <span class="ow">and</span> <span class="n">script_path_w</span><span class="p">:</span> |
2789 | + <span class="n">parser</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">"--script and script-window are mutually exclusive"</span><span class="p">)</span> |
2790 | + |
2791 | + <span class="n">script_name</span> <span class="o">=</span> <span class="n">script_path</span> <span class="ow">or</span> <span class="n">script_path_w</span> |
2792 | + <span class="k">if</span> <span class="n">script_name</span><span class="p">:</span> |
2793 | + <span class="n">script_name</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize_join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span><span class="p">,</span><span class="n">script_name</span><span class="p">)</span> |
2794 | + <span class="n">script</span><span class="p">,</span><span class="n">e</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">readFileIntoString</span><span class="p">(</span><span class="n">script_name</span><span class="p">,</span><span class="n">kind</span><span class="o">=</span><span class="s">'script:'</span><span class="p">)</span> |
2795 | + <span class="c"># print('script_name',repr(script_name))</span> |
2796 | + <span class="k">else</span><span class="p">:</span> |
2797 | + <span class="n">script</span> <span class="o">=</span> <span class="bp">None</span> |
2798 | + <span class="c"># if trace: print('scanOptions: no script')</span> |
2799 | + |
2800 | + <span class="c"># --select</span> |
2801 | + <span class="n">select</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">select</span> |
2802 | + <span class="k">if</span> <span class="n">select</span><span class="p">:</span> |
2803 | + <span class="n">select</span> <span class="o">=</span> <span class="n">select</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s">'"'</span><span class="p">)</span> |
2804 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'scanOptions: select'</span><span class="p">,</span><span class="nb">repr</span><span class="p">(</span><span class="n">select</span><span class="p">))</span> |
2805 | + |
2806 | + <span class="c"># --session-restore & --session-save</span> |
2807 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">restore_session</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span><span class="n">options</span><span class="o">.</span><span class="n">session_restore</span><span class="p">)</span> |
2808 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">save_session</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span><span class="n">options</span><span class="o">.</span><span class="n">session_save</span><span class="p">)</span> |
2809 | + |
2810 | + <span class="c"># --silent</span> |
2811 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">silent</span> |
2812 | + <span class="c"># print('scanOptions: silentMode',g.app.silentMode)</span> |
2813 | + |
2814 | + <span class="c"># --version: print the version and exit.</span> |
2815 | + <span class="n">versionFlag</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">version</span> |
2816 | + |
2817 | + |
2818 | + <span class="c"># --window-size</span> |
2819 | + <span class="n">windowSize</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">window_size</span> |
2820 | + <span class="k">if</span> <span class="n">windowSize</span><span class="p">:</span> |
2821 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'windowSize'</span><span class="p">,</span><span class="nb">repr</span><span class="p">(</span><span class="n">windowSize</span><span class="p">))</span> |
2822 | + <span class="k">try</span><span class="p">:</span> |
2823 | + <span class="n">h</span><span class="p">,</span><span class="n">w</span> <span class="o">=</span> <span class="n">windowSize</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">'x'</span><span class="p">)</span> |
2824 | + <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> |
2825 | + <span class="n">windowSize</span> <span class="o">=</span> <span class="bp">None</span> |
2826 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'bad --window-size:'</span><span class="p">,</span><span class="n">windowSize</span><span class="p">)</span> |
2827 | + |
2828 | + <span class="c"># Compute lm.files</span> |
2829 | + <span class="n">lm</span><span class="o">.</span><span class="n">files</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeFilesList</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
2830 | + |
2831 | + <span class="c"># Post-process the options.</span> |
2832 | + <span class="k">if</span> <span class="n">pymacs</span><span class="p">:</span> |
2833 | + <span class="n">script</span> <span class="o">=</span> <span class="bp">None</span> |
2834 | + <span class="n">windowFlag</span> <span class="o">=</span> <span class="bp">None</span> |
2835 | + |
2836 | + <span class="c"># Compute the return values.</span> |
2837 | + <span class="n">windowFlag</span> <span class="o">=</span> <span class="n">script</span> <span class="ow">and</span> <span class="n">script_path_w</span> |
2838 | + <span class="n">d</span> <span class="o">=</span> <span class="p">{</span> |
2839 | + <span class="s">'gui'</span><span class="p">:</span><span class="n">gui</span><span class="p">,</span> |
2840 | + <span class="s">'screenshot_fn'</span><span class="p">:</span><span class="n">screenshot_fn</span><span class="p">,</span> |
2841 | + <span class="s">'script'</span><span class="p">:</span><span class="n">script</span><span class="p">,</span> |
2842 | + <span class="s">'select'</span><span class="p">:</span><span class="n">select</span><span class="p">,</span> |
2843 | + <span class="s">'version'</span><span class="p">:</span><span class="n">versionFlag</span><span class="p">,</span> |
2844 | + <span class="s">'windowFlag'</span><span class="p">:</span><span class="n">windowFlag</span><span class="p">,</span> |
2845 | + <span class="s">'windowSize'</span><span class="p">:</span><span class="n">windowSize</span><span class="p">,</span> |
2846 | + <span class="p">}</span> |
2847 | + |
2848 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> |
2849 | + |
2850 | + <span class="k">return</span> <span class="n">d</span> |
2851 | + <span class="c">#@+node:ekr.20120219154958.10483: *6* LM.computeFilesList</span></div> |
2852 | +<div class="viewcode-block" id="LoadManager.computeFilesList"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.computeFilesList">[docs]</a> <span class="k">def</span> <span class="nf">computeFilesList</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="p">):</span> |
2853 | + |
2854 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2855 | + <span class="n">files</span> <span class="o">=</span> <span class="p">[]</span> |
2856 | + <span class="k">if</span> <span class="n">fileName</span><span class="p">:</span> |
2857 | + <span class="n">files</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
2858 | + |
2859 | + <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</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> |
2860 | + <span class="k">if</span> <span class="n">arg</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">arg</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'-'</span><span class="p">):</span> |
2861 | + <span class="n">files</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> |
2862 | + |
2863 | + <span class="k">return</span> <span class="p">[</span><span class="n">lm</span><span class="o">.</span><span class="n">completeFileName</span><span class="p">(</span><span class="n">z</span><span class="p">)</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">files</span><span class="p">]</span> |
2864 | + <span class="c">#@+node:ekr.20120219154958.10487: *4* LM.doPostPluginsInit & helpers</span></div> |
2865 | +<div class="viewcode-block" id="LoadManager.doPostPluginsInit"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.doPostPluginsInit">[docs]</a> <span class="k">def</span> <span class="nf">doPostPluginsInit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2866 | + |
2867 | + <span class="sd">'''Create a Leo window for each file in the lm.files list.'''</span> |
2868 | + |
2869 | + <span class="c"># Clear g.app.initing _before_ creating commanders.</span> |
2870 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
2871 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">initing</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># "idle" hooks may now call g.app.forceShutdown.</span> |
2872 | + |
2873 | + <span class="c"># Create the main frame. Show it and all queued messages.</span> |
2874 | + |
2875 | + <span class="c"># g.trace(lm.files)</span> |
2876 | + <span class="k">if</span> <span class="n">lm</span><span class="o">.</span><span class="n">files</span><span class="p">:</span> |
2877 | + <span class="n">c1</span> <span class="o">=</span> <span class="bp">None</span> |
2878 | + <span class="k">for</span> <span class="n">fn</span> <span class="ow">in</span> <span class="n">lm</span><span class="o">.</span><span class="n">files</span><span class="p">:</span> |
2879 | + <span class="n">c</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">loadLocalFile</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="n">gui</span><span class="o">=</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">,</span><span class="n">old_c</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span> |
2880 | + <span class="c"># Will give a "not found" message.</span> |
2881 | + <span class="c"># This can fail if the file is open in another instance of Leo.</span> |
2882 | + <span class="c"># assert c</span> |
2883 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">c1</span><span class="p">:</span> <span class="n">c1</span> <span class="o">=</span> <span class="n">c</span> |
2884 | + <span class="k">else</span><span class="p">:</span> |
2885 | + <span class="n">c</span> <span class="o">=</span> <span class="n">c1</span> <span class="o">=</span> <span class="bp">None</span> |
2886 | + |
2887 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">restore_session</span><span class="p">:</span> |
2888 | + <span class="n">m</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">sessionManager</span> |
2889 | + <span class="k">if</span> <span class="n">m</span><span class="p">:</span> |
2890 | + <span class="n">aList</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">load_snapshot</span><span class="p">()</span> |
2891 | + <span class="k">if</span> <span class="n">aList</span><span class="p">:</span> |
2892 | + <span class="n">m</span><span class="o">.</span><span class="n">load_session</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="n">aList</span><span class="p">)</span> |
2893 | + <span class="n">c</span> <span class="o">=</span> <span class="n">c1</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">c</span> |
2894 | + |
2895 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
2896 | + <span class="c"># Create an empty frame.</span> |
2897 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">computeWorkbookFileName</span><span class="p">()</span> |
2898 | + <span class="n">c</span> <span class="o">=</span> <span class="n">c1</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">loadLocalFile</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="n">gui</span><span class="o">=</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">,</span><span class="n">old_c</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span> |
2899 | + |
2900 | + <span class="c"># Put the focus in the first-opened file.</span> |
2901 | + <span class="n">fileName</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">files</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">if</span> <span class="n">lm</span><span class="o">.</span><span class="n">files</span> <span class="k">else</span> <span class="bp">None</span> |
2902 | + <span class="n">c</span> <span class="o">=</span> <span class="n">c1</span> |
2903 | + |
2904 | + <span class="c"># For qttabs gui, select the first-loaded tab.</span> |
2905 | + <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="p">,</span><span class="s">'frameFactory'</span><span class="p">):</span> |
2906 | + <span class="n">factory</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">frameFactory</span> |
2907 | + <span class="k">if</span> <span class="n">factory</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">factory</span><span class="p">,</span><span class="s">'setTabForCommander'</span><span class="p">):</span> |
2908 | + <span class="n">factory</span><span class="o">.</span><span class="n">setTabForCommander</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> |
2909 | + |
2910 | + <span class="c"># Fix bug 844953: tell Unity which menu to use.</span> |
2911 | + <span class="n">c</span><span class="o">.</span><span class="n">enableMenuBar</span><span class="p">()</span> |
2912 | + |
2913 | + <span class="c"># Do the final inits.</span> |
2914 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">logInited</span> <span class="o">=</span> <span class="bp">True</span> |
2915 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">initComplete</span> <span class="o">=</span> <span class="bp">True</span> |
2916 | + <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> |
2917 | + <span class="c"># print('doPostPluginsInit: ***** set log')</span> |
2918 | + |
2919 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"start2"</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">p</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">p</span><span class="p">,</span><span class="n">v</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">p</span><span class="p">,</span><span class="n">fileName</span><span class="o">=</span><span class="n">fileName</span><span class="p">)</span> |
2920 | + <span class="n">g</span><span class="o">.</span><span class="n">enableIdleTimeHook</span><span class="p">(</span><span class="n">idleTimeDelay</span><span class="o">=</span><span class="mi">500</span><span class="p">)</span> |
2921 | + <span class="n">lm</span><span class="o">.</span><span class="n">initFocusAndDraw</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">fileName</span><span class="p">)</span> |
2922 | + |
2923 | + <span class="n">screenshot_fn</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'screenshot_fn'</span><span class="p">)</span> |
2924 | + <span class="k">if</span> <span class="n">screenshot_fn</span><span class="p">:</span> |
2925 | + <span class="n">lm</span><span class="o">.</span><span class="n">make_screen_shot</span><span class="p">(</span><span class="n">screenshot_fn</span><span class="p">)</span> |
2926 | + <span class="k">return</span> <span class="bp">False</span> <span class="c"># Force an immediate exit.</span> |
2927 | + |
2928 | + <span class="k">return</span> <span class="bp">True</span> |
2929 | + <span class="c">#@+node:ekr.20120219154958.10488: *5* LM.initFocusAndDraw</span></div> |
2930 | +<div class="viewcode-block" id="LoadManager.initFocusAndDraw"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.initFocusAndDraw">[docs]</a> <span class="k">def</span> <span class="nf">initFocusAndDraw</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">fileName</span><span class="p">):</span> |
2931 | + |
2932 | + <span class="n">w</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">get_focus</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> |
2933 | + |
2934 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">fileName</span><span class="p">:</span> |
2935 | + <span class="n">c</span><span class="o">.</span><span class="n">redraw</span><span class="p">()</span> |
2936 | + |
2937 | + <span class="c"># Respect c's focus wishes if posssible.</span> |
2938 | + <span class="k">if</span> <span class="n">w</span> <span class="o">!=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">body</span><span class="o">.</span><span class="n">bodyCtrl</span> <span class="ow">and</span> <span class="n">w</span> <span class="o">!=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">canvas</span><span class="p">:</span> |
2939 | + <span class="n">c</span><span class="o">.</span><span class="n">bodyWantsFocus</span><span class="p">()</span> |
2940 | + <span class="n">c</span><span class="o">.</span><span class="n">k</span><span class="o">.</span><span class="n">showStateAndMode</span><span class="p">(</span><span class="n">w</span><span class="p">)</span> |
2941 | + |
2942 | + <span class="n">c</span><span class="o">.</span><span class="n">outerUpdate</span><span class="p">()</span> |
2943 | + <span class="c">#@+node:ekr.20120219154958.10489: *5* LM.make_screen_shot</span></div> |
2944 | +<div class="viewcode-block" id="LoadManager.make_screen_shot"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.make_screen_shot">[docs]</a> <span class="k">def</span> <span class="nf">make_screen_shot</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
2945 | + |
2946 | + <span class="sd">'''Create a screenshot of the present Leo outline and save it to path.'''</span> |
2947 | + |
2948 | + <span class="c"># g.trace('runLeo.py',fn)</span> |
2949 | + |
2950 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">gui</span><span class="o">.</span><span class="n">guiName</span><span class="p">()</span> <span class="o">==</span> <span class="s">'qt'</span><span class="p">:</span> |
2951 | + <span class="n">m</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">loadOnePlugin</span><span class="p">(</span><span class="s">'screenshots'</span><span class="p">)</span> |
2952 | + <span class="n">m</span><span class="o">.</span><span class="n">make_screen_shot</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
2953 | + <span class="c">#@+node:ekr.20120219154958.10491: *4* LM.isValidPython & emergency (Tk) dialog class</span></div> |
2954 | +<div class="viewcode-block" id="LoadManager.isValidPython"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.isValidPython">[docs]</a> <span class="k">def</span> <span class="nf">isValidPython</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
2955 | + |
2956 | + <span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s">'cli'</span><span class="p">:</span> |
2957 | + <span class="k">return</span> <span class="bp">True</span> |
2958 | + |
2959 | + <span class="n">minimum_python_version</span> <span class="o">=</span> <span class="s">'2.6'</span> |
2960 | + |
2961 | + <span class="n">message</span> <span class="o">=</span> <span class="s">"""</span><span class="se">\</span> |
2962 | +<span class="s"> Leo requires Python </span><span class="si">%s</span><span class="s"> or higher.</span> |
2963 | +<span class="s"> You may download Python from</span> |
2964 | +<span class="s"> http://python.org/download/</span> |
2965 | +<span class="s"> """</span> <span class="o">%</span> <span class="n">minimum_python_version</span> |
2966 | + |
2967 | + <span class="k">try</span><span class="p">:</span> |
2968 | + <span class="n">version</span> <span class="o">=</span> <span class="s">'.'</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="nb">str</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">version_info</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">)])</span> |
2969 | + <span class="n">ok</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">CheckVersion</span><span class="p">(</span><span class="n">version</span><span class="p">,</span><span class="n">minimum_python_version</span><span class="p">)</span> |
2970 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">ok</span><span class="p">:</span> |
2971 | + <span class="k">print</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> |
2972 | + <span class="k">try</span><span class="p">:</span> |
2973 | + <span class="c"># g.app.gui does not exist yet.</span> |
2974 | + <span class="kn">import</span> <span class="nn">Tkinter</span> <span class="kn">as</span> <span class="nn">Tk</span> |
2975 | + <span class="c">#@+<< define emergency dialog class >></span> |
2976 | + <span class="c">#@+node:ekr.20120219154958.10492: *5* << define emergency dialog class >></span> |
2977 | + <span class="k">class</span> <span class="nc">emergencyDialog</span><span class="p">:</span> |
2978 | + |
2979 | + <span class="sd">"""A class that creates an Tkinter dialog with a single OK button."""</span> |
2980 | + |
2981 | + <span class="c">#@+others</span> |
2982 | + <span class="c">#@+node:ekr.20120219154958.10493: *6* __init__ (emergencyDialog)</span> |
2983 | + <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">title</span><span class="p">,</span><span class="n">message</span><span class="p">):</span> |
2984 | + |
2985 | + <span class="sd">"""Constructor for the leoTkinterDialog class."""</span> |
2986 | + |
2987 | + <span class="bp">self</span><span class="o">.</span><span class="n">answer</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Value returned from run()</span> |
2988 | + <span class="bp">self</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="n">title</span> |
2989 | + <span class="bp">self</span><span class="o">.</span><span class="n">message</span><span class="o">=</span><span class="n">message</span> |
2990 | + |
2991 | + <span class="bp">self</span><span class="o">.</span><span class="n">buttonsFrame</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Frame to hold typical dialog buttons.</span> |
2992 | + <span class="bp">self</span><span class="o">.</span><span class="n">defaultButtonCommand</span> <span class="o">=</span> <span class="bp">None</span> |
2993 | + <span class="c"># Command to call when user closes the window</span> |
2994 | + <span class="c"># by clicking the close box.</span> |
2995 | + <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The outermost frame.</span> |
2996 | + <span class="bp">self</span><span class="o">.</span><span class="n">root</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># Created in createTopFrame.</span> |
2997 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The toplevel Tk widget.</span> |
2998 | + |
2999 | + <span class="bp">self</span><span class="o">.</span><span class="n">createTopFrame</span><span class="p">()</span> |
3000 | + <span class="n">buttons</span> <span class="o">=</span> <span class="p">{</span><span class="s">"text"</span><span class="p">:</span><span class="s">"OK"</span><span class="p">,</span><span class="s">"command"</span><span class="p">:</span><span class="bp">self</span><span class="o">.</span><span class="n">okButton</span><span class="p">,</span><span class="s">"default"</span><span class="p">:</span><span class="bp">True</span><span class="p">},</span> |
3001 | + <span class="c"># Singleton tuple.</span> |
3002 | + <span class="bp">self</span><span class="o">.</span><span class="n">createButtons</span><span class="p">(</span><span class="n">buttons</span><span class="p">)</span> |
3003 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="s">"<Key>"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">onKey</span><span class="p">)</span> |
3004 | + <span class="c">#@+node:ekr.20120219154958.10494: *6* createButtons</span> |
3005 | + <span class="k">def</span> <span class="nf">createButtons</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">buttons</span><span class="p">):</span> |
3006 | + |
3007 | + <span class="sd">"""Create a row of buttons.</span> |
3008 | + |
3009 | +<span class="sd"> buttons is a list of dictionaries containing</span> |
3010 | +<span class="sd"> the properties of each button."""</span> |
3011 | + |
3012 | + <span class="k">assert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span> |
3013 | + <span class="bp">self</span><span class="o">.</span><span class="n">buttonsFrame</span> <span class="o">=</span> <span class="n">f</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="p">)</span> |
3014 | + <span class="n">f</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="s">"top"</span><span class="p">,</span><span class="n">padx</span><span class="o">=</span><span class="mi">30</span><span class="p">)</span> |
3015 | + |
3016 | + <span class="c"># Buttons is a list of dictionaries, with an empty dictionary</span> |
3017 | + <span class="c"># at the end if there is only one entry.</span> |
3018 | + <span class="n">buttonList</span> <span class="o">=</span> <span class="p">[]</span> |
3019 | + <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">buttons</span><span class="p">:</span> |
3020 | + <span class="n">text</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"text"</span><span class="p">,</span><span class="s">"<missing button name>"</span><span class="p">)</span> |
3021 | + <span class="n">isDefault</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"default"</span><span class="p">,</span><span class="bp">False</span><span class="p">)</span> |
3022 | + <span class="n">underline</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"underline"</span><span class="p">,</span><span class="mi">0</span><span class="p">)</span> |
3023 | + <span class="n">command</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"command"</span><span class="p">,</span><span class="bp">None</span><span class="p">)</span> |
3024 | + <span class="n">bd</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">choose</span><span class="p">(</span><span class="n">isDefault</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span> |
3025 | + |
3026 | + <span class="n">b</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Button</span><span class="p">(</span><span class="n">f</span><span class="p">,</span><span class="n">width</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="n">text</span><span class="p">,</span><span class="n">bd</span><span class="o">=</span><span class="n">bd</span><span class="p">,</span> |
3027 | + <span class="n">underline</span><span class="o">=</span><span class="n">underline</span><span class="p">,</span><span class="n">command</span><span class="o">=</span><span class="n">command</span><span class="p">)</span> |
3028 | + <span class="n">b</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="s">"left"</span><span class="p">,</span><span class="n">padx</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span><span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span> |
3029 | + <span class="n">buttonList</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">b</span><span class="p">)</span> |
3030 | + |
3031 | + <span class="k">if</span> <span class="n">isDefault</span> <span class="ow">and</span> <span class="n">command</span><span class="p">:</span> |
3032 | + <span class="bp">self</span><span class="o">.</span><span class="n">defaultButtonCommand</span> <span class="o">=</span> <span class="n">command</span> |
3033 | + |
3034 | + <span class="k">return</span> <span class="n">buttonList</span> |
3035 | + <span class="c">#@+node:ekr.20120219154958.10495: *6* createTopFrame</span> |
3036 | + <span class="k">def</span> <span class="nf">createTopFrame</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3037 | + |
3038 | + <span class="sd">"""Create the Tk.Toplevel widget for a leoTkinterDialog."""</span> |
3039 | + |
3040 | + <span class="bp">self</span><span class="o">.</span><span class="n">root</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Tk</span><span class="p">()</span> |
3041 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Toplevel</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="p">)</span> |
3042 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">title</span><span class="p">)</span> |
3043 | + <span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">withdraw</span><span class="p">()</span> |
3044 | + |
3045 | + <span class="bp">self</span><span class="o">.</span><span class="n">frame</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Frame</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="p">)</span> |
3046 | + <span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">side</span><span class="o">=</span><span class="s">"top"</span><span class="p">,</span><span class="n">expand</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">fill</span><span class="o">=</span><span class="s">"both"</span><span class="p">)</span> |
3047 | + |
3048 | + <span class="n">label</span> <span class="o">=</span> <span class="n">Tk</span><span class="o">.</span><span class="n">Label</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">frame</span><span class="p">,</span><span class="n">text</span><span class="o">=</span><span class="n">message</span><span class="p">,</span><span class="n">bg</span><span class="o">=</span><span class="s">'white'</span><span class="p">)</span> |
3049 | + <span class="n">label</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">pady</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span> |
3050 | + <span class="c">#@+node:ekr.20120219154958.10496: *6* okButton</span> |
3051 | + <span class="k">def</span> <span class="nf">okButton</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3052 | + |
3053 | + <span class="sd">"""Do default click action in ok button."""</span> |
3054 | + |
3055 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="o">.</span><span class="n">destroy</span><span class="p">()</span> |
3056 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span> <span class="o">=</span> <span class="bp">None</span> |
3057 | + |
3058 | + <span class="c">#@+node:ekr.20120219154958.10497: *6* onKey</span> |
3059 | + <span class="k">def</span> <span class="nf">onKey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">event</span><span class="p">):</span> |
3060 | + |
3061 | + <span class="sd">"""Handle Key events in askOk dialogs."""</span> |
3062 | + |
3063 | + <span class="bp">self</span><span class="o">.</span><span class="n">okButton</span><span class="p">()</span> |
3064 | + |
3065 | + <span class="k">return</span> <span class="c"># (for Tk) "break"</span> |
3066 | + <span class="c">#@+node:ekr.20120219154958.10498: *6* run</span> |
3067 | + <span class="k">def</span> <span class="nf">run</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3068 | + |
3069 | + <span class="sd">"""Run the modal emergency dialog."""</span> |
3070 | + |
3071 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="o">.</span><span class="n">geometry</span><span class="p">(</span><span class="s">"</span><span class="si">%d</span><span class="s">x</span><span class="si">%d%+d%+d</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="mi">300</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">50</span><span class="p">))</span> |
3072 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="o">.</span><span class="n">lift</span><span class="p">()</span> |
3073 | + |
3074 | + <span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="o">.</span><span class="n">grab_set</span><span class="p">()</span> <span class="c"># Make the dialog a modal dialog.</span> |
3075 | + <span class="bp">self</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">wait_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">top</span><span class="p">)</span> |
3076 | + <span class="c">#@-others</span> |
3077 | + <span class="c">#@-<< define emergency dialog class >></span> |
3078 | + <span class="n">d</span> <span class="o">=</span> <span class="n">emergencyDialog</span><span class="p">(</span> |
3079 | + <span class="n">title</span><span class="o">=</span><span class="s">'Python Version Error'</span><span class="p">,</span> |
3080 | + <span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">)</span> |
3081 | + <span class="n">d</span><span class="o">.</span><span class="n">run</span><span class="p">()</span> |
3082 | + <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> |
3083 | + <span class="k">pass</span> |
3084 | + <span class="k">return</span> <span class="n">ok</span> |
3085 | + <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> |
3086 | + <span class="k">print</span><span class="p">(</span><span class="s">"isValidPython: unexpected exception: g.CheckVersion"</span><span class="p">)</span> |
3087 | + <span class="n">traceback</span><span class="o">.</span><span class="n">print_exc</span><span class="p">()</span> |
3088 | + <span class="k">return</span> <span class="mi">0</span> |
3089 | + <span class="c">#@+node:ekr.20120223062418.10393: *4* LM.loadLocalFile & helper</span></div> |
3090 | +<div class="viewcode-block" id="LoadManager.loadLocalFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.loadLocalFile">[docs]</a> <span class="k">def</span> <span class="nf">loadLocalFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">,</span><span class="n">gui</span><span class="p">,</span><span class="n">old_c</span><span class="p">):</span> |
3091 | + |
3092 | + <span class="sd">'''Completely read a file, creating the corresonding outline.</span> |
3093 | + |
3094 | +<span class="sd"> 1. If fn is an existing .leo file (possibly zipped), read it twice:</span> |
3095 | +<span class="sd"> the first time with a nullGui to discover settings,</span> |
3096 | +<span class="sd"> the second time with the requested gui to create the outline.</span> |
3097 | + |
3098 | +<span class="sd"> 2. If fn is an external file:</span> |
3099 | +<span class="sd"> get settings from the leoSettings.leo and myLeoSetting.leo, then</span> |
3100 | +<span class="sd"> create a "wrapper" outline continain an @file node for the external file.</span> |
3101 | + |
3102 | +<span class="sd"> 3. If fn is empty:</span> |
3103 | +<span class="sd"> get settings from the leoSettings.leo and myLeoSetting.leo or default settings,</span> |
3104 | +<span class="sd"> or open an empty outline.</span> |
3105 | +<span class="sd"> '''</span> |
3106 | + |
3107 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
3108 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'lm.loadLocalFile: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">))</span> |
3109 | + |
3110 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
3111 | + |
3112 | + <span class="c"># Step 0: Return if the file is already open.</span> |
3113 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3114 | + <span class="k">if</span> <span class="n">fn</span><span class="p">:</span> |
3115 | + <span class="n">c</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">findOpenFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3116 | + <span class="k">if</span> <span class="n">c</span><span class="p">:</span> |
3117 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'Already open: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fn</span><span class="p">))</span> |
3118 | + <span class="k">return</span> <span class="n">c</span> |
3119 | + |
3120 | + <span class="c"># Step 1: get the previous settings.</span> |
3121 | + <span class="c"># For .leo files (and zipped .leo files) this pre-reads the file in a null gui.</span> |
3122 | + <span class="c"># Otherwise, get settings from leoSettings.leo, myLeoSettings.leo, or default settings.</span> |
3123 | + <span class="n">previousSettings</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">getPreviousSettings</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3124 | + |
3125 | + <span class="c"># Step 2: open the outline in the requested gui.</span> |
3126 | + <span class="c"># For .leo files (and zipped .leo file) this opens the file a second time.</span> |
3127 | + <span class="n">c</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">openFileByName</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="n">gui</span><span class="p">,</span><span class="n">old_c</span><span class="p">,</span><span class="n">previousSettings</span><span class="p">)</span> |
3128 | + <span class="k">return</span> <span class="n">c</span> |
3129 | + <span class="c">#@+node:ekr.20120223062418.10394: *5* LM.openFileByName & helpers</span></div> |
3130 | +<div class="viewcode-block" id="LoadManager.openFileByName"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.openFileByName">[docs]</a> <span class="k">def</span> <span class="nf">openFileByName</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">,</span><span class="n">gui</span><span class="p">,</span><span class="n">old_c</span><span class="p">,</span><span class="n">previousSettings</span><span class="p">):</span> |
3131 | + |
3132 | + <span class="sd">'''Read the local file whose full path is fn using the given gui.</span> |
3133 | +<span class="sd"> fn may be a Leo file (including .leo or zipped file) or an external file.</span> |
3134 | + |
3135 | +<span class="sd"> This is not a pre-read: the previousSettings always exist and</span> |
3136 | +<span class="sd"> the commander created here persists until the user closes the outline.</span> |
3137 | + |
3138 | +<span class="sd"> Reads the entire outline if fn exists and is a .leo file or zipped file.</span> |
3139 | +<span class="sd"> Creates an empty outline if fn is a non-existent Leo file.</span> |
3140 | +<span class="sd"> Creates an wrapper outline if fn is an external file, existing or not.</span> |
3141 | +<span class="sd"> '''</span> |
3142 | + |
3143 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
3144 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'lm.openFileByName: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(</span><span class="n">fn</span><span class="p">)))</span> |
3145 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
3146 | + |
3147 | + <span class="c"># Disable the log.</span> |
3148 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">setLog</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> |
3149 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">lockLog</span><span class="p">()</span> |
3150 | + |
3151 | + <span class="c"># Create the a commander for the .leo file.</span> |
3152 | + <span class="c"># Important. The settings don't matter for pre-reads!</span> |
3153 | + <span class="c"># For second read, the settings for the file are *exactly* previousSettings.</span> |
3154 | + <span class="n">c</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">newCommander</span><span class="p">(</span><span class="n">fileName</span><span class="o">=</span><span class="n">fn</span><span class="p">,</span><span class="n">gui</span><span class="o">=</span><span class="n">gui</span><span class="p">,</span> |
3155 | + <span class="n">previousSettings</span><span class="o">=</span><span class="n">previousSettings</span><span class="p">)</span> |
3156 | + <span class="k">assert</span> <span class="n">c</span> |
3157 | + |
3158 | + <span class="c"># Open the file, if possible.</span> |
3159 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">'open0'</span><span class="p">)</span> |
3160 | + <span class="n">theFile</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">openLeoOrZipFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3161 | + |
3162 | + <span class="c"># Enable the log.</span> |
3163 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unlockLog</span><span class="p">()</span> |
3164 | + <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">enable</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span> |
3165 | + |
3166 | + <span class="c"># Phase 2: Create the outline.</span> |
3167 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"open1"</span><span class="p">,</span><span class="n">old_c</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">new_c</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">fileName</span><span class="o">=</span><span class="n">fn</span><span class="p">)</span> |
3168 | + <span class="k">if</span> <span class="n">theFile</span><span class="p">:</span> |
3169 | + <span class="n">readAtFileNodesFlag</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span><span class="n">previousSettings</span><span class="p">)</span> |
3170 | + <span class="c">### The log is not set properly here. ###</span> |
3171 | + <span class="n">ok</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">readOpenedLeoFile</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">gui</span><span class="p">,</span><span class="n">fn</span><span class="p">,</span><span class="n">readAtFileNodesFlag</span><span class="p">,</span><span class="n">theFile</span><span class="p">)</span> |
3172 | + <span class="c"># Call c.fileCommands.openLeoFile to read the .leo file.</span> |
3173 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">ok</span><span class="p">:</span> <span class="k">return</span> <span class="bp">None</span> |
3174 | + <span class="k">else</span><span class="p">:</span> |
3175 | + <span class="c"># Create a wrapper .leo file if:</span> |
3176 | + <span class="c"># a) fn is a .leo file that does not exist or</span> |
3177 | + <span class="c"># b) fn is an external file, existing or not.</span> |
3178 | + <span class="n">lm</span><span class="o">.</span><span class="n">initWrapperLeoFile</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">fn</span><span class="p">)</span> |
3179 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"open2"</span><span class="p">,</span><span class="n">old_c</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">new_c</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">fileName</span><span class="o">=</span><span class="n">fn</span><span class="p">)</span> |
3180 | + |
3181 | + <span class="c"># Phase 3: Complete the initialization.</span> |
3182 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">writeWaitingLog</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> |
3183 | + <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> |
3184 | + <span class="n">lm</span><span class="o">.</span><span class="n">createMenu</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">fn</span><span class="p">)</span> |
3185 | + <span class="n">lm</span><span class="o">.</span><span class="n">finishOpen</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> |
3186 | + <span class="k">return</span> <span class="n">c</span> |
3187 | + <span class="c">#@+node:ekr.20120223062418.10405: *6* LM.createMenu</span></div> |
3188 | +<div class="viewcode-block" id="LoadManager.createMenu"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.createMenu">[docs]</a> <span class="k">def</span> <span class="nf">createMenu</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">fn</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span> |
3189 | + |
3190 | + <span class="c"># lm = self</span> |
3191 | + |
3192 | + <span class="c"># Create the menu as late as possible so it can use user commands.</span> |
3193 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"menu1"</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">p</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">p</span><span class="p">,</span><span class="n">v</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">p</span><span class="p">):</span> |
3194 | + <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">menu</span><span class="o">.</span><span class="n">createMenuBar</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span> |
3195 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">recentFilesManager</span><span class="o">.</span><span class="n">updateRecentFiles</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3196 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"menu2"</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">p</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">p</span><span class="p">,</span><span class="n">v</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">p</span><span class="p">)</span> |
3197 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"after-create-leo-frame"</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">)</span> |
3198 | + <span class="n">g</span><span class="o">.</span><span class="n">doHook</span><span class="p">(</span><span class="s">"after-create-leo-frame2"</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">)</span> |
3199 | + |
3200 | + <span class="c"># Fix bug 844953: tell Unity which menu to use.</span> |
3201 | + <span class="n">c</span><span class="o">.</span><span class="n">enableMenuBar</span><span class="p">()</span> |
3202 | + <span class="c">#@+node:ekr.20120223062418.10406: *6* LM.findOpenFile</span></div> |
3203 | +<div class="viewcode-block" id="LoadManager.findOpenFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.findOpenFile">[docs]</a> <span class="k">def</span> <span class="nf">findOpenFile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
3204 | + |
3205 | + <span class="c"># lm = self</span> |
3206 | + |
3207 | + <span class="k">def</span> <span class="nf">munge</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> |
3208 | + <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_normpath</span><span class="p">(</span><span class="n">name</span> <span class="ow">or</span> <span class="s">''</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> |
3209 | + |
3210 | + <span class="k">for</span> <span class="n">frame</span> <span class="ow">in</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
3211 | + <span class="n">c</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">c</span> |
3212 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_realpath</span><span class="p">(</span><span class="n">munge</span><span class="p">(</span><span class="n">fn</span><span class="p">))</span> <span class="o">==</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_realpath</span><span class="p">(</span><span class="n">munge</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">mFileName</span><span class="p">)):</span> |
3213 | + <span class="n">frame</span><span class="o">.</span><span class="n">bringToFront</span><span class="p">()</span> |
3214 | + <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> |
3215 | + <span class="c"># 2011/11/21: selecting the new tab ensures focus is set.</span> |
3216 | + <span class="n">master</span> <span class="o">=</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">top</span><span class="p">,</span><span class="s">'leo_master'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">frame</span><span class="o">.</span><span class="n">top</span><span class="o">.</span><span class="n">leo_master</span> |
3217 | + <span class="k">if</span> <span class="n">master</span><span class="p">:</span> <span class="c"># frame.top.leo_master is a TabbedTopLevel.</span> |
3218 | + <span class="n">master</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> |
3219 | + <span class="n">c</span><span class="o">.</span><span class="n">outerUpdate</span><span class="p">()</span> |
3220 | + <span class="k">return</span> <span class="n">c</span> |
3221 | + |
3222 | + <span class="k">return</span> <span class="bp">None</span> |
3223 | + <span class="c">#@+node:ekr.20120223062418.10407: *6* LM.finishOpen</span></div> |
3224 | +<div class="viewcode-block" id="LoadManager.finishOpen"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.finishOpen">[docs]</a> <span class="k">def</span> <span class="nf">finishOpen</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">):</span> |
3225 | + |
3226 | + <span class="c"># lm = self</span> |
3227 | + <span class="n">k</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">k</span> |
3228 | + <span class="k">assert</span> <span class="n">k</span> |
3229 | + |
3230 | + <span class="c"># New in Leo 4.6: provide an official way for very late initialization.</span> |
3231 | + <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">tree</span><span class="o">.</span><span class="n">initAfterLoad</span><span class="p">()</span> |
3232 | + <span class="n">c</span><span class="o">.</span><span class="n">initAfterLoad</span><span class="p">()</span> |
3233 | + <span class="n">c</span><span class="o">.</span><span class="n">redraw</span><span class="p">()</span> |
3234 | + |
3235 | + <span class="c"># chapterController.finishCreate must be called after the first real redraw</span> |
3236 | + <span class="c"># because it requires a valid value for c.rootPosition().</span> |
3237 | + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">chapterController</span><span class="p">:</span> <span class="n">c</span><span class="o">.</span><span class="n">chapterController</span><span class="o">.</span><span class="n">finishCreate</span><span class="p">()</span> |
3238 | + <span class="k">if</span> <span class="n">k</span><span class="p">:</span> <span class="n">k</span><span class="o">.</span><span class="n">setDefaultInputState</span><span class="p">()</span> |
3239 | + <span class="n">c</span><span class="o">.</span><span class="n">initialFocusHelper</span><span class="p">()</span> |
3240 | + <span class="k">if</span> <span class="n">k</span><span class="p">:</span> <span class="n">k</span><span class="o">.</span><span class="n">showStateAndMode</span><span class="p">()</span> |
3241 | + <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">initCompleteHint</span><span class="p">()</span> |
3242 | + |
3243 | + <span class="c">#@+node:ekr.20120223062418.10408: *6* LM.initWrapperLeoFile</span></div> |
3244 | +<div class="viewcode-block" id="LoadManager.initWrapperLeoFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.initWrapperLeoFile">[docs]</a> <span class="k">def</span> <span class="nf">initWrapperLeoFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
3245 | + |
3246 | + <span class="sd">'''Create an empty file if the external fn is empty.</span> |
3247 | + |
3248 | +<span class="sd"> Otherwise, create an @edit or @file node for the external file.</span> |
3249 | +<span class="sd"> '''</span> |
3250 | + |
3251 | + <span class="c"># lm = self</span> |
3252 | + |
3253 | + <span class="c"># Use the config params to set the size and location of the window.</span> |
3254 | + <span class="n">frame</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span> |
3255 | + <span class="n">frame</span><span class="o">.</span><span class="n">setInitialWindowGeometry</span><span class="p">()</span> |
3256 | + <span class="n">frame</span><span class="o">.</span><span class="n">deiconify</span><span class="p">()</span> |
3257 | + <span class="n">frame</span><span class="o">.</span><span class="n">lift</span><span class="p">()</span> |
3258 | + <span class="n">frame</span><span class="o">.</span><span class="n">resizePanesToRatio</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">ratio</span><span class="p">,</span><span class="n">frame</span><span class="o">.</span><span class="n">secondary_ratio</span><span class="p">)</span> |
3259 | + <span class="c"># Resize the _new_ frame.</span> |
3260 | + |
3261 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
3262 | + <span class="n">p</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">rootPosition</span><span class="p">()</span> |
3263 | + <span class="c"># Create an empty @edit node unless fn is an .leo file.</span> |
3264 | + <span class="n">p</span><span class="o">.</span><span class="n">h</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> <span class="k">if</span> <span class="n">fn</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">'.leo'</span><span class="p">)</span> <span class="k">else</span> <span class="s">'@edit </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">fn</span> |
3265 | + <span class="n">c</span><span class="o">.</span><span class="n">selectPosition</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> |
3266 | + <span class="k">elif</span> <span class="n">c</span><span class="o">.</span><span class="n">looksLikeDerivedFile</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
3267 | + <span class="c"># 2011/10/10: Create an @file node.</span> |
3268 | + <span class="n">p</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">importCommands</span><span class="o">.</span><span class="n">importDerivedFiles</span><span class="p">(</span><span class="n">parent</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">rootPosition</span><span class="p">(),</span> |
3269 | + <span class="n">paths</span><span class="o">=</span><span class="p">[</span><span class="n">fn</span><span class="p">],</span><span class="n">command</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span> <span class="c"># Not undoable.</span> |
3270 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">p</span><span class="p">:</span> <span class="k">return</span> <span class="bp">None</span> |
3271 | + <span class="k">else</span><span class="p">:</span> |
3272 | + <span class="c"># Create an @edit node.</span> |
3273 | + <span class="n">s</span><span class="p">,</span><span class="n">e</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">readFileIntoString</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3274 | + <span class="k">if</span> <span class="n">s</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">return</span> <span class="bp">None</span> |
3275 | + <span class="n">p</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">rootPosition</span><span class="p">()</span> |
3276 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> |
3277 | + <span class="k">if</span> <span class="n">p</span><span class="p">:</span> |
3278 | + <span class="n">p</span><span class="o">.</span><span class="n">setHeadString</span><span class="p">(</span><span class="s">'@edit </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">fn</span><span class="p">)</span> |
3279 | + <span class="n">p</span><span class="o">.</span><span class="n">setBodyString</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
3280 | + <span class="n">c</span><span class="o">.</span><span class="n">selectPosition</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> |
3281 | + |
3282 | + <span class="c"># chapterController.finishCreate must be called after the first real redraw</span> |
3283 | + <span class="c"># because it requires a valid value for c.rootPosition().</span> |
3284 | + <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getBool</span><span class="p">(</span><span class="s">'use_chapters'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">c</span><span class="o">.</span><span class="n">chapterController</span><span class="p">:</span> |
3285 | + <span class="n">c</span><span class="o">.</span><span class="n">chapterController</span><span class="o">.</span><span class="n">finishCreate</span><span class="p">()</span> |
3286 | + |
3287 | + <span class="n">frame</span><span class="o">.</span><span class="n">c</span><span class="o">.</span><span class="n">setChanged</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span> |
3288 | + <span class="c"># Mark the outline clean.</span> |
3289 | + <span class="c"># This makes it easy to open non-Leo files for quick study.</span> |
3290 | + <span class="k">return</span> <span class="n">c</span> |
3291 | + <span class="c">#@+node:ekr.20120223062418.10419: *6* LM.isLeoFile & LM.isZippedFile</span></div> |
3292 | +<div class="viewcode-block" id="LoadManager.isLeoFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.isLeoFile">[docs]</a> <span class="k">def</span> <span class="nf">isLeoFile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
3293 | + |
3294 | + <span class="k">return</span> <span class="n">fn</span> <span class="ow">and</span> <span class="p">(</span><span class="n">zipfile</span><span class="o">.</span><span class="n">is_zipfile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> <span class="ow">or</span> <span class="n">fn</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s">'.leo'</span><span class="p">))</span> |
3295 | +</div> |
3296 | +<div class="viewcode-block" id="LoadManager.isZippedFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.isZippedFile">[docs]</a> <span class="k">def</span> <span class="nf">isZippedFile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
3297 | + |
3298 | + <span class="k">return</span> <span class="n">fn</span> <span class="ow">and</span> <span class="n">zipfile</span><span class="o">.</span><span class="n">is_zipfile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3299 | + <span class="c">#@+node:ekr.20120224161905.10030: *6* LM.openLeoOrZipFile</span></div> |
3300 | +<div class="viewcode-block" id="LoadManager.openLeoOrZipFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.openLeoOrZipFile">[docs]</a> <span class="k">def</span> <span class="nf">openLeoOrZipFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
3301 | + |
3302 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
3303 | + |
3304 | + <span class="n">zipped</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">isZippedFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3305 | + |
3306 | + <span class="k">if</span> <span class="n">lm</span><span class="o">.</span><span class="n">isLeoFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> <span class="ow">and</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fn</span><span class="p">):</span> |
3307 | + <span class="k">if</span> <span class="n">zipped</span><span class="p">:</span> |
3308 | + <span class="n">theFile</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">openZipFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3309 | + <span class="k">else</span><span class="p">:</span> |
3310 | + <span class="n">theFile</span> <span class="o">=</span> <span class="n">lm</span><span class="o">.</span><span class="n">openLeoFile</span><span class="p">(</span><span class="n">fn</span><span class="p">)</span> |
3311 | + <span class="k">else</span><span class="p">:</span> |
3312 | + <span class="n">theFile</span> <span class="o">=</span> <span class="bp">None</span> |
3313 | + |
3314 | + <span class="k">return</span> <span class="n">theFile</span> |
3315 | + <span class="c">#@+node:ekr.20120223062418.10416: *6* LM.openLeoFile</span></div> |
3316 | +<div class="viewcode-block" id="LoadManager.openLeoFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.openLeoFile">[docs]</a> <span class="k">def</span> <span class="nf">openLeoFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
3317 | + |
3318 | + <span class="c"># lm = self</span> |
3319 | + <span class="k">try</span><span class="p">:</span> |
3320 | + <span class="n">theFile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="s">'rb'</span><span class="p">)</span> |
3321 | + <span class="k">return</span> <span class="n">theFile</span> |
3322 | + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> |
3323 | + <span class="c"># Do not use string + here: it will fail for non-ascii strings!</span> |
3324 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
3325 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">"can not open:"</span><span class="p">,</span><span class="n">fn</span><span class="p">)</span> |
3326 | + <span class="k">return</span> <span class="bp">None</span> |
3327 | + <span class="c">#@+node:ekr.20120223062418.10410: *6* LM.openZipFile</span></div> |
3328 | +<div class="viewcode-block" id="LoadManager.openZipFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.openZipFile">[docs]</a> <span class="k">def</span> <span class="nf">openZipFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fn</span><span class="p">):</span> |
3329 | + |
3330 | + <span class="c"># lm = self</span> |
3331 | + <span class="k">try</span><span class="p">:</span> |
3332 | + <span class="n">theFile</span> <span class="o">=</span> <span class="n">zipfile</span><span class="o">.</span><span class="n">ZipFile</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="s">'r'</span><span class="p">)</span> |
3333 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">theFile</span><span class="p">:</span> <span class="k">return</span> <span class="bp">None</span> |
3334 | + |
3335 | + <span class="c"># Read the file into an StringIO file.</span> |
3336 | + <span class="n">aList</span> <span class="o">=</span> <span class="n">theFile</span><span class="o">.</span><span class="n">namelist</span><span class="p">()</span> |
3337 | + <span class="n">name</span> <span class="o">=</span> <span class="n">aList</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">aList</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">aList</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> |
3338 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> <span class="k">return</span> <span class="bp">None</span> |
3339 | + <span class="n">s</span> <span class="o">=</span> <span class="n">theFile</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> |
3340 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> <span class="n">s</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">ue</span><span class="p">(</span><span class="n">s</span><span class="p">,</span><span class="s">'utf-8'</span><span class="p">)</span> |
3341 | + <span class="k">return</span> <span class="n">StringIO</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
3342 | + |
3343 | + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> |
3344 | + <span class="c"># Do not use string + here: it will fail for non-ascii strings!</span> |
3345 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
3346 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">"can not open:"</span><span class="p">,</span><span class="n">fn</span><span class="p">)</span> |
3347 | + <span class="k">return</span> <span class="bp">None</span> |
3348 | + <span class="c">#@+node:ekr.20120223062418.10412: *6* LM.readOpenedLeoFile</span></div> |
3349 | +<div class="viewcode-block" id="LoadManager.readOpenedLeoFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LoadManager.readOpenedLeoFile">[docs]</a> <span class="k">def</span> <span class="nf">readOpenedLeoFile</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">gui</span><span class="p">,</span><span class="n">fn</span><span class="p">,</span><span class="n">readAtFileNodesFlag</span><span class="p">,</span><span class="n">theFile</span><span class="p">):</span> |
3350 | + |
3351 | + <span class="c"># New in Leo 4.10: The open1 event does not allow an override of the init logic.</span> |
3352 | + <span class="k">assert</span> <span class="n">theFile</span> |
3353 | + <span class="c"># lm = self</span> |
3354 | + <span class="n">ok</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">fileCommands</span><span class="o">.</span><span class="n">openLeoFile</span><span class="p">(</span><span class="n">theFile</span><span class="p">,</span><span class="n">fn</span><span class="p">,</span> |
3355 | + <span class="n">readAtFileNodesFlag</span><span class="o">=</span><span class="n">readAtFileNodesFlag</span><span class="p">)</span> |
3356 | + <span class="c"># closes file.</span> |
3357 | + <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> |
3358 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">openDirectory</span><span class="p">:</span> |
3359 | + <span class="n">theDir</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">os_path_dirname</span><span class="p">(</span><span class="n">fn</span><span class="p">))</span> |
3360 | + <span class="n">c</span><span class="o">.</span><span class="n">openDirectory</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">openDirectory</span> <span class="o">=</span> <span class="n">theDir</span> |
3361 | + <span class="k">else</span><span class="p">:</span> |
3362 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">closeLeoWindow</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="p">)</span> |
3363 | + <span class="k">return</span> <span class="n">ok</span> |
3364 | + <span class="c">#@-others</span> |
3365 | + |
3366 | +<span class="c">#@+node:ekr.20120211121736.10831: ** class LogManager</span></div></div> |
3367 | +<div class="viewcode-block" id="LogManager"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LogManager">[docs]</a><span class="k">class</span> <span class="nc">LogManager</span><span class="p">:</span> |
3368 | + |
3369 | + <span class="sd">'''A class to handle the global log, and especially</span> |
3370 | +<span class="sd"> switching the log from commander to commander.'''</span> |
3371 | + |
3372 | + <span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3373 | + |
3374 | + <span class="n">trace</span> <span class="o">=</span> <span class="p">(</span><span class="bp">False</span> <span class="ow">or</span> <span class="n">g</span><span class="o">.</span><span class="n">trace_startup</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
3375 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="k">print</span><span class="p">(</span><span class="s">'LogManager.__init__'</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">callers</span><span class="p">())</span> |
3376 | + |
3377 | + <span class="bp">self</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="bp">None</span> <span class="c"># The LeoFrame containing the present log.</span> |
3378 | + <span class="bp">self</span><span class="o">.</span><span class="n">logInited</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># False: all log message go to logWaiting list.</span> |
3379 | + <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: no changes to log are allowed.</span> |
3380 | + <span class="bp">self</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># List of messages waiting to go to a log.</span> |
3381 | + <span class="bp">self</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> <span class="c"># Queue of messages to be sent to the printer.</span> |
3382 | + <span class="bp">self</span><span class="o">.</span><span class="n">signon_printed</span> <span class="o">=</span> <span class="bp">False</span> <span class="c"># True: the global signon has been printed.</span> |
3383 | + |
3384 | + <span class="c">#@+others</span> |
3385 | + <span class="c">#@+node:ekr.20120211121736.10834: *3* LogM.setLog, lockLog, unlocklog</span> |
3386 | +<div class="viewcode-block" id="LogManager.setLog"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LogManager.setLog">[docs]</a> <span class="k">def</span> <span class="nf">setLog</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">log</span><span class="p">):</span> |
3387 | + |
3388 | + <span class="sd">"""set the frame to which log messages will go"""</span> |
3389 | + |
3390 | + <span class="c"># print("app.setLog:",log,g.callers())</span> |
3391 | + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span><span class="p">:</span> |
3392 | + <span class="bp">self</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">log</span> |
3393 | +</div> |
3394 | +<div class="viewcode-block" id="LogManager.lockLog"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LogManager.lockLog">[docs]</a> <span class="k">def</span> <span class="nf">lockLog</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3395 | + <span class="sd">"""Disable changes to the log"""</span> |
3396 | + <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">True</span> |
3397 | +</div> |
3398 | +<div class="viewcode-block" id="LogManager.unlockLog"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LogManager.unlockLog">[docs]</a> <span class="k">def</span> <span class="nf">unlockLog</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3399 | + <span class="sd">"""Enable changes to the log"""</span> |
3400 | + <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">False</span> |
3401 | + <span class="c">#@+node:ekr.20120211121736.10836: *3* LogM.writeWaitingLog</span></div> |
3402 | +<div class="viewcode-block" id="LogManager.writeWaitingLog"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.LogManager.writeWaitingLog">[docs]</a> <span class="k">def</span> <span class="nf">writeWaitingLog</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">):</span> |
3403 | + |
3404 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> |
3405 | + <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> |
3406 | + |
3407 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> |
3408 | + <span class="c"># Do not call g.es, g.es_print, g.pr or g.trace here!</span> |
3409 | + <span class="k">print</span><span class="p">(</span><span class="s">'** writeWaitingLog'</span><span class="p">,</span><span class="s">'silent'</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span><span class="p">,</span><span class="n">c</span><span class="o">.</span><span class="n">shortFileName</span><span class="p">())</span> |
3410 | + <span class="c"># print('writeWaitingLog',g.callers())</span> |
3411 | + <span class="c"># import sys ; print('writeWaitingLog: argv',sys.argv)</span> |
3412 | + |
3413 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">c</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">c</span><span class="o">.</span><span class="n">exists</span><span class="p">:</span> |
3414 | + <span class="k">return</span> |
3415 | + |
3416 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
3417 | + <span class="n">lm</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> |
3418 | + <span class="n">lm</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> |
3419 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">setLog</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> <span class="c"># Prepare to requeue for other commanders.</span> |
3420 | + <span class="k">return</span> |
3421 | + |
3422 | + <span class="n">table</span> <span class="o">=</span> <span class="p">[</span> |
3423 | + <span class="p">(</span><span class="s">'Leo Log Window'</span><span class="p">,</span><span class="s">'red'</span><span class="p">),</span> |
3424 | + <span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">signon</span><span class="p">,</span><span class="s">'black'</span><span class="p">),</span> |
3425 | + <span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">signon2</span><span class="p">,</span><span class="s">'black'</span><span class="p">),</span> |
3426 | + <span class="p">]</span> |
3427 | + <span class="n">table</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> |
3428 | + |
3429 | + <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> <span class="c"># 2010/10/20</span> |
3430 | + <span class="n">lm</span><span class="o">.</span><span class="n">logInited</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># Prevent recursive call.</span> |
3431 | + |
3432 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">lm</span><span class="o">.</span><span class="n">signon_printed</span><span class="p">:</span> |
3433 | + <span class="n">lm</span><span class="o">.</span><span class="n">signon_printed</span> <span class="o">=</span> <span class="bp">True</span> |
3434 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span><span class="p">:</span> <span class="c"># 2011/11/02:</span> |
3435 | + <span class="k">print</span><span class="p">(</span><span class="s">''</span><span class="p">)</span> |
3436 | + <span class="k">print</span><span class="p">(</span><span class="s">'** isPython3: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">)</span> |
3437 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">enableDB</span><span class="p">:</span> |
3438 | + <span class="k">print</span><span class="p">(</span><span class="s">'** caching disabled'</span><span class="p">)</span> |
3439 | + <span class="k">print</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">signon</span><span class="p">)</span> |
3440 | + <span class="k">print</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">signon2</span><span class="p">)</span> |
3441 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span><span class="p">:</span> <span class="c"># 2011/11/02:</span> |
3442 | + <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">lm</span><span class="o">.</span><span class="n">printWaiting</span><span class="p">:</span> |
3443 | + <span class="k">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
3444 | + <span class="n">lm</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> |
3445 | + |
3446 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">silentMode</span><span class="p">:</span> <span class="c"># 2011/11/02:</span> |
3447 | + <span class="k">for</span> <span class="n">s</span><span class="p">,</span><span class="n">color</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> |
3448 | + <span class="n">lm</span><span class="o">.</span><span class="n">logWaiting</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,(</span><span class="n">s</span><span class="o">+</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">,</span><span class="n">color</span><span class="p">),)</span> |
3449 | + <span class="k">for</span> <span class="n">s</span><span class="p">,</span><span class="n">color</span> <span class="ow">in</span> <span class="n">lm</span><span class="o">.</span><span class="n">logWaiting</span><span class="p">:</span> |
3450 | + <span class="n">g</span><span class="o">.</span><span class="n">es</span><span class="p">(</span><span class="s">''</span><span class="p">,</span><span class="n">s</span><span class="p">,</span><span class="n">color</span><span class="o">=</span><span class="n">color</span><span class="p">,</span><span class="n">newline</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> |
3451 | + <span class="c"># The caller must write the newlines.</span> |
3452 | + <span class="n">lm</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> |
3453 | + |
3454 | + <span class="c"># Essential when opening multiple files...</span> |
3455 | + <span class="n">lm</span><span class="o">.</span><span class="n">setLog</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> |
3456 | + <span class="c">#@-others</span> |
3457 | +<span class="c">#@+node:ekr.20120223062418.10420: ** class PreviousSettings</span></div></div> |
3458 | +<div class="viewcode-block" id="PreviousSettings"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.PreviousSettings">[docs]</a><span class="k">class</span> <span class="nc">PreviousSettings</span><span class="p">:</span> |
3459 | + |
3460 | + <span class="sd">'''A class holding the settings and shortcuts dictionaries</span> |
3461 | +<span class="sd"> that are computed in the first pass when loading local</span> |
3462 | +<span class="sd"> files and passed to the second pass.'''</span> |
3463 | + |
3464 | + <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">settingsDict</span><span class="p">,</span><span class="n">shortcutsDict</span><span class="p">):</span> |
3465 | + |
3466 | + <span class="k">assert</span> <span class="n">g</span><span class="o">.</span><span class="n">isTypedDict</span><span class="p">(</span><span class="n">settingsDict</span><span class="p">)</span> |
3467 | + <span class="k">assert</span> <span class="n">g</span><span class="o">.</span><span class="n">isTypedDictOfLists</span><span class="p">(</span><span class="n">shortcutsDict</span><span class="p">)</span> |
3468 | + |
3469 | + <span class="bp">self</span><span class="o">.</span><span class="n">settingsDict</span> <span class="o">=</span> <span class="n">settingsDict</span> |
3470 | + <span class="bp">self</span><span class="o">.</span><span class="n">shortcutsDict</span> <span class="o">=</span> <span class="n">shortcutsDict</span> |
3471 | + |
3472 | + <span class="k">def</span> <span class="nf">__repr__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3473 | + |
3474 | + <span class="k">return</span> <span class="s">'<PreviousSettings</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="si">%s</span><span class="se">\n</span><span class="s">>'</span> <span class="o">%</span> <span class="p">(</span> |
3475 | + <span class="bp">self</span><span class="o">.</span><span class="n">settingsDict</span><span class="p">,</span><span class="bp">self</span><span class="o">.</span><span class="n">shortcutsDict</span><span class="p">)</span> |
3476 | + |
3477 | + <span class="n">__str__</span> <span class="o">=</span> <span class="n">__repr__</span> |
3478 | +<span class="c">#@+node:ekr.20120225072226.10283: ** class RecentFilesManager</span></div> |
3479 | +<div class="viewcode-block" id="RecentFilesManager"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager">[docs]</a><span class="k">class</span> <span class="nc">RecentFilesManager</span><span class="p">:</span> |
3480 | + |
3481 | + <span class="sd">'''A class to manipulate leoRecentFiles.txt.'''</span> |
3482 | + |
3483 | + <span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3484 | + |
3485 | + <span class="bp">self</span><span class="o">.</span><span class="n">groupedMenus</span> <span class="o">=</span> <span class="p">[]</span> |
3486 | + <span class="c"># Set in rf.createRecentFilesMenuItems.</span> |
3487 | + <span class="bp">self</span><span class="o">.</span><span class="n">recentFiles</span> <span class="o">=</span> <span class="p">[]</span> |
3488 | + <span class="c"># List of g.Bunches describing .leoRecentFiles.txt files.</span> |
3489 | + <span class="bp">self</span><span class="o">.</span><span class="n">recentFileMessageWritten</span> <span class="o">=</span> <span class="bp">False</span> |
3490 | + <span class="c"># To suppress all but the first message.</span> |
3491 | + <span class="bp">self</span><span class="o">.</span><span class="n">write_recent_files_as_needed</span> <span class="o">=</span> <span class="bp">False</span> |
3492 | + <span class="c"># Will be set later.</span> |
3493 | + |
3494 | + <span class="c">#@+others</span> |
3495 | + <span class="c">#@+node:ekr.20041201080436: *3* rf.appendToRecentFiles</span> |
3496 | +<div class="viewcode-block" id="RecentFilesManager.appendToRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.appendToRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">appendToRecentFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">files</span><span class="p">):</span> |
3497 | + |
3498 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3499 | + |
3500 | + <span class="n">files</span> <span class="o">=</span> <span class="p">[</span><span class="n">theFile</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">theFile</span> <span class="ow">in</span> <span class="n">files</span><span class="p">]</span> |
3501 | + |
3502 | + <span class="k">def</span> <span class="nf">munge</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> |
3503 | + <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_normpath</span><span class="p">(</span><span class="n">name</span> <span class="ow">or</span> <span class="s">''</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> |
3504 | + |
3505 | + <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">files</span><span class="p">:</span> |
3506 | + <span class="c"># Remove all variants of name.</span> |
3507 | + <span class="k">for</span> <span class="n">name2</span> <span class="ow">in</span> <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="p">[:]:</span> |
3508 | + <span class="k">if</span> <span class="n">munge</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="o">==</span> <span class="n">munge</span><span class="p">(</span><span class="n">name2</span><span class="p">):</span> |
3509 | + <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">name2</span><span class="p">)</span> |
3510 | + |
3511 | + <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> |
3512 | + <span class="c">#@+node:ekr.20120225072226.10289: *3* rf.cleanRecentFiles</span></div> |
3513 | +<div class="viewcode-block" id="RecentFilesManager.cleanRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.cleanRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">cleanRecentFiles</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">):</span> |
3514 | + |
3515 | + <span class="sd">'''Removed items from the recent files list that are no longer valid.'''</span> |
3516 | + |
3517 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3518 | + |
3519 | + <span class="n">dat</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getData</span><span class="p">(</span><span class="s">'path-demangle'</span><span class="p">)</span> |
3520 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">dat</span><span class="p">:</span> |
3521 | + <span class="n">g</span><span class="o">.</span><span class="n">es</span><span class="p">(</span><span class="s">'No @data path-demangle setting'</span><span class="p">)</span> |
3522 | + <span class="k">return</span> |
3523 | + |
3524 | + <span class="n">changes</span> <span class="o">=</span> <span class="p">[]</span> |
3525 | + <span class="n">replace</span> <span class="o">=</span> <span class="bp">None</span> |
3526 | + <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">dat</span><span class="p">:</span> |
3527 | + <span class="n">text</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> |
3528 | + <span class="k">if</span> <span class="n">text</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'REPLACE: '</span><span class="p">):</span> |
3529 | + <span class="n">replace</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> |
3530 | + <span class="k">if</span> <span class="n">text</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">'WITH:'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">replace</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span> |
3531 | + <span class="n">with_</span> <span class="o">=</span> <span class="n">text</span><span class="p">[</span><span class="mi">5</span><span class="p">:]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> |
3532 | + <span class="n">changes</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">replace</span><span class="p">,</span> <span class="n">with_</span><span class="p">))</span> |
3533 | + <span class="n">g</span><span class="o">.</span><span class="n">es</span><span class="p">(</span><span class="s">'</span><span class="si">%s</span><span class="s"> -> </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">changes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span> |
3534 | + |
3535 | + <span class="n">orig</span> <span class="o">=</span> <span class="p">[</span><span class="n">z</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span> <span class="k">if</span> <span class="n">z</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">"/"</span><span class="p">)]</span> |
3536 | + |
3537 | + <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span> <span class="o">=</span> <span class="p">[]</span> |
3538 | + |
3539 | + <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">orig</span><span class="p">:</span> |
3540 | + <span class="n">t</span> <span class="o">=</span> <span class="n">i</span> |
3541 | + <span class="k">for</span> <span class="n">change</span> <span class="ow">in</span> <span class="n">changes</span><span class="p">:</span> |
3542 | + <span class="n">t</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="o">*</span><span class="n">change</span><span class="p">)</span> |
3543 | + <span class="n">rf</span><span class="o">.</span><span class="n">updateRecentFiles</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> |
3544 | + |
3545 | + <span class="n">rf</span><span class="o">.</span><span class="n">writeRecentFilesFile</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">force</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
3546 | + <span class="c"># Force the write message.</span> |
3547 | + <span class="c">#@+node:ekr.20120225072226.10297: *3* rf.clearRecentFiles</span></div> |
3548 | +<div class="viewcode-block" id="RecentFilesManager.clearRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.clearRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">clearRecentFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">):</span> |
3549 | + |
3550 | + <span class="sd">"""Clear the recent files list, then add the present file."""</span> |
3551 | + |
3552 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> <span class="p">;</span> <span class="n">u</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">undoer</span> <span class="p">;</span> <span class="n">menu</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">menu</span> |
3553 | + |
3554 | + <span class="n">bunch</span> <span class="o">=</span> <span class="n">u</span><span class="o">.</span><span class="n">beforeClearRecentFiles</span><span class="p">()</span> |
3555 | + |
3556 | + <span class="n">recentFilesMenu</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">getMenu</span><span class="p">(</span><span class="s">"Recent Files..."</span><span class="p">)</span> |
3557 | + <span class="n">menu</span><span class="o">.</span><span class="n">deleteRecentFilesMenuItems</span><span class="p">(</span><span class="n">recentFilesMenu</span><span class="p">)</span> |
3558 | + |
3559 | + <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span> <span class="o">=</span> <span class="p">[</span><span class="n">c</span><span class="o">.</span><span class="n">fileName</span><span class="p">()]</span> |
3560 | + <span class="k">for</span> <span class="n">frame</span> <span class="ow">in</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
3561 | + <span class="n">rf</span><span class="o">.</span><span class="n">createRecentFilesMenuItems</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> |
3562 | + |
3563 | + <span class="n">u</span><span class="o">.</span><span class="n">afterClearRecentFiles</span><span class="p">(</span><span class="n">bunch</span><span class="p">)</span> |
3564 | + |
3565 | + <span class="c"># Write the file immediately.</span> |
3566 | + <span class="n">rf</span><span class="o">.</span><span class="n">writeRecentFilesFile</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">force</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
3567 | + <span class="c"># Force the write message.</span> |
3568 | + <span class="c">#@+node:ekr.20120225072226.10301: *3* rf.createRecentFilesMenuItems</span></div> |
3569 | +<div class="viewcode-block" id="RecentFilesManager.createRecentFilesMenuItems"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.createRecentFilesMenuItems">[docs]</a> <span class="k">def</span> <span class="nf">createRecentFilesMenuItems</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">):</span> |
3570 | + |
3571 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3572 | + <span class="n">menu</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span><span class="o">.</span><span class="n">menu</span> |
3573 | + |
3574 | + <span class="n">recentFilesMenu</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">getMenu</span><span class="p">(</span><span class="s">"Recent Files..."</span><span class="p">)</span> |
3575 | + |
3576 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">recentFilesMenu</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
3577 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'Recent Files Menu does not exist'</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">callers</span><span class="p">())</span> |
3578 | + <span class="k">return</span> |
3579 | + |
3580 | + <span class="c"># Delete all previous entries.</span> |
3581 | + <span class="n">menu</span><span class="o">.</span><span class="n">deleteRecentFilesMenuItems</span><span class="p">(</span><span class="n">recentFilesMenu</span><span class="p">)</span> |
3582 | + |
3583 | + <span class="c"># Create the permanent (static) menu entries.</span> |
3584 | + <span class="n">table</span> <span class="o">=</span> <span class="n">rf</span><span class="o">.</span><span class="n">getRecentFilesTable</span><span class="p">()</span> |
3585 | + <span class="n">menu</span><span class="o">.</span><span class="n">createMenuEntries</span><span class="p">(</span><span class="n">recentFilesMenu</span><span class="p">,</span><span class="n">table</span><span class="p">)</span> |
3586 | + |
3587 | + <span class="c"># Create all the other entries (a maximum of 36).</span> |
3588 | + <span class="n">accel_ch</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">digits</span> <span class="o">+</span> <span class="n">string</span><span class="o">.</span><span class="n">ascii_uppercase</span> <span class="c"># Not a unicode problem.</span> |
3589 | + <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> |
3590 | + <span class="n">n</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">accel_ch</span><span class="p">)</span> |
3591 | + |
3592 | + <span class="c"># see if we're grouping when files occur in more than one place</span> |
3593 | + <span class="n">rf_group</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getBool</span><span class="p">(</span><span class="s">"recent_files_group"</span><span class="p">)</span> |
3594 | + <span class="n">rf_always</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getBool</span><span class="p">(</span><span class="s">"recent_files_group_always"</span><span class="p">)</span> |
3595 | + <span class="n">groupedEntries</span> <span class="o">=</span> <span class="n">rf_group</span> <span class="ow">or</span> <span class="n">rf_always</span> |
3596 | + |
3597 | + <span class="k">if</span> <span class="n">groupedEntries</span><span class="p">:</span> <span class="c"># if so, make dict of groups</span> |
3598 | + <span class="n">dirCount</span> <span class="o">=</span> <span class="p">{}</span> |
3599 | + <span class="k">for</span> <span class="n">fileName</span> <span class="ow">in</span> <span class="n">rf</span><span class="o">.</span><span class="n">getRecentFiles</span><span class="p">()[:</span><span class="n">n</span><span class="p">]:</span> |
3600 | + <span class="n">dirName</span><span class="p">,</span> <span class="n">baseName</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_split</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
3601 | + <span class="k">if</span> <span class="n">baseName</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">dirCount</span><span class="p">:</span> |
3602 | + <span class="n">dirCount</span><span class="p">[</span><span class="n">baseName</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s">'dirs'</span><span class="p">:[],</span> <span class="s">'entry'</span><span class="p">:</span> <span class="bp">None</span><span class="p">}</span> |
3603 | + <span class="n">dirCount</span><span class="p">[</span><span class="n">baseName</span><span class="p">][</span><span class="s">'dirs'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dirName</span><span class="p">)</span> |
3604 | + |
3605 | + <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">rf</span><span class="o">.</span><span class="n">getRecentFiles</span><span class="p">()[:</span><span class="n">n</span><span class="p">]:</span> |
3606 | + <span class="k">if</span> <span class="n">name</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s">""</span><span class="p">:</span> |
3607 | + <span class="k">continue</span> <span class="c"># happens with empty list/new file</span> |
3608 | + |
3609 | + <span class="k">def</span> <span class="nf">recentFilesCallback</span> <span class="p">(</span><span class="n">event</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">c</span><span class="o">=</span><span class="n">c</span><span class="p">,</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">):</span> |
3610 | + <span class="n">c</span><span class="o">.</span><span class="n">openRecentFile</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> |
3611 | + |
3612 | + <span class="k">if</span> <span class="n">groupedEntries</span><span class="p">:</span> |
3613 | + <span class="n">dirName</span><span class="p">,</span> <span class="n">baseName</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_split</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> |
3614 | + |
3615 | + <span class="n">entry</span> <span class="o">=</span> <span class="n">dirCount</span><span class="p">[</span><span class="n">baseName</span><span class="p">]</span> |
3616 | + |
3617 | + <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">entry</span><span class="p">[</span><span class="s">'dirs'</span><span class="p">])</span> <span class="o">></span> <span class="mi">1</span> <span class="ow">or</span> <span class="n">rf_always</span><span class="p">:</span> <span class="c"># sub menus</span> |
3618 | + <span class="k">if</span> <span class="n">entry</span><span class="p">[</span><span class="s">'entry'</span><span class="p">]</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
3619 | + <span class="n">entry</span><span class="p">[</span><span class="s">'entry'</span><span class="p">]</span> <span class="o">=</span> <span class="n">menu</span><span class="o">.</span><span class="n">createNewMenu</span><span class="p">(</span><span class="n">baseName</span><span class="p">,</span> <span class="s">"Recent Files..."</span><span class="p">)</span> |
3620 | + <span class="c"># acts as a flag for the need to create the menu</span> |
3621 | + <span class="n">c</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">menu</span><span class="o">.</span><span class="n">getMenu</span><span class="p">(</span><span class="n">baseName</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="n">dirName</span><span class="p">,</span> |
3622 | + <span class="n">command</span><span class="o">=</span><span class="n">recentFilesCallback</span><span class="p">,</span> <span class="n">underline</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> |
3623 | + <span class="k">else</span><span class="p">:</span> <span class="c"># single occurence, no submenu</span> |
3624 | + <span class="n">c</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">recentFilesMenu</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="n">baseName</span><span class="p">,</span> |
3625 | + <span class="n">command</span><span class="o">=</span><span class="n">recentFilesCallback</span><span class="p">,</span><span class="n">underline</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> |
3626 | + |
3627 | + <span class="k">else</span><span class="p">:</span> <span class="c"># original behavior</span> |
3628 | + <span class="n">label</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">accel_ch</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="n">g</span><span class="o">.</span><span class="n">computeWindowTitle</span><span class="p">(</span><span class="n">name</span><span class="p">))</span> |
3629 | + <span class="n">c</span><span class="o">.</span><span class="n">add_command</span><span class="p">(</span><span class="n">recentFilesMenu</span><span class="p">,</span><span class="n">label</span><span class="o">=</span><span class="n">label</span><span class="p">,</span> |
3630 | + <span class="n">command</span><span class="o">=</span><span class="n">recentFilesCallback</span><span class="p">,</span><span class="n">underline</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span> |
3631 | + <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> |
3632 | + |
3633 | + <span class="k">if</span> <span class="n">groupedEntries</span><span class="p">:</span> <span class="c"># store so we can delete them later</span> |
3634 | + <span class="n">rf</span><span class="o">.</span><span class="n">groupedMenus</span> <span class="o">=</span> <span class="p">[</span><span class="n">z</span> <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">dirCount</span> |
3635 | + <span class="k">if</span> <span class="n">dirCount</span><span class="p">[</span><span class="n">z</span><span class="p">][</span><span class="s">'entry'</span><span class="p">]</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">]</span> |
3636 | + <span class="c">#@+node:ekr.20120225072226.10286: *3* rf.getRecentFiles</span></div> |
3637 | +<div class="viewcode-block" id="RecentFilesManager.getRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.getRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">getRecentFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3638 | + |
3639 | + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">recentFiles</span> |
3640 | + <span class="c">#@+node:ekr.20120225072226.10304: *3* rf.getRecentFilesTable</span></div> |
3641 | +<div class="viewcode-block" id="RecentFilesManager.getRecentFilesTable"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.getRecentFilesTable">[docs]</a> <span class="k">def</span> <span class="nf">getRecentFilesTable</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3642 | + |
3643 | + <span class="k">return</span> <span class="p">(</span> |
3644 | + <span class="s">"*clear-recent-files"</span><span class="p">,</span> |
3645 | + <span class="s">"*clean-recent-files"</span><span class="p">,</span> |
3646 | + <span class="s">"*sort-recent-files"</span><span class="p">,</span> |
3647 | + <span class="c"># ("-",None,None),</span> |
3648 | + <span class="p">)</span> |
3649 | + <span class="c">#@+node:ekr.20070224115832: *3* rf.readRecentFiles & helpers</span></div> |
3650 | +<div class="viewcode-block" id="RecentFilesManager.readRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.readRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">readRecentFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">localConfigFile</span><span class="p">):</span> |
3651 | + |
3652 | + <span class="sd">'''Read all .leoRecentFiles.txt files.'''</span> |
3653 | + |
3654 | + <span class="c"># The order of files in this list affects the order of the recent files list.</span> |
3655 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3656 | + <span class="n">seen</span> <span class="o">=</span> <span class="p">[]</span> |
3657 | + <span class="n">localConfigPath</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_dirname</span><span class="p">(</span><span class="n">localConfigFile</span><span class="p">)</span> |
3658 | + |
3659 | + <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="p">(</span> |
3660 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span><span class="p">,</span> |
3661 | + <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">globalConfigDir</span><span class="p">,</span> |
3662 | + <span class="n">localConfigPath</span><span class="p">,</span> |
3663 | + <span class="p">):</span> |
3664 | + <span class="k">if</span> <span class="n">path</span><span class="p">:</span> |
3665 | + <span class="n">path</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_realpath</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">path</span><span class="p">))</span> |
3666 | + <span class="k">if</span> <span class="n">path</span> <span class="ow">and</span> <span class="n">path</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">seen</span><span class="p">:</span> |
3667 | + <span class="n">ok</span> <span class="o">=</span> <span class="n">rf</span><span class="o">.</span><span class="n">readRecentFilesFile</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> |
3668 | + <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> <span class="n">seen</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> |
3669 | + |
3670 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">seen</span> <span class="ow">and</span> <span class="n">rf</span><span class="o">.</span><span class="n">write_recent_files_as_needed</span><span class="p">:</span> |
3671 | + <span class="n">rf</span><span class="o">.</span><span class="n">createRecentFiles</span><span class="p">()</span> |
3672 | + <span class="c">#@+node:ekr.20061010121944: *4* rf.createRecentFiles</span></div> |
3673 | +<div class="viewcode-block" id="RecentFilesManager.createRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.createRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">createRecentFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
3674 | + |
3675 | + <span class="sd">'''Trye to reate .leoRecentFiles.txt in</span> |
3676 | +<span class="sd"> - the users home directory first,</span> |
3677 | +<span class="sd"> - Leo's config directory second.'''</span> |
3678 | + |
3679 | + <span class="k">for</span> <span class="n">theDir</span> <span class="ow">in</span> <span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">globalConfigDir</span><span class="p">):</span> |
3680 | + <span class="k">if</span> <span class="n">theDir</span><span class="p">:</span> |
3681 | + <span class="k">try</span><span class="p">:</span> |
3682 | + <span class="n">fn</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_join</span><span class="p">(</span><span class="n">theDir</span><span class="p">,</span><span class="s">'.leoRecentFiles.txt'</span><span class="p">)</span> |
3683 | + <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fn</span><span class="p">,</span><span class="s">'w'</span><span class="p">)</span> |
3684 | + <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> |
3685 | + <span class="n">g</span><span class="o">.</span><span class="n">red</span><span class="p">(</span><span class="s">'created'</span><span class="p">,</span><span class="n">fn</span><span class="p">)</span> |
3686 | + <span class="k">return</span> |
3687 | + <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> |
3688 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'can not create'</span><span class="p">,</span><span class="n">fn</span><span class="p">)</span> |
3689 | + <span class="n">g</span><span class="o">.</span><span class="n">es_exception</span><span class="p">()</span> |
3690 | + <span class="c">#@+node:ekr.20050424115658: *4* rf.readRecentFilesFile</span></div> |
3691 | +<div class="viewcode-block" id="RecentFilesManager.readRecentFilesFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.readRecentFilesFile">[docs]</a> <span class="k">def</span> <span class="nf">readRecentFilesFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">path</span><span class="p">):</span> |
3692 | + |
3693 | + <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span> |
3694 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3695 | + <span class="n">fileName</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="s">'.leoRecentFiles.txt'</span><span class="p">)</span> |
3696 | + <span class="n">ok</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
3697 | + <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> |
3698 | + <span class="k">try</span><span class="p">:</span> |
3699 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> |
3700 | + <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fileName</span><span class="p">,</span><span class="n">encoding</span><span class="o">=</span><span class="s">'utf-8'</span><span class="p">,</span><span class="n">mode</span><span class="o">=</span><span class="s">'r'</span><span class="p">)</span> |
3701 | + <span class="k">else</span><span class="p">:</span> |
3702 | + <span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fileName</span><span class="p">,</span><span class="s">'r'</span><span class="p">)</span> |
3703 | + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> |
3704 | + <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="s">'can not open'</span><span class="p">,</span><span class="n">fileName</span><span class="p">)</span> |
3705 | + <span class="k">return</span> <span class="bp">False</span> |
3706 | + |
3707 | + <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">trace</span><span class="p">((</span><span class="s">'reading </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">fileName</span><span class="p">))</span> |
3708 | + <span class="n">lines</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span> |
3709 | + <span class="k">if</span> <span class="n">lines</span> <span class="ow">and</span> <span class="n">rf</span><span class="o">.</span><span class="n">sanitize</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">==</span><span class="s">'readonly'</span><span class="p">:</span> |
3710 | + <span class="n">lines</span> <span class="o">=</span> <span class="n">lines</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span> |
3711 | + <span class="k">if</span> <span class="n">lines</span><span class="p">:</span> |
3712 | + <span class="n">lines</span> <span class="o">=</span> <span class="p">[</span><span class="n">g</span><span class="o">.</span><span class="n">toUnicode</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">os_path_normpath</span><span class="p">(</span><span class="n">line</span><span class="p">))</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">]</span> |
3713 | + <span class="n">rf</span><span class="o">.</span><span class="n">appendToRecentFiles</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> |
3714 | + |
3715 | + <span class="k">return</span> <span class="n">ok</span> |
3716 | + <span class="c">#@+node:ekr.20120225072226.10285: *3* rf.sanitize</span></div> |
3717 | +<div class="viewcode-block" id="RecentFilesManager.sanitize"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.sanitize">[docs]</a> <span class="k">def</span> <span class="nf">sanitize</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">name</span><span class="p">):</span> |
3718 | + |
3719 | + <span class="sd">'''Return a sanitized file name.'''</span> |
3720 | + |
3721 | + <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> |
3722 | + <span class="k">return</span> <span class="bp">None</span> |
3723 | + |
3724 | + <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> |
3725 | + <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="p">(</span><span class="s">'-'</span><span class="p">,</span><span class="s">'_'</span><span class="p">,</span><span class="s">' '</span><span class="p">,</span><span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="p">):</span> |
3726 | + <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">ch</span><span class="p">,</span><span class="s">''</span><span class="p">)</span> |
3727 | + |
3728 | + <span class="k">return</span> <span class="n">name</span> <span class="ow">or</span> <span class="bp">None</span> |
3729 | + <span class="c">#@+node:ekr.20120215072959.12478: *3* rf.setRecentFiles</span></div> |
3730 | +<div class="viewcode-block" id="RecentFilesManager.setRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.setRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">setRecentFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">files</span><span class="p">):</span> |
3731 | + |
3732 | + <span class="sd">'''Update the recent files list.'''</span> |
3733 | + |
3734 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3735 | + <span class="n">rf</span><span class="o">.</span><span class="n">appendToRecentFiles</span><span class="p">(</span><span class="n">files</span><span class="p">)</span> |
3736 | + <span class="c">#@+node:ekr.20120225072226.10293: *3* rf.sortRecentFiles</span></div> |
3737 | +<div class="viewcode-block" id="RecentFilesManager.sortRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.sortRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">sortRecentFiles</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">):</span> |
3738 | + |
3739 | + <span class="sd">'''Sort the recent files list.'''</span> |
3740 | + |
3741 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3742 | + |
3743 | + <span class="n">aList</span> <span class="o">=</span> <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span> |
3744 | + <span class="n">aList</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">s</span><span class="p">:</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_basename</span><span class="p">(</span><span class="n">s</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span> |
3745 | + <span class="n">aList</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> |
3746 | + |
3747 | + <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span> <span class="o">=</span> <span class="p">[]</span> |
3748 | + <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="n">aList</span><span class="p">:</span> |
3749 | + <span class="n">rf</span><span class="o">.</span><span class="n">updateRecentFiles</span><span class="p">(</span><span class="n">z</span><span class="p">)</span> |
3750 | + |
3751 | + <span class="n">rf</span><span class="o">.</span><span class="n">writeRecentFilesFile</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="n">force</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
3752 | + <span class="c"># Force the write message.</span> |
3753 | + <span class="c">#@+node:ekr.20031218072017.2083: *3* rf.updateRecentFiles</span></div> |
3754 | +<div class="viewcode-block" id="RecentFilesManager.updateRecentFiles"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.updateRecentFiles">[docs]</a> <span class="k">def</span> <span class="nf">updateRecentFiles</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="p">):</span> |
3755 | + |
3756 | + <span class="sd">"""Create the RecentFiles menu. May be called with Null fileName."""</span> |
3757 | + |
3758 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3759 | + |
3760 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> <span class="k">return</span> |
3761 | + |
3762 | + <span class="k">def</span> <span class="nf">munge</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> |
3763 | + <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize</span><span class="p">(</span><span class="n">name</span> <span class="ow">or</span> <span class="s">''</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> |
3764 | + <span class="k">def</span> <span class="nf">munge2</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> |
3765 | + <span class="k">return</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize_join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loadDir</span><span class="p">,</span><span class="n">name</span> <span class="ow">or</span> <span class="s">''</span><span class="p">)</span> |
3766 | + |
3767 | + <span class="c"># Update the recent files list in all windows.</span> |
3768 | + <span class="k">if</span> <span class="n">fileName</span><span class="p">:</span> |
3769 | + <span class="k">for</span> <span class="n">frame</span> <span class="ow">in</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
3770 | + <span class="c"># Remove all versions of the file name.</span> |
3771 | + <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="p">:</span> |
3772 | + <span class="k">if</span> <span class="p">(</span><span class="n">munge</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> <span class="o">==</span> <span class="n">munge</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="ow">or</span> |
3773 | + <span class="n">munge2</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> <span class="o">==</span> <span class="n">munge2</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> |
3774 | + <span class="p">):</span> |
3775 | + <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> |
3776 | + <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">fileName</span><span class="p">)</span> |
3777 | + <span class="c"># Recreate the Recent Files menu.</span> |
3778 | + <span class="n">rf</span><span class="o">.</span><span class="n">createRecentFilesMenuItems</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> |
3779 | + <span class="k">else</span><span class="p">:</span> |
3780 | + <span class="k">for</span> <span class="n">frame</span> <span class="ow">in</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">windowList</span><span class="p">:</span> |
3781 | + <span class="n">rf</span><span class="o">.</span><span class="n">createRecentFilesMenuItems</span><span class="p">(</span><span class="n">frame</span><span class="o">.</span><span class="n">c</span><span class="p">)</span> |
3782 | + <span class="c">#@+node:ekr.20050424114937.2: *3* rf.writeRecentFilesFile & helper</span></div> |
3783 | +<div class="viewcode-block" id="RecentFilesManager.writeRecentFilesFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.writeRecentFilesFile">[docs]</a> <span class="k">def</span> <span class="nf">writeRecentFilesFile</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">c</span><span class="p">,</span><span class="n">force</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span> |
3784 | + |
3785 | + <span class="sd">'''Write the appropriate .leoRecentFiles.txt file.</span> |
3786 | + |
3787 | +<span class="sd"> Write a message if force is True, or if it hasn't been written yet.'''</span> |
3788 | + |
3789 | + <span class="n">tag</span> <span class="o">=</span> <span class="s">'.leoRecentFiles.txt'</span> |
3790 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3791 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> |
3792 | + <span class="k">return</span> |
3793 | + |
3794 | + <span class="n">localFileName</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">fileName</span><span class="p">()</span> |
3795 | + <span class="k">if</span> <span class="n">localFileName</span><span class="p">:</span> |
3796 | + <span class="n">localPath</span><span class="p">,</span><span class="n">junk</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_split</span><span class="p">(</span><span class="n">localFileName</span><span class="p">)</span> |
3797 | + <span class="k">else</span><span class="p">:</span> |
3798 | + <span class="n">localPath</span> <span class="o">=</span> <span class="bp">None</span> |
3799 | + |
3800 | + <span class="n">written</span> <span class="o">=</span> <span class="bp">False</span> |
3801 | + <span class="n">seen</span> <span class="o">=</span> <span class="p">[]</span> |
3802 | + <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="p">(</span><span class="n">localPath</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">globalConfigDir</span><span class="p">,</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span><span class="p">):</span> |
3803 | + <span class="k">if</span> <span class="n">path</span><span class="p">:</span> |
3804 | + <span class="n">fileName</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span><span class="n">tag</span><span class="p">)</span> |
3805 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">fileName</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">seen</span><span class="p">:</span> |
3806 | + <span class="n">seen</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">fileName</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span> |
3807 | + <span class="n">ok</span> <span class="o">=</span> <span class="n">rf</span><span class="o">.</span><span class="n">writeRecentFilesFileHelper</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
3808 | + <span class="k">if</span> <span class="n">force</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">rf</span><span class="o">.</span><span class="n">recentFileMessageWritten</span><span class="p">:</span> |
3809 | + <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> |
3810 | + <span class="n">g</span><span class="o">.</span><span class="n">pr</span><span class="p">(</span><span class="s">'wrote recent file: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="n">fileName</span><span class="p">)</span> |
3811 | + <span class="n">written</span> <span class="o">=</span> <span class="bp">True</span> |
3812 | + <span class="k">else</span><span class="p">:</span> |
3813 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'failed to write recent file: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fileName</span><span class="p">))</span> |
3814 | + <span class="c"># Bug fix: Leo 4.4.6: write *all* recent files.</span> |
3815 | + |
3816 | + <span class="k">if</span> <span class="n">written</span><span class="p">:</span> |
3817 | + <span class="n">rf</span><span class="o">.</span><span class="n">recentFileMessageWritten</span> <span class="o">=</span> <span class="bp">True</span> |
3818 | + <span class="k">else</span><span class="p">:</span> |
3819 | + <span class="c"># Attempt to create .leoRecentFiles.txt in the user's home directory.</span> |
3820 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span><span class="p">:</span> |
3821 | + <span class="n">fileName</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_finalize_join</span><span class="p">(</span><span class="n">g</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">homeLeoDir</span><span class="p">,</span><span class="n">tag</span><span class="p">)</span> |
3822 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">os_path_exists</span><span class="p">(</span><span class="n">fileName</span><span class="p">):</span> |
3823 | + <span class="n">g</span><span class="o">.</span><span class="n">red</span><span class="p">(</span><span class="s">'creating: </span><span class="si">%s</span><span class="s">'</span> <span class="o">%</span> <span class="p">(</span><span class="n">fileName</span><span class="p">))</span> |
3824 | + <span class="n">rf</span><span class="o">.</span><span class="n">writeRecentFilesFileHelper</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
3825 | + |
3826 | + |
3827 | + <span class="c">#@+node:ekr.20050424131051: *4* rf.writeRecentFilesFileHelper</span></div> |
3828 | +<div class="viewcode-block" id="RecentFilesManager.writeRecentFilesFileHelper"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoApp.RecentFilesManager.writeRecentFilesFileHelper">[docs]</a> <span class="k">def</span> <span class="nf">writeRecentFilesFileHelper</span> <span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">fileName</span><span class="p">):</span> |
3829 | + |
3830 | + <span class="c"># g.trace(g.toUnicode(fileName))</span> |
3831 | + |
3832 | + <span class="c"># Don't update the file if it begins with read-only.</span> |
3833 | + <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> |
3834 | + <span class="n">theFile</span> <span class="o">=</span> <span class="bp">None</span> |
3835 | + <span class="k">try</span><span class="p">:</span> |
3836 | + <span class="n">theFile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fileName</span><span class="p">)</span> |
3837 | + <span class="n">lines</span> <span class="o">=</span> <span class="n">theFile</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span> |
3838 | + <span class="k">if</span> <span class="n">lines</span> <span class="ow">and</span> <span class="n">rf</span><span class="o">.</span><span class="n">sanitize</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span><span class="o">==</span><span class="s">'readonly'</span><span class="p">:</span> |
3839 | + <span class="c"># g.trace('read-only: %s' %fileName)</span> |
3840 | + <span class="k">return</span> <span class="bp">False</span> |
3841 | + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> |
3842 | + <span class="c"># The user may have erased a file. Not an error.</span> |
3843 | + <span class="k">if</span> <span class="n">theFile</span><span class="p">:</span> <span class="n">theFile</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> |
3844 | + |
3845 | + <span class="n">theFile</span> <span class="o">=</span> <span class="bp">None</span> |
3846 | + <span class="k">try</span><span class="p">:</span> |
3847 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> |
3848 | + <span class="n">theFile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fileName</span><span class="p">,</span><span class="n">encoding</span><span class="o">=</span><span class="s">'utf-8'</span><span class="p">,</span><span class="n">mode</span><span class="o">=</span><span class="s">'w'</span><span class="p">)</span> |
3849 | + <span class="k">else</span><span class="p">:</span> |
3850 | + <span class="n">theFile</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">fileName</span><span class="p">,</span><span class="n">mode</span><span class="o">=</span><span class="s">'w'</span><span class="p">)</span> |
3851 | + <span class="k">if</span> <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="p">:</span> |
3852 | + <span class="n">s</span> <span class="o">=</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="p">)</span> |
3853 | + <span class="k">else</span><span class="p">:</span> |
3854 | + <span class="n">s</span> <span class="o">=</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span> |
3855 | + <span class="k">if</span> <span class="ow">not</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> |
3856 | + <span class="n">s</span> <span class="o">=</span> <span class="n">g</span><span class="o">.</span><span class="n">toEncodedString</span><span class="p">(</span><span class="n">s</span><span class="p">,</span><span class="n">reportErrors</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
3857 | + <span class="n">theFile</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> |
3858 | + |
3859 | + <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> |
3860 | + <span class="k">if</span> <span class="mi">1</span><span class="p">:</span> <span class="c"># The user may have erased a file. Not an error.</span> |
3861 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'error writing'</span><span class="p">,</span><span class="n">fileName</span><span class="p">)</span> |
3862 | + <span class="n">g</span><span class="o">.</span><span class="n">es_exception</span><span class="p">()</span> |
3863 | + <span class="k">return</span> <span class="bp">False</span> |
3864 | + |
3865 | + <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> |
3866 | + <span class="n">g</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'unexpected exception writing'</span><span class="p">,</span><span class="n">fileName</span><span class="p">)</span> |
3867 | + <span class="n">g</span><span class="o">.</span><span class="n">es_exception</span><span class="p">()</span> |
3868 | + <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> <span class="k">raise</span> |
3869 | + <span class="k">return</span> <span class="bp">False</span> |
3870 | + |
3871 | + <span class="k">if</span> <span class="n">theFile</span><span class="p">:</span> |
3872 | + <span class="n">theFile</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> |
3873 | + <span class="k">return</span> <span class="bp">True</span> |
3874 | + <span class="k">else</span><span class="p">:</span> |
3875 | + <span class="k">return</span> <span class="bp">False</span> |
3876 | + <span class="c">#@-others</span> |
3877 | +<span class="c">#@-others</span> |
3878 | +<span class="c">#@-leo</span></div></div> |
3879 | +</pre></div> |
3880 | + |
3881 | + </div> |
3882 | + </div> |
3883 | + </div> |
3884 | + <div class="sphinxsidebar"> |
3885 | + <div class="sphinxsidebarwrapper"> |
3886 | +<div id="searchbox" style="display: none"> |
3887 | + <h3>Quick search</h3> |
3888 | + <form class="search" action="../../../search.html" method="get"> |
3889 | + <input type="text" name="q" /> |
3890 | + <input type="submit" value="Go" /> |
3891 | + <input type="hidden" name="check_keywords" value="yes" /> |
3892 | + <input type="hidden" name="area" value="default" /> |
3893 | + </form> |
3894 | + <p class="searchtip" style="font-size: 90%"> |
3895 | + Enter search terms or a module, class or function name. |
3896 | + </p> |
3897 | +</div> |
3898 | +<script type="text/javascript">$('#searchbox').show(0);</script> |
3899 | + </div> |
3900 | + </div> |
3901 | + <div class="clearer"></div> |
3902 | + </div> |
3903 | + <div class="related"> |
3904 | + <h3>Navigation</h3> |
3905 | + <ul> |
3906 | + <li class="right" style="margin-right: 10px"> |
3907 | + <a href="../../../genindex.html" title="General Index" |
3908 | + >index</a></li> |
3909 | + <li class="right" > |
3910 | + <a href="../../../py-modindex.html" title="Python Module Index" |
3911 | + >modules</a> |</li> |
3912 | + <li><a href="../../../index.html">Leo API 4.11dev documentation</a> »</li> |
3913 | + <li><a href="../../index.html" >Module code</a> »</li> |
3914 | + </ul> |
3915 | + </div> |
3916 | + <div class="footer"> |
3917 | + © Copyright 2013, Ed K. Ream. |
3918 | + Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. |
3919 | + </div> |
3920 | + </body> |
3921 | +</html> |
3922 | \ No newline at end of file |
3923 | |
3924 | === added file 'sphinx-docs/_build/html/_modules/leo/core/leoAtFile.html' |
3925 | --- sphinx-docs/_build/html/_modules/leo/core/leoAtFile.html 1970-01-01 00:00:00 +0000 |
3926 | +++ sphinx-docs/_build/html/_modules/leo/core/leoAtFile.html 2013-05-03 14:47:26 +0000 |
3927 | @@ -0,0 +1,5787 @@ |
3928 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
3929 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
3930 | + |
3931 | + |
3932 | +<html xmlns="http://www.w3.org/1999/xhtml"> |
3933 | + <head> |
3934 | + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
3935 | + |
3936 | + <title>leo.core.leoAtFile — Leo API 4.11dev documentation</title> |
3937 | + |
3938 | + <link rel="stylesheet" href="../../../_static/default.css" type="text/css" /> |
3939 | + <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> |
3940 | + |
3941 | + <script type="text/javascript"> |
3942 | + var DOCUMENTATION_OPTIONS = { |
3943 | + URL_ROOT: '../../../', |
3944 | + VERSION: '4.11dev', |
3945 | + COLLAPSE_INDEX: false, |
3946 | + FILE_SUFFIX: '.html', |
3947 | + HAS_SOURCE: true |
3948 | + }; |
3949 | + </script> |
3950 | + <script type="text/javascript" src="../../../_static/jquery.js"></script> |
3951 | + <script type="text/javascript" src="../../../_static/underscore.js"></script> |
3952 | + <script type="text/javascript" src="../../../_static/doctools.js"></script> |
3953 | + <link rel="top" title="Leo API 4.11dev documentation" href="../../../index.html" /> |
3954 | + <link rel="up" title="Module code" href="../../index.html" /> |
3955 | + </head> |
3956 | + <body> |
3957 | + <div class="related"> |
3958 | + <h3>Navigation</h3> |
3959 | + <ul> |
3960 | + <li class="right" style="margin-right: 10px"> |
3961 | + <a href="../../../genindex.html" title="General Index" |
3962 | + accesskey="I">index</a></li> |
3963 | + <li class="right" > |
3964 | + <a href="../../../py-modindex.html" title="Python Module Index" |
3965 | + >modules</a> |</li> |
3966 | + <li><a href="../../../index.html">Leo API 4.11dev documentation</a> »</li> |
3967 | + <li><a href="../../index.html" accesskey="U">Module code</a> »</li> |
3968 | + </ul> |
3969 | + </div> |
3970 | + |
3971 | + <div class="document"> |
3972 | + <div class="documentwrapper"> |
3973 | + <div class="bodywrapper"> |
3974 | + <div class="body"> |
3975 | + |
3976 | + <h1>Source code for leo.core.leoAtFile</h1><div class="highlight"><pre> |
3977 | +<span class="c">#@+leo-ver=5-thin</span> |
3978 | +<span class="c">#@+node:ekr.20041005105605.1: * @file leoAtFile.py</span> |
3979 | +<span class="c">#@@first</span> |
3980 | + <span class="c"># Needed because of unicode characters in tests.</span> |
3981 | + |
3982 | +<span class="sd">"""Classes to read and write @file nodes."""</span> |
3983 | + |
3984 | +<span class="c">#@@language python</span> |
3985 | +<span class="c">#@@tabwidth -4</span> |
3986 | +<span class="c">#@@pagewidth 60</span> |
3987 | + |
3988 | +<span class="c">#@+<< imports >></span> |
3989 | +<span class="c">#@+node:ekr.20041005105605.2: ** << imports >> (leoAtFile)</span> |
3990 | +<span class="kn">import</span> <span class="nn">leo.core.leoGlobals</span> <span class="kn">as</span> <span class="nn">g</span> |
3991 | + |
3992 | +<span class="c"># if g.app and g.app.use_psyco:</span> |
3993 | + <span class="c"># # print("enabled psyco classes",__file__)</span> |
3994 | + <span class="c"># try: from psyco.classes import *</span> |
3995 | + <span class="c"># except ImportError: pass</span> |
3996 | + |
3997 | +<span class="kn">import</span> <span class="nn">leo.core.leoNodes</span> <span class="kn">as</span> <span class="nn">leoNodes</span> |
3998 | + |
3999 | +<span class="kn">import</span> <span class="nn">os</span> |
4000 | +<span class="kn">import</span> <span class="nn">sys</span> |
4001 | +<span class="kn">import</span> <span class="nn">time</span> |
4002 | + |
4003 | +<span class="c">#@-<< imports >></span> |
4004 | + |
4005 | +<span class="n">allow_cloned_sibs</span> <span class="o">=</span> <span class="bp">True</span> <span class="c"># True: allow cloned siblings in @file nodes.</span> |
4006 | + |
4007 | +<span class="c"># if allow_cloned_sibs:</span> |
4008 | + <span class="c"># print('** allow_cloned_sibs: True')</span> |
4009 | + |
4010 | +<span class="k">class</span> <span class="nc">atFile</span><span class="p">:</span> |
4011 | +<div class="viewcode-block" id="atFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoAtFile.atFile">[docs]</a> |
4012 | + <span class="sd">"""The class implementing the atFile subcommander."""</span> |
4013 | + |
4014 | + <span class="c">#@+<< define class constants >></span> |
4015 | + <span class="c">#@+node:ekr.20041005105605.5: ** << define class constants >></span> |
4016 | + <span class="c"># These constants must be global to this module</span> |
4017 | + <span class="c"># because they are shared by several classes.</span> |
4018 | + |
4019 | + <span class="c"># The kind of at_directives.</span> |
4020 | + <span class="n">noDirective</span> <span class="o">=</span> <span class="mi">1</span> <span class="c"># not an at-directive.</span> |
4021 | + <span class="n">allDirective</span> <span class="o">=</span> <span class="mi">2</span> <span class="c"># at-all (4.2)</span> |
4022 | + <span class="n">docDirective</span> <span class="o">=</span> <span class="mi">3</span> <span class="c"># @doc.</span> |
4023 | + <span class="n">atDirective</span> <span class="o">=</span> <span class="mi">4</span> <span class="c"># @<space> or @<newline></span> |
4024 | + <span class="n">codeDirective</span> <span class="o">=</span> <span class="mi">5</span> <span class="c"># @code</span> |
4025 | + <span class="n">cDirective</span> <span class="o">=</span> <span class="mi">6</span> <span class="c"># @c<space> or @c<newline></span> |
4026 | + <span class="n">othersDirective</span> <span class="o">=</span> <span class="mi">7</span> <span class="c"># at-others</span> |
4027 | + <span class="n">miscDirective</span> <span class="o">=</span> <span class="mi">8</span> <span class="c"># All other directives</span> |
4028 | + <span class="n">rawDirective</span> <span class="o">=</span> <span class="mi">9</span> <span class="c"># @raw</span> |
4029 | + <span class="n">endRawDirective</span> <span class="o">=</span> <span class="mi">10</span> <span class="c"># @end_raw</span> |
4030 | + |
4031 | + <span class="c"># The kind of sentinel line.</span> |
4032 | + <span class="n">noSentinel</span> <span class="o">=</span> <span class="mi">20</span> <span class="c"># Not a sentinel</span> |
4033 | + <span class="n">endAt</span> <span class="o">=</span> <span class="mi">21</span> <span class="c"># @-at</span> |
4034 | + <span class="n">endBody</span> <span class="o">=</span> <span class="mi">22</span> <span class="c"># @-body</span> |
4035 | + <span class="c"># not used = 23</span> |
4036 | + <span class="n">endDoc</span> <span class="o">=</span> <span class="mi">24</span> <span class="c"># @-doc</span> |
4037 | + <span class="n">endLeo</span> <span class="o">=</span> <span class="mi">25</span> <span class="c"># @-leo</span> |
4038 | + <span class="n">endNode</span> <span class="o">=</span> <span class="mi">26</span> <span class="c"># @-node</span> |
4039 | + <span class="n">endOthers</span> <span class="o">=</span> <span class="mi">27</span> <span class="c"># @-others</span> |
4040 | + |
4041 | + <span class="c"># not used = 40</span> |
4042 | + <span class="n">startAt</span> <span class="o">=</span> <span class="mi">41</span> <span class="c"># @+at</span> |
4043 | + <span class="n">startBody</span> <span class="o">=</span> <span class="mi">42</span> <span class="c"># @+body</span> |
4044 | + <span class="n">startDoc</span> <span class="o">=</span> <span class="mi">43</span> <span class="c"># @+doc</span> |
4045 | + <span class="n">startLeo</span> <span class="o">=</span> <span class="mi">44</span> <span class="c"># @+leo</span> |
4046 | + <span class="n">startNode</span> <span class="o">=</span> <span class="mi">45</span> <span class="c"># @+node</span> |
4047 | + <span class="n">startOthers</span> <span class="o">=</span> <span class="mi">46</span> <span class="c"># @+others</span> |
4048 | + |
4049 | + <span class="n">startComment</span> <span class="o">=</span> <span class="mi">60</span> <span class="c"># @comment</span> |
4050 | + <span class="n">startDelims</span> <span class="o">=</span> <span class="mi">61</span> <span class="c"># @delims</span> |
4051 | + <span class="n">startDirective</span> <span class="o">=</span> <span class="mi">62</span> <span class="c"># @@</span> |
4052 | + <span class="n">startRef</span> <span class="o">=</span> <span class="mi">63</span> <span class="c"># @< < ... > ></span> |
4053 | + <span class="n">startVerbatim</span> <span class="o">=</span> <span class="mi">64</span> <span class="c"># @verbatim</span> |
4054 | + <span class="n">startVerbatimAfterRef</span> <span class="o">=</span> <span class="mi">65</span> <span class="c"># @verbatimAfterRef (3.0 only)</span> |
4055 | + |
4056 | + <span class="c"># New in 4.x. Paired</span> |
4057 | + <span class="n">endAll</span> <span class="o">=</span> <span class="mi">70</span> <span class="c"># at-all (4.2)</span> |
4058 | + <span class="n">endMiddle</span> <span class="o">=</span> <span class="mi">71</span> <span class="c"># at-middle (4.2)</span> |
4059 | + <span class="n">startAll</span> <span class="o">=</span> <span class="mi">72</span> <span class="c"># at+all (4.2)</span> |
4060 | + <span class="n">startMiddle</span> <span class="o">=</span> <span class="mi">73</span> <span class="c"># at+middle (4.2)</span> |
4061 | + |
4062 | + <span class="c"># New in 4.x. Unpaired.</span> |
4063 | + <span class="n">startAfterRef</span> <span class="o">=</span> <span class="mi">80</span> <span class="c"># @afterref (4.0)</span> |
4064 | + <span class="n">startClone</span> <span class="o">=</span> <span class="mi">81</span> <span class="c"># @clone (4.2)</span> |
4065 | + <span class="n">startNl</span> <span class="o">=</span> <span class="mi">82</span> <span class="c"># @nl (4.0)</span> |
4066 | + <span class="n">startNonl</span> <span class="o">=</span> <span class="mi">83</span> <span class="c"># @nonl (4.0)</span> |
4067 | + |
4068 | + <span class="c"># New in 4.8.</span> |
4069 | + <span class="n">endRef</span> <span class="o">=</span> <span class="mi">84</span> <span class="c"># @-<<</span> |
4070 | + <span class="c">#@-<< define class constants >></span> |
4071 | + <span class="c">#@+<< define sentinelDict >></span> |
4072 | + <span class="c">#@+node:ekr.20041005105605.6: ** << define sentinelDict >></span> |
4073 | + <span class="n">sentinelDict</span> <span class="o">=</span> <span class="p">{</span> |
4074 | + |
4075 | + <span class="c"># Unpaired sentinels: 3.x and 4.x.</span> |
4076 | + <span class="s">"@comment"</span> <span class="p">:</span> <span class="n">startComment</span><span class="p">,</span> |
4077 | + <span class="s">"@delims"</span> <span class="p">:</span> <span class="n">startDelims</span><span class="p">,</span> |
4078 | + <span class="s">"@verbatim"</span><span class="p">:</span> <span class="n">startVerbatim</span><span class="p">,</span> |
4079 | + |
4080 | + <span class="c"># Unpaired sentinels: 3.x only.</span> |
4081 | + <span class="s">"@verbatimAfterRef"</span><span class="p">:</span> <span class="n">startVerbatimAfterRef</span><span class="p">,</span> |
4082 | + |
4083 | + <span class="c"># Unpaired sentinels: 4.x only.</span> |
4084 | + <span class="s">"@afterref"</span> <span class="p">:</span> <span class="n">startAfterRef</span><span class="p">,</span> |
4085 | + <span class="s">"@clone"</span> <span class="p">:</span> <span class="n">startClone</span><span class="p">,</span> |
4086 | + <span class="s">"@nl"</span> <span class="p">:</span> <span class="n">startNl</span><span class="p">,</span> |
4087 | + <span class="s">"@nonl"</span> <span class="p">:</span> <span class="n">startNonl</span><span class="p">,</span> |
4088 | + |
4089 | + <span class="c"># Paired sentinels: 3.x only.</span> |
4090 | + <span class="s">"@+body"</span><span class="p">:</span> <span class="n">startBody</span><span class="p">,</span> <span class="s">"@-body"</span><span class="p">:</span> <span class="n">endBody</span><span class="p">,</span> |
4091 | + |
4092 | + <span class="c"># Paired sentinels: 3.x and 4.x.</span> |
4093 | + <span class="s">"@+all"</span><span class="p">:</span> <span class="n">startAll</span><span class="p">,</span> <span class="s">"@-all"</span><span class="p">:</span> <span class="n">endAll</span><span class="p">,</span> |
4094 | + <span class="s">"@+at"</span><span class="p">:</span> <span class="n">startAt</span><span class="p">,</span> <span class="s">"@-at"</span><span class="p">:</span> <span class="n">endAt</span><span class="p">,</span> |
4095 | + <span class="s">"@+doc"</span><span class="p">:</span> <span class="n">startDoc</span><span class="p">,</span> <span class="s">"@-doc"</span><span class="p">:</span> <span class="n">endDoc</span><span class="p">,</span> |
4096 | + <span class="s">"@+leo"</span><span class="p">:</span> <span class="n">startLeo</span><span class="p">,</span> <span class="s">"@-leo"</span><span class="p">:</span> <span class="n">endLeo</span><span class="p">,</span> |
4097 | + <span class="s">"@+middle"</span><span class="p">:</span> <span class="n">startMiddle</span><span class="p">,</span> <span class="s">"@-middle"</span><span class="p">:</span> <span class="n">endMiddle</span><span class="p">,</span> |
4098 | + <span class="s">"@+node"</span><span class="p">:</span> <span class="n">startNode</span><span class="p">,</span> <span class="s">"@-node"</span><span class="p">:</span> <span class="n">endNode</span><span class="p">,</span> |
4099 | + <span class="s">"@+others"</span><span class="p">:</span> <span class="n">startOthers</span><span class="p">,</span> <span class="s">"@-others"</span><span class="p">:</span> <span class="n">endOthers</span><span class="p">,</span> |
4100 | + <span class="p">}</span> |
4101 | + <span class="c">#@-<< define sentinelDict >></span> |
4102 | + |
4103 | + <span class="c">#@+others</span> |
4104 | + <span class="c">#@+node:ekr.20041005105605.7: ** at.Birth & init</span> |
4105 | + <span class="c">#@+node:ekr.20041005105605.8: *3* atFile.ctor</span> |
4106 | + <span class="c"># Note: g.getScript also call the at.__init__ and at.finishCreate().</span> |
4107 | + |
4108 | + <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">c</span><span class="p">):</span> |
4109 | + |
4110 | + <span class="c"># **Warning**: all these ivars must **also** be inited in initCommonIvars.</span> |
4111 | + <span class="bp">self</span><span class="o">.</span><span class="n">c</span> <span class="o">=</span> <span class="n">c</span> |
4112 | + <span class="bp">self</span><span class="o">.</span><span class="n">debug</span> <span class="o">=</span> <span class="bp">False</span> |
4113 | + <span class="bp">self</span><span class="o">.</span><span class="n">fileCommands</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">fileCommands</span> |
4114 | + <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="mi">0</span> <span class="c"># Make sure at.error() works even when not inited.</span> |
4115 | + |
4116 | + <span class="c"># User options.</span> |
4117 | + <span class="bp">self</span><span class="o">.</span><span class="n">checkPythonCodeOnWrite</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getBool</span><span class="p">(</span> |
4118 | + <span class="s">'check-python-code-on-write'</span><span class="p">,</span><span class="n">default</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> |
4119 | + <span class="bp">self</span><span class="o">.</span><span class="n">underindentEscapeString</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">getString</span><span class="p">(</span> |
4120 | + <span class="s">'underindent-escape-string'</span><span class="p">)</span> <span class="ow">or</span> <span class="s">'</span><span class="se">\\</s |