PrEditor 1.0.0__tar.gz → 1.2.0__tar.gz
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-1.0.0 → preditor-1.2.0}/MANIFEST.in +1 -0
- {preditor-1.0.0 → preditor-1.2.0}/PKG-INFO +69 -32
- {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/PKG-INFO +69 -32
- {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/SOURCES.txt +13 -21
- {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/requires.txt +9 -2
- preditor-1.2.0/PrEditor.egg-info/top_level.txt +4 -0
- {preditor-1.0.0 → preditor-1.2.0}/README.md +61 -28
- {preditor-1.0.0 → preditor-1.2.0}/preditor/__init__.py +4 -1
- {preditor-1.0.0 → preditor-1.2.0}/preditor/about_module.py +6 -2
- {preditor-1.0.0 → preditor-1.2.0}/preditor/config.py +16 -0
- preditor-1.2.0/preditor/dccs/.hab.json +10 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/dccs/maya/PrEditor_maya.mod +0 -1
- preditor-1.2.0/preditor/dccs/maya/README.md +22 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/dccs/maya/plug-ins/PrEditor_maya.py +32 -1
- preditor-1.2.0/preditor/dccs/studiomax/PackageContents.xml +32 -0
- preditor-1.2.0/preditor/dccs/studiomax/PrEditor-PrEditor_Show.mcr +8 -0
- preditor-1.2.0/preditor/dccs/studiomax/README.md +17 -0
- preditor-1.2.0/preditor/dccs/studiomax/preditor.ms +16 -0
- preditor-1.2.0/preditor/dccs/studiomax/preditor_menu.mnx +7 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/debug.py +7 -3
- {preditor-1.0.0 → preditor-1.2.0}/preditor/excepthooks.py +15 -6
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/app.py +2 -2
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/codehighlighter.py +10 -24
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/completer.py +17 -6
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/console.py +77 -47
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/dialog.py +10 -7
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/drag_tab_bar.py +7 -7
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/errordialog.py +2 -2
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/find_files.py +7 -5
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/fuzzy_search/fuzzy_search.py +8 -4
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/__init__.py +4 -4
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/grouped_tab_models.py +4 -4
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/grouped_tab_widget.py +6 -4
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/level_buttons.py +16 -1
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/loggerwindow.py +51 -28
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/set_text_editor_path_dialog.py +3 -1
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/window.py +4 -4
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/workbox_mixin.py +40 -11
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/workbox_text_edit.py +5 -3
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/workboxwidget.py +16 -12
- {preditor-1.0.0 → preditor-1.2.0}/preditor/logging_config.py +5 -2
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/__init__.py +19 -1
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/delayables/smart_highlight.py +7 -4
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/delayables/spell_check.py +5 -4
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/documenteditor.py +165 -116
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/finddialog.py +3 -3
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/language.py +1 -1
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/cpplexer.py +3 -2
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/javascriptlexer.py +6 -4
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/maxscriptlexer.py +8 -7
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/mellexer.py +3 -2
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/mulexer.py +3 -2
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/pythonlexer.py +7 -6
- {preditor-1.0.0 → preditor-1.2.0}/preditor/utils/cute.py +9 -8
- {preditor-1.0.0 → preditor-1.2.0}/preditor/version.py +16 -3
- {preditor-1.0.0 → preditor-1.2.0}/pyproject.toml +15 -34
- preditor-1.2.0/requirements-cli.txt +2 -0
- preditor-1.2.0/requirements-dev.txt +10 -0
- preditor-1.2.0/requirements-qsci5.txt +1 -0
- preditor-1.2.0/requirements-qsci6.txt +1 -0
- preditor-1.2.0/requirements-shortcut.txt +1 -0
- {preditor-1.0.0 → preditor-1.2.0}/requirements.txt +2 -2
- preditor-1.0.0/PrEditor.egg-info/top_level.txt +0 -1
- preditor-1.0.0/tests/conftest.py +0 -23
- preditor-1.0.0/tests/find_files/re_greedy_False_0_True.md +0 -16
- preditor-1.0.0/tests/find_files/re_greedy_False_2_True.md +0 -25
- preditor-1.0.0/tests/find_files/re_greedy_True_2_True.md +0 -25
- preditor-1.0.0/tests/find_files/re_greedy_upper_True_2_True.md +0 -13
- preditor-1.0.0/tests/find_files/re_simple_False_0_True.md +0 -16
- preditor-1.0.0/tests/find_files/re_simple_False_2_True.md +0 -25
- preditor-1.0.0/tests/find_files/re_simple_False_3_True.md +0 -25
- preditor-1.0.0/tests/find_files/re_simple_True_2_True.md +0 -25
- preditor-1.0.0/tests/find_files/simple_False_0_False.md +0 -16
- preditor-1.0.0/tests/find_files/simple_False_1_False.md +0 -22
- preditor-1.0.0/tests/find_files/simple_False_2_False.md +0 -25
- preditor-1.0.0/tests/find_files/simple_False_3_False.md +0 -25
- preditor-1.0.0/tests/find_files/simple_True_2_False.md +0 -25
- preditor-1.0.0/tests/find_files/tab_text.txt +0 -20
- preditor-1.0.0/tests/find_files/test_find_files.py +0 -74
- preditor-1.0.0/tests/ide/test_delayable_engine.py +0 -171
- preditor-1.0.0/tests/test_config.py +0 -251
- preditor-1.0.0/tests/test_prefs.py +0 -38
- preditor-1.0.0/tests/test_stream.py +0 -220
- {preditor-1.0.0 → preditor-1.2.0}/.coveragerc +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/.github/ISSUE_TEMPLATE/BUG_REPORT.md +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/.github/workflows/release.yml +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/.github/workflows/static-analysis-and-test.yml +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/.gitignore +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/.pre-commit-config.yaml +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/CODE_OF_CONDUCT.md +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/CONTRIBUTING.md +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/LICENSE +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/dependency_links.txt +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/entry_points.txt +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/examples/add_to_app.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/examples/output_capture_and_show.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/__main__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/cli.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/contexts.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/cores/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/cores/core.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/delayable_engine/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/delayable_engine/delayables.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/enum.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/editor_chooser.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/fuzzy_search/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/grouped_tab_menu.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/one_tab_widget.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/logger_window_handler.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/logger_window_plugin.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/newtabwidget.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/status_label.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/suggest_path_quotes_dialog.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/editor_chooser.ui +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/errordialog.ui +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/find_files.ui +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/loggerwindow.ui +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/set_text_editor_path_dialog.ui +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/suggest_path_quotes_dialog.ui +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/osystem.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/plugins.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/prefs.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/environment_variables.html +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/error_mail.html +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/error_mail_inline.html +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/README.md +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/arrow_forward.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/check-bold.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/chevron-down.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/chevron-up.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/close-thick.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/comment-edit.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-copy.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-cut.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-duplicate.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-paste.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-save.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/debug_disabled.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/eye-check.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/file-plus.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/file-remove.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/format-align-left.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/format-letter-case-lower.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/format-letter-case-upper.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/format-letter-case.svg +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/information.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_critical.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_custom.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_debug.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_error.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_info.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_not_set.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_warning.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/marker.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/play.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/playlist-play.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/plus-minus-variant.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/preditor.ico +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/preditor.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/preditor.psd +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/preditor.svg +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/regex.svg +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/restart.svg +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/skip-forward-outline.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/skip-next-outline.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/skip-next.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/skip-previous.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/subdirectory-arrow-right.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/text-search-variant.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/warning-big.png +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/lang/python.json +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/settings.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/stylesheet/Bright.css +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/stylesheet/Dark.css +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/delayables/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/bash.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/batch.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/cpp.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/css.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/eyeonscript.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/html.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/javascript.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/lua.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/maxscript.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/mel.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/mu.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/nsi.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/perl.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/puppet.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/python.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/ruby.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/sql.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/xml.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/yaml.ini +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/ui/finddialog.ui +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/settings.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/stream/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/stream/director.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/stream/manager.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/streamhandler_helper.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/utils/__init__.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/utils/stylesheets.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/utils/text_search.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/preditor/weakref.py +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/setup.cfg +0 -0
- {preditor-1.0.0 → preditor-1.2.0}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PrEditor
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: A python REPL and Editor and console based on Qt.
|
|
5
5
|
Author-email: Blur Studio <opensource@blur.com>
|
|
6
6
|
License: LGPL-3.0
|
|
@@ -10,7 +10,6 @@ Project-URL: Tracker, https://github.com/blurstudio/PrEditor/issues
|
|
|
10
10
|
Platform: any
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
|
|
14
13
|
Classifier: Operating System :: OS Independent
|
|
15
14
|
Classifier: Programming Language :: Python
|
|
16
15
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -19,11 +18,12 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
|
19
18
|
Requires-Python: >=3.7
|
|
20
19
|
Description-Content-Type: text/markdown
|
|
21
20
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist:
|
|
21
|
+
Requires-Dist: chardet
|
|
23
22
|
Requires-Dist: configparser>=4.0.2
|
|
24
23
|
Requires-Dist: future>=0.18.2
|
|
25
|
-
Requires-Dist: signalslot>=0.1.2
|
|
26
24
|
Requires-Dist: importlib-metadata>=4.8.3
|
|
25
|
+
Requires-Dist: Qt.py>=1.4.4
|
|
26
|
+
Requires-Dist: signalslot>=0.1.2
|
|
27
27
|
Provides-Extra: cli
|
|
28
28
|
Requires-Dist: click>=7.1.2; extra == "cli"
|
|
29
29
|
Requires-Dist: click-default-group; extra == "cli"
|
|
@@ -38,6 +38,10 @@ Requires-Dist: Flake8-pyproject; extra == "dev"
|
|
|
38
38
|
Requires-Dist: pep8-naming; extra == "dev"
|
|
39
39
|
Requires-Dist: pytest; extra == "dev"
|
|
40
40
|
Requires-Dist: tox; extra == "dev"
|
|
41
|
+
Provides-Extra: qsci5
|
|
42
|
+
Requires-Dist: QScintilla; extra == "qsci5"
|
|
43
|
+
Provides-Extra: qsci6
|
|
44
|
+
Requires-Dist: PyQt6-QScintilla; extra == "qsci6"
|
|
41
45
|
Provides-Extra: shortcut
|
|
42
46
|
Requires-Dist: casement>=0.1.0; platform_system == "Windows" and extra == "shortcut"
|
|
43
47
|
Dynamic: license-file
|
|
@@ -141,13 +145,13 @@ a better `parent_callback`.
|
|
|
141
145
|
## Installing Qt
|
|
142
146
|
|
|
143
147
|
PrEditor is built on Qt, but uses [Qt.py](https://github.com/mottosso/Qt.py) so
|
|
144
|
-
you can choose to use PySide2 or PyQt5. We have elected to not
|
|
145
|
-
on either of these packages
|
|
146
|
-
|
|
147
|
-
you are using it externally
|
|
148
|
+
you can choose to use PySide6, PySide2, PyQt6 or PyQt5. We have elected to not
|
|
149
|
+
directly depend on either of these packages so that you can use PrEditor inside
|
|
150
|
+
of existing applications like Maya or Houdini that already come with PySide
|
|
151
|
+
installed. If you are using it externally add them to your pip install command.
|
|
148
152
|
|
|
149
|
-
-
|
|
150
|
-
-
|
|
153
|
+
- PySide6: `pip install preditor PySide6`
|
|
154
|
+
- PyQt6: `pip install preditor PyQt6`
|
|
151
155
|
|
|
152
156
|
## Cli
|
|
153
157
|
|
|
@@ -169,35 +173,68 @@ this is only useful for windows.
|
|
|
169
173
|
## QScintilla workbox
|
|
170
174
|
|
|
171
175
|
The more mature QScintilla workbox requires a few extra dependencies that must
|
|
172
|
-
be passed manually.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
python 3 pip install command.
|
|
176
|
+
be passed manually. We have added it as pip `optional-dependencies`. QScintilla
|
|
177
|
+
only works with PyQt5/6 and it is a little hard to get PyQt working inside of
|
|
178
|
+
DCC's that ship with PySide2/6 by default. Here is the python 3 pip install command.
|
|
176
179
|
|
|
177
|
-
- `pip install preditor
|
|
180
|
+
- PyQt6: `pip install preditor[qsci6] PyQt6, aspell-python-py3`
|
|
181
|
+
- PyQt5: `pip install preditor[qsci5] PyQt5, aspell-python-py3`
|
|
178
182
|
|
|
179
183
|
The aspell-python-py3 requirement is optional to enable spell check.
|
|
180
184
|
|
|
185
|
+
You may need to set the `QT_PREFERRED_BINDING` or `QT_PREFERRED_BINDING_JSON`
|
|
186
|
+
[environment variable](https://github.com/mottosso/Qt.py?tab=readme-ov-file#override-preferred-choice) to ensure that PrEditor can use PyQt5/PyQt6.
|
|
181
187
|
|
|
182
188
|
# DCC Integration
|
|
183
189
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
190
|
+
Here are several example integrations for DCC's included in PrEditor. These
|
|
191
|
+
require some setup to manage installing all pip requirements. These will require
|
|
192
|
+
you to follow the [Setup](#setup) instructions below.
|
|
193
|
+
|
|
194
|
+
- [Maya](/preditor/dccs/maya/README.md)
|
|
195
|
+
- [3ds Max](/preditor/dccs/studiomax/README.md)
|
|
196
|
+
|
|
197
|
+
If you are using hab, you can simply add the path to the [preditor](/preditor) folder to your site's `distro_paths`. [See .hab.json](/preditor/dccs/.hab.json)
|
|
198
|
+
|
|
199
|
+
## Setup
|
|
200
|
+
|
|
201
|
+
PrEditor has many python pip requirements. The easiest way to get access to all
|
|
202
|
+
of them inside an DCC is to create a virtualenv and pip install the requirements.
|
|
203
|
+
You can possibly use the python included with DCC(mayapy), but this guide covers
|
|
204
|
+
using a system install of python.
|
|
205
|
+
|
|
206
|
+
1. Identify the minor version of python that the dcc is using. Running `sys.version_info[:2]` in the DCC returns the major and minor version of python.
|
|
207
|
+
2. Download and install the required version of python. Note, you likely only need to match the major and minor version of python(3.11 not 3.11.12). It's recommended that you don't use the windows store to install python as it has had issues when used to create virtualenvs.
|
|
208
|
+
3. Create a virtualenv using that version of python. On windows you can use `py.exe -3.11` or call the correct python.exe file. Change `-3.11` to match the major and minor version returned by step 1. Note that you should create separate venvs for a given python minor version and potentially for minor versions of Qt if you are using PyQt.
|
|
209
|
+
```batch
|
|
210
|
+
cd c:\path\to\venv\parent
|
|
211
|
+
py -3.11 -m virtualenv preditor_311
|
|
212
|
+
```
|
|
213
|
+
4. Use the newly created pip exe to install PrEditor and its dependencies.
|
|
214
|
+
* This example shows using PySide and the simple TextEdit workbox in a minimal configuration.
|
|
215
|
+
```batch
|
|
216
|
+
c:\path\to\venv\parent\preditor_311\Scripts\pip install PrEditor
|
|
217
|
+
```
|
|
218
|
+
* This example shows using QScintilla in PyQt6 for a better editing experience. Note that you need to match the PyQt version used by the DCC, This may require matching the exact version of PyQt.
|
|
219
|
+
```batch
|
|
220
|
+
c:\path\to\venv\parent\preditor_311\Scripts\pip install PrEditor[qsci6] PyQt6==6.5.3
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Editable install
|
|
224
|
+
|
|
225
|
+
You should skip this section unless you want to develop PrEditor's code from an git repo using python's editable pip install.
|
|
226
|
+
|
|
227
|
+
Due to how editable installs work you will need to set an environment variable
|
|
228
|
+
specifying the site-packages directory of the virtualenv you created in the
|
|
229
|
+
previous step. On windows this should be the `lib\site-packages` folder inside
|
|
230
|
+
of the venv you just created. Store this in the `PREDITOR_SITE`, this can be done
|
|
231
|
+
permanently or temporarily(via `set "PREDITOR_SITE=c:\path\to\venv\parent\preditor_311\lib\site-packages"`).
|
|
232
|
+
|
|
233
|
+
This is required because you are going to use the path to your git repo's preditor
|
|
234
|
+
folder in the module/plugin loading methods for the the DCC you are using, but
|
|
235
|
+
there is no way to automatically find the virtualenv that your random git repo
|
|
236
|
+
is installed in. In fact, you may have have your git repo installed into multiple
|
|
237
|
+
virtualenvs at once.
|
|
201
238
|
|
|
202
239
|
# Plugins
|
|
203
240
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PrEditor
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: A python REPL and Editor and console based on Qt.
|
|
5
5
|
Author-email: Blur Studio <opensource@blur.com>
|
|
6
6
|
License: LGPL-3.0
|
|
@@ -10,7 +10,6 @@ Project-URL: Tracker, https://github.com/blurstudio/PrEditor/issues
|
|
|
10
10
|
Platform: any
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
|
-
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)
|
|
14
13
|
Classifier: Operating System :: OS Independent
|
|
15
14
|
Classifier: Programming Language :: Python
|
|
16
15
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -19,11 +18,12 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
|
19
18
|
Requires-Python: >=3.7
|
|
20
19
|
Description-Content-Type: text/markdown
|
|
21
20
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist:
|
|
21
|
+
Requires-Dist: chardet
|
|
23
22
|
Requires-Dist: configparser>=4.0.2
|
|
24
23
|
Requires-Dist: future>=0.18.2
|
|
25
|
-
Requires-Dist: signalslot>=0.1.2
|
|
26
24
|
Requires-Dist: importlib-metadata>=4.8.3
|
|
25
|
+
Requires-Dist: Qt.py>=1.4.4
|
|
26
|
+
Requires-Dist: signalslot>=0.1.2
|
|
27
27
|
Provides-Extra: cli
|
|
28
28
|
Requires-Dist: click>=7.1.2; extra == "cli"
|
|
29
29
|
Requires-Dist: click-default-group; extra == "cli"
|
|
@@ -38,6 +38,10 @@ Requires-Dist: Flake8-pyproject; extra == "dev"
|
|
|
38
38
|
Requires-Dist: pep8-naming; extra == "dev"
|
|
39
39
|
Requires-Dist: pytest; extra == "dev"
|
|
40
40
|
Requires-Dist: tox; extra == "dev"
|
|
41
|
+
Provides-Extra: qsci5
|
|
42
|
+
Requires-Dist: QScintilla; extra == "qsci5"
|
|
43
|
+
Provides-Extra: qsci6
|
|
44
|
+
Requires-Dist: PyQt6-QScintilla; extra == "qsci6"
|
|
41
45
|
Provides-Extra: shortcut
|
|
42
46
|
Requires-Dist: casement>=0.1.0; platform_system == "Windows" and extra == "shortcut"
|
|
43
47
|
Dynamic: license-file
|
|
@@ -141,13 +145,13 @@ a better `parent_callback`.
|
|
|
141
145
|
## Installing Qt
|
|
142
146
|
|
|
143
147
|
PrEditor is built on Qt, but uses [Qt.py](https://github.com/mottosso/Qt.py) so
|
|
144
|
-
you can choose to use PySide2 or PyQt5. We have elected to not
|
|
145
|
-
on either of these packages
|
|
146
|
-
|
|
147
|
-
you are using it externally
|
|
148
|
+
you can choose to use PySide6, PySide2, PyQt6 or PyQt5. We have elected to not
|
|
149
|
+
directly depend on either of these packages so that you can use PrEditor inside
|
|
150
|
+
of existing applications like Maya or Houdini that already come with PySide
|
|
151
|
+
installed. If you are using it externally add them to your pip install command.
|
|
148
152
|
|
|
149
|
-
-
|
|
150
|
-
-
|
|
153
|
+
- PySide6: `pip install preditor PySide6`
|
|
154
|
+
- PyQt6: `pip install preditor PyQt6`
|
|
151
155
|
|
|
152
156
|
## Cli
|
|
153
157
|
|
|
@@ -169,35 +173,68 @@ this is only useful for windows.
|
|
|
169
173
|
## QScintilla workbox
|
|
170
174
|
|
|
171
175
|
The more mature QScintilla workbox requires a few extra dependencies that must
|
|
172
|
-
be passed manually.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
python 3 pip install command.
|
|
176
|
+
be passed manually. We have added it as pip `optional-dependencies`. QScintilla
|
|
177
|
+
only works with PyQt5/6 and it is a little hard to get PyQt working inside of
|
|
178
|
+
DCC's that ship with PySide2/6 by default. Here is the python 3 pip install command.
|
|
176
179
|
|
|
177
|
-
- `pip install preditor
|
|
180
|
+
- PyQt6: `pip install preditor[qsci6] PyQt6, aspell-python-py3`
|
|
181
|
+
- PyQt5: `pip install preditor[qsci5] PyQt5, aspell-python-py3`
|
|
178
182
|
|
|
179
183
|
The aspell-python-py3 requirement is optional to enable spell check.
|
|
180
184
|
|
|
185
|
+
You may need to set the `QT_PREFERRED_BINDING` or `QT_PREFERRED_BINDING_JSON`
|
|
186
|
+
[environment variable](https://github.com/mottosso/Qt.py?tab=readme-ov-file#override-preferred-choice) to ensure that PrEditor can use PyQt5/PyQt6.
|
|
181
187
|
|
|
182
188
|
# DCC Integration
|
|
183
189
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
190
|
+
Here are several example integrations for DCC's included in PrEditor. These
|
|
191
|
+
require some setup to manage installing all pip requirements. These will require
|
|
192
|
+
you to follow the [Setup](#setup) instructions below.
|
|
193
|
+
|
|
194
|
+
- [Maya](/preditor/dccs/maya/README.md)
|
|
195
|
+
- [3ds Max](/preditor/dccs/studiomax/README.md)
|
|
196
|
+
|
|
197
|
+
If you are using hab, you can simply add the path to the [preditor](/preditor) folder to your site's `distro_paths`. [See .hab.json](/preditor/dccs/.hab.json)
|
|
198
|
+
|
|
199
|
+
## Setup
|
|
200
|
+
|
|
201
|
+
PrEditor has many python pip requirements. The easiest way to get access to all
|
|
202
|
+
of them inside an DCC is to create a virtualenv and pip install the requirements.
|
|
203
|
+
You can possibly use the python included with DCC(mayapy), but this guide covers
|
|
204
|
+
using a system install of python.
|
|
205
|
+
|
|
206
|
+
1. Identify the minor version of python that the dcc is using. Running `sys.version_info[:2]` in the DCC returns the major and minor version of python.
|
|
207
|
+
2. Download and install the required version of python. Note, you likely only need to match the major and minor version of python(3.11 not 3.11.12). It's recommended that you don't use the windows store to install python as it has had issues when used to create virtualenvs.
|
|
208
|
+
3. Create a virtualenv using that version of python. On windows you can use `py.exe -3.11` or call the correct python.exe file. Change `-3.11` to match the major and minor version returned by step 1. Note that you should create separate venvs for a given python minor version and potentially for minor versions of Qt if you are using PyQt.
|
|
209
|
+
```batch
|
|
210
|
+
cd c:\path\to\venv\parent
|
|
211
|
+
py -3.11 -m virtualenv preditor_311
|
|
212
|
+
```
|
|
213
|
+
4. Use the newly created pip exe to install PrEditor and its dependencies.
|
|
214
|
+
* This example shows using PySide and the simple TextEdit workbox in a minimal configuration.
|
|
215
|
+
```batch
|
|
216
|
+
c:\path\to\venv\parent\preditor_311\Scripts\pip install PrEditor
|
|
217
|
+
```
|
|
218
|
+
* This example shows using QScintilla in PyQt6 for a better editing experience. Note that you need to match the PyQt version used by the DCC, This may require matching the exact version of PyQt.
|
|
219
|
+
```batch
|
|
220
|
+
c:\path\to\venv\parent\preditor_311\Scripts\pip install PrEditor[qsci6] PyQt6==6.5.3
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Editable install
|
|
224
|
+
|
|
225
|
+
You should skip this section unless you want to develop PrEditor's code from an git repo using python's editable pip install.
|
|
226
|
+
|
|
227
|
+
Due to how editable installs work you will need to set an environment variable
|
|
228
|
+
specifying the site-packages directory of the virtualenv you created in the
|
|
229
|
+
previous step. On windows this should be the `lib\site-packages` folder inside
|
|
230
|
+
of the venv you just created. Store this in the `PREDITOR_SITE`, this can be done
|
|
231
|
+
permanently or temporarily(via `set "PREDITOR_SITE=c:\path\to\venv\parent\preditor_311\lib\site-packages"`).
|
|
232
|
+
|
|
233
|
+
This is required because you are going to use the path to your git repo's preditor
|
|
234
|
+
folder in the module/plugin loading methods for the the DCC you are using, but
|
|
235
|
+
there is no way to automatically find the virtualenv that your random git repo
|
|
236
|
+
is installed in. In fact, you may have have your git repo installed into multiple
|
|
237
|
+
virtualenvs at once.
|
|
201
238
|
|
|
202
239
|
# Plugins
|
|
203
240
|
|
|
@@ -7,6 +7,11 @@ LICENSE
|
|
|
7
7
|
MANIFEST.in
|
|
8
8
|
README.md
|
|
9
9
|
pyproject.toml
|
|
10
|
+
requirements-cli.txt
|
|
11
|
+
requirements-dev.txt
|
|
12
|
+
requirements-qsci5.txt
|
|
13
|
+
requirements-qsci6.txt
|
|
14
|
+
requirements-shortcut.txt
|
|
10
15
|
requirements.txt
|
|
11
16
|
tox.ini
|
|
12
17
|
.github/PULL_REQUEST_TEMPLATE.md
|
|
@@ -41,8 +46,15 @@ preditor/version.py
|
|
|
41
46
|
preditor/weakref.py
|
|
42
47
|
preditor/cores/__init__.py
|
|
43
48
|
preditor/cores/core.py
|
|
49
|
+
preditor/dccs/.hab.json
|
|
44
50
|
preditor/dccs/maya/PrEditor_maya.mod
|
|
51
|
+
preditor/dccs/maya/README.md
|
|
45
52
|
preditor/dccs/maya/plug-ins/PrEditor_maya.py
|
|
53
|
+
preditor/dccs/studiomax/PackageContents.xml
|
|
54
|
+
preditor/dccs/studiomax/PrEditor-PrEditor_Show.mcr
|
|
55
|
+
preditor/dccs/studiomax/README.md
|
|
56
|
+
preditor/dccs/studiomax/preditor.ms
|
|
57
|
+
preditor/dccs/studiomax/preditor_menu.mnx
|
|
46
58
|
preditor/delayable_engine/__init__.py
|
|
47
59
|
preditor/delayable_engine/delayables.py
|
|
48
60
|
preditor/gui/__init__.py
|
|
@@ -173,24 +185,4 @@ preditor/stream/manager.py
|
|
|
173
185
|
preditor/utils/__init__.py
|
|
174
186
|
preditor/utils/cute.py
|
|
175
187
|
preditor/utils/stylesheets.py
|
|
176
|
-
preditor/utils/text_search.py
|
|
177
|
-
tests/conftest.py
|
|
178
|
-
tests/test_config.py
|
|
179
|
-
tests/test_prefs.py
|
|
180
|
-
tests/test_stream.py
|
|
181
|
-
tests/find_files/re_greedy_False_0_True.md
|
|
182
|
-
tests/find_files/re_greedy_False_2_True.md
|
|
183
|
-
tests/find_files/re_greedy_True_2_True.md
|
|
184
|
-
tests/find_files/re_greedy_upper_True_2_True.md
|
|
185
|
-
tests/find_files/re_simple_False_0_True.md
|
|
186
|
-
tests/find_files/re_simple_False_2_True.md
|
|
187
|
-
tests/find_files/re_simple_False_3_True.md
|
|
188
|
-
tests/find_files/re_simple_True_2_True.md
|
|
189
|
-
tests/find_files/simple_False_0_False.md
|
|
190
|
-
tests/find_files/simple_False_1_False.md
|
|
191
|
-
tests/find_files/simple_False_2_False.md
|
|
192
|
-
tests/find_files/simple_False_3_False.md
|
|
193
|
-
tests/find_files/simple_True_2_False.md
|
|
194
|
-
tests/find_files/tab_text.txt
|
|
195
|
-
tests/find_files/test_find_files.py
|
|
196
|
-
tests/ide/test_delayable_engine.py
|
|
188
|
+
preditor/utils/text_search.py
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
chardet
|
|
2
2
|
configparser>=4.0.2
|
|
3
3
|
future>=0.18.2
|
|
4
|
-
signalslot>=0.1.2
|
|
5
4
|
importlib-metadata>=4.8.3
|
|
5
|
+
Qt.py>=1.4.4
|
|
6
|
+
signalslot>=0.1.2
|
|
6
7
|
|
|
7
8
|
[cli]
|
|
8
9
|
click>=7.1.2
|
|
@@ -20,6 +21,12 @@ pep8-naming
|
|
|
20
21
|
pytest
|
|
21
22
|
tox
|
|
22
23
|
|
|
24
|
+
[qsci5]
|
|
25
|
+
QScintilla
|
|
26
|
+
|
|
27
|
+
[qsci6]
|
|
28
|
+
PyQt6-QScintilla
|
|
29
|
+
|
|
23
30
|
[shortcut]
|
|
24
31
|
|
|
25
32
|
[shortcut:platform_system == "Windows"]
|
|
@@ -97,13 +97,13 @@ a better `parent_callback`.
|
|
|
97
97
|
## Installing Qt
|
|
98
98
|
|
|
99
99
|
PrEditor is built on Qt, but uses [Qt.py](https://github.com/mottosso/Qt.py) so
|
|
100
|
-
you can choose to use PySide2 or PyQt5. We have elected to not
|
|
101
|
-
on either of these packages
|
|
102
|
-
|
|
103
|
-
you are using it externally
|
|
100
|
+
you can choose to use PySide6, PySide2, PyQt6 or PyQt5. We have elected to not
|
|
101
|
+
directly depend on either of these packages so that you can use PrEditor inside
|
|
102
|
+
of existing applications like Maya or Houdini that already come with PySide
|
|
103
|
+
installed. If you are using it externally add them to your pip install command.
|
|
104
104
|
|
|
105
|
-
-
|
|
106
|
-
-
|
|
105
|
+
- PySide6: `pip install preditor PySide6`
|
|
106
|
+
- PyQt6: `pip install preditor PyQt6`
|
|
107
107
|
|
|
108
108
|
## Cli
|
|
109
109
|
|
|
@@ -125,35 +125,68 @@ this is only useful for windows.
|
|
|
125
125
|
## QScintilla workbox
|
|
126
126
|
|
|
127
127
|
The more mature QScintilla workbox requires a few extra dependencies that must
|
|
128
|
-
be passed manually.
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
python 3 pip install command.
|
|
128
|
+
be passed manually. We have added it as pip `optional-dependencies`. QScintilla
|
|
129
|
+
only works with PyQt5/6 and it is a little hard to get PyQt working inside of
|
|
130
|
+
DCC's that ship with PySide2/6 by default. Here is the python 3 pip install command.
|
|
132
131
|
|
|
133
|
-
- `pip install preditor
|
|
132
|
+
- PyQt6: `pip install preditor[qsci6] PyQt6, aspell-python-py3`
|
|
133
|
+
- PyQt5: `pip install preditor[qsci5] PyQt5, aspell-python-py3`
|
|
134
134
|
|
|
135
135
|
The aspell-python-py3 requirement is optional to enable spell check.
|
|
136
136
|
|
|
137
|
+
You may need to set the `QT_PREFERRED_BINDING` or `QT_PREFERRED_BINDING_JSON`
|
|
138
|
+
[environment variable](https://github.com/mottosso/Qt.py?tab=readme-ov-file#override-preferred-choice) to ensure that PrEditor can use PyQt5/PyQt6.
|
|
137
139
|
|
|
138
140
|
# DCC Integration
|
|
139
141
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
142
|
+
Here are several example integrations for DCC's included in PrEditor. These
|
|
143
|
+
require some setup to manage installing all pip requirements. These will require
|
|
144
|
+
you to follow the [Setup](#setup) instructions below.
|
|
145
|
+
|
|
146
|
+
- [Maya](/preditor/dccs/maya/README.md)
|
|
147
|
+
- [3ds Max](/preditor/dccs/studiomax/README.md)
|
|
148
|
+
|
|
149
|
+
If you are using hab, you can simply add the path to the [preditor](/preditor) folder to your site's `distro_paths`. [See .hab.json](/preditor/dccs/.hab.json)
|
|
150
|
+
|
|
151
|
+
## Setup
|
|
152
|
+
|
|
153
|
+
PrEditor has many python pip requirements. The easiest way to get access to all
|
|
154
|
+
of them inside an DCC is to create a virtualenv and pip install the requirements.
|
|
155
|
+
You can possibly use the python included with DCC(mayapy), but this guide covers
|
|
156
|
+
using a system install of python.
|
|
157
|
+
|
|
158
|
+
1. Identify the minor version of python that the dcc is using. Running `sys.version_info[:2]` in the DCC returns the major and minor version of python.
|
|
159
|
+
2. Download and install the required version of python. Note, you likely only need to match the major and minor version of python(3.11 not 3.11.12). It's recommended that you don't use the windows store to install python as it has had issues when used to create virtualenvs.
|
|
160
|
+
3. Create a virtualenv using that version of python. On windows you can use `py.exe -3.11` or call the correct python.exe file. Change `-3.11` to match the major and minor version returned by step 1. Note that you should create separate venvs for a given python minor version and potentially for minor versions of Qt if you are using PyQt.
|
|
161
|
+
```batch
|
|
162
|
+
cd c:\path\to\venv\parent
|
|
163
|
+
py -3.11 -m virtualenv preditor_311
|
|
164
|
+
```
|
|
165
|
+
4. Use the newly created pip exe to install PrEditor and its dependencies.
|
|
166
|
+
* This example shows using PySide and the simple TextEdit workbox in a minimal configuration.
|
|
167
|
+
```batch
|
|
168
|
+
c:\path\to\venv\parent\preditor_311\Scripts\pip install PrEditor
|
|
169
|
+
```
|
|
170
|
+
* This example shows using QScintilla in PyQt6 for a better editing experience. Note that you need to match the PyQt version used by the DCC, This may require matching the exact version of PyQt.
|
|
171
|
+
```batch
|
|
172
|
+
c:\path\to\venv\parent\preditor_311\Scripts\pip install PrEditor[qsci6] PyQt6==6.5.3
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Editable install
|
|
176
|
+
|
|
177
|
+
You should skip this section unless you want to develop PrEditor's code from an git repo using python's editable pip install.
|
|
178
|
+
|
|
179
|
+
Due to how editable installs work you will need to set an environment variable
|
|
180
|
+
specifying the site-packages directory of the virtualenv you created in the
|
|
181
|
+
previous step. On windows this should be the `lib\site-packages` folder inside
|
|
182
|
+
of the venv you just created. Store this in the `PREDITOR_SITE`, this can be done
|
|
183
|
+
permanently or temporarily(via `set "PREDITOR_SITE=c:\path\to\venv\parent\preditor_311\lib\site-packages"`).
|
|
184
|
+
|
|
185
|
+
This is required because you are going to use the path to your git repo's preditor
|
|
186
|
+
folder in the module/plugin loading methods for the the DCC you are using, but
|
|
187
|
+
there is no way to automatically find the virtualenv that your random git repo
|
|
188
|
+
is installed in. In fact, you may have have your git repo installed into multiple
|
|
189
|
+
virtualenvs at once.
|
|
157
190
|
|
|
158
191
|
# Plugins
|
|
159
192
|
|
|
@@ -184,7 +184,10 @@ def launch(run_workbox=False, app_id=None, name=None, standalone=False):
|
|
|
184
184
|
# it regain focus.
|
|
185
185
|
widget.activateWindow()
|
|
186
186
|
widget.raise_()
|
|
187
|
-
widget.setWindowState(
|
|
187
|
+
widget.setWindowState(
|
|
188
|
+
widget.windowState() & ~Qt.WindowState.WindowMinimized
|
|
189
|
+
| Qt.WindowState.WindowActive
|
|
190
|
+
)
|
|
188
191
|
widget.console().setFocus()
|
|
189
192
|
app.start()
|
|
190
193
|
|
|
@@ -111,10 +111,14 @@ class AboutQt(AboutModule):
|
|
|
111
111
|
pass
|
|
112
112
|
|
|
113
113
|
# Add info for all Qt5 bindings that have been imported
|
|
114
|
-
if '
|
|
115
|
-
ret.append('
|
|
114
|
+
if 'PySide6.QtCore' in sys.modules:
|
|
115
|
+
ret.append('PySide6: {}'.format(sys.modules['PySide6.QtCore'].qVersion()))
|
|
116
|
+
if 'PyQt6.QtCore' in sys.modules:
|
|
117
|
+
ret.append('PyQt6: {}'.format(sys.modules['PyQt6.QtCore'].PYQT_VERSION_STR))
|
|
116
118
|
if 'PySide2.QtCore' in sys.modules:
|
|
117
119
|
ret.append('PySide2: {}'.format(sys.modules['PySide2.QtCore'].qVersion()))
|
|
120
|
+
if 'PyQt5.QtCore' in sys.modules:
|
|
121
|
+
ret.append('PyQt5: {}'.format(sys.modules['PyQt5.QtCore'].PYQT_VERSION_STR))
|
|
118
122
|
|
|
119
123
|
# Add qt library paths for plugin debugging
|
|
120
124
|
for i, path in enumerate(QtCore.QCoreApplication.libraryPaths()):
|
|
@@ -48,6 +48,7 @@ class PreditorConfig:
|
|
|
48
48
|
self._name = None
|
|
49
49
|
self._logging = False
|
|
50
50
|
self._headless_callback = None
|
|
51
|
+
self._on_create_callback = None
|
|
51
52
|
self._parent_callback = None
|
|
52
53
|
self._error_dialog_class = True
|
|
53
54
|
self._excepthooks = []
|
|
@@ -63,6 +64,7 @@ class PreditorConfig:
|
|
|
63
64
|
f"{' ' * indent}logging: {self.logging}",
|
|
64
65
|
f"{' ' * indent}headless_callback: {self.headless_callback!r}",
|
|
65
66
|
f"{' ' * indent}parent_callback: {self.parent_callback!r}",
|
|
67
|
+
f"{' ' * indent}on_create_callback: {self.on_create_callback!r}",
|
|
66
68
|
]
|
|
67
69
|
return '\n'.join(ret)
|
|
68
70
|
|
|
@@ -233,6 +235,20 @@ class PreditorConfig:
|
|
|
233
235
|
# If the core name was changed attempt to update the logging config.
|
|
234
236
|
self.update_logging()
|
|
235
237
|
|
|
238
|
+
@property
|
|
239
|
+
def on_create_callback(self):
|
|
240
|
+
"""A pointer to a method that is called on LoggerWindow instance create.
|
|
241
|
+
|
|
242
|
+
This callback accepts the instance and can be used to customize the
|
|
243
|
+
LoggerWindow instance when it is first created.
|
|
244
|
+
"""
|
|
245
|
+
return self._on_create_callback
|
|
246
|
+
|
|
247
|
+
@on_create_callback.setter
|
|
248
|
+
@set_if_unlocked()
|
|
249
|
+
def on_create_callback(self, cb):
|
|
250
|
+
self._on_create_callback = cb
|
|
251
|
+
|
|
236
252
|
@property
|
|
237
253
|
def parent_callback(self):
|
|
238
254
|
"""A pointer to a method that is called by `self.root_window`.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Maya Integration
|
|
2
|
+
|
|
3
|
+
This is an example of using an Maya module to add PrEditor into Maya. This adds
|
|
4
|
+
a PrEditor menu with a PrEditor action in Maya's menu bar letting you open PrEditor. It
|
|
5
|
+
adds the excepthook so if a python exception is raised it will prompt the user
|
|
6
|
+
to show PrEditor. PrEditor will show all python stdout/stderr output generated
|
|
7
|
+
after the plugin is loaded.
|
|
8
|
+
|
|
9
|
+
# Setup
|
|
10
|
+
|
|
11
|
+
Make sure to follow these [setup instructions](/preditor/README.md#Setup) first to create the virtualenv.
|
|
12
|
+
|
|
13
|
+
Alternatively you can use [myapy's](https://help.autodesk.com/view/MAYAUL/2026/ENU/?guid=GUID-72A245EC-CDB4-46AB-BEE0-4BBBF9791627) pip to install the requirements, but a
|
|
14
|
+
separate virtualenv is recommended. This method should not require setting the
|
|
15
|
+
`PREDITOR_SITE` environment variable even if you use an editable install.
|
|
16
|
+
|
|
17
|
+
# Use
|
|
18
|
+
|
|
19
|
+
The [preditor/dccs/maya](/preditor/dccs/maya) directory is setup as a Maya Module. To load it in
|
|
20
|
+
maya add the full path to that directory to the `MAYA_MODULE_PATH` environment
|
|
21
|
+
variable. You can use `;` on windows and `:` on linux to join multiple paths together.
|
|
22
|
+
You will need to enable auto load for the `PrEditor_maya.py` plugin.
|