PrEditor 0.0.0.dev1__py2.py3-none-any.whl → 0.1.0__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of PrEditor might be problematic. Click here for more details.

Files changed (363) hide show
  1. PrEditor-0.1.0.dist-info/LICENSE +165 -0
  2. PrEditor-0.1.0.dist-info/METADATA +212 -0
  3. PrEditor-0.1.0.dist-info/RECORD +149 -0
  4. {PrEditor-0.0.0.dev1.dist-info → PrEditor-0.1.0.dist-info}/WHEEL +1 -1
  5. PrEditor-0.1.0.dist-info/entry_points.txt +18 -0
  6. PrEditor-0.1.0.dist-info/top_level.txt +1 -0
  7. preditor/__init__.py +301 -0
  8. {blurdev → preditor}/__main__.py +13 -13
  9. preditor/about_module.py +166 -0
  10. preditor/cli.py +192 -0
  11. {blurdev → preditor}/contexts.py +119 -119
  12. preditor/cores/core.py +65 -0
  13. preditor/dccs/maya/PrEditor_maya.mod +2 -0
  14. preditor/dccs/maya/plug-ins/PrEditor_maya.py +108 -0
  15. preditor/debug.py +294 -0
  16. blurdev/scintilla/delayable_engine.py → preditor/delayable_engine/__init__.py +310 -299
  17. blurdev/scintilla/delayables/base.py → preditor/delayable_engine/delayables.py +85 -85
  18. {blurdev → preditor}/enum.py +728 -1003
  19. {blurdev → preditor}/gui/__init__.py +84 -125
  20. preditor/gui/app.py +159 -0
  21. {blurdev → preditor}/gui/codehighlighter.py +209 -219
  22. {blurdev → preditor}/gui/completer.py +226 -236
  23. {blurdev → preditor}/gui/console.py +801 -858
  24. {blurdev → preditor}/gui/dialog.py +200 -216
  25. preditor/gui/drag_tab_bar.py +190 -0
  26. preditor/gui/editor_chooser.py +57 -0
  27. {blurdev → preditor}/gui/errordialog.py +100 -97
  28. preditor/gui/fuzzy_search/fuzzy_search.py +93 -0
  29. preditor/gui/group_tab_widget/__init__.py +319 -0
  30. preditor/gui/group_tab_widget/grouped_tab_menu.py +35 -0
  31. preditor/gui/group_tab_widget/grouped_tab_models.py +108 -0
  32. preditor/gui/group_tab_widget/grouped_tab_widget.py +75 -0
  33. preditor/gui/group_tab_widget/one_tab_widget.py +54 -0
  34. preditor/gui/level_buttons.py +349 -0
  35. {blurdev → preditor}/gui/logger_window_handler.py +46 -45
  36. {blurdev → preditor}/gui/loggerwindow.py +1205 -1417
  37. {blurdev → preditor}/gui/newtabwidget.py +69 -68
  38. {blurdev → preditor}/gui/redmine_login_dialog.py +63 -61
  39. {blurdev → preditor}/gui/set_text_editor_path_dialog.py +59 -57
  40. preditor/gui/ui/editor_chooser.ui +93 -0
  41. {blurdev → preditor}/gui/ui/errordialog.ui +81 -81
  42. {blurdev → preditor}/gui/ui/loggerwindow.ui +1030 -864
  43. {blurdev → preditor}/gui/ui/redmine_login_dialog.ui +124 -124
  44. {blurdev → preditor}/gui/ui/set_text_editor_path_dialog.ui +149 -149
  45. {blurdev → preditor}/gui/window.py +183 -199
  46. preditor/gui/workbox_mixin.py +357 -0
  47. preditor/gui/workbox_text_edit.py +117 -0
  48. preditor/gui/workboxwidget.py +276 -0
  49. preditor/logging_config.py +52 -0
  50. preditor/osystem.py +401 -0
  51. preditor/plugins.py +65 -0
  52. preditor/prefs.py +74 -0
  53. {blurdev → preditor}/resource/environment_variables.html +26 -38
  54. {blurdev → preditor}/resource/error_mail.html +85 -85
  55. {blurdev → preditor}/resource/error_mail_inline.html +41 -41
  56. preditor/resource/img/README.md +7 -0
  57. preditor/resource/img/arrow_forward.png +0 -0
  58. preditor/resource/img/check-bold.png +0 -0
  59. preditor/resource/img/chevron-down.png +0 -0
  60. preditor/resource/img/chevron-up.png +0 -0
  61. preditor/resource/img/close-thick.png +0 -0
  62. preditor/resource/img/comment-edit.png +0 -0
  63. preditor/resource/img/content-copy.png +0 -0
  64. preditor/resource/img/content-cut.png +0 -0
  65. preditor/resource/img/content-duplicate.png +0 -0
  66. preditor/resource/img/content-paste.png +0 -0
  67. preditor/resource/img/content-save.png +0 -0
  68. preditor/resource/img/debug_disabled.png +0 -0
  69. preditor/resource/img/eye-check.png +0 -0
  70. preditor/resource/img/file-plus.png +0 -0
  71. preditor/resource/img/file-remove.png +0 -0
  72. preditor/resource/img/format-align-left.png +0 -0
  73. preditor/resource/img/format-letter-case-lower.png +0 -0
  74. preditor/resource/img/format-letter-case-upper.png +0 -0
  75. preditor/resource/img/information.png +0 -0
  76. preditor/resource/img/logging_critical.png +0 -0
  77. preditor/resource/img/logging_custom.png +0 -0
  78. preditor/resource/img/logging_debug.png +0 -0
  79. preditor/resource/img/logging_error.png +0 -0
  80. preditor/resource/img/logging_info.png +0 -0
  81. preditor/resource/img/logging_not_set.png +0 -0
  82. preditor/resource/img/logging_warning.png +0 -0
  83. preditor/resource/img/marker.png +0 -0
  84. preditor/resource/img/play.png +0 -0
  85. preditor/resource/img/playlist-play.png +0 -0
  86. preditor/resource/img/plus-minus-variant.png +0 -0
  87. preditor/resource/img/preditor.ico +0 -0
  88. preditor/resource/img/preditor.png +0 -0
  89. preditor/resource/img/preditor.psd +0 -0
  90. preditor/resource/img/preditor.svg +44 -0
  91. preditor/resource/img/restart.svg +1 -0
  92. preditor/resource/img/skip-forward-outline.png +0 -0
  93. preditor/resource/img/skip-next-outline.png +0 -0
  94. preditor/resource/img/skip-next.png +0 -0
  95. preditor/resource/img/skip-previous.png +0 -0
  96. preditor/resource/img/subdirectory-arrow-right.png +0 -0
  97. preditor/resource/img/text-search-variant.png +0 -0
  98. {blurdev → preditor}/resource/lang/python.json +30 -30
  99. preditor/resource/settings.ini +25 -0
  100. {blurdev/resource/stylesheet/logger → preditor/resource/stylesheet}/Bright.css +56 -61
  101. {blurdev → preditor}/resource/stylesheet/Dark.css +190 -132
  102. {blurdev → preditor}/scintilla/__init__.py +22 -28
  103. preditor/scintilla/delayables/__init__.py +11 -0
  104. {blurdev → preditor}/scintilla/delayables/smart_highlight.py +94 -93
  105. {blurdev → preditor}/scintilla/delayables/spell_check.py +173 -172
  106. {blurdev → preditor}/scintilla/documenteditor.py +2039 -2115
  107. {blurdev → preditor}/scintilla/finddialog.py +68 -81
  108. {blurdev → preditor}/scintilla/lang/__init__.py +80 -93
  109. {blurdev → preditor}/scintilla/lang/config/bash.ini +15 -15
  110. {blurdev → preditor}/scintilla/lang/config/batch.ini +14 -14
  111. {blurdev → preditor}/scintilla/lang/config/cpp.ini +19 -19
  112. {blurdev → preditor}/scintilla/lang/config/css.ini +19 -19
  113. {blurdev → preditor}/scintilla/lang/config/eyeonscript.ini +17 -17
  114. {blurdev → preditor}/scintilla/lang/config/html.ini +21 -21
  115. {blurdev → preditor}/scintilla/lang/config/javascript.ini +24 -24
  116. {blurdev → preditor}/scintilla/lang/config/lua.ini +16 -16
  117. {blurdev → preditor}/scintilla/lang/config/maxscript.ini +20 -20
  118. {blurdev → preditor}/scintilla/lang/config/mel.ini +18 -18
  119. {blurdev → preditor}/scintilla/lang/config/mu.ini +22 -22
  120. {blurdev → preditor}/scintilla/lang/config/nsi.ini +5 -5
  121. {blurdev → preditor}/scintilla/lang/config/perl.ini +19 -19
  122. {blurdev → preditor}/scintilla/lang/config/puppet.ini +19 -19
  123. {blurdev → preditor}/scintilla/lang/config/python.ini +28 -28
  124. {blurdev → preditor}/scintilla/lang/config/ruby.ini +19 -19
  125. {blurdev → preditor}/scintilla/lang/config/sql.ini +7 -7
  126. {blurdev → preditor}/scintilla/lang/config/xml.ini +21 -21
  127. {blurdev → preditor}/scintilla/lang/config/yaml.ini +18 -18
  128. {blurdev → preditor}/scintilla/lang/language.py +240 -250
  129. preditor/scintilla/lexers/__init__.py +0 -0
  130. {blurdev → preditor}/scintilla/lexers/cpplexer.py +21 -30
  131. {blurdev → preditor}/scintilla/lexers/javascriptlexer.py +25 -34
  132. {blurdev → preditor}/scintilla/lexers/maxscriptlexer.py +234 -253
  133. {blurdev → preditor}/scintilla/lexers/mellexer.py +368 -376
  134. {blurdev → preditor}/scintilla/lexers/mulexer.py +32 -41
  135. {blurdev → preditor}/scintilla/lexers/pythonlexer.py +41 -50
  136. {blurdev → preditor}/scintilla/ui/finddialog.ui +160 -160
  137. preditor/settings.py +71 -0
  138. preditor/stream/__init__.py +80 -0
  139. preditor/stream/director.py +56 -0
  140. preditor/stream/manager.py +74 -0
  141. preditor/streamhandler_helper.py +46 -0
  142. preditor/utils/__init__.py +0 -0
  143. preditor/utils/cute.py +30 -0
  144. preditor/utils/stylesheets.py +54 -0
  145. {blurdev → preditor}/version.py +5 -5
  146. preditor/weakref.py +363 -0
  147. PrEditor-0.0.0.dev1.dist-info/METADATA +0 -51
  148. PrEditor-0.0.0.dev1.dist-info/RECORD +0 -279
  149. PrEditor-0.0.0.dev1.dist-info/top_level.txt +0 -1
  150. blurdev/__init__.py +0 -356
  151. blurdev/cores/__init__.py +0 -98
  152. blurdev/cores/application.py +0 -26
  153. blurdev/cores/core.py +0 -634
  154. blurdev/debug.py +0 -593
  155. blurdev/external.py +0 -391
  156. blurdev/gui/level_buttons.py +0 -585
  157. blurdev/gui/workboxwidget.py +0 -205
  158. blurdev/logger.py +0 -238
  159. blurdev/osystem.py +0 -813
  160. blurdev/prefs.py +0 -33
  161. blurdev/protocols/__init__.py +0 -71
  162. blurdev/protocols/write_std_output_handler.py +0 -83
  163. blurdev/resource/designer_plugins.xml +0 -9
  164. blurdev/resource/error_email_old.html +0 -41
  165. blurdev/resource/img/add.png +0 -0
  166. blurdev/resource/img/ajax-loader.gif +0 -0
  167. blurdev/resource/img/application.png +0 -0
  168. blurdev/resource/img/applications.png +0 -0
  169. blurdev/resource/img/assburner.png +0 -0
  170. blurdev/resource/img/assfreezer.png +0 -0
  171. blurdev/resource/img/bar.gif +0 -0
  172. blurdev/resource/img/blank.png +0 -0
  173. blurdev/resource/img/blurdev.png +0 -0
  174. blurdev/resource/img/calendar_disabled.png +0 -0
  175. blurdev/resource/img/calendar_enabled.png +0 -0
  176. blurdev/resource/img/cancel.png +0 -0
  177. blurdev/resource/img/custom.png +0 -0
  178. blurdev/resource/img/debug_high.png +0 -0
  179. blurdev/resource/img/debug_low.png +0 -0
  180. blurdev/resource/img/debug_mid.png +0 -0
  181. blurdev/resource/img/debug_off.png +0 -0
  182. blurdev/resource/img/django.png +0 -0
  183. blurdev/resource/img/doc.png +0 -0
  184. blurdev/resource/img/edit.png +0 -0
  185. blurdev/resource/img/elemental.png +0 -0
  186. blurdev/resource/img/explore.png +0 -0
  187. blurdev/resource/img/favorite.png +0 -0
  188. blurdev/resource/img/file.png +0 -0
  189. blurdev/resource/img/folder.png +0 -0
  190. blurdev/resource/img/ide/add.png +0 -0
  191. blurdev/resource/img/ide/add_note.png +0 -0
  192. blurdev/resource/img/ide/arrow_down.png +0 -0
  193. blurdev/resource/img/ide/arrow_up.png +0 -0
  194. blurdev/resource/img/ide/check.png +0 -0
  195. blurdev/resource/img/ide/class.png +0 -0
  196. blurdev/resource/img/ide/clean.png +0 -0
  197. blurdev/resource/img/ide/clearlog.png +0 -0
  198. blurdev/resource/img/ide/close.png +0 -0
  199. blurdev/resource/img/ide/comment_add.png +0 -0
  200. blurdev/resource/img/ide/comment_remove.png +0 -0
  201. blurdev/resource/img/ide/comment_toggle.png +0 -0
  202. blurdev/resource/img/ide/console.png +0 -0
  203. blurdev/resource/img/ide/copy.png +0 -0
  204. blurdev/resource/img/ide/copylstrip.png +0 -0
  205. blurdev/resource/img/ide/cut.png +0 -0
  206. blurdev/resource/img/ide/edit.png +0 -0
  207. blurdev/resource/img/ide/find.png +0 -0
  208. blurdev/resource/img/ide/find_replace.png +0 -0
  209. blurdev/resource/img/ide/findnext.png +0 -0
  210. blurdev/resource/img/ide/findprev.png +0 -0
  211. blurdev/resource/img/ide/folder_find.png +0 -0
  212. blurdev/resource/img/ide/function.png +0 -0
  213. blurdev/resource/img/ide/git-bash.png +0 -0
  214. blurdev/resource/img/ide/git-gui.png +0 -0
  215. blurdev/resource/img/ide/gitk.png +0 -0
  216. blurdev/resource/img/ide/goto.png +0 -0
  217. blurdev/resource/img/ide/goto_def.png +0 -0
  218. blurdev/resource/img/ide/help.png +0 -0
  219. blurdev/resource/img/ide/highlighter.png +0 -0
  220. blurdev/resource/img/ide/lowercase.png +0 -0
  221. blurdev/resource/img/ide/newfile.png +0 -0
  222. blurdev/resource/img/ide/newfolder.png +0 -0
  223. blurdev/resource/img/ide/newproject.png +0 -0
  224. blurdev/resource/img/ide/newwizard.png +0 -0
  225. blurdev/resource/img/ide/open.png +0 -0
  226. blurdev/resource/img/ide/paste.png +0 -0
  227. blurdev/resource/img/ide/pdb_continue.png +0 -0
  228. blurdev/resource/img/ide/pdb_down.png +0 -0
  229. blurdev/resource/img/ide/pdb_next.png +0 -0
  230. blurdev/resource/img/ide/pdb_step.png +0 -0
  231. blurdev/resource/img/ide/pdb_up.png +0 -0
  232. blurdev/resource/img/ide/plus_minus.png +0 -0
  233. blurdev/resource/img/ide/preferences.png +0 -0
  234. blurdev/resource/img/ide/project_find.png +0 -0
  235. blurdev/resource/img/ide/python.png +0 -0
  236. blurdev/resource/img/ide/pyular.png +0 -0
  237. blurdev/resource/img/ide/qt.png +0 -0
  238. blurdev/resource/img/ide/quit.png +0 -0
  239. blurdev/resource/img/ide/redo.png +0 -0
  240. blurdev/resource/img/ide/refresh.png +0 -0
  241. blurdev/resource/img/ide/remove.png +0 -0
  242. blurdev/resource/img/ide/ruler.png +0 -0
  243. blurdev/resource/img/ide/run.png +0 -0
  244. blurdev/resource/img/ide/runall.png +0 -0
  245. blurdev/resource/img/ide/runallclear.png +0 -0
  246. blurdev/resource/img/ide/runselected.png +0 -0
  247. blurdev/resource/img/ide/runselectedclear.png +0 -0
  248. blurdev/resource/img/ide/save.png +0 -0
  249. blurdev/resource/img/ide/saveas.png +0 -0
  250. blurdev/resource/img/ide/sdk.png +0 -0
  251. blurdev/resource/img/ide/separator.png +0 -0
  252. blurdev/resource/img/ide/tabbed.png +0 -0
  253. blurdev/resource/img/ide/tile.png +0 -0
  254. blurdev/resource/img/ide/toolbar.png +0 -0
  255. blurdev/resource/img/ide/undo.png +0 -0
  256. blurdev/resource/img/ide/uppercase.png +0 -0
  257. blurdev/resource/img/ide/view_as.png +0 -0
  258. blurdev/resource/img/ide/windowed.png +0 -0
  259. blurdev/resource/img/ide.ico +0 -0
  260. blurdev/resource/img/ide.png +0 -0
  261. blurdev/resource/img/ide48.png +0 -0
  262. blurdev/resource/img/info.png +0 -0
  263. blurdev/resource/img/legacy tool.png +0 -0
  264. blurdev/resource/img/library.png +0 -0
  265. blurdev/resource/img/logger/about.png +0 -0
  266. blurdev/resource/img/logger/arrow_forward.png +0 -0
  267. blurdev/resource/img/logger/clear.png +0 -0
  268. blurdev/resource/img/logger/close.png +0 -0
  269. blurdev/resource/img/logger/debug_disabled.png +0 -0
  270. blurdev/resource/img/logger/debug_high.png +0 -0
  271. blurdev/resource/img/logger/debug_low.png +0 -0
  272. blurdev/resource/img/logger/debug_mid.png +0 -0
  273. blurdev/resource/img/logger/down.png +0 -0
  274. blurdev/resource/img/logger/find.png +0 -0
  275. blurdev/resource/img/logger/logging_critical.png +0 -0
  276. blurdev/resource/img/logger/logging_debug.png +0 -0
  277. blurdev/resource/img/logger/logging_error.png +0 -0
  278. blurdev/resource/img/logger/logging_info.png +0 -0
  279. blurdev/resource/img/logger/logging_not_set.png +0 -0
  280. blurdev/resource/img/logger/logging_warning.png +0 -0
  281. blurdev/resource/img/logger/next.png +0 -0
  282. blurdev/resource/img/logger/play.png +0 -0
  283. blurdev/resource/img/logger/playlist_play.png +0 -0
  284. blurdev/resource/img/logger/previous.png +0 -0
  285. blurdev/resource/img/logger/return.png +0 -0
  286. blurdev/resource/img/logger/save.png +0 -0
  287. blurdev/resource/img/logger/subdirectory_arrow_right.png +0 -0
  288. blurdev/resource/img/logger/up.png +0 -0
  289. blurdev/resource/img/lovebar.png +0 -0
  290. blurdev/resource/img/new.png +0 -0
  291. blurdev/resource/img/new_selected.png +0 -0
  292. blurdev/resource/img/node.png +0 -0
  293. blurdev/resource/img/ok.png +0 -0
  294. blurdev/resource/img/options.png +0 -0
  295. blurdev/resource/img/packages.png +0 -0
  296. blurdev/resource/img/preview/add.png +0 -0
  297. blurdev/resource/img/preview/brush.png +0 -0
  298. blurdev/resource/img/preview/delete.png +0 -0
  299. blurdev/resource/img/preview/delte.png +0 -0
  300. blurdev/resource/img/preview/fill.png +0 -0
  301. blurdev/resource/img/preview/layers.png +0 -0
  302. blurdev/resource/img/preview/media.png +0 -0
  303. blurdev/resource/img/preview/navigate.png +0 -0
  304. blurdev/resource/img/preview/pencil.png +0 -0
  305. blurdev/resource/img/preview/select.png +0 -0
  306. blurdev/resource/img/preview/type.png +0 -0
  307. blurdev/resource/img/preview/visible.png +0 -0
  308. blurdev/resource/img/project.png +0 -0
  309. blurdev/resource/img/python_logger.ico +0 -0
  310. blurdev/resource/img/python_logger.png +0 -0
  311. blurdev/resource/img/refresh.png +0 -0
  312. blurdev/resource/img/remove.png +0 -0
  313. blurdev/resource/img/reset.png +0 -0
  314. blurdev/resource/img/richtext/font_bold.png +0 -0
  315. blurdev/resource/img/richtext/font_italic.png +0 -0
  316. blurdev/resource/img/richtext/link_image.png +0 -0
  317. blurdev/resource/img/richtext/spell_check.png +0 -0
  318. blurdev/resource/img/richtext/unordered_list.png +0 -0
  319. blurdev/resource/img/save.png +0 -0
  320. blurdev/resource/img/savesettings.png +0 -0
  321. blurdev/resource/img/settings.png +0 -0
  322. blurdev/resource/img/tool.png +0 -0
  323. blurdev/resource/img/toolbarHandleHorizontal.png +0 -0
  324. blurdev/resource/img/toolbarHandleVertical.png +0 -0
  325. blurdev/resource/img/trash.png +0 -0
  326. blurdev/resource/img/trax.png +0 -0
  327. blurdev/resource/img/tree.png +0 -0
  328. blurdev/resource/img/treegrunt.ico +0 -0
  329. blurdev/resource/img/treegrunt.png +0 -0
  330. blurdev/resource/img/treegruntedit.png +0 -0
  331. blurdev/resource/img/user interface.png +0 -0
  332. blurdev/resource/img/warning.png +0 -0
  333. blurdev/resource/img/watermark.png +0 -0
  334. blurdev/resource/sdk/blurdev.sdk +0 -3
  335. blurdev/resource/settings.ini +0 -82
  336. blurdev/resource/softimage/BlurApplication.dll +0 -0
  337. blurdev/resource/softimage/BlurApplication64.dll +0 -0
  338. blurdev/resource/stylesheet/Carbon.css +0 -35
  339. blurdev/resource/stylesheet/logger/Dark.css +0 -62
  340. blurdev/resource/templ/py_comment.templ +0 -1
  341. blurdev/resource/templ/py_debug_raise_error.templ +0 -7
  342. blurdev/resource/templ/py_doc_string.templ +0 -10
  343. blurdev/resource/templ/py_header.templ +0 -9
  344. blurdev/resource/templ/py_line_comment.templ +0 -1
  345. blurdev/resource/templ/py_log_to_file.templ +0 -22
  346. blurdev/resource/templ/py_module_path.templ +0 -1
  347. blurdev/resource/templ/py_pyqt_core.templ +0 -1
  348. blurdev/resource/templ/py_pyqt_gui.templ +0 -1
  349. blurdev/resource/templ/py_splashscreen.templ +0 -6
  350. blurdev/resource/templ/py_testing_note.templ +0 -1
  351. blurdev/resource/templ/py_testing_note_end.templ +0 -1
  352. blurdev/resource/tools_environments.json +0 -72
  353. blurdev/resource/tools_environments.xml +0 -11
  354. blurdev/resource/tools_environments_linux.xml +0 -11
  355. blurdev/resource/tools_environments_offline.xml +0 -7
  356. blurdev/runtimes/__init__.py +0 -2
  357. blurdev/runtimes/logger.py +0 -44
  358. blurdev/scintilla/delayables/__init__.py +0 -9
  359. blurdev/settings.py +0 -312
  360. blurdev/utils/error.py +0 -389
  361. {blurdev/scintilla/lexers → preditor/cores}/__init__.py +0 -0
  362. {blurdev/utils → preditor/gui/fuzzy_search}/__init__.py +0 -0
  363. {blurdev → preditor}/resource/img/warning-big.png +0 -0
@@ -1,219 +1,209 @@
1
- ##
2
- # \namespace blurdev.gui.highlighter
3
- #
4
- # \remarks Handles generic code highlighting based on an json file
5
- # The language definitions files for blurdev can be found in
6
- # [blurdev]/config/lang/*.json
7
- #
8
- # \author beta@blur.com
9
- # \author Blur Studio
10
- # \date 11/12/08
11
- #
12
-
13
- from __future__ import absolute_import
14
- import json
15
- import os
16
- import re
17
- from Qt.QtCore import QRegExp
18
- from Qt.QtGui import QColor, QSyntaxHighlighter, QTextCharFormat
19
-
20
- import blurdev
21
-
22
-
23
- class CodeHighlighter(QSyntaxHighlighter):
24
- def __init__(self, widget):
25
- QSyntaxHighlighter.__init__(self, widget)
26
-
27
- # setup the search rules
28
- self._keywords = []
29
- self._strings = []
30
- self._comments = []
31
- self._consoleMode = False
32
- # color storage
33
- self._commentColor = QColor(0, 206, 52)
34
- self._keywordColor = QColor(17, 154, 255)
35
- self._stringColor = QColor(255, 128, 0)
36
- self._resultColor = QColor(125, 128, 128)
37
-
38
- # setup the font
39
- font = widget.font()
40
- font.setFamily('Courier New')
41
- widget.setFont(font)
42
-
43
- def commentColor(self):
44
- # pull the color from the parent if possible because this doesn't support
45
- # stylesheets
46
- parent = self.parent()
47
- if parent and hasattr(parent, 'commentColor'):
48
- return parent.commentColor()
49
- return self._commentColor
50
-
51
- def setCommentColor(self, color):
52
- # set the color for the parent if possible because this doesn't support
53
- # stylesheets
54
- parent = self.parent()
55
- if parent and hasattr(parent, 'setCommentColor'):
56
- parent.setCommentColor(color)
57
- self._commentColor = color
58
-
59
- def commentFormat(self):
60
- """returns the comments QTextCharFormat for this highlighter"""
61
- format = QTextCharFormat()
62
- format.setForeground(self.commentColor())
63
- format.setFontItalic(True)
64
-
65
- return format
66
-
67
- def isConsoleMode(self):
68
- """checks to see if this highlighter is in console mode"""
69
- return self._consoleMode
70
-
71
- def highlightBlock(self, text):
72
- """highlights the inputed text block based on the rules of this code
73
- highlighter"""
74
- if not self.isConsoleMode() or str(text).startswith('>>>'):
75
- # format the result lines
76
- format = self.resultFormat()
77
- parent = self.parent()
78
- if parent and hasattr(parent, 'outputPrompt'):
79
- self.highlightText(
80
- text,
81
- QRegExp('%s[^\\n]*' % re.escape(parent.outputPrompt())),
82
- format,
83
- )
84
-
85
- # format the keywords
86
- format = self.keywordFormat()
87
- for kwd in self._keywords:
88
- self.highlightText(text, QRegExp(r'\b%s\b' % kwd), format)
89
-
90
- # format the strings
91
- format = self.stringFormat()
92
- for string in self._strings:
93
- self.highlightText(
94
- text,
95
- QRegExp('%s[^%s]*' % (string, string)),
96
- format,
97
- includeLast=True,
98
- )
99
-
100
- # format the comments
101
- format = self.commentFormat()
102
- for comment in self._comments:
103
- self.highlightText(text, QRegExp(comment), format)
104
-
105
- def highlightText(self, text, expr, format, offset=0, includeLast=False):
106
- """Highlights a text group with an expression and format
107
-
108
- Args:
109
- text (str): text to highlight
110
- expr (QRegExp): search parameter
111
- format (QTextCharFormat): formatting rule
112
- offset (int): number of characters to offset by when highlighting
113
- includeLast (bool): whether or not the last character should be highlighted
114
- """
115
- pos = expr.indexIn(text, 0)
116
-
117
- # highlight all the given matches to the expression in the text
118
- while pos != -1:
119
- pos = expr.pos(offset)
120
- length = len(expr.cap(offset))
121
-
122
- # use the last character if desired
123
- if includeLast:
124
- length += 1
125
-
126
- # set the formatting
127
- self.setFormat(pos, length, format)
128
-
129
- matched = expr.matchedLength()
130
- if includeLast:
131
- matched += 1
132
-
133
- pos = expr.indexIn(text, pos + matched)
134
-
135
- def keywordColor(self):
136
- # pull the color from the parent if possible because this doesn't support
137
- # stylesheets
138
- parent = self.parent()
139
- if parent and hasattr(parent, 'keywordColor'):
140
- return parent.keywordColor()
141
- return self._keywordColor
142
-
143
- def setKeywordColor(self, color):
144
- # set the color for the parent if possible because this doesn't support
145
- # stylesheets
146
- parent = self.parent()
147
- if parent and hasattr(parent, 'setKeywordColor'):
148
- parent.setKeywordColor(color)
149
- self._keywordColor = color
150
-
151
- def keywordFormat(self):
152
- """returns the keywords QTextCharFormat for this highlighter"""
153
- format = QTextCharFormat()
154
- format.setForeground(self.keywordColor())
155
-
156
- return format
157
-
158
- def resultColor(self):
159
- # pull the color from the parent if possible because this doesn't support
160
- # stylesheets
161
- parent = self.parent()
162
- if parent and hasattr(parent, 'resultColor'):
163
- return parent.resultColor()
164
- return self._resultColor
165
-
166
- def setResultColor(self, color):
167
- # set the color for the parent if possible because this doesn't support
168
- # stylesheets
169
- parent = self.parent()
170
- if parent and hasattr(parent, 'setResultColor'):
171
- parent.setResultColor(color)
172
- self._resultColor = color
173
-
174
- def resultFormat(self):
175
- """returns the result QTextCharFormat for this highlighter"""
176
- fmt = QTextCharFormat()
177
- fmt.setForeground(self.resultColor())
178
- return fmt
179
-
180
- def setConsoleMode(self, state=False):
181
- """sets the highlighter to only apply to console strings
182
- (lines starting with >>>)
183
- """
184
- self._consoleMode = state
185
-
186
- def setLanguage(self, lang):
187
- """sets the language of the highlighter by loading the json definition"""
188
- filename = blurdev.resourcePath('lang/%s.json' % lang.lower())
189
- if os.path.exists(filename):
190
- data = json.load(open(filename))
191
- self.setObjectName(data.get('name', ''))
192
- self._keywords = data.get('keywords', [])
193
- self._comments = data.get('comments', [])
194
- self._strings = data.get('strings', [])
195
-
196
- return True
197
- return False
198
-
199
- def stringColor(self):
200
- # pull the color from the parent if possible because this doesn't support
201
- # stylesheets
202
- parent = self.parent()
203
- if parent and hasattr(parent, 'stringColor'):
204
- return parent.stringColor()
205
- return self._stringColor
206
-
207
- def setStringColor(self, color):
208
- # set the color for the parent if possible because this doesn't support
209
- # stylesheets
210
- parent = self.parent()
211
- if parent and hasattr(parent, 'setStringColor'):
212
- parent.setStringColor(color)
213
- self._stringColor = color
214
-
215
- def stringFormat(self):
216
- """returns the keywords QTextCharFormat for this highligter"""
217
- format = QTextCharFormat()
218
- format.setForeground(self.stringColor())
219
- return format
1
+ from __future__ import absolute_import
2
+
3
+ import json
4
+ import os
5
+ import re
6
+
7
+ from Qt.QtCore import QRegExp
8
+ from Qt.QtGui import QColor, QSyntaxHighlighter, QTextCharFormat
9
+
10
+ from .. import resourcePath
11
+
12
+
13
+ class CodeHighlighter(QSyntaxHighlighter):
14
+ def __init__(self, widget):
15
+ super(CodeHighlighter, self).__init__(widget)
16
+
17
+ # setup the search rules
18
+ self._keywords = []
19
+ self._strings = []
20
+ self._comments = []
21
+ self._consoleMode = False
22
+ # color storage
23
+ self._commentColor = QColor(0, 206, 52)
24
+ self._keywordColor = QColor(17, 154, 255)
25
+ self._stringColor = QColor(255, 128, 0)
26
+ self._resultColor = QColor(125, 128, 128)
27
+
28
+ # setup the font
29
+ font = widget.font()
30
+ font.setFamily('Courier New')
31
+ widget.setFont(font)
32
+
33
+ def commentColor(self):
34
+ # pull the color from the parent if possible because this doesn't support
35
+ # stylesheets
36
+ parent = self.parent()
37
+ if parent and hasattr(parent, 'commentColor'):
38
+ return parent.commentColor()
39
+ return self._commentColor
40
+
41
+ def setCommentColor(self, color):
42
+ # set the color for the parent if possible because this doesn't support
43
+ # stylesheets
44
+ parent = self.parent()
45
+ if parent and hasattr(parent, 'setCommentColor'):
46
+ parent.setCommentColor(color)
47
+ self._commentColor = color
48
+
49
+ def commentFormat(self):
50
+ """returns the comments QTextCharFormat for this highlighter"""
51
+ format = QTextCharFormat()
52
+ format.setForeground(self.commentColor())
53
+ format.setFontItalic(True)
54
+
55
+ return format
56
+
57
+ def isConsoleMode(self):
58
+ """checks to see if this highlighter is in console mode"""
59
+ return self._consoleMode
60
+
61
+ def highlightBlock(self, text):
62
+ """highlights the inputed text block based on the rules of this code
63
+ highlighter"""
64
+ if not self.isConsoleMode() or str(text).startswith('>>>'):
65
+ # format the result lines
66
+ format = self.resultFormat()
67
+ parent = self.parent()
68
+ if parent and hasattr(parent, 'outputPrompt'):
69
+ self.highlightText(
70
+ text,
71
+ QRegExp('%s[^\\n]*' % re.escape(parent.outputPrompt())),
72
+ format,
73
+ )
74
+
75
+ # format the keywords
76
+ format = self.keywordFormat()
77
+ for kwd in self._keywords:
78
+ self.highlightText(text, QRegExp(r'\b%s\b' % kwd), format)
79
+
80
+ # format the strings
81
+ format = self.stringFormat()
82
+ for string in self._strings:
83
+ self.highlightText(
84
+ text,
85
+ QRegExp('%s[^%s]*' % (string, string)),
86
+ format,
87
+ includeLast=True,
88
+ )
89
+
90
+ # format the comments
91
+ format = self.commentFormat()
92
+ for comment in self._comments:
93
+ self.highlightText(text, QRegExp(comment), format)
94
+
95
+ def highlightText(self, text, expr, format, offset=0, includeLast=False):
96
+ """Highlights a text group with an expression and format
97
+
98
+ Args:
99
+ text (str): text to highlight
100
+ expr (QRegExp): search parameter
101
+ format (QTextCharFormat): formatting rule
102
+ offset (int): number of characters to offset by when highlighting
103
+ includeLast (bool): whether or not the last character should be highlighted
104
+ """
105
+ pos = expr.indexIn(text, 0)
106
+
107
+ # highlight all the given matches to the expression in the text
108
+ while pos != -1:
109
+ pos = expr.pos(offset)
110
+ length = len(expr.cap(offset))
111
+
112
+ # use the last character if desired
113
+ if includeLast:
114
+ length += 1
115
+
116
+ # set the formatting
117
+ self.setFormat(pos, length, format)
118
+
119
+ matched = expr.matchedLength()
120
+ if includeLast:
121
+ matched += 1
122
+
123
+ pos = expr.indexIn(text, pos + matched)
124
+
125
+ def keywordColor(self):
126
+ # pull the color from the parent if possible because this doesn't support
127
+ # stylesheets
128
+ parent = self.parent()
129
+ if parent and hasattr(parent, 'keywordColor'):
130
+ return parent.keywordColor()
131
+ return self._keywordColor
132
+
133
+ def setKeywordColor(self, color):
134
+ # set the color for the parent if possible because this doesn't support
135
+ # stylesheets
136
+ parent = self.parent()
137
+ if parent and hasattr(parent, 'setKeywordColor'):
138
+ parent.setKeywordColor(color)
139
+ self._keywordColor = color
140
+
141
+ def keywordFormat(self):
142
+ """returns the keywords QTextCharFormat for this highlighter"""
143
+ format = QTextCharFormat()
144
+ format.setForeground(self.keywordColor())
145
+
146
+ return format
147
+
148
+ def resultColor(self):
149
+ # pull the color from the parent if possible because this doesn't support
150
+ # stylesheets
151
+ parent = self.parent()
152
+ if parent and hasattr(parent, 'resultColor'):
153
+ return parent.resultColor()
154
+ return self._resultColor
155
+
156
+ def setResultColor(self, color):
157
+ # set the color for the parent if possible because this doesn't support
158
+ # stylesheets
159
+ parent = self.parent()
160
+ if parent and hasattr(parent, 'setResultColor'):
161
+ parent.setResultColor(color)
162
+ self._resultColor = color
163
+
164
+ def resultFormat(self):
165
+ """returns the result QTextCharFormat for this highlighter"""
166
+ fmt = QTextCharFormat()
167
+ fmt.setForeground(self.resultColor())
168
+ return fmt
169
+
170
+ def setConsoleMode(self, state=False):
171
+ """sets the highlighter to only apply to console strings
172
+ (lines starting with >>>)
173
+ """
174
+ self._consoleMode = state
175
+
176
+ def setLanguage(self, lang):
177
+ """sets the language of the highlighter by loading the json definition"""
178
+ filename = resourcePath('lang/%s.json' % lang.lower())
179
+ if os.path.exists(filename):
180
+ data = json.load(open(filename))
181
+ self.setObjectName(data.get('name', ''))
182
+ self._keywords = data.get('keywords', [])
183
+ self._comments = data.get('comments', [])
184
+ self._strings = data.get('strings', [])
185
+
186
+ return True
187
+ return False
188
+
189
+ def stringColor(self):
190
+ # pull the color from the parent if possible because this doesn't support
191
+ # stylesheets
192
+ parent = self.parent()
193
+ if parent and hasattr(parent, 'stringColor'):
194
+ return parent.stringColor()
195
+ return self._stringColor
196
+
197
+ def setStringColor(self, color):
198
+ # set the color for the parent if possible because this doesn't support
199
+ # stylesheets
200
+ parent = self.parent()
201
+ if parent and hasattr(parent, 'setStringColor'):
202
+ parent.setStringColor(color)
203
+ self._stringColor = color
204
+
205
+ def stringFormat(self):
206
+ """returns the keywords QTextCharFormat for this highligter"""
207
+ format = QTextCharFormat()
208
+ format.setForeground(self.stringColor())
209
+ return format