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.

Files changed (211) hide show
  1. {preditor-1.0.0 → preditor-1.2.0}/MANIFEST.in +1 -0
  2. {preditor-1.0.0 → preditor-1.2.0}/PKG-INFO +69 -32
  3. {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/PKG-INFO +69 -32
  4. {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/SOURCES.txt +13 -21
  5. {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/requires.txt +9 -2
  6. preditor-1.2.0/PrEditor.egg-info/top_level.txt +4 -0
  7. {preditor-1.0.0 → preditor-1.2.0}/README.md +61 -28
  8. {preditor-1.0.0 → preditor-1.2.0}/preditor/__init__.py +4 -1
  9. {preditor-1.0.0 → preditor-1.2.0}/preditor/about_module.py +6 -2
  10. {preditor-1.0.0 → preditor-1.2.0}/preditor/config.py +16 -0
  11. preditor-1.2.0/preditor/dccs/.hab.json +10 -0
  12. {preditor-1.0.0 → preditor-1.2.0}/preditor/dccs/maya/PrEditor_maya.mod +0 -1
  13. preditor-1.2.0/preditor/dccs/maya/README.md +22 -0
  14. {preditor-1.0.0 → preditor-1.2.0}/preditor/dccs/maya/plug-ins/PrEditor_maya.py +32 -1
  15. preditor-1.2.0/preditor/dccs/studiomax/PackageContents.xml +32 -0
  16. preditor-1.2.0/preditor/dccs/studiomax/PrEditor-PrEditor_Show.mcr +8 -0
  17. preditor-1.2.0/preditor/dccs/studiomax/README.md +17 -0
  18. preditor-1.2.0/preditor/dccs/studiomax/preditor.ms +16 -0
  19. preditor-1.2.0/preditor/dccs/studiomax/preditor_menu.mnx +7 -0
  20. {preditor-1.0.0 → preditor-1.2.0}/preditor/debug.py +7 -3
  21. {preditor-1.0.0 → preditor-1.2.0}/preditor/excepthooks.py +15 -6
  22. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/app.py +2 -2
  23. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/codehighlighter.py +10 -24
  24. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/completer.py +17 -6
  25. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/console.py +77 -47
  26. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/dialog.py +10 -7
  27. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/drag_tab_bar.py +7 -7
  28. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/errordialog.py +2 -2
  29. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/find_files.py +7 -5
  30. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/fuzzy_search/fuzzy_search.py +8 -4
  31. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/__init__.py +4 -4
  32. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/grouped_tab_models.py +4 -4
  33. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/grouped_tab_widget.py +6 -4
  34. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/level_buttons.py +16 -1
  35. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/loggerwindow.py +51 -28
  36. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/set_text_editor_path_dialog.py +3 -1
  37. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/window.py +4 -4
  38. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/workbox_mixin.py +40 -11
  39. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/workbox_text_edit.py +5 -3
  40. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/workboxwidget.py +16 -12
  41. {preditor-1.0.0 → preditor-1.2.0}/preditor/logging_config.py +5 -2
  42. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/__init__.py +19 -1
  43. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/delayables/smart_highlight.py +7 -4
  44. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/delayables/spell_check.py +5 -4
  45. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/documenteditor.py +165 -116
  46. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/finddialog.py +3 -3
  47. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/language.py +1 -1
  48. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/cpplexer.py +3 -2
  49. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/javascriptlexer.py +6 -4
  50. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/maxscriptlexer.py +8 -7
  51. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/mellexer.py +3 -2
  52. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/mulexer.py +3 -2
  53. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/pythonlexer.py +7 -6
  54. {preditor-1.0.0 → preditor-1.2.0}/preditor/utils/cute.py +9 -8
  55. {preditor-1.0.0 → preditor-1.2.0}/preditor/version.py +16 -3
  56. {preditor-1.0.0 → preditor-1.2.0}/pyproject.toml +15 -34
  57. preditor-1.2.0/requirements-cli.txt +2 -0
  58. preditor-1.2.0/requirements-dev.txt +10 -0
  59. preditor-1.2.0/requirements-qsci5.txt +1 -0
  60. preditor-1.2.0/requirements-qsci6.txt +1 -0
  61. preditor-1.2.0/requirements-shortcut.txt +1 -0
  62. {preditor-1.0.0 → preditor-1.2.0}/requirements.txt +2 -2
  63. preditor-1.0.0/PrEditor.egg-info/top_level.txt +0 -1
  64. preditor-1.0.0/tests/conftest.py +0 -23
  65. preditor-1.0.0/tests/find_files/re_greedy_False_0_True.md +0 -16
  66. preditor-1.0.0/tests/find_files/re_greedy_False_2_True.md +0 -25
  67. preditor-1.0.0/tests/find_files/re_greedy_True_2_True.md +0 -25
  68. preditor-1.0.0/tests/find_files/re_greedy_upper_True_2_True.md +0 -13
  69. preditor-1.0.0/tests/find_files/re_simple_False_0_True.md +0 -16
  70. preditor-1.0.0/tests/find_files/re_simple_False_2_True.md +0 -25
  71. preditor-1.0.0/tests/find_files/re_simple_False_3_True.md +0 -25
  72. preditor-1.0.0/tests/find_files/re_simple_True_2_True.md +0 -25
  73. preditor-1.0.0/tests/find_files/simple_False_0_False.md +0 -16
  74. preditor-1.0.0/tests/find_files/simple_False_1_False.md +0 -22
  75. preditor-1.0.0/tests/find_files/simple_False_2_False.md +0 -25
  76. preditor-1.0.0/tests/find_files/simple_False_3_False.md +0 -25
  77. preditor-1.0.0/tests/find_files/simple_True_2_False.md +0 -25
  78. preditor-1.0.0/tests/find_files/tab_text.txt +0 -20
  79. preditor-1.0.0/tests/find_files/test_find_files.py +0 -74
  80. preditor-1.0.0/tests/ide/test_delayable_engine.py +0 -171
  81. preditor-1.0.0/tests/test_config.py +0 -251
  82. preditor-1.0.0/tests/test_prefs.py +0 -38
  83. preditor-1.0.0/tests/test_stream.py +0 -220
  84. {preditor-1.0.0 → preditor-1.2.0}/.coveragerc +0 -0
  85. {preditor-1.0.0 → preditor-1.2.0}/.github/ISSUE_TEMPLATE/BUG_REPORT.md +0 -0
  86. {preditor-1.0.0 → preditor-1.2.0}/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md +0 -0
  87. {preditor-1.0.0 → preditor-1.2.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  88. {preditor-1.0.0 → preditor-1.2.0}/.github/workflows/release.yml +0 -0
  89. {preditor-1.0.0 → preditor-1.2.0}/.github/workflows/static-analysis-and-test.yml +0 -0
  90. {preditor-1.0.0 → preditor-1.2.0}/.gitignore +0 -0
  91. {preditor-1.0.0 → preditor-1.2.0}/.pre-commit-config.yaml +0 -0
  92. {preditor-1.0.0 → preditor-1.2.0}/CODE_OF_CONDUCT.md +0 -0
  93. {preditor-1.0.0 → preditor-1.2.0}/CONTRIBUTING.md +0 -0
  94. {preditor-1.0.0 → preditor-1.2.0}/LICENSE +0 -0
  95. {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/dependency_links.txt +0 -0
  96. {preditor-1.0.0 → preditor-1.2.0}/PrEditor.egg-info/entry_points.txt +0 -0
  97. {preditor-1.0.0 → preditor-1.2.0}/examples/add_to_app.py +0 -0
  98. {preditor-1.0.0 → preditor-1.2.0}/examples/output_capture_and_show.py +0 -0
  99. {preditor-1.0.0 → preditor-1.2.0}/preditor/__main__.py +0 -0
  100. {preditor-1.0.0 → preditor-1.2.0}/preditor/cli.py +0 -0
  101. {preditor-1.0.0 → preditor-1.2.0}/preditor/contexts.py +0 -0
  102. {preditor-1.0.0 → preditor-1.2.0}/preditor/cores/__init__.py +0 -0
  103. {preditor-1.0.0 → preditor-1.2.0}/preditor/cores/core.py +0 -0
  104. {preditor-1.0.0 → preditor-1.2.0}/preditor/delayable_engine/__init__.py +0 -0
  105. {preditor-1.0.0 → preditor-1.2.0}/preditor/delayable_engine/delayables.py +0 -0
  106. {preditor-1.0.0 → preditor-1.2.0}/preditor/enum.py +0 -0
  107. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/__init__.py +0 -0
  108. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/editor_chooser.py +0 -0
  109. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/fuzzy_search/__init__.py +0 -0
  110. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/grouped_tab_menu.py +0 -0
  111. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/group_tab_widget/one_tab_widget.py +0 -0
  112. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/logger_window_handler.py +0 -0
  113. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/logger_window_plugin.py +0 -0
  114. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/newtabwidget.py +0 -0
  115. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/status_label.py +0 -0
  116. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/suggest_path_quotes_dialog.py +0 -0
  117. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/editor_chooser.ui +0 -0
  118. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/errordialog.ui +0 -0
  119. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/find_files.ui +0 -0
  120. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/loggerwindow.ui +0 -0
  121. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/set_text_editor_path_dialog.ui +0 -0
  122. {preditor-1.0.0 → preditor-1.2.0}/preditor/gui/ui/suggest_path_quotes_dialog.ui +0 -0
  123. {preditor-1.0.0 → preditor-1.2.0}/preditor/osystem.py +0 -0
  124. {preditor-1.0.0 → preditor-1.2.0}/preditor/plugins.py +0 -0
  125. {preditor-1.0.0 → preditor-1.2.0}/preditor/prefs.py +0 -0
  126. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/environment_variables.html +0 -0
  127. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/error_mail.html +0 -0
  128. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/error_mail_inline.html +0 -0
  129. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/README.md +0 -0
  130. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/arrow_forward.png +0 -0
  131. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/check-bold.png +0 -0
  132. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/chevron-down.png +0 -0
  133. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/chevron-up.png +0 -0
  134. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/close-thick.png +0 -0
  135. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/comment-edit.png +0 -0
  136. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-copy.png +0 -0
  137. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-cut.png +0 -0
  138. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-duplicate.png +0 -0
  139. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-paste.png +0 -0
  140. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/content-save.png +0 -0
  141. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/debug_disabled.png +0 -0
  142. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/eye-check.png +0 -0
  143. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/file-plus.png +0 -0
  144. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/file-remove.png +0 -0
  145. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/format-align-left.png +0 -0
  146. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/format-letter-case-lower.png +0 -0
  147. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/format-letter-case-upper.png +0 -0
  148. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/format-letter-case.svg +0 -0
  149. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/information.png +0 -0
  150. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_critical.png +0 -0
  151. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_custom.png +0 -0
  152. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_debug.png +0 -0
  153. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_error.png +0 -0
  154. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_info.png +0 -0
  155. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_not_set.png +0 -0
  156. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/logging_warning.png +0 -0
  157. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/marker.png +0 -0
  158. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/play.png +0 -0
  159. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/playlist-play.png +0 -0
  160. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/plus-minus-variant.png +0 -0
  161. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/preditor.ico +0 -0
  162. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/preditor.png +0 -0
  163. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/preditor.psd +0 -0
  164. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/preditor.svg +0 -0
  165. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/regex.svg +0 -0
  166. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/restart.svg +0 -0
  167. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/skip-forward-outline.png +0 -0
  168. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/skip-next-outline.png +0 -0
  169. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/skip-next.png +0 -0
  170. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/skip-previous.png +0 -0
  171. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/subdirectory-arrow-right.png +0 -0
  172. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/text-search-variant.png +0 -0
  173. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/img/warning-big.png +0 -0
  174. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/lang/python.json +0 -0
  175. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/settings.ini +0 -0
  176. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/stylesheet/Bright.css +0 -0
  177. {preditor-1.0.0 → preditor-1.2.0}/preditor/resource/stylesheet/Dark.css +0 -0
  178. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/delayables/__init__.py +0 -0
  179. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/__init__.py +0 -0
  180. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/bash.ini +0 -0
  181. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/batch.ini +0 -0
  182. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/cpp.ini +0 -0
  183. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/css.ini +0 -0
  184. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/eyeonscript.ini +0 -0
  185. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/html.ini +0 -0
  186. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/javascript.ini +0 -0
  187. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/lua.ini +0 -0
  188. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/maxscript.ini +0 -0
  189. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/mel.ini +0 -0
  190. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/mu.ini +0 -0
  191. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/nsi.ini +0 -0
  192. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/perl.ini +0 -0
  193. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/puppet.ini +0 -0
  194. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/python.ini +0 -0
  195. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/ruby.ini +0 -0
  196. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/sql.ini +0 -0
  197. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/xml.ini +0 -0
  198. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lang/config/yaml.ini +0 -0
  199. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/lexers/__init__.py +0 -0
  200. {preditor-1.0.0 → preditor-1.2.0}/preditor/scintilla/ui/finddialog.ui +0 -0
  201. {preditor-1.0.0 → preditor-1.2.0}/preditor/settings.py +0 -0
  202. {preditor-1.0.0 → preditor-1.2.0}/preditor/stream/__init__.py +0 -0
  203. {preditor-1.0.0 → preditor-1.2.0}/preditor/stream/director.py +0 -0
  204. {preditor-1.0.0 → preditor-1.2.0}/preditor/stream/manager.py +0 -0
  205. {preditor-1.0.0 → preditor-1.2.0}/preditor/streamhandler_helper.py +0 -0
  206. {preditor-1.0.0 → preditor-1.2.0}/preditor/utils/__init__.py +0 -0
  207. {preditor-1.0.0 → preditor-1.2.0}/preditor/utils/stylesheets.py +0 -0
  208. {preditor-1.0.0 → preditor-1.2.0}/preditor/utils/text_search.py +0 -0
  209. {preditor-1.0.0 → preditor-1.2.0}/preditor/weakref.py +0 -0
  210. {preditor-1.0.0 → preditor-1.2.0}/setup.cfg +0 -0
  211. {preditor-1.0.0 → preditor-1.2.0}/tox.ini +0 -0
@@ -1,3 +1,4 @@
1
1
  graft preditor/resource
2
2
  graft preditor/dccs
3
3
  recursive-include preditor *.ui
4
+ recursive-exclude tests *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PrEditor
3
- Version: 1.0.0
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: Qt.py
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 directly depend
145
- on either of these packages as if you want to use PrEditor inside of a an existing
146
- application like Maya or Houdini, they already come with PySide2 installed. If
147
- you are using it externally, add them to your pip install command.
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
- - PySide2: `pip install preditor PySide2`
150
- - PyQt5: `pip install preditor PyQt5`
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. It hasn't been added to `extras_require` because we plan to
173
- split it into its own pip module due to it requiring PyQt5 which is a little hard
174
- to get working inside of DCC's that ship with PySide2 by default. Here is the
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 PyQt5, QScintilla>=2.11.4 aspell-python-py3`
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
- ## Maya
185
-
186
- PrEditor is pre-setup to use as a Maya module. To use it, create a virtualenv
187
- with the same python as maya, or install it using mayapy.
188
-
189
- ```
190
- virtualenv venv_preditor
191
- venv_preditor\Scripts\activate
192
- pip install PrEditor
193
- set MAYA_MODULE_PATH=c:\path\to\venv_preditor\Lib\site-packages\preditor\dccs
194
- ```
195
- Note: Due to how maya .mod files works if you are using development installs you
196
- can't use pip editable installs. This is due to the relative path used
197
- `PYTHONPATH +:= ../..` in `PrEditor_maya.mod`. You can modify that to use a hard
198
- coded file path for testing, or add a second .mod file to add the virtualenv's
199
- `site-packages` file path as a hard coded file path.
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.0.0
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: Qt.py
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 directly depend
145
- on either of these packages as if you want to use PrEditor inside of a an existing
146
- application like Maya or Houdini, they already come with PySide2 installed. If
147
- you are using it externally, add them to your pip install command.
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
- - PySide2: `pip install preditor PySide2`
150
- - PyQt5: `pip install preditor PyQt5`
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. It hasn't been added to `extras_require` because we plan to
173
- split it into its own pip module due to it requiring PyQt5 which is a little hard
174
- to get working inside of DCC's that ship with PySide2 by default. Here is the
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 PyQt5, QScintilla>=2.11.4 aspell-python-py3`
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
- ## Maya
185
-
186
- PrEditor is pre-setup to use as a Maya module. To use it, create a virtualenv
187
- with the same python as maya, or install it using mayapy.
188
-
189
- ```
190
- virtualenv venv_preditor
191
- venv_preditor\Scripts\activate
192
- pip install PrEditor
193
- set MAYA_MODULE_PATH=c:\path\to\venv_preditor\Lib\site-packages\preditor\dccs
194
- ```
195
- Note: Due to how maya .mod files works if you are using development installs you
196
- can't use pip editable installs. This is due to the relative path used
197
- `PYTHONPATH +:= ../..` in `PrEditor_maya.mod`. You can modify that to use a hard
198
- coded file path for testing, or add a second .mod file to add the virtualenv's
199
- `site-packages` file path as a hard coded file path.
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
- Qt.py
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"]
@@ -0,0 +1,4 @@
1
+ build
2
+ dist
3
+ preditor
4
+ tests
@@ -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 directly depend
101
- on either of these packages as if you want to use PrEditor inside of a an existing
102
- application like Maya or Houdini, they already come with PySide2 installed. If
103
- you are using it externally, add them to your pip install command.
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
- - PySide2: `pip install preditor PySide2`
106
- - PyQt5: `pip install preditor PyQt5`
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. It hasn't been added to `extras_require` because we plan to
129
- split it into its own pip module due to it requiring PyQt5 which is a little hard
130
- to get working inside of DCC's that ship with PySide2 by default. Here is the
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 PyQt5, QScintilla>=2.11.4 aspell-python-py3`
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
- ## Maya
141
-
142
- PrEditor is pre-setup to use as a Maya module. To use it, create a virtualenv
143
- with the same python as maya, or install it using mayapy.
144
-
145
- ```
146
- virtualenv venv_preditor
147
- venv_preditor\Scripts\activate
148
- pip install PrEditor
149
- set MAYA_MODULE_PATH=c:\path\to\venv_preditor\Lib\site-packages\preditor\dccs
150
- ```
151
- Note: Due to how maya .mod files works if you are using development installs you
152
- can't use pip editable installs. This is due to the relative path used
153
- `PYTHONPATH +:= ../..` in `PrEditor_maya.mod`. You can modify that to use a hard
154
- coded file path for testing, or add a second .mod file to add the virtualenv's
155
- `site-packages` file path as a hard coded file path.
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(widget.windowState() & ~Qt.WindowMinimized | Qt.WindowActive)
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 'PyQt5.QtCore' in sys.modules:
115
- ret.append('PyQt5: {}'.format(sys.modules['PyQt5.QtCore'].PYQT_VERSION_STR))
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,10 @@
1
+ {
2
+ "name": "preditor",
3
+ "version": "0.0.dev0",
4
+ "environment": {
5
+ "append": {
6
+ "MAYA_MODULE_PATH": "{relative_root}/maya",
7
+ "ADSK_APPLICATION_PLUGINS": "{relative_root}/studiomax"
8
+ }
9
+ }
10
+ }
@@ -1,2 +1 @@
1
1
  + PrEditor DEVELOPMENT .
2
- PYTHONPATH +:= ../..
@@ -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.