PrEditor 0.0.0.dev1__py2.py3-none-any.whl → 0.1.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of PrEditor might be problematic. Click here for more details.
- PrEditor-0.1.0.dist-info/LICENSE +165 -0
- PrEditor-0.1.0.dist-info/METADATA +212 -0
- PrEditor-0.1.0.dist-info/RECORD +149 -0
- {PrEditor-0.0.0.dev1.dist-info → PrEditor-0.1.0.dist-info}/WHEEL +1 -1
- PrEditor-0.1.0.dist-info/entry_points.txt +18 -0
- PrEditor-0.1.0.dist-info/top_level.txt +1 -0
- preditor/__init__.py +301 -0
- {blurdev → preditor}/__main__.py +13 -13
- preditor/about_module.py +166 -0
- preditor/cli.py +192 -0
- {blurdev → preditor}/contexts.py +119 -119
- preditor/cores/core.py +65 -0
- preditor/dccs/maya/PrEditor_maya.mod +2 -0
- preditor/dccs/maya/plug-ins/PrEditor_maya.py +108 -0
- preditor/debug.py +294 -0
- blurdev/scintilla/delayable_engine.py → preditor/delayable_engine/__init__.py +310 -299
- blurdev/scintilla/delayables/base.py → preditor/delayable_engine/delayables.py +85 -85
- {blurdev → preditor}/enum.py +728 -1003
- {blurdev → preditor}/gui/__init__.py +84 -125
- preditor/gui/app.py +159 -0
- {blurdev → preditor}/gui/codehighlighter.py +209 -219
- {blurdev → preditor}/gui/completer.py +226 -236
- {blurdev → preditor}/gui/console.py +801 -858
- {blurdev → preditor}/gui/dialog.py +200 -216
- preditor/gui/drag_tab_bar.py +190 -0
- preditor/gui/editor_chooser.py +57 -0
- {blurdev → preditor}/gui/errordialog.py +100 -97
- preditor/gui/fuzzy_search/fuzzy_search.py +93 -0
- preditor/gui/group_tab_widget/__init__.py +319 -0
- preditor/gui/group_tab_widget/grouped_tab_menu.py +35 -0
- preditor/gui/group_tab_widget/grouped_tab_models.py +108 -0
- preditor/gui/group_tab_widget/grouped_tab_widget.py +75 -0
- preditor/gui/group_tab_widget/one_tab_widget.py +54 -0
- preditor/gui/level_buttons.py +349 -0
- {blurdev → preditor}/gui/logger_window_handler.py +46 -45
- {blurdev → preditor}/gui/loggerwindow.py +1205 -1417
- {blurdev → preditor}/gui/newtabwidget.py +69 -68
- {blurdev → preditor}/gui/redmine_login_dialog.py +63 -61
- {blurdev → preditor}/gui/set_text_editor_path_dialog.py +59 -57
- preditor/gui/ui/editor_chooser.ui +93 -0
- {blurdev → preditor}/gui/ui/errordialog.ui +81 -81
- {blurdev → preditor}/gui/ui/loggerwindow.ui +1030 -864
- {blurdev → preditor}/gui/ui/redmine_login_dialog.ui +124 -124
- {blurdev → preditor}/gui/ui/set_text_editor_path_dialog.ui +149 -149
- {blurdev → preditor}/gui/window.py +183 -199
- preditor/gui/workbox_mixin.py +357 -0
- preditor/gui/workbox_text_edit.py +117 -0
- preditor/gui/workboxwidget.py +276 -0
- preditor/logging_config.py +52 -0
- preditor/osystem.py +401 -0
- preditor/plugins.py +65 -0
- preditor/prefs.py +74 -0
- {blurdev → preditor}/resource/environment_variables.html +26 -38
- {blurdev → preditor}/resource/error_mail.html +85 -85
- {blurdev → preditor}/resource/error_mail_inline.html +41 -41
- preditor/resource/img/README.md +7 -0
- preditor/resource/img/arrow_forward.png +0 -0
- preditor/resource/img/check-bold.png +0 -0
- preditor/resource/img/chevron-down.png +0 -0
- preditor/resource/img/chevron-up.png +0 -0
- preditor/resource/img/close-thick.png +0 -0
- preditor/resource/img/comment-edit.png +0 -0
- preditor/resource/img/content-copy.png +0 -0
- preditor/resource/img/content-cut.png +0 -0
- preditor/resource/img/content-duplicate.png +0 -0
- preditor/resource/img/content-paste.png +0 -0
- preditor/resource/img/content-save.png +0 -0
- preditor/resource/img/debug_disabled.png +0 -0
- preditor/resource/img/eye-check.png +0 -0
- preditor/resource/img/file-plus.png +0 -0
- preditor/resource/img/file-remove.png +0 -0
- preditor/resource/img/format-align-left.png +0 -0
- preditor/resource/img/format-letter-case-lower.png +0 -0
- preditor/resource/img/format-letter-case-upper.png +0 -0
- preditor/resource/img/information.png +0 -0
- preditor/resource/img/logging_critical.png +0 -0
- preditor/resource/img/logging_custom.png +0 -0
- preditor/resource/img/logging_debug.png +0 -0
- preditor/resource/img/logging_error.png +0 -0
- preditor/resource/img/logging_info.png +0 -0
- preditor/resource/img/logging_not_set.png +0 -0
- preditor/resource/img/logging_warning.png +0 -0
- preditor/resource/img/marker.png +0 -0
- preditor/resource/img/play.png +0 -0
- preditor/resource/img/playlist-play.png +0 -0
- preditor/resource/img/plus-minus-variant.png +0 -0
- preditor/resource/img/preditor.ico +0 -0
- preditor/resource/img/preditor.png +0 -0
- preditor/resource/img/preditor.psd +0 -0
- preditor/resource/img/preditor.svg +44 -0
- preditor/resource/img/restart.svg +1 -0
- preditor/resource/img/skip-forward-outline.png +0 -0
- preditor/resource/img/skip-next-outline.png +0 -0
- preditor/resource/img/skip-next.png +0 -0
- preditor/resource/img/skip-previous.png +0 -0
- preditor/resource/img/subdirectory-arrow-right.png +0 -0
- preditor/resource/img/text-search-variant.png +0 -0
- {blurdev → preditor}/resource/lang/python.json +30 -30
- preditor/resource/settings.ini +25 -0
- {blurdev/resource/stylesheet/logger → preditor/resource/stylesheet}/Bright.css +56 -61
- {blurdev → preditor}/resource/stylesheet/Dark.css +190 -132
- {blurdev → preditor}/scintilla/__init__.py +22 -28
- preditor/scintilla/delayables/__init__.py +11 -0
- {blurdev → preditor}/scintilla/delayables/smart_highlight.py +94 -93
- {blurdev → preditor}/scintilla/delayables/spell_check.py +173 -172
- {blurdev → preditor}/scintilla/documenteditor.py +2039 -2115
- {blurdev → preditor}/scintilla/finddialog.py +68 -81
- {blurdev → preditor}/scintilla/lang/__init__.py +80 -93
- {blurdev → preditor}/scintilla/lang/config/bash.ini +15 -15
- {blurdev → preditor}/scintilla/lang/config/batch.ini +14 -14
- {blurdev → preditor}/scintilla/lang/config/cpp.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/css.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/eyeonscript.ini +17 -17
- {blurdev → preditor}/scintilla/lang/config/html.ini +21 -21
- {blurdev → preditor}/scintilla/lang/config/javascript.ini +24 -24
- {blurdev → preditor}/scintilla/lang/config/lua.ini +16 -16
- {blurdev → preditor}/scintilla/lang/config/maxscript.ini +20 -20
- {blurdev → preditor}/scintilla/lang/config/mel.ini +18 -18
- {blurdev → preditor}/scintilla/lang/config/mu.ini +22 -22
- {blurdev → preditor}/scintilla/lang/config/nsi.ini +5 -5
- {blurdev → preditor}/scintilla/lang/config/perl.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/puppet.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/python.ini +28 -28
- {blurdev → preditor}/scintilla/lang/config/ruby.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/sql.ini +7 -7
- {blurdev → preditor}/scintilla/lang/config/xml.ini +21 -21
- {blurdev → preditor}/scintilla/lang/config/yaml.ini +18 -18
- {blurdev → preditor}/scintilla/lang/language.py +240 -250
- preditor/scintilla/lexers/__init__.py +0 -0
- {blurdev → preditor}/scintilla/lexers/cpplexer.py +21 -30
- {blurdev → preditor}/scintilla/lexers/javascriptlexer.py +25 -34
- {blurdev → preditor}/scintilla/lexers/maxscriptlexer.py +234 -253
- {blurdev → preditor}/scintilla/lexers/mellexer.py +368 -376
- {blurdev → preditor}/scintilla/lexers/mulexer.py +32 -41
- {blurdev → preditor}/scintilla/lexers/pythonlexer.py +41 -50
- {blurdev → preditor}/scintilla/ui/finddialog.ui +160 -160
- preditor/settings.py +71 -0
- preditor/stream/__init__.py +80 -0
- preditor/stream/director.py +56 -0
- preditor/stream/manager.py +74 -0
- preditor/streamhandler_helper.py +46 -0
- preditor/utils/__init__.py +0 -0
- preditor/utils/cute.py +30 -0
- preditor/utils/stylesheets.py +54 -0
- {blurdev → preditor}/version.py +5 -5
- preditor/weakref.py +363 -0
- PrEditor-0.0.0.dev1.dist-info/METADATA +0 -51
- PrEditor-0.0.0.dev1.dist-info/RECORD +0 -279
- PrEditor-0.0.0.dev1.dist-info/top_level.txt +0 -1
- blurdev/__init__.py +0 -356
- blurdev/cores/__init__.py +0 -98
- blurdev/cores/application.py +0 -26
- blurdev/cores/core.py +0 -634
- blurdev/debug.py +0 -593
- blurdev/external.py +0 -391
- blurdev/gui/level_buttons.py +0 -585
- blurdev/gui/workboxwidget.py +0 -205
- blurdev/logger.py +0 -238
- blurdev/osystem.py +0 -813
- blurdev/prefs.py +0 -33
- blurdev/protocols/__init__.py +0 -71
- blurdev/protocols/write_std_output_handler.py +0 -83
- blurdev/resource/designer_plugins.xml +0 -9
- blurdev/resource/error_email_old.html +0 -41
- blurdev/resource/img/add.png +0 -0
- blurdev/resource/img/ajax-loader.gif +0 -0
- blurdev/resource/img/application.png +0 -0
- blurdev/resource/img/applications.png +0 -0
- blurdev/resource/img/assburner.png +0 -0
- blurdev/resource/img/assfreezer.png +0 -0
- blurdev/resource/img/bar.gif +0 -0
- blurdev/resource/img/blank.png +0 -0
- blurdev/resource/img/blurdev.png +0 -0
- blurdev/resource/img/calendar_disabled.png +0 -0
- blurdev/resource/img/calendar_enabled.png +0 -0
- blurdev/resource/img/cancel.png +0 -0
- blurdev/resource/img/custom.png +0 -0
- blurdev/resource/img/debug_high.png +0 -0
- blurdev/resource/img/debug_low.png +0 -0
- blurdev/resource/img/debug_mid.png +0 -0
- blurdev/resource/img/debug_off.png +0 -0
- blurdev/resource/img/django.png +0 -0
- blurdev/resource/img/doc.png +0 -0
- blurdev/resource/img/edit.png +0 -0
- blurdev/resource/img/elemental.png +0 -0
- blurdev/resource/img/explore.png +0 -0
- blurdev/resource/img/favorite.png +0 -0
- blurdev/resource/img/file.png +0 -0
- blurdev/resource/img/folder.png +0 -0
- blurdev/resource/img/ide/add.png +0 -0
- blurdev/resource/img/ide/add_note.png +0 -0
- blurdev/resource/img/ide/arrow_down.png +0 -0
- blurdev/resource/img/ide/arrow_up.png +0 -0
- blurdev/resource/img/ide/check.png +0 -0
- blurdev/resource/img/ide/class.png +0 -0
- blurdev/resource/img/ide/clean.png +0 -0
- blurdev/resource/img/ide/clearlog.png +0 -0
- blurdev/resource/img/ide/close.png +0 -0
- blurdev/resource/img/ide/comment_add.png +0 -0
- blurdev/resource/img/ide/comment_remove.png +0 -0
- blurdev/resource/img/ide/comment_toggle.png +0 -0
- blurdev/resource/img/ide/console.png +0 -0
- blurdev/resource/img/ide/copy.png +0 -0
- blurdev/resource/img/ide/copylstrip.png +0 -0
- blurdev/resource/img/ide/cut.png +0 -0
- blurdev/resource/img/ide/edit.png +0 -0
- blurdev/resource/img/ide/find.png +0 -0
- blurdev/resource/img/ide/find_replace.png +0 -0
- blurdev/resource/img/ide/findnext.png +0 -0
- blurdev/resource/img/ide/findprev.png +0 -0
- blurdev/resource/img/ide/folder_find.png +0 -0
- blurdev/resource/img/ide/function.png +0 -0
- blurdev/resource/img/ide/git-bash.png +0 -0
- blurdev/resource/img/ide/git-gui.png +0 -0
- blurdev/resource/img/ide/gitk.png +0 -0
- blurdev/resource/img/ide/goto.png +0 -0
- blurdev/resource/img/ide/goto_def.png +0 -0
- blurdev/resource/img/ide/help.png +0 -0
- blurdev/resource/img/ide/highlighter.png +0 -0
- blurdev/resource/img/ide/lowercase.png +0 -0
- blurdev/resource/img/ide/newfile.png +0 -0
- blurdev/resource/img/ide/newfolder.png +0 -0
- blurdev/resource/img/ide/newproject.png +0 -0
- blurdev/resource/img/ide/newwizard.png +0 -0
- blurdev/resource/img/ide/open.png +0 -0
- blurdev/resource/img/ide/paste.png +0 -0
- blurdev/resource/img/ide/pdb_continue.png +0 -0
- blurdev/resource/img/ide/pdb_down.png +0 -0
- blurdev/resource/img/ide/pdb_next.png +0 -0
- blurdev/resource/img/ide/pdb_step.png +0 -0
- blurdev/resource/img/ide/pdb_up.png +0 -0
- blurdev/resource/img/ide/plus_minus.png +0 -0
- blurdev/resource/img/ide/preferences.png +0 -0
- blurdev/resource/img/ide/project_find.png +0 -0
- blurdev/resource/img/ide/python.png +0 -0
- blurdev/resource/img/ide/pyular.png +0 -0
- blurdev/resource/img/ide/qt.png +0 -0
- blurdev/resource/img/ide/quit.png +0 -0
- blurdev/resource/img/ide/redo.png +0 -0
- blurdev/resource/img/ide/refresh.png +0 -0
- blurdev/resource/img/ide/remove.png +0 -0
- blurdev/resource/img/ide/ruler.png +0 -0
- blurdev/resource/img/ide/run.png +0 -0
- blurdev/resource/img/ide/runall.png +0 -0
- blurdev/resource/img/ide/runallclear.png +0 -0
- blurdev/resource/img/ide/runselected.png +0 -0
- blurdev/resource/img/ide/runselectedclear.png +0 -0
- blurdev/resource/img/ide/save.png +0 -0
- blurdev/resource/img/ide/saveas.png +0 -0
- blurdev/resource/img/ide/sdk.png +0 -0
- blurdev/resource/img/ide/separator.png +0 -0
- blurdev/resource/img/ide/tabbed.png +0 -0
- blurdev/resource/img/ide/tile.png +0 -0
- blurdev/resource/img/ide/toolbar.png +0 -0
- blurdev/resource/img/ide/undo.png +0 -0
- blurdev/resource/img/ide/uppercase.png +0 -0
- blurdev/resource/img/ide/view_as.png +0 -0
- blurdev/resource/img/ide/windowed.png +0 -0
- blurdev/resource/img/ide.ico +0 -0
- blurdev/resource/img/ide.png +0 -0
- blurdev/resource/img/ide48.png +0 -0
- blurdev/resource/img/info.png +0 -0
- blurdev/resource/img/legacy tool.png +0 -0
- blurdev/resource/img/library.png +0 -0
- blurdev/resource/img/logger/about.png +0 -0
- blurdev/resource/img/logger/arrow_forward.png +0 -0
- blurdev/resource/img/logger/clear.png +0 -0
- blurdev/resource/img/logger/close.png +0 -0
- blurdev/resource/img/logger/debug_disabled.png +0 -0
- blurdev/resource/img/logger/debug_high.png +0 -0
- blurdev/resource/img/logger/debug_low.png +0 -0
- blurdev/resource/img/logger/debug_mid.png +0 -0
- blurdev/resource/img/logger/down.png +0 -0
- blurdev/resource/img/logger/find.png +0 -0
- blurdev/resource/img/logger/logging_critical.png +0 -0
- blurdev/resource/img/logger/logging_debug.png +0 -0
- blurdev/resource/img/logger/logging_error.png +0 -0
- blurdev/resource/img/logger/logging_info.png +0 -0
- blurdev/resource/img/logger/logging_not_set.png +0 -0
- blurdev/resource/img/logger/logging_warning.png +0 -0
- blurdev/resource/img/logger/next.png +0 -0
- blurdev/resource/img/logger/play.png +0 -0
- blurdev/resource/img/logger/playlist_play.png +0 -0
- blurdev/resource/img/logger/previous.png +0 -0
- blurdev/resource/img/logger/return.png +0 -0
- blurdev/resource/img/logger/save.png +0 -0
- blurdev/resource/img/logger/subdirectory_arrow_right.png +0 -0
- blurdev/resource/img/logger/up.png +0 -0
- blurdev/resource/img/lovebar.png +0 -0
- blurdev/resource/img/new.png +0 -0
- blurdev/resource/img/new_selected.png +0 -0
- blurdev/resource/img/node.png +0 -0
- blurdev/resource/img/ok.png +0 -0
- blurdev/resource/img/options.png +0 -0
- blurdev/resource/img/packages.png +0 -0
- blurdev/resource/img/preview/add.png +0 -0
- blurdev/resource/img/preview/brush.png +0 -0
- blurdev/resource/img/preview/delete.png +0 -0
- blurdev/resource/img/preview/delte.png +0 -0
- blurdev/resource/img/preview/fill.png +0 -0
- blurdev/resource/img/preview/layers.png +0 -0
- blurdev/resource/img/preview/media.png +0 -0
- blurdev/resource/img/preview/navigate.png +0 -0
- blurdev/resource/img/preview/pencil.png +0 -0
- blurdev/resource/img/preview/select.png +0 -0
- blurdev/resource/img/preview/type.png +0 -0
- blurdev/resource/img/preview/visible.png +0 -0
- blurdev/resource/img/project.png +0 -0
- blurdev/resource/img/python_logger.ico +0 -0
- blurdev/resource/img/python_logger.png +0 -0
- blurdev/resource/img/refresh.png +0 -0
- blurdev/resource/img/remove.png +0 -0
- blurdev/resource/img/reset.png +0 -0
- blurdev/resource/img/richtext/font_bold.png +0 -0
- blurdev/resource/img/richtext/font_italic.png +0 -0
- blurdev/resource/img/richtext/link_image.png +0 -0
- blurdev/resource/img/richtext/spell_check.png +0 -0
- blurdev/resource/img/richtext/unordered_list.png +0 -0
- blurdev/resource/img/save.png +0 -0
- blurdev/resource/img/savesettings.png +0 -0
- blurdev/resource/img/settings.png +0 -0
- blurdev/resource/img/tool.png +0 -0
- blurdev/resource/img/toolbarHandleHorizontal.png +0 -0
- blurdev/resource/img/toolbarHandleVertical.png +0 -0
- blurdev/resource/img/trash.png +0 -0
- blurdev/resource/img/trax.png +0 -0
- blurdev/resource/img/tree.png +0 -0
- blurdev/resource/img/treegrunt.ico +0 -0
- blurdev/resource/img/treegrunt.png +0 -0
- blurdev/resource/img/treegruntedit.png +0 -0
- blurdev/resource/img/user interface.png +0 -0
- blurdev/resource/img/warning.png +0 -0
- blurdev/resource/img/watermark.png +0 -0
- blurdev/resource/sdk/blurdev.sdk +0 -3
- blurdev/resource/settings.ini +0 -82
- blurdev/resource/softimage/BlurApplication.dll +0 -0
- blurdev/resource/softimage/BlurApplication64.dll +0 -0
- blurdev/resource/stylesheet/Carbon.css +0 -35
- blurdev/resource/stylesheet/logger/Dark.css +0 -62
- blurdev/resource/templ/py_comment.templ +0 -1
- blurdev/resource/templ/py_debug_raise_error.templ +0 -7
- blurdev/resource/templ/py_doc_string.templ +0 -10
- blurdev/resource/templ/py_header.templ +0 -9
- blurdev/resource/templ/py_line_comment.templ +0 -1
- blurdev/resource/templ/py_log_to_file.templ +0 -22
- blurdev/resource/templ/py_module_path.templ +0 -1
- blurdev/resource/templ/py_pyqt_core.templ +0 -1
- blurdev/resource/templ/py_pyqt_gui.templ +0 -1
- blurdev/resource/templ/py_splashscreen.templ +0 -6
- blurdev/resource/templ/py_testing_note.templ +0 -1
- blurdev/resource/templ/py_testing_note_end.templ +0 -1
- blurdev/resource/tools_environments.json +0 -72
- blurdev/resource/tools_environments.xml +0 -11
- blurdev/resource/tools_environments_linux.xml +0 -11
- blurdev/resource/tools_environments_offline.xml +0 -7
- blurdev/runtimes/__init__.py +0 -2
- blurdev/runtimes/logger.py +0 -44
- blurdev/scintilla/delayables/__init__.py +0 -9
- blurdev/settings.py +0 -312
- blurdev/utils/error.py +0 -389
- {blurdev/scintilla/lexers → preditor/cores}/__init__.py +0 -0
- {blurdev/utils → preditor/gui/fuzzy_search}/__init__.py +0 -0
- {blurdev → preditor}/resource/img/warning-big.png +0 -0
|
@@ -1,253 +1,234 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return QColor(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
if
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
self.hlkwords = set(text(self.keywords(self.SmartHighlight)).lower().split())
|
|
236
|
-
self.chunkRegex = re.compile('([^A-Za-z0-9]*)([A-Za-z0-9]*)')
|
|
237
|
-
kwrds = set(MS_KEYWORDS.split())
|
|
238
|
-
|
|
239
|
-
# scintilla always asks to style whole lines
|
|
240
|
-
for line in source.splitlines(True):
|
|
241
|
-
lastState, folding = self.processChunk(line, lastState, kwrds)
|
|
242
|
-
|
|
243
|
-
# open folding levels
|
|
244
|
-
if folding > 0:
|
|
245
|
-
SCI(SETFOLDLEVEL, index, CURRFOLDLEVEL | HEADERFLAG)
|
|
246
|
-
CURRFOLDLEVEL += folding
|
|
247
|
-
else:
|
|
248
|
-
SCI(SETFOLDLEVEL, index, CURRFOLDLEVEL)
|
|
249
|
-
CURRFOLDLEVEL += folding
|
|
250
|
-
|
|
251
|
-
# folding implementation goes here
|
|
252
|
-
index += 1
|
|
253
|
-
self.parent().blockSignals(False)
|
|
1
|
+
from __future__ import absolute_import
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
from builtins import str as text
|
|
5
|
+
|
|
6
|
+
from future.utils import iteritems
|
|
7
|
+
from PyQt5.Qsci import QsciLexerCustom, QsciScintilla
|
|
8
|
+
|
|
9
|
+
MS_KEYWORDS = """
|
|
10
|
+
if then else not and or key collect
|
|
11
|
+
do while for in with where
|
|
12
|
+
function fn rollout struct parameters attributes exit continue
|
|
13
|
+
local global
|
|
14
|
+
true false
|
|
15
|
+
ok undefined unsupplied return
|
|
16
|
+
filein open close flush include print
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class MaxscriptLexer(QsciLexerCustom):
|
|
21
|
+
# Items in this list will be highligheded using the color for self.SmartHighlight
|
|
22
|
+
highlightedKeywords = ''
|
|
23
|
+
|
|
24
|
+
def __init__(self, parent=None):
|
|
25
|
+
QsciLexerCustom.__init__(self, parent)
|
|
26
|
+
self._styles = {
|
|
27
|
+
0: 'Default',
|
|
28
|
+
1: 'Comment',
|
|
29
|
+
2: 'CommentLine',
|
|
30
|
+
3: 'Keyword',
|
|
31
|
+
4: 'Operator',
|
|
32
|
+
5: 'Number',
|
|
33
|
+
6: 'String',
|
|
34
|
+
7: 'SmartHighlight',
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
for key, value in iteritems(self._styles):
|
|
38
|
+
setattr(self, value, key)
|
|
39
|
+
|
|
40
|
+
def description(self, style):
|
|
41
|
+
return self._styles.get(style, '')
|
|
42
|
+
|
|
43
|
+
def defaultColor(self, style):
|
|
44
|
+
from Qt.QtCore import Qt
|
|
45
|
+
from Qt.QtGui import QColor
|
|
46
|
+
|
|
47
|
+
if style in (self.Comment, self.CommentLine):
|
|
48
|
+
return QColor(40, 160, 40)
|
|
49
|
+
|
|
50
|
+
elif style in (self.Keyword, self.Operator):
|
|
51
|
+
return QColor(Qt.blue)
|
|
52
|
+
|
|
53
|
+
elif style == self.Number:
|
|
54
|
+
return QColor(Qt.red)
|
|
55
|
+
|
|
56
|
+
elif style == self.String:
|
|
57
|
+
return QColor(180, 140, 30)
|
|
58
|
+
|
|
59
|
+
return QsciLexerCustom.defaultColor(self, style)
|
|
60
|
+
|
|
61
|
+
def defaultPaper(self, style):
|
|
62
|
+
if style == self.SmartHighlight:
|
|
63
|
+
from Qt.QtGui import QColor
|
|
64
|
+
|
|
65
|
+
# Set the highlight color for this lexer
|
|
66
|
+
return QColor(155, 255, 155)
|
|
67
|
+
return super(MaxscriptLexer, self).defaultPaper(style)
|
|
68
|
+
|
|
69
|
+
def font(self, style):
|
|
70
|
+
font = super(MaxscriptLexer, self).font(style)
|
|
71
|
+
if style in (self.Comment, self.CommentLine):
|
|
72
|
+
font.setFamily('Arial Bold')
|
|
73
|
+
return font
|
|
74
|
+
|
|
75
|
+
def keywords(self, style):
|
|
76
|
+
if style == self.Keyword:
|
|
77
|
+
return MS_KEYWORDS
|
|
78
|
+
if style == self.SmartHighlight:
|
|
79
|
+
return self.highlightedKeywords
|
|
80
|
+
return QsciLexerCustom.keywords(self, style)
|
|
81
|
+
|
|
82
|
+
def processChunk(self, chunk, lastState, keywords):
|
|
83
|
+
# process the length of the chunk
|
|
84
|
+
if isinstance(chunk, bytearray):
|
|
85
|
+
chunk = chunk.decode('utf8')
|
|
86
|
+
length = len(chunk)
|
|
87
|
+
|
|
88
|
+
# check to see if our last state was a block comment
|
|
89
|
+
if lastState == self.Comment:
|
|
90
|
+
pos = chunk.find('*/')
|
|
91
|
+
if pos != -1:
|
|
92
|
+
self.setStyling(pos + 2, self.Comment)
|
|
93
|
+
return self.processChunk(chunk[pos + 2 :], self.Default, keywords)
|
|
94
|
+
else:
|
|
95
|
+
self.setStyling(length, self.Comment)
|
|
96
|
+
return (self.Comment, 0)
|
|
97
|
+
|
|
98
|
+
# check to see if our last state was a string
|
|
99
|
+
elif lastState == self.String:
|
|
100
|
+
# remove special case backslashes
|
|
101
|
+
while r'\\' in chunk:
|
|
102
|
+
chunk = chunk.replace(r'\\', '||')
|
|
103
|
+
|
|
104
|
+
# remove special case strings
|
|
105
|
+
while r'\"' in chunk:
|
|
106
|
+
chunk = chunk.replace(r'\"', r"\'")
|
|
107
|
+
|
|
108
|
+
pos = chunk.find('"')
|
|
109
|
+
if pos != -1:
|
|
110
|
+
self.setStyling(pos + 1, self.String)
|
|
111
|
+
return self.processChunk(chunk[pos + 1 :], self.Default, keywords)
|
|
112
|
+
else:
|
|
113
|
+
self.setStyling(length, self.String)
|
|
114
|
+
return (self.String, 0)
|
|
115
|
+
|
|
116
|
+
# otherwise, process a default chunk
|
|
117
|
+
else:
|
|
118
|
+
blockpos = chunk.find('/*')
|
|
119
|
+
linepos = chunk.find('--')
|
|
120
|
+
strpos = chunk.find('"')
|
|
121
|
+
order = [blockpos, linepos, strpos]
|
|
122
|
+
order.sort()
|
|
123
|
+
|
|
124
|
+
# any of the above symbols will affect how a symbol following it is treated,
|
|
125
|
+
# so make sure we process in the proper order
|
|
126
|
+
for i in order:
|
|
127
|
+
if i == -1:
|
|
128
|
+
continue
|
|
129
|
+
|
|
130
|
+
# process a string
|
|
131
|
+
if i == strpos:
|
|
132
|
+
state, folding = self.processChunk(chunk[:i], lastState, keywords)
|
|
133
|
+
self.setStyling(1, self.String)
|
|
134
|
+
newstate, newfolding = self.processChunk(
|
|
135
|
+
chunk[i + 1 :], self.String, keywords
|
|
136
|
+
)
|
|
137
|
+
return (newstate, newfolding + folding)
|
|
138
|
+
|
|
139
|
+
# process a line comment
|
|
140
|
+
elif i == linepos:
|
|
141
|
+
state, folding = self.processChunk(chunk[:i], lastState, keywords)
|
|
142
|
+
self.setStyling(length - i, self.CommentLine)
|
|
143
|
+
return (self.Default, folding)
|
|
144
|
+
|
|
145
|
+
# process a block comment
|
|
146
|
+
elif i == blockpos:
|
|
147
|
+
state, folding = self.processChunk(chunk[:i], lastState, keywords)
|
|
148
|
+
self.setStyling(2, self.Comment)
|
|
149
|
+
newstate, newfolding = self.processChunk(
|
|
150
|
+
chunk[i + 2 :], self.Comment, keywords
|
|
151
|
+
)
|
|
152
|
+
return (newstate, newfolding + folding)
|
|
153
|
+
|
|
154
|
+
# otherwise, we are processing a default set of text whose syntaxing is
|
|
155
|
+
# irrelavent from the previous one TODO: this needs to handle QStrings.
|
|
156
|
+
# However I do not thing QStrings are the problem, its more likely a
|
|
157
|
+
# bytearray problem. the conversion at the start of this function may have
|
|
158
|
+
# resolved it.
|
|
159
|
+
results = self.chunkRegex.findall(chunk)
|
|
160
|
+
for space, kwd in results:
|
|
161
|
+
if not (space or kwd):
|
|
162
|
+
break
|
|
163
|
+
|
|
164
|
+
self.setStyling(len(space), self.Default)
|
|
165
|
+
|
|
166
|
+
if kwd.lower() in self.hlkwords:
|
|
167
|
+
self.setStyling(len(kwd), self.SmartHighlight)
|
|
168
|
+
elif kwd.lower() in keywords:
|
|
169
|
+
self.setStyling(len(kwd), self.Keyword)
|
|
170
|
+
else:
|
|
171
|
+
self.setStyling(len(kwd), self.Default)
|
|
172
|
+
|
|
173
|
+
# in this context, look for opening and closing parenthesis which will
|
|
174
|
+
# determine folding scope
|
|
175
|
+
return (self.Default, chunk.count('(') - chunk.count(')'))
|
|
176
|
+
|
|
177
|
+
def styleText(self, start, end):
|
|
178
|
+
editor = self.editor()
|
|
179
|
+
if not editor:
|
|
180
|
+
return
|
|
181
|
+
|
|
182
|
+
# scintilla works with encoded bytes, not decoded characters
|
|
183
|
+
# this matters if the source contains non-ascii characters and
|
|
184
|
+
# a multi-byte encoding is used (e.g. utf-8)
|
|
185
|
+
source = ''
|
|
186
|
+
if end > editor.length():
|
|
187
|
+
end = editor.length()
|
|
188
|
+
|
|
189
|
+
# define commonly used methods
|
|
190
|
+
SCI = editor.SendScintilla
|
|
191
|
+
SETFOLDLEVEL = QsciScintilla.SCI_SETFOLDLEVEL
|
|
192
|
+
HEADERFLAG = QsciScintilla.SC_FOLDLEVELHEADERFLAG
|
|
193
|
+
CURRFOLDLEVEL = QsciScintilla.SC_FOLDLEVELBASE
|
|
194
|
+
|
|
195
|
+
if end > start:
|
|
196
|
+
source = bytearray(end - start)
|
|
197
|
+
editor.SendScintilla(editor.SCI_GETTEXTRANGE, start, end, source)
|
|
198
|
+
|
|
199
|
+
if not source:
|
|
200
|
+
return
|
|
201
|
+
self.parent().blockSignals(True)
|
|
202
|
+
|
|
203
|
+
# the line index will also need to implement folding
|
|
204
|
+
index = editor.SendScintilla(editor.SCI_LINEFROMPOSITION, start)
|
|
205
|
+
if index > 0:
|
|
206
|
+
# the previous state may be needed for multi-line styling
|
|
207
|
+
pos = editor.SendScintilla(editor.SCI_GETLINEENDPOSITION, index - 1)
|
|
208
|
+
lastState = editor.SendScintilla(editor.SCI_GETSTYLEAT, pos)
|
|
209
|
+
else:
|
|
210
|
+
lastState = self.Default
|
|
211
|
+
|
|
212
|
+
self.startStyling(start, 0x1F)
|
|
213
|
+
|
|
214
|
+
# cache objects used by processChunk that do not need updated every time it is
|
|
215
|
+
# called
|
|
216
|
+
self.hlkwords = set(text(self.keywords(self.SmartHighlight)).lower().split())
|
|
217
|
+
self.chunkRegex = re.compile('([^A-Za-z0-9]*)([A-Za-z0-9]*)')
|
|
218
|
+
kwrds = set(MS_KEYWORDS.split())
|
|
219
|
+
|
|
220
|
+
# scintilla always asks to style whole lines
|
|
221
|
+
for line in source.splitlines(True):
|
|
222
|
+
lastState, folding = self.processChunk(line, lastState, kwrds)
|
|
223
|
+
|
|
224
|
+
# open folding levels
|
|
225
|
+
if folding > 0:
|
|
226
|
+
SCI(SETFOLDLEVEL, index, CURRFOLDLEVEL | HEADERFLAG)
|
|
227
|
+
CURRFOLDLEVEL += folding
|
|
228
|
+
else:
|
|
229
|
+
SCI(SETFOLDLEVEL, index, CURRFOLDLEVEL)
|
|
230
|
+
CURRFOLDLEVEL += folding
|
|
231
|
+
|
|
232
|
+
# folding implementation goes here
|
|
233
|
+
index += 1
|
|
234
|
+
self.parent().blockSignals(False)
|