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,68 +1,69 @@
1
- from __future__ import absolute_import
2
- from Qt.QtCore import QSize, Signal
3
- from Qt.QtWidgets import QPushButton, QTabBar, QTabWidget
4
-
5
- # This class is pulled from this example
6
- # http://stackoverflow.com/a/20098415
7
-
8
-
9
- class TabBarPlus(QTabBar):
10
- plusClicked = Signal()
11
-
12
- def __init__(self, parent=None):
13
- super(TabBarPlus, self).__init__(parent)
14
- # Plus Button
15
- self.uiPlusBTN = QPushButton("+")
16
- self.uiPlusBTN.setParent(self)
17
- self.uiPlusBTN.setObjectName('uiPlusBTN')
18
- self.uiPlusBTN.clicked.connect(self.plusClicked.emit)
19
- self.movePlusButton()
20
-
21
- def sizeHint(self):
22
- sizeHint = QTabBar.sizeHint(self)
23
- width = sizeHint.width()
24
- height = sizeHint.height()
25
- return QSize(width + 25, height)
26
-
27
- def resizeEvent(self, event):
28
- super(TabBarPlus, self).resizeEvent(event)
29
- self.movePlusButton()
30
-
31
- def tabLayoutChange(self):
32
- super(TabBarPlus, self).tabLayoutChange()
33
-
34
- self.movePlusButton()
35
-
36
- def movePlusButton(self):
37
- size = 0
38
- for i in range(self.count()):
39
- size += self.tabRect(i).width()
40
-
41
- h = self.geometry().top()
42
- w = self.width()
43
- if size > w: # Show just to the left of the scroll buttons
44
- self.uiPlusBTN.move(w - 54, h)
45
- else:
46
- self.uiPlusBTN.move(size, h)
47
- # Resize the button to fit the height of the tab bar
48
- hint = self.sizeHint().height()
49
- self.uiPlusBTN.setMaximumSize(hint, hint)
50
- self.uiPlusBTN.setMinimumSize(hint, hint)
51
-
52
-
53
- class NewTabWidget(QTabWidget):
54
- addTabClicked = Signal()
55
-
56
- def __init__(self, parent=None):
57
- super(NewTabWidget, self).__init__(parent)
58
-
59
- # Tab Bar
60
- self._tab = TabBarPlus()
61
- self.setTabBar(self._tab)
62
-
63
- # Properties
64
- self.setMovable(True)
65
- self.setTabsClosable(True)
66
-
67
- # Signals
68
- self._tab.plusClicked.connect(self.addTabClicked.emit)
1
+ from __future__ import absolute_import
2
+
3
+ from Qt.QtCore import QSize, Signal
4
+ from Qt.QtWidgets import QPushButton, QTabBar, QTabWidget
5
+
6
+ # This class is pulled from this example
7
+ # http://stackoverflow.com/a/20098415
8
+
9
+
10
+ class TabBarPlus(QTabBar):
11
+ plusClicked = Signal()
12
+
13
+ def __init__(self, parent=None):
14
+ super(TabBarPlus, self).__init__(parent)
15
+ # Plus Button
16
+ self.uiPlusBTN = QPushButton("+")
17
+ self.uiPlusBTN.setParent(self)
18
+ self.uiPlusBTN.setObjectName('uiPlusBTN')
19
+ self.uiPlusBTN.clicked.connect(self.plusClicked.emit)
20
+ self.movePlusButton()
21
+
22
+ def sizeHint(self):
23
+ sizeHint = QTabBar.sizeHint(self)
24
+ width = sizeHint.width()
25
+ height = sizeHint.height()
26
+ return QSize(width + 25, height)
27
+
28
+ def resizeEvent(self, event):
29
+ super(TabBarPlus, self).resizeEvent(event)
30
+ self.movePlusButton()
31
+
32
+ def tabLayoutChange(self):
33
+ super(TabBarPlus, self).tabLayoutChange()
34
+
35
+ self.movePlusButton()
36
+
37
+ def movePlusButton(self):
38
+ size = 0
39
+ for i in range(self.count()):
40
+ size += self.tabRect(i).width()
41
+
42
+ h = self.geometry().top()
43
+ w = self.width()
44
+ if size > w: # Show just to the left of the scroll buttons
45
+ self.uiPlusBTN.move(w - 54, h)
46
+ else:
47
+ self.uiPlusBTN.move(size, h)
48
+ # Resize the button to fit the height of the tab bar
49
+ hint = self.sizeHint().height()
50
+ self.uiPlusBTN.setMaximumSize(hint, hint)
51
+ self.uiPlusBTN.setMinimumSize(hint, hint)
52
+
53
+
54
+ class NewTabWidget(QTabWidget):
55
+ addTabClicked = Signal()
56
+
57
+ def __init__(self, parent=None):
58
+ super(NewTabWidget, self).__init__(parent)
59
+
60
+ # Tab Bar
61
+ self._tab = TabBarPlus()
62
+ self.setTabBar(self._tab)
63
+
64
+ # Properties
65
+ self.setMovable(True)
66
+ self.setTabsClosable(True)
67
+
68
+ # Signals
69
+ self._tab.plusClicked.connect(self.addTabClicked.emit)
@@ -1,61 +1,63 @@
1
- from __future__ import absolute_import
2
- import os
3
- import blurdev
4
-
5
- from Qt.QtWidgets import QDialog
6
- from redminelib import Redmine
7
- from redminelib.exceptions import AuthError
8
-
9
-
10
- class RedmineLoginDialog(QDialog):
11
- def __init__(self, parent=None, redmineUrl=None):
12
- super(RedmineLoginDialog, self).__init__(parent)
13
- blurdev.gui.loadUi(__file__, self)
14
- self._redmineUrl = redmineUrl or os.environ.get(
15
- 'BDEV_REDMINE_URL', 'https://redmine.blur.com'
16
- )
17
- self.uiDialogButtonBox.rejected.connect(self.reject)
18
- self._redmine = None
19
- self._username = ''
20
- self._password = ''
21
-
22
- def accept(self):
23
- self._username = self.uiUsernameLineEdit.text()
24
- self._password = self.uiPasswordLineEdit.text()
25
- try:
26
- self._redmine = Redmine(
27
- self._redmineUrl,
28
- username=self._username,
29
- password=self._password,
30
- )
31
- # Forces the connection and potential AuthError.
32
- users = self._redmine.user.all().values_list()
33
- next(users)
34
- return super(RedmineLoginDialog, self).accept()
35
- except AuthError:
36
- self.uiPromptLabel.setStyleSheet("QLabel {color : red;}")
37
- self.uiPromptLabel.setText('Invalid Redmine credentials. Try again.')
38
-
39
- def password(self):
40
- """The password input by the user upon acceptance.
41
-
42
- Returns:
43
- str: The password.
44
- """
45
- return self._password
46
-
47
- def username(self):
48
- """The username input by the user upon acceptance.
49
-
50
- Returns:
51
- str: The username.
52
- """
53
- return self._username
54
-
55
- def redmine(self):
56
- """The Redmine connection object upon succesful acceptance.
57
-
58
- Returns:
59
- redminelib.Redmine: Redmine connection object.
60
- """
61
- return self._redmine
1
+ from __future__ import absolute_import
2
+
3
+ import os
4
+
5
+ from Qt.QtWidgets import QDialog
6
+ from redminelib import Redmine
7
+ from redminelib.exceptions import AuthError
8
+
9
+ from ..gui import loadUi
10
+
11
+
12
+ class RedmineLoginDialog(QDialog):
13
+ def __init__(self, parent=None, redmineUrl=None):
14
+ super(RedmineLoginDialog, self).__init__(parent)
15
+ loadUi(__file__, self)
16
+ self._redmineUrl = redmineUrl or os.environ.get(
17
+ 'BDEV_REDMINE_URL', 'https://redmine.blur.com'
18
+ )
19
+ self.uiDialogButtonBox.rejected.connect(self.reject)
20
+ self._redmine = None
21
+ self._username = ''
22
+ self._password = ''
23
+
24
+ def accept(self):
25
+ self._username = self.uiUsernameLineEdit.text()
26
+ self._password = self.uiPasswordLineEdit.text()
27
+ try:
28
+ self._redmine = Redmine(
29
+ self._redmineUrl,
30
+ username=self._username,
31
+ password=self._password,
32
+ )
33
+ # Forces the connection and potential AuthError.
34
+ users = self._redmine.user.all().values_list()
35
+ next(users)
36
+ return super(RedmineLoginDialog, self).accept()
37
+ except AuthError:
38
+ self.uiPromptLabel.setStyleSheet("QLabel {color : red;}")
39
+ self.uiPromptLabel.setText('Invalid Redmine credentials. Try again.')
40
+
41
+ def password(self):
42
+ """The password input by the user upon acceptance.
43
+
44
+ Returns:
45
+ str: The password.
46
+ """
47
+ return self._password
48
+
49
+ def username(self):
50
+ """The username input by the user upon acceptance.
51
+
52
+ Returns:
53
+ str: The username.
54
+ """
55
+ return self._username
56
+
57
+ def redmine(self):
58
+ """The Redmine connection object upon succesful acceptance.
59
+
60
+ Returns:
61
+ redminelib.Redmine: Redmine connection object.
62
+ """
63
+ return self._redmine
@@ -1,57 +1,59 @@
1
- from __future__ import absolute_import
2
- import os
3
- import blurdev.gui
4
-
5
- from Qt.QtWidgets import QDialog, QMessageBox
6
-
7
-
8
- class SetTextEditorPathDialog(QDialog):
9
- """A dialog used to set the user's text editor executable path, as well as define a
10
- 'command template', which allows for the various ways text editor's may implement
11
- opening a file at a given line number via Command Prompt.
12
- """
13
-
14
- def __init__(self, parent=None, redmineUrl=None):
15
- super(SetTextEditorPathDialog, self).__init__(parent)
16
- blurdev.gui.loadUi(__file__, self)
17
-
18
- # Rerieve existing data from LoggerWindow
19
- path = self.parent().textEditorPath
20
- cmdTempl = self.parent().textEditorCmdTempl
21
-
22
- # If the data exists, place in the UI, otherwise use UI defaults
23
- if path:
24
- self.uiTextEditorExecutablePathLE.setText(path)
25
- if cmdTempl:
26
- self.uiTextEditorCommandPatternLE.setText(cmdTempl)
27
-
28
- toolTip = (
29
- "Examples:\n"
30
- "SublimeText: {exePath} {modulePath}:{lineNum}\n"
31
- "notepad++: {exePath} {modulePath} -n{lineNum}\n"
32
- "vim: {exePath} +{lineNum} {modulePath}"
33
- )
34
- self.uiTextEditorCommandPatternLE.setToolTip(toolTip)
35
-
36
- def accept(self):
37
- """Validate that the path exists and is executable.
38
- Can't really validate the command template, so instead we use try/except when
39
- issuing the command.
40
- """
41
- path = self.uiTextEditorExecutablePathLE.text()
42
- cmdTempl = self.uiTextEditorCommandPatternLE.text()
43
-
44
- path = path.strip("\"")
45
-
46
- # isExecutable is not very accurate, because on Windows, .jpg and .txt, etc
47
- # files are returned as executable. Perhaps on other systems, it's actually
48
- # relevant to whether the file is 'executable'.
49
- isExecutable = os.access(path, os.X_OK)
50
- if isExecutable:
51
- self.parent().textEditorPath = path
52
- self.parent().textEditorCmdTempl = cmdTempl
53
- super(SetTextEditorPathDialog, self).accept()
54
- else:
55
- msg = "That path doesn't exists or isn't an executable file."
56
- label = 'Incorrect Path'
57
- QMessageBox.warning(self.window(), label, msg, QMessageBox.Ok)
1
+ from __future__ import absolute_import
2
+
3
+ import os
4
+
5
+ from Qt.QtWidgets import QDialog, QMessageBox
6
+
7
+ from . import loadUi
8
+
9
+
10
+ class SetTextEditorPathDialog(QDialog):
11
+ """A dialog used to set the user's text editor executable path, as well as define a
12
+ 'command template', which allows for the various ways text editor's may implement
13
+ opening a file at a given line number via Command Prompt.
14
+ """
15
+
16
+ def __init__(self, parent=None, redmineUrl=None):
17
+ super(SetTextEditorPathDialog, self).__init__(parent)
18
+ loadUi(__file__, self)
19
+
20
+ # Rerieve existing data from LoggerWindow
21
+ path = self.parent().textEditorPath
22
+ cmdTempl = self.parent().textEditorCmdTempl
23
+
24
+ # If the data exists, place in the UI, otherwise use UI defaults
25
+ if path:
26
+ self.uiTextEditorExecutablePathLE.setText(path)
27
+ if cmdTempl:
28
+ self.uiTextEditorCommandPatternLE.setText(cmdTempl)
29
+
30
+ toolTip = (
31
+ "Examples:\n"
32
+ "SublimeText: {exePath} {modulePath}:{lineNum}\n"
33
+ "notepad++: {exePath} {modulePath} -n{lineNum}\n"
34
+ "vim: {exePath} +{lineNum} {modulePath}"
35
+ )
36
+ self.uiTextEditorCommandPatternLE.setToolTip(toolTip)
37
+
38
+ def accept(self):
39
+ """Validate that the path exists and is executable.
40
+ Can't really validate the command template, so instead we use try/except when
41
+ issuing the command.
42
+ """
43
+ path = self.uiTextEditorExecutablePathLE.text()
44
+ cmdTempl = self.uiTextEditorCommandPatternLE.text()
45
+
46
+ path = path.strip("\"")
47
+
48
+ # isExecutable is not very accurate, because on Windows, .jpg and .txt, etc
49
+ # files are returned as executable. Perhaps on other systems, it's actually
50
+ # relevant to whether the file is 'executable'.
51
+ isExecutable = os.access(path, os.X_OK)
52
+ if isExecutable:
53
+ self.parent().textEditorPath = path
54
+ self.parent().textEditorCmdTempl = cmdTempl
55
+ super(SetTextEditorPathDialog, self).accept()
56
+ else:
57
+ msg = "That path doesn't exists or isn't an executable file."
58
+ label = 'Incorrect Path'
59
+ QMessageBox.warning(self.window(), label, msg, QMessageBox.Ok)
@@ -0,0 +1,93 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Form</class>
4
+ <widget class="QWidget" name="Form">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>543</width>
10
+ <height>118</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Form</string>
15
+ </property>
16
+ <layout class="QFormLayout" name="formLayout_2">
17
+ <property name="labelAlignment">
18
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
19
+ </property>
20
+ <item row="0" column="0">
21
+ <widget class="QLabel" name="uiWorkboxEditorLBL">
22
+ <property name="text">
23
+ <string>Editor Class:</string>
24
+ </property>
25
+ </widget>
26
+ </item>
27
+ <item row="0" column="1">
28
+ <widget class="QComboBox" name="uiWorkboxEditorDDL"/>
29
+ </item>
30
+ <item row="1" column="0">
31
+ <widget class="QLabel" name="uiWarningIconLBL">
32
+ <property name="layoutDirection">
33
+ <enum>Qt::RightToLeft</enum>
34
+ </property>
35
+ <property name="text">
36
+ <string>Warning</string>
37
+ </property>
38
+ </widget>
39
+ </item>
40
+ <item row="1" column="1">
41
+ <widget class="QLabel" name="uiWarningTextLBL">
42
+ <property name="text">
43
+ <string>Choose an editor to enable Workboxs.</string>
44
+ </property>
45
+ </widget>
46
+ </item>
47
+ <item row="2" column="1">
48
+ <widget class="QLabel" name="uiWorkboxInfoLBL">
49
+ <property name="sizePolicy">
50
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
51
+ <horstretch>0</horstretch>
52
+ <verstretch>0</verstretch>
53
+ </sizepolicy>
54
+ </property>
55
+ <property name="text">
56
+ <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;New editors are added by pip packages. A list of known pip editors can be found at &lt;a href=&quot;https://github.com/blurstudio/preditor&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://github.com/blurstudio/preditor&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
57
+ </property>
58
+ <property name="alignment">
59
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
60
+ </property>
61
+ <property name="wordWrap">
62
+ <bool>true</bool>
63
+ </property>
64
+ <property name="openExternalLinks">
65
+ <bool>true</bool>
66
+ </property>
67
+ </widget>
68
+ </item>
69
+ </layout>
70
+ </widget>
71
+ <resources/>
72
+ <connections>
73
+ <connection>
74
+ <sender>uiWorkboxEditorDDL</sender>
75
+ <signal>currentIndexChanged(int)</signal>
76
+ <receiver>Form</receiver>
77
+ <slot>refresh()</slot>
78
+ <hints>
79
+ <hint type="sourcelabel">
80
+ <x>506</x>
81
+ <y>23</y>
82
+ </hint>
83
+ <hint type="destinationlabel">
84
+ <x>535</x>
85
+ <y>32</y>
86
+ </hint>
87
+ </hints>
88
+ </connection>
89
+ </connections>
90
+ <slots>
91
+ <slot>refresh()</slot>
92
+ </slots>
93
+ </ui>
@@ -1,81 +1,81 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <ui version="4.0">
3
- <class>uiPythonErrorMBOX</class>
4
- <widget class="QDialog" name="uiPythonErrorMBOX">
5
- <property name="geometry">
6
- <rect>
7
- <x>0</x>
8
- <y>0</y>
9
- <width>424</width>
10
- <height>98</height>
11
- </rect>
12
- </property>
13
- <property name="windowTitle">
14
- <string>Dialog</string>
15
- </property>
16
- <layout class="QGridLayout" name="gridLayout">
17
- <item row="0" column="0">
18
- <layout class="QHBoxLayout" name="horizontalLayout_2">
19
- <item>
20
- <widget class="QLabel" name="iconLabel">
21
- <property name="text">
22
- <string>TextLabel</string>
23
- </property>
24
- </widget>
25
- </item>
26
- <item>
27
- <layout class="QVBoxLayout" name="verticalLayout">
28
- <item>
29
- <widget class="QLabel" name="errorLabel">
30
- <property name="text">
31
- <string>TextLabel</string>
32
- </property>
33
- </widget>
34
- </item>
35
- <item>
36
- <spacer name="horizontalSpacer">
37
- <property name="orientation">
38
- <enum>Qt::Horizontal</enum>
39
- </property>
40
- <property name="sizeHint" stdset="0">
41
- <size>
42
- <width>40</width>
43
- <height>20</height>
44
- </size>
45
- </property>
46
- </spacer>
47
- </item>
48
- </layout>
49
- </item>
50
- </layout>
51
- </item>
52
- <item row="1" column="0">
53
- <layout class="QHBoxLayout" name="horizontalLayout">
54
- <item>
55
- <widget class="QPushButton" name="loggerButton">
56
- <property name="text">
57
- <string>Show Logger</string>
58
- </property>
59
- </widget>
60
- </item>
61
- <item>
62
- <widget class="QPushButton" name="requestButton">
63
- <property name="text">
64
- <string>Submit Issue</string>
65
- </property>
66
- </widget>
67
- </item>
68
- <item>
69
- <widget class="QPushButton" name="ignoreButton">
70
- <property name="text">
71
- <string>Ignore</string>
72
- </property>
73
- </widget>
74
- </item>
75
- </layout>
76
- </item>
77
- </layout>
78
- </widget>
79
- <resources/>
80
- <connections/>
81
- </ui>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>uiPythonErrorMBOX</class>
4
+ <widget class="QDialog" name="uiPythonErrorMBOX">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>424</width>
10
+ <height>98</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Dialog</string>
15
+ </property>
16
+ <layout class="QGridLayout" name="gridLayout">
17
+ <item row="0" column="0">
18
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
19
+ <item>
20
+ <widget class="QLabel" name="iconLabel">
21
+ <property name="text">
22
+ <string>TextLabel</string>
23
+ </property>
24
+ </widget>
25
+ </item>
26
+ <item>
27
+ <layout class="QVBoxLayout" name="verticalLayout">
28
+ <item>
29
+ <widget class="QLabel" name="errorLabel">
30
+ <property name="text">
31
+ <string>TextLabel</string>
32
+ </property>
33
+ </widget>
34
+ </item>
35
+ <item>
36
+ <spacer name="horizontalSpacer">
37
+ <property name="orientation">
38
+ <enum>Qt::Horizontal</enum>
39
+ </property>
40
+ <property name="sizeHint" stdset="0">
41
+ <size>
42
+ <width>40</width>
43
+ <height>20</height>
44
+ </size>
45
+ </property>
46
+ </spacer>
47
+ </item>
48
+ </layout>
49
+ </item>
50
+ </layout>
51
+ </item>
52
+ <item row="1" column="0">
53
+ <layout class="QHBoxLayout" name="horizontalLayout">
54
+ <item>
55
+ <widget class="QPushButton" name="loggerButton">
56
+ <property name="text">
57
+ <string>Show Logger</string>
58
+ </property>
59
+ </widget>
60
+ </item>
61
+ <item>
62
+ <widget class="QPushButton" name="requestButton">
63
+ <property name="text">
64
+ <string>Submit Issue</string>
65
+ </property>
66
+ </widget>
67
+ </item>
68
+ <item>
69
+ <widget class="QPushButton" name="ignoreButton">
70
+ <property name="text">
71
+ <string>Ignore</string>
72
+ </property>
73
+ </widget>
74
+ </item>
75
+ </layout>
76
+ </item>
77
+ </layout>
78
+ </widget>
79
+ <resources/>
80
+ <connections/>
81
+ </ui>