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.
- PrEditor-0.1.0.dist-info/LICENSE +165 -0
- PrEditor-0.1.0.dist-info/METADATA +212 -0
- PrEditor-0.1.0.dist-info/RECORD +149 -0
- {PrEditor-0.0.0.dev1.dist-info → PrEditor-0.1.0.dist-info}/WHEEL +1 -1
- PrEditor-0.1.0.dist-info/entry_points.txt +18 -0
- PrEditor-0.1.0.dist-info/top_level.txt +1 -0
- preditor/__init__.py +301 -0
- {blurdev → preditor}/__main__.py +13 -13
- preditor/about_module.py +166 -0
- preditor/cli.py +192 -0
- {blurdev → preditor}/contexts.py +119 -119
- preditor/cores/core.py +65 -0
- preditor/dccs/maya/PrEditor_maya.mod +2 -0
- preditor/dccs/maya/plug-ins/PrEditor_maya.py +108 -0
- preditor/debug.py +294 -0
- blurdev/scintilla/delayable_engine.py → preditor/delayable_engine/__init__.py +310 -299
- blurdev/scintilla/delayables/base.py → preditor/delayable_engine/delayables.py +85 -85
- {blurdev → preditor}/enum.py +728 -1003
- {blurdev → preditor}/gui/__init__.py +84 -125
- preditor/gui/app.py +159 -0
- {blurdev → preditor}/gui/codehighlighter.py +209 -219
- {blurdev → preditor}/gui/completer.py +226 -236
- {blurdev → preditor}/gui/console.py +801 -858
- {blurdev → preditor}/gui/dialog.py +200 -216
- preditor/gui/drag_tab_bar.py +190 -0
- preditor/gui/editor_chooser.py +57 -0
- {blurdev → preditor}/gui/errordialog.py +100 -97
- preditor/gui/fuzzy_search/fuzzy_search.py +93 -0
- preditor/gui/group_tab_widget/__init__.py +319 -0
- preditor/gui/group_tab_widget/grouped_tab_menu.py +35 -0
- preditor/gui/group_tab_widget/grouped_tab_models.py +108 -0
- preditor/gui/group_tab_widget/grouped_tab_widget.py +75 -0
- preditor/gui/group_tab_widget/one_tab_widget.py +54 -0
- preditor/gui/level_buttons.py +349 -0
- {blurdev → preditor}/gui/logger_window_handler.py +46 -45
- {blurdev → preditor}/gui/loggerwindow.py +1205 -1417
- {blurdev → preditor}/gui/newtabwidget.py +69 -68
- {blurdev → preditor}/gui/redmine_login_dialog.py +63 -61
- {blurdev → preditor}/gui/set_text_editor_path_dialog.py +59 -57
- preditor/gui/ui/editor_chooser.ui +93 -0
- {blurdev → preditor}/gui/ui/errordialog.ui +81 -81
- {blurdev → preditor}/gui/ui/loggerwindow.ui +1030 -864
- {blurdev → preditor}/gui/ui/redmine_login_dialog.ui +124 -124
- {blurdev → preditor}/gui/ui/set_text_editor_path_dialog.ui +149 -149
- {blurdev → preditor}/gui/window.py +183 -199
- preditor/gui/workbox_mixin.py +357 -0
- preditor/gui/workbox_text_edit.py +117 -0
- preditor/gui/workboxwidget.py +276 -0
- preditor/logging_config.py +52 -0
- preditor/osystem.py +401 -0
- preditor/plugins.py +65 -0
- preditor/prefs.py +74 -0
- {blurdev → preditor}/resource/environment_variables.html +26 -38
- {blurdev → preditor}/resource/error_mail.html +85 -85
- {blurdev → preditor}/resource/error_mail_inline.html +41 -41
- preditor/resource/img/README.md +7 -0
- preditor/resource/img/arrow_forward.png +0 -0
- preditor/resource/img/check-bold.png +0 -0
- preditor/resource/img/chevron-down.png +0 -0
- preditor/resource/img/chevron-up.png +0 -0
- preditor/resource/img/close-thick.png +0 -0
- preditor/resource/img/comment-edit.png +0 -0
- preditor/resource/img/content-copy.png +0 -0
- preditor/resource/img/content-cut.png +0 -0
- preditor/resource/img/content-duplicate.png +0 -0
- preditor/resource/img/content-paste.png +0 -0
- preditor/resource/img/content-save.png +0 -0
- preditor/resource/img/debug_disabled.png +0 -0
- preditor/resource/img/eye-check.png +0 -0
- preditor/resource/img/file-plus.png +0 -0
- preditor/resource/img/file-remove.png +0 -0
- preditor/resource/img/format-align-left.png +0 -0
- preditor/resource/img/format-letter-case-lower.png +0 -0
- preditor/resource/img/format-letter-case-upper.png +0 -0
- preditor/resource/img/information.png +0 -0
- preditor/resource/img/logging_critical.png +0 -0
- preditor/resource/img/logging_custom.png +0 -0
- preditor/resource/img/logging_debug.png +0 -0
- preditor/resource/img/logging_error.png +0 -0
- preditor/resource/img/logging_info.png +0 -0
- preditor/resource/img/logging_not_set.png +0 -0
- preditor/resource/img/logging_warning.png +0 -0
- preditor/resource/img/marker.png +0 -0
- preditor/resource/img/play.png +0 -0
- preditor/resource/img/playlist-play.png +0 -0
- preditor/resource/img/plus-minus-variant.png +0 -0
- preditor/resource/img/preditor.ico +0 -0
- preditor/resource/img/preditor.png +0 -0
- preditor/resource/img/preditor.psd +0 -0
- preditor/resource/img/preditor.svg +44 -0
- preditor/resource/img/restart.svg +1 -0
- preditor/resource/img/skip-forward-outline.png +0 -0
- preditor/resource/img/skip-next-outline.png +0 -0
- preditor/resource/img/skip-next.png +0 -0
- preditor/resource/img/skip-previous.png +0 -0
- preditor/resource/img/subdirectory-arrow-right.png +0 -0
- preditor/resource/img/text-search-variant.png +0 -0
- {blurdev → preditor}/resource/lang/python.json +30 -30
- preditor/resource/settings.ini +25 -0
- {blurdev/resource/stylesheet/logger → preditor/resource/stylesheet}/Bright.css +56 -61
- {blurdev → preditor}/resource/stylesheet/Dark.css +190 -132
- {blurdev → preditor}/scintilla/__init__.py +22 -28
- preditor/scintilla/delayables/__init__.py +11 -0
- {blurdev → preditor}/scintilla/delayables/smart_highlight.py +94 -93
- {blurdev → preditor}/scintilla/delayables/spell_check.py +173 -172
- {blurdev → preditor}/scintilla/documenteditor.py +2039 -2115
- {blurdev → preditor}/scintilla/finddialog.py +68 -81
- {blurdev → preditor}/scintilla/lang/__init__.py +80 -93
- {blurdev → preditor}/scintilla/lang/config/bash.ini +15 -15
- {blurdev → preditor}/scintilla/lang/config/batch.ini +14 -14
- {blurdev → preditor}/scintilla/lang/config/cpp.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/css.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/eyeonscript.ini +17 -17
- {blurdev → preditor}/scintilla/lang/config/html.ini +21 -21
- {blurdev → preditor}/scintilla/lang/config/javascript.ini +24 -24
- {blurdev → preditor}/scintilla/lang/config/lua.ini +16 -16
- {blurdev → preditor}/scintilla/lang/config/maxscript.ini +20 -20
- {blurdev → preditor}/scintilla/lang/config/mel.ini +18 -18
- {blurdev → preditor}/scintilla/lang/config/mu.ini +22 -22
- {blurdev → preditor}/scintilla/lang/config/nsi.ini +5 -5
- {blurdev → preditor}/scintilla/lang/config/perl.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/puppet.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/python.ini +28 -28
- {blurdev → preditor}/scintilla/lang/config/ruby.ini +19 -19
- {blurdev → preditor}/scintilla/lang/config/sql.ini +7 -7
- {blurdev → preditor}/scintilla/lang/config/xml.ini +21 -21
- {blurdev → preditor}/scintilla/lang/config/yaml.ini +18 -18
- {blurdev → preditor}/scintilla/lang/language.py +240 -250
- preditor/scintilla/lexers/__init__.py +0 -0
- {blurdev → preditor}/scintilla/lexers/cpplexer.py +21 -30
- {blurdev → preditor}/scintilla/lexers/javascriptlexer.py +25 -34
- {blurdev → preditor}/scintilla/lexers/maxscriptlexer.py +234 -253
- {blurdev → preditor}/scintilla/lexers/mellexer.py +368 -376
- {blurdev → preditor}/scintilla/lexers/mulexer.py +32 -41
- {blurdev → preditor}/scintilla/lexers/pythonlexer.py +41 -50
- {blurdev → preditor}/scintilla/ui/finddialog.ui +160 -160
- preditor/settings.py +71 -0
- preditor/stream/__init__.py +80 -0
- preditor/stream/director.py +56 -0
- preditor/stream/manager.py +74 -0
- preditor/streamhandler_helper.py +46 -0
- preditor/utils/__init__.py +0 -0
- preditor/utils/cute.py +30 -0
- preditor/utils/stylesheets.py +54 -0
- {blurdev → preditor}/version.py +5 -5
- preditor/weakref.py +363 -0
- PrEditor-0.0.0.dev1.dist-info/METADATA +0 -51
- PrEditor-0.0.0.dev1.dist-info/RECORD +0 -279
- PrEditor-0.0.0.dev1.dist-info/top_level.txt +0 -1
- blurdev/__init__.py +0 -356
- blurdev/cores/__init__.py +0 -98
- blurdev/cores/application.py +0 -26
- blurdev/cores/core.py +0 -634
- blurdev/debug.py +0 -593
- blurdev/external.py +0 -391
- blurdev/gui/level_buttons.py +0 -585
- blurdev/gui/workboxwidget.py +0 -205
- blurdev/logger.py +0 -238
- blurdev/osystem.py +0 -813
- blurdev/prefs.py +0 -33
- blurdev/protocols/__init__.py +0 -71
- blurdev/protocols/write_std_output_handler.py +0 -83
- blurdev/resource/designer_plugins.xml +0 -9
- blurdev/resource/error_email_old.html +0 -41
- blurdev/resource/img/add.png +0 -0
- blurdev/resource/img/ajax-loader.gif +0 -0
- blurdev/resource/img/application.png +0 -0
- blurdev/resource/img/applications.png +0 -0
- blurdev/resource/img/assburner.png +0 -0
- blurdev/resource/img/assfreezer.png +0 -0
- blurdev/resource/img/bar.gif +0 -0
- blurdev/resource/img/blank.png +0 -0
- blurdev/resource/img/blurdev.png +0 -0
- blurdev/resource/img/calendar_disabled.png +0 -0
- blurdev/resource/img/calendar_enabled.png +0 -0
- blurdev/resource/img/cancel.png +0 -0
- blurdev/resource/img/custom.png +0 -0
- blurdev/resource/img/debug_high.png +0 -0
- blurdev/resource/img/debug_low.png +0 -0
- blurdev/resource/img/debug_mid.png +0 -0
- blurdev/resource/img/debug_off.png +0 -0
- blurdev/resource/img/django.png +0 -0
- blurdev/resource/img/doc.png +0 -0
- blurdev/resource/img/edit.png +0 -0
- blurdev/resource/img/elemental.png +0 -0
- blurdev/resource/img/explore.png +0 -0
- blurdev/resource/img/favorite.png +0 -0
- blurdev/resource/img/file.png +0 -0
- blurdev/resource/img/folder.png +0 -0
- blurdev/resource/img/ide/add.png +0 -0
- blurdev/resource/img/ide/add_note.png +0 -0
- blurdev/resource/img/ide/arrow_down.png +0 -0
- blurdev/resource/img/ide/arrow_up.png +0 -0
- blurdev/resource/img/ide/check.png +0 -0
- blurdev/resource/img/ide/class.png +0 -0
- blurdev/resource/img/ide/clean.png +0 -0
- blurdev/resource/img/ide/clearlog.png +0 -0
- blurdev/resource/img/ide/close.png +0 -0
- blurdev/resource/img/ide/comment_add.png +0 -0
- blurdev/resource/img/ide/comment_remove.png +0 -0
- blurdev/resource/img/ide/comment_toggle.png +0 -0
- blurdev/resource/img/ide/console.png +0 -0
- blurdev/resource/img/ide/copy.png +0 -0
- blurdev/resource/img/ide/copylstrip.png +0 -0
- blurdev/resource/img/ide/cut.png +0 -0
- blurdev/resource/img/ide/edit.png +0 -0
- blurdev/resource/img/ide/find.png +0 -0
- blurdev/resource/img/ide/find_replace.png +0 -0
- blurdev/resource/img/ide/findnext.png +0 -0
- blurdev/resource/img/ide/findprev.png +0 -0
- blurdev/resource/img/ide/folder_find.png +0 -0
- blurdev/resource/img/ide/function.png +0 -0
- blurdev/resource/img/ide/git-bash.png +0 -0
- blurdev/resource/img/ide/git-gui.png +0 -0
- blurdev/resource/img/ide/gitk.png +0 -0
- blurdev/resource/img/ide/goto.png +0 -0
- blurdev/resource/img/ide/goto_def.png +0 -0
- blurdev/resource/img/ide/help.png +0 -0
- blurdev/resource/img/ide/highlighter.png +0 -0
- blurdev/resource/img/ide/lowercase.png +0 -0
- blurdev/resource/img/ide/newfile.png +0 -0
- blurdev/resource/img/ide/newfolder.png +0 -0
- blurdev/resource/img/ide/newproject.png +0 -0
- blurdev/resource/img/ide/newwizard.png +0 -0
- blurdev/resource/img/ide/open.png +0 -0
- blurdev/resource/img/ide/paste.png +0 -0
- blurdev/resource/img/ide/pdb_continue.png +0 -0
- blurdev/resource/img/ide/pdb_down.png +0 -0
- blurdev/resource/img/ide/pdb_next.png +0 -0
- blurdev/resource/img/ide/pdb_step.png +0 -0
- blurdev/resource/img/ide/pdb_up.png +0 -0
- blurdev/resource/img/ide/plus_minus.png +0 -0
- blurdev/resource/img/ide/preferences.png +0 -0
- blurdev/resource/img/ide/project_find.png +0 -0
- blurdev/resource/img/ide/python.png +0 -0
- blurdev/resource/img/ide/pyular.png +0 -0
- blurdev/resource/img/ide/qt.png +0 -0
- blurdev/resource/img/ide/quit.png +0 -0
- blurdev/resource/img/ide/redo.png +0 -0
- blurdev/resource/img/ide/refresh.png +0 -0
- blurdev/resource/img/ide/remove.png +0 -0
- blurdev/resource/img/ide/ruler.png +0 -0
- blurdev/resource/img/ide/run.png +0 -0
- blurdev/resource/img/ide/runall.png +0 -0
- blurdev/resource/img/ide/runallclear.png +0 -0
- blurdev/resource/img/ide/runselected.png +0 -0
- blurdev/resource/img/ide/runselectedclear.png +0 -0
- blurdev/resource/img/ide/save.png +0 -0
- blurdev/resource/img/ide/saveas.png +0 -0
- blurdev/resource/img/ide/sdk.png +0 -0
- blurdev/resource/img/ide/separator.png +0 -0
- blurdev/resource/img/ide/tabbed.png +0 -0
- blurdev/resource/img/ide/tile.png +0 -0
- blurdev/resource/img/ide/toolbar.png +0 -0
- blurdev/resource/img/ide/undo.png +0 -0
- blurdev/resource/img/ide/uppercase.png +0 -0
- blurdev/resource/img/ide/view_as.png +0 -0
- blurdev/resource/img/ide/windowed.png +0 -0
- blurdev/resource/img/ide.ico +0 -0
- blurdev/resource/img/ide.png +0 -0
- blurdev/resource/img/ide48.png +0 -0
- blurdev/resource/img/info.png +0 -0
- blurdev/resource/img/legacy tool.png +0 -0
- blurdev/resource/img/library.png +0 -0
- blurdev/resource/img/logger/about.png +0 -0
- blurdev/resource/img/logger/arrow_forward.png +0 -0
- blurdev/resource/img/logger/clear.png +0 -0
- blurdev/resource/img/logger/close.png +0 -0
- blurdev/resource/img/logger/debug_disabled.png +0 -0
- blurdev/resource/img/logger/debug_high.png +0 -0
- blurdev/resource/img/logger/debug_low.png +0 -0
- blurdev/resource/img/logger/debug_mid.png +0 -0
- blurdev/resource/img/logger/down.png +0 -0
- blurdev/resource/img/logger/find.png +0 -0
- blurdev/resource/img/logger/logging_critical.png +0 -0
- blurdev/resource/img/logger/logging_debug.png +0 -0
- blurdev/resource/img/logger/logging_error.png +0 -0
- blurdev/resource/img/logger/logging_info.png +0 -0
- blurdev/resource/img/logger/logging_not_set.png +0 -0
- blurdev/resource/img/logger/logging_warning.png +0 -0
- blurdev/resource/img/logger/next.png +0 -0
- blurdev/resource/img/logger/play.png +0 -0
- blurdev/resource/img/logger/playlist_play.png +0 -0
- blurdev/resource/img/logger/previous.png +0 -0
- blurdev/resource/img/logger/return.png +0 -0
- blurdev/resource/img/logger/save.png +0 -0
- blurdev/resource/img/logger/subdirectory_arrow_right.png +0 -0
- blurdev/resource/img/logger/up.png +0 -0
- blurdev/resource/img/lovebar.png +0 -0
- blurdev/resource/img/new.png +0 -0
- blurdev/resource/img/new_selected.png +0 -0
- blurdev/resource/img/node.png +0 -0
- blurdev/resource/img/ok.png +0 -0
- blurdev/resource/img/options.png +0 -0
- blurdev/resource/img/packages.png +0 -0
- blurdev/resource/img/preview/add.png +0 -0
- blurdev/resource/img/preview/brush.png +0 -0
- blurdev/resource/img/preview/delete.png +0 -0
- blurdev/resource/img/preview/delte.png +0 -0
- blurdev/resource/img/preview/fill.png +0 -0
- blurdev/resource/img/preview/layers.png +0 -0
- blurdev/resource/img/preview/media.png +0 -0
- blurdev/resource/img/preview/navigate.png +0 -0
- blurdev/resource/img/preview/pencil.png +0 -0
- blurdev/resource/img/preview/select.png +0 -0
- blurdev/resource/img/preview/type.png +0 -0
- blurdev/resource/img/preview/visible.png +0 -0
- blurdev/resource/img/project.png +0 -0
- blurdev/resource/img/python_logger.ico +0 -0
- blurdev/resource/img/python_logger.png +0 -0
- blurdev/resource/img/refresh.png +0 -0
- blurdev/resource/img/remove.png +0 -0
- blurdev/resource/img/reset.png +0 -0
- blurdev/resource/img/richtext/font_bold.png +0 -0
- blurdev/resource/img/richtext/font_italic.png +0 -0
- blurdev/resource/img/richtext/link_image.png +0 -0
- blurdev/resource/img/richtext/spell_check.png +0 -0
- blurdev/resource/img/richtext/unordered_list.png +0 -0
- blurdev/resource/img/save.png +0 -0
- blurdev/resource/img/savesettings.png +0 -0
- blurdev/resource/img/settings.png +0 -0
- blurdev/resource/img/tool.png +0 -0
- blurdev/resource/img/toolbarHandleHorizontal.png +0 -0
- blurdev/resource/img/toolbarHandleVertical.png +0 -0
- blurdev/resource/img/trash.png +0 -0
- blurdev/resource/img/trax.png +0 -0
- blurdev/resource/img/tree.png +0 -0
- blurdev/resource/img/treegrunt.ico +0 -0
- blurdev/resource/img/treegrunt.png +0 -0
- blurdev/resource/img/treegruntedit.png +0 -0
- blurdev/resource/img/user interface.png +0 -0
- blurdev/resource/img/warning.png +0 -0
- blurdev/resource/img/watermark.png +0 -0
- blurdev/resource/sdk/blurdev.sdk +0 -3
- blurdev/resource/settings.ini +0 -82
- blurdev/resource/softimage/BlurApplication.dll +0 -0
- blurdev/resource/softimage/BlurApplication64.dll +0 -0
- blurdev/resource/stylesheet/Carbon.css +0 -35
- blurdev/resource/stylesheet/logger/Dark.css +0 -62
- blurdev/resource/templ/py_comment.templ +0 -1
- blurdev/resource/templ/py_debug_raise_error.templ +0 -7
- blurdev/resource/templ/py_doc_string.templ +0 -10
- blurdev/resource/templ/py_header.templ +0 -9
- blurdev/resource/templ/py_line_comment.templ +0 -1
- blurdev/resource/templ/py_log_to_file.templ +0 -22
- blurdev/resource/templ/py_module_path.templ +0 -1
- blurdev/resource/templ/py_pyqt_core.templ +0 -1
- blurdev/resource/templ/py_pyqt_gui.templ +0 -1
- blurdev/resource/templ/py_splashscreen.templ +0 -6
- blurdev/resource/templ/py_testing_note.templ +0 -1
- blurdev/resource/templ/py_testing_note_end.templ +0 -1
- blurdev/resource/tools_environments.json +0 -72
- blurdev/resource/tools_environments.xml +0 -11
- blurdev/resource/tools_environments_linux.xml +0 -11
- blurdev/resource/tools_environments_offline.xml +0 -7
- blurdev/runtimes/__init__.py +0 -2
- blurdev/runtimes/logger.py +0 -44
- blurdev/scintilla/delayables/__init__.py +0 -9
- blurdev/settings.py +0 -312
- blurdev/utils/error.py +0 -389
- {blurdev/scintilla/lexers → preditor/cores}/__init__.py +0 -0
- {blurdev/utils → preditor/gui/fuzzy_search}/__init__.py +0 -0
- {blurdev → preditor}/resource/img/warning-big.png +0 -0
|
@@ -1,68 +1,69 @@
|
|
|
1
|
-
from __future__ import absolute_import
|
|
2
|
-
|
|
3
|
-
from Qt.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
self.uiPlusBTN
|
|
17
|
-
self.uiPlusBTN.
|
|
18
|
-
self.uiPlusBTN.
|
|
19
|
-
self.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
self.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
self.
|
|
50
|
-
self.uiPlusBTN.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
self.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
self.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
from Qt.QtWidgets import QDialog
|
|
6
|
-
from redminelib import Redmine
|
|
7
|
-
from redminelib.exceptions import AuthError
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
self.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
self.
|
|
20
|
-
self.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
self.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
from Qt.QtWidgets import QDialog, QMessageBox
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if
|
|
26
|
-
self.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
#
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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><html><head/><body><p>New editors are added by pip packages. A list of known pip editors can be found at <a href="https://github.com/blurstudio/preditor"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/blurstudio/preditor</span></a>.</p></body></html></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>
|