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 | 1 | #@+leo-ver=5-thin | ||
7 | 2 | #@+node:peckj.20130503092808.1691: * @file Makefile | ||
8 | 3 | #@@language makefile | ||
9 | 4 | # Makefile for Sphinx documentation | ||
10 | 5 | # | ||
11 | 6 | |||
12 | 7 | # You can set these variables from the command line. | ||
13 | 8 | SPHINXOPTS = | ||
14 | 9 | SPHINXBUILD = sphinx-build | ||
15 | 10 | PAPER = | ||
16 | 11 | BUILDDIR = _build | ||
17 | 12 | |||
18 | 13 | # User-friendly check for sphinx-build | ||
19 | 14 | ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) | ||
20 | 15 | $(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 | 16 | endif | ||
22 | 17 | |||
23 | 18 | # Internal variables. | ||
24 | 19 | PAPEROPT_a4 = -D latex_paper_size=a4 | ||
25 | 20 | PAPEROPT_letter = -D latex_paper_size=letter | ||
26 | 21 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | ||
27 | 22 | # the i18n builder cannot share the environment and doctrees with the others | ||
28 | 23 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | ||
29 | 24 | |||
30 | 25 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext | ||
31 | 26 | |||
32 | 27 | help: | ||
33 | 28 | @echo "Please use \`make <target>' where <target> is one of" | ||
34 | 29 | @echo " html to make standalone HTML files" | ||
35 | 30 | @echo " dirhtml to make HTML files named index.html in directories" | ||
36 | 31 | @echo " singlehtml to make a single large HTML file" | ||
37 | 32 | @echo " pickle to make pickle files" | ||
38 | 33 | @echo " json to make JSON files" | ||
39 | 34 | @echo " htmlhelp to make HTML files and a HTML help project" | ||
40 | 35 | @echo " qthelp to make HTML files and a qthelp project" | ||
41 | 36 | @echo " devhelp to make HTML files and a Devhelp project" | ||
42 | 37 | @echo " epub to make an epub" | ||
43 | 38 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" | ||
44 | 39 | @echo " latexpdf to make LaTeX files and run them through pdflatex" | ||
45 | 40 | @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" | ||
46 | 41 | @echo " text to make text files" | ||
47 | 42 | @echo " man to make manual pages" | ||
48 | 43 | @echo " texinfo to make Texinfo files" | ||
49 | 44 | @echo " info to make Texinfo files and run them through makeinfo" | ||
50 | 45 | @echo " gettext to make PO message catalogs" | ||
51 | 46 | @echo " changes to make an overview of all changed/added/deprecated items" | ||
52 | 47 | @echo " xml to make Docutils-native XML files" | ||
53 | 48 | @echo " pseudoxml to make pseudoxml-XML files for display purposes" | ||
54 | 49 | @echo " linkcheck to check all external links for integrity" | ||
55 | 50 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" | ||
56 | 51 | |||
57 | 52 | clean: | ||
58 | 53 | rm -rf $(BUILDDIR)/* | ||
59 | 54 | |||
60 | 55 | html: | ||
61 | 56 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html | ||
62 | 57 | @echo | ||
63 | 58 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." | ||
64 | 59 | |||
65 | 60 | dirhtml: | ||
66 | 61 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml | ||
67 | 62 | @echo | ||
68 | 63 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." | ||
69 | 64 | |||
70 | 65 | singlehtml: | ||
71 | 66 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml | ||
72 | 67 | @echo | ||
73 | 68 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." | ||
74 | 69 | |||
75 | 70 | pickle: | ||
76 | 71 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle | ||
77 | 72 | @echo | ||
78 | 73 | @echo "Build finished; now you can process the pickle files." | ||
79 | 74 | |||
80 | 75 | json: | ||
81 | 76 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json | ||
82 | 77 | @echo | ||
83 | 78 | @echo "Build finished; now you can process the JSON files." | ||
84 | 79 | |||
85 | 80 | htmlhelp: | ||
86 | 81 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp | ||
87 | 82 | @echo | ||
88 | 83 | @echo "Build finished; now you can run HTML Help Workshop with the" \ | ||
89 | 84 | ".hhp project file in $(BUILDDIR)/htmlhelp." | ||
90 | 85 | |||
91 | 86 | qthelp: | ||
92 | 87 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp | ||
93 | 88 | @echo | ||
94 | 89 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ | ||
95 | 90 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" | ||
96 | 91 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Leo.qhcp" | ||
97 | 92 | @echo "To view the help file:" | ||
98 | 93 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Leo.qhc" | ||
99 | 94 | |||
100 | 95 | devhelp: | ||
101 | 96 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp | ||
102 | 97 | @echo | ||
103 | 98 | @echo "Build finished." | ||
104 | 99 | @echo "To view the help file:" | ||
105 | 100 | @echo "# mkdir -p $$HOME/.local/share/devhelp/Leo" | ||
106 | 101 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Leo" | ||
107 | 102 | @echo "# devhelp" | ||
108 | 103 | |||
109 | 104 | epub: | ||
110 | 105 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub | ||
111 | 106 | @echo | ||
112 | 107 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." | ||
113 | 108 | |||
114 | 109 | latex: | ||
115 | 110 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||
116 | 111 | @echo | ||
117 | 112 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." | ||
118 | 113 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ | ||
119 | 114 | "(use \`make latexpdf' here to do that automatically)." | ||
120 | 115 | |||
121 | 116 | latexpdf: | ||
122 | 117 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||
123 | 118 | @echo "Running LaTeX files through pdflatex..." | ||
124 | 119 | $(MAKE) -C $(BUILDDIR)/latex all-pdf | ||
125 | 120 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." | ||
126 | 121 | |||
127 | 122 | latexpdfja: | ||
128 | 123 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | ||
129 | 124 | @echo "Running LaTeX files through platex and dvipdfmx..." | ||
130 | 125 | $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja | ||
131 | 126 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." | ||
132 | 127 | |||
133 | 128 | text: | ||
134 | 129 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text | ||
135 | 130 | @echo | ||
136 | 131 | @echo "Build finished. The text files are in $(BUILDDIR)/text." | ||
137 | 132 | |||
138 | 133 | man: | ||
139 | 134 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man | ||
140 | 135 | @echo | ||
141 | 136 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." | ||
142 | 137 | |||
143 | 138 | texinfo: | ||
144 | 139 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo | ||
145 | 140 | @echo | ||
146 | 141 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." | ||
147 | 142 | @echo "Run \`make' in that directory to run these through makeinfo" \ | ||
148 | 143 | "(use \`make info' here to do that automatically)." | ||
149 | 144 | |||
150 | 145 | info: | ||
151 | 146 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo | ||
152 | 147 | @echo "Running Texinfo files through makeinfo..." | ||
153 | 148 | make -C $(BUILDDIR)/texinfo info | ||
154 | 149 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." | ||
155 | 150 | |||
156 | 151 | gettext: | ||
157 | 152 | $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale | ||
158 | 153 | @echo | ||
159 | 154 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." | ||
160 | 155 | |||
161 | 156 | changes: | ||
162 | 157 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes | ||
163 | 158 | @echo | ||
164 | 159 | @echo "The overview file is in $(BUILDDIR)/changes." | ||
165 | 160 | |||
166 | 161 | linkcheck: | ||
167 | 162 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck | ||
168 | 163 | @echo | ||
169 | 164 | @echo "Link check complete; look for any errors in the above output " \ | ||
170 | 165 | "or in $(BUILDDIR)/linkcheck/output.txt." | ||
171 | 166 | |||
172 | 167 | doctest: | ||
173 | 168 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest | ||
174 | 169 | @echo "Testing of doctests in the sources finished, look at the " \ | ||
175 | 170 | "results in $(BUILDDIR)/doctest/output.txt." | ||
176 | 171 | |||
177 | 172 | xml: | ||
178 | 173 | $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml | ||
179 | 174 | @echo | ||
180 | 175 | @echo "Build finished. The XML files are in $(BUILDDIR)/xml." | ||
181 | 176 | |||
182 | 177 | pseudoxml: | ||
183 | 178 | $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml | ||
184 | 179 | @echo | ||
185 | 180 | @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." | ||
186 | 181 | #@-leo | ||
187 | 0 | 182 | ||
188 | === added directory 'sphinx-docs/_build' | |||
189 | === added directory 'sphinx-docs/_build/doctrees' | |||
190 | === added file 'sphinx-docs/_build/doctrees/environment.pickle' | |||
191 | 1 | 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 | 183 | 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 | 2 | 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 | 184 | 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 | 3 | 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 | 185 | 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 | 4 | 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 | 186 | 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 | 5 | 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 | 187 | 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 | 6 | 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 | 188 | 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 | 7 | 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 | 189 | 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 | 8 | 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 | 190 | 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 | 9 | 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 | 191 | 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 | 10 | 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 | 192 | 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 | 11 | 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 | 193 | 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 | 1 | # Sphinx build info version 1 | ||
218 | 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||
219 | 3 | config: 1659204ed049af35611a59d0e4ea13de | ||
220 | 4 | tags: a205e9ed8462ae86fdd2f73488852ba9 | ||
221 | 0 | 5 | ||
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 | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | ||
228 | 2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
229 | 3 | |||
230 | 4 | |||
231 | 5 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
232 | 6 | <head> | ||
233 | 7 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
234 | 8 | |||
235 | 9 | <title>Overview: module code — Leo API 4.11dev documentation</title> | ||
236 | 10 | |||
237 | 11 | <link rel="stylesheet" href="../_static/default.css" type="text/css" /> | ||
238 | 12 | <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> | ||
239 | 13 | |||
240 | 14 | <script type="text/javascript"> | ||
241 | 15 | var DOCUMENTATION_OPTIONS = { | ||
242 | 16 | URL_ROOT: '../', | ||
243 | 17 | VERSION: '4.11dev', | ||
244 | 18 | COLLAPSE_INDEX: false, | ||
245 | 19 | FILE_SUFFIX: '.html', | ||
246 | 20 | HAS_SOURCE: true | ||
247 | 21 | }; | ||
248 | 22 | </script> | ||
249 | 23 | <script type="text/javascript" src="../_static/jquery.js"></script> | ||
250 | 24 | <script type="text/javascript" src="../_static/underscore.js"></script> | ||
251 | 25 | <script type="text/javascript" src="../_static/doctools.js"></script> | ||
252 | 26 | <link rel="top" title="Leo API 4.11dev documentation" href="../index.html" /> | ||
253 | 27 | </head> | ||
254 | 28 | <body> | ||
255 | 29 | <div class="related"> | ||
256 | 30 | <h3>Navigation</h3> | ||
257 | 31 | <ul> | ||
258 | 32 | <li class="right" style="margin-right: 10px"> | ||
259 | 33 | <a href="../genindex.html" title="General Index" | ||
260 | 34 | accesskey="I">index</a></li> | ||
261 | 35 | <li class="right" > | ||
262 | 36 | <a href="../py-modindex.html" title="Python Module Index" | ||
263 | 37 | >modules</a> |</li> | ||
264 | 38 | <li><a href="../index.html">Leo API 4.11dev documentation</a> »</li> | ||
265 | 39 | </ul> | ||
266 | 40 | </div> | ||
267 | 41 | |||
268 | 42 | <div class="document"> | ||
269 | 43 | <div class="documentwrapper"> | ||
270 | 44 | <div class="bodywrapper"> | ||
271 | 45 | <div class="body"> | ||
272 | 46 | |||
273 | 47 | <h1>All modules for which code is available</h1> | ||
274 | 48 | <ul><li><a href="leo/__init__.html">leo.__init__</a></li> | ||
275 | 49 | <li><a href="leo/core/leoApp.html">leo.core.leoApp</a></li> | ||
276 | 50 | <li><a href="leo/core/leoAtFile.html">leo.core.leoAtFile</a></li> | ||
277 | 51 | <li><a href="leo/core/leoBridge.html">leo.core.leoBridge</a></li> | ||
278 | 52 | <li><a href="leo/core/leoBridgeTest.html">leo.core.leoBridgeTest</a></li> | ||
279 | 53 | <li><a href="leo/core/leoCache.html">leo.core.leoCache</a></li> | ||
280 | 54 | <li><a href="leo/core/leoChapters.html">leo.core.leoChapters</a></li> | ||
281 | 55 | <li><a href="leo/core/leoColor.html">leo.core.leoColor</a></li> | ||
282 | 56 | <li><a href="leo/core/leoCommands.html">leo.core.leoCommands</a></li> | ||
283 | 57 | <li><a href="leo/core/leoCompare.html">leo.core.leoCompare</a></li> | ||
284 | 58 | <li><a href="leo/core/leoConfig.html">leo.core.leoConfig</a></li> | ||
285 | 59 | <li><a href="leo/core/leoDebugger.html">leo.core.leoDebugger</a></li> | ||
286 | 60 | <li><a href="leo/core/leoDynamicTest.html">leo.core.leoDynamicTest</a></li> | ||
287 | 61 | <li><a href="leo/core/leoFileCommands.html">leo.core.leoFileCommands</a></li> | ||
288 | 62 | <li><a href="leo/core/leoFind.html">leo.core.leoFind</a></li> | ||
289 | 63 | <li><a href="leo/core/leoFrame.html">leo.core.leoFrame</a></li> | ||
290 | 64 | <li><a href="leo/core/leoGlobals.html">leo.core.leoGlobals</a></li> | ||
291 | 65 | <li><a href="leo/core/leoGui.html">leo.core.leoGui</a></li> | ||
292 | 66 | <li><a href="leo/core/leoIPython.html">leo.core.leoIPython</a></li> | ||
293 | 67 | <li><a href="leo/core/leoInspect.html">leo.core.leoInspect</a></li> | ||
294 | 68 | <li><a href="leo/core/leoKeys.html">leo.core.leoKeys</a></li> | ||
295 | 69 | <li><a href="leo/core/leoMenu.html">leo.core.leoMenu</a></li> | ||
296 | 70 | <li><a href="leo/core/leoNodes.html">leo.core.leoNodes</a></li> | ||
297 | 71 | <li><a href="leo/core/leoPlugins.html">leo.core.leoPlugins</a></li> | ||
298 | 72 | <li><a href="leo/core/leoPymacs.html">leo.core.leoPymacs</a></li> | ||
299 | 73 | <li><a href="leo/core/leoRst.html">leo.core.leoRst</a></li> | ||
300 | 74 | <li><a href="leo/core/leoShadow.html">leo.core.leoShadow</a></li> | ||
301 | 75 | <li><a href="leo/core/leoTangle.html">leo.core.leoTangle</a></li> | ||
302 | 76 | <li><a href="leo/core/leoTest.html">leo.core.leoTest</a></li> | ||
303 | 77 | <li><a href="leo/core/leoUndo.html">leo.core.leoUndo</a></li> | ||
304 | 78 | <li><a href="leo/core/runLeo.html">leo.core.runLeo</a></li> | ||
305 | 79 | <li><a href="leo/extensions/asciidoc.html">leo.extensions.asciidoc</a></li> | ||
306 | 80 | <li><a href="leo/extensions/colors.html">leo.extensions.colors</a></li> | ||
307 | 81 | <li><a href="leo/extensions/patch_11_01.html">leo.extensions.patch_11_01</a></li> | ||
308 | 82 | <li><a href="leo/external/codewise.html">leo.external.codewise</a></li> | ||
309 | 83 | <li><a href="leo/external/edb.html">leo.external.edb</a></li> | ||
310 | 84 | <li><a href="leo/external/leosax.html">leo.external.leosax</a></li> | ||
311 | 85 | <li><a href="leo/external/stringlist.html">leo.external.stringlist</a></li> | ||
312 | 86 | <li><a href="leo/plugins/FileActions.html">leo.plugins.FileActions</a></li> | ||
313 | 87 | <li><a href="leo/plugins/add_directives.html">leo.plugins.add_directives</a></li> | ||
314 | 88 | <li><a href="leo/plugins/at_folder.html">leo.plugins.at_folder</a></li> | ||
315 | 89 | <li><a href="leo/plugins/at_produce.html">leo.plugins.at_produce</a></li> | ||
316 | 90 | <li><a href="leo/plugins/at_view.html">leo.plugins.at_view</a></li> | ||
317 | 91 | <li><a href="leo/plugins/bibtex.html">leo.plugins.bibtex</a></li> | ||
318 | 92 | <li><a href="leo/plugins/chapter_hoist.html">leo.plugins.chapter_hoist</a></li> | ||
319 | 93 | <li><a href="leo/plugins/codewisecompleter.html">leo.plugins.codewisecompleter</a></li> | ||
320 | 94 | <li><a href="leo/plugins/colorize_headlines.html">leo.plugins.colorize_headlines</a></li> | ||
321 | 95 | <li><a href="leo/plugins/cursesGui.html">leo.plugins.cursesGui</a></li> | ||
322 | 96 | <li><a href="leo/plugins/datenodes.html">leo.plugins.datenodes</a></li> | ||
323 | 97 | <li><a href="leo/plugins/debugger_pudb.html">leo.plugins.debugger_pudb</a></li> | ||
324 | 98 | <li><a href="leo/plugins/dtest.html">leo.plugins.dtest</a></li> | ||
325 | 99 | <li><a href="leo/plugins/dump_globals.html">leo.plugins.dump_globals</a></li> | ||
326 | 100 | <li><a href="leo/plugins/empty_leo_file.html">leo.plugins.empty_leo_file</a></li> | ||
327 | 101 | <li><a href="leo/plugins/enable_gc.html">leo.plugins.enable_gc</a></li> | ||
328 | 102 | <li><a href="leo/plugins/expfolder.html">leo.plugins.expfolder</a></li> | ||
329 | 103 | <li><a href="leo/plugins/geotag.html">leo.plugins.geotag</a></li> | ||
330 | 104 | <li><a href="leo/plugins/gitarchive.html">leo.plugins.gitarchive</a></li> | ||
331 | 105 | <li><a href="leo/plugins/import_cisco_config.html">leo.plugins.import_cisco_config</a></li> | ||
332 | 106 | <li><a href="leo/plugins/initinclass.html">leo.plugins.initinclass</a></li> | ||
333 | 107 | <li><a href="leo/plugins/ipython.html">leo.plugins.ipython</a></li> | ||
334 | 108 | <li><a href="leo/plugins/jinjarender.html">leo.plugins.jinjarender</a></li> | ||
335 | 109 | <li><a href="leo/plugins/leoOPML.html">leo.plugins.leoOPML</a></li> | ||
336 | 110 | <li><a href="leo/plugins/leo_interface.html">leo.plugins.leo_interface</a></li> | ||
337 | 111 | <li><a href="leo/plugins/leo_to_html.html">leo.plugins.leo_to_html</a></li> | ||
338 | 112 | <li><a href="leo/plugins/leo_to_rtf.html">leo.plugins.leo_to_rtf</a></li> | ||
339 | 113 | <li><a href="leo/plugins/leocursor.html">leo.plugins.leocursor</a></li> | ||
340 | 114 | <li><a href="leo/plugins/leofeeds.html">leo.plugins.leofeeds</a></li> | ||
341 | 115 | <li><a href="leo/plugins/leomail.html">leo.plugins.leomail</a></li> | ||
342 | 116 | <li><a href="leo/plugins/lineNumbers.html">leo.plugins.lineNumbers</a></li> | ||
343 | 117 | <li><a href="leo/plugins/macros.html">leo.plugins.macros</a></li> | ||
344 | 118 | <li><a href="leo/plugins/maximizeNewWindows.html">leo.plugins.maximizeNewWindows</a></li> | ||
345 | 119 | <li><a href="leo/plugins/mime.html">leo.plugins.mime</a></li> | ||
346 | 120 | <li><a href="leo/plugins/mnplugins.html">leo.plugins.mnplugins</a></li> | ||
347 | 121 | <li><a href="leo/plugins/mod_autosave.html">leo.plugins.mod_autosave</a></li> | ||
348 | 122 | <li><a href="leo/plugins/mod_framesize.html">leo.plugins.mod_framesize</a></li> | ||
349 | 123 | <li><a href="leo/plugins/mod_http.html">leo.plugins.mod_http</a></li> | ||
350 | 124 | <li><a href="leo/plugins/mod_leo2ascd.html">leo.plugins.mod_leo2ascd</a></li> | ||
351 | 125 | <li><a href="leo/plugins/mod_read_dir_outline.html">leo.plugins.mod_read_dir_outline</a></li> | ||
352 | 126 | <li><a href="leo/plugins/mod_scripting.html">leo.plugins.mod_scripting</a></li> | ||
353 | 127 | <li><a href="leo/plugins/mod_speedups.html">leo.plugins.mod_speedups</a></li> | ||
354 | 128 | <li><a href="leo/plugins/mod_tempfname.html">leo.plugins.mod_tempfname</a></li> | ||
355 | 129 | <li><a href="leo/plugins/mod_timestamp.html">leo.plugins.mod_timestamp</a></li> | ||
356 | 130 | <li><a href="leo/plugins/multifile.html">leo.plugins.multifile</a></li> | ||
357 | 131 | <li><a href="leo/plugins/niceNosent.html">leo.plugins.niceNosent</a></li> | ||
358 | 132 | <li><a href="leo/plugins/nodeActions.html">leo.plugins.nodeActions</a></li> | ||
359 | 133 | <li><a href="leo/plugins/open_shell.html">leo.plugins.open_shell</a></li> | ||
360 | 134 | <li><a href="leo/plugins/outline_export.html">leo.plugins.outline_export</a></li> | ||
361 | 135 | <li><a href="leo/plugins/paste_as_headlines.html">leo.plugins.paste_as_headlines</a></li> | ||
362 | 136 | <li><a href="leo/plugins/pluginsTest.html">leo.plugins.pluginsTest</a></li> | ||
363 | 137 | <li><a href="leo/plugins/plugins_menu.html">leo.plugins.plugins_menu</a></li> | ||
364 | 138 | <li><a href="leo/plugins/pygeotag/pygeotag.html">leo.plugins.pygeotag.pygeotag</a></li> | ||
365 | 139 | <li><a href="leo/plugins/qtframecommands.html">leo.plugins.qtframecommands</a></li> | ||
366 | 140 | <li><a href="leo/plugins/quit_leo.html">leo.plugins.quit_leo</a></li> | ||
367 | 141 | <li><a href="leo/plugins/read_only_nodes.html">leo.plugins.read_only_nodes</a></li> | ||
368 | 142 | <li><a href="leo/plugins/redirect_to_log.html">leo.plugins.redirect_to_log</a></li> | ||
369 | 143 | <li><a href="leo/plugins/rst3.html">leo.plugins.rst3</a></li> | ||
370 | 144 | <li><a href="leo/plugins/run_nodes.html">leo.plugins.run_nodes</a></li> | ||
371 | 145 | <li><a href="leo/plugins/screenshots.html">leo.plugins.screenshots</a></li> | ||
372 | 146 | <li><a href="leo/plugins/script_io_to_body.html">leo.plugins.script_io_to_body</a></li> | ||
373 | 147 | <li><a href="leo/plugins/scripts_menu.html">leo.plugins.scripts_menu</a></li> | ||
374 | 148 | <li><a href="leo/plugins/setHomeDirectory.html">leo.plugins.setHomeDirectory</a></li> | ||
375 | 149 | <li><a href="leo/plugins/slideshow.html">leo.plugins.slideshow</a></li> | ||
376 | 150 | <li><a href="leo/plugins/startfile.html">leo.plugins.startfile</a></li> | ||
377 | 151 | <li><a href="leo/plugins/testRegisterCommand.html">leo.plugins.testRegisterCommand</a></li> | ||
378 | 152 | <li><a href="leo/plugins/textnode.html">leo.plugins.textnode</a></li> | ||
379 | 153 | <li><a href="leo/plugins/tkGui.html">leo.plugins.tkGui</a></li> | ||
380 | 154 | <li><a href="leo/plugins/tomboy_import.html">leo.plugins.tomboy_import</a></li> | ||
381 | 155 | <li><a href="leo/plugins/trace_gc_plugin.html">leo.plugins.trace_gc_plugin</a></li> | ||
382 | 156 | <li><a href="leo/plugins/trace_keys.html">leo.plugins.trace_keys</a></li> | ||
383 | 157 | <li><a href="leo/plugins/trace_tags.html">leo.plugins.trace_tags</a></li> | ||
384 | 158 | <li><a href="leo/plugins/valuespace.html">leo.plugins.valuespace</a></li> | ||
385 | 159 | <li><a href="leo/plugins/vim.html">leo.plugins.vim</a></li> | ||
386 | 160 | <li><a href="leo/plugins/word_count.html">leo.plugins.word_count</a></li> | ||
387 | 161 | <li><a href="leo/plugins/word_export.html">leo.plugins.word_export</a></li> | ||
388 | 162 | <li><a href="leo/plugins/xemacs.html">leo.plugins.xemacs</a></li> | ||
389 | 163 | <li><a href="leo/plugins/xsltWithNodes.html">leo.plugins.xsltWithNodes</a></li> | ||
390 | 164 | <li><a href="leo/plugins/zenity_file_dialogs.html">leo.plugins.zenity_file_dialogs</a></li> | ||
391 | 165 | </ul> | ||
392 | 166 | |||
393 | 167 | </div> | ||
394 | 168 | </div> | ||
395 | 169 | </div> | ||
396 | 170 | <div class="sphinxsidebar"> | ||
397 | 171 | <div class="sphinxsidebarwrapper"> | ||
398 | 172 | <div id="searchbox" style="display: none"> | ||
399 | 173 | <h3>Quick search</h3> | ||
400 | 174 | <form class="search" action="../search.html" method="get"> | ||
401 | 175 | <input type="text" name="q" /> | ||
402 | 176 | <input type="submit" value="Go" /> | ||
403 | 177 | <input type="hidden" name="check_keywords" value="yes" /> | ||
404 | 178 | <input type="hidden" name="area" value="default" /> | ||
405 | 179 | </form> | ||
406 | 180 | <p class="searchtip" style="font-size: 90%"> | ||
407 | 181 | Enter search terms or a module, class or function name. | ||
408 | 182 | </p> | ||
409 | 183 | </div> | ||
410 | 184 | <script type="text/javascript">$('#searchbox').show(0);</script> | ||
411 | 185 | </div> | ||
412 | 186 | </div> | ||
413 | 187 | <div class="clearer"></div> | ||
414 | 188 | </div> | ||
415 | 189 | <div class="related"> | ||
416 | 190 | <h3>Navigation</h3> | ||
417 | 191 | <ul> | ||
418 | 192 | <li class="right" style="margin-right: 10px"> | ||
419 | 193 | <a href="../genindex.html" title="General Index" | ||
420 | 194 | >index</a></li> | ||
421 | 195 | <li class="right" > | ||
422 | 196 | <a href="../py-modindex.html" title="Python Module Index" | ||
423 | 197 | >modules</a> |</li> | ||
424 | 198 | <li><a href="../index.html">Leo API 4.11dev documentation</a> »</li> | ||
425 | 199 | </ul> | ||
426 | 200 | </div> | ||
427 | 201 | <div class="footer"> | ||
428 | 202 | © Copyright 2013, Ed K. Ream. | ||
429 | 203 | Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. | ||
430 | 204 | </div> | ||
431 | 205 | </body> | ||
432 | 206 | </html> | ||
433 | 0 | \ No newline at end of file | 207 | \ No newline at end of file |
434 | 1 | 208 | ||
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 | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | ||
441 | 2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
442 | 3 | |||
443 | 4 | |||
444 | 5 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
445 | 6 | <head> | ||
446 | 7 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
447 | 8 | |||
448 | 9 | <title>leo.__init__ — Leo API 4.11dev documentation</title> | ||
449 | 10 | |||
450 | 11 | <link rel="stylesheet" href="../../_static/default.css" type="text/css" /> | ||
451 | 12 | <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" /> | ||
452 | 13 | |||
453 | 14 | <script type="text/javascript"> | ||
454 | 15 | var DOCUMENTATION_OPTIONS = { | ||
455 | 16 | URL_ROOT: '../../', | ||
456 | 17 | VERSION: '4.11dev', | ||
457 | 18 | COLLAPSE_INDEX: false, | ||
458 | 19 | FILE_SUFFIX: '.html', | ||
459 | 20 | HAS_SOURCE: true | ||
460 | 21 | }; | ||
461 | 22 | </script> | ||
462 | 23 | <script type="text/javascript" src="../../_static/jquery.js"></script> | ||
463 | 24 | <script type="text/javascript" src="../../_static/underscore.js"></script> | ||
464 | 25 | <script type="text/javascript" src="../../_static/doctools.js"></script> | ||
465 | 26 | <link rel="top" title="Leo API 4.11dev documentation" href="../../index.html" /> | ||
466 | 27 | <link rel="up" title="Module code" href="../index.html" /> | ||
467 | 28 | </head> | ||
468 | 29 | <body> | ||
469 | 30 | <div class="related"> | ||
470 | 31 | <h3>Navigation</h3> | ||
471 | 32 | <ul> | ||
472 | 33 | <li class="right" style="margin-right: 10px"> | ||
473 | 34 | <a href="../../genindex.html" title="General Index" | ||
474 | 35 | accesskey="I">index</a></li> | ||
475 | 36 | <li class="right" > | ||
476 | 37 | <a href="../../py-modindex.html" title="Python Module Index" | ||
477 | 38 | >modules</a> |</li> | ||
478 | 39 | <li><a href="../../index.html">Leo API 4.11dev documentation</a> »</li> | ||
479 | 40 | <li><a href="../index.html" accesskey="U">Module code</a> »</li> | ||
480 | 41 | </ul> | ||
481 | 42 | </div> | ||
482 | 43 | |||
483 | 44 | <div class="document"> | ||
484 | 45 | <div class="documentwrapper"> | ||
485 | 46 | <div class="bodywrapper"> | ||
486 | 47 | <div class="body"> | ||
487 | 48 | |||
488 | 49 | <h1>Source code for leo.__init__</h1><pre> | ||
489 | 50 | # This file makes the leo directory a package. | ||
490 | 51 | |||
491 | 52 | # The function allows the following code to work:: | ||
492 | 53 | # | ||
493 | 54 | # import leo | ||
494 | 55 | # leo.run() | ||
495 | 56 | |||
496 | 57 | <div class="viewcode-block" id="run"><a class="viewcode-back" href="../../leo.html#leo.__init__.run">[docs]</a>def run(*args,**keys): | ||
497 | 58 | import pdb ; pdb = pdb.set_trace | ||
498 | 59 | import leo.core.runLeo as runLeo | ||
499 | 60 | runLeo.run(*args,**keys) | ||
500 | 61 | </div> | ||
501 | 62 | </pre> | ||
502 | 63 | |||
503 | 64 | </div> | ||
504 | 65 | </div> | ||
505 | 66 | </div> | ||
506 | 67 | <div class="sphinxsidebar"> | ||
507 | 68 | <div class="sphinxsidebarwrapper"> | ||
508 | 69 | <div id="searchbox" style="display: none"> | ||
509 | 70 | <h3>Quick search</h3> | ||
510 | 71 | <form class="search" action="../../search.html" method="get"> | ||
511 | 72 | <input type="text" name="q" /> | ||
512 | 73 | <input type="submit" value="Go" /> | ||
513 | 74 | <input type="hidden" name="check_keywords" value="yes" /> | ||
514 | 75 | <input type="hidden" name="area" value="default" /> | ||
515 | 76 | </form> | ||
516 | 77 | <p class="searchtip" style="font-size: 90%"> | ||
517 | 78 | Enter search terms or a module, class or function name. | ||
518 | 79 | </p> | ||
519 | 80 | </div> | ||
520 | 81 | <script type="text/javascript">$('#searchbox').show(0);</script> | ||
521 | 82 | </div> | ||
522 | 83 | </div> | ||
523 | 84 | <div class="clearer"></div> | ||
524 | 85 | </div> | ||
525 | 86 | <div class="related"> | ||
526 | 87 | <h3>Navigation</h3> | ||
527 | 88 | <ul> | ||
528 | 89 | <li class="right" style="margin-right: 10px"> | ||
529 | 90 | <a href="../../genindex.html" title="General Index" | ||
530 | 91 | >index</a></li> | ||
531 | 92 | <li class="right" > | ||
532 | 93 | <a href="../../py-modindex.html" title="Python Module Index" | ||
533 | 94 | >modules</a> |</li> | ||
534 | 95 | <li><a href="../../index.html">Leo API 4.11dev documentation</a> »</li> | ||
535 | 96 | <li><a href="../index.html" >Module code</a> »</li> | ||
536 | 97 | </ul> | ||
537 | 98 | </div> | ||
538 | 99 | <div class="footer"> | ||
539 | 100 | © Copyright 2013, Ed K. Ream. | ||
540 | 101 | Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. | ||
541 | 102 | </div> | ||
542 | 103 | </body> | ||
543 | 104 | </html> | ||
544 | 0 | \ No newline at end of file | 105 | \ No newline at end of file |
545 | 1 | 106 | ||
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 | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | ||
552 | 2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
553 | 3 | |||
554 | 4 | |||
555 | 5 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
556 | 6 | <head> | ||
557 | 7 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
558 | 8 | |||
559 | 9 | <title>leo.core.leoApp — Leo API 4.11dev documentation</title> | ||
560 | 10 | |||
561 | 11 | <link rel="stylesheet" href="../../../_static/default.css" type="text/css" /> | ||
562 | 12 | <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> | ||
563 | 13 | |||
564 | 14 | <script type="text/javascript"> | ||
565 | 15 | var DOCUMENTATION_OPTIONS = { | ||
566 | 16 | URL_ROOT: '../../../', | ||
567 | 17 | VERSION: '4.11dev', | ||
568 | 18 | COLLAPSE_INDEX: false, | ||
569 | 19 | FILE_SUFFIX: '.html', | ||
570 | 20 | HAS_SOURCE: true | ||
571 | 21 | }; | ||
572 | 22 | </script> | ||
573 | 23 | <script type="text/javascript" src="../../../_static/jquery.js"></script> | ||
574 | 24 | <script type="text/javascript" src="../../../_static/underscore.js"></script> | ||
575 | 25 | <script type="text/javascript" src="../../../_static/doctools.js"></script> | ||
576 | 26 | <link rel="top" title="Leo API 4.11dev documentation" href="../../../index.html" /> | ||
577 | 27 | <link rel="up" title="Module code" href="../../index.html" /> | ||
578 | 28 | </head> | ||
579 | 29 | <body> | ||
580 | 30 | <div class="related"> | ||
581 | 31 | <h3>Navigation</h3> | ||
582 | 32 | <ul> | ||
583 | 33 | <li class="right" style="margin-right: 10px"> | ||
584 | 34 | <a href="../../../genindex.html" title="General Index" | ||
585 | 35 | accesskey="I">index</a></li> | ||
586 | 36 | <li class="right" > | ||
587 | 37 | <a href="../../../py-modindex.html" title="Python Module Index" | ||
588 | 38 | >modules</a> |</li> | ||
589 | 39 | <li><a href="../../../index.html">Leo API 4.11dev documentation</a> »</li> | ||
590 | 40 | <li><a href="../../index.html" accesskey="U">Module code</a> »</li> | ||
591 | 41 | </ul> | ||
592 | 42 | </div> | ||
593 | 43 | |||
594 | 44 | <div class="document"> | ||
595 | 45 | <div class="documentwrapper"> | ||
596 | 46 | <div class="bodywrapper"> | ||
597 | 47 | <div class="body"> | ||
598 | 48 | |||
599 | 49 | <h1>Source code for leo.core.leoApp</h1><div class="highlight"><pre> | ||
600 | 50 | <span class="c"># -*- coding: utf-8 -*-</span> | ||
601 | 51 | <span class="c">#@+leo-ver=5-thin</span> | ||
602 | 52 | <span class="c">#@+node:ekr.20031218072017.2608: * @file leoApp.py</span> | ||
603 | 53 | <span class="c">#@@first</span> | ||
604 | 54 | |||
605 | 55 | <span class="c">#@@language python</span> | ||
606 | 56 | <span class="c">#@@tabwidth -4</span> | ||
607 | 57 | <span class="c">#@@pagewidth 60</span> | ||
608 | 58 | |||
609 | 59 | <span class="c">#@+<< imports >></span> | ||
610 | 60 | <span class="c">#@+node:ekr.20120219194520.10463: ** << imports >> (leoApp)</span> | ||
611 | 61 | <span class="kn">import</span> <span class="nn">leo.core.leoGlobals</span> <span class="kn">as</span> <span class="nn">g</span> | ||
612 | 62 | |||
613 | 63 | <span class="kn">import</span> <span class="nn">os</span> | ||
614 | 64 | <span class="kn">import</span> <span class="nn">optparse</span> | ||
615 | 65 | <span class="kn">import</span> <span class="nn">string</span> | ||
616 | 66 | <span class="kn">import</span> <span class="nn">sys</span> | ||
617 | 67 | <span class="kn">import</span> <span class="nn">traceback</span> | ||
618 | 68 | <span class="kn">import</span> <span class="nn">zipfile</span> | ||
619 | 69 | |||
620 | 70 | <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> | ||
621 | 71 | <span class="kn">import</span> <span class="nn">io</span> | ||
622 | 72 | <span class="n">StringIO</span> <span class="o">=</span> <span class="n">io</span><span class="o">.</span><span class="n">StringIO</span> | ||
623 | 73 | <span class="k">else</span><span class="p">:</span> | ||
624 | 74 | <span class="kn">import</span> <span class="nn">cStringIO</span> | ||
625 | 75 | <span class="n">StringIO</span> <span class="o">=</span> <span class="n">cStringIO</span><span class="o">.</span><span class="n">StringIO</span> | ||
626 | 76 | <span class="c">#@-<< imports >></span> | ||
627 | 77 | |||
628 | 78 | <span class="c">#@+others</span> | ||
629 | 79 | <span class="c">#@+node:ekr.20120209051836.10241: ** class LeoApp</span> | ||
630 | 80 | <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 | 81 | |||
632 | 82 | <span class="sd">"""A class representing the Leo application itself.</span> | ||
633 | 83 | |||
634 | 84 | <span class="sd"> Ivars of this class are Leo's global variables."""</span> | ||
635 | 85 | |||
636 | 86 | <span class="c">#@+others</span> | ||
637 | 87 | <span class="c">#@+node:ekr.20031218072017.1416: *3* app.__init__</span> | ||
638 | 88 | <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
639 | 89 | |||
640 | 90 | <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 | 91 | <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 | 92 | |||
643 | 93 | <span class="c"># These ivars are Leo's global vars.</span> | ||
644 | 94 | <span class="c"># leoGlobals.py contains global switches to be set by hand.</span> | ||
645 | 95 | |||
646 | 96 | <span class="c"># Command-line arguments...</span> | ||
647 | 97 | <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 | 98 | <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 | 99 | <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 | 100 | <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 | 101 | <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 | 102 | <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 | 103 | <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 | 104 | <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 | 105 | <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 | 106 | <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 | 107 | <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 | 108 | <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 | 109 | <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 | 110 | <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 | 111 | <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 | 112 | |||
663 | 113 | <span class="c"># Debugging & statistics...</span> | ||
664 | 114 | <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 | 115 | <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 | 116 | <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 | 117 | <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 | 118 | <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 | 119 | <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 | 120 | <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 | 121 | <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 | 122 | |||
673 | 123 | <span class="c"># Error messages...</span> | ||
674 | 124 | <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 | 125 | <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 | 126 | <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 | 127 | |||
678 | 128 | <span class="c"># Global directories...</span> | ||
679 | 129 | <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 | 130 | <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 | 131 | <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 | 132 | <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 | 133 | <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 | 134 | <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 | 135 | <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 | 136 | |||
687 | 137 | <span class="c"># Global data...</span> | ||
688 | 138 | <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 | 139 | <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 | 140 | <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 | 141 | <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 | 142 | <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 | 143 | <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 | 144 | <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 | 145 | |||
696 | 146 | <span class="c"># Global controller/manager objects...</span> | ||
697 | 147 | <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 | 148 | <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 | 149 | <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 | 150 | <span class="c"># self.logManager = None # The singleton LogManager instance.</span> | ||
701 | 151 | <span class="c"># self.openWithManager = None # The singleton OpenWithManager instance.</span> | ||
702 | 152 | <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 | 153 | <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 | 154 | <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 | 155 | |||
706 | 156 | <span class="c"># Global status vars...</span> | ||
707 | 157 | |||
708 | 158 | <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 | 159 | <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 | 160 | <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 | 161 | |||
712 | 162 | <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 | 163 | <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 | 164 | <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 | 165 | <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 | 166 | <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 | 167 | <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 | 168 | <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 | 169 | <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 | 170 | |||
721 | 171 | <span class="c">#### To be moved to the LogManager.</span> | ||
722 | 172 | |||
723 | 173 | <span class="c"># The global log...</span> | ||
724 | 174 | <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 | 175 | <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 | 176 | <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 | 177 | <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 | 178 | <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 | 179 | <span class="bp">self</span><span class="o">.</span><span class="n">signon</span> <span class="o">=</span> <span class="s">''</span> | ||
730 | 180 | <span class="bp">self</span><span class="o">.</span><span class="n">signon2</span> <span class="o">=</span> <span class="s">''</span> | ||
731 | 181 | <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 | 182 | |||
733 | 183 | <span class="c"># Global types.</span> | ||
734 | 184 | <span class="kn">import</span> <span class="nn">leo.core.leoFrame</span> <span class="kn">as</span> <span class="nn">leoFrame</span> | ||
735 | 185 | <span class="kn">import</span> <span class="nn">leo.core.leoGui</span> <span class="kn">as</span> <span class="nn">leoGui</span> | ||
736 | 186 | <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 | 187 | <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 | 188 | |||
739 | 189 | <span class="c">#### To be moved to OpenWithManager.</span> | ||
740 | 190 | |||
741 | 191 | <span class="c"># Open with data...</span> | ||
742 | 192 | <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 | 193 | <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 | 194 | <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 | 195 | <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 | 196 | |||
747 | 197 | <span class="c">#### To be moved to to the pluginsController.</span> | ||
748 | 198 | |||
749 | 199 | <span class="c"># Plugins and event handlers...</span> | ||
750 | 200 | <span class="bp">self</span><span class="o">.</span><span class="n">afterHandler</span> <span class="o">=</span> <span class="bp">None</span> | ||
751 | 201 | <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 | 202 | <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 | 203 | <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 | 204 | <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 | 205 | <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 | 206 | |||
757 | 207 | <span class="c"># Support for scripting...</span> | ||
758 | 208 | <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 | 209 | <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 | 210 | <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 | 211 | |||
762 | 212 | <span class="c"># Unit testing...</span> | ||
763 | 213 | <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 | 214 | <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 | 215 | <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 | 216 | <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 | 217 | <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 | 218 | <span class="bp">self</span><span class="o">.</span><span class="n">unitTestMenusDict</span> <span class="o">=</span> <span class="p">{}</span> | ||
769 | 219 | <span class="c"># Created in leoMenu.createMenuEntries for a unit test.</span> | ||
770 | 220 | <span class="c"># keys are command names. values are sets of strokes.</span> | ||
771 | 221 | |||
772 | 222 | <span class="c"># Define all global data. </span> | ||
773 | 223 | <span class="bp">self</span><span class="o">.</span><span class="n">define_global_constants</span><span class="p">()</span> | ||
774 | 224 | <span class="bp">self</span><span class="o">.</span><span class="n">define_language_delims_dict</span><span class="p">()</span> | ||
775 | 225 | <span class="bp">self</span><span class="o">.</span><span class="n">define_language_extension_dict</span><span class="p">()</span> | ||
776 | 226 | <span class="bp">self</span><span class="o">.</span><span class="n">define_extension_dict</span><span class="p">()</span> | ||
777 | 227 | <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 | 228 | |||
779 | 229 | <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 | 230 | <span class="c">#@+node:ekr.20031218072017.1417: *4* app.define_global_constants</span> | ||
781 | 231 | <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 | 232 | |||
783 | 233 | <span class="c"># self.prolog_string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"</span> | ||
784 | 234 | |||
785 | 235 | <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 | 236 | <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 | 237 | <span class="bp">self</span><span class="o">.</span><span class="n">prolog_namespace_string</span> <span class="o">=</span> \ | ||
788 | 238 | <span class="s">'xmlns:leo="http://edreamleo.org/namespaces/leo-python-editor/1.1"'</span> | ||
789 | 239 | <span class="c">#@+node:ekr.20120522160137.9909: *4* app.define_language_delims_dict</span></div> | ||
790 | 240 | <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 | 241 | |||
792 | 242 | <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 | 243 | <span class="c"># Internally, lower case is used for all language names.</span> | ||
794 | 244 | <span class="c"># Keys are languages, values are 1,2 or 3-tuples of delims.</span> | ||
795 | 245 | <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 | 246 | <span class="s">"ada"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> | ||
797 | 247 | <span class="s">"ada95"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> | ||
798 | 248 | <span class="s">"ahk"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
799 | 249 | <span class="s">"antlr"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
800 | 250 | <span class="s">"apacheconf"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
801 | 251 | <span class="s">"apdl"</span> <span class="p">:</span> <span class="s">"!"</span><span class="p">,</span> | ||
802 | 252 | <span class="s">"applescript"</span> <span class="p">:</span> <span class="s">"-- (* *)"</span><span class="p">,</span> | ||
803 | 253 | <span class="s">"asp"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
804 | 254 | <span class="s">"aspect_j"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
805 | 255 | <span class="s">"assembly_macro32"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
806 | 256 | <span class="s">"assembly_mcs51"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
807 | 257 | <span class="s">"assembly_parrot"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
808 | 258 | <span class="s">"assembly_r2000"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
809 | 259 | <span class="s">"assembly_x86"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
810 | 260 | <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 | 261 | <span class="s">"awk"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
812 | 262 | <span class="s">"b"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
813 | 263 | <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 | 264 | <span class="s">"bbj"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> | ||
815 | 265 | <span class="s">"bcel"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
816 | 266 | <span class="s">"bibtex"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> | ||
817 | 267 | <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 | 268 | <span class="s">"chill"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> | ||
819 | 269 | <span class="s">"cobol"</span> <span class="p">:</span> <span class="s">"*"</span><span class="p">,</span> | ||
820 | 270 | <span class="s">"coldfusion"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
821 | 271 | <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 | 272 | <span class="s">"cplusplus"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
823 | 273 | <span class="s">"cpp"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span><span class="c"># C++.</span> | ||
824 | 274 | <span class="s">"csharp"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> <span class="c"># C#</span> | ||
825 | 275 | <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 | 276 | <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 | 277 | <span class="s">"cython"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
828 | 278 | <span class="s">"d"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
829 | 279 | <span class="s">"doxygen"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
830 | 280 | <span class="s">"eiffel"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> | ||
831 | 281 | <span class="s">"elisp"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
832 | 282 | <span class="s">"erlang"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> | ||
833 | 283 | <span class="s">"factor"</span> <span class="p">:</span> <span class="s">"! ( )"</span><span class="p">,</span> | ||
834 | 284 | <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 | 285 | <span class="s">"fortran"</span> <span class="p">:</span> <span class="s">"C"</span><span class="p">,</span> | ||
836 | 286 | <span class="s">"fortran90"</span> <span class="p">:</span> <span class="s">"!"</span><span class="p">,</span> | ||
837 | 287 | <span class="s">"foxpro"</span> <span class="p">:</span> <span class="s">"&&"</span><span class="p">,</span> | ||
838 | 288 | <span class="s">"gettext"</span> <span class="p">:</span> <span class="s">"# "</span><span class="p">,</span> | ||
839 | 289 | <span class="s">"groovy"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
840 | 290 | <span class="s">"haskell"</span> <span class="p">:</span> <span class="s">"--_ {-_ _-}"</span><span class="p">,</span> | ||
841 | 291 | <span class="s">"haxe"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
842 | 292 | <span class="s">"html"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
843 | 293 | <span class="s">"i4gl"</span> <span class="p">:</span> <span class="s">"-- { }"</span><span class="p">,</span> | ||
844 | 294 | <span class="s">"icon"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
845 | 295 | <span class="s">"idl"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
846 | 296 | <span class="s">"inform"</span> <span class="p">:</span> <span class="s">"!"</span><span class="p">,</span> | ||
847 | 297 | <span class="s">"ini"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
848 | 298 | <span class="s">"inno_setup"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
849 | 299 | <span class="s">"interlis"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> | ||
850 | 300 | <span class="s">"io"</span> <span class="p">:</span> <span class="s">"// */"</span><span class="p">,</span> | ||
851 | 301 | <span class="s">"java"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
852 | 302 | <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 | 303 | <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 | 304 | <span class="s">"jhtml"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
855 | 305 | <span class="s">"jmk"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
856 | 306 | <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 | 307 | <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 | 308 | <span class="s">"latex"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> | ||
859 | 309 | <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 | 310 | <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 | 311 | <span class="s">"lotos"</span> <span class="p">:</span> <span class="s">"(* *)"</span><span class="p">,</span> | ||
862 | 312 | <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 | 313 | <span class="s">"mail"</span> <span class="p">:</span> <span class="s">">"</span><span class="p">,</span> | ||
864 | 314 | <span class="s">"makefile"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
865 | 315 | <span class="s">"maple"</span> <span class="p">:</span> <span class="s">"//"</span><span class="p">,</span> | ||
866 | 316 | <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 | 317 | <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 | 318 | <span class="s">"ml"</span> <span class="p">:</span> <span class="s">"(* *)"</span><span class="p">,</span> | ||
869 | 319 | <span class="s">"modula3"</span> <span class="p">:</span> <span class="s">"(* *)"</span><span class="p">,</span> | ||
870 | 320 | <span class="s">"moin"</span> <span class="p">:</span> <span class="s">"##"</span><span class="p">,</span> | ||
871 | 321 | <span class="s">"mqsc"</span> <span class="p">:</span> <span class="s">"*"</span><span class="p">,</span> | ||
872 | 322 | <span class="s">"netrexx"</span> <span class="p">:</span> <span class="s">"-- /* */"</span><span class="p">,</span> | ||
873 | 323 | <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 | 324 | <span class="s">"nqc"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
875 | 325 | <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 | 326 | <span class="s">"nsis2"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
877 | 327 | <span class="s">"objective_c"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
878 | 328 | <span class="s">"objectrexx"</span> <span class="p">:</span> <span class="s">"-- /* */"</span><span class="p">,</span> | ||
879 | 329 | <span class="s">"occam"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> | ||
880 | 330 | <span class="s">"omnimark"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
881 | 331 | <span class="s">"pascal"</span> <span class="p">:</span> <span class="s">"// { }"</span><span class="p">,</span> | ||
882 | 332 | <span class="s">"perl"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
883 | 333 | <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 | 334 | <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 | 335 | <span class="s">"pike"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
886 | 336 | <span class="s">"pl1"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> | ||
887 | 337 | <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 | 338 | <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 | 339 | <span class="s">"pop11"</span> <span class="p">:</span> <span class="s">";;; /* */"</span><span class="p">,</span> | ||
890 | 340 | <span class="s">"postscript"</span> <span class="p">:</span> <span class="s">"%"</span><span class="p">,</span> | ||
891 | 341 | <span class="s">"povray"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
892 | 342 | <span class="s">"powerdynamo"</span> <span class="p">:</span> <span class="s">"// <!-- -->"</span><span class="p">,</span> | ||
893 | 343 | <span class="s">"prolog"</span> <span class="p">:</span> <span class="s">"% /* */"</span><span class="p">,</span> | ||
894 | 344 | <span class="s">"psp"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
895 | 345 | <span class="s">"ptl"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
896 | 346 | <span class="s">"pvwave"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
897 | 347 | <span class="s">"pyrex"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
898 | 348 | <span class="s">"python"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
899 | 349 | <span class="s">"r"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
900 | 350 | <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 | 351 | <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 | 352 | <span class="s">"redcode"</span> <span class="p">:</span> <span class="s">";"</span><span class="p">,</span> | ||
903 | 353 | <span class="s">"rest"</span> <span class="p">:</span> <span class="s">".._"</span><span class="p">,</span> | ||
904 | 354 | <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 | 355 | <span class="s">"rib"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
906 | 356 | <span class="s">"rpmspec"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
907 | 357 | <span class="s">"rst"</span> <span class="p">:</span> <span class="s">".._"</span><span class="p">,</span> | ||
908 | 358 | <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 | 359 | <span class="s">"rview"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
910 | 360 | <span class="s">"sas"</span> <span class="p">:</span> <span class="s">"* /* */"</span><span class="p">,</span> | ||
911 | 361 | <span class="s">"scala"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
912 | 362 | <span class="s">"scheme"</span> <span class="p">:</span> <span class="s">"; #| |#"</span><span class="p">,</span> | ||
913 | 363 | <span class="s">"sdl_pr"</span> <span class="p">:</span> <span class="s">"/* */"</span><span class="p">,</span> | ||
914 | 364 | <span class="s">"sgml"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
915 | 365 | <span class="s">"shell"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> <span class="c"># shell scripts</span> | ||
916 | 366 | <span class="s">"shellscript"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
917 | 367 | <span class="s">"shtml"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
918 | 368 | <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 | 369 | <span class="s">"smi_mib"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> | ||
920 | 370 | <span class="s">"splus"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
921 | 371 | <span class="s">"sqr"</span> <span class="p">:</span> <span class="s">"!"</span><span class="p">,</span> | ||
922 | 372 | <span class="s">"squidconf"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
923 | 373 | <span class="s">"ssharp"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
924 | 374 | <span class="s">"swig"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
925 | 375 | <span class="s">"tcl"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
926 | 376 | <span class="s">"tcltk"</span> <span class="p">:</span> <span class="s">"#"</span><span class="p">,</span> | ||
927 | 377 | <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 | 378 | <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 | 379 | <span class="s">"texinfo"</span> <span class="p">:</span> <span class="s">"@c"</span><span class="p">,</span> | ||
930 | 380 | <span class="s">"tpl"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
931 | 381 | <span class="s">"tsql"</span> <span class="p">:</span> <span class="s">"-- /* */"</span><span class="p">,</span> | ||
932 | 382 | <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 | 383 | <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 | 384 | <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 | 385 | <span class="s">"uscript"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
936 | 386 | <span class="s">"vbscript"</span> <span class="p">:</span> <span class="s">"'"</span><span class="p">,</span> | ||
937 | 387 | <span class="s">"velocity"</span> <span class="p">:</span> <span class="s">"## #* *#"</span><span class="p">,</span> | ||
938 | 388 | <span class="s">"verilog"</span> <span class="p">:</span> <span class="s">"// /* */"</span><span class="p">,</span> | ||
939 | 389 | <span class="s">"vhdl"</span> <span class="p">:</span> <span class="s">"--"</span><span class="p">,</span> | ||
940 | 390 | <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 | 391 | <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 | 392 | <span class="s">"xml"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
943 | 393 | <span class="s">"xsl"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
944 | 394 | <span class="s">"xslt"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
945 | 395 | <span class="s">"zpt"</span> <span class="p">:</span> <span class="s">"<!-- -->"</span><span class="p">,</span> | ||
946 | 396 | |||
947 | 397 | <span class="c"># These aren't real languages, or have no delims...</span> | ||
948 | 398 | <span class="c"># "cvs_commit" : "",</span> | ||
949 | 399 | <span class="c"># "dsssl" : "; <!-- -->",</span> | ||
950 | 400 | <span class="c"># "embperl" : "<!-- -->", # Internal colorizing state.</span> | ||
951 | 401 | <span class="c"># "freemarker" : "",</span> | ||
952 | 402 | <span class="c"># "hex" : "",</span> | ||
953 | 403 | <span class="c"># "jcl" : "",</span> | ||
954 | 404 | <span class="c"># "patch" : "",</span> | ||
955 | 405 | <span class="c"># "phpsection" : "<!-- -->", # Internal colorizing state.</span> | ||
956 | 406 | <span class="c"># "props" : "#", # Unknown language.</span> | ||
957 | 407 | <span class="c"># "pseudoplain" : "",</span> | ||
958 | 408 | <span class="c"># "relax_ng_compact" : "#", # An xml schema.</span> | ||
959 | 409 | <span class="c"># "rtf" : "",</span> | ||
960 | 410 | <span class="c"># "svn_commit" : "",</span> | ||
961 | 411 | <span class="p">}</span> | ||
962 | 412 | <span class="c">#@+node:ekr.20120522160137.9910: *4* app.define_language_extension_dict</span></div> | ||
963 | 413 | <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 | 414 | |||
965 | 415 | <span class="c"># Used only by c.getOpenWithExt.</span> | ||
966 | 416 | |||
967 | 417 | <span class="c"># Keys are languages, values are extensions.</span> | ||
968 | 418 | <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 | 419 | <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 | 420 | <span class="s">"ada"</span> <span class="p">:</span> <span class="s">"ada"</span><span class="p">,</span> | ||
971 | 421 | <span class="s">"ada95"</span> <span class="p">:</span> <span class="s">"ada"</span><span class="p">,</span> | ||
972 | 422 | <span class="s">"ahk"</span> <span class="p">:</span> <span class="s">"ahk"</span><span class="p">,</span> | ||
973 | 423 | <span class="s">"antlr"</span> <span class="p">:</span> <span class="s">"g"</span><span class="p">,</span> | ||
974 | 424 | <span class="s">"apacheconf"</span> <span class="p">:</span> <span class="s">"conf"</span><span class="p">,</span> | ||
975 | 425 | <span class="s">"apdl"</span> <span class="p">:</span> <span class="s">"apdl"</span><span class="p">,</span> | ||
976 | 426 | <span class="s">"applescript"</span> <span class="p">:</span> <span class="s">"scpt"</span><span class="p">,</span> | ||
977 | 427 | <span class="s">"asp"</span> <span class="p">:</span> <span class="s">"asp"</span><span class="p">,</span> | ||
978 | 428 | <span class="s">"aspect_j"</span> <span class="p">:</span> <span class="s">"aj"</span><span class="p">,</span> | ||
979 | 429 | <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 | 430 | <span class="s">"awk"</span> <span class="p">:</span> <span class="s">"awk"</span><span class="p">,</span> | ||
981 | 431 | <span class="s">"b"</span> <span class="p">:</span> <span class="s">"b"</span><span class="p">,</span> | ||
982 | 432 | <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 | 433 | <span class="s">"bbj"</span> <span class="p">:</span> <span class="s">"bbj"</span><span class="p">,</span> | ||
984 | 434 | <span class="s">"bcel"</span> <span class="p">:</span> <span class="s">"bcel"</span><span class="p">,</span> | ||
985 | 435 | <span class="s">"bibtex"</span> <span class="p">:</span> <span class="s">"bib"</span><span class="p">,</span> | ||
986 | 436 | <span class="s">"c"</span> <span class="p">:</span> <span class="s">"c"</span><span class="p">,</span> | ||
987 | 437 | <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 | 438 | <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 | 439 | <span class="s">"coldfusion"</span> <span class="p">:</span> <span class="s">"cfm"</span><span class="p">,</span> | ||
990 | 440 | <span class="s">"config"</span> <span class="p">:</span> <span class="s">"cfg"</span><span class="p">,</span> | ||
991 | 441 | <span class="s">"cplusplus"</span> <span class="p">:</span> <span class="s">"c++"</span><span class="p">,</span> | ||
992 | 442 | <span class="s">"cpp"</span> <span class="p">:</span> <span class="s">"cpp"</span><span class="p">,</span> | ||
993 | 443 | <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 | 444 | <span class="s">"cweb"</span> <span class="p">:</span> <span class="s">"w"</span><span class="p">,</span> | ||
995 | 445 | <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 | 446 | <span class="s">"d"</span> <span class="p">:</span> <span class="s">"d"</span><span class="p">,</span> | ||
997 | 447 | <span class="s">"eiffel"</span> <span class="p">:</span> <span class="s">"e"</span><span class="p">,</span> | ||
998 | 448 | <span class="s">"elisp"</span> <span class="p">:</span> <span class="s">"el"</span><span class="p">,</span> | ||
999 | 449 | <span class="s">"erlang"</span> <span class="p">:</span> <span class="s">"erl"</span><span class="p">,</span> | ||
1000 | 450 | <span class="s">"factor"</span> <span class="p">:</span> <span class="s">"factor"</span><span class="p">,</span> | ||
1001 | 451 | <span class="s">"forth"</span> <span class="p">:</span> <span class="s">"forth"</span><span class="p">,</span> | ||
1002 | 452 | <span class="s">"fortran"</span> <span class="p">:</span> <span class="s">"f"</span><span class="p">,</span> | ||
1003 | 453 | <span class="s">"fortran90"</span> <span class="p">:</span> <span class="s">"f90"</span><span class="p">,</span> | ||
1004 | 454 | <span class="s">"foxpro"</span> <span class="p">:</span> <span class="s">"prg"</span><span class="p">,</span> | ||
1005 | 455 | <span class="s">"gettext"</span> <span class="p">:</span> <span class="s">"po"</span><span class="p">,</span> | ||
1006 | 456 | <span class="s">"groovy"</span> <span class="p">:</span> <span class="s">"groovy"</span><span class="p">,</span> | ||
1007 | 457 | <span class="s">"haskell"</span> <span class="p">:</span> <span class="s">"hs"</span><span class="p">,</span> | ||
1008 | 458 | <span class="s">"haxe"</span> <span class="p">:</span> <span class="s">"hx"</span><span class="p">,</span> | ||
1009 | 459 | <span class="s">"html"</span> <span class="p">:</span> <span class="s">"html"</span><span class="p">,</span> | ||
1010 | 460 | <span class="s">"i4gl"</span> <span class="p">:</span> <span class="s">"i4gl"</span><span class="p">,</span> | ||
1011 | 461 | <span class="s">"icon"</span> <span class="p">:</span> <span class="s">"icn"</span><span class="p">,</span> | ||
1012 | 462 | <span class="s">"idl"</span> <span class="p">:</span> <span class="s">"idl"</span><span class="p">,</span> | ||
1013 | 463 | <span class="s">"inform"</span> <span class="p">:</span> <span class="s">"inf"</span><span class="p">,</span> | ||
1014 | 464 | <span class="s">"ini"</span> <span class="p">:</span> <span class="s">"ini"</span><span class="p">,</span> | ||
1015 | 465 | <span class="s">"inno_setup"</span> <span class="p">:</span> <span class="s">"iss"</span><span class="p">,</span> | ||
1016 | 466 | <span class="s">"io"</span> <span class="p">:</span> <span class="s">"io"</span><span class="p">,</span> | ||
1017 | 467 | <span class="s">"java"</span> <span class="p">:</span> <span class="s">"java"</span><span class="p">,</span> | ||
1018 | 468 | <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 | 469 | <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 | 470 | <span class="s">"jhtml"</span> <span class="p">:</span> <span class="s">"jhtml"</span><span class="p">,</span> | ||
1021 | 471 | <span class="s">"jmk"</span> <span class="p">:</span> <span class="s">"jmk"</span><span class="p">,</span> | ||
1022 | 472 | <span class="s">"jsp"</span> <span class="p">:</span> <span class="s">"jsp"</span><span class="p">,</span> | ||
1023 | 473 | <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 | 474 | <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 | 475 | <span class="s">"lilypond"</span> <span class="p">:</span> <span class="s">"ly"</span><span class="p">,</span> | ||
1026 | 476 | <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 | 477 | <span class="s">"mail"</span> <span class="p">:</span> <span class="s">"eml"</span><span class="p">,</span> | ||
1028 | 478 | <span class="s">"makefile"</span> <span class="p">:</span> <span class="s">"mak"</span><span class="p">,</span> | ||
1029 | 479 | <span class="s">"maple"</span> <span class="p">:</span> <span class="s">"mpl"</span><span class="p">,</span> | ||
1030 | 480 | <span class="s">"matlab"</span> <span class="p">:</span> <span class="s">"m"</span><span class="p">,</span> | ||
1031 | 481 | <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 | 482 | <span class="s">"ml"</span> <span class="p">:</span> <span class="s">"ml"</span><span class="p">,</span> | ||
1033 | 483 | <span class="s">"modula3"</span> <span class="p">:</span> <span class="s">"mod"</span><span class="p">,</span> | ||
1034 | 484 | <span class="s">"moin"</span> <span class="p">:</span> <span class="s">"wiki"</span><span class="p">,</span> | ||
1035 | 485 | <span class="s">"mqsc"</span> <span class="p">:</span> <span class="s">"mqsc"</span><span class="p">,</span> | ||
1036 | 486 | <span class="s">"noweb"</span> <span class="p">:</span> <span class="s">"nw"</span><span class="p">,</span> | ||
1037 | 487 | <span class="s">"nqc"</span> <span class="p">:</span> <span class="s">"nqc"</span><span class="p">,</span> | ||
1038 | 488 | <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 | 489 | <span class="s">"nsis2"</span> <span class="p">:</span> <span class="s">"nsi"</span><span class="p">,</span> | ||
1040 | 490 | <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 | 491 | <span class="s">"objectrexx"</span> <span class="p">:</span> <span class="s">"rex"</span><span class="p">,</span> | ||
1042 | 492 | <span class="s">"occam"</span> <span class="p">:</span> <span class="s">"occ"</span><span class="p">,</span> | ||
1043 | 493 | <span class="s">"omnimark"</span> <span class="p">:</span> <span class="s">"xom"</span><span class="p">,</span> | ||
1044 | 494 | <span class="s">"pascal"</span> <span class="p">:</span> <span class="s">"p"</span><span class="p">,</span> | ||
1045 | 495 | <span class="s">"perl"</span> <span class="p">:</span> <span class="s">"pl"</span><span class="p">,</span> | ||
1046 | 496 | <span class="s">"perlpod"</span> <span class="p">:</span> <span class="s">"pod"</span><span class="p">,</span> | ||
1047 | 497 | <span class="s">"php"</span> <span class="p">:</span> <span class="s">"php"</span><span class="p">,</span> | ||
1048 | 498 | <span class="s">"pike"</span> <span class="p">:</span> <span class="s">"pike"</span><span class="p">,</span> | ||
1049 | 499 | <span class="s">"pl1"</span> <span class="p">:</span> <span class="s">"pl1"</span><span class="p">,</span> | ||
1050 | 500 | <span class="s">"plain"</span> <span class="p">:</span> <span class="s">"txt"</span><span class="p">,</span> | ||
1051 | 501 | <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 | 502 | <span class="c"># "pop11" : "p", # Conflicts with pascall.</span> | ||
1053 | 503 | <span class="s">"postscript"</span> <span class="p">:</span> <span class="s">"ps"</span><span class="p">,</span> | ||
1054 | 504 | <span class="s">"povray"</span> <span class="p">:</span> <span class="s">"pov"</span><span class="p">,</span> | ||
1055 | 505 | <span class="s">"prolog"</span> <span class="p">:</span> <span class="s">"pro"</span><span class="p">,</span> | ||
1056 | 506 | <span class="s">"psp"</span> <span class="p">:</span> <span class="s">"psp"</span><span class="p">,</span> | ||
1057 | 507 | <span class="s">"ptl"</span> <span class="p">:</span> <span class="s">"ptl"</span><span class="p">,</span> | ||
1058 | 508 | <span class="s">"pyrex"</span> <span class="p">:</span> <span class="s">"pyx"</span><span class="p">,</span> | ||
1059 | 509 | <span class="s">"python"</span> <span class="p">:</span> <span class="s">"py"</span><span class="p">,</span> | ||
1060 | 510 | <span class="s">"r"</span> <span class="p">:</span> <span class="s">"r"</span><span class="p">,</span> | ||
1061 | 511 | <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 | 512 | <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 | 513 | <span class="s">"rhtml"</span> <span class="p">:</span> <span class="s">"rhtml"</span><span class="p">,</span> | ||
1064 | 514 | <span class="s">"rib"</span> <span class="p">:</span> <span class="s">"rib"</span><span class="p">,</span> | ||
1065 | 515 | <span class="s">"rst"</span> <span class="p">:</span> <span class="s">"rest"</span><span class="p">,</span> | ||
1066 | 516 | <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 | 517 | <span class="s">"sas"</span> <span class="p">:</span> <span class="s">"sas"</span><span class="p">,</span> | ||
1068 | 518 | <span class="s">"scala"</span> <span class="p">:</span> <span class="s">"scala"</span><span class="p">,</span> | ||
1069 | 519 | <span class="s">"scheme"</span> <span class="p">:</span> <span class="s">"scm"</span><span class="p">,</span> | ||
1070 | 520 | <span class="s">"sgml"</span> <span class="p">:</span> <span class="s">"sgml"</span><span class="p">,</span> | ||
1071 | 521 | <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 | 522 | <span class="s">"shellscript"</span> <span class="p">:</span> <span class="s">"sh"</span><span class="p">,</span> | ||
1073 | 523 | <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 | 524 | <span class="s">"smalltalk"</span> <span class="p">:</span> <span class="s">"sm"</span><span class="p">,</span> | ||
1075 | 525 | <span class="s">"splus"</span> <span class="p">:</span> <span class="s">"splus"</span><span class="p">,</span> | ||
1076 | 526 | <span class="s">"sqr"</span> <span class="p">:</span> <span class="s">"sqr"</span><span class="p">,</span> | ||
1077 | 527 | <span class="s">"ssharp"</span> <span class="p">:</span> <span class="s">"ss"</span><span class="p">,</span> | ||
1078 | 528 | <span class="s">"swig"</span> <span class="p">:</span> <span class="s">"i"</span><span class="p">,</span> | ||
1079 | 529 | <span class="s">"tcl"</span> <span class="p">:</span> <span class="s">"tcl"</span><span class="p">,</span> | ||
1080 | 530 | <span class="s">"tcltk"</span> <span class="p">:</span> <span class="s">"tcl"</span><span class="p">,</span> | ||
1081 | 531 | <span class="s">"tex"</span> <span class="p">:</span> <span class="s">"tex"</span><span class="p">,</span> | ||
1082 | 532 | <span class="s">"texinfo"</span> <span class="p">:</span> <span class="s">"info"</span><span class="p">,</span> | ||
1083 | 533 | <span class="s">"text"</span> <span class="p">:</span> <span class="s">"txt"</span><span class="p">,</span> | ||
1084 | 534 | <span class="s">"tpl"</span> <span class="p">:</span> <span class="s">"tpl"</span><span class="p">,</span> | ||
1085 | 535 | <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 | 536 | <span class="s">"typescript"</span> <span class="p">:</span> <span class="s">"ts"</span><span class="p">,</span> | ||
1087 | 537 | <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 | 538 | <span class="s">"uscript"</span> <span class="p">:</span> <span class="s">"uc"</span><span class="p">,</span> | ||
1089 | 539 | <span class="s">"vbscript"</span> <span class="p">:</span> <span class="s">"vbs"</span><span class="p">,</span> | ||
1090 | 540 | <span class="s">"velocity"</span> <span class="p">:</span> <span class="s">"vtl"</span><span class="p">,</span> | ||
1091 | 541 | <span class="s">"verilog"</span> <span class="p">:</span> <span class="s">"v"</span><span class="p">,</span> | ||
1092 | 542 | <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 | 543 | <span class="s">"vim"</span> <span class="p">:</span> <span class="s">"vim"</span><span class="p">,</span> | ||
1094 | 544 | <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 | 545 | <span class="s">"xml"</span> <span class="p">:</span> <span class="s">"xml"</span><span class="p">,</span> | ||
1096 | 546 | <span class="s">"xsl"</span> <span class="p">:</span> <span class="s">"xsl"</span><span class="p">,</span> | ||
1097 | 547 | <span class="s">"xslt"</span> <span class="p">:</span> <span class="s">"xsl"</span><span class="p">,</span> | ||
1098 | 548 | <span class="s">"zpt"</span> <span class="p">:</span> <span class="s">"zpt"</span><span class="p">,</span> | ||
1099 | 549 | <span class="p">}</span> | ||
1100 | 550 | |||
1101 | 551 | <span class="c"># These aren't real languages, or have no delims...</span> | ||
1102 | 552 | <span class="c"># cvs_commit, dsssl, embperl, freemarker, hex, jcl,</span> | ||
1103 | 553 | <span class="c"># patch, phpsection, progress, props, pseudoplain,</span> | ||
1104 | 554 | <span class="c"># relax_ng_compact, rtf, svn_commit.</span> | ||
1105 | 555 | |||
1106 | 556 | <span class="c"># These have extensions which conflict with other languages.</span> | ||
1107 | 557 | <span class="c"># assembly_macro32: .asm or .a</span> | ||
1108 | 558 | <span class="c"># assembly_mcs51: .asm or .a</span> | ||
1109 | 559 | <span class="c"># assembly_parrot: .asm or .a</span> | ||
1110 | 560 | <span class="c"># assembly_r2000: .asm or .a</span> | ||
1111 | 561 | <span class="c"># assembly_x86: .asm or .a</span> | ||
1112 | 562 | <span class="c"># squidconf: .conf</span> | ||
1113 | 563 | <span class="c"># rpmspec: .rpm</span> | ||
1114 | 564 | <span class="c">#@+node:ekr.20120522160137.9911: *4* app.define_extension_dict</span></div> | ||
1115 | 565 | <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 | 566 | |||
1117 | 567 | <span class="c"># Keys are extensions, values are languages</span> | ||
1118 | 568 | <span class="bp">self</span><span class="o">.</span><span class="n">extension_dict</span> <span class="o">=</span> <span class="p">{</span> | ||
1119 | 569 | <span class="c"># "ada": "ada",</span> | ||
1120 | 570 | <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 | 571 | <span class="s">"ahk"</span><span class="p">:</span> <span class="s">"autohotkey"</span><span class="p">,</span> | ||
1122 | 572 | <span class="s">"aj"</span><span class="p">:</span> <span class="s">"aspect_j"</span><span class="p">,</span> | ||
1123 | 573 | <span class="s">"apdl"</span><span class="p">:</span> <span class="s">"apdl"</span><span class="p">,</span> | ||
1124 | 574 | <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 | 575 | <span class="s">"asp"</span><span class="p">:</span> <span class="s">"asp"</span><span class="p">,</span> | ||
1126 | 576 | <span class="s">"awk"</span><span class="p">:</span> <span class="s">"awk"</span><span class="p">,</span> | ||
1127 | 577 | <span class="s">"b"</span><span class="p">:</span> <span class="s">"b"</span><span class="p">,</span> | ||
1128 | 578 | <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 | 579 | <span class="s">"bat"</span><span class="p">:</span> <span class="s">"batch"</span><span class="p">,</span> | ||
1130 | 580 | <span class="s">"bbj"</span><span class="p">:</span> <span class="s">"bbj"</span><span class="p">,</span> | ||
1131 | 581 | <span class="s">"bcel"</span><span class="p">:</span> <span class="s">"bcel"</span><span class="p">,</span> | ||
1132 | 582 | <span class="s">"bib"</span><span class="p">:</span> <span class="s">"bibtex"</span><span class="p">,</span> | ||
1133 | 583 | <span class="s">"c"</span><span class="p">:</span> <span class="s">"c"</span><span class="p">,</span> | ||
1134 | 584 | <span class="s">"c++"</span><span class="p">:</span> <span class="s">"cplusplus"</span><span class="p">,</span> | ||
1135 | 585 | <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 | 586 | <span class="s">"cfg"</span><span class="p">:</span> <span class="s">"config"</span><span class="p">,</span> | ||
1137 | 587 | <span class="s">"cfm"</span><span class="p">:</span> <span class="s">"coldfusion"</span><span class="p">,</span> | ||
1138 | 588 | <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 | 589 | <span class="s">"conf"</span><span class="p">:</span> <span class="s">"apacheconf"</span><span class="p">,</span> | ||
1140 | 590 | <span class="s">"cpp"</span><span class="p">:</span> <span class="s">"cpp"</span><span class="p">,</span> | ||
1141 | 591 | <span class="s">"css"</span><span class="p">:</span> <span class="s">"css"</span><span class="p">,</span> | ||
1142 | 592 | <span class="s">"d"</span><span class="p">:</span> <span class="s">"d"</span><span class="p">,</span> | ||
1143 | 593 | <span class="s">"e"</span><span class="p">:</span> <span class="s">"eiffel"</span><span class="p">,</span> | ||
1144 | 594 | <span class="s">"el"</span><span class="p">:</span> <span class="s">"elisp"</span><span class="p">,</span> | ||
1145 | 595 | <span class="s">"eml"</span><span class="p">:</span> <span class="s">"mail"</span><span class="p">,</span> | ||
1146 | 596 | <span class="s">"erl"</span><span class="p">:</span> <span class="s">"erlang"</span><span class="p">,</span> | ||
1147 | 597 | <span class="s">"f"</span><span class="p">:</span> <span class="s">"fortran"</span><span class="p">,</span> | ||
1148 | 598 | <span class="s">"f90"</span><span class="p">:</span> <span class="s">"fortran90"</span><span class="p">,</span> | ||
1149 | 599 | <span class="s">"factor"</span><span class="p">:</span> <span class="s">"factor"</span><span class="p">,</span> | ||
1150 | 600 | <span class="s">"forth"</span><span class="p">:</span> <span class="s">"forth"</span><span class="p">,</span> | ||
1151 | 601 | <span class="s">"g"</span><span class="p">:</span> <span class="s">"antlr"</span><span class="p">,</span> | ||
1152 | 602 | <span class="s">"groovy"</span><span class="p">:</span> <span class="s">"groovy"</span><span class="p">,</span> | ||
1153 | 603 | <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 | 604 | <span class="s">"hs"</span><span class="p">:</span> <span class="s">"haskell"</span><span class="p">,</span> | ||
1155 | 605 | <span class="s">"html"</span><span class="p">:</span> <span class="s">"html"</span><span class="p">,</span> | ||
1156 | 606 | <span class="s">"hx"</span><span class="p">:</span> <span class="s">"haxe"</span><span class="p">,</span> | ||
1157 | 607 | <span class="s">"i"</span><span class="p">:</span> <span class="s">"swig"</span><span class="p">,</span> | ||
1158 | 608 | <span class="s">"i4gl"</span><span class="p">:</span> <span class="s">"i4gl"</span><span class="p">,</span> | ||
1159 | 609 | <span class="s">"icn"</span><span class="p">:</span> <span class="s">"icon"</span><span class="p">,</span> | ||
1160 | 610 | <span class="s">"idl"</span><span class="p">:</span> <span class="s">"idl"</span><span class="p">,</span> | ||
1161 | 611 | <span class="s">"inf"</span><span class="p">:</span> <span class="s">"inform"</span><span class="p">,</span> | ||
1162 | 612 | <span class="s">"info"</span><span class="p">:</span> <span class="s">"texinfo"</span><span class="p">,</span> | ||
1163 | 613 | <span class="s">"ini"</span><span class="p">:</span> <span class="s">"ini"</span><span class="p">,</span> | ||
1164 | 614 | <span class="s">"io"</span><span class="p">:</span> <span class="s">"io"</span><span class="p">,</span> | ||
1165 | 615 | <span class="s">"iss"</span><span class="p">:</span> <span class="s">"inno_setup"</span><span class="p">,</span> | ||
1166 | 616 | <span class="s">"java"</span><span class="p">:</span> <span class="s">"java"</span><span class="p">,</span> | ||
1167 | 617 | <span class="s">"jhtml"</span><span class="p">:</span> <span class="s">"jhtml"</span><span class="p">,</span> | ||
1168 | 618 | <span class="s">"jmk"</span><span class="p">:</span> <span class="s">"jmk"</span><span class="p">,</span> | ||
1169 | 619 | <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 | 620 | <span class="s">"jsp"</span><span class="p">:</span> <span class="s">"javaserverpage"</span><span class="p">,</span> | ||
1171 | 621 | <span class="c"># "jsp": "jsp",</span> | ||
1172 | 622 | <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 | 623 | <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 | 624 | <span class="s">"ly"</span><span class="p">:</span> <span class="s">"lilypond"</span><span class="p">,</span> | ||
1175 | 625 | <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 | 626 | <span class="s">"mak"</span><span class="p">:</span> <span class="s">"makefile"</span><span class="p">,</span> | ||
1177 | 627 | <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 | 628 | <span class="s">"ml"</span><span class="p">:</span> <span class="s">"ml"</span><span class="p">,</span> | ||
1179 | 629 | <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 | 630 | <span class="s">"mod"</span><span class="p">:</span> <span class="s">"modula3"</span><span class="p">,</span> | ||
1181 | 631 | <span class="s">"mpl"</span><span class="p">:</span> <span class="s">"maple"</span><span class="p">,</span> | ||
1182 | 632 | <span class="s">"mqsc"</span><span class="p">:</span> <span class="s">"mqsc"</span><span class="p">,</span> | ||
1183 | 633 | <span class="s">"nqc"</span><span class="p">:</span> <span class="s">"nqc"</span><span class="p">,</span> | ||
1184 | 634 | <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 | 635 | <span class="c"># "nsi": "nsis2",</span> | ||
1186 | 636 | <span class="s">"nw"</span><span class="p">:</span> <span class="s">"noweb"</span><span class="p">,</span> | ||
1187 | 637 | <span class="s">"occ"</span><span class="p">:</span> <span class="s">"occam"</span><span class="p">,</span> | ||
1188 | 638 | <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 | 639 | <span class="s">"p"</span><span class="p">:</span> <span class="s">"pascal"</span><span class="p">,</span> | ||
1190 | 640 | <span class="c"># "p": "pop11", # Conflicts with pascal.</span> | ||
1191 | 641 | <span class="s">"php"</span><span class="p">:</span> <span class="s">"php"</span><span class="p">,</span> | ||
1192 | 642 | <span class="s">"pike"</span><span class="p">:</span> <span class="s">"pike"</span><span class="p">,</span> | ||
1193 | 643 | <span class="s">"pl"</span><span class="p">:</span> <span class="s">"perl"</span><span class="p">,</span> | ||
1194 | 644 | <span class="s">"pl1"</span><span class="p">:</span> <span class="s">"pl1"</span><span class="p">,</span> | ||
1195 | 645 | <span class="s">"po"</span><span class="p">:</span> <span class="s">"gettext"</span><span class="p">,</span> | ||
1196 | 646 | <span class="s">"pod"</span><span class="p">:</span> <span class="s">"perlpod"</span><span class="p">,</span> | ||
1197 | 647 | <span class="s">"pov"</span><span class="p">:</span> <span class="s">"povray"</span><span class="p">,</span> | ||
1198 | 648 | <span class="s">"prg"</span><span class="p">:</span> <span class="s">"foxpro"</span><span class="p">,</span> | ||
1199 | 649 | <span class="s">"pro"</span><span class="p">:</span> <span class="s">"prolog"</span><span class="p">,</span> | ||
1200 | 650 | <span class="s">"ps"</span><span class="p">:</span> <span class="s">"postscript"</span><span class="p">,</span> | ||
1201 | 651 | <span class="s">"psp"</span><span class="p">:</span> <span class="s">"psp"</span><span class="p">,</span> | ||
1202 | 652 | <span class="s">"ptl"</span><span class="p">:</span> <span class="s">"ptl"</span><span class="p">,</span> | ||
1203 | 653 | <span class="s">"py"</span><span class="p">:</span> <span class="s">"python"</span><span class="p">,</span> | ||
1204 | 654 | <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 | 655 | <span class="c"># "pyx": "pyrex",</span> | ||
1206 | 656 | <span class="c"># "r": "r", # modes/r.py does not exist.</span> | ||
1207 | 657 | <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 | 658 | <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 | 659 | <span class="s">"rest"</span><span class="p">:</span> <span class="s">"rst"</span><span class="p">,</span> | ||
1210 | 660 | <span class="s">"rex"</span><span class="p">:</span> <span class="s">"objectrexx"</span><span class="p">,</span> | ||
1211 | 661 | <span class="s">"rhtml"</span><span class="p">:</span> <span class="s">"rhtml"</span><span class="p">,</span> | ||
1212 | 662 | <span class="s">"rib"</span><span class="p">:</span> <span class="s">"rib"</span><span class="p">,</span> | ||
1213 | 663 | <span class="s">"sas"</span><span class="p">:</span> <span class="s">"sas"</span><span class="p">,</span> | ||
1214 | 664 | <span class="s">"scala"</span><span class="p">:</span> <span class="s">"scala"</span><span class="p">,</span> | ||
1215 | 665 | <span class="s">"scm"</span><span class="p">:</span> <span class="s">"scheme"</span><span class="p">,</span> | ||
1216 | 666 | <span class="s">"scpt"</span><span class="p">:</span> <span class="s">"applescript"</span><span class="p">,</span> | ||
1217 | 667 | <span class="s">"sgml"</span><span class="p">:</span> <span class="s">"sgml"</span><span class="p">,</span> | ||
1218 | 668 | <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 | 669 | <span class="c"># "sh": "shellscript",</span> | ||
1220 | 670 | <span class="s">"shtml"</span><span class="p">:</span> <span class="s">"shtml"</span><span class="p">,</span> | ||
1221 | 671 | <span class="s">"sm"</span><span class="p">:</span> <span class="s">"smalltalk"</span><span class="p">,</span> | ||
1222 | 672 | <span class="s">"splus"</span><span class="p">:</span> <span class="s">"splus"</span><span class="p">,</span> | ||
1223 | 673 | <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 | 674 | <span class="s">"sqr"</span><span class="p">:</span> <span class="s">"sqr"</span><span class="p">,</span> | ||
1225 | 675 | <span class="s">"ss"</span><span class="p">:</span> <span class="s">"ssharp"</span><span class="p">,</span> | ||
1226 | 676 | <span class="s">"ssi"</span><span class="p">:</span> <span class="s">"shtml"</span><span class="p">,</span> | ||
1227 | 677 | <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 | 678 | <span class="c"># "tcl": "tcltk",</span> | ||
1229 | 679 | <span class="s">"tex"</span><span class="p">:</span> <span class="s">"latex"</span><span class="p">,</span> | ||
1230 | 680 | <span class="c"># "tex": "tex",</span> | ||
1231 | 681 | <span class="s">"tpl"</span><span class="p">:</span> <span class="s">"tpl"</span><span class="p">,</span> | ||
1232 | 682 | <span class="s">"ts"</span><span class="p">:</span> <span class="s">"typescript"</span><span class="p">,</span> | ||
1233 | 683 | <span class="s">"txt"</span><span class="p">:</span> <span class="s">"plain"</span><span class="p">,</span> | ||
1234 | 684 | <span class="c"># "txt": "text",</span> | ||
1235 | 685 | <span class="c"># "txt": "unknown", # Set when @comment is seen.</span> | ||
1236 | 686 | <span class="s">"uc"</span><span class="p">:</span> <span class="s">"uscript"</span><span class="p">,</span> | ||
1237 | 687 | <span class="s">"v"</span><span class="p">:</span> <span class="s">"verilog"</span><span class="p">,</span> | ||
1238 | 688 | <span class="s">"vbs"</span><span class="p">:</span> <span class="s">"vbscript"</span><span class="p">,</span> | ||
1239 | 689 | <span class="s">"vhd"</span><span class="p">:</span> <span class="s">"vhdl"</span><span class="p">,</span> | ||
1240 | 690 | <span class="s">"vhdl"</span><span class="p">:</span> <span class="s">"vhdl"</span><span class="p">,</span> | ||
1241 | 691 | <span class="s">"vim"</span><span class="p">:</span> <span class="s">"vim"</span><span class="p">,</span> | ||
1242 | 692 | <span class="s">"vtl"</span><span class="p">:</span> <span class="s">"velocity"</span><span class="p">,</span> | ||
1243 | 693 | <span class="s">"w"</span><span class="p">:</span> <span class="s">"cweb"</span><span class="p">,</span> | ||
1244 | 694 | <span class="s">"wiki"</span><span class="p">:</span> <span class="s">"moin"</span><span class="p">,</span> | ||
1245 | 695 | <span class="s">"xml"</span><span class="p">:</span> <span class="s">"xml"</span><span class="p">,</span> | ||
1246 | 696 | <span class="s">"xom"</span><span class="p">:</span> <span class="s">"omnimark"</span><span class="p">,</span> | ||
1247 | 697 | <span class="s">"xsl"</span><span class="p">:</span> <span class="s">"xsl"</span><span class="p">,</span> | ||
1248 | 698 | <span class="s">"zpt"</span><span class="p">:</span> <span class="s">"zpt"</span><span class="p">,</span> | ||
1249 | 699 | <span class="p">}</span> | ||
1250 | 700 | |||
1251 | 701 | <span class="c"># These aren't real languages, or have no delims...</span> | ||
1252 | 702 | <span class="c"># cvs_commit, dsssl, embperl, freemarker, hex, jcl,</span> | ||
1253 | 703 | <span class="c"># patch, phpsection, progress, props, pseudoplain,</span> | ||
1254 | 704 | <span class="c"># relax_ng_compact, rtf, svn_commit.</span> | ||
1255 | 705 | |||
1256 | 706 | <span class="c"># These have extensions which conflict with other languages.</span> | ||
1257 | 707 | <span class="c"># assembly_macro32: .asm or .a</span> | ||
1258 | 708 | <span class="c"># assembly_mcs51: .asm or .a</span> | ||
1259 | 709 | <span class="c"># assembly_parrot: .asm or .a</span> | ||
1260 | 710 | <span class="c"># assembly_r2000: .asm or .a</span> | ||
1261 | 711 | <span class="c"># assembly_x86: .asm or .a</span> | ||
1262 | 712 | <span class="c"># squidconf: .conf</span> | ||
1263 | 713 | <span class="c"># rpmspec: .rpm</span> | ||
1264 | 714 | |||
1265 | 715 | <span class="c"># Extra language extensions, used to associate extensions with mode files.</span> | ||
1266 | 716 | <span class="c"># Used by importCommands.languageForExtension.</span> | ||
1267 | 717 | <span class="c"># Keys are extensions, values are corresponding mode file (without .py)</span> | ||
1268 | 718 | <span class="c"># A value of 'none' is a signal to unit tests that no extension file exists.</span> | ||
1269 | 719 | <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 | 720 | <span class="s">'pod'</span> <span class="p">:</span> <span class="s">'perl'</span><span class="p">,</span> | ||
1271 | 721 | <span class="s">'unknown_language'</span><span class="p">:</span> <span class="s">'none'</span><span class="p">,</span> | ||
1272 | 722 | <span class="s">'w'</span> <span class="p">:</span> <span class="s">'none'</span><span class="p">,</span> <span class="c"># cweb</span> | ||
1273 | 723 | <span class="p">}</span> | ||
1274 | 724 | |||
1275 | 725 | <span class="c">#@+node:ekr.20031218072017.2609: *3* app.closeLeoWindow</span></div> | ||
1276 | 726 | <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 | 727 | |||
1278 | 728 | <span class="sd">"""Attempt to close a Leo window.</span> | ||
1279 | 729 | |||
1280 | 730 | <span class="sd"> Return False if the user veto's the close."""</span> | ||
1281 | 731 | |||
1282 | 732 | <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 | 733 | <span class="n">c</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">c</span> | ||
1284 | 734 | |||
1285 | 735 | <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 | 736 | |||
1287 | 737 | <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 | 738 | |||
1289 | 739 | <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">promptingForClose</span><span class="p">:</span> | ||
1290 | 740 | <span class="c"># There is already a dialog open asking what to do.</span> | ||
1291 | 741 | <span class="k">return</span> <span class="bp">False</span> | ||
1292 | 742 | |||
1293 | 743 | <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 | 744 | <span class="c"># Make sure .leoRecentFiles.txt is written.</span> | ||
1295 | 745 | |||
1296 | 746 | <span class="k">if</span> <span class="n">c</span><span class="o">.</span><span class="n">changed</span><span class="p">:</span> | ||
1297 | 747 | <span class="n">c</span><span class="o">.</span><span class="n">promptingForClose</span> <span class="o">=</span> <span class="bp">True</span> | ||
1298 | 748 | <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 | 749 | <span class="n">c</span><span class="o">.</span><span class="n">promptingForClose</span> <span class="o">=</span> <span class="bp">False</span> | ||
1300 | 750 | <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 | 751 | |||
1302 | 752 | <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 | 753 | |||
1304 | 754 | <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 | 755 | <span class="c"># This may remove frame from the window list.</span> | ||
1306 | 756 | |||
1307 | 757 | <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 | 758 | <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 | 759 | |||
1310 | 760 | <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 | 761 | <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 | 762 | <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 | 763 | |||
1314 | 764 | <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 | 765 | <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 | 766 | |||
1317 | 767 | <span class="k">return</span> <span class="bp">True</span> <span class="c"># The window has been closed.</span> | ||
1318 | 768 | <span class="c">#@+node:ville.20090602181814.6219: *3* app.commanders</span></div> | ||
1319 | 769 | <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 | 770 | <span class="sd">""" Return list of currently active controllers """</span> | ||
1321 | 771 | |||
1322 | 772 | <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 | 773 | <span class="c">#@+node:ekr.20090717112235.6007: *3* app.computeSignon</span></div> | ||
1324 | 774 | <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 | 775 | |||
1326 | 776 | <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> | ||
1327 | 777 | |||
1328 | 778 | <span class="kn">import</span> <span class="nn">leo.core.leoVersion</span> <span class="kn">as</span> <span class="nn">leoVersion</span> | ||
1329 | 779 | <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 | 780 | <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 | 781 | <span class="n">leoVer</span> <span class="o">=</span> <span class="n">leoVersion</span><span class="o">.</span><span class="n">version</span> | ||
1332 | 782 | <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 | 783 | |||
1334 | 784 | <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 | 785 | <span class="n">sysVersion</span> <span class="o">=</span> <span class="s">'Windows '</span> | ||
1336 | 786 | <span class="k">try</span><span class="p">:</span> | ||
1337 | 787 | <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 | 788 | <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 | 789 | <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> | ||
1340 | 790 | <span class="k">pass</span> | ||
1341 | 791 | |||
1342 | 792 | <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 | 793 | |||
1344 | 794 | <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 | 795 | <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 | 796 | <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 | 797 | <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 | 798 | <span class="c">#@+node:ekr.20100831090251.5838: *3* app.createXGui</span> | ||
1349 | 799 | <span class="c">#@+node:ekr.20100831090251.5840: *4* app.createCursesGui</span></div> | ||
1350 | 800 | <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 | 801 | |||
1352 | 802 | <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> | ||
1353 | 803 | |||
1354 | 804 | <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 | 805 | <span class="c">#@+node:ekr.20090619065122.8593: *4* app.createDefaultGui</span></div> | ||
1356 | 806 | <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 | 807 | |||
1358 | 808 | <span class="sd">"""A convenience routines for plugins to create the default gui class."""</span> | ||
1359 | 809 | |||
1360 | 810 | <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 | 811 | |||
1362 | 812 | <span class="c"># This method can be called twice if we had to get .leoID.txt.</span> | ||
1363 | 813 | <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 | 814 | |||
1365 | 815 | <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 | 816 | <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 | 817 | <span class="k">elif</span> <span class="n">argName</span> <span class="o">==</span> <span class="s">'null'</span><span class="p">:</span> | ||
1368 | 818 | <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 | 819 | <span class="k">elif</span> <span class="n">argName</span> <span class="o">==</span> <span class="s">'curses'</span><span class="p">:</span> | ||
1370 | 820 | <span class="n">app</span><span class="o">.</span><span class="n">createCursesGui</span><span class="p">()</span> | ||
1371 | 821 | |||
1372 | 822 | <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 | 823 | <span class="k">print</span><span class="p">(</span><span class="s">'Leo requires Qt to be installed.'</span><span class="p">)</span> | ||
1374 | 824 | <span class="c">#@+node:ekr.20031218072017.1938: *4* app.createNullGuiWithScript</span></div> | ||
1375 | 825 | <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 | 826 | |||
1377 | 827 | <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> | ||
1378 | 828 | |||
1379 | 829 | <span class="n">app</span><span class="o">.</span><span class="n">batchMode</span> <span class="o">=</span> <span class="bp">True</span> | ||
1380 | 830 | <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 | 831 | <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 | 832 | <span class="c">#@+node:ekr.20090202191501.1: *4* app.createQtGui</span></div> | ||
1383 | 833 | <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 | 834 | |||
1385 | 835 | <span class="c"># Do NOT omit fileName param: it is used in plugin code.</span> | ||
1386 | 836 | |||
1387 | 837 | <span class="sd">"""A convenience routines for plugins to create the Qt gui class."""</span> | ||
1388 | 838 | |||
1389 | 839 | <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> | ||
1390 | 840 | <span class="k">try</span><span class="p">:</span> | ||
1391 | 841 | <span class="c"># Take care to try the same imports as in qtGui.py.</span> | ||
1392 | 842 | <span class="kn">import</span> <span class="nn">PyQt4.QtCore</span> | ||
1393 | 843 | <span class="kn">import</span> <span class="nn">PyQt4.QtGui</span> | ||
1394 | 844 | <span class="kn">import</span> <span class="nn">leo.plugins.qtGui</span> <span class="kn">as</span> <span class="nn">qtGui</span> | ||
1395 | 845 | <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 | 846 | <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span> | ||
1397 | 847 | <span class="n">qtGui</span> <span class="o">=</span> <span class="bp">None</span> | ||
1398 | 848 | |||
1399 | 849 | <span class="k">if</span> <span class="n">qtGui</span><span class="p">:</span> | ||
1400 | 850 | <span class="n">qtGui</span><span class="o">.</span><span class="n">init</span><span class="p">()</span> | ||
1401 | 851 | <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 | 852 | <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 | 853 | <span class="c">#@+node:ekr.20090126063121.3: *4* app.createWxGui</span></div> | ||
1404 | 854 | <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 | 855 | |||
1406 | 856 | <span class="c"># Do NOT omit fileName param: it is used in plugin code.</span> | ||
1407 | 857 | |||
1408 | 858 | <span class="sd">"""A convenience routines for plugins to create the wx gui class."""</span> | ||
1409 | 859 | |||
1410 | 860 | <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> | ||
1411 | 861 | |||
1412 | 862 | <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 | 863 | |||
1414 | 864 | <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 | 865 | |||
1416 | 866 | <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 | 867 | <span class="c">#@+node:ekr.20031218072017.2612: *3* app.destroyAllOpenWithFiles</span></div> | ||
1418 | 868 | <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 | 869 | |||
1420 | 870 | <span class="sd">"""Try to remove temp files created with the Open With command.</span> | ||
1421 | 871 | |||
1422 | 872 | <span class="sd"> This may fail if the files are still open.</span> | ||
1423 | 873 | |||
1424 | 874 | <span class="sd"> Called by g.app.finishQuit"""</span> | ||
1425 | 875 | |||
1426 | 876 | <span class="c"># We can't use g.es here because the log stream no longer exists.</span> | ||
1427 | 877 | |||
1428 | 878 | <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 | 879 | <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 | 880 | |||
1431 | 881 | <span class="c"># Delete the list so the gc can recycle Leo windows!</span> | ||
1432 | 882 | <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 | 883 | <span class="c">#@+node:ekr.20031218072017.2613: *3* app.destroyOpenWithFilesForFrame</span></div> | ||
1434 | 884 | <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 | 885 | |||
1436 | 886 | <span class="sd">"""Close all "Open With" files associated with frame</span> | ||
1437 | 887 | |||
1438 | 888 | <span class="sd"> Called by app.destroyWindow.</span> | ||
1439 | 889 | <span class="sd"> """</span> | ||
1440 | 890 | |||
1441 | 891 | <span class="c"># Make a copy of the list: it may change in the loop.</span> | ||
1442 | 892 | <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 | 893 | |||
1444 | 894 | <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 | 895 | <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 | 896 | <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 | 897 | <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 | 898 | <span class="c">#@+node:ekr.20031218072017.2614: *3* app.destroyOpenWithFileWithDict</span></div> | ||
1449 | 899 | <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 | 900 | |||
1451 | 901 | <span class="sd">'''</span> | ||
1452 | 902 | <span class="sd"> A helper for app.destroyAllOpenWithFiles and</span> | ||
1453 | 903 | <span class="sd"> app.destroyOpenWithFilesForFrame.</span> | ||
1454 | 904 | <span class="sd"> '''</span> | ||
1455 | 905 | |||
1456 | 906 | <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 | 907 | <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 | 908 | <span class="k">try</span><span class="p">:</span> | ||
1459 | 909 | <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 | 910 | <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 | 911 | <span class="k">except</span><span class="p">:</span> | ||
1462 | 912 | <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 | 913 | |||
1464 | 914 | <span class="c"># Remove theDict from the list so the gc can recycle the Leo window!</span> | ||
1465 | 915 | <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 | 916 | <span class="c">#@+node:ekr.20031218072017.2615: *3* app.destroyWindow</span></div> | ||
1467 | 917 | <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 | 918 | |||
1469 | 919 | <span class="c"># g.trace(frame in g.app.windowList,frame)</span> | ||
1470 | 920 | <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 | 921 | |||
1472 | 922 | <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 | 923 | <span class="c"># g.trace(g.app.windowList)</span> | ||
1474 | 924 | <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 | 925 | <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 | 926 | |||
1477 | 927 | <span class="c"># force the window to go away now.</span> | ||
1478 | 928 | <span class="c"># Important: this also destroys all the objects of the commander.</span> | ||
1479 | 929 | <span class="n">frame</span><span class="o">.</span><span class="n">destroySelf</span><span class="p">()</span> | ||
1480 | 930 | <span class="c">#@+node:ekr.20031218072017.1732: *3* app.finishQuit</span></div> | ||
1481 | 931 | <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 | 932 | |||
1483 | 933 | <span class="c"># forceShutdown may already have fired the "end1" hook.</span> | ||
1484 | 934 | <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 | 935 | <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 | 936 | |||
1487 | 937 | <span class="bp">self</span><span class="o">.</span><span class="n">destroyAllOpenWithFiles</span><span class="p">()</span> | ||
1488 | 938 | |||
1489 | 939 | <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 | 940 | <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 | 941 | |||
1492 | 942 | <span class="c"># Don't use g.trace!</span> | ||
1493 | 943 | <span class="c"># print('app.finishQuit: setting g.app.killed',g.callers())</span> | ||
1494 | 944 | |||
1495 | 945 | <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 | 946 | <span class="c"># Disable all further hooks and events.</span> | ||
1497 | 947 | <span class="c"># Alas, "idle" events can still be called</span> | ||
1498 | 948 | <span class="c"># even after the following code.</span> | ||
1499 | 949 | |||
1500 | 950 | <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 | 951 | <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 | 952 | <span class="c">#@+node:ekr.20031218072017.2616: *3* app.forceShutdown</span></div> | ||
1503 | 953 | <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 | 954 | |||
1505 | 955 | <span class="sd">"""Forces an immediate shutdown of Leo at any time.</span> | ||
1506 | 956 | |||
1507 | 957 | <span class="sd"> In particular, may be called from plugins during startup."""</span> | ||
1508 | 958 | |||
1509 | 959 | <span class="c"># Wait until everything is quiet before really quitting.</span> | ||
1510 | 960 | <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 | 961 | |||
1512 | 962 | <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 | 963 | <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 | 964 | |||
1515 | 965 | <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 | 966 | <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 | 967 | |||
1518 | 968 | <span class="bp">self</span><span class="o">.</span><span class="n">finishQuit</span><span class="p">()</span> | ||
1519 | 969 | <span class="c">#@+node:ekr.20031218072017.2188: *3* app.newCommander & helper</span></div> | ||
1520 | 970 | <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 | 971 | |||
1522 | 972 | <span class="sd">"""Create a commander and its view frame for the Leo main window."""</span> | ||
1523 | 973 | |||
1524 | 974 | <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 | 975 | <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 | 976 | |||
1527 | 977 | <span class="c"># Create the commander and its subcommanders.</span> | ||
1528 | 978 | <span class="c"># This takes about 3/4 sec when called by the leoBridge module.</span> | ||
1529 | 979 | <span class="kn">import</span> <span class="nn">leo.core.leoCommands</span> <span class="kn">as</span> <span class="nn">leoCommands</span> | ||
1530 | 980 | |||
1531 | 981 | <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 | 982 | <span class="c">#@+node:ekr.20031218072017.2617: *3* app.onQuit</span></div> | ||
1533 | 983 | <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 | 984 | |||
1535 | 985 | <span class="sd">'''Exit Leo, prompting to save unsaved outlines first.'''</span> | ||
1536 | 986 | |||
1537 | 987 | <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 | 988 | |||
1539 | 989 | <span class="c"># Don't use g.trace here.</span> | ||
1540 | 990 | <span class="c"># print('onQuit',g.app.save_session,g.app.sessionManager)</span> | ||
1541 | 991 | |||
1542 | 992 | <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 | 993 | <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 | 994 | |||
1545 | 995 | <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 | 996 | <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 | 997 | <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 | 998 | <span class="k">break</span> | ||
1549 | 999 | |||
1550 | 1000 | <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 | 1001 | <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 | 1002 | <span class="c">#@+node:ekr.20120304065838.15588: *3* app.selectLeoWindow</span></div> | ||
1553 | 1003 | <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 | 1004 | |||
1555 | 1005 | <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 | 1006 | <span class="k">assert</span> <span class="n">c</span> | ||
1557 | 1007 | <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 | 1008 | |||
1559 | 1009 | <span class="n">frame</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span> | ||
1560 | 1010 | <span class="n">frame</span><span class="o">.</span><span class="n">deiconify</span><span class="p">()</span> | ||
1561 | 1011 | <span class="n">frame</span><span class="o">.</span><span class="n">lift</span><span class="p">()</span> | ||
1562 | 1012 | <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> | ||
1563 | 1013 | |||
1564 | 1014 | <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 | 1015 | |||
1566 | 1016 | <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 | 1017 | <span class="c"># frame.top.leo_master is a TabbedTopLevel.</span> | ||
1568 | 1018 | <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 | 1019 | |||
1570 | 1020 | <span class="n">c</span><span class="o">.</span><span class="n">bodyWantsFocus</span><span class="p">()</span> | ||
1571 | 1021 | <span class="n">c</span><span class="o">.</span><span class="n">outerUpdate</span><span class="p">()</span> | ||
1572 | 1022 | <span class="c">#@+node:ville.20090620122043.6275: *3* app.setGlobalDb</span></div> | ||
1573 | 1023 | <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 | 1024 | <span class="sd">""" Create global pickleshare db</span> | ||
1575 | 1025 | |||
1576 | 1026 | <span class="sd"> Usable by::</span> | ||
1577 | 1027 | |||
1578 | 1028 | <span class="sd"> g.app.db['hello'] = [1,2,5]</span> | ||
1579 | 1029 | |||
1580 | 1030 | <span class="sd"> """</span> | ||
1581 | 1031 | |||
1582 | 1032 | <span class="c"># Fixes bug 670108.</span> | ||
1583 | 1033 | <span class="kn">import</span> <span class="nn">leo.core.leoCache</span> <span class="kn">as</span> <span class="nn">leoCache</span> | ||
1584 | 1034 | <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 | 1035 | <span class="c">#@+node:ekr.20031218072017.1978: *3* app.setLeoID</span></div> | ||
1586 | 1036 | <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 | 1037 | |||
1588 | 1038 | <span class="n">tag</span> <span class="o">=</span> <span class="s">".leoID.txt"</span> | ||
1589 | 1039 | <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 | 1040 | <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 | 1041 | <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 | 1042 | |||
1593 | 1043 | <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 | 1044 | <span class="c">#@+<< return if we can set leoID from sys.leoID >></span> | ||
1595 | 1045 | <span class="c">#@+node:ekr.20031218072017.1979: *4* << return if we can set leoID from sys.leoID>></span> | ||
1596 | 1046 | <span class="c"># This would be set by in Python's sitecustomize.py file.</span> | ||
1597 | 1047 | |||
1598 | 1048 | <span class="c"># Use hasattr & getattr to suppress pylint warning.</span> | ||
1599 | 1049 | <span class="c"># Use a "non-constant" attribute to suppress another warning!</span> | ||
1600 | 1050 | |||
1601 | 1051 | <span class="n">nonConstantAttr</span> <span class="o">=</span> <span class="s">"leoID"</span> | ||
1602 | 1052 | |||
1603 | 1053 | <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 | 1054 | <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 | 1055 | <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 | 1056 | <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 | 1057 | <span class="c"># Careful: periods in the id field of a gnx will corrupt the .leo file!</span> | ||
1608 | 1058 | <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 | 1059 | <span class="k">return</span> | ||
1610 | 1060 | <span class="k">else</span><span class="p">:</span> | ||
1611 | 1061 | <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 | 1062 | <span class="c">#@-<< return if we can set leoID from sys.leoID >></span> | ||
1613 | 1063 | <span class="c">#@+<< return if we can set leoID from "leoID.txt" >></span> | ||
1614 | 1064 | <span class="c">#@+node:ekr.20031218072017.1980: *4* << return if we can set leoID from "leoID.txt" >></span> | ||
1615 | 1065 | <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 | 1066 | <span class="c"># N.B. We would use the _working_ directory if theDir is None!</span> | ||
1617 | 1067 | <span class="k">if</span> <span class="n">theDir</span><span class="p">:</span> | ||
1618 | 1068 | <span class="k">try</span><span class="p">:</span> | ||
1619 | 1069 | <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 | 1070 | <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 | 1071 | <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 | 1072 | <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | ||
1623 | 1073 | <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 | 1074 | <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 | 1075 | <span class="c"># Careful: periods in the id field of a gnx</span> | ||
1626 | 1076 | <span class="c"># will corrupt the .leo file!</span> | ||
1627 | 1077 | <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 | 1078 | <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 | 1079 | <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 | 1080 | <span class="k">return</span> | ||
1631 | 1081 | <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 | 1082 | <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 | 1083 | <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> | ||
1634 | 1084 | <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 | 1085 | <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> | ||
1636 | 1086 | <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 | 1087 | <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 | 1088 | <span class="n">g</span><span class="o">.</span><span class="n">es_exception</span><span class="p">()</span> | ||
1639 | 1089 | <span class="c">#@-<< return if we can set leoID from "leoID.txt" >></span> | ||
1640 | 1090 | <span class="c">#@+<< return if we can set leoID from os.getenv('USER') >></span> | ||
1641 | 1091 | <span class="c">#@+node:ekr.20060211140947.1: *4* << return if we can set leoID from os.getenv('USER') >></span> | ||
1642 | 1092 | <span class="k">try</span><span class="p">:</span> | ||
1643 | 1093 | <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 | 1094 | <span class="k">if</span> <span class="n">theId</span><span class="p">:</span> | ||
1645 | 1095 | <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 | 1096 | <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 | 1097 | <span class="nb">repr</span><span class="p">(</span><span class="n">theId</span><span class="p">))</span> | ||
1648 | 1098 | <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 | 1099 | <span class="c"># Careful: periods in the id field of a gnx</span> | ||
1650 | 1100 | <span class="c"># will corrupt the .leo file!</span> | ||
1651 | 1101 | <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 | 1102 | <span class="k">return</span> | ||
1653 | 1103 | |||
1654 | 1104 | <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> | ||
1655 | 1105 | <span class="k">pass</span> | ||
1656 | 1106 | <span class="c">#@-<< return if we can set leoID from os.getenv('USER') >></span> | ||
1657 | 1107 | <span class="c">#@+<< put up a dialog requiring a valid id >></span> | ||
1658 | 1108 | <span class="c">#@+node:ekr.20031218072017.1981: *4* << put up a dialog requiring a valid id >></span> | ||
1659 | 1109 | <span class="c"># 2011/06/13: Don't put up a splash screen.</span> | ||
1660 | 1110 | <span class="c"># It would obscure the coming dialog.</span> | ||
1661 | 1111 | <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 | 1112 | |||
1663 | 1113 | <span class="c"># New in 4.1: get an id for gnx's. Plugins may set g.app.leoID.</span> | ||
1664 | 1114 | <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 | 1115 | <span class="c"># Create the Qt gui if it exists.</span> | ||
1666 | 1116 | <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 | 1117 | |||
1668 | 1118 | <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 | 1119 | <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 | 1120 | <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 | 1121 | <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 | 1122 | <span class="k">else</span><span class="p">:</span> | ||
1673 | 1123 | <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 | 1124 | <span class="k">else</span><span class="p">:</span> | ||
1675 | 1125 | <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 | 1126 | |||
1677 | 1127 | <span class="c"># Bug fix: 2/6/05: put result in g.app.leoID.</span> | ||
1678 | 1128 | <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 | 1129 | |||
1680 | 1130 | <span class="c"># Careful: periods in the id field of a gnx will corrupt the .leo file!</span> | ||
1681 | 1131 | <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 | 1132 | |||
1683 | 1133 | <span class="c"># g.trace(g.app.leoID)</span> | ||
1684 | 1134 | <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 | 1135 | <span class="c">#@-<< put up a dialog requiring a valid id >></span> | ||
1686 | 1136 | <span class="c">#@+<< attempt to create leoID.txt >></span> | ||
1687 | 1137 | <span class="c">#@+node:ekr.20031218072017.1982: *4* << attempt to create leoID.txt >> (changed)</span> | ||
1688 | 1138 | <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 | 1139 | <span class="c"># N.B. We would use the _working_ directory if theDir is None!</span> | ||
1690 | 1140 | <span class="k">if</span> <span class="n">theDir</span><span class="p">:</span> | ||
1691 | 1141 | <span class="k">try</span><span class="p">:</span> | ||
1692 | 1142 | <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 | 1143 | <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 | 1144 | <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 | 1145 | <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 | 1146 | <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 | 1147 | <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 | 1148 | <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | ||
1699 | 1149 | <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 | 1150 | <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 | 1151 | <span class="k">return</span> | ||
1702 | 1152 | <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> | ||
1703 | 1153 | <span class="k">pass</span> | ||
1704 | 1154 | |||
1705 | 1155 | <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 | 1156 | <span class="c">#@-<< attempt to create leoID.txt >></span> | ||
1707 | 1157 | <span class="c">#@+node:ekr.20031218072017.1847: *3* app.setLog, lockLog, unlocklog</span></div> | ||
1708 | 1158 | <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 | 1159 | |||
1710 | 1160 | <span class="sd">"""set the frame to which log messages will go"""</span> | ||
1711 | 1161 | |||
1712 | 1162 | <span class="c"># print("app.setLog:",log)</span> | ||
1713 | 1163 | <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 | 1164 | <span class="bp">self</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">log</span> | ||
1715 | 1165 | </div> | ||
1716 | 1166 | <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 | 1167 | <span class="sd">"""Disable changes to the log"""</span> | ||
1718 | 1168 | <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">True</span> | ||
1719 | 1169 | </div> | ||
1720 | 1170 | <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 | 1171 | <span class="sd">"""Enable changes to the log"""</span> | ||
1722 | 1172 | <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">False</span> | ||
1723 | 1173 | <span class="c">#@+node:ekr.20031218072017.2619: *3* app.writeWaitingLog</span></div> | ||
1724 | 1174 | <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 | 1175 | |||
1726 | 1176 | <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> | ||
1727 | 1177 | <span class="n">app</span> <span class="o">=</span> <span class="bp">self</span> | ||
1728 | 1178 | |||
1729 | 1179 | <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> | ||
1730 | 1180 | <span class="c"># Do not call g.es, g.es_print, g.pr or g.trace here!</span> | ||
1731 | 1181 | <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 | 1182 | <span class="c"># print('writeWaitingLog',g.callers())</span> | ||
1733 | 1183 | <span class="c"># import sys ; print('writeWaitingLog: argv',sys.argv)</span> | ||
1734 | 1184 | |||
1735 | 1185 | <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 | 1186 | <span class="k">return</span> | ||
1737 | 1187 | |||
1738 | 1188 | <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> | ||
1739 | 1189 | <span class="n">app</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> | ||
1740 | 1190 | <span class="n">app</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> | ||
1741 | 1191 | <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 | 1192 | <span class="k">return</span> | ||
1743 | 1193 | |||
1744 | 1194 | <span class="n">table</span> <span class="o">=</span> <span class="p">[</span> | ||
1745 | 1195 | <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 | 1196 | <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 | 1197 | <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 | 1198 | <span class="p">]</span> | ||
1749 | 1199 | <span class="n">table</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> | ||
1750 | 1200 | |||
1751 | 1201 | <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 | 1202 | <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 | 1203 | |||
1754 | 1204 | <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 | 1205 | <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 | 1206 | <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 | 1207 | <span class="k">print</span><span class="p">(</span><span class="s">''</span><span class="p">)</span> | ||
1758 | 1208 | <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 | 1209 | <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 | 1210 | <span class="k">print</span><span class="p">(</span><span class="s">'** caching disabled'</span><span class="p">)</span> | ||
1761 | 1211 | <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 | 1212 | <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 | 1213 | <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 | 1214 | <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 | 1215 | <span class="k">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> | ||
1766 | 1216 | <span class="n">app</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> | ||
1767 | 1217 | |||
1768 | 1218 | <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 | 1219 | <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 | 1220 | <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 | 1221 | <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 | 1222 | <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 | 1223 | <span class="c"># The caller must write the newlines.</span> | ||
1774 | 1224 | <span class="n">app</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> | ||
1775 | 1225 | |||
1776 | 1226 | <span class="c"># Essential when opening multiple files...</span> | ||
1777 | 1227 | <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 | 1228 | <span class="c">#@+node:ekr.20120427064024.10068: *3* app.Detecting already-open files</span> | ||
1779 | 1229 | <span class="c">#@+node:ekr.20120427064024.10064: *4* app.checkForOpenFile</span></div> | ||
1780 | 1230 | <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 | 1231 | |||
1782 | 1232 | <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 | 1233 | |||
1784 | 1234 | <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 | 1235 | <span class="k">return</span> <span class="bp">True</span> | ||
1786 | 1236 | <span class="k">else</span><span class="p">:</span> | ||
1787 | 1237 | <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 | 1238 | <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 | 1239 | <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 | 1240 | <span class="n">title</span><span class="o">=</span><span class="s">'Open Leo File Again?'</span><span class="p">,</span> | ||
1791 | 1241 | <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 | 1242 | <span class="p">)</span> | ||
1793 | 1243 | <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="s">'yes'</span><span class="p">:</span> | ||
1794 | 1244 | <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 | 1245 | <span class="n">title</span><span class="o">=</span><span class="s">'Reset open count?'</span><span class="p">,</span> | ||
1796 | 1246 | <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 | 1247 | <span class="s">"</span><span class="se">\n</span><span class="s">Say yes if you know this outline"</span> \ | ||
1798 | 1248 | <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 | 1249 | <span class="p">)</span> | ||
1800 | 1250 | <span class="k">if</span> <span class="n">clear</span> <span class="o">==</span> <span class="s">'yes'</span><span class="p">:</span> | ||
1801 | 1251 | <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 | 1252 | <span class="c"># IMPORTANT - rest of load process will add another</span> | ||
1803 | 1253 | <span class="c"># entry for this Leo instance, don't do it here</span> | ||
1804 | 1254 | <span class="k">return</span> <span class="n">result</span> <span class="o">==</span> <span class="s">'yes'</span> | ||
1805 | 1255 | <span class="k">else</span><span class="p">:</span> | ||
1806 | 1256 | <span class="k">return</span> <span class="bp">True</span> | ||
1807 | 1257 | <span class="c">#@+node:ekr.20120427064024.10066: *4* app.forgetOpenFile</span></div> | ||
1808 | 1258 | <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 | 1259 | |||
1810 | 1260 | <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 | 1261 | <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 | 1262 | |||
1813 | 1263 | <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 | 1264 | <span class="k">pass</span> | ||
1815 | 1265 | <span class="k">else</span><span class="p">:</span> | ||
1816 | 1266 | <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 | 1267 | <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 | 1268 | <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 | 1269 | <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> | ||
1820 | 1270 | <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 | 1271 | <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 | 1272 | <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 | 1273 | <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 | 1274 | <span class="k">else</span><span class="p">:</span> | ||
1825 | 1275 | <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 | 1276 | <span class="c">#@+node:ekr.20120427064024.10065: *4* app.rememberOpenFile</span></div> | ||
1827 | 1277 | <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 | 1278 | |||
1829 | 1279 | <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 | 1280 | <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 | 1281 | |||
1832 | 1282 | <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 | 1283 | <span class="k">pass</span> | ||
1834 | 1284 | <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 | 1285 | <span class="k">pass</span> | ||
1836 | 1286 | <span class="k">else</span><span class="p">:</span> | ||
1837 | 1287 | <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 | 1288 | <span class="c"># It's proper to add duplicates to this list.</span> | ||
1839 | 1289 | <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 | 1290 | <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> | ||
1841 | 1291 | <span class="c"># Trace doesn't work well while initing.</span> | ||
1842 | 1292 | <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 | 1293 | <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 | 1294 | <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 | 1295 | <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 | 1296 | <span class="c">#@-others</span> | ||
1847 | 1297 | <span class="c">#@+node:ekr.20120209051836.10242: ** class LoadManager</span></div></div> | ||
1848 | 1298 | <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 | 1299 | |||
1850 | 1300 | <span class="sd">'''A class to manage loading .leo files, including configuration files.'''</span> | ||
1851 | 1301 | |||
1852 | 1302 | <span class="c">#@+others</span> | ||
1853 | 1303 | <span class="c">#@+node:ekr.20120214060149.15851: *3* LM.ctor</span> | ||
1854 | 1304 | <span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
1855 | 1305 | |||
1856 | 1306 | <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 | 1307 | <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 | 1308 | |||
1859 | 1309 | <span class="c"># Global settings & shortcuts dicts.</span> | ||
1860 | 1310 | <span class="c"># The are the defaults for computing settings and shortcuts for all loaded files.</span> | ||
1861 | 1311 | <span class="bp">self</span><span class="o">.</span><span class="n">globalSettingsDict</span> <span class="o">=</span> <span class="bp">None</span> | ||
1862 | 1312 | <span class="c"># A g.TypedDict containing the merger of default settings,</span> | ||
1863 | 1313 | <span class="c"># settings in leoSettings.leo and settings in myLeoSettings.leo</span> | ||
1864 | 1314 | <span class="bp">self</span><span class="o">.</span><span class="n">globalShortcutsDict</span> <span class="o">=</span> <span class="bp">None</span> | ||
1865 | 1315 | <span class="c"># A g.TypedDictOfLists containg the merger of shortcuts in</span> | ||
1866 | 1316 | <span class="c"># leoSettings.leo and settings in myLeoSettings.leo.</span> | ||
1867 | 1317 | |||
1868 | 1318 | <span class="c"># LoadManager ivars corresponding to user options....</span> | ||
1869 | 1319 | <span class="bp">self</span><span class="o">.</span><span class="n">files</span> <span class="o">=</span> <span class="p">[]</span> | ||
1870 | 1320 | <span class="c"># List of files to be loaded.</span> | ||
1871 | 1321 | <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> | ||
1872 | 1322 | <span class="c"># Dictionary of user options. Keys are option names.</span> | ||
1873 | 1323 | |||
1874 | 1324 | <span class="k">if</span> <span class="mi">0</span><span class="p">:</span> <span class="c"># use lm.options.get instead.</span> | ||
1875 | 1325 | <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 | 1326 | <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 | 1327 | <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 | 1328 | <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 | 1329 | <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 | 1330 | <span class="bp">self</span><span class="o">.</span><span class="n">selectHeadline</span> <span class="o">=</span> <span class="bp">None</span> | ||
1881 | 1331 | <span class="bp">self</span><span class="o">.</span><span class="n">versionFlag</span> <span class="o">=</span> <span class="bp">False</span> | ||
1882 | 1332 | <span class="bp">self</span><span class="o">.</span><span class="n">windowFlag</span> <span class="o">=</span> <span class="bp">False</span> | ||
1883 | 1333 | <span class="bp">self</span><span class="o">.</span><span class="n">windowSize</span> <span class="o">=</span> <span class="bp">None</span> | ||
1884 | 1334 | |||
1885 | 1335 | <span class="c"># Ivars of *other* classes corresponding to command-line arguments...</span> | ||
1886 | 1336 | <span class="c"># g.app.batchMode Set in createNullGuiWithScript</span> | ||
1887 | 1337 | <span class="c"># g.app.gui = None The gui class.</span> | ||
1888 | 1338 | <span class="c"># g.app.guiArgName The gui name given in --gui option.</span> | ||
1889 | 1339 | <span class="c"># g.app.qt_use_tabs </span> | ||
1890 | 1340 | <span class="c"># g.app.silentMode </span> | ||
1891 | 1341 | <span class="c"># g.app.start_fullscreen </span> | ||
1892 | 1342 | <span class="c"># g.app.start_maximized .</span> | ||
1893 | 1343 | <span class="c"># g.app.start_minimized</span> | ||
1894 | 1344 | <span class="c"># g.app.useIpython</span> | ||
1895 | 1345 | <span class="c"># g.app.use_splash_screen</span> | ||
1896 | 1346 | <span class="c"># g.enableDB --no-cache</span> | ||
1897 | 1347 | <span class="c">#@+node:ekr.20120211121736.10812: *3* LM.Directory & file utils</span> | ||
1898 | 1348 | <span class="c">#@+node:ekr.20120219154958.10481: *4* LM.completeFileName</span> | ||
1899 | 1349 | <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 | 1350 | |||
1901 | 1351 | <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 | 1352 | <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 | 1353 | |||
1904 | 1354 | <span class="c"># 2011/10/12: don't add .leo to *any* file.</span> | ||
1905 | 1355 | <span class="k">return</span> <span class="n">fileName</span> | ||
1906 | 1356 | <span class="c">#@+node:ekr.20120209051836.10372: *4* LM.computeLeoSettingsPath</span></div> | ||
1907 | 1357 | <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 | 1358 | |||
1909 | 1359 | <span class="sd">'''Return the full path to leoSettings.leo.'''</span> | ||
1910 | 1360 | |||
1911 | 1361 | <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> | ||
1912 | 1362 | <span class="c"># lm = self</span> | ||
1913 | 1363 | <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 | 1364 | <span class="n">settings_fn</span> <span class="o">=</span> <span class="s">'leoSettings.leo'</span> | ||
1915 | 1365 | <span class="n">table</span> <span class="o">=</span> <span class="p">(</span> | ||
1916 | 1366 | <span class="c"># First, leoSettings.leo in the home directories.</span> | ||
1917 | 1367 | <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 | 1368 | <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 | 1369 | <span class="c"># Last, leoSettings.leo in leo/config directory.</span> | ||
1920 | 1370 | <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 | 1371 | <span class="p">)</span> | ||
1922 | 1372 | <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 | 1373 | <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 | 1374 | <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 | 1375 | <span class="k">break</span> | ||
1926 | 1376 | <span class="k">else</span><span class="p">:</span> | ||
1927 | 1377 | <span class="n">path</span> <span class="o">=</span> <span class="bp">None</span> | ||
1928 | 1378 | <span class="k">return</span> <span class="n">path</span> | ||
1929 | 1379 | <span class="c">#@+node:ekr.20120209051836.10373: *4* LM.computeMyLeoSettingsPath</span></div> | ||
1930 | 1380 | <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 | 1381 | |||
1932 | 1382 | <span class="sd">'''Return the full path to myLeoSettings.leo.</span> | ||
1933 | 1383 | |||
1934 | 1384 | <span class="sd"> The "footnote": Get the local directory from lm.files[0]'''</span> | ||
1935 | 1385 | |||
1936 | 1386 | <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> | ||
1937 | 1387 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
1938 | 1388 | <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 | 1389 | <span class="n">settings_fn</span> <span class="o">=</span> <span class="s">'myLeoSettings.leo'</span> | ||
1940 | 1390 | |||
1941 | 1391 | <span class="c"># This seems pointless: we need a machine *directory*.</span> | ||
1942 | 1392 | <span class="c"># For now, however, we'll keep the existing code as is.</span> | ||
1943 | 1393 | <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 | 1394 | |||
1945 | 1395 | <span class="c"># First, compute the directory of the first loaded file.</span> | ||
1946 | 1396 | <span class="c"># All entries in lm.files are full, absolute paths.</span> | ||
1947 | 1397 | <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 | 1398 | |||
1949 | 1399 | <span class="n">table</span> <span class="o">=</span> <span class="p">(</span> | ||
1950 | 1400 | <span class="c"># First, myLeoSettings.leo in the local directory</span> | ||
1951 | 1401 | <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 | 1402 | |||
1953 | 1403 | <span class="c"># Next, myLeoSettings.leo in the home directories.</span> | ||
1954 | 1404 | <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 | 1405 | <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 | 1406 | |||
1957 | 1407 | <span class="c"># Next, <machine-name>myLeoSettings.leo in the home directories.</span> | ||
1958 | 1408 | <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 | 1409 | <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 | 1410 | |||
1961 | 1411 | <span class="c"># Last, leoSettings.leo in leo/config directory.</span> | ||
1962 | 1412 | <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 | 1413 | <span class="p">)</span> | ||
1964 | 1414 | |||
1965 | 1415 | <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 | 1416 | <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 | 1417 | <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 | 1418 | <span class="k">break</span> | ||
1969 | 1419 | <span class="k">else</span><span class="p">:</span> | ||
1970 | 1420 | <span class="n">path</span> <span class="o">=</span> <span class="bp">None</span> | ||
1971 | 1421 | |||
1972 | 1422 | <span class="k">return</span> <span class="n">path</span> | ||
1973 | 1423 | <span class="c">#@+node:ekr.20120209051836.10252: *4* LM.computeStandardDirectories & helpers</span></div> | ||
1974 | 1424 | <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 | 1425 | |||
1976 | 1426 | <span class="sd">'''Compute the locations of standard directories and</span> | ||
1977 | 1427 | <span class="sd"> set the corresponding ivars.'''</span> | ||
1978 | 1428 | |||
1979 | 1429 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
1980 | 1430 | |||
1981 | 1431 | <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 | 1432 | <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 | 1433 | <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 | 1434 | <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 | 1435 | <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 | 1436 | |||
1987 | 1437 | <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 | 1438 | <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 | 1439 | <span class="c">#@+node:ekr.20120209051836.10253: *5* lm.computeGlobalConfigDir</span></div> | ||
1990 | 1440 | <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 | 1441 | |||
1992 | 1442 | <span class="c"># lm = self</span> | ||
1993 | 1443 | |||
1994 | 1444 | <span class="c"># To avoid pylint complaints that sys.leo_config_directory does not exist.</span> | ||
1995 | 1445 | <span class="n">leo_config_dir</span> <span class="o">=</span> <span class="p">(</span> | ||
1996 | 1446 | <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 | 1447 | <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 | 1448 | <span class="k">if</span> <span class="n">leo_config_dir</span><span class="p">:</span> | ||
1999 | 1449 | <span class="n">theDir</span> <span class="o">=</span> <span class="n">leo_config_dir</span> | ||
2000 | 1450 | <span class="k">else</span><span class="p">:</span> | ||
2001 | 1451 | <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 | 1452 | <span class="k">if</span> <span class="n">theDir</span><span class="p">:</span> | ||
2003 | 1453 | <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 | 1454 | <span class="k">if</span> <span class="p">(</span> | ||
2005 | 1455 | <span class="ow">not</span> <span class="n">theDir</span> <span class="ow">or</span> | ||
2006 | 1456 | <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 | 1457 | <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 | 1458 | <span class="p">):</span> | ||
2009 | 1459 | <span class="n">theDir</span> <span class="o">=</span> <span class="bp">None</span> | ||
2010 | 1460 | <span class="k">return</span> <span class="n">theDir</span> | ||
2011 | 1461 | <span class="c">#@+node:ekr.20120209051836.10254: *5* lm.computeHomeDir</span></div> | ||
2012 | 1462 | <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 | 1463 | |||
2014 | 1464 | <span class="sd">"""Returns the user's home directory."""</span> | ||
2015 | 1465 | |||
2016 | 1466 | <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 | 1467 | <span class="c"># Windows searches the HOME, HOMEPATH and HOMEDRIVE</span> | ||
2018 | 1468 | <span class="c"># environment vars, then gives up.</span> | ||
2019 | 1469 | |||
2020 | 1470 | <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 | 1471 | <span class="c"># Get the indirect reference to the true home.</span> | ||
2022 | 1472 | <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 | 1473 | |||
2024 | 1474 | <span class="k">if</span> <span class="n">home</span><span class="p">:</span> | ||
2025 | 1475 | <span class="c"># Important: This returns the _working_ directory if home is None!</span> | ||
2026 | 1476 | <span class="c"># This was the source of the 4.3 .leoID.txt problems.</span> | ||
2027 | 1477 | <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 | 1478 | <span class="k">if</span> <span class="p">(</span> | ||
2029 | 1479 | <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 | 1480 | <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 | 1481 | <span class="p">):</span> | ||
2032 | 1482 | <span class="n">home</span> <span class="o">=</span> <span class="bp">None</span> | ||
2033 | 1483 | |||
2034 | 1484 | <span class="c"># g.trace(home)</span> | ||
2035 | 1485 | <span class="k">return</span> <span class="n">home</span> | ||
2036 | 1486 | <span class="c">#@+node:ekr.20120209051836.10260: *5* lm.computeHomeLeoDir</span></div> | ||
2037 | 1487 | <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 | 1488 | |||
2039 | 1489 | <span class="c"># lm = self</span> | ||
2040 | 1490 | <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 | 1491 | <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 | 1492 | <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 | 1493 | <span class="k">return</span> <span class="n">homeLeoDir</span> | ||
2044 | 1494 | <span class="c">#@+node:ekr.20120209051836.10255: *5* lm.computeLeoDir</span></div> | ||
2045 | 1495 | <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 | 1496 | |||
2047 | 1497 | <span class="c"># lm = self</span> | ||
2048 | 1498 | <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 | 1499 | <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 | 1500 | <span class="c"># We don't want the result in sys.path</span> | ||
2051 | 1501 | <span class="c">#@+node:ekr.20120209051836.10256: *5* lm.computeLoadDir</span></div> | ||
2052 | 1502 | <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 | 1503 | |||
2054 | 1504 | <span class="sd">"""Returns the directory containing leo.py."""</span> | ||
2055 | 1505 | |||
2056 | 1506 | <span class="kn">import</span> <span class="nn">sys</span> | ||
2057 | 1507 | |||
2058 | 1508 | <span class="k">try</span><span class="p">:</span> | ||
2059 | 1509 | <span class="c"># Fix a hangnail: on Windows the drive letter returned by</span> | ||
2060 | 1510 | <span class="c"># __file__ is randomly upper or lower case!</span> | ||
2061 | 1511 | <span class="c"># The made for an ugly recent files list.</span> | ||
2062 | 1512 | <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 | 1513 | <span class="c"># g.trace(repr(path))</span> | ||
2064 | 1514 | <span class="k">if</span> <span class="n">path</span><span class="p">:</span> | ||
2065 | 1515 | <span class="c"># Possible fix for bug 735938:</span> | ||
2066 | 1516 | <span class="c"># Do the following only if path exists.</span> | ||
2067 | 1517 | <span class="c">#@+<< resolve symlinks >></span> | ||
2068 | 1518 | <span class="c">#@+node:ekr.20120209051836.10257: *6* << resolve symlinks >></span> | ||
2069 | 1519 | <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 | 1520 | <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 | 1521 | <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 | 1522 | <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 | 1523 | <span class="c">#@-<< resolve symlinks >></span> | ||
2074 | 1524 | <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 | 1525 | <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 | 1526 | <span class="c"># Convert the drive name to upper case.</span> | ||
2077 | 1527 | <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 | 1528 | |||
2079 | 1529 | |||
2080 | 1530 | <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 | 1531 | <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 | 1532 | <span class="k">else</span><span class="p">:</span> <span class="n">loadDir</span> <span class="o">=</span> <span class="bp">None</span> | ||
2083 | 1533 | |||
2084 | 1534 | <span class="k">if</span> <span class="p">(</span> | ||
2085 | 1535 | <span class="ow">not</span> <span class="n">loadDir</span> <span class="ow">or</span> | ||
2086 | 1536 | <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 | 1537 | <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 | 1538 | <span class="p">):</span> | ||
2089 | 1539 | <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 | 1540 | <span class="c"># From Marc-Antoine Parent.</span> | ||
2091 | 1541 | <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 | 1542 | <span class="n">loadDir</span> <span class="o">+=</span> <span class="s">"/leo/plugins"</span> | ||
2093 | 1543 | <span class="k">else</span><span class="p">:</span> | ||
2094 | 1544 | <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 | 1545 | <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 | 1546 | <span class="c"># g.trace(loadDir)</span> | ||
2097 | 1547 | <span class="k">return</span> <span class="n">loadDir</span> | ||
2098 | 1548 | <span class="k">except</span><span class="p">:</span> | ||
2099 | 1549 | <span class="k">print</span><span class="p">(</span><span class="s">"Exception getting load directory"</span><span class="p">)</span> | ||
2100 | 1550 | <span class="k">raise</span> | ||
2101 | 1551 | <span class="c">#@+node:ekr.20120213164030.10697: *5* lm.computeMachineName</span></div> | ||
2102 | 1552 | <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 | 1553 | |||
2104 | 1554 | <span class="sd">'''Return the name of the current machine, i.e, HOSTNAME.'''</span> | ||
2105 | 1555 | |||
2106 | 1556 | <span class="c"># This is prepended to leoSettings.leo or myLeoSettings.leo</span> | ||
2107 | 1557 | <span class="c"># to give the machine-specific setting name.</span> | ||
2108 | 1558 | <span class="c"># How can this be worth doing??</span> | ||
2109 | 1559 | |||
2110 | 1560 | <span class="k">try</span><span class="p">:</span> | ||
2111 | 1561 | <span class="kn">import</span> <span class="nn">os</span> | ||
2112 | 1562 | <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 | 1563 | <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> | ||
2114 | 1564 | <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 | 1565 | <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> | ||
2116 | 1566 | <span class="kn">import</span> <span class="nn">socket</span> | ||
2117 | 1567 | <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 | 1568 | <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> | ||
2119 | 1569 | <span class="n">name</span> <span class="o">=</span> <span class="s">''</span> | ||
2120 | 1570 | |||
2121 | 1571 | <span class="c"># g.trace(name)</span> | ||
2122 | 1572 | |||
2123 | 1573 | <span class="k">return</span> <span class="n">name</span> | ||
2124 | 1574 | <span class="c">#@+node:ekr.20120211121736.10772: *4* LM.computeWorkbookFileName</span></div> | ||
2125 | 1575 | <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 | 1576 | |||
2127 | 1577 | <span class="c"># lm = self</span> | ||
2128 | 1578 | |||
2129 | 1579 | <span class="c"># Get the name of the workbook.</span> | ||
2130 | 1580 | <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 | 1581 | <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 | 1582 | <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 | 1583 | <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 | 1584 | <span class="k">return</span> <span class="n">fn</span> | ||
2135 | 1585 | <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 | 1586 | <span class="c"># Create the file.</span> | ||
2137 | 1587 | <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 | 1588 | <span class="k">return</span> <span class="n">fn</span> | ||
2139 | 1589 | <span class="k">else</span><span class="p">:</span> | ||
2140 | 1590 | <span class="c"># It's too risky to open a default file if it is relative.</span> | ||
2141 | 1591 | <span class="k">return</span> <span class="bp">None</span> | ||
2142 | 1592 | <span class="c">#@+node:ekr.20120219154958.10485: *4* LM.reportDirectories</span></div> | ||
2143 | 1593 | <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 | 1594 | |||
2145 | 1595 | <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 | 1596 | |||
2147 | 1597 | <span class="k">if</span> <span class="mi">1</span><span class="p">:</span> <span class="c"># old</span> | ||
2148 | 1598 | |||
2149 | 1599 | <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> | ||
2150 | 1600 | <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 | 1601 | <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 | 1602 | <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 | 1603 | <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 | 1604 | <span class="p">):</span> | ||
2155 | 1605 | <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 | 1606 | |||
2157 | 1607 | <span class="k">else</span><span class="p">:</span> | ||
2158 | 1608 | <span class="n">aList</span> <span class="o">=</span> <span class="p">(</span> | ||
2159 | 1609 | <span class="s">'homeDir'</span><span class="p">,</span><span class="s">'homeLeoDir'</span><span class="p">,</span> | ||
2160 | 1610 | <span class="s">'leoDir'</span><span class="p">,</span><span class="s">'loadDir'</span><span class="p">,</span> | ||
2161 | 1611 | <span class="s">'extensionsDir'</span><span class="p">,</span><span class="s">'globalConfigDir'</span><span class="p">)</span> | ||
2162 | 1612 | |||
2163 | 1613 | <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 | 1614 | <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 | 1615 | <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 | 1616 | |||
2167 | 1617 | <span class="c">#@+node:ekr.20120215062153.10740: *3* LM.Settings</span> | ||
2168 | 1618 | <span class="c">#@+node:ekr.20120130101219.10182: *4* lm.computeBindingLetter</span></div> | ||
2169 | 1619 | <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 | 1620 | |||
2171 | 1621 | <span class="c"># lm = self</span> | ||
2172 | 1622 | <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> | ||
2173 | 1623 | <span class="k">return</span> <span class="s">'D'</span> | ||
2174 | 1624 | <span class="n">table</span> <span class="o">=</span> <span class="p">(</span> | ||
2175 | 1625 | <span class="p">(</span><span class="s">'M'</span><span class="p">,</span><span class="s">'myLeoSettings.leo'</span><span class="p">),</span> | ||
2176 | 1626 | <span class="p">(</span><span class="s">' '</span><span class="p">,</span><span class="s">'leoSettings.leo'</span><span class="p">),</span> | ||
2177 | 1627 | <span class="p">(</span><span class="s">'F'</span><span class="p">,</span><span class="s">'.leo'</span><span class="p">),</span> | ||
2178 | 1628 | <span class="p">)</span> | ||
2179 | 1629 | <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 | 1630 | <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 | 1631 | <span class="k">return</span> <span class="n">letter</span> | ||
2182 | 1632 | <span class="k">else</span><span class="p">:</span> | ||
2183 | 1633 | <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 | 1634 | <span class="c">#@+node:ekr.20120223062418.10421: *4* lm.computeLocalSettings (where the crash happened)</span></div> | ||
2185 | 1635 | <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 | 1636 | |||
2187 | 1637 | <span class="sd">'''Merge the settings dicts from c's outline into *new copies of*</span> | ||
2188 | 1638 | <span class="sd"> settings_d and shortcuts_d.'''</span> | ||
2189 | 1639 | |||
2190 | 1640 | <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 | 1641 | <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 | 1642 | <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 | 1643 | |||
2194 | 1644 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2195 | 1645 | |||
2196 | 1646 | <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 | 1647 | |||
2198 | 1648 | <span class="k">assert</span> <span class="n">shortcuts_d</span> | ||
2199 | 1649 | <span class="k">assert</span> <span class="n">settings_d</span> | ||
2200 | 1650 | |||
2201 | 1651 | <span class="k">if</span> <span class="n">settings_d2</span><span class="p">:</span> | ||
2202 | 1652 | <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 | 1653 | <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 | 1654 | |||
2205 | 1655 | <span class="k">if</span> <span class="n">shortcuts_d2</span><span class="p">:</span> | ||
2206 | 1656 | <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 | 1657 | |||
2208 | 1658 | <span class="k">return</span> <span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span> | ||
2209 | 1659 | <span class="c">#@+node:ekr.20121126202114.3: *4* lm.createDefaultSettingsDicts (New)</span></div> | ||
2210 | 1660 | <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 | 1661 | |||
2212 | 1662 | <span class="sd">'''Create lm.globalSettingsDict & lm.globalShortcutsDict.'''</span> | ||
2213 | 1663 | |||
2214 | 1664 | <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 | 1665 | <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 | 1666 | <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 | 1667 | |||
2218 | 1668 | <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 | 1669 | <span class="n">name</span><span class="o">=</span><span class="s">'lm.globalShortcutsDict'</span><span class="p">,</span> | ||
2220 | 1670 | <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 | 1671 | |||
2222 | 1672 | <span class="k">return</span> <span class="n">settings_d</span><span class="p">,</span><span class="n">shortcuts_d</span> | ||
2223 | 1673 | <span class="c">#@+node:ekr.20120214165710.10726: *4* lm.createSettingsDicts</span></div> | ||
2224 | 1674 | <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 | 1675 | |||
2226 | 1676 | <span class="kn">import</span> <span class="nn">leo.core.leoConfig</span> <span class="kn">as</span> <span class="nn">leoConfig</span> | ||
2227 | 1677 | |||
2228 | 1678 | <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 | 1679 | <span class="c"># returns the *raw* shortcutsDict, not a *merged* shortcuts dict.</span> | ||
2230 | 1680 | |||
2231 | 1681 | <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 | 1682 | |||
2233 | 1683 | <span class="k">return</span> <span class="n">shortcutsDict</span><span class="p">,</span><span class="n">settingsDict</span> | ||
2234 | 1684 | <span class="c">#@+node:ekr.20120223062418.10414: *4* LM.getPreviousSettings</span></div> | ||
2235 | 1685 | <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 | 1686 | |||
2237 | 1687 | <span class="sd">'''Return the settings in effect for fn. Typically,</span> | ||
2238 | 1688 | <span class="sd"> this involves pre-reading fn.'''</span> | ||
2239 | 1689 | |||
2240 | 1690 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2241 | 1691 | <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 | 1692 | <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 | 1693 | |||
2244 | 1694 | <span class="c"># A special case: settings in leoSettings.leo do *not* override</span> | ||
2245 | 1695 | <span class="c"># the global settings, that is, settings in myLeoSettings.leo.</span> | ||
2246 | 1696 | <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 | 1697 | |||
2248 | 1698 | <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 | 1699 | <span class="c"># Open the file usinging a null gui.</span> | ||
2250 | 1700 | <span class="k">try</span><span class="p">:</span> | ||
2251 | 1701 | <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 | 1702 | <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 | 1703 | <span class="k">finally</span><span class="p">:</span> | ||
2254 | 1704 | <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 | 1705 | |||
2256 | 1706 | <span class="c"># Merge the settings from c into *copies* of the global dicts.</span> | ||
2257 | 1707 | <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 | 1708 | <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 | 1709 | <span class="c"># d1 and d2 are copies.</span> | ||
2260 | 1710 | <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 | 1711 | <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 | 1712 | <span class="k">else</span><span class="p">:</span> | ||
2263 | 1713 | <span class="c"># Get the settings from the globals settings dicts.</span> | ||
2264 | 1714 | <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 | 1715 | <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 | 1716 | |||
2267 | 1717 | <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 | 1718 | <span class="c">#@+node:ekr.20120214132927.10723: *4* lm.mergeShortcutsDicts & helpers</span></div> | ||
2269 | 1719 | <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 | 1720 | |||
2271 | 1721 | <span class="sd">'''Create a new dict by overriding all shortcuts in old_d by shortcuts in new_d.</span> | ||
2272 | 1722 | |||
2273 | 1723 | <span class="sd"> Both old_d and new_d remain unchanged.'''</span> | ||
2274 | 1724 | |||
2275 | 1725 | <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 | 1726 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2277 | 1727 | |||
2278 | 1728 | <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 | 1729 | <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 | 1730 | |||
2281 | 1731 | <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> | ||
2282 | 1732 | <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 | 1733 | <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 | 1734 | <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 | 1735 | |||
2286 | 1736 | <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 | 1737 | <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 | 1738 | |||
2289 | 1739 | <span class="c"># Fix bug 951921: check for duplicate shortcuts only in the new file.</span> | ||
2290 | 1740 | <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 | 1741 | |||
2292 | 1742 | <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 | 1743 | <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 | 1744 | |||
2295 | 1745 | <span class="k">return</span> <span class="n">result</span> | ||
2296 | 1746 | <span class="c">#@+node:ekr.20120311070142.9904: *5* lm.checkForDuplicateShortcuts</span></div> | ||
2297 | 1747 | <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 | 1748 | |||
2299 | 1749 | <span class="sd">'''Check for duplicates in an "inverted" dictionary d</span> | ||
2300 | 1750 | <span class="sd"> whose keys are strokes and whose values are lists of ShortcutInfo nodes.</span> | ||
2301 | 1751 | |||
2302 | 1752 | <span class="sd"> Duplicates happen only if panes conflict.</span> | ||
2303 | 1753 | <span class="sd"> '''</span> | ||
2304 | 1754 | |||
2305 | 1755 | <span class="c"># lm = self</span> | ||
2306 | 1756 | |||
2307 | 1757 | <span class="c"># Fix bug 951921: check for duplicate shortcuts only in the new file.</span> | ||
2308 | 1758 | <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 | 1759 | <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 | 1760 | <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 | 1761 | <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 | 1762 | <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 | 1763 | <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 | 1764 | <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 | 1765 | <span class="n">conflict</span> <span class="o">=</span> <span class="bp">True</span> <span class="p">;</span> <span class="k">break</span> | ||
2316 | 1766 | <span class="k">else</span><span class="p">:</span> | ||
2317 | 1767 | <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 | 1768 | <span class="k">if</span> <span class="n">conflict</span><span class="p">:</span> | ||
2319 | 1769 | <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 | 1770 | <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 | 1771 | <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 | 1772 | <span class="c">#@+node:ekr.20120214132927.10724: *5* lm.invert</span></div> | ||
2323 | 1773 | <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 | 1774 | |||
2325 | 1775 | <span class="sd">'''Invert a shortcut dict whose keys are command names,</span> | ||
2326 | 1776 | <span class="sd"> returning a dict whose keys are strokes.'''</span> | ||
2327 | 1777 | |||
2328 | 1778 | <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 | 1779 | <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 | 1780 | |||
2331 | 1781 | <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 | 1782 | <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 | 1783 | <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 | 1784 | <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 | 1785 | |||
2336 | 1786 | <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 | 1787 | <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 | 1788 | <span class="c"># This assert can fail if there is an exception in the ShortcutInfo ctor.</span> | ||
2339 | 1789 | <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 | 1790 | |||
2341 | 1791 | <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 | 1792 | <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 | 1793 | <span class="k">assert</span> <span class="n">stroke</span> | ||
2344 | 1794 | <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 | 1795 | <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 | 1796 | <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 | 1797 | |||
2348 | 1798 | <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 | 1799 | <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 | 1800 | <span class="k">return</span> <span class="n">result</span> | ||
2351 | 1801 | <span class="c">#@+node:ekr.20120214132927.10725: *5* lm.uninvert</span></div> | ||
2352 | 1802 | <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 | 1803 | |||
2354 | 1804 | <span class="sd">'''Uninvert an inverted shortcut dict whose keys are strokes,</span> | ||
2355 | 1805 | <span class="sd"> returning a dict whose keys are command names.'''</span> | ||
2356 | 1806 | |||
2357 | 1807 | <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 | 1808 | <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 | 1809 | |||
2360 | 1810 | <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 | 1811 | <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 | 1812 | <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 | 1813 | <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 | 1814 | <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 | 1815 | |||
2366 | 1816 | <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 | 1817 | <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 | 1818 | <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 | 1819 | <span class="n">commandName</span> <span class="o">=</span> <span class="n">si</span><span class="o">.</span><span class="n">commandName</span> | ||
2370 | 1820 | <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 | 1821 | <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 | 1822 | <span class="k">assert</span> <span class="n">commandName</span> | ||
2373 | 1823 | <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 | 1824 | |||
2375 | 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">'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 | 1826 | <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 | 1827 | <span class="k">return</span> <span class="n">result</span> | ||
2378 | 1828 | <span class="c">#@+node:ekr.20120222103014.10312: *4* lm.openSettingsFile</span></div> | ||
2379 | 1829 | <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 | 1830 | |||
2381 | 1831 | <span class="sd">'''Open a settings file with a null gui. Return the commander.</span> | ||
2382 | 1832 | |||
2383 | 1833 | <span class="sd"> The caller must init the c.config object.'''</span> | ||
2384 | 1834 | |||
2385 | 1835 | <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 | 1836 | <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 | 1837 | <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 | 1838 | |||
2389 | 1839 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2390 | 1840 | <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 | 1841 | |||
2392 | 1842 | <span class="n">giveMessage</span> <span class="o">=</span> <span class="p">(</span> | ||
2393 | 1843 | <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 | 1844 | <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 | 1845 | <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 | 1846 | <span class="c"># and not g.app.inBridge</span> | ||
2397 | 1847 | <span class="k">def</span> <span class="nf">message</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> | ||
2398 | 1848 | <span class="c"># This occurs early in startup, so use the following.</span> | ||
2399 | 1849 | <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 | 1850 | <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 | 1851 | <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 | 1852 | <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 | 1853 | |||
2404 | 1854 | <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 | 1855 | |||
2406 | 1856 | <span class="k">if</span> <span class="n">theFile</span><span class="p">:</span> | ||
2407 | 1857 | <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 | 1858 | |||
2409 | 1859 | <span class="c"># Changing g.app.gui here is a major hack. It is necessary.</span> | ||
2410 | 1860 | <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 | 1861 | <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 | 1862 | <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 | 1863 | <span class="n">frame</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span> | ||
2414 | 1864 | <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 | 1865 | <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 | 1866 | <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 | 1867 | <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 | 1868 | <span class="c"># closes theFile.</span> | ||
2419 | 1869 | <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 | 1870 | <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 | 1871 | <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 | 1872 | <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 | 1873 | <span class="c">#@+node:ekr.20120213081706.10382: *4* lm.readGlobalSettingsFiles (changed)</span></div> | ||
2424 | 1874 | <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 | 1875 | |||
2426 | 1876 | <span class="sd">'''Read leoSettings.leo and myLeoSettings.leo using a null gui.'''</span> | ||
2427 | 1877 | |||
2428 | 1878 | <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 | 1879 | <span class="n">verbose</span> <span class="o">=</span> <span class="bp">False</span> | ||
2430 | 1880 | <span class="n">tag</span> <span class="o">=</span> <span class="s">'lm.readGlobalSettingsFiles'</span> | ||
2431 | 1881 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2432 | 1882 | |||
2433 | 1883 | <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 | 1884 | <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 | 1885 | |||
2436 | 1886 | <span class="c"># Open the standard settings files with a nullGui.</span> | ||
2437 | 1887 | <span class="c"># Important: their commanders do not exist outside this method!</span> | ||
2438 | 1888 | <span class="n">commanders</span> <span class="o">=</span> <span class="p">[</span> | ||
2439 | 1889 | <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 | 1890 | <span class="n">lm</span><span class="o">.</span><span class="n">computeLeoSettingsPath</span><span class="p">(),</span> | ||
2441 | 1891 | <span class="n">lm</span><span class="o">.</span><span class="n">computeMyLeoSettingsPath</span><span class="p">())]</span> | ||
2442 | 1892 | |||
2443 | 1893 | <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 | 1894 | |||
2445 | 1895 | <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 | 1896 | <span class="k">if</span> <span class="n">c</span><span class="p">:</span> | ||
2447 | 1897 | <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 | 1898 | <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 | 1899 | |||
2450 | 1900 | <span class="c"># Adjust the name.</span> | ||
2451 | 1901 | <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 | 1902 | |||
2453 | 1903 | <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> | ||
2454 | 1904 | <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> | ||
2455 | 1905 | <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 | 1906 | <span class="k">print</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> | ||
2457 | 1907 | <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 | 1908 | <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 | 1909 | <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 | 1910 | |||
2461 | 1911 | <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 | 1912 | <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 | 1913 | <span class="c">#@+node:ekr.20120214165710.10838: *4* lm.traceSettingsDict</span></div> | ||
2464 | 1914 | <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 | 1915 | |||
2466 | 1916 | <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> | ||
2467 | 1917 | <span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> | ||
2468 | 1918 | <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 | 1919 | <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 | 1920 | <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 | 1921 | <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 | 1922 | <span class="k">else</span><span class="p">:</span> | ||
2473 | 1923 | <span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> | ||
2474 | 1924 | <span class="c">#@+node:ekr.20120214165710.10822: *4* lm.traceShortcutsDict</span></div> | ||
2475 | 1925 | <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 | 1926 | |||
2477 | 1927 | <span class="k">if</span> <span class="n">verbose</span><span class="p">:</span> | ||
2478 | 1928 | <span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> | ||
2479 | 1929 | <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 | 1930 | <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 | 1931 | <span class="c"># print('%20s %s' % (key,val.dump()))</span> | ||
2482 | 1932 | <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 | 1933 | <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 | 1934 | <span class="k">else</span><span class="p">:</span> | ||
2485 | 1935 | <span class="k">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span> | ||
2486 | 1936 | <span class="c">#@+node:ekr.20120219154958.10452: *3* LM.load</span></div> | ||
2487 | 1937 | <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 | 1938 | |||
2489 | 1939 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2490 | 1940 | |||
2491 | 1941 | <span class="c"># Phase 1: before loading plugins.</span> | ||
2492 | 1942 | <span class="c"># Scan options, set directories and read settings.</span> | ||
2493 | 1943 | <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 | 1944 | |||
2495 | 1945 | <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 | 1946 | <span class="c"># sets lm.options and lm.files</span> | ||
2497 | 1947 | |||
2498 | 1948 | <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 | 1949 | <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 | 1950 | <span class="k">return</span> | ||
2501 | 1951 | <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 | 1952 | <span class="k">return</span> | ||
2503 | 1953 | |||
2504 | 1954 | <span class="c"># Phase 2: load plugins: the gui has already been set.</span> | ||
2505 | 1955 | <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 | 1956 | <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 | 1957 | |||
2508 | 1958 | <span class="c"># Phase 3: after loading plugins. Create one or more frames.</span> | ||
2509 | 1959 | <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 | 1960 | |||
2511 | 1961 | <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> | ||
2512 | 1962 | <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 | 1963 | <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 | 1964 | <span class="c"># For scripts, the gui is a nullGui.</span> | ||
2515 | 1965 | <span class="c"># and the gui.setScript has already been called.</span> | ||
2516 | 1966 | <span class="c">#@+node:ekr.20120219154958.10477: *4* LM.doPrePluginsInit & helpers</span></div> | ||
2517 | 1967 | <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 | 1968 | |||
2519 | 1969 | <span class="sd">''' Scan options, set directories and read settings.'''</span> | ||
2520 | 1970 | |||
2521 | 1971 | <span class="c"># trace = False</span> | ||
2522 | 1972 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2523 | 1973 | <span class="n">lm</span><span class="o">.</span><span class="n">computeStandardDirectories</span><span class="p">()</span> | ||
2524 | 1974 | <span class="n">lm</span><span class="o">.</span><span class="n">adjustSysPath</span><span class="p">()</span> | ||
2525 | 1975 | |||
2526 | 1976 | <span class="c"># Scan the options as early as possible.</span> | ||
2527 | 1977 | <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 | 1978 | <span class="c"># also sets lm.files.</span> | ||
2529 | 1979 | |||
2530 | 1980 | <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 | 1981 | <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 | 1982 | <span class="k">return</span> | ||
2533 | 1983 | |||
2534 | 1984 | <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 | 1985 | <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 | 1986 | |||
2537 | 1987 | <span class="c"># Init the app.</span> | ||
2538 | 1988 | <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 | 1989 | <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 | 1990 | |||
2541 | 1991 | <span class="c"># Read settings *after* setting g.app.config and *before* opening plugins.</span> | ||
2542 | 1992 | <span class="c"># This means if-gui has effect only in per-file settings.</span> | ||
2543 | 1993 | <span class="n">lm</span><span class="o">.</span><span class="n">readGlobalSettingsFiles</span><span class="p">()</span> | ||
2544 | 1994 | <span class="c"># reads only standard settings files, using a null gui.</span> | ||
2545 | 1995 | <span class="c"># uses lm.files[0] to compute the local directory</span> | ||
2546 | 1996 | <span class="c"># that might contain myLeoSettings.leo.</span> | ||
2547 | 1997 | |||
2548 | 1998 | <span class="c"># Read the recent files file.</span> | ||
2549 | 1999 | <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 | 2000 | <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 | 2001 | |||
2552 | 2002 | <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 | 2003 | |||
2554 | 2004 | <span class="c"># Create the gui after reading options and settings.</span> | ||
2555 | 2005 | <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 | 2006 | |||
2557 | 2007 | <span class="c"># We can't print the signon until we know the gui.</span> | ||
2558 | 2008 | <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 | 2009 | <span class="c">#@+node:ekr.20120219154958.10478: *5* LM.createGui</span></div> | ||
2560 | 2010 | <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 | 2011 | |||
2562 | 2012 | <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 | 2013 | <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 | 2014 | |||
2565 | 2015 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2566 | 2016 | |||
2567 | 2017 | <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 | 2018 | <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 | 2019 | <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 | 2020 | |||
2571 | 2021 | <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 | 2022 | <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 | 2023 | <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 | 2024 | <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 | 2025 | <span class="k">else</span><span class="p">:</span> | ||
2576 | 2026 | <span class="c"># This can happen when launching Leo from IPython.</span> | ||
2577 | 2027 | <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 | 2028 | <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 | 2029 | <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 | 2030 | <span class="c"># Always use null gui for scripts.</span> | ||
2581 | 2031 | <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 | 2032 | <span class="k">else</span><span class="p">:</span> | ||
2583 | 2033 | <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 | 2034 | <span class="k">else</span><span class="p">:</span> | ||
2585 | 2035 | <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 | 2036 | <span class="c">#@+node:ekr.20120219154958.10479: *5* LM.createSpecialGui</span></div> | ||
2587 | 2037 | <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 | 2038 | |||
2589 | 2039 | <span class="c"># lm = self</span> | ||
2590 | 2040 | |||
2591 | 2041 | <span class="k">if</span> <span class="n">pymacs</span><span class="p">:</span> | ||
2592 | 2042 | <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 | 2043 | <span class="k">elif</span> <span class="n">script</span><span class="p">:</span> | ||
2594 | 2044 | <span class="k">if</span> <span class="n">windowFlag</span><span class="p">:</span> | ||
2595 | 2045 | <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 | 2046 | <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 | 2047 | <span class="n">sys</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> | ||
2598 | 2048 | <span class="k">else</span><span class="p">:</span> | ||
2599 | 2049 | <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 | 2050 | <span class="k">else</span><span class="p">:</span> | ||
2601 | 2051 | <span class="c"># assert g.app.guiArgName</span> | ||
2602 | 2052 | <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 | 2053 | <span class="c">#@+node:ekr.20120219154958.10480: *5* LM.adjustSysPath</span></div> | ||
2604 | 2054 | <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 | 2055 | |||
2606 | 2056 | <span class="sd">'''Adjust sys.path to enable imports as usual with Leo.</span> | ||
2607 | 2057 | |||
2608 | 2058 | <span class="sd"> This method is no longer needed:</span> | ||
2609 | 2059 | |||
2610 | 2060 | <span class="sd"> 1. g.importModule will import from the</span> | ||
2611 | 2061 | <span class="sd"> 'external' or 'extensions' folders as needed</span> | ||
2612 | 2062 | <span class="sd"> without altering sys.path.</span> | ||
2613 | 2063 | |||
2614 | 2064 | <span class="sd"> 2. Plugins now do fully qualified imports.</span> | ||
2615 | 2065 | <span class="sd"> '''</span> | ||
2616 | 2066 | |||
2617 | 2067 | <span class="k">pass</span> | ||
2618 | 2068 | <span class="c">#@+node:ekr.20120219154958.10482: *5* LM.getDefaultFile</span></div> | ||
2619 | 2069 | <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 | 2070 | |||
2621 | 2071 | <span class="c"># Get the name of the workbook.</span> | ||
2622 | 2072 | <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 | 2073 | <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 | 2074 | <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 | 2075 | |||
2626 | 2076 | <span class="c"># g.trace(g.os_path_exists(fn),fn)</span> | ||
2627 | 2077 | |||
2628 | 2078 | <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 | 2079 | <span class="k">return</span> <span class="n">fn</span> | ||
2630 | 2080 | <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 | 2081 | <span class="c"># Create the file.</span> | ||
2632 | 2082 | <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 | 2083 | <span class="k">return</span> <span class="n">fn</span> | ||
2634 | 2084 | <span class="k">else</span><span class="p">:</span> | ||
2635 | 2085 | <span class="c"># It's too risky to open a default file if it is relative.</span> | ||
2636 | 2086 | <span class="k">return</span> <span class="bp">None</span> | ||
2637 | 2087 | <span class="c">#@+node:ekr.20120219154958.10484: *5* LM.initApp</span></div> | ||
2638 | 2088 | <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 | 2089 | |||
2640 | 2090 | <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 | 2091 | <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 | 2092 | |||
2643 | 2093 | <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 | 2094 | |||
2645 | 2095 | <span class="kn">import</span> <span class="nn">leo.core.leoConfig</span> <span class="kn">as</span> <span class="nn">leoConfig</span> | ||
2646 | 2096 | <span class="kn">import</span> <span class="nn">leo.core.leoNodes</span> <span class="kn">as</span> <span class="nn">leoNodes</span> | ||
2647 | 2097 | <span class="kn">import</span> <span class="nn">leo.core.leoPlugins</span> <span class="kn">as</span> <span class="nn">leoPlugins</span> | ||
2648 | 2098 | <span class="kn">import</span> <span class="nn">leo.core.leoSessions</span> <span class="kn">as</span> <span class="nn">leoSessions</span> | ||
2649 | 2099 | |||
2650 | 2100 | <span class="c"># Import leoIPython only if requested. The import is quite slow.</span> | ||
2651 | 2101 | <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 | 2102 | <span class="kn">import</span> <span class="nn">leo.core.leoIPython</span> <span class="kn">as</span> <span class="nn">leoIPython</span> | ||
2653 | 2103 | <span class="c"># Use the GlobalIPythonManager created during the import process.</span> | ||
2654 | 2104 | <span class="c"># This ensures that only one copy is ever created.</span> | ||
2655 | 2105 | <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 | 2106 | |||
2657 | 2107 | <span class="c"># Make sure we call the new leoPlugins.init top-level function.</span> | ||
2658 | 2108 | <span class="c"># This prevents a crash when run is called repeatedly from</span> | ||
2659 | 2109 | <span class="c"># IPython's lleo extension.</span> | ||
2660 | 2110 | <span class="n">leoPlugins</span><span class="o">.</span><span class="n">init</span><span class="p">()</span> | ||
2661 | 2111 | |||
2662 | 2112 | <span class="c"># Force the user to set g.app.leoID.</span> | ||
2663 | 2113 | <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 | 2114 | |||
2665 | 2115 | <span class="c"># Create early classes *after* doing plugins.init()</span> | ||
2666 | 2116 | <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 | 2117 | <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 | 2118 | <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 | 2119 | <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 | 2120 | |||
2671 | 2121 | <span class="c"># Complete the plugins class last.</span> | ||
2672 | 2122 | <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 | 2123 | <span class="c">#@+node:ekr.20120219154958.10486: *5* LM.scanOptions & helper</span></div> | ||
2674 | 2124 | <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 | 2125 | |||
2676 | 2126 | <span class="sd">'''Handle all options, remove them from sys.argv and set lm.options.'''</span> | ||
2677 | 2127 | |||
2678 | 2128 | <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> | ||
2679 | 2129 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2680 | 2130 | |||
2681 | 2131 | <span class="c"># print('scanOptions',sys.argv)</span> | ||
2682 | 2132 | |||
2683 | 2133 | <span class="c"># Note: this automatically implements the --help option.</span> | ||
2684 | 2134 | <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 | 2135 | <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 | 2136 | |||
2687 | 2137 | <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 | 2138 | <span class="n">help</span> <span class="o">=</span> <span class="s">'start fullscreen (Qt only)'</span><span class="p">)</span> | ||
2689 | 2139 | <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 | 2140 | <span class="n">help</span> <span class="o">=</span> <span class="s">'enable ipython support'</span><span class="p">)</span> | ||
2691 | 2141 | <span class="n">add</span><span class="p">(</span><span class="s">'--gui'</span><span class="p">,</span> | ||
2692 | 2142 | <span class="n">help</span> <span class="o">=</span> <span class="s">'gui to use (qt/qttabs)'</span><span class="p">)</span> | ||
2693 | 2143 | <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 | 2144 | <span class="n">help</span> <span class="o">=</span> <span class="s">'start maximized (Qt only)'</span><span class="p">)</span> | ||
2695 | 2145 | <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 | 2146 | <span class="n">help</span> <span class="o">=</span> <span class="s">'start minimized'</span><span class="p">)</span> | ||
2697 | 2147 | <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 | 2148 | <span class="n">help</span> <span class="o">=</span> <span class="s">'disable reading of cached files'</span><span class="p">)</span> | ||
2699 | 2149 | <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 | 2150 | <span class="n">help</span> <span class="o">=</span> <span class="s">'disable all plugins'</span><span class="p">)</span> | ||
2701 | 2151 | <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 | 2152 | <span class="n">help</span> <span class="o">=</span> <span class="s">'disable the splash screen'</span><span class="p">)</span> | ||
2703 | 2153 | <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 | 2154 | <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 | 2155 | <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 | 2156 | <span class="n">help</span> <span class="o">=</span> <span class="s">'execute a script and then exit'</span><span class="p">)</span> | ||
2707 | 2157 | <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 | 2158 | <span class="n">help</span> <span class="o">=</span> <span class="s">'open a window for scripts'</span><span class="p">)</span> | ||
2709 | 2159 | <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 | 2160 | <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 | 2161 | <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 | 2162 | <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 | 2163 | <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 | 2164 | <span class="n">help</span> <span class="o">=</span> <span class="s">'save session tabs on exit'</span><span class="p">)</span> | ||
2715 | 2165 | <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 | 2166 | <span class="n">help</span> <span class="o">=</span> <span class="s">'disable all log messages'</span><span class="p">)</span> | ||
2717 | 2167 | <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 | 2168 | <span class="n">help</span><span class="o">=</span><span class="s">'print version number and exit'</span><span class="p">)</span> | ||
2719 | 2169 | <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 | 2170 | <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 | 2171 | |||
2722 | 2172 | <span class="c"># Parse the options, and remove them from sys.argv.</span> | ||
2723 | 2173 | <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 | 2174 | <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 | 2175 | <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> | ||
2726 | 2176 | <span class="c"># print('scanOptions:',sys.argv)</span> | ||
2727 | 2177 | <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 | 2178 | |||
2729 | 2179 | <span class="c"># Handle the args...</span> | ||
2730 | 2180 | |||
2731 | 2181 | <span class="c"># --gui</span> | ||
2732 | 2182 | <span class="n">gui</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">gui</span> | ||
2733 | 2183 | |||
2734 | 2184 | <span class="k">if</span> <span class="n">gui</span><span class="p">:</span> | ||
2735 | 2185 | <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 | 2186 | <span class="k">if</span> <span class="n">gui</span> <span class="o">==</span> <span class="s">'qttabs'</span><span class="p">:</span> | ||
2737 | 2187 | <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 | 2188 | <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 | 2189 | <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 | 2190 | <span class="k">else</span><span class="p">:</span> | ||
2741 | 2191 | <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 | 2192 | <span class="n">gui</span> <span class="o">=</span> <span class="s">'qt'</span> | ||
2743 | 2193 | <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 | 2194 | <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 | 2195 | <span class="n">gui</span> <span class="o">=</span> <span class="s">'qt'</span> | ||
2746 | 2196 | <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 | 2197 | <span class="k">else</span><span class="p">:</span> | ||
2748 | 2198 | <span class="n">gui</span> <span class="o">=</span> <span class="s">'qttabs'</span> | ||
2749 | 2199 | <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 | 2200 | |||
2751 | 2201 | <span class="k">assert</span> <span class="n">gui</span> | ||
2752 | 2202 | <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 | 2203 | |||
2754 | 2204 | <span class="c"># --ipython</span> | ||
2755 | 2205 | <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 | 2206 | <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 | 2207 | |||
2758 | 2208 | <span class="c"># --fullscreen</span> | ||
2759 | 2209 | <span class="c"># --minimized</span> | ||
2760 | 2210 | <span class="c"># --maximized</span> | ||
2761 | 2211 | <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 | 2212 | <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 | 2213 | <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 | 2214 | |||
2765 | 2215 | <span class="c"># --no-cache</span> | ||
2766 | 2216 | <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 | 2217 | <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 | 2218 | <span class="n">g</span><span class="o">.</span><span class="n">enableDB</span> <span class="o">=</span> <span class="bp">False</span> | ||
2769 | 2219 | |||
2770 | 2220 | <span class="c"># --no-plugins</span> | ||
2771 | 2221 | <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 | 2222 | <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 | 2223 | <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 | 2224 | |||
2775 | 2225 | <span class="c"># --no-splash</span> | ||
2776 | 2226 | <span class="c"># g.trace('--no-splash',options.no_splash_screen)</span> | ||
2777 | 2227 | <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 | 2228 | |||
2779 | 2229 | <span class="c"># --screen-shot=fn</span> | ||
2780 | 2230 | <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 | 2231 | <span class="k">if</span> <span class="n">screenshot_fn</span><span class="p">:</span> | ||
2782 | 2232 | <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 | 2233 | <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 | 2234 | |||
2785 | 2235 | <span class="c"># --script</span> | ||
2786 | 2236 | <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 | 2237 | <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 | 2238 | <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 | 2239 | <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 | 2240 | |||
2791 | 2241 | <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 | 2242 | <span class="k">if</span> <span class="n">script_name</span><span class="p">:</span> | ||
2793 | 2243 | <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 | 2244 | <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 | 2245 | <span class="c"># print('script_name',repr(script_name))</span> | ||
2796 | 2246 | <span class="k">else</span><span class="p">:</span> | ||
2797 | 2247 | <span class="n">script</span> <span class="o">=</span> <span class="bp">None</span> | ||
2798 | 2248 | <span class="c"># if trace: print('scanOptions: no script')</span> | ||
2799 | 2249 | |||
2800 | 2250 | <span class="c"># --select</span> | ||
2801 | 2251 | <span class="n">select</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">select</span> | ||
2802 | 2252 | <span class="k">if</span> <span class="n">select</span><span class="p">:</span> | ||
2803 | 2253 | <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 | 2254 | <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 | 2255 | |||
2806 | 2256 | <span class="c"># --session-restore & --session-save</span> | ||
2807 | 2257 | <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 | 2258 | <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 | 2259 | |||
2810 | 2260 | <span class="c"># --silent</span> | ||
2811 | 2261 | <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 | 2262 | <span class="c"># print('scanOptions: silentMode',g.app.silentMode)</span> | ||
2813 | 2263 | |||
2814 | 2264 | <span class="c"># --version: print the version and exit.</span> | ||
2815 | 2265 | <span class="n">versionFlag</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">version</span> | ||
2816 | 2266 | |||
2817 | 2267 | |||
2818 | 2268 | <span class="c"># --window-size</span> | ||
2819 | 2269 | <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 | 2270 | <span class="k">if</span> <span class="n">windowSize</span><span class="p">:</span> | ||
2821 | 2271 | <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 | 2272 | <span class="k">try</span><span class="p">:</span> | ||
2823 | 2273 | <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 | 2274 | <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> | ||
2825 | 2275 | <span class="n">windowSize</span> <span class="o">=</span> <span class="bp">None</span> | ||
2826 | 2276 | <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 | 2277 | |||
2828 | 2278 | <span class="c"># Compute lm.files</span> | ||
2829 | 2279 | <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 | 2280 | |||
2831 | 2281 | <span class="c"># Post-process the options.</span> | ||
2832 | 2282 | <span class="k">if</span> <span class="n">pymacs</span><span class="p">:</span> | ||
2833 | 2283 | <span class="n">script</span> <span class="o">=</span> <span class="bp">None</span> | ||
2834 | 2284 | <span class="n">windowFlag</span> <span class="o">=</span> <span class="bp">None</span> | ||
2835 | 2285 | |||
2836 | 2286 | <span class="c"># Compute the return values.</span> | ||
2837 | 2287 | <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 | 2288 | <span class="n">d</span> <span class="o">=</span> <span class="p">{</span> | ||
2839 | 2289 | <span class="s">'gui'</span><span class="p">:</span><span class="n">gui</span><span class="p">,</span> | ||
2840 | 2290 | <span class="s">'screenshot_fn'</span><span class="p">:</span><span class="n">screenshot_fn</span><span class="p">,</span> | ||
2841 | 2291 | <span class="s">'script'</span><span class="p">:</span><span class="n">script</span><span class="p">,</span> | ||
2842 | 2292 | <span class="s">'select'</span><span class="p">:</span><span class="n">select</span><span class="p">,</span> | ||
2843 | 2293 | <span class="s">'version'</span><span class="p">:</span><span class="n">versionFlag</span><span class="p">,</span> | ||
2844 | 2294 | <span class="s">'windowFlag'</span><span class="p">:</span><span class="n">windowFlag</span><span class="p">,</span> | ||
2845 | 2295 | <span class="s">'windowSize'</span><span class="p">:</span><span class="n">windowSize</span><span class="p">,</span> | ||
2846 | 2296 | <span class="p">}</span> | ||
2847 | 2297 | |||
2848 | 2298 | <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 | 2299 | |||
2850 | 2300 | <span class="k">return</span> <span class="n">d</span> | ||
2851 | 2301 | <span class="c">#@+node:ekr.20120219154958.10483: *6* LM.computeFilesList</span></div> | ||
2852 | 2302 | <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 | 2303 | |||
2854 | 2304 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2855 | 2305 | <span class="n">files</span> <span class="o">=</span> <span class="p">[]</span> | ||
2856 | 2306 | <span class="k">if</span> <span class="n">fileName</span><span class="p">:</span> | ||
2857 | 2307 | <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 | 2308 | |||
2859 | 2309 | <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 | 2310 | <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 | 2311 | <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 | 2312 | |||
2863 | 2313 | <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 | 2314 | <span class="c">#@+node:ekr.20120219154958.10487: *4* LM.doPostPluginsInit & helpers</span></div> | ||
2865 | 2315 | <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 | 2316 | |||
2867 | 2317 | <span class="sd">'''Create a Leo window for each file in the lm.files list.'''</span> | ||
2868 | 2318 | |||
2869 | 2319 | <span class="c"># Clear g.app.initing _before_ creating commanders.</span> | ||
2870 | 2320 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
2871 | 2321 | <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 | 2322 | |||
2873 | 2323 | <span class="c"># Create the main frame. Show it and all queued messages.</span> | ||
2874 | 2324 | |||
2875 | 2325 | <span class="c"># g.trace(lm.files)</span> | ||
2876 | 2326 | <span class="k">if</span> <span class="n">lm</span><span class="o">.</span><span class="n">files</span><span class="p">:</span> | ||
2877 | 2327 | <span class="n">c1</span> <span class="o">=</span> <span class="bp">None</span> | ||
2878 | 2328 | <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 | 2329 | <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 | 2330 | <span class="c"># Will give a "not found" message.</span> | ||
2881 | 2331 | <span class="c"># This can fail if the file is open in another instance of Leo.</span> | ||
2882 | 2332 | <span class="c"># assert c</span> | ||
2883 | 2333 | <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 | 2334 | <span class="k">else</span><span class="p">:</span> | ||
2885 | 2335 | <span class="n">c</span> <span class="o">=</span> <span class="n">c1</span> <span class="o">=</span> <span class="bp">None</span> | ||
2886 | 2336 | |||
2887 | 2337 | <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 | 2338 | <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 | 2339 | <span class="k">if</span> <span class="n">m</span><span class="p">:</span> | ||
2890 | 2340 | <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 | 2341 | <span class="k">if</span> <span class="n">aList</span><span class="p">:</span> | ||
2892 | 2342 | <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 | 2343 | <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 | 2344 | |||
2895 | 2345 | <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 | 2346 | <span class="c"># Create an empty frame.</span> | ||
2897 | 2347 | <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 | 2348 | <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 | 2349 | |||
2900 | 2350 | <span class="c"># Put the focus in the first-opened file.</span> | ||
2901 | 2351 | <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 | 2352 | <span class="n">c</span> <span class="o">=</span> <span class="n">c1</span> | ||
2903 | 2353 | |||
2904 | 2354 | <span class="c"># For qttabs gui, select the first-loaded tab.</span> | ||
2905 | 2355 | <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 | 2356 | <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 | 2357 | <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 | 2358 | <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 | 2359 | |||
2910 | 2360 | <span class="c"># Fix bug 844953: tell Unity which menu to use.</span> | ||
2911 | 2361 | <span class="n">c</span><span class="o">.</span><span class="n">enableMenuBar</span><span class="p">()</span> | ||
2912 | 2362 | |||
2913 | 2363 | <span class="c"># Do the final inits.</span> | ||
2914 | 2364 | <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 | 2365 | <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 | 2366 | <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> | ||
2917 | 2367 | <span class="c"># print('doPostPluginsInit: ***** set log')</span> | ||
2918 | 2368 | |||
2919 | 2369 | <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 | 2370 | <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 | 2371 | <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 | 2372 | |||
2923 | 2373 | <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 | 2374 | <span class="k">if</span> <span class="n">screenshot_fn</span><span class="p">:</span> | ||
2925 | 2375 | <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 | 2376 | <span class="k">return</span> <span class="bp">False</span> <span class="c"># Force an immediate exit.</span> | ||
2927 | 2377 | |||
2928 | 2378 | <span class="k">return</span> <span class="bp">True</span> | ||
2929 | 2379 | <span class="c">#@+node:ekr.20120219154958.10488: *5* LM.initFocusAndDraw</span></div> | ||
2930 | 2380 | <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 | 2381 | |||
2932 | 2382 | <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 | 2383 | |||
2934 | 2384 | <span class="k">if</span> <span class="ow">not</span> <span class="n">fileName</span><span class="p">:</span> | ||
2935 | 2385 | <span class="n">c</span><span class="o">.</span><span class="n">redraw</span><span class="p">()</span> | ||
2936 | 2386 | |||
2937 | 2387 | <span class="c"># Respect c's focus wishes if posssible.</span> | ||
2938 | 2388 | <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 | 2389 | <span class="n">c</span><span class="o">.</span><span class="n">bodyWantsFocus</span><span class="p">()</span> | ||
2940 | 2390 | <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 | 2391 | |||
2942 | 2392 | <span class="n">c</span><span class="o">.</span><span class="n">outerUpdate</span><span class="p">()</span> | ||
2943 | 2393 | <span class="c">#@+node:ekr.20120219154958.10489: *5* LM.make_screen_shot</span></div> | ||
2944 | 2394 | <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 | 2395 | |||
2946 | 2396 | <span class="sd">'''Create a screenshot of the present Leo outline and save it to path.'''</span> | ||
2947 | 2397 | |||
2948 | 2398 | <span class="c"># g.trace('runLeo.py',fn)</span> | ||
2949 | 2399 | |||
2950 | 2400 | <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 | 2401 | <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 | 2402 | <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 | 2403 | <span class="c">#@+node:ekr.20120219154958.10491: *4* LM.isValidPython & emergency (Tk) dialog class</span></div> | ||
2954 | 2404 | <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 | 2405 | |||
2956 | 2406 | <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 | 2407 | <span class="k">return</span> <span class="bp">True</span> | ||
2958 | 2408 | |||
2959 | 2409 | <span class="n">minimum_python_version</span> <span class="o">=</span> <span class="s">'2.6'</span> | ||
2960 | 2410 | |||
2961 | 2411 | <span class="n">message</span> <span class="o">=</span> <span class="s">"""</span><span class="se">\</span> | ||
2962 | 2412 | <span class="s"> Leo requires Python </span><span class="si">%s</span><span class="s"> or higher.</span> | ||
2963 | 2413 | <span class="s"> You may download Python from</span> | ||
2964 | 2414 | <span class="s"> http://python.org/download/</span> | ||
2965 | 2415 | <span class="s"> """</span> <span class="o">%</span> <span class="n">minimum_python_version</span> | ||
2966 | 2416 | |||
2967 | 2417 | <span class="k">try</span><span class="p">:</span> | ||
2968 | 2418 | <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 | 2419 | <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 | 2420 | <span class="k">if</span> <span class="ow">not</span> <span class="n">ok</span><span class="p">:</span> | ||
2971 | 2421 | <span class="k">print</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> | ||
2972 | 2422 | <span class="k">try</span><span class="p">:</span> | ||
2973 | 2423 | <span class="c"># g.app.gui does not exist yet.</span> | ||
2974 | 2424 | <span class="kn">import</span> <span class="nn">Tkinter</span> <span class="kn">as</span> <span class="nn">Tk</span> | ||
2975 | 2425 | <span class="c">#@+<< define emergency dialog class >></span> | ||
2976 | 2426 | <span class="c">#@+node:ekr.20120219154958.10492: *5* << define emergency dialog class >></span> | ||
2977 | 2427 | <span class="k">class</span> <span class="nc">emergencyDialog</span><span class="p">:</span> | ||
2978 | 2428 | |||
2979 | 2429 | <span class="sd">"""A class that creates an Tkinter dialog with a single OK button."""</span> | ||
2980 | 2430 | |||
2981 | 2431 | <span class="c">#@+others</span> | ||
2982 | 2432 | <span class="c">#@+node:ekr.20120219154958.10493: *6* __init__ (emergencyDialog)</span> | ||
2983 | 2433 | <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 | 2434 | |||
2985 | 2435 | <span class="sd">"""Constructor for the leoTkinterDialog class."""</span> | ||
2986 | 2436 | |||
2987 | 2437 | <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 | 2438 | <span class="bp">self</span><span class="o">.</span><span class="n">title</span> <span class="o">=</span> <span class="n">title</span> | ||
2989 | 2439 | <span class="bp">self</span><span class="o">.</span><span class="n">message</span><span class="o">=</span><span class="n">message</span> | ||
2990 | 2440 | |||
2991 | 2441 | <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 | 2442 | <span class="bp">self</span><span class="o">.</span><span class="n">defaultButtonCommand</span> <span class="o">=</span> <span class="bp">None</span> | ||
2993 | 2443 | <span class="c"># Command to call when user closes the window</span> | ||
2994 | 2444 | <span class="c"># by clicking the close box.</span> | ||
2995 | 2445 | <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 | 2446 | <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 | 2447 | <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 | 2448 | |||
2999 | 2449 | <span class="bp">self</span><span class="o">.</span><span class="n">createTopFrame</span><span class="p">()</span> | ||
3000 | 2450 | <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 | 2451 | <span class="c"># Singleton tuple.</span> | ||
3002 | 2452 | <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 | 2453 | <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 | 2454 | <span class="c">#@+node:ekr.20120219154958.10494: *6* createButtons</span> | ||
3005 | 2455 | <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 | 2456 | |||
3007 | 2457 | <span class="sd">"""Create a row of buttons.</span> | ||
3008 | 2458 | |||
3009 | 2459 | <span class="sd"> buttons is a list of dictionaries containing</span> | ||
3010 | 2460 | <span class="sd"> the properties of each button."""</span> | ||
3011 | 2461 | |||
3012 | 2462 | <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 | 2463 | <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 | 2464 | <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 | 2465 | |||
3016 | 2466 | <span class="c"># Buttons is a list of dictionaries, with an empty dictionary</span> | ||
3017 | 2467 | <span class="c"># at the end if there is only one entry.</span> | ||
3018 | 2468 | <span class="n">buttonList</span> <span class="o">=</span> <span class="p">[]</span> | ||
3019 | 2469 | <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 | 2470 | <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 | 2471 | <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 | 2472 | <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 | 2473 | <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 | 2474 | <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 | 2475 | |||
3026 | 2476 | <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 | 2477 | <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 | 2478 | <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 | 2479 | <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 | 2480 | |||
3031 | 2481 | <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 | 2482 | <span class="bp">self</span><span class="o">.</span><span class="n">defaultButtonCommand</span> <span class="o">=</span> <span class="n">command</span> | ||
3033 | 2483 | |||
3034 | 2484 | <span class="k">return</span> <span class="n">buttonList</span> | ||
3035 | 2485 | <span class="c">#@+node:ekr.20120219154958.10495: *6* createTopFrame</span> | ||
3036 | 2486 | <span class="k">def</span> <span class="nf">createTopFrame</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
3037 | 2487 | |||
3038 | 2488 | <span class="sd">"""Create the Tk.Toplevel widget for a leoTkinterDialog."""</span> | ||
3039 | 2489 | |||
3040 | 2490 | <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 | 2491 | <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 | 2492 | <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 | 2493 | <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 | 2494 | |||
3045 | 2495 | <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 | 2496 | <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 | 2497 | |||
3048 | 2498 | <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 | 2499 | <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 | 2500 | <span class="c">#@+node:ekr.20120219154958.10496: *6* okButton</span> | ||
3051 | 2501 | <span class="k">def</span> <span class="nf">okButton</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
3052 | 2502 | |||
3053 | 2503 | <span class="sd">"""Do default click action in ok button."""</span> | ||
3054 | 2504 | |||
3055 | 2505 | <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 | 2506 | <span class="bp">self</span><span class="o">.</span><span class="n">top</span> <span class="o">=</span> <span class="bp">None</span> | ||
3057 | 2507 | |||
3058 | 2508 | <span class="c">#@+node:ekr.20120219154958.10497: *6* onKey</span> | ||
3059 | 2509 | <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 | 2510 | |||
3061 | 2511 | <span class="sd">"""Handle Key events in askOk dialogs."""</span> | ||
3062 | 2512 | |||
3063 | 2513 | <span class="bp">self</span><span class="o">.</span><span class="n">okButton</span><span class="p">()</span> | ||
3064 | 2514 | |||
3065 | 2515 | <span class="k">return</span> <span class="c"># (for Tk) "break"</span> | ||
3066 | 2516 | <span class="c">#@+node:ekr.20120219154958.10498: *6* run</span> | ||
3067 | 2517 | <span class="k">def</span> <span class="nf">run</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
3068 | 2518 | |||
3069 | 2519 | <span class="sd">"""Run the modal emergency dialog."""</span> | ||
3070 | 2520 | |||
3071 | 2521 | <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 | 2522 | <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 | 2523 | |||
3074 | 2524 | <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 | 2525 | <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 | 2526 | <span class="c">#@-others</span> | ||
3077 | 2527 | <span class="c">#@-<< define emergency dialog class >></span> | ||
3078 | 2528 | <span class="n">d</span> <span class="o">=</span> <span class="n">emergencyDialog</span><span class="p">(</span> | ||
3079 | 2529 | <span class="n">title</span><span class="o">=</span><span class="s">'Python Version Error'</span><span class="p">,</span> | ||
3080 | 2530 | <span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">)</span> | ||
3081 | 2531 | <span class="n">d</span><span class="o">.</span><span class="n">run</span><span class="p">()</span> | ||
3082 | 2532 | <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> | ||
3083 | 2533 | <span class="k">pass</span> | ||
3084 | 2534 | <span class="k">return</span> <span class="n">ok</span> | ||
3085 | 2535 | <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> | ||
3086 | 2536 | <span class="k">print</span><span class="p">(</span><span class="s">"isValidPython: unexpected exception: g.CheckVersion"</span><span class="p">)</span> | ||
3087 | 2537 | <span class="n">traceback</span><span class="o">.</span><span class="n">print_exc</span><span class="p">()</span> | ||
3088 | 2538 | <span class="k">return</span> <span class="mi">0</span> | ||
3089 | 2539 | <span class="c">#@+node:ekr.20120223062418.10393: *4* LM.loadLocalFile & helper</span></div> | ||
3090 | 2540 | <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 | 2541 | |||
3092 | 2542 | <span class="sd">'''Completely read a file, creating the corresonding outline.</span> | ||
3093 | 2543 | |||
3094 | 2544 | <span class="sd"> 1. If fn is an existing .leo file (possibly zipped), read it twice:</span> | ||
3095 | 2545 | <span class="sd"> the first time with a nullGui to discover settings,</span> | ||
3096 | 2546 | <span class="sd"> the second time with the requested gui to create the outline.</span> | ||
3097 | 2547 | |||
3098 | 2548 | <span class="sd"> 2. If fn is an external file:</span> | ||
3099 | 2549 | <span class="sd"> get settings from the leoSettings.leo and myLeoSetting.leo, then</span> | ||
3100 | 2550 | <span class="sd"> create a "wrapper" outline continain an @file node for the external file.</span> | ||
3101 | 2551 | |||
3102 | 2552 | <span class="sd"> 3. If fn is empty:</span> | ||
3103 | 2553 | <span class="sd"> get settings from the leoSettings.leo and myLeoSetting.leo or default settings,</span> | ||
3104 | 2554 | <span class="sd"> or open an empty outline.</span> | ||
3105 | 2555 | <span class="sd"> '''</span> | ||
3106 | 2556 | |||
3107 | 2557 | <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 | 2558 | <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 | 2559 | |||
3110 | 2560 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
3111 | 2561 | |||
3112 | 2562 | <span class="c"># Step 0: Return if the file is already open.</span> | ||
3113 | 2563 | <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 | 2564 | <span class="k">if</span> <span class="n">fn</span><span class="p">:</span> | ||
3115 | 2565 | <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 | 2566 | <span class="k">if</span> <span class="n">c</span><span class="p">:</span> | ||
3117 | 2567 | <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 | 2568 | <span class="k">return</span> <span class="n">c</span> | ||
3119 | 2569 | |||
3120 | 2570 | <span class="c"># Step 1: get the previous settings.</span> | ||
3121 | 2571 | <span class="c"># For .leo files (and zipped .leo files) this pre-reads the file in a null gui.</span> | ||
3122 | 2572 | <span class="c"># Otherwise, get settings from leoSettings.leo, myLeoSettings.leo, or default settings.</span> | ||
3123 | 2573 | <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 | 2574 | |||
3125 | 2575 | <span class="c"># Step 2: open the outline in the requested gui.</span> | ||
3126 | 2576 | <span class="c"># For .leo files (and zipped .leo file) this opens the file a second time.</span> | ||
3127 | 2577 | <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 | 2578 | <span class="k">return</span> <span class="n">c</span> | ||
3129 | 2579 | <span class="c">#@+node:ekr.20120223062418.10394: *5* LM.openFileByName & helpers</span></div> | ||
3130 | 2580 | <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 | 2581 | |||
3132 | 2582 | <span class="sd">'''Read the local file whose full path is fn using the given gui.</span> | ||
3133 | 2583 | <span class="sd"> fn may be a Leo file (including .leo or zipped file) or an external file.</span> | ||
3134 | 2584 | |||
3135 | 2585 | <span class="sd"> This is not a pre-read: the previousSettings always exist and</span> | ||
3136 | 2586 | <span class="sd"> the commander created here persists until the user closes the outline.</span> | ||
3137 | 2587 | |||
3138 | 2588 | <span class="sd"> Reads the entire outline if fn exists and is a .leo file or zipped file.</span> | ||
3139 | 2589 | <span class="sd"> Creates an empty outline if fn is a non-existent Leo file.</span> | ||
3140 | 2590 | <span class="sd"> Creates an wrapper outline if fn is an external file, existing or not.</span> | ||
3141 | 2591 | <span class="sd"> '''</span> | ||
3142 | 2592 | |||
3143 | 2593 | <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 | 2594 | <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 | 2595 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
3146 | 2596 | |||
3147 | 2597 | <span class="c"># Disable the log.</span> | ||
3148 | 2598 | <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 | 2599 | <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 | 2600 | |||
3151 | 2601 | <span class="c"># Create the a commander for the .leo file.</span> | ||
3152 | 2602 | <span class="c"># Important. The settings don't matter for pre-reads!</span> | ||
3153 | 2603 | <span class="c"># For second read, the settings for the file are *exactly* previousSettings.</span> | ||
3154 | 2604 | <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 | 2605 | <span class="n">previousSettings</span><span class="o">=</span><span class="n">previousSettings</span><span class="p">)</span> | ||
3156 | 2606 | <span class="k">assert</span> <span class="n">c</span> | ||
3157 | 2607 | |||
3158 | 2608 | <span class="c"># Open the file, if possible.</span> | ||
3159 | 2609 | <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 | 2610 | <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 | 2611 | |||
3162 | 2612 | <span class="c"># Enable the log.</span> | ||
3163 | 2613 | <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 | 2614 | <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 | 2615 | |||
3166 | 2616 | <span class="c"># Phase 2: Create the outline.</span> | ||
3167 | 2617 | <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 | 2618 | <span class="k">if</span> <span class="n">theFile</span><span class="p">:</span> | ||
3169 | 2619 | <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 | 2620 | <span class="c">### The log is not set properly here. ###</span> | ||
3171 | 2621 | <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 | 2622 | <span class="c"># Call c.fileCommands.openLeoFile to read the .leo file.</span> | ||
3173 | 2623 | <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 | 2624 | <span class="k">else</span><span class="p">:</span> | ||
3175 | 2625 | <span class="c"># Create a wrapper .leo file if:</span> | ||
3176 | 2626 | <span class="c"># a) fn is a .leo file that does not exist or</span> | ||
3177 | 2627 | <span class="c"># b) fn is an external file, existing or not.</span> | ||
3178 | 2628 | <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 | 2629 | <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 | 2630 | |||
3181 | 2631 | <span class="c"># Phase 3: Complete the initialization.</span> | ||
3182 | 2632 | <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 | 2633 | <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> | ||
3184 | 2634 | <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 | 2635 | <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 | 2636 | <span class="k">return</span> <span class="n">c</span> | ||
3187 | 2637 | <span class="c">#@+node:ekr.20120223062418.10405: *6* LM.createMenu</span></div> | ||
3188 | 2638 | <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 | 2639 | |||
3190 | 2640 | <span class="c"># lm = self</span> | ||
3191 | 2641 | |||
3192 | 2642 | <span class="c"># Create the menu as late as possible so it can use user commands.</span> | ||
3193 | 2643 | <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 | 2644 | <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 | 2645 | <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 | 2646 | <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 | 2647 | <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 | 2648 | <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 | 2649 | |||
3200 | 2650 | <span class="c"># Fix bug 844953: tell Unity which menu to use.</span> | ||
3201 | 2651 | <span class="n">c</span><span class="o">.</span><span class="n">enableMenuBar</span><span class="p">()</span> | ||
3202 | 2652 | <span class="c">#@+node:ekr.20120223062418.10406: *6* LM.findOpenFile</span></div> | ||
3203 | 2653 | <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 | 2654 | |||
3205 | 2655 | <span class="c"># lm = self</span> | ||
3206 | 2656 | |||
3207 | 2657 | <span class="k">def</span> <span class="nf">munge</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> | ||
3208 | 2658 | <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 | 2659 | |||
3210 | 2660 | <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 | 2661 | <span class="n">c</span> <span class="o">=</span> <span class="n">frame</span><span class="o">.</span><span class="n">c</span> | ||
3212 | 2662 | <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 | 2663 | <span class="n">frame</span><span class="o">.</span><span class="n">bringToFront</span><span class="p">()</span> | ||
3214 | 2664 | <span class="n">c</span><span class="o">.</span><span class="n">setLog</span><span class="p">()</span> | ||
3215 | 2665 | <span class="c"># 2011/11/21: selecting the new tab ensures focus is set.</span> | ||
3216 | 2666 | <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 | 2667 | <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 | 2668 | <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 | 2669 | <span class="n">c</span><span class="o">.</span><span class="n">outerUpdate</span><span class="p">()</span> | ||
3220 | 2670 | <span class="k">return</span> <span class="n">c</span> | ||
3221 | 2671 | |||
3222 | 2672 | <span class="k">return</span> <span class="bp">None</span> | ||
3223 | 2673 | <span class="c">#@+node:ekr.20120223062418.10407: *6* LM.finishOpen</span></div> | ||
3224 | 2674 | <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 | 2675 | |||
3226 | 2676 | <span class="c"># lm = self</span> | ||
3227 | 2677 | <span class="n">k</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">k</span> | ||
3228 | 2678 | <span class="k">assert</span> <span class="n">k</span> | ||
3229 | 2679 | |||
3230 | 2680 | <span class="c"># New in Leo 4.6: provide an official way for very late initialization.</span> | ||
3231 | 2681 | <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 | 2682 | <span class="n">c</span><span class="o">.</span><span class="n">initAfterLoad</span><span class="p">()</span> | ||
3233 | 2683 | <span class="n">c</span><span class="o">.</span><span class="n">redraw</span><span class="p">()</span> | ||
3234 | 2684 | |||
3235 | 2685 | <span class="c"># chapterController.finishCreate must be called after the first real redraw</span> | ||
3236 | 2686 | <span class="c"># because it requires a valid value for c.rootPosition().</span> | ||
3237 | 2687 | <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 | 2688 | <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 | 2689 | <span class="n">c</span><span class="o">.</span><span class="n">initialFocusHelper</span><span class="p">()</span> | ||
3240 | 2690 | <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 | 2691 | <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 | 2692 | |||
3243 | 2693 | <span class="c">#@+node:ekr.20120223062418.10408: *6* LM.initWrapperLeoFile</span></div> | ||
3244 | 2694 | <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 | 2695 | |||
3246 | 2696 | <span class="sd">'''Create an empty file if the external fn is empty.</span> | ||
3247 | 2697 | |||
3248 | 2698 | <span class="sd"> Otherwise, create an @edit or @file node for the external file.</span> | ||
3249 | 2699 | <span class="sd"> '''</span> | ||
3250 | 2700 | |||
3251 | 2701 | <span class="c"># lm = self</span> | ||
3252 | 2702 | |||
3253 | 2703 | <span class="c"># Use the config params to set the size and location of the window.</span> | ||
3254 | 2704 | <span class="n">frame</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">frame</span> | ||
3255 | 2705 | <span class="n">frame</span><span class="o">.</span><span class="n">setInitialWindowGeometry</span><span class="p">()</span> | ||
3256 | 2706 | <span class="n">frame</span><span class="o">.</span><span class="n">deiconify</span><span class="p">()</span> | ||
3257 | 2707 | <span class="n">frame</span><span class="o">.</span><span class="n">lift</span><span class="p">()</span> | ||
3258 | 2708 | <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 | 2709 | <span class="c"># Resize the _new_ frame.</span> | ||
3260 | 2710 | |||
3261 | 2711 | <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 | 2712 | <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 | 2713 | <span class="c"># Create an empty @edit node unless fn is an .leo file.</span> | ||
3264 | 2714 | <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 | 2715 | <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 | 2716 | <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 | 2717 | <span class="c"># 2011/10/10: Create an @file node.</span> | ||
3268 | 2718 | <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 | 2719 | <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 | 2720 | <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 | 2721 | <span class="k">else</span><span class="p">:</span> | ||
3272 | 2722 | <span class="c"># Create an @edit node.</span> | ||
3273 | 2723 | <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 | 2724 | <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 | 2725 | <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 | 2726 | <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 | 2727 | <span class="k">if</span> <span class="n">p</span><span class="p">:</span> | ||
3278 | 2728 | <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 | 2729 | <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 | 2730 | <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 | 2731 | |||
3282 | 2732 | <span class="c"># chapterController.finishCreate must be called after the first real redraw</span> | ||
3283 | 2733 | <span class="c"># because it requires a valid value for c.rootPosition().</span> | ||
3284 | 2734 | <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 | 2735 | <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 | 2736 | |||
3287 | 2737 | <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 | 2738 | <span class="c"># Mark the outline clean.</span> | ||
3289 | 2739 | <span class="c"># This makes it easy to open non-Leo files for quick study.</span> | ||
3290 | 2740 | <span class="k">return</span> <span class="n">c</span> | ||
3291 | 2741 | <span class="c">#@+node:ekr.20120223062418.10419: *6* LM.isLeoFile & LM.isZippedFile</span></div> | ||
3292 | 2742 | <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 | 2743 | |||
3294 | 2744 | <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 | 2745 | </div> | ||
3296 | 2746 | <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 | 2747 | |||
3298 | 2748 | <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 | 2749 | <span class="c">#@+node:ekr.20120224161905.10030: *6* LM.openLeoOrZipFile</span></div> | ||
3300 | 2750 | <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 | 2751 | |||
3302 | 2752 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
3303 | 2753 | |||
3304 | 2754 | <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 | 2755 | |||
3306 | 2756 | <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 | 2757 | <span class="k">if</span> <span class="n">zipped</span><span class="p">:</span> | ||
3308 | 2758 | <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 | 2759 | <span class="k">else</span><span class="p">:</span> | ||
3310 | 2760 | <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 | 2761 | <span class="k">else</span><span class="p">:</span> | ||
3312 | 2762 | <span class="n">theFile</span> <span class="o">=</span> <span class="bp">None</span> | ||
3313 | 2763 | |||
3314 | 2764 | <span class="k">return</span> <span class="n">theFile</span> | ||
3315 | 2765 | <span class="c">#@+node:ekr.20120223062418.10416: *6* LM.openLeoFile</span></div> | ||
3316 | 2766 | <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 | 2767 | |||
3318 | 2768 | <span class="c"># lm = self</span> | ||
3319 | 2769 | <span class="k">try</span><span class="p">:</span> | ||
3320 | 2770 | <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 | 2771 | <span class="k">return</span> <span class="n">theFile</span> | ||
3322 | 2772 | <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> | ||
3323 | 2773 | <span class="c"># Do not use string + here: it will fail for non-ascii strings!</span> | ||
3324 | 2774 | <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 | 2775 | <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 | 2776 | <span class="k">return</span> <span class="bp">None</span> | ||
3327 | 2777 | <span class="c">#@+node:ekr.20120223062418.10410: *6* LM.openZipFile</span></div> | ||
3328 | 2778 | <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 | 2779 | |||
3330 | 2780 | <span class="c"># lm = self</span> | ||
3331 | 2781 | <span class="k">try</span><span class="p">:</span> | ||
3332 | 2782 | <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 | 2783 | <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 | 2784 | |||
3335 | 2785 | <span class="c"># Read the file into an StringIO file.</span> | ||
3336 | 2786 | <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 | 2787 | <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 | 2788 | <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 | 2789 | <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 | 2790 | <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 | 2791 | <span class="k">return</span> <span class="n">StringIO</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> | ||
3342 | 2792 | |||
3343 | 2793 | <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> | ||
3344 | 2794 | <span class="c"># Do not use string + here: it will fail for non-ascii strings!</span> | ||
3345 | 2795 | <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 | 2796 | <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 | 2797 | <span class="k">return</span> <span class="bp">None</span> | ||
3348 | 2798 | <span class="c">#@+node:ekr.20120223062418.10412: *6* LM.readOpenedLeoFile</span></div> | ||
3349 | 2799 | <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 | 2800 | |||
3351 | 2801 | <span class="c"># New in Leo 4.10: The open1 event does not allow an override of the init logic.</span> | ||
3352 | 2802 | <span class="k">assert</span> <span class="n">theFile</span> | ||
3353 | 2803 | <span class="c"># lm = self</span> | ||
3354 | 2804 | <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 | 2805 | <span class="n">readAtFileNodesFlag</span><span class="o">=</span><span class="n">readAtFileNodesFlag</span><span class="p">)</span> | ||
3356 | 2806 | <span class="c"># closes file.</span> | ||
3357 | 2807 | <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> | ||
3358 | 2808 | <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 | 2809 | <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 | 2810 | <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 | 2811 | <span class="k">else</span><span class="p">:</span> | ||
3362 | 2812 | <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 | 2813 | <span class="k">return</span> <span class="n">ok</span> | ||
3364 | 2814 | <span class="c">#@-others</span> | ||
3365 | 2815 | |||
3366 | 2816 | <span class="c">#@+node:ekr.20120211121736.10831: ** class LogManager</span></div></div> | ||
3367 | 2817 | <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 | 2818 | |||
3369 | 2819 | <span class="sd">'''A class to handle the global log, and especially</span> | ||
3370 | 2820 | <span class="sd"> switching the log from commander to commander.'''</span> | ||
3371 | 2821 | |||
3372 | 2822 | <span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
3373 | 2823 | |||
3374 | 2824 | <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 | 2825 | <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 | 2826 | |||
3377 | 2827 | <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 | 2828 | <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 | 2829 | <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 | 2830 | <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 | 2831 | <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 | 2832 | <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 | 2833 | |||
3384 | 2834 | <span class="c">#@+others</span> | ||
3385 | 2835 | <span class="c">#@+node:ekr.20120211121736.10834: *3* LogM.setLog, lockLog, unlocklog</span> | ||
3386 | 2836 | <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 | 2837 | |||
3388 | 2838 | <span class="sd">"""set the frame to which log messages will go"""</span> | ||
3389 | 2839 | |||
3390 | 2840 | <span class="c"># print("app.setLog:",log,g.callers())</span> | ||
3391 | 2841 | <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 | 2842 | <span class="bp">self</span><span class="o">.</span><span class="n">log</span> <span class="o">=</span> <span class="n">log</span> | ||
3393 | 2843 | </div> | ||
3394 | 2844 | <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 | 2845 | <span class="sd">"""Disable changes to the log"""</span> | ||
3396 | 2846 | <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">True</span> | ||
3397 | 2847 | </div> | ||
3398 | 2848 | <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 | 2849 | <span class="sd">"""Enable changes to the log"""</span> | ||
3400 | 2850 | <span class="bp">self</span><span class="o">.</span><span class="n">logIsLocked</span> <span class="o">=</span> <span class="bp">False</span> | ||
3401 | 2851 | <span class="c">#@+node:ekr.20120211121736.10836: *3* LogM.writeWaitingLog</span></div> | ||
3402 | 2852 | <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 | 2853 | |||
3404 | 2854 | <span class="n">trace</span> <span class="o">=</span> <span class="bp">False</span> | ||
3405 | 2855 | <span class="n">lm</span> <span class="o">=</span> <span class="bp">self</span> | ||
3406 | 2856 | |||
3407 | 2857 | <span class="k">if</span> <span class="n">trace</span><span class="p">:</span> | ||
3408 | 2858 | <span class="c"># Do not call g.es, g.es_print, g.pr or g.trace here!</span> | ||
3409 | 2859 | <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 | 2860 | <span class="c"># print('writeWaitingLog',g.callers())</span> | ||
3411 | 2861 | <span class="c"># import sys ; print('writeWaitingLog: argv',sys.argv)</span> | ||
3412 | 2862 | |||
3413 | 2863 | <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 | 2864 | <span class="k">return</span> | ||
3415 | 2865 | |||
3416 | 2866 | <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">unitTesting</span><span class="p">:</span> | ||
3417 | 2867 | <span class="n">lm</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> | ||
3418 | 2868 | <span class="n">lm</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> | ||
3419 | 2869 | <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 | 2870 | <span class="k">return</span> | ||
3421 | 2871 | |||
3422 | 2872 | <span class="n">table</span> <span class="o">=</span> <span class="p">[</span> | ||
3423 | 2873 | <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 | 2874 | <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 | 2875 | <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 | 2876 | <span class="p">]</span> | ||
3427 | 2877 | <span class="n">table</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> | ||
3428 | 2878 | |||
3429 | 2879 | <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 | 2880 | <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 | 2881 | |||
3432 | 2882 | <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 | 2883 | <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 | 2884 | <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 | 2885 | <span class="k">print</span><span class="p">(</span><span class="s">''</span><span class="p">)</span> | ||
3436 | 2886 | <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 | 2887 | <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 | 2888 | <span class="k">print</span><span class="p">(</span><span class="s">'** caching disabled'</span><span class="p">)</span> | ||
3439 | 2889 | <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 | 2890 | <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 | 2891 | <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 | 2892 | <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 | 2893 | <span class="k">print</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> | ||
3444 | 2894 | <span class="n">lm</span><span class="o">.</span><span class="n">printWaiting</span> <span class="o">=</span> <span class="p">[]</span> | ||
3445 | 2895 | |||
3446 | 2896 | <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 | 2897 | <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 | 2898 | <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 | 2899 | <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 | 2900 | <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 | 2901 | <span class="c"># The caller must write the newlines.</span> | ||
3452 | 2902 | <span class="n">lm</span><span class="o">.</span><span class="n">logWaiting</span> <span class="o">=</span> <span class="p">[]</span> | ||
3453 | 2903 | |||
3454 | 2904 | <span class="c"># Essential when opening multiple files...</span> | ||
3455 | 2905 | <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 | 2906 | <span class="c">#@-others</span> | ||
3457 | 2907 | <span class="c">#@+node:ekr.20120223062418.10420: ** class PreviousSettings</span></div></div> | ||
3458 | 2908 | <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 | 2909 | |||
3460 | 2910 | <span class="sd">'''A class holding the settings and shortcuts dictionaries</span> | ||
3461 | 2911 | <span class="sd"> that are computed in the first pass when loading local</span> | ||
3462 | 2912 | <span class="sd"> files and passed to the second pass.'''</span> | ||
3463 | 2913 | |||
3464 | 2914 | <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 | 2915 | |||
3466 | 2916 | <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 | 2917 | <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 | 2918 | |||
3469 | 2919 | <span class="bp">self</span><span class="o">.</span><span class="n">settingsDict</span> <span class="o">=</span> <span class="n">settingsDict</span> | ||
3470 | 2920 | <span class="bp">self</span><span class="o">.</span><span class="n">shortcutsDict</span> <span class="o">=</span> <span class="n">shortcutsDict</span> | ||
3471 | 2921 | |||
3472 | 2922 | <span class="k">def</span> <span class="nf">__repr__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
3473 | 2923 | |||
3474 | 2924 | <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 | 2925 | <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 | 2926 | |||
3477 | 2927 | <span class="n">__str__</span> <span class="o">=</span> <span class="n">__repr__</span> | ||
3478 | 2928 | <span class="c">#@+node:ekr.20120225072226.10283: ** class RecentFilesManager</span></div> | ||
3479 | 2929 | <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 | 2930 | |||
3481 | 2931 | <span class="sd">'''A class to manipulate leoRecentFiles.txt.'''</span> | ||
3482 | 2932 | |||
3483 | 2933 | <span class="k">def</span> <span class="nf">__init__</span> <span class="p">(</span><span class="bp">self</span><span class="p">):</span> | ||
3484 | 2934 | |||
3485 | 2935 | <span class="bp">self</span><span class="o">.</span><span class="n">groupedMenus</span> <span class="o">=</span> <span class="p">[]</span> | ||
3486 | 2936 | <span class="c"># Set in rf.createRecentFilesMenuItems.</span> | ||
3487 | 2937 | <span class="bp">self</span><span class="o">.</span><span class="n">recentFiles</span> <span class="o">=</span> <span class="p">[]</span> | ||
3488 | 2938 | <span class="c"># List of g.Bunches describing .leoRecentFiles.txt files.</span> | ||
3489 | 2939 | <span class="bp">self</span><span class="o">.</span><span class="n">recentFileMessageWritten</span> <span class="o">=</span> <span class="bp">False</span> | ||
3490 | 2940 | <span class="c"># To suppress all but the first message.</span> | ||
3491 | 2941 | <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 | 2942 | <span class="c"># Will be set later.</span> | ||
3493 | 2943 | |||
3494 | 2944 | <span class="c">#@+others</span> | ||
3495 | 2945 | <span class="c">#@+node:ekr.20041201080436: *3* rf.appendToRecentFiles</span> | ||
3496 | 2946 | <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 | 2947 | |||
3498 | 2948 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3499 | 2949 | |||
3500 | 2950 | <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 | 2951 | |||
3502 | 2952 | <span class="k">def</span> <span class="nf">munge</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> | ||
3503 | 2953 | <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 | 2954 | |||
3505 | 2955 | <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 | 2956 | <span class="c"># Remove all variants of name.</span> | ||
3507 | 2957 | <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 | 2958 | <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 | 2959 | <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 | 2960 | |||
3511 | 2961 | <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 | 2962 | <span class="c">#@+node:ekr.20120225072226.10289: *3* rf.cleanRecentFiles</span></div> | ||
3513 | 2963 | <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 | 2964 | |||
3515 | 2965 | <span class="sd">'''Removed items from the recent files list that are no longer valid.'''</span> | ||
3516 | 2966 | |||
3517 | 2967 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3518 | 2968 | |||
3519 | 2969 | <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 | 2970 | <span class="k">if</span> <span class="ow">not</span> <span class="n">dat</span><span class="p">:</span> | ||
3521 | 2971 | <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 | 2972 | <span class="k">return</span> | ||
3523 | 2973 | |||
3524 | 2974 | <span class="n">changes</span> <span class="o">=</span> <span class="p">[]</span> | ||
3525 | 2975 | <span class="n">replace</span> <span class="o">=</span> <span class="bp">None</span> | ||
3526 | 2976 | <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 | 2977 | <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 | 2978 | <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 | 2979 | <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 | 2980 | <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 | 2981 | <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 | 2982 | <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 | 2983 | <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 | 2984 | |||
3535 | 2985 | <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 | 2986 | |||
3537 | 2987 | <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span> <span class="o">=</span> <span class="p">[]</span> | ||
3538 | 2988 | |||
3539 | 2989 | <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 | 2990 | <span class="n">t</span> <span class="o">=</span> <span class="n">i</span> | ||
3541 | 2991 | <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 | 2992 | <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 | 2993 | <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 | 2994 | |||
3545 | 2995 | <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 | 2996 | <span class="c"># Force the write message.</span> | ||
3547 | 2997 | <span class="c">#@+node:ekr.20120225072226.10297: *3* rf.clearRecentFiles</span></div> | ||
3548 | 2998 | <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 | 2999 | |||
3550 | 3000 | <span class="sd">"""Clear the recent files list, then add the present file."""</span> | ||
3551 | 3001 | |||
3552 | 3002 | <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 | 3003 | |||
3554 | 3004 | <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 | 3005 | |||
3556 | 3006 | <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 | 3007 | <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 | 3008 | |||
3559 | 3009 | <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 | 3010 | <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 | 3011 | <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 | 3012 | |||
3563 | 3013 | <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 | 3014 | |||
3565 | 3015 | <span class="c"># Write the file immediately.</span> | ||
3566 | 3016 | <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 | 3017 | <span class="c"># Force the write message.</span> | ||
3568 | 3018 | <span class="c">#@+node:ekr.20120225072226.10301: *3* rf.createRecentFilesMenuItems</span></div> | ||
3569 | 3019 | <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 | 3020 | |||
3571 | 3021 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3572 | 3022 | <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 | 3023 | |||
3574 | 3024 | <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 | 3025 | |||
3576 | 3026 | <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 | 3027 | <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 | 3028 | <span class="k">return</span> | ||
3579 | 3029 | |||
3580 | 3030 | <span class="c"># Delete all previous entries.</span> | ||
3581 | 3031 | <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 | 3032 | |||
3583 | 3033 | <span class="c"># Create the permanent (static) menu entries.</span> | ||
3584 | 3034 | <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 | 3035 | <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 | 3036 | |||
3587 | 3037 | <span class="c"># Create all the other entries (a maximum of 36).</span> | ||
3588 | 3038 | <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 | 3039 | <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span> | ||
3590 | 3040 | <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 | 3041 | |||
3592 | 3042 | <span class="c"># see if we're grouping when files occur in more than one place</span> | ||
3593 | 3043 | <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 | 3044 | <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 | 3045 | <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 | 3046 | |||
3597 | 3047 | <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 | 3048 | <span class="n">dirCount</span> <span class="o">=</span> <span class="p">{}</span> | ||
3599 | 3049 | <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 | 3050 | <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 | 3051 | <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 | 3052 | <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 | 3053 | <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 | 3054 | |||
3605 | 3055 | <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 | 3056 | <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 | 3057 | <span class="k">continue</span> <span class="c"># happens with empty list/new file</span> | ||
3608 | 3058 | |||
3609 | 3059 | <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 | 3060 | <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 | 3061 | |||
3612 | 3062 | <span class="k">if</span> <span class="n">groupedEntries</span><span class="p">:</span> | ||
3613 | 3063 | <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 | 3064 | |||
3615 | 3065 | <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 | 3066 | |||
3617 | 3067 | <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 | 3068 | <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 | 3069 | <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 | 3070 | <span class="c"># acts as a flag for the need to create the menu</span> | ||
3621 | 3071 | <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 | 3072 | <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 | 3073 | <span class="k">else</span><span class="p">:</span> <span class="c"># single occurence, no submenu</span> | ||
3624 | 3074 | <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 | 3075 | <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 | 3076 | |||
3627 | 3077 | <span class="k">else</span><span class="p">:</span> <span class="c"># original behavior</span> | ||
3628 | 3078 | <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 | 3079 | <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 | 3080 | <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 | 3081 | <span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span> | ||
3632 | 3082 | |||
3633 | 3083 | <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 | 3084 | <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 | 3085 | <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 | 3086 | <span class="c">#@+node:ekr.20120225072226.10286: *3* rf.getRecentFiles</span></div> | ||
3637 | 3087 | <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 | 3088 | |||
3639 | 3089 | <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">recentFiles</span> | ||
3640 | 3090 | <span class="c">#@+node:ekr.20120225072226.10304: *3* rf.getRecentFilesTable</span></div> | ||
3641 | 3091 | <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 | 3092 | |||
3643 | 3093 | <span class="k">return</span> <span class="p">(</span> | ||
3644 | 3094 | <span class="s">"*clear-recent-files"</span><span class="p">,</span> | ||
3645 | 3095 | <span class="s">"*clean-recent-files"</span><span class="p">,</span> | ||
3646 | 3096 | <span class="s">"*sort-recent-files"</span><span class="p">,</span> | ||
3647 | 3097 | <span class="c"># ("-",None,None),</span> | ||
3648 | 3098 | <span class="p">)</span> | ||
3649 | 3099 | <span class="c">#@+node:ekr.20070224115832: *3* rf.readRecentFiles & helpers</span></div> | ||
3650 | 3100 | <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 | 3101 | |||
3652 | 3102 | <span class="sd">'''Read all .leoRecentFiles.txt files.'''</span> | ||
3653 | 3103 | |||
3654 | 3104 | <span class="c"># The order of files in this list affects the order of the recent files list.</span> | ||
3655 | 3105 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3656 | 3106 | <span class="n">seen</span> <span class="o">=</span> <span class="p">[]</span> | ||
3657 | 3107 | <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 | 3108 | |||
3659 | 3109 | <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="p">(</span> | ||
3660 | 3110 | <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 | 3111 | <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 | 3112 | <span class="n">localConfigPath</span><span class="p">,</span> | ||
3663 | 3113 | <span class="p">):</span> | ||
3664 | 3114 | <span class="k">if</span> <span class="n">path</span><span class="p">:</span> | ||
3665 | 3115 | <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 | 3116 | <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 | 3117 | <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 | 3118 | <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 | 3119 | |||
3670 | 3120 | <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 | 3121 | <span class="n">rf</span><span class="o">.</span><span class="n">createRecentFiles</span><span class="p">()</span> | ||
3672 | 3122 | <span class="c">#@+node:ekr.20061010121944: *4* rf.createRecentFiles</span></div> | ||
3673 | 3123 | <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 | 3124 | |||
3675 | 3125 | <span class="sd">'''Trye to reate .leoRecentFiles.txt in</span> | ||
3676 | 3126 | <span class="sd"> - the users home directory first,</span> | ||
3677 | 3127 | <span class="sd"> - Leo's config directory second.'''</span> | ||
3678 | 3128 | |||
3679 | 3129 | <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 | 3130 | <span class="k">if</span> <span class="n">theDir</span><span class="p">:</span> | ||
3681 | 3131 | <span class="k">try</span><span class="p">:</span> | ||
3682 | 3132 | <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 | 3133 | <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 | 3134 | <span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | ||
3685 | 3135 | <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 | 3136 | <span class="k">return</span> | ||
3687 | 3137 | <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> | ||
3688 | 3138 | <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 | 3139 | <span class="n">g</span><span class="o">.</span><span class="n">es_exception</span><span class="p">()</span> | ||
3690 | 3140 | <span class="c">#@+node:ekr.20050424115658: *4* rf.readRecentFilesFile</span></div> | ||
3691 | 3141 | <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 | 3142 | |||
3693 | 3143 | <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 | 3144 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3695 | 3145 | <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 | 3146 | <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 | 3147 | <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> | ||
3698 | 3148 | <span class="k">try</span><span class="p">:</span> | ||
3699 | 3149 | <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> | ||
3700 | 3150 | <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 | 3151 | <span class="k">else</span><span class="p">:</span> | ||
3702 | 3152 | <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 | 3153 | <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> | ||
3704 | 3154 | <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 | 3155 | <span class="k">return</span> <span class="bp">False</span> | ||
3706 | 3156 | |||
3707 | 3157 | <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 | 3158 | <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 | 3159 | <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 | 3160 | <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 | 3161 | <span class="k">if</span> <span class="n">lines</span><span class="p">:</span> | ||
3712 | 3162 | <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 | 3163 | <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 | 3164 | |||
3715 | 3165 | <span class="k">return</span> <span class="n">ok</span> | ||
3716 | 3166 | <span class="c">#@+node:ekr.20120225072226.10285: *3* rf.sanitize</span></div> | ||
3717 | 3167 | <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 | 3168 | |||
3719 | 3169 | <span class="sd">'''Return a sanitized file name.'''</span> | ||
3720 | 3170 | |||
3721 | 3171 | <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 | 3172 | <span class="k">return</span> <span class="bp">None</span> | ||
3723 | 3173 | |||
3724 | 3174 | <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 | 3175 | <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 | 3176 | <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 | 3177 | |||
3728 | 3178 | <span class="k">return</span> <span class="n">name</span> <span class="ow">or</span> <span class="bp">None</span> | ||
3729 | 3179 | <span class="c">#@+node:ekr.20120215072959.12478: *3* rf.setRecentFiles</span></div> | ||
3730 | 3180 | <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 | 3181 | |||
3732 | 3182 | <span class="sd">'''Update the recent files list.'''</span> | ||
3733 | 3183 | |||
3734 | 3184 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3735 | 3185 | <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 | 3186 | <span class="c">#@+node:ekr.20120225072226.10293: *3* rf.sortRecentFiles</span></div> | ||
3737 | 3187 | <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 | 3188 | |||
3739 | 3189 | <span class="sd">'''Sort the recent files list.'''</span> | ||
3740 | 3190 | |||
3741 | 3191 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3742 | 3192 | |||
3743 | 3193 | <span class="n">aList</span> <span class="o">=</span> <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span> | ||
3744 | 3194 | <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 | 3195 | <span class="n">aList</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span> | ||
3746 | 3196 | |||
3747 | 3197 | <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span> <span class="o">=</span> <span class="p">[]</span> | ||
3748 | 3198 | <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 | 3199 | <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 | 3200 | |||
3751 | 3201 | <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 | 3202 | <span class="c"># Force the write message.</span> | ||
3753 | 3203 | <span class="c">#@+node:ekr.20031218072017.2083: *3* rf.updateRecentFiles</span></div> | ||
3754 | 3204 | <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 | 3205 | |||
3756 | 3206 | <span class="sd">"""Create the RecentFiles menu. May be called with Null fileName."""</span> | ||
3757 | 3207 | |||
3758 | 3208 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3759 | 3209 | |||
3760 | 3210 | <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 | 3211 | |||
3762 | 3212 | <span class="k">def</span> <span class="nf">munge</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> | ||
3763 | 3213 | <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 | 3214 | <span class="k">def</span> <span class="nf">munge2</span><span class="p">(</span><span class="n">name</span><span class="p">):</span> | ||
3765 | 3215 | <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 | 3216 | |||
3767 | 3217 | <span class="c"># Update the recent files list in all windows.</span> | ||
3768 | 3218 | <span class="k">if</span> <span class="n">fileName</span><span class="p">:</span> | ||
3769 | 3219 | <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 | 3220 | <span class="c"># Remove all versions of the file name.</span> | ||
3771 | 3221 | <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 | 3222 | <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 | 3223 | <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 | 3224 | <span class="p">):</span> | ||
3775 | 3225 | <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 | 3226 | <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 | 3227 | <span class="c"># Recreate the Recent Files menu.</span> | ||
3778 | 3228 | <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 | 3229 | <span class="k">else</span><span class="p">:</span> | ||
3780 | 3230 | <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 | 3231 | <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 | 3232 | <span class="c">#@+node:ekr.20050424114937.2: *3* rf.writeRecentFilesFile & helper</span></div> | ||
3783 | 3233 | <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 | 3234 | |||
3785 | 3235 | <span class="sd">'''Write the appropriate .leoRecentFiles.txt file.</span> | ||
3786 | 3236 | |||
3787 | 3237 | <span class="sd"> Write a message if force is True, or if it hasn't been written yet.'''</span> | ||
3788 | 3238 | |||
3789 | 3239 | <span class="n">tag</span> <span class="o">=</span> <span class="s">'.leoRecentFiles.txt'</span> | ||
3790 | 3240 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3791 | 3241 | <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 | 3242 | <span class="k">return</span> | ||
3793 | 3243 | |||
3794 | 3244 | <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 | 3245 | <span class="k">if</span> <span class="n">localFileName</span><span class="p">:</span> | ||
3796 | 3246 | <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 | 3247 | <span class="k">else</span><span class="p">:</span> | ||
3798 | 3248 | <span class="n">localPath</span> <span class="o">=</span> <span class="bp">None</span> | ||
3799 | 3249 | |||
3800 | 3250 | <span class="n">written</span> <span class="o">=</span> <span class="bp">False</span> | ||
3801 | 3251 | <span class="n">seen</span> <span class="o">=</span> <span class="p">[]</span> | ||
3802 | 3252 | <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 | 3253 | <span class="k">if</span> <span class="n">path</span><span class="p">:</span> | ||
3804 | 3254 | <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 | 3255 | <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 | 3256 | <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 | 3257 | <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 | 3258 | <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 | 3259 | <span class="k">if</span> <span class="n">ok</span><span class="p">:</span> | ||
3810 | 3260 | <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 | 3261 | <span class="n">written</span> <span class="o">=</span> <span class="bp">True</span> | ||
3812 | 3262 | <span class="k">else</span><span class="p">:</span> | ||
3813 | 3263 | <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 | 3264 | <span class="c"># Bug fix: Leo 4.4.6: write *all* recent files.</span> | ||
3815 | 3265 | |||
3816 | 3266 | <span class="k">if</span> <span class="n">written</span><span class="p">:</span> | ||
3817 | 3267 | <span class="n">rf</span><span class="o">.</span><span class="n">recentFileMessageWritten</span> <span class="o">=</span> <span class="bp">True</span> | ||
3818 | 3268 | <span class="k">else</span><span class="p">:</span> | ||
3819 | 3269 | <span class="c"># Attempt to create .leoRecentFiles.txt in the user's home directory.</span> | ||
3820 | 3270 | <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 | 3271 | <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 | 3272 | <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 | 3273 | <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 | 3274 | <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 | 3275 | |||
3826 | 3276 | |||
3827 | 3277 | <span class="c">#@+node:ekr.20050424131051: *4* rf.writeRecentFilesFileHelper</span></div> | ||
3828 | 3278 | <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 | 3279 | |||
3830 | 3280 | <span class="c"># g.trace(g.toUnicode(fileName))</span> | ||
3831 | 3281 | |||
3832 | 3282 | <span class="c"># Don't update the file if it begins with read-only.</span> | ||
3833 | 3283 | <span class="n">rf</span> <span class="o">=</span> <span class="bp">self</span> | ||
3834 | 3284 | <span class="n">theFile</span> <span class="o">=</span> <span class="bp">None</span> | ||
3835 | 3285 | <span class="k">try</span><span class="p">:</span> | ||
3836 | 3286 | <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 | 3287 | <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 | 3288 | <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 | 3289 | <span class="c"># g.trace('read-only: %s' %fileName)</span> | ||
3840 | 3290 | <span class="k">return</span> <span class="bp">False</span> | ||
3841 | 3291 | <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> | ||
3842 | 3292 | <span class="c"># The user may have erased a file. Not an error.</span> | ||
3843 | 3293 | <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 | 3294 | |||
3845 | 3295 | <span class="n">theFile</span> <span class="o">=</span> <span class="bp">None</span> | ||
3846 | 3296 | <span class="k">try</span><span class="p">:</span> | ||
3847 | 3297 | <span class="k">if</span> <span class="n">g</span><span class="o">.</span><span class="n">isPython3</span><span class="p">:</span> | ||
3848 | 3298 | <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 | 3299 | <span class="k">else</span><span class="p">:</span> | ||
3850 | 3300 | <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 | 3301 | <span class="k">if</span> <span class="n">rf</span><span class="o">.</span><span class="n">recentFiles</span><span class="p">:</span> | ||
3852 | 3302 | <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 | 3303 | <span class="k">else</span><span class="p">:</span> | ||
3854 | 3304 | <span class="n">s</span> <span class="o">=</span> <span class="s">'</span><span class="se">\n</span><span class="s">'</span> | ||
3855 | 3305 | <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 | 3306 | <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 | 3307 | <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 | 3308 | |||
3859 | 3309 | <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span> | ||
3860 | 3310 | <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 | 3311 | <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 | 3312 | <span class="n">g</span><span class="o">.</span><span class="n">es_exception</span><span class="p">()</span> | ||
3863 | 3313 | <span class="k">return</span> <span class="bp">False</span> | ||
3864 | 3314 | |||
3865 | 3315 | <span class="k">except</span> <span class="ne">Exception</span><span class="p">:</span> | ||
3866 | 3316 | <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 | 3317 | <span class="n">g</span><span class="o">.</span><span class="n">es_exception</span><span class="p">()</span> | ||
3868 | 3318 | <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 | 3319 | <span class="k">return</span> <span class="bp">False</span> | ||
3870 | 3320 | |||
3871 | 3321 | <span class="k">if</span> <span class="n">theFile</span><span class="p">:</span> | ||
3872 | 3322 | <span class="n">theFile</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> | ||
3873 | 3323 | <span class="k">return</span> <span class="bp">True</span> | ||
3874 | 3324 | <span class="k">else</span><span class="p">:</span> | ||
3875 | 3325 | <span class="k">return</span> <span class="bp">False</span> | ||
3876 | 3326 | <span class="c">#@-others</span> | ||
3877 | 3327 | <span class="c">#@-others</span> | ||
3878 | 3328 | <span class="c">#@-leo</span></div></div> | ||
3879 | 3329 | </pre></div> | ||
3880 | 3330 | |||
3881 | 3331 | </div> | ||
3882 | 3332 | </div> | ||
3883 | 3333 | </div> | ||
3884 | 3334 | <div class="sphinxsidebar"> | ||
3885 | 3335 | <div class="sphinxsidebarwrapper"> | ||
3886 | 3336 | <div id="searchbox" style="display: none"> | ||
3887 | 3337 | <h3>Quick search</h3> | ||
3888 | 3338 | <form class="search" action="../../../search.html" method="get"> | ||
3889 | 3339 | <input type="text" name="q" /> | ||
3890 | 3340 | <input type="submit" value="Go" /> | ||
3891 | 3341 | <input type="hidden" name="check_keywords" value="yes" /> | ||
3892 | 3342 | <input type="hidden" name="area" value="default" /> | ||
3893 | 3343 | </form> | ||
3894 | 3344 | <p class="searchtip" style="font-size: 90%"> | ||
3895 | 3345 | Enter search terms or a module, class or function name. | ||
3896 | 3346 | </p> | ||
3897 | 3347 | </div> | ||
3898 | 3348 | <script type="text/javascript">$('#searchbox').show(0);</script> | ||
3899 | 3349 | </div> | ||
3900 | 3350 | </div> | ||
3901 | 3351 | <div class="clearer"></div> | ||
3902 | 3352 | </div> | ||
3903 | 3353 | <div class="related"> | ||
3904 | 3354 | <h3>Navigation</h3> | ||
3905 | 3355 | <ul> | ||
3906 | 3356 | <li class="right" style="margin-right: 10px"> | ||
3907 | 3357 | <a href="../../../genindex.html" title="General Index" | ||
3908 | 3358 | >index</a></li> | ||
3909 | 3359 | <li class="right" > | ||
3910 | 3360 | <a href="../../../py-modindex.html" title="Python Module Index" | ||
3911 | 3361 | >modules</a> |</li> | ||
3912 | 3362 | <li><a href="../../../index.html">Leo API 4.11dev documentation</a> »</li> | ||
3913 | 3363 | <li><a href="../../index.html" >Module code</a> »</li> | ||
3914 | 3364 | </ul> | ||
3915 | 3365 | </div> | ||
3916 | 3366 | <div class="footer"> | ||
3917 | 3367 | © Copyright 2013, Ed K. Ream. | ||
3918 | 3368 | Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. | ||
3919 | 3369 | </div> | ||
3920 | 3370 | </body> | ||
3921 | 3371 | </html> | ||
3922 | 0 | \ No newline at end of file | 3372 | \ No newline at end of file |
3923 | 1 | 3373 | ||
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 | 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | ||
3929 | 2 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
3930 | 3 | |||
3931 | 4 | |||
3932 | 5 | <html xmlns="http://www.w3.org/1999/xhtml"> | ||
3933 | 6 | <head> | ||
3934 | 7 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
3935 | 8 | |||
3936 | 9 | <title>leo.core.leoAtFile — Leo API 4.11dev documentation</title> | ||
3937 | 10 | |||
3938 | 11 | <link rel="stylesheet" href="../../../_static/default.css" type="text/css" /> | ||
3939 | 12 | <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" /> | ||
3940 | 13 | |||
3941 | 14 | <script type="text/javascript"> | ||
3942 | 15 | var DOCUMENTATION_OPTIONS = { | ||
3943 | 16 | URL_ROOT: '../../../', | ||
3944 | 17 | VERSION: '4.11dev', | ||
3945 | 18 | COLLAPSE_INDEX: false, | ||
3946 | 19 | FILE_SUFFIX: '.html', | ||
3947 | 20 | HAS_SOURCE: true | ||
3948 | 21 | }; | ||
3949 | 22 | </script> | ||
3950 | 23 | <script type="text/javascript" src="../../../_static/jquery.js"></script> | ||
3951 | 24 | <script type="text/javascript" src="../../../_static/underscore.js"></script> | ||
3952 | 25 | <script type="text/javascript" src="../../../_static/doctools.js"></script> | ||
3953 | 26 | <link rel="top" title="Leo API 4.11dev documentation" href="../../../index.html" /> | ||
3954 | 27 | <link rel="up" title="Module code" href="../../index.html" /> | ||
3955 | 28 | </head> | ||
3956 | 29 | <body> | ||
3957 | 30 | <div class="related"> | ||
3958 | 31 | <h3>Navigation</h3> | ||
3959 | 32 | <ul> | ||
3960 | 33 | <li class="right" style="margin-right: 10px"> | ||
3961 | 34 | <a href="../../../genindex.html" title="General Index" | ||
3962 | 35 | accesskey="I">index</a></li> | ||
3963 | 36 | <li class="right" > | ||
3964 | 37 | <a href="../../../py-modindex.html" title="Python Module Index" | ||
3965 | 38 | >modules</a> |</li> | ||
3966 | 39 | <li><a href="../../../index.html">Leo API 4.11dev documentation</a> »</li> | ||
3967 | 40 | <li><a href="../../index.html" accesskey="U">Module code</a> »</li> | ||
3968 | 41 | </ul> | ||
3969 | 42 | </div> | ||
3970 | 43 | |||
3971 | 44 | <div class="document"> | ||
3972 | 45 | <div class="documentwrapper"> | ||
3973 | 46 | <div class="bodywrapper"> | ||
3974 | 47 | <div class="body"> | ||
3975 | 48 | |||
3976 | 49 | <h1>Source code for leo.core.leoAtFile</h1><div class="highlight"><pre> | ||
3977 | 50 | <span class="c">#@+leo-ver=5-thin</span> | ||
3978 | 51 | <span class="c">#@+node:ekr.20041005105605.1: * @file leoAtFile.py</span> | ||
3979 | 52 | <span class="c">#@@first</span> | ||
3980 | 53 | <span class="c"># Needed because of unicode characters in tests.</span> | ||
3981 | 54 | |||
3982 | 55 | <span class="sd">"""Classes to read and write @file nodes."""</span> | ||
3983 | 56 | |||
3984 | 57 | <span class="c">#@@language python</span> | ||
3985 | 58 | <span class="c">#@@tabwidth -4</span> | ||
3986 | 59 | <span class="c">#@@pagewidth 60</span> | ||
3987 | 60 | |||
3988 | 61 | <span class="c">#@+<< imports >></span> | ||
3989 | 62 | <span class="c">#@+node:ekr.20041005105605.2: ** << imports >> (leoAtFile)</span> | ||
3990 | 63 | <span class="kn">import</span> <span class="nn">leo.core.leoGlobals</span> <span class="kn">as</span> <span class="nn">g</span> | ||
3991 | 64 | |||
3992 | 65 | <span class="c"># if g.app and g.app.use_psyco:</span> | ||
3993 | 66 | <span class="c"># # print("enabled psyco classes",__file__)</span> | ||
3994 | 67 | <span class="c"># try: from psyco.classes import *</span> | ||
3995 | 68 | <span class="c"># except ImportError: pass</span> | ||
3996 | 69 | |||
3997 | 70 | <span class="kn">import</span> <span class="nn">leo.core.leoNodes</span> <span class="kn">as</span> <span class="nn">leoNodes</span> | ||
3998 | 71 | |||
3999 | 72 | <span class="kn">import</span> <span class="nn">os</span> | ||
4000 | 73 | <span class="kn">import</span> <span class="nn">sys</span> | ||
4001 | 74 | <span class="kn">import</span> <span class="nn">time</span> | ||
4002 | 75 | |||
4003 | 76 | <span class="c">#@-<< imports >></span> | ||
4004 | 77 | |||
4005 | 78 | <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 | 79 | |||
4007 | 80 | <span class="c"># if allow_cloned_sibs:</span> | ||
4008 | 81 | <span class="c"># print('** allow_cloned_sibs: True')</span> | ||
4009 | 82 | |||
4010 | 83 | <span class="k">class</span> <span class="nc">atFile</span><span class="p">:</span> | ||
4011 | 84 | <div class="viewcode-block" id="atFile"><a class="viewcode-back" href="../../../leo.core.html#leo.core.leoAtFile.atFile">[docs]</a> | ||
4012 | 85 | <span class="sd">"""The class implementing the atFile subcommander."""</span> | ||
4013 | 86 | |||
4014 | 87 | <span class="c">#@+<< define class constants >></span> | ||
4015 | 88 | <span class="c">#@+node:ekr.20041005105605.5: ** << define class constants >></span> | ||
4016 | 89 | <span class="c"># These constants must be global to this module</span> | ||
4017 | 90 | <span class="c"># because they are shared by several classes.</span> | ||
4018 | 91 | |||
4019 | 92 | <span class="c"># The kind of at_directives.</span> | ||
4020 | 93 | <span class="n">noDirective</span> <span class="o">=</span> <span class="mi">1</span> <span class="c"># not an at-directive.</span> | ||
4021 | 94 | <span class="n">allDirective</span> <span class="o">=</span> <span class="mi">2</span> <span class="c"># at-all (4.2)</span> | ||
4022 | 95 | <span class="n">docDirective</span> <span class="o">=</span> <span class="mi">3</span> <span class="c"># @doc.</span> | ||
4023 | 96 | <span class="n">atDirective</span> <span class="o">=</span> <span class="mi">4</span> <span class="c"># @<space> or @<newline></span> | ||
4024 | 97 | <span class="n">codeDirective</span> <span class="o">=</span> <span class="mi">5</span> <span class="c"># @code</span> | ||
4025 | 98 | <span class="n">cDirective</span> <span class="o">=</span> <span class="mi">6</span> <span class="c"># @c<space> or @c<newline></span> | ||
4026 | 99 | <span class="n">othersDirective</span> <span class="o">=</span> <span class="mi">7</span> <span class="c"># at-others</span> | ||
4027 | 100 | <span class="n">miscDirective</span> <span class="o">=</span> <span class="mi">8</span> <span class="c"># All other directives</span> | ||
4028 | 101 | <span class="n">rawDirective</span> <span class="o">=</span> <span class="mi">9</span> <span class="c"># @raw</span> | ||
4029 | 102 | <span class="n">endRawDirective</span> <span class="o">=</span> <span class="mi">10</span> <span class="c"># @end_raw</span> | ||
4030 | 103 | |||
4031 | 104 | <span class="c"># The kind of sentinel line.</span> | ||
4032 | 105 | <span class="n">noSentinel</span> <span class="o">=</span> <span class="mi">20</span> <span class="c"># Not a sentinel</span> | ||
4033 | 106 | <span class="n">endAt</span> <span class="o">=</span> <span class="mi">21</span> <span class="c"># @-at</span> | ||
4034 | 107 | <span class="n">endBody</span> <span class="o">=</span> <span class="mi">22</span> <span class="c"># @-body</span> | ||
4035 | 108 | <span class="c"># not used = 23</span> | ||
4036 | 109 | <span class="n">endDoc</span> <span class="o">=</span> <span class="mi">24</span> <span class="c"># @-doc</span> | ||
4037 | 110 | <span class="n">endLeo</span> <span class="o">=</span> <span class="mi">25</span> <span class="c"># @-leo</span> | ||
4038 | 111 | <span class="n">endNode</span> <span class="o">=</span> <span class="mi">26</span> <span class="c"># @-node</span> | ||
4039 | 112 | <span class="n">endOthers</span> <span class="o">=</span> <span class="mi">27</span> <span class="c"># @-others</span> | ||
4040 | 113 | |||
4041 | 114 | <span class="c"># not used = 40</span> | ||
4042 | 115 | <span class="n">startAt</span> <span class="o">=</span> <span class="mi">41</span> <span class="c"># @+at</span> | ||
4043 | 116 | <span class="n">startBody</span> <span class="o">=</span> <span class="mi">42</span> <span class="c"># @+body</span> | ||
4044 | 117 | <span class="n">startDoc</span> <span class="o">=</span> <span class="mi">43</span> <span class="c"># @+doc</span> | ||
4045 | 118 | <span class="n">startLeo</span> <span class="o">=</span> <span class="mi">44</span> <span class="c"># @+leo</span> | ||
4046 | 119 | <span class="n">startNode</span> <span class="o">=</span> <span class="mi">45</span> <span class="c"># @+node</span> | ||
4047 | 120 | <span class="n">startOthers</span> <span class="o">=</span> <span class="mi">46</span> <span class="c"># @+others</span> | ||
4048 | 121 | |||
4049 | 122 | <span class="n">startComment</span> <span class="o">=</span> <span class="mi">60</span> <span class="c"># @comment</span> | ||
4050 | 123 | <span class="n">startDelims</span> <span class="o">=</span> <span class="mi">61</span> <span class="c"># @delims</span> | ||
4051 | 124 | <span class="n">startDirective</span> <span class="o">=</span> <span class="mi">62</span> <span class="c"># @@</span> | ||
4052 | 125 | <span class="n">startRef</span> <span class="o">=</span> <span class="mi">63</span> <span class="c"># @< < ... > ></span> | ||
4053 | 126 | <span class="n">startVerbatim</span> <span class="o">=</span> <span class="mi">64</span> <span class="c"># @verbatim</span> | ||
4054 | 127 | <span class="n">startVerbatimAfterRef</span> <span class="o">=</span> <span class="mi">65</span> <span class="c"># @verbatimAfterRef (3.0 only)</span> | ||
4055 | 128 | |||
4056 | 129 | <span class="c"># New in 4.x. Paired</span> | ||
4057 | 130 | <span class="n">endAll</span> <span class="o">=</span> <span class="mi">70</span> <span class="c"># at-all (4.2)</span> | ||
4058 | 131 | <span class="n">endMiddle</span> <span class="o">=</span> <span class="mi">71</span> <span class="c"># at-middle (4.2)</span> | ||
4059 | 132 | <span class="n">startAll</span> <span class="o">=</span> <span class="mi">72</span> <span class="c"># at+all (4.2)</span> | ||
4060 | 133 | <span class="n">startMiddle</span> <span class="o">=</span> <span class="mi">73</span> <span class="c"># at+middle (4.2)</span> | ||
4061 | 134 | |||
4062 | 135 | <span class="c"># New in 4.x. Unpaired.</span> | ||
4063 | 136 | <span class="n">startAfterRef</span> <span class="o">=</span> <span class="mi">80</span> <span class="c"># @afterref (4.0)</span> | ||
4064 | 137 | <span class="n">startClone</span> <span class="o">=</span> <span class="mi">81</span> <span class="c"># @clone (4.2)</span> | ||
4065 | 138 | <span class="n">startNl</span> <span class="o">=</span> <span class="mi">82</span> <span class="c"># @nl (4.0)</span> | ||
4066 | 139 | <span class="n">startNonl</span> <span class="o">=</span> <span class="mi">83</span> <span class="c"># @nonl (4.0)</span> | ||
4067 | 140 | |||
4068 | 141 | <span class="c"># New in 4.8.</span> | ||
4069 | 142 | <span class="n">endRef</span> <span class="o">=</span> <span class="mi">84</span> <span class="c"># @-<<</span> | ||
4070 | 143 | <span class="c">#@-<< define class constants >></span> | ||
4071 | 144 | <span class="c">#@+<< define sentinelDict >></span> | ||
4072 | 145 | <span class="c">#@+node:ekr.20041005105605.6: ** << define sentinelDict >></span> | ||
4073 | 146 | <span class="n">sentinelDict</span> <span class="o">=</span> <span class="p">{</span> | ||
4074 | 147 | |||
4075 | 148 | <span class="c"># Unpaired sentinels: 3.x and 4.x.</span> | ||
4076 | 149 | <span class="s">"@comment"</span> <span class="p">:</span> <span class="n">startComment</span><span class="p">,</span> | ||
4077 | 150 | <span class="s">"@delims"</span> <span class="p">:</span> <span class="n">startDelims</span><span class="p">,</span> | ||
4078 | 151 | <span class="s">"@verbatim"</span><span class="p">:</span> <span class="n">startVerbatim</span><span class="p">,</span> | ||
4079 | 152 | |||
4080 | 153 | <span class="c"># Unpaired sentinels: 3.x only.</span> | ||
4081 | 154 | <span class="s">"@verbatimAfterRef"</span><span class="p">:</span> <span class="n">startVerbatimAfterRef</span><span class="p">,</span> | ||
4082 | 155 | |||
4083 | 156 | <span class="c"># Unpaired sentinels: 4.x only.</span> | ||
4084 | 157 | <span class="s">"@afterref"</span> <span class="p">:</span> <span class="n">startAfterRef</span><span class="p">,</span> | ||
4085 | 158 | <span class="s">"@clone"</span> <span class="p">:</span> <span class="n">startClone</span><span class="p">,</span> | ||
4086 | 159 | <span class="s">"@nl"</span> <span class="p">:</span> <span class="n">startNl</span><span class="p">,</span> | ||
4087 | 160 | <span class="s">"@nonl"</span> <span class="p">:</span> <span class="n">startNonl</span><span class="p">,</span> | ||
4088 | 161 | |||
4089 | 162 | <span class="c"># Paired sentinels: 3.x only.</span> | ||
4090 | 163 | <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 | 164 | |||
4092 | 165 | <span class="c"># Paired sentinels: 3.x and 4.x.</span> | ||
4093 | 166 | <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 | 167 | <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 | 168 | <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 | 169 | <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 | 170 | <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 | 171 | <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 | 172 | <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 | 173 | <span class="p">}</span> | ||
4101 | 174 | <span class="c">#@-<< define sentinelDict >></span> | ||
4102 | 175 | |||
4103 | 176 | <span class="c">#@+others</span> | ||
4104 | 177 | <span class="c">#@+node:ekr.20041005105605.7: ** at.Birth & init</span> | ||
4105 | 178 | <span class="c">#@+node:ekr.20041005105605.8: *3* atFile.ctor</span> | ||
4106 | 179 | <span class="c"># Note: g.getScript also call the at.__init__ and at.finishCreate().</span> | ||
4107 | 180 | |||
4108 | 181 | <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 | 182 | |||
4110 | 183 | <span class="c"># **Warning**: all these ivars must **also** be inited in initCommonIvars.</span> | ||
4111 | 184 | <span class="bp">self</span><span class="o">.</span><span class="n">c</span> <span class="o">=</span> <span class="n">c</span> | ||
4112 | 185 | <span class="bp">self</span><span class="o">.</span><span class="n">debug</span> <span class="o">=</span> <span class="bp">False</span> | ||
4113 | 186 | <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 | 187 | <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 | 188 | |||
4116 | 189 | <span class="c"># User options.</span> | ||
4117 | 190 | <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 | 191 | <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 | 192 | <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 | 193 | <span class="s">'underindent-escape-string'</span><span class="p">)</span> <span class="ow">or</span> <span class="s">'</span><span class="se">\\</s |