PrEditor 2.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. preditor/__init__.py +315 -0
  2. preditor/__main__.py +13 -0
  3. preditor/about_module.py +165 -0
  4. preditor/cli.py +192 -0
  5. preditor/config.py +318 -0
  6. preditor/constants.py +13 -0
  7. preditor/contexts.py +210 -0
  8. preditor/cores/__init__.py +0 -0
  9. preditor/cores/core.py +20 -0
  10. preditor/dccs/.hab.json +10 -0
  11. preditor/dccs/maya/PrEditor_maya.mod +1 -0
  12. preditor/dccs/maya/README.md +22 -0
  13. preditor/dccs/maya/plug-ins/PrEditor_maya.py +141 -0
  14. preditor/dccs/studiomax/PackageContents.xml +32 -0
  15. preditor/dccs/studiomax/PrEditor-PrEditor_Show.mcr +8 -0
  16. preditor/dccs/studiomax/README.md +17 -0
  17. preditor/dccs/studiomax/preditor.ms +16 -0
  18. preditor/dccs/studiomax/preditor_menu.mnx +7 -0
  19. preditor/debug.py +149 -0
  20. preditor/delayable_engine/__init__.py +302 -0
  21. preditor/delayable_engine/delayables.py +85 -0
  22. preditor/enum.py +728 -0
  23. preditor/excepthooks.py +165 -0
  24. preditor/gui/__init__.py +56 -0
  25. preditor/gui/app.py +163 -0
  26. preditor/gui/codehighlighter.py +289 -0
  27. preditor/gui/completer.py +237 -0
  28. preditor/gui/console.py +605 -0
  29. preditor/gui/console_base.py +911 -0
  30. preditor/gui/dialog.py +181 -0
  31. preditor/gui/drag_tab_bar.py +625 -0
  32. preditor/gui/editor_chooser.py +57 -0
  33. preditor/gui/errordialog.py +69 -0
  34. preditor/gui/find_files.py +137 -0
  35. preditor/gui/fuzzy_search/__init__.py +0 -0
  36. preditor/gui/fuzzy_search/fuzzy_search.py +97 -0
  37. preditor/gui/group_tab_widget/__init__.py +0 -0
  38. preditor/gui/group_tab_widget/group_tab_widget.py +528 -0
  39. preditor/gui/group_tab_widget/grouped_tab_menu.py +35 -0
  40. preditor/gui/group_tab_widget/grouped_tab_models.py +107 -0
  41. preditor/gui/group_tab_widget/grouped_tab_widget.py +223 -0
  42. preditor/gui/group_tab_widget/one_tab_widget.py +96 -0
  43. preditor/gui/level_buttons.py +358 -0
  44. preditor/gui/logger_window_handler.py +77 -0
  45. preditor/gui/logger_window_plugin.py +35 -0
  46. preditor/gui/loggerwindow.py +2405 -0
  47. preditor/gui/newtabwidget.py +69 -0
  48. preditor/gui/output_console.py +11 -0
  49. preditor/gui/qtdesigner/__init__.py +21 -0
  50. preditor/gui/qtdesigner/_log_plugin.py +29 -0
  51. preditor/gui/qtdesigner/console_base_plugin.py +48 -0
  52. preditor/gui/qtdesigner/console_predit_plugin.py +48 -0
  53. preditor/gui/set_text_editor_path_dialog.py +61 -0
  54. preditor/gui/status_label.py +99 -0
  55. preditor/gui/suggest_path_quotes_dialog.py +50 -0
  56. preditor/gui/ui/editor_chooser.ui +93 -0
  57. preditor/gui/ui/errordialog.ui +74 -0
  58. preditor/gui/ui/find_files.ui +140 -0
  59. preditor/gui/ui/loggerwindow.ui +1909 -0
  60. preditor/gui/ui/set_text_editor_path_dialog.ui +189 -0
  61. preditor/gui/ui/suggest_path_quotes_dialog.ui +225 -0
  62. preditor/gui/window.py +161 -0
  63. preditor/gui/workbox_mixin.py +1139 -0
  64. preditor/gui/workbox_text_edit.py +136 -0
  65. preditor/gui/workboxwidget.py +315 -0
  66. preditor/logging_config.py +55 -0
  67. preditor/osystem.py +401 -0
  68. preditor/plugins.py +118 -0
  69. preditor/prefs.py +381 -0
  70. preditor/resource/environment_variables.html +26 -0
  71. preditor/resource/error_mail.html +85 -0
  72. preditor/resource/error_mail_inline.html +41 -0
  73. preditor/resource/img/README.md +17 -0
  74. preditor/resource/img/arrow_forward.png +0 -0
  75. preditor/resource/img/check-bold.png +0 -0
  76. preditor/resource/img/chevron-down.png +0 -0
  77. preditor/resource/img/chevron-up.png +0 -0
  78. preditor/resource/img/close-thick.png +0 -0
  79. preditor/resource/img/comment-edit.png +0 -0
  80. preditor/resource/img/content-copy.png +0 -0
  81. preditor/resource/img/content-cut.png +0 -0
  82. preditor/resource/img/content-duplicate.png +0 -0
  83. preditor/resource/img/content-paste.png +0 -0
  84. preditor/resource/img/content-save.png +0 -0
  85. preditor/resource/img/debug_disabled.png +0 -0
  86. preditor/resource/img/eye-check.png +0 -0
  87. preditor/resource/img/file-plus.png +0 -0
  88. preditor/resource/img/file-remove.png +0 -0
  89. preditor/resource/img/format-align-left.png +0 -0
  90. preditor/resource/img/format-letter-case-lower.png +0 -0
  91. preditor/resource/img/format-letter-case-upper.png +0 -0
  92. preditor/resource/img/format-letter-case.svg +1 -0
  93. preditor/resource/img/information.png +0 -0
  94. preditor/resource/img/logging_critical.png +0 -0
  95. preditor/resource/img/logging_custom.png +0 -0
  96. preditor/resource/img/logging_debug.png +0 -0
  97. preditor/resource/img/logging_error.png +0 -0
  98. preditor/resource/img/logging_info.png +0 -0
  99. preditor/resource/img/logging_not_set.png +0 -0
  100. preditor/resource/img/logging_warning.png +0 -0
  101. preditor/resource/img/marker.png +0 -0
  102. preditor/resource/img/play.png +0 -0
  103. preditor/resource/img/playlist-play.png +0 -0
  104. preditor/resource/img/plus-minus-variant.png +0 -0
  105. preditor/resource/img/preditor.ico +0 -0
  106. preditor/resource/img/preditor.png +0 -0
  107. preditor/resource/img/preditor.psd +0 -0
  108. preditor/resource/img/preditor.svg +44 -0
  109. preditor/resource/img/regex.svg +1 -0
  110. preditor/resource/img/restart.svg +1 -0
  111. preditor/resource/img/skip-forward-outline.png +0 -0
  112. preditor/resource/img/skip-next-outline.png +0 -0
  113. preditor/resource/img/skip-next.png +0 -0
  114. preditor/resource/img/skip-previous.png +0 -0
  115. preditor/resource/img/subdirectory-arrow-right.png +0 -0
  116. preditor/resource/img/text-search-variant.png +0 -0
  117. preditor/resource/img/warning-big.png +0 -0
  118. preditor/resource/lang/python.json +30 -0
  119. preditor/resource/pref_updates/pref_updates.json +17 -0
  120. preditor/resource/settings.ini +25 -0
  121. preditor/resource/stylesheet/Bright.css +76 -0
  122. preditor/resource/stylesheet/Dark.css +210 -0
  123. preditor/scintilla/__init__.py +40 -0
  124. preditor/scintilla/delayables/__init__.py +11 -0
  125. preditor/scintilla/delayables/smart_highlight.py +97 -0
  126. preditor/scintilla/delayables/spell_check.py +174 -0
  127. preditor/scintilla/documenteditor.py +1924 -0
  128. preditor/scintilla/finddialog.py +68 -0
  129. preditor/scintilla/lang/__init__.py +80 -0
  130. preditor/scintilla/lang/config/bash.ini +15 -0
  131. preditor/scintilla/lang/config/batch.ini +14 -0
  132. preditor/scintilla/lang/config/cpp.ini +19 -0
  133. preditor/scintilla/lang/config/css.ini +19 -0
  134. preditor/scintilla/lang/config/eyeonscript.ini +17 -0
  135. preditor/scintilla/lang/config/html.ini +21 -0
  136. preditor/scintilla/lang/config/javascript.ini +24 -0
  137. preditor/scintilla/lang/config/lua.ini +16 -0
  138. preditor/scintilla/lang/config/maxscript.ini +20 -0
  139. preditor/scintilla/lang/config/mel.ini +18 -0
  140. preditor/scintilla/lang/config/mu.ini +22 -0
  141. preditor/scintilla/lang/config/nsi.ini +19 -0
  142. preditor/scintilla/lang/config/perl.ini +19 -0
  143. preditor/scintilla/lang/config/puppet.ini +19 -0
  144. preditor/scintilla/lang/config/python.ini +28 -0
  145. preditor/scintilla/lang/config/ruby.ini +19 -0
  146. preditor/scintilla/lang/config/sql.ini +7 -0
  147. preditor/scintilla/lang/config/xml.ini +21 -0
  148. preditor/scintilla/lang/config/yaml.ini +18 -0
  149. preditor/scintilla/lang/language.py +240 -0
  150. preditor/scintilla/lexers/__init__.py +0 -0
  151. preditor/scintilla/lexers/cpplexer.py +22 -0
  152. preditor/scintilla/lexers/javascriptlexer.py +27 -0
  153. preditor/scintilla/lexers/maxscriptlexer.py +235 -0
  154. preditor/scintilla/lexers/mellexer.py +369 -0
  155. preditor/scintilla/lexers/mulexer.py +33 -0
  156. preditor/scintilla/lexers/pythonlexer.py +42 -0
  157. preditor/scintilla/ui/finddialog.ui +160 -0
  158. preditor/settings.py +71 -0
  159. preditor/stream/__init__.py +72 -0
  160. preditor/stream/console_handler.py +169 -0
  161. preditor/stream/director.py +144 -0
  162. preditor/stream/manager.py +97 -0
  163. preditor/streamhandler_helper.py +46 -0
  164. preditor/utils/__init__.py +191 -0
  165. preditor/utils/call_stack.py +86 -0
  166. preditor/utils/cute.py +106 -0
  167. preditor/utils/stylesheets.py +54 -0
  168. preditor/utils/text_search.py +338 -0
  169. preditor/version.py +34 -0
  170. preditor/weakref.py +363 -0
  171. preditor-2.1.0.dist-info/METADATA +308 -0
  172. preditor-2.1.0.dist-info/RECORD +179 -0
  173. preditor-2.1.0.dist-info/WHEEL +5 -0
  174. preditor-2.1.0.dist-info/entry_points.txt +19 -0
  175. preditor-2.1.0.dist-info/licenses/LICENSE +165 -0
  176. preditor-2.1.0.dist-info/top_level.txt +3 -0
  177. tests/encodings/test_ecoding.py +33 -0
  178. tests/find_files/test_find_files.py +74 -0
  179. tests/ide/test_delayable_engine.py +171 -0
@@ -0,0 +1,44 @@
1
+ <svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
2
+ <title>Predator_icon-icons</title>
3
+ <style>
4
+ .s0 { fill: #7986cb }
5
+ .s1 { fill: #9fa8da }
6
+ .s2 { fill: #3949ab }
7
+ .s3 { fill: #607d8b }
8
+ .s4 { fill: #1a237e }
9
+ .s5 { fill: #c5cae9 }
10
+ .s6 { fill: #ffaec3 }
11
+ .s7 { fill: #ff9db2 }
12
+ .s8 { fill: #f18da2 }
13
+ .s9 { fill: #eef1f6 }
14
+ .s10 { fill: #594667 }
15
+ .s11 { fill: #ffdf97 }
16
+ </style>
17
+ <g id="Preditor">
18
+ <path id="Layer" class="s0" d="m125.9 284.8l25.5-110.4h209.2l25.5 110.4c4.7 23.2-8.1 46.5-30.2 53.5l-99.9 33.7-99.9-33.7c-22.1-7-36.1-30.3-30.2-53.5z"/>
19
+ <path id="Layer" class="s1" d="m314.1 372c0 12.7-10.5 23.2-23.2 23.2h-69.8c-12.7 0-23.2-10.5-23.2-23.2v-81.4l34.9-34.8h46.4l34.9 34.8z"/>
20
+ <g id="Layer">
21
+ <path id="Layer" class="s2" d="m511.6 337.1c0 7-4.6 11.6-11.6 11.6-7 0-11.6-4.6-11.6-11.6 0-224.3-94.1-275.4-133.6-287 39.5 27.9 110.4 101.1 110.4 268.4v53.5c0 6.9-4.7 11.6-11.7 11.6-6.9 0-11.6-4.7-11.6-11.6v-53.5c0-209.2-116.2-259.1-119.7-261.4-6.9-2.4-9.3-9.3-6.9-15.2 1.1-4.6 5.8-6.9 10.4-6.9 0-7 5.8-11.6 11.6-11.6 7 0 174.3 8.1 174.3 313.7z"/>
22
+ <path id="Layer" class="s2" d="m419.8 313.9v92.9c0 7-4.6 11.6-11.6 11.6-7 0-11.6-4.6-11.6-11.6v-92.9c0-183.6-86-233.6-87.1-233.6-5.9-3.5-8.2-10.5-4.7-16.3 2.3-5.8 9.3-8.1 15.1-4.6 3.5 2.3 98.8 55.8 99.9 254.5z"/>
23
+ <path id="Layer" class="s2" d="m70.1 318.5v53.5c0 6.9-4.7 11.6-11.6 11.6-7 0-11.7-4.7-11.7-11.6v-53.5c0-168.5 72.1-241.7 111.6-268.4-40.7 10.4-134.8 59.2-134.8 287 0 7-4.6 11.6-11.6 11.6-7 0-11.6-4.6-11.6-11.6 0-305.6 167.3-313.7 174.3-313.7 5.8 0 11.6 4.6 11.6 11.6 4.6 0 9.3 2.3 11.6 6.9 2.3 5.9-1.2 12.8-7 15.2-4.6 2.3-120.8 52.2-120.8 261.4z"/>
24
+ <path id="Layer" class="s2" d="m208.4 64c3.4 5.8 1.1 12.8-4.7 16.3-1.2 0-87.1 50-87.1 233.6v92.9c0 7-4.7 11.6-11.7 11.6-6.9 0-11.6-4.6-11.6-11.6v-92.9c0-198.7 95.3-252.2 98.8-254.5 5.8-2.3 12.8-1.2 16.3 4.6z"/>
25
+ </g>
26
+ <path id="Layer" class="s3" d="m128.2 186z"/>
27
+ <path id="Layer" class="s3" d="m128.2 174.4v11.6z"/>
28
+ <path id="Layer" class="s3" d="m81.7 93.1z"/>
29
+ <path id="Layer" class="s4" d="m350.1 196.5c0 0 7 26.7-7 44.1-30.2 39.6-63.9 15.2-68.5 10.5-4.7-4.6-7-19.7-7-19.7 51.1-9.3 82.5-34.9 82.5-34.9z"/>
30
+ <path id="Layer" class="s4" d="m243.2 230.2c0 0-2.3 15.1-7 19.7-4.6 5.9-38.3 29.1-68.5-10.4-14-17.4-7-44.2-7-44.2 0 0 32.6 26.8 82.5 34.9z"/>
31
+ <path id="Layer" class="s1" d="m256 232.5c-77.1 0-139.4-51.9-139.4-116.2 0-64.2 62.3-116.2 139.4-116.2 77.1 0 139.4 52 139.4 116.2 0 64.3-62.3 116.2-139.4 116.2z"/>
32
+ <path id="Layer" class="s0" d="m256 193c-64.3 0-116.2-40.5-116.2-90.6 0-50.2 51.9-90.7 116.2-90.7 64.3 0 116.2 40.5 116.2 90.7 0 50.1-51.9 90.6-116.2 90.6z"/>
33
+ <path id="Layer" class="s5" d="m258.3 155.8c-51.4 0-92.9-32.2-92.9-72 0-39.9 41.5-72.1 92.9-72.1 51.4 0 93 32.2 93 72.1 0 39.8-41.6 72-93 72z"/>
34
+ </g>
35
+ <g id="Pencil">
36
+ <path id="Layer" class="s6" d="m158.6 470l196.6-34.8c-3 3.2-4.6 7.1-3.9 11.5 0.2 2.2 1.3 4.2 2.7 5.8l-192.5 34.1z"/>
37
+ <path id="Layer" class="s7" d="m154.9 449.1l196.6-34.8c-3 3.2-4.6 7.1-3.9 11.5 0.8 4.3 3.7 7.5 7.6 9.4l-196.6 34.8z"/>
38
+ <path id="Layer" class="s8" d="m152.2 432.3l192.5-34.1c-1.1 2.3-1.2 4.3-0.8 6.7 0.8 4.3 3.7 7.5 7.6 9.4l-196.6 34.8z"/>
39
+ <path id="Layer" class="s9" d="m138.7 434.9l13.3-2.3 9.6 54.1-13.3 2.3z"/>
40
+ <path id="Layer" class="s10" d="m148.2 488.9l-27 4.8c-6.4 1.2-12.8-2.6-13.7-8.1l-6-33.5c-0.9-5.5 3.7-11.3 10.1-12.4l27.1-4.8z"/>
41
+ <path id="Layer" class="s11" d="m393 417.7c0.4 2.4 1.3 4.7 3 6.4l-42.2 28.6c-1.4-1.5-2.2-3.4-2.7-5.8-0.7-4.3 0.9-8.3 3.9-11.5-3.9-1.9-6.8-5-7.6-9.4-0.7-4.3 0.9-8.3 3.9-11.5-3.9-1.9-6.8-5.1-7.6-9.4-0.4-2.4-0.1-4.6 0.8-6.6l49.2 12.2c-0.8 2.4-1.1 4.7-0.7 7z"/>
42
+ <path id="Layer" class="s10" d="m410 414.7l-14 9.4c-1.5-1.9-2.6-4-3-6.4-0.4-2.3-0.4-4.8 0.7-7z"/>
43
+ </g>
44
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16,16.92C15.67,16.97 15.34,17 15,17C14.66,17 14.33,16.97 14,16.92V13.41L11.5,15.89C11,15.5 10.5,15 10.11,14.5L12.59,12H9.08C9.03,11.67 9,11.34 9,11C9,10.66 9.03,10.33 9.08,10H12.59L10.11,7.5C10.3,7.25 10.5,7 10.76,6.76V6.76C11,6.5 11.25,6.3 11.5,6.11L14,8.59V5.08C14.33,5.03 14.66,5 15,5C15.34,5 15.67,5.03 16,5.08V8.59L18.5,6.11C19,6.5 19.5,7 19.89,7.5L17.41,10H20.92C20.97,10.33 21,10.66 21,11C21,11.34 20.97,11.67 20.92,12H17.41L19.89,14.5C19.7,14.75 19.5,15 19.24,15.24V15.24C19,15.5 18.75,15.7 18.5,15.89L16,13.41V16.92H16V16.92M5,19A2,2 0 0,1 7,17A2,2 0 0,1 9,19A2,2 0 0,1 7,21A2,2 0 0,1 5,19H5Z" /></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z" /></svg>
Binary file
Binary file
Binary file
@@ -0,0 +1,30 @@
1
+ {
2
+ "language": "Python",
3
+ "ext": ".py;.pys;.pyw",
4
+ "comments": [
5
+ "#(?!Result: )[^#\\n]*"
6
+ ],
7
+ "strings": [
8
+ "'",
9
+ "\""
10
+ ],
11
+ "keywords": [
12
+ "class",
13
+ "def",
14
+ "elif",
15
+ "else",
16
+ "except",
17
+ "False",
18
+ "for",
19
+ "from",
20
+ "if",
21
+ "import",
22
+ "in",
23
+ "pass",
24
+ "print",
25
+ "self",
26
+ "True",
27
+ "try",
28
+ "while"
29
+ ]
30
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "SplitterSize": {"new_name": "splitterSize"},
3
+ "SplitterVertical": {"new_name": "splitterVertical"},
4
+ "uiAutoSaveSettingssACT": {"new_name": "autoSaveSettings"},
5
+ "uiAutoPromptACT": {"new_name": "autoPrompt"},
6
+ "uiErrorHyperlinksACT": {"new_name": "errorHyperlinks"},
7
+ "uiHighlightExactCompletionACT": {"new_name": "highlightExactCompletion"},
8
+ "uiSelectTextACT": {"new_name": "selectText"},
9
+ "uiSeparateTracebackACT": {"new_name": "separateTraceback"},
10
+ "workbox_prefs": {
11
+ "tempfile": {
12
+ "new_name": "workbox_id",
13
+ "replace": [[".py", ""]]
14
+ }
15
+ },
16
+ "prefs_version": 2.0
17
+ }
@@ -0,0 +1,25 @@
1
+ [Default]
2
+ bdev_error_email = The Pipe<thePipe+{hash}@blur.com>
3
+
4
+ [Windows]
5
+ bdev_cmd_shell_execfile = "%(filepath)s"
6
+ bdev_cmd_shell_debug = "%(filepath)s"
7
+ bdev_cmd_shell_exec = "%(command)s"
8
+ bdev_cmd_browse = open "%(filepath)s"
9
+ bdev_path_temp = c:/temp
10
+ bdev_path_prefs_shared = \\SNAKE\user\config\%(username)s\userprefs
11
+ bdev_path_blur = c:/blur
12
+ bdev_path_prefs = %appdata%\blur\userprefs
13
+
14
+ [Windows Offline]
15
+ bdev_path_prefs_shared = %APPDATA%/blur/userprefs
16
+
17
+ [Linux]
18
+ bdev_cmd_shell_exec = gnome-terminal -x bash -c "%(command)s && echo Press enter to close && read"
19
+ bdev_cmd_shell_debug = gnome-terminal -x bash -c "%(filepath)s && echo Press enter to close && read"
20
+ bdev_cmd_shell_execfile = bash --rcfile %(filepath)s
21
+ bdev_path_temp = /tmp/
22
+ bdev_path_blur = $HOME/.blur
23
+ bdev_path_prefs_shared = $BDEV_PATH_PREFS
24
+ bdev_path_prefs = $BDEV_PATH_BLUR/userprefs
25
+ bdev_cmd_browse = nemo %(filepath)s
@@ -0,0 +1,76 @@
1
+ DocumentEditor {
2
+ qproperty-pyMarginsForegroundColor: "black";
3
+ qproperty-pyMarginsBackgroundColor: rgb(224, 224, 224);
4
+ qproperty-pySelectionBackgroundColor: rgb(192, 192, 192);
5
+ qproperty-pySelectionForegroundColor: "black";
6
+ qproperty-pyCaretBackgroundColor: "white";
7
+ qproperty-pyCaretForegroundColor: "black";
8
+ qproperty-pyMatchedBraceBackgroundColor: rgb(100, 225, 100);
9
+ qproperty-pyMatchedBraceForegroundColor: "black";
10
+ qproperty-pyUnmatchedBraceBackgroundColor: "white";
11
+ qproperty-pyUnmatchedBraceForegroundColor: "blue";
12
+ qproperty-pyEdgeColor: rgb(100, 45, 45);
13
+
14
+ qproperty-pyIndentationGuidesBackgroundColor: "white";
15
+ qproperty-pyIndentationGuidesForegroundColor : "black";
16
+ qproperty-pyMarkerBackgroundColor: "white";
17
+ qproperty-pyMarkerForegroundColor: "black";
18
+ qproperty-foldMarginsBackgroundColor: rgb(224, 224, 224);
19
+ qproperty-foldMarginsForegroundColor: "white";
20
+ qproperty-braceBadForeground: "black";
21
+ qproperty-braceBadBackground: rgb(250, 100, 100);
22
+
23
+ qproperty-colorDefault: "black";
24
+ qproperty-colorComment: rgb(0, 206, 52);
25
+ qproperty-colorNumber: rgb(0, 127, 127);
26
+ qproperty-colorString: rgb(255, 128, 0);
27
+ qproperty-colorKeyword: rgb(250, 24, 110);
28
+ qproperty-colorTripleQuotedString: rgb(255, 128, 0);
29
+ qproperty-colorMethod: rgb(0, 0, 255);
30
+ qproperty-colorFunction: rgb(0, 127, 127);
31
+ qproperty-colorOperator: "black";
32
+ qproperty-colorIdentifier: "black";
33
+ qproperty-colorCommentBlock: rgb(127, 127, 127);
34
+ qproperty-colorUnclosedString: "black";
35
+ qproperty-colorSmartHighlight: rgb(64, 112, 144);
36
+ qproperty-colorDecorator: rgb(128, 80, 0);
37
+ qproperty-paperDefault: "white";
38
+ qproperty-paperComment: "white";
39
+ qproperty-paperNumber: "white";
40
+ qproperty-paperString: "white";
41
+ qproperty-paperKeyword: "white";
42
+ qproperty-paperTripleQuotedString: "white";
43
+ qproperty-paperMethod: "white";
44
+ qproperty-paperFunction: "white";
45
+ qproperty-paperOperator: "white";
46
+ qproperty-paperIdentifier: "white";
47
+ qproperty-paperCommentBlock: "white";
48
+ qproperty-paperUnclosedString: rgb(224, 192, 224);
49
+ qproperty-paperSmartHighlight: rgba(155, 255, 155, 75);
50
+ qproperty-paperDecorator: "white";
51
+ }
52
+
53
+ ConsolePrEdit, ErrorDialog {
54
+ qproperty-errorMessageColor: rgb(255, 0, 0);
55
+ }
56
+
57
+ ConsolePrEdit {
58
+ color: rgb(0,0,0);
59
+ background-color: rgb(255,255,255);
60
+ qproperty-commentColor: rgb(0, 206, 52);
61
+ qproperty-keywordColor: rgb(250, 24, 110);
62
+ qproperty-resultColor: rgb(128, 128, 128);
63
+ qproperty-stdoutColor: rgb(17, 154, 255);
64
+ qproperty-stringColor: rgb(255, 128, 0);
65
+ }
66
+
67
+ DragTabBar {
68
+ qproperty-changedColor: "darkorchid";
69
+ qproperty-changedLinkedColor: "darkviolet";
70
+ qproperty-dirtyColor: "orange";
71
+ qproperty-dirtyLinkedColor: "darkorange";
72
+ qproperty-linkedColor: "royalblue";
73
+ qproperty-missingLinkedColor: "deeppink";
74
+ qproperty-orphanedColor: "crimson";
75
+ qproperty-orphanedLinkedColor: "firebrick";
76
+ }
@@ -0,0 +1,210 @@
1
+ QWidget {
2
+ background-color: rgb(60, 60, 63);
3
+ color: rgb(202, 202, 202);
4
+ }
5
+
6
+ QListView, QTableView, QTreeView, QLineEdit, QTextEdit, QPlainTextEdit, QAbstractSpinBox, QComboBox:editable {
7
+ background-color: rgb(70, 70, 73);
8
+ }
9
+
10
+ QFrame {
11
+ alternate-background-color: rgb(60, 60, 63);
12
+ }
13
+
14
+ QWidget:disabled {
15
+ color: rgb(88, 91, 94);
16
+ }
17
+
18
+ QPushButton:checked, QPushButton:pressed, QToolButton:checked, QToolButton:pressed{
19
+ background-color: rgb(47, 47, 49);
20
+ }
21
+
22
+ QFrame::item:disabled, QFrame::section:disabled {
23
+ color: rgb(52, 52, 54);
24
+ }
25
+
26
+ QLabel, QToolBox {
27
+ background: none;
28
+ }
29
+
30
+ QScrollBar {
31
+ background-color: rgb(60, 60, 63);
32
+ border-radius: 2px;
33
+ }
34
+
35
+ QScrollBar:horizontal {
36
+ padding: 0 16px 0 16px;
37
+ }
38
+
39
+ QScrollBar:vertical {
40
+ padding: 16px 0 16px 0;
41
+ }
42
+
43
+ QScrollBar::handle, QScrollBar::add-line, QScrollBar::sub-line {
44
+ background-color: rgb(78, 81, 84);
45
+ border-radius: 2px;
46
+ border: 1px solid rgb(33, 33, 36);
47
+ }
48
+
49
+ QScrollBar::handle:horizontal, QScrollBar::add-line, QScrollBar::sub-line {
50
+ background: qlineargradient(y1:0, y2:1, stop:0 rgb(78, 81, 84), stop:1 rgb(60, 60, 63));
51
+ }
52
+
53
+ QScrollBar::handle:vertical {
54
+ background: qlineargradient(x1:0, x2:1, stop:0 rgb(78, 81, 84), stop:1 rgb(70, 70, 73));
55
+ }
56
+
57
+ QScrollBar::handle:active, QScrollBar::add-line:active, QScrollBar::sub-line:active {
58
+ background-color: rgb(88, 91, 94);
59
+ }
60
+
61
+ QScrollBar::handle:horizontal {
62
+ min-width: 16px;
63
+ }
64
+
65
+ QScrollBar::handle:vertical {
66
+ min-height: 16px;
67
+ }
68
+
69
+ QScrollBar::add-line, QScrollBar::sub-line{
70
+ width: 8px;
71
+ height: 8px;
72
+ padding: 3px;
73
+ }
74
+
75
+ QScrollBar::add-line:horizontal {
76
+ subcontrol-position: right;
77
+ }
78
+
79
+ QScrollBar::sub-line:horizontal {
80
+ subcontrol-position: left;
81
+ }
82
+ QScrollBar::add-line:vertical {
83
+ subcontrol-position: bottom;
84
+ }
85
+
86
+ QScrollBar::sub-line:vertical {
87
+ subcontrol-position: top;
88
+ }
89
+
90
+ QScrollBar::up-arrow, QScrollBar::down-arrow, QScrollBar::left-arrow, QScrollBar::right-arrow {
91
+ width: 0;
92
+ height: 0;
93
+ border: 4px solid rgba(78, 81, 84, 0);
94
+ }
95
+
96
+ QScrollBar::up-arrow {
97
+ border-bottom-color: rgb(202, 202, 202);
98
+ border-top-width: 0;
99
+ }
100
+
101
+ QScrollBar::down-arrow {
102
+ border-top-color: rgb(202, 202, 202);
103
+ border-bottom-width: 0;
104
+ }
105
+
106
+ QScrollBar::left-arrow {
107
+ border-right-color: rgb(202, 202, 202);
108
+ border-left-width: 0;
109
+ }
110
+
111
+ QScrollBar::right-arrow {
112
+ border-left-color: rgb(202, 202, 202);
113
+ border-right-width: 0;
114
+ }
115
+
116
+ QMenu {
117
+ border-style: solid;
118
+ border-color: rgb(25,25,25);
119
+ border-width: 1px;
120
+ }
121
+
122
+ QMenu:unchecked {
123
+ background-color: none;
124
+ }
125
+
126
+ QMenu:checked {
127
+ background-color: none;
128
+ }
129
+
130
+ QMenu:selected {
131
+ background-color: none;
132
+ }
133
+
134
+ DocumentEditor {
135
+ qproperty-pyMarginsForegroundColor: rgb(202, 202, 202);
136
+ qproperty-pyMarginsBackgroundColor: rgb(70, 70, 73);
137
+ qproperty-pySelectionBackgroundColor: rgb(90, 90, 93);
138
+ qproperty-pySelectionForegroundColor: rgb(240, 240, 240);
139
+ qproperty-pyCaretBackgroundColor: rgb(70, 70, 73);
140
+ qproperty-pyCaretForegroundColor: rgb(255, 255, 255);
141
+ qproperty-pyMatchedBraceBackgroundColor: rgb(60, 60, 63);
142
+ qproperty-pyMatchedBraceForegroundColor: rgb(240, 240, 240);
143
+ qproperty-pyUnmatchedBraceBackgroundColor: rgb(70, 70, 73);
144
+ qproperty-pyUnmatchedBraceForegroundColor: rgb(200, 180, 180);
145
+ qproperty-pyEdgeColor: rgb(100, 45, 45);
146
+
147
+ qproperty-pyIndentationGuidesBackgroundColor: rgb(70, 70, 73);
148
+ qproperty-pyIndentationGuidesForegroundColor: rgb(102, 153, 204);
149
+ qproperty-pyMarkerBackgroundColor: rgb(45, 255, 45);
150
+ qproperty-pyMarkerForegroundColor: rgb(200, 0, 200);
151
+ qproperty-foldMarginsBackgroundColor: rgb(60, 60, 63);
152
+ qproperty-foldMarginsForegroundColor: rgb(60, 60, 63);
153
+ qproperty-braceBadForeground: rgb(255, 255, 255);
154
+ qproperty-braceBadBackground: rgb(100, 60, 60);
155
+
156
+ qproperty-colorDefault: rgb(22, 160, 250);
157
+ qproperty-colorComment: rgb(0, 160, 0);
158
+ qproperty-colorNumber: rgb(0, 200, 200);
159
+ qproperty-colorString: rgb(240, 135, 0);
160
+ qproperty-colorKeyword: rgb(250, 24, 110);
161
+ qproperty-colorTripleQuotedString: rgb(240, 135, 0);
162
+ qproperty-colorMethod: rgb(255, 204, 102);
163
+ qproperty-colorFunction: rgb(22, 160, 250);
164
+ qproperty-colorOperator: rgb(204, 204, 204);
165
+ qproperty-colorIdentifier: rgb(22, 160, 250);
166
+ qproperty-colorCommentBlock: rgb(117, 113, 94);
167
+ qproperty-colorUnclosedString: rgb(255, 255, 255);
168
+ qproperty-colorSmartHighlight: rgb(255, 255, 255);
169
+ qproperty-colorDecorator: rgb(240, 100, 102);
170
+ qproperty-paperDefault: rgb(70, 70, 73);
171
+ qproperty-paperComment: rgb(70, 70, 73);
172
+ qproperty-paperNumber: rgb(70, 70, 73);
173
+ qproperty-paperString: rgb(70, 70, 73);
174
+ qproperty-paperKeyword: rgb(70, 70, 73);
175
+ qproperty-paperTripleQuotedString: rgb(70, 70, 73);
176
+ qproperty-paperMethod: rgb(70, 70, 73);
177
+ qproperty-paperFunction: rgb(70, 70, 73);
178
+ qproperty-paperOperator: rgb(70, 70, 73);
179
+ qproperty-paperIdentifier: rgb(70, 70, 73);
180
+ qproperty-paperCommentBlock: rgb(70, 70, 73);
181
+ qproperty-paperUnclosedString: rgb(100, 60, 60);
182
+ qproperty-paperSmartHighlight: rgba(75, 180, 0, 25);
183
+ qproperty-paperDecorator: rgb(70, 70, 73);
184
+ }
185
+
186
+
187
+ ConsolePrEdit, ErrorDialog {
188
+ qproperty-errorMessageColor: rgb(255, 0, 0);
189
+ }
190
+
191
+ ConsolePrEdit {
192
+ color: rgb(255, 255, 255);
193
+ background-color: rgb(70, 70, 73);
194
+ qproperty-commentColor: rgb(0, 160, 0);
195
+ qproperty-keywordColor: rgb(250, 24, 110);
196
+ qproperty-resultColor: rgb(128, 128, 128);
197
+ qproperty-stdoutColor: rgb(22, 160, 250);
198
+ qproperty-stringColor: rgb(240, 135, 0);
199
+ }
200
+
201
+ DragTabBar {
202
+ qproperty-changedColor: "orchid";
203
+ qproperty-changedLinkedColor: "violet";
204
+ qproperty-dirtyColor: "orange";
205
+ qproperty-dirtyLinkedColor: "sandybrown";
206
+ qproperty-linkedColor: rgb(0, 160, 0);
207
+ qproperty-missingLinkedColor: rgb(255, 50, 140);
208
+ qproperty-orphanedColor: "pink";
209
+ qproperty-orphanedLinkedColor: "plum";
210
+ }
@@ -0,0 +1,40 @@
1
+ from __future__ import absolute_import
2
+
3
+ __all__ = ["delayables", "FindState", "Qsci", "QsciScintilla"]
4
+
5
+ import Qt
6
+
7
+ if Qt.IsPyQt6:
8
+ from PyQt6 import Qsci
9
+ from PyQt6.Qsci import QsciScintilla
10
+ elif Qt.IsPyQt5:
11
+ from PyQt5 import Qsci
12
+ from PyQt5.Qsci import QsciScintilla
13
+ elif Qt.IsPyQt4:
14
+ from PyQt4 import Qsci
15
+ from PyQt4.Qsci import QsciScintilla
16
+ else:
17
+ raise ImportError(
18
+ "QScintilla library is not supported by {}".format(Qt.__binding__)
19
+ )
20
+
21
+
22
+ class FindState(object):
23
+ """
24
+ Arguments:
25
+ end_pos (int): The position in the document to stop searching. If None, then
26
+ search to the end of the document.
27
+ """
28
+
29
+ def __init__(self):
30
+ self.expr = ''
31
+ self.wrap = True
32
+ self.wrapped = False
33
+ self.forward = True
34
+ self.flags = 0
35
+ self.start_pos = 0
36
+ self.start_pos_original = None
37
+ self.end_pos = None
38
+
39
+
40
+ from . import delayables # noqa: E402
@@ -0,0 +1,11 @@
1
+ from __future__ import absolute_import, print_function
2
+
3
+ from . import smart_highlight, spell_check
4
+
5
+ # Import the base classes used to make most Delayables
6
+ # TODO: Make these imports a plugin based system of some sort.
7
+
8
+ __all__ = [
9
+ "smart_highlight",
10
+ "spell_check",
11
+ ]
@@ -0,0 +1,97 @@
1
+ from __future__ import absolute_import, print_function
2
+
3
+ import Qt
4
+ from Qt.QtCore import QSignalMapper
5
+ from Qt.QtWidgets import QWidget
6
+
7
+ from ...delayable_engine.delayables import SearchDelayable
8
+ from .. import FindState, QsciScintilla
9
+
10
+
11
+ class SmartHighlight(SearchDelayable):
12
+ key = 'smart_highlight'
13
+ indicator_number = 30
14
+ indicator_style = QsciScintilla.IndicatorStyle.StraightBoxIndicator
15
+ border_alpha = 255
16
+
17
+ def __init__(self, engine):
18
+ super(SmartHighlight, self).__init__(engine)
19
+ self.signal_mapper = QSignalMapper(self)
20
+ # Respect style sheet changes
21
+ # TODO: Correctly connect this signal
22
+ # LoggerWindow.styleSheetChanged.connect(self.update_indicator_color)
23
+
24
+ def add_document(self, document):
25
+ document.indicatorDefine(self.indicator_style, self.indicator_number)
26
+ document.SendScintilla(
27
+ QsciScintilla.SCI_SETINDICATORCURRENT, self.indicator_number
28
+ )
29
+ document.setIndicatorForegroundColor(
30
+ document.paperSmartHighlight, self.indicator_number
31
+ )
32
+ document.SendScintilla(
33
+ QsciScintilla.SCI_INDICSETOUTLINEALPHA,
34
+ self.indicator_number,
35
+ self.border_alpha,
36
+ )
37
+
38
+ self.signal_mapper.setMapping(document, document)
39
+ if Qt.IsPyQt4:
40
+ self.signal_mapper.mapped[QWidget].connect(self.update_highlighter)
41
+ else:
42
+ self.signal_mapper.mappedObject.connect(self.update_highlighter)
43
+ document.selectionChanged.connect(self.signal_mapper.map)
44
+
45
+ def clear_markings(self, document):
46
+ """Remove markings made by this Delayable for the given document.
47
+
48
+ Args:
49
+ document (blurdev.scintilla.documenteditor.DocumentEditor): The document
50
+ to clear spell check markings from.
51
+ """
52
+ document.SendScintilla(
53
+ QsciScintilla.SCI_SETINDICATORCURRENT, self.indicator_number
54
+ )
55
+ document.SendScintilla(
56
+ QsciScintilla.SCI_INDICATORCLEARRANGE, 0, len(document.text())
57
+ )
58
+
59
+ def loop(self, document, find_state, clear):
60
+ # Clear the document if needed
61
+ if clear:
62
+ self.clear_markings(document)
63
+ ret = super(SmartHighlight, self).loop(document, find_state)
64
+ if ret:
65
+ # clear should always be false when continuing
66
+ return ret + (False,)
67
+
68
+ def remove_document(self, document):
69
+ self.clear_markings(document)
70
+ document.selectionChanged.disconnect(self.signal_mapper.map)
71
+
72
+ def text_found(self, document, start, end, find_state):
73
+ if not document.is_word(start, end):
74
+ # Don't highlight the word if its not a word on its own
75
+ return
76
+ document.SendScintilla(
77
+ QsciScintilla.SCI_SETINDICATORCURRENT, self.indicator_number
78
+ )
79
+ document.SendScintilla(QsciScintilla.SCI_INDICATORFILLRANGE, start, end - start)
80
+
81
+ def update_highlighter(self, document):
82
+ self.clear_markings(document)
83
+ if document.selection_is_word():
84
+ find_state = FindState()
85
+ find_state.expr = document.selectedText()
86
+ self.search_from_position(document, find_state, None, False)
87
+
88
+ def update_indicator_color(self):
89
+ for document in self.engine.documents:
90
+ document.setIndicatorForegroundColor(
91
+ document.paperSmartHighlight, self.indicator_number
92
+ )
93
+ document.SendScintilla(
94
+ QsciScintilla.SCI_INDICSETOUTLINEALPHA,
95
+ self.indicator_number,
96
+ self.border_alpha,
97
+ )