From 0c8fe1c4152324da8d97fad1ba43ed8f20e642ad Mon Sep 17 00:00:00 2001 From: johannes Date: Sat, 28 Apr 2018 21:51:06 +0200 Subject: [PATCH 1/6] modified all to run with qt.py removed namespaced imports in favour of explicit imports --- pw_multiScriptEditor/icons_rcs.py | 6 +- pw_multiScriptEditor/managers/_3dsmax.py | 5 +- pw_multiScriptEditor/managers/__init__.py | 2 +- pw_multiScriptEditor/managers/_maya.py | 49 +-- pw_multiScriptEditor/managers/_nuke.py | 31 +- .../managers/completeWidget.py | 2 +- pw_multiScriptEditor/managers/houdini/hou.py | 12 +- pw_multiScriptEditor/managers/nuke/geo.py | 2 +- pw_multiScriptEditor/run.cmd | 2 +- pw_multiScriptEditor/run.sh | 2 +- pw_multiScriptEditor/scriptEditor.py | 97 +++-- pw_multiScriptEditor/widgets/about.py | 17 +- pw_multiScriptEditor/widgets/about_UIs.py | 138 +++---- .../widgets/completeWidget.py | 43 +- pw_multiScriptEditor/widgets/findWidget.py | 28 +- .../widgets/findWidget_UIs.py | 39 +- pw_multiScriptEditor/widgets/inputWidget.py | 105 +++-- pw_multiScriptEditor/widgets/numBarWidget.py | 38 +- pw_multiScriptEditor/widgets/outputWidget.py | 28 +- .../widgets/pythonSyntax/syntaxHighLighter.py | 25 +- .../widgets/scriptEditor_UIs.py | 384 +++++++++--------- pw_multiScriptEditor/widgets/shortcuts.py | 21 +- pw_multiScriptEditor/widgets/shortcuts_UIs.py | 90 ++-- pw_multiScriptEditor/widgets/tabWidget.py | 42 +- pw_multiScriptEditor/widgets/themeEditor.py | 38 +- .../widgets/themeEditor_UI.py | 48 +-- .../widgets/themeEditor_UIs.py | 180 ++++---- 27 files changed, 691 insertions(+), 783 deletions(-) mode change 100644 => 100755 pw_multiScriptEditor/widgets/about.py mode change 100644 => 100755 pw_multiScriptEditor/widgets/findWidget.py mode change 100644 => 100755 pw_multiScriptEditor/widgets/shortcuts.py mode change 100644 => 100755 pw_multiScriptEditor/widgets/themeEditor.py diff --git a/pw_multiScriptEditor/icons_rcs.py b/pw_multiScriptEditor/icons_rcs.py index 6d1892b..09d7b3d 100644 --- a/pw_multiScriptEditor/icons_rcs.py +++ b/pw_multiScriptEditor/icons_rcs.py @@ -6,10 +6,8 @@ # by: The Resource Compiler for PySide (Qt v4.8.5) # # WARNING! All changes made in this file will be lost! -try: - from PySide import QtCore -except: - from PySide2 import QtCore +from Qt import QtCore + qt_resource_data = "\x00\x00F~\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x0aOiCCPPhotoshop ICC profile\x00\x00x\xda\x9dSgTS\xe9\x16=\xf7\xde\xf4BK\x88\x80\x94KoR\x15\x08 RB\x8b\x80\x14\x91&*!\x09\x10J\x88!\xa1\xd9\x15Q\xc1\x11EE\x04\x1b\xc8\xa0\x88\x03\x8e\x8e\x80\x8c\x15Q,\x0c\x8a\x0a\xd8\x07\xe4!\xa2\x8e\x83\xa3\x88\x8a\xca\xfb\xe1{\xa3k\xd6\xbc\xf7\xe6\xcd\xfe\xb5\xd7>\xe7\xac\xf3\x9d\xb3\xcf\x07\xc0\x08\x0c\x96H3Q5\x80\x0c\xa9B\x1e\x11\xe0\x83\xc7\xc4\xc6\xe1\xe4.@\x81\x0a$p\x00\x10\x08\xb3d!s\xfd#\x01\x00\xf8~<<+\x22\xc0\x07\xbe\x00\x01x\xd3\x0b\x08\x00\xc0M\x9b\xc00\x1c\x87\xff\x0f\xeaB\x99\x5c\x01\x80\x84\x01\xc0t\x918K\x08\x80\x14\x00@z\x8eB\xa6\x00@F\x01\x80\x9d\x98&S\x00\xa0\x04\x00`\xcbcb\xe3\x00P-\x00`'\x7f\xe6\xd3\x00\x80\x9d\xf8\x99{\x01\x00[\x94!\x15\x01\xa0\x91\x00 \x13e\x88D\x00h;\x00\xac\xcfV\x8aE\x00X0\x00\x14fK\xc49\x00\xd8-\x000IWfH\x00\xb0\xb7\x00\xc0\xce\x10\x0b\xb2\x00\x08\x0c\x000Q\x88\x85)\x00\x04{\x00`\xc8##x\x00\x84\x99\x00\x14F\xf2W<\xf1+\xae\x10\xe7*\x00\x00x\x99\xb2<\xb9$9E\x81[\x08-q\x07WW.\x1e(\xceI\x17+\x146a\x02a\x9a@.\xc2y\x99\x192\x814\x0f\xe0\xf3\xcc\x00\x00\xa0\x91\x15\x11\xe0\x83\xf3\xfdx\xce\x0e\xae\xce\xce6\x8e\xb6\x0e_-\xea\xbf\x06\xff\x22bb\xe3\xfe\xe5\xcf\xabp@\x00\x00\xe1t~\xd1\xfe,/\xb3\x1a\x80;\x06\x80m\xfe\xa2%\xee\x04h^\x0b\xa0u\xf7\x8bf\xb2\x0f@\xb5\x00\xa0\xe9\xdaW\xf3p\xf8~<\xdf5\x00\xb0j>\x01{\x91-\xa8]c\x03\xf6K'\x10Xt\xc0\xe2\xf7\x00\x00\xf2\xbbo\xc1\xd4(\x08\x03\x80h\x83\xe1\xcfw\xff\xef?\xfdG\xa0%\x00\x80fI\x92q\x00\x00^D$.T\xca\xb3?\xc7\x08\x00\x00D\xa0\x81*\xb0A\x1b\xf4\xc1\x18,\xc0\x06\x1c\xc1\x05\xdc\xc1\x0b\xfc`6\x84B$\xc4\xc2B\x10B\x0ad\x80\x1cr`)\xac\x82B(\x86\xcd\xb0\x1d*`/\xd4@\x1d4\xc0Qh\x86\x93p\x0e.\xc2U\xb8\x0e=p\x0f\xfaa\x08\x9e\xc1(\xbc\x81\x09\x04A\xc8\x08\x13a!\xda\x88\x01b\x8aX#\x8e\x08\x17\x99\x85\xf8!\xc1H\x04\x12\x8b$ \xc9\x88\x14Q\x22K\x915H1R\x8aT UH\x1d\xf2=r\x029\x87\x5cF\xba\x91;\xc8\x002\x82\xfc\x86\xbcG1\x94\x81\xb2Q=\xd4\x0c\xb5C\xb9\xa87\x1a\x84F\xa2\x0b\xd0dt1\x9a\x8f\x16\xa0\x9b\xd0r\xb4\x1a=\x8c6\xa1\xe7\xd0\xabh\x0f\xda\x8f>C\xc70\xc0\xe8\x18\x073\xc4l0.\xc6\xc3B\xb18,\x09\x93c\xcb\xb1\x22\xac\x0c\xab\xc6\x1a\xb0V\xac\x03\xbb\x89\xf5c\xcf\xb1w\x04\x12\x81E\xc0\x096\x04wB a\x1eAHXLXN\xd8H\xa8 \x1c$4\x11\xda\x097\x09\x03\x84Q\xc2'\x22\x93\xa8K\xb4&\xba\x11\xf9\xc4\x18b21\x87XH,#\xd6\x12\x8f\x13/\x10{\x88C\xc47$\x12\x89C2'\xb9\x90\x02I\xb1\xa4T\xd2\x12\xd2F\xd2nR#\xe9,\xa9\x9b4H\x1a#\x93\xc9\xdadk\xb2\x079\x94, +\xc8\x85\xe4\x9d\xe4\xc3\xe43\xe4\x1b\xe4!\xf2[\x0a\x9db@q\xa4\xf8S\xe2(R\xcajJ\x19\xe5\x10\xe54\xe5\x06e\x982AU\xa3\x9aR\xdd\xa8\xa1T\x115\x8fZB\xad\xa1\xb6R\xafQ\x87\xa8\x134u\x9a9\xcd\x83\x16IK\xa5\xad\xa2\x95\xd3\x1ah\x17h\xf7i\xaf\xe8t\xba\x11\xdd\x95\x1eN\x97\xd0W\xd2\xcb\xe9G\xe8\x97\xe8\x03\xf4w\x0c\x0d\x86\x15\x83\xc7\x88g(\x19\x9b\x18\x07\x18g\x19w\x18\xaf\x98L\xa6\x19\xd3\x8b\x19\xc7T071\xeb\x98\xe7\x99\x0f\x99oUX*\xb6*|\x15\x91\xca\x0a\x95J\x95&\x95\x1b*/T\xa9\xaa\xa6\xaa\xde\xaa\x0bU\xf3U\xcbT\x8f\xa9^S}\xaeFU3S\xe3\xa9\x09\xd4\x96\xabU\xaa\x9dP\xebS\x1bSg\xa9;\xa8\x87\xaag\xa8oT?\xa4~Y\xfd\x89\x06Y\xc3L\xc3OC\xa4Q\xa0\xb1_\xe3\xbc\xc6 \x0bc\x19\xb3x,!k\x0d\xab\x86u\x815\xc4&\xb1\xcd\xd9|v*\xbb\x98\xfd\x1d\xbb\x8b=\xaa\xa9\xa19C3J3W\xb3R\xf3\x94f?\x07\xe3\x98q\xf8\x9ctN\x09\xe7(\xa7\x97\xf3~\x8a\xde\x14\xef)\xe2)\x1b\xa64L\xb91e\x5ck\xaa\x96\x97\x96X\xabH\xabQ\xabG\xeb\xbd6\xae\xed\xa7\x9d\xa6\xbdE\xbbY\xfb\x81\x0eA\xc7J'\x5c'Gg\x8f\xce\x05\x9d\xe7S\xd9S\xdd\xa7\x0a\xa7\x16M=:\xf5\xae.\xaak\xa5\x1b\xa1\xbbDw\xbfn\xa7\xee\x98\x9e\xbe^\x80\x9eLo\xa7\xdey\xbd\xe7\xfa\x1c}/\xfdT\xfdm\xfa\xa7\xf5G\x0cX\x06\xb3\x0c$\x06\xdb\x0c\xce\x18<\xc55qo<\x1d/\xc7\xdb\xf1QC]\xc3@C\xa5a\x95a\x97\xe1\x84\x91\xb9\xd1<\xa3\xd5F\x8dF\x0f\x8ci\xc6\x5c\xe3$\xe3m\xc6m\xc6\xa3&\x06&!&KM\xeaM\xee\x9aRM\xb9\xa6)\xa6;L;L\xc7\xcd\xcc\xcd\xa2\xcd\xd6\x995\x9b=1\xd72\xe7\x9b\xe7\x9b\xd7\x9b\xdf\xb7`ZxZ,\xb6\xa8\xb6\xb8eI\xb2\xe4Z\xa6Y\xee\xb6\xbcn\x85Z9Y\xa5XUZ]\xb3F\xad\x9d\xad%\xd6\xbb\xad\xbb\xa7\x11\xa7\xb9N\x93N\xab\x9e\xd6g\xc3\xb0\xf1\xb6\xc9\xb6\xa9\xb7\x19\xb0\xe5\xd8\x06\xdb\xae\xb6m\xb6}agb\x17g\xb7\xc5\xae\xc3\xee\x93\xbd\x93}\xba}\x8d\xfd=\x07\x0d\x87\xd9\x0e\xab\x1dZ\x1d~s\xb4r\x14:V:\xde\x9a\xce\x9c\xee?}\xc5\xf4\x96\xe9/gX\xcf\x10\xcf\xd83\xe3\xb6\x13\xcb)\xc4i\x9dS\x9b\xd3Gg\x17g\xb9s\x83\xf3\x88\x8b\x89K\x82\xcb.\x97>.\x9b\x1b\xc6\xdd\xc8\xbd\xe4Jt\xf5q]\xe1z\xd2\xf5\x9d\x9b\xb3\x9b\xc2\xed\xa8\xdb\xaf\xee6\xeei\xee\x87\xdc\x9f\xcc4\x9f)\x9eY3s\xd0\xc3\xc8C\xe0Q\xe5\xd1?\x0b\x9f\x950k\xdf\xac~OCO\x81g\xb5\xe7#/c/\x91W\xad\xd7\xb0\xb7\xa5w\xaa\xf7a\xef\x17>\xf6>r\x9f\xe3>\xe3<7\xde2\xdeY_\xcc7\xc0\xb7\xc8\xb7\xcbO\xc3o\x9e_\x85\xdfC\x7f#\xffd\xffz\xff\xd1\x00\xa7\x80%\x01g\x03\x89\x81A\x81[\x02\xfb\xf8z|!\xbf\x8e?:\xdbe\xf6\xb2\xd9\xedA\x8c\xa0\xb9A\x15A\x8f\x82\xad\x82\xe5\xc1\xad!h\xc8\xec\x90\xad!\xf7\xe7\x98\xce\x91\xcei\x0e\x85P~\xe8\xd6\xd0\x07a\xe6a\x8b\xc3~\x0c'\x85\x87\x85W\x86?\x8ep\x88X\x1a\xd11\x975w\xd1\xdcCs\xdfD\xfaD\x96D\xde\x9bg1O9\xaf-J5*>\xaa.j<\xda7\xba4\xba?\xc6.fY\xcc\xd5X\x9dXIlK\x1c9.*\xae6nl\xbe\xdf\xfc\xed\xf3\x87\xe2\x9d\xe2\x0b\xe3{\x17\x98/\xc8]py\xa1\xce\xc2\xf4\x85\xa7\x16\xa9.\x12,:\x96@L\x88N8\x94\xf0A\x10*\xa8\x16\x8c%\xf2\x13w%\x8e\x0ay\xc2\x1d\xc2g\x22/\xd16\xd1\x88\xd8C\x5c*\x1eN\xf2H*Mz\x92\xec\x91\xbc5y$\xc53\xa5,\xe5\xb9\x84'\xa9\x90\xbcL\x0dL\xdd\x9b:\x9e\x16\x9av m2=:\xbd1\x83\x92\x91\x90qB\xaa!M\x93\xb6g\xeag\xe6fv\xcb\xace\x85\xb2\xfe\xc5n\x8b\xb7/\x1e\x95\x07\xc9k\xb3\x90\xac\x05Y-\x0a\xb6B\xa6\xe8TZ(\xd7*\x07\xb2geWf\xbf\xcd\x89\xca9\x96\xab\x9e+\xcd\xed\xcc\xb3\xca\xdb\x907\x9c\xef\x9f\xff\xed\x12\xc2\x12\xe1\x92\xb6\xa5\x86KW-\x1dX\xe6\xbd\xacj9\xb2\x15\x89\x8a\xae\x14\xdb\x17\x97\x15\x7f\xd8(\xdcx\xe5\x1b\x87o\xca\xbf\x99\xdc\x94\xb4\xa9\xab\xc4\xb9d\xcff\xd2f\xe9\xe6\xde-\x9e[\x0e\x96\xaa\x97\xe6\x97\x0en\x0d\xd9\xda\xb4\x0d\xdfV\xb4\xed\xf5\xf6E\xdb/\x97\xcd(\xdb\xbb\x83\xb6C\xb9\xa3\xbf<\xb8\xbce\xa7\xc9\xce\xcd;?T\xa4T\xf4T\xfaT6\xee\xd2\xdd\xb5a\xd7\xf8n\xd1\xee\x1b{\xbc\xf64\xec\xd5\xdb[\xbc\xf7\xfd>\xc9\xbe\xdbU\x01UM\xd5f\xd5e\xfbI\xfb\xb3\xf7?\xae\x89\xaa\xe9\xf8\x96\xfbm]\xadNmq\xed\xc7\x03\xd2\x03\xfd\x07#\x0e\xb6\xd7\xb9\xd4\xd5\x1d\xd2=TR\x8f\xd6+\xebG\x0e\xc7\x1f\xbe\xfe\x9d\xefw-\x0d6\x0dU\x8d\x9c\xc6\xe2#pDy\xe4\xe9\xf7\x09\xdf\xf7\x1e\x0d:\xdav\x8c{\xac\xe1\x07\xd3\x1fv\x1dg\x1d/jB\x9a\xf2\x9aF\x9bS\x9a\xfb[b[\xbaO\xcc>\xd1\xd6\xea\xdez\xfcG\xdb\x1f\x0f\x9c499\xe2?r\xfd\xe9\xfc\xa7C\xcfd\xcf&\x9e\x17\xfe\xa2\xfe\xcb\xae\x17\x16/~\xf8\xd5\xeb\xd7\xce\xd1\x98\xd1\xa1\x97\xf2\x97\x93\xbfm|\xa5\xfd\xea\xc0\xeb\x19\xaf\xdb\xc6\xc2\xc6\x1e\xbe\xc9x31^\xf4V\xfb\xed\xc1w\xdcw\x1d\xef\xa3\xdf\x0fO\xe4| \x7f(\xffh\xf9\xb1\xf5S\xd0\xa7\xfb\x93\x19\x93\x93\xff\x04\x03\x98\xf3\xfcc3-\xdb\x00\x00:\xd8iTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2014-04-02T00:14:53+04:00\x0a 2014-04-02T00:14:53+04:00\x0a 2014-04-02T00:14:53+04:00\x0a xmp.iid:4129fec3-aa60-0e4a-bd2d-0c1e89a9dba5\x0a xmp.did:1205f81a-573a-6345-84bc-1bec692589ce\x0a xmp.did:1205f81a-573a-6345-84bc-1bec692589ce\x0a \x0a \x0a \x0a created\x0a xmp.iid:1205f81a-573a-6345-84bc-1bec692589ce\x0a 2014-04-02T00:14:53+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a saved\x0a xmp.iid:4129fec3-aa60-0e4a-bd2d-0c1e89a9dba5\x0a 2014-04-02T00:14:53+04:00\x0a Adobe Photoshop CC (Windows)\x0a /\x0a \x0a \x0a \x0a \x0a \x0a xmp.did:CED979F2760511E1954F918C86BB5E3E\x0a \x0a \x0a 3\x0a sRGB IEC61966-2.1\x0a image/png\x0a 1\x0a 720000/10000\x0a 720000/10000\x0a 2\x0a 1\x0a 16\x0a 16\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a\x1c\xda\xc4\xc8\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00\xc5IDATx\xda\xdc\xd3=jBQ\x10\xc5\xf1\xdf\x93`-\xe2\x12\xb2\x01\x85\xe0\x02\xde6\x82\xba\x85$ba\x95^\x0d\xa9\xd2&\xd8\xd9\xd9Z\xbc\x15\xa4M\xd2\xa5\x10\x02\xb1\xb0\xb5\x92\xf0\xd2\x8c ~\x06\xac\xe2T\x03\xf7\xce\xb9\xffs\x0f\x93\xe4y\xee\x94*8\xb1\xce@\xe0b\xd5dYV@\x19\xf3#3%,\xd34]l\x12\x5ca\x82\x9b\x03d5\x8c\xd0\xdd\x22\xc0,^o\x85\xc0\x03\xd63\xae\xa2\x87\x0a>w\xfd\xc1\x14w\xf8F\x03m$qV\xc7c\x0c?\xe1e\x17\x01\xbc\x85\xc8\x00\xd7\xf8\xc1+\xee\xc3\xfb\x00\xc3c)\xbc\xe3\x16_h\x86\x95J\x10\x0c\xff\x1a\xe3\x07:a\xa7\x88>\x9e\x0f\xc6\xb8\x87\xa4\x8dK\x8c\xf7]J\xfe\xff2\xfd\x0e\x00\x01\xd7(\xfc\x88\x81e\xcb\x00\x00\x00\x00IEND\xaeB`\x82\x00\x008\xe3\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x18\x00\x00\x00\x11\x08\x06\x00\x00\x00\xc7xl0\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x008\x1aiTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2013-11-30T20:27:51+04:00\x0a 2013-11-30T20:47:55+04:00\x0a 2013-11-30T20:47:55+04:00\x0a image/png\x0a 3\x0a xmp.iid:108a5c37-0a08-6f40-9e0e-3045064bd091\x0a xmp.did:108a5c37-0a08-6f40-9e0e-3045064bd091\x0a xmp.did:108a5c37-0a08-6f40-9e0e-3045064bd091\x0a \x0a \x0a \x0a created\x0a xmp.iid:108a5c37-0a08-6f40-9e0e-3045064bd091\x0a 2013-11-30T20:27:51+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a \x0a 1\x0a 720000/10000\x0a 720000/10000\x0a 2\x0a 65535\x0a 24\x0a 17\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0aD\x1e`\xf0\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00CIDATx\xdab\xfc\xff\xff?\x03\xb1 22\xd2\x8b\x81\x81\xe1\xcf\xf2\xe5\xcbw\x11\xab\x87q\xd4\x82Q\x0b\x06\xc4\x02N\x06\x06\x86\xc7\xb4\xb4\x80\x83\x81\x81\xe1\xe1h\x1c\x8cZ0j\x01\xf1\x16\x00\x00\x00\x00\xff\xff\x03\x00)\x82\x82^\xb0\x8fF\x15\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00F{\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x0aOiCCPPhotoshop ICC profile\x00\x00x\xda\x9dSgTS\xe9\x16=\xf7\xde\xf4BK\x88\x80\x94KoR\x15\x08 RB\x8b\x80\x14\x91&*!\x09\x10J\x88!\xa1\xd9\x15Q\xc1\x11EE\x04\x1b\xc8\xa0\x88\x03\x8e\x8e\x80\x8c\x15Q,\x0c\x8a\x0a\xd8\x07\xe4!\xa2\x8e\x83\xa3\x88\x8a\xca\xfb\xe1{\xa3k\xd6\xbc\xf7\xe6\xcd\xfe\xb5\xd7>\xe7\xac\xf3\x9d\xb3\xcf\x07\xc0\x08\x0c\x96H3Q5\x80\x0c\xa9B\x1e\x11\xe0\x83\xc7\xc4\xc6\xe1\xe4.@\x81\x0a$p\x00\x10\x08\xb3d!s\xfd#\x01\x00\xf8~<<+\x22\xc0\x07\xbe\x00\x01x\xd3\x0b\x08\x00\xc0M\x9b\xc00\x1c\x87\xff\x0f\xeaB\x99\x5c\x01\x80\x84\x01\xc0t\x918K\x08\x80\x14\x00@z\x8eB\xa6\x00@F\x01\x80\x9d\x98&S\x00\xa0\x04\x00`\xcbcb\xe3\x00P-\x00`'\x7f\xe6\xd3\x00\x80\x9d\xf8\x99{\x01\x00[\x94!\x15\x01\xa0\x91\x00 \x13e\x88D\x00h;\x00\xac\xcfV\x8aE\x00X0\x00\x14fK\xc49\x00\xd8-\x000IWfH\x00\xb0\xb7\x00\xc0\xce\x10\x0b\xb2\x00\x08\x0c\x000Q\x88\x85)\x00\x04{\x00`\xc8##x\x00\x84\x99\x00\x14F\xf2W<\xf1+\xae\x10\xe7*\x00\x00x\x99\xb2<\xb9$9E\x81[\x08-q\x07WW.\x1e(\xceI\x17+\x146a\x02a\x9a@.\xc2y\x99\x192\x814\x0f\xe0\xf3\xcc\x00\x00\xa0\x91\x15\x11\xe0\x83\xf3\xfdx\xce\x0e\xae\xce\xce6\x8e\xb6\x0e_-\xea\xbf\x06\xff\x22bb\xe3\xfe\xe5\xcf\xabp@\x00\x00\xe1t~\xd1\xfe,/\xb3\x1a\x80;\x06\x80m\xfe\xa2%\xee\x04h^\x0b\xa0u\xf7\x8bf\xb2\x0f@\xb5\x00\xa0\xe9\xdaW\xf3p\xf8~<\xdf5\x00\xb0j>\x01{\x91-\xa8]c\x03\xf6K'\x10Xt\xc0\xe2\xf7\x00\x00\xf2\xbbo\xc1\xd4(\x08\x03\x80h\x83\xe1\xcfw\xff\xef?\xfdG\xa0%\x00\x80fI\x92q\x00\x00^D$.T\xca\xb3?\xc7\x08\x00\x00D\xa0\x81*\xb0A\x1b\xf4\xc1\x18,\xc0\x06\x1c\xc1\x05\xdc\xc1\x0b\xfc`6\x84B$\xc4\xc2B\x10B\x0ad\x80\x1cr`)\xac\x82B(\x86\xcd\xb0\x1d*`/\xd4@\x1d4\xc0Qh\x86\x93p\x0e.\xc2U\xb8\x0e=p\x0f\xfaa\x08\x9e\xc1(\xbc\x81\x09\x04A\xc8\x08\x13a!\xda\x88\x01b\x8aX#\x8e\x08\x17\x99\x85\xf8!\xc1H\x04\x12\x8b$ \xc9\x88\x14Q\x22K\x915H1R\x8aT UH\x1d\xf2=r\x029\x87\x5cF\xba\x91;\xc8\x002\x82\xfc\x86\xbcG1\x94\x81\xb2Q=\xd4\x0c\xb5C\xb9\xa87\x1a\x84F\xa2\x0b\xd0dt1\x9a\x8f\x16\xa0\x9b\xd0r\xb4\x1a=\x8c6\xa1\xe7\xd0\xabh\x0f\xda\x8f>C\xc70\xc0\xe8\x18\x073\xc4l0.\xc6\xc3B\xb18,\x09\x93c\xcb\xb1\x22\xac\x0c\xab\xc6\x1a\xb0V\xac\x03\xbb\x89\xf5c\xcf\xb1w\x04\x12\x81E\xc0\x096\x04wB a\x1eAHXLXN\xd8H\xa8 \x1c$4\x11\xda\x097\x09\x03\x84Q\xc2'\x22\x93\xa8K\xb4&\xba\x11\xf9\xc4\x18b21\x87XH,#\xd6\x12\x8f\x13/\x10{\x88C\xc47$\x12\x89C2'\xb9\x90\x02I\xb1\xa4T\xd2\x12\xd2F\xd2nR#\xe9,\xa9\x9b4H\x1a#\x93\xc9\xdadk\xb2\x079\x94, +\xc8\x85\xe4\x9d\xe4\xc3\xe43\xe4\x1b\xe4!\xf2[\x0a\x9db@q\xa4\xf8S\xe2(R\xcajJ\x19\xe5\x10\xe54\xe5\x06e\x982AU\xa3\x9aR\xdd\xa8\xa1T\x115\x8fZB\xad\xa1\xb6R\xafQ\x87\xa8\x134u\x9a9\xcd\x83\x16IK\xa5\xad\xa2\x95\xd3\x1ah\x17h\xf7i\xaf\xe8t\xba\x11\xdd\x95\x1eN\x97\xd0W\xd2\xcb\xe9G\xe8\x97\xe8\x03\xf4w\x0c\x0d\x86\x15\x83\xc7\x88g(\x19\x9b\x18\x07\x18g\x19w\x18\xaf\x98L\xa6\x19\xd3\x8b\x19\xc7T071\xeb\x98\xe7\x99\x0f\x99oUX*\xb6*|\x15\x91\xca\x0a\x95J\x95&\x95\x1b*/T\xa9\xaa\xa6\xaa\xde\xaa\x0bU\xf3U\xcbT\x8f\xa9^S}\xaeFU3S\xe3\xa9\x09\xd4\x96\xabU\xaa\x9dP\xebS\x1bSg\xa9;\xa8\x87\xaag\xa8oT?\xa4~Y\xfd\x89\x06Y\xc3L\xc3OC\xa4Q\xa0\xb1_\xe3\xbc\xc6 \x0bc\x19\xb3x,!k\x0d\xab\x86u\x815\xc4&\xb1\xcd\xd9|v*\xbb\x98\xfd\x1d\xbb\x8b=\xaa\xa9\xa19C3J3W\xb3R\xf3\x94f?\x07\xe3\x98q\xf8\x9ctN\x09\xe7(\xa7\x97\xf3~\x8a\xde\x14\xef)\xe2)\x1b\xa64L\xb91e\x5ck\xaa\x96\x97\x96X\xabH\xabQ\xabG\xeb\xbd6\xae\xed\xa7\x9d\xa6\xbdE\xbbY\xfb\x81\x0eA\xc7J'\x5c'Gg\x8f\xce\x05\x9d\xe7S\xd9S\xdd\xa7\x0a\xa7\x16M=:\xf5\xae.\xaak\xa5\x1b\xa1\xbbDw\xbfn\xa7\xee\x98\x9e\xbe^\x80\x9eLo\xa7\xdey\xbd\xe7\xfa\x1c}/\xfdT\xfdm\xfa\xa7\xf5G\x0cX\x06\xb3\x0c$\x06\xdb\x0c\xce\x18<\xc55qo<\x1d/\xc7\xdb\xf1QC]\xc3@C\xa5a\x95a\x97\xe1\x84\x91\xb9\xd1<\xa3\xd5F\x8dF\x0f\x8ci\xc6\x5c\xe3$\xe3m\xc6m\xc6\xa3&\x06&!&KM\xeaM\xee\x9aRM\xb9\xa6)\xa6;L;L\xc7\xcd\xcc\xcd\xa2\xcd\xd6\x995\x9b=1\xd72\xe7\x9b\xe7\x9b\xd7\x9b\xdf\xb7`ZxZ,\xb6\xa8\xb6\xb8eI\xb2\xe4Z\xa6Y\xee\xb6\xbcn\x85Z9Y\xa5XUZ]\xb3F\xad\x9d\xad%\xd6\xbb\xad\xbb\xa7\x11\xa7\xb9N\x93N\xab\x9e\xd6g\xc3\xb0\xf1\xb6\xc9\xb6\xa9\xb7\x19\xb0\xe5\xd8\x06\xdb\xae\xb6m\xb6}agb\x17g\xb7\xc5\xae\xc3\xee\x93\xbd\x93}\xba}\x8d\xfd=\x07\x0d\x87\xd9\x0e\xab\x1dZ\x1d~s\xb4r\x14:V:\xde\x9a\xce\x9c\xee?}\xc5\xf4\x96\xe9/gX\xcf\x10\xcf\xd83\xe3\xb6\x13\xcb)\xc4i\x9dS\x9b\xd3Gg\x17g\xb9s\x83\xf3\x88\x8b\x89K\x82\xcb.\x97>.\x9b\x1b\xc6\xdd\xc8\xbd\xe4Jt\xf5q]\xe1z\xd2\xf5\x9d\x9b\xb3\x9b\xc2\xed\xa8\xdb\xaf\xee6\xeei\xee\x87\xdc\x9f\xcc4\x9f)\x9eY3s\xd0\xc3\xc8C\xe0Q\xe5\xd1?\x0b\x9f\x950k\xdf\xac~OCO\x81g\xb5\xe7#/c/\x91W\xad\xd7\xb0\xb7\xa5w\xaa\xf7a\xef\x17>\xf6>r\x9f\xe3>\xe3<7\xde2\xdeY_\xcc7\xc0\xb7\xc8\xb7\xcbO\xc3o\x9e_\x85\xdfC\x7f#\xffd\xffz\xff\xd1\x00\xa7\x80%\x01g\x03\x89\x81A\x81[\x02\xfb\xf8z|!\xbf\x8e?:\xdbe\xf6\xb2\xd9\xedA\x8c\xa0\xb9A\x15A\x8f\x82\xad\x82\xe5\xc1\xad!h\xc8\xec\x90\xad!\xf7\xe7\x98\xce\x91\xcei\x0e\x85P~\xe8\xd6\xd0\x07a\xe6a\x8b\xc3~\x0c'\x85\x87\x85W\x86?\x8ep\x88X\x1a\xd11\x975w\xd1\xdcCs\xdfD\xfaD\x96D\xde\x9bg1O9\xaf-J5*>\xaa.j<\xda7\xba4\xba?\xc6.fY\xcc\xd5X\x9dXIlK\x1c9.*\xae6nl\xbe\xdf\xfc\xed\xf3\x87\xe2\x9d\xe2\x0b\xe3{\x17\x98/\xc8]py\xa1\xce\xc2\xf4\x85\xa7\x16\xa9.\x12,:\x96@L\x88N8\x94\xf0A\x10*\xa8\x16\x8c%\xf2\x13w%\x8e\x0ay\xc2\x1d\xc2g\x22/\xd16\xd1\x88\xd8C\x5c*\x1eN\xf2H*Mz\x92\xec\x91\xbc5y$\xc53\xa5,\xe5\xb9\x84'\xa9\x90\xbcL\x0dL\xdd\x9b:\x9e\x16\x9av m2=:\xbd1\x83\x92\x91\x90qB\xaa!M\x93\xb6g\xeag\xe6fv\xcb\xace\x85\xb2\xfe\xc5n\x8b\xb7/\x1e\x95\x07\xc9k\xb3\x90\xac\x05Y-\x0a\xb6B\xa6\xe8TZ(\xd7*\x07\xb2geWf\xbf\xcd\x89\xca9\x96\xab\x9e+\xcd\xed\xcc\xb3\xca\xdb\x907\x9c\xef\x9f\xff\xed\x12\xc2\x12\xe1\x92\xb6\xa5\x86KW-\x1dX\xe6\xbd\xacj9\xb2\x15\x89\x8a\xae\x14\xdb\x17\x97\x15\x7f\xd8(\xdcx\xe5\x1b\x87o\xca\xbf\x99\xdc\x94\xb4\xa9\xab\xc4\xb9d\xcff\xd2f\xe9\xe6\xde-\x9e[\x0e\x96\xaa\x97\xe6\x97\x0en\x0d\xd9\xda\xb4\x0d\xdfV\xb4\xed\xf5\xf6E\xdb/\x97\xcd(\xdb\xbb\x83\xb6C\xb9\xa3\xbf<\xb8\xbce\xa7\xc9\xce\xcd;?T\xa4T\xf4T\xfaT6\xee\xd2\xdd\xb5a\xd7\xf8n\xd1\xee\x1b{\xbc\xf64\xec\xd5\xdb[\xbc\xf7\xfd>\xc9\xbe\xdbU\x01UM\xd5f\xd5e\xfbI\xfb\xb3\xf7?\xae\x89\xaa\xe9\xf8\x96\xfbm]\xadNmq\xed\xc7\x03\xd2\x03\xfd\x07#\x0e\xb6\xd7\xb9\xd4\xd5\x1d\xd2=TR\x8f\xd6+\xebG\x0e\xc7\x1f\xbe\xfe\x9d\xefw-\x0d6\x0dU\x8d\x9c\xc6\xe2#pDy\xe4\xe9\xf7\x09\xdf\xf7\x1e\x0d:\xdav\x8c{\xac\xe1\x07\xd3\x1fv\x1dg\x1d/jB\x9a\xf2\x9aF\x9bS\x9a\xfb[b[\xbaO\xcc>\xd1\xd6\xea\xdez\xfcG\xdb\x1f\x0f\x9c499\xe2?r\xfd\xe9\xfc\xa7C\xcfd\xcf&\x9e\x17\xfe\xa2\xfe\xcb\xae\x17\x16/~\xf8\xd5\xeb\xd7\xce\xd1\x98\xd1\xa1\x97\xf2\x97\x93\xbfm|\xa5\xfd\xea\xc0\xeb\x19\xaf\xdb\xc6\xc2\xc6\x1e\xbe\xc9x31^\xf4V\xfb\xed\xc1w\xdcw\x1d\xef\xa3\xdf\x0fO\xe4| \x7f(\xffh\xf9\xb1\xf5S\xd0\xa7\xfb\x93\x19\x93\x93\xff\x04\x03\x98\xf3\xfcc3-\xdb\x00\x00:\xd8iTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2014-04-02T00:14:53+04:00\x0a 2014-04-02T00:14:53+04:00\x0a 2014-04-02T00:14:53+04:00\x0a xmp.iid:f58ea093-289f-7d49-8786-e3a77ce63fb9\x0a xmp.did:6b476d3f-677f-1148-8796-2a2f6b11441d\x0a xmp.did:6b476d3f-677f-1148-8796-2a2f6b11441d\x0a \x0a \x0a \x0a created\x0a xmp.iid:6b476d3f-677f-1148-8796-2a2f6b11441d\x0a 2014-04-02T00:14:53+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a saved\x0a xmp.iid:f58ea093-289f-7d49-8786-e3a77ce63fb9\x0a 2014-04-02T00:14:53+04:00\x0a Adobe Photoshop CC (Windows)\x0a /\x0a \x0a \x0a \x0a \x0a \x0a xmp.did:CED979F2760511E1954F918C86BB5E3E\x0a \x0a \x0a 3\x0a sRGB IEC61966-2.1\x0a image/png\x0a 1\x0a 720000/10000\x0a 720000/10000\x0a 2\x0a 1\x0a 16\x0a 16\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a;Q\xea\x18\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00\xc2IDATx\xda\xc4\xd31N\x02a\x10\x05\xe0\x0f\x824\xb4\x1e\x05O\xb0-\x05\x07\x00\x12[\x1b4 \x09T^\x83\xce\x8b\xec\x01h\xa0\x82J\x0b\x13\x92\xa50\xc6\x9a\xc2\xb5\x99\x82\x10\x02\xfeK\xe1T\x93\x7f2\xef\x9f\xf7\xdeL\xad,K\xd7D\xdd\x95\xd18\xf5\x98\xe7y\x0b3\xbc\xe3\x15?\x87\xf5,\xcb\xce\x03\xe0\x06mt\x22\x9f\xa7R\xf8\xc6\x14\x9fx\xc0\xa0\x8a\x06K\x8c\x03l\x84\xfb*\x22\xae0\x89I\x1e\xd1\xaf\xe2\xc2\x02/\xd8\xc7D\xddT\x80\x1a\xee\xd0D\x81\xb7\x8b6\x1e5\x8f\xd1\xc36\xe8\xac\xff\x0aP\xc7S4\x17x\xc6&E\x83a\xd8W\x84\x0b\x9b\x14\x17n\xe3\xe7]PX'\xad2\xbeb\x81v\xf88+\xd2\xbf_\xe3\xef\x00\x1c\x17*-\xd7G\xaa_\x00\x00\x00\x00IEND\xaeB`\x82\x00\x009u\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x0c\x00\x00\x00\x0c\x08\x06\x00\x00\x00Vu\x5c\xe7\x00\x00\x00\x09pHYs\x00\x00\x01#\x00\x00\x01#\x01rAw\xde\x00\x008\x18iTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2013-11-30T20:27:38+04:00\x0a 2013-11-30T20:48:59+04:00\x0a 2013-11-30T20:48:59+04:00\x0a image/png\x0a 3\x0a xmp.iid:7616c5dd-35f8-9440-9856-45cc4980ec01\x0a xmp.did:17ee26ae-3d57-e54f-80da-9ef46285218f\x0a xmp.did:7616c5dd-35f8-9440-9856-45cc4980ec01\x0a \x0a \x0a \x0a created\x0a xmp.iid:7616c5dd-35f8-9440-9856-45cc4980ec01\x0a 2013-11-30T20:27:38+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a \x0a 1\x0a 73914/10000\x0a 73914/10000\x0a 2\x0a 65535\x0a 12\x0a 12\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a0$Pw\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00\xd7IDATx\xdal\xd1\xcdJ\x03A\x10\x04\xe0\x8e\xe8bT<\x1a\xffE\x85\x90K\x14L\x0e^<\xa8\x18M\xf4\x94\x0d\x89\xeb\xc1\xf7\x7f\x8b\xcfK/\x0c\x8b\x87\x82\x99\xaa\xae\x9e\xee\x9a@\x14\xb8\xc1\x1b\x96\x89\x19n\xcb\x9a\xf6\xb0\x8d\x17\xac1\xc5Eb\x82U6\xa9J\xc3+\xbe\xd0\xef\xbc\x18\xd8\xc5\x1c\xef\xe8\x05\xae\xd1\xa4\xd0\x16\x0cp\x8a\xfd\xe4v\xb0\xc10\xd29-\x8a\xdb16x*LwX\x04j\x9c'y\x94\xf7\xdfD\x93\xbb\x04\x8eQw\x0d\x83\xec\xde\x1a~pUhu\xe0\x03\x0fI\xf6\xf1\x98\xe34x\xc6ajc|F\xe6\xfc\xdd\xc6\x86=\x9c\xe1\x12\x07\xe8e\xeck\x8c\x22\x89YFW\xfd\x13k\x95\xfa\x02[]r\x85{\x9c\xe4\x92\xe3\xfc\xf1y\x1b{\xd9\xa9\x87a\x8a\xcb\xa2p\x94Z \xfe\x06\x00\xefw\xc3A\xdf\x8f\xb4\xd9\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00V\x08\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\x00\x00\x00\x09pHYs\x00\x00\x0e\xc4\x00\x00\x0e\xc4\x01\x95+\x0e\x1b\x00\x00\x0aOiCCPPhotoshop ICC profile\x00\x00x\xda\x9dSgTS\xe9\x16=\xf7\xde\xf4BK\x88\x80\x94KoR\x15\x08 RB\x8b\x80\x14\x91&*!\x09\x10J\x88!\xa1\xd9\x15Q\xc1\x11EE\x04\x1b\xc8\xa0\x88\x03\x8e\x8e\x80\x8c\x15Q,\x0c\x8a\x0a\xd8\x07\xe4!\xa2\x8e\x83\xa3\x88\x8a\xca\xfb\xe1{\xa3k\xd6\xbc\xf7\xe6\xcd\xfe\xb5\xd7>\xe7\xac\xf3\x9d\xb3\xcf\x07\xc0\x08\x0c\x96H3Q5\x80\x0c\xa9B\x1e\x11\xe0\x83\xc7\xc4\xc6\xe1\xe4.@\x81\x0a$p\x00\x10\x08\xb3d!s\xfd#\x01\x00\xf8~<<+\x22\xc0\x07\xbe\x00\x01x\xd3\x0b\x08\x00\xc0M\x9b\xc00\x1c\x87\xff\x0f\xeaB\x99\x5c\x01\x80\x84\x01\xc0t\x918K\x08\x80\x14\x00@z\x8eB\xa6\x00@F\x01\x80\x9d\x98&S\x00\xa0\x04\x00`\xcbcb\xe3\x00P-\x00`'\x7f\xe6\xd3\x00\x80\x9d\xf8\x99{\x01\x00[\x94!\x15\x01\xa0\x91\x00 \x13e\x88D\x00h;\x00\xac\xcfV\x8aE\x00X0\x00\x14fK\xc49\x00\xd8-\x000IWfH\x00\xb0\xb7\x00\xc0\xce\x10\x0b\xb2\x00\x08\x0c\x000Q\x88\x85)\x00\x04{\x00`\xc8##x\x00\x84\x99\x00\x14F\xf2W<\xf1+\xae\x10\xe7*\x00\x00x\x99\xb2<\xb9$9E\x81[\x08-q\x07WW.\x1e(\xceI\x17+\x146a\x02a\x9a@.\xc2y\x99\x192\x814\x0f\xe0\xf3\xcc\x00\x00\xa0\x91\x15\x11\xe0\x83\xf3\xfdx\xce\x0e\xae\xce\xce6\x8e\xb6\x0e_-\xea\xbf\x06\xff\x22bb\xe3\xfe\xe5\xcf\xabp@\x00\x00\xe1t~\xd1\xfe,/\xb3\x1a\x80;\x06\x80m\xfe\xa2%\xee\x04h^\x0b\xa0u\xf7\x8bf\xb2\x0f@\xb5\x00\xa0\xe9\xdaW\xf3p\xf8~<\xdf5\x00\xb0j>\x01{\x91-\xa8]c\x03\xf6K'\x10Xt\xc0\xe2\xf7\x00\x00\xf2\xbbo\xc1\xd4(\x08\x03\x80h\x83\xe1\xcfw\xff\xef?\xfdG\xa0%\x00\x80fI\x92q\x00\x00^D$.T\xca\xb3?\xc7\x08\x00\x00D\xa0\x81*\xb0A\x1b\xf4\xc1\x18,\xc0\x06\x1c\xc1\x05\xdc\xc1\x0b\xfc`6\x84B$\xc4\xc2B\x10B\x0ad\x80\x1cr`)\xac\x82B(\x86\xcd\xb0\x1d*`/\xd4@\x1d4\xc0Qh\x86\x93p\x0e.\xc2U\xb8\x0e=p\x0f\xfaa\x08\x9e\xc1(\xbc\x81\x09\x04A\xc8\x08\x13a!\xda\x88\x01b\x8aX#\x8e\x08\x17\x99\x85\xf8!\xc1H\x04\x12\x8b$ \xc9\x88\x14Q\x22K\x915H1R\x8aT UH\x1d\xf2=r\x029\x87\x5cF\xba\x91;\xc8\x002\x82\xfc\x86\xbcG1\x94\x81\xb2Q=\xd4\x0c\xb5C\xb9\xa87\x1a\x84F\xa2\x0b\xd0dt1\x9a\x8f\x16\xa0\x9b\xd0r\xb4\x1a=\x8c6\xa1\xe7\xd0\xabh\x0f\xda\x8f>C\xc70\xc0\xe8\x18\x073\xc4l0.\xc6\xc3B\xb18,\x09\x93c\xcb\xb1\x22\xac\x0c\xab\xc6\x1a\xb0V\xac\x03\xbb\x89\xf5c\xcf\xb1w\x04\x12\x81E\xc0\x096\x04wB a\x1eAHXLXN\xd8H\xa8 \x1c$4\x11\xda\x097\x09\x03\x84Q\xc2'\x22\x93\xa8K\xb4&\xba\x11\xf9\xc4\x18b21\x87XH,#\xd6\x12\x8f\x13/\x10{\x88C\xc47$\x12\x89C2'\xb9\x90\x02I\xb1\xa4T\xd2\x12\xd2F\xd2nR#\xe9,\xa9\x9b4H\x1a#\x93\xc9\xdadk\xb2\x079\x94, +\xc8\x85\xe4\x9d\xe4\xc3\xe43\xe4\x1b\xe4!\xf2[\x0a\x9db@q\xa4\xf8S\xe2(R\xcajJ\x19\xe5\x10\xe54\xe5\x06e\x982AU\xa3\x9aR\xdd\xa8\xa1T\x115\x8fZB\xad\xa1\xb6R\xafQ\x87\xa8\x134u\x9a9\xcd\x83\x16IK\xa5\xad\xa2\x95\xd3\x1ah\x17h\xf7i\xaf\xe8t\xba\x11\xdd\x95\x1eN\x97\xd0W\xd2\xcb\xe9G\xe8\x97\xe8\x03\xf4w\x0c\x0d\x86\x15\x83\xc7\x88g(\x19\x9b\x18\x07\x18g\x19w\x18\xaf\x98L\xa6\x19\xd3\x8b\x19\xc7T071\xeb\x98\xe7\x99\x0f\x99oUX*\xb6*|\x15\x91\xca\x0a\x95J\x95&\x95\x1b*/T\xa9\xaa\xa6\xaa\xde\xaa\x0bU\xf3U\xcbT\x8f\xa9^S}\xaeFU3S\xe3\xa9\x09\xd4\x96\xabU\xaa\x9dP\xebS\x1bSg\xa9;\xa8\x87\xaag\xa8oT?\xa4~Y\xfd\x89\x06Y\xc3L\xc3OC\xa4Q\xa0\xb1_\xe3\xbc\xc6 \x0bc\x19\xb3x,!k\x0d\xab\x86u\x815\xc4&\xb1\xcd\xd9|v*\xbb\x98\xfd\x1d\xbb\x8b=\xaa\xa9\xa19C3J3W\xb3R\xf3\x94f?\x07\xe3\x98q\xf8\x9ctN\x09\xe7(\xa7\x97\xf3~\x8a\xde\x14\xef)\xe2)\x1b\xa64L\xb91e\x5ck\xaa\x96\x97\x96X\xabH\xabQ\xabG\xeb\xbd6\xae\xed\xa7\x9d\xa6\xbdE\xbbY\xfb\x81\x0eA\xc7J'\x5c'Gg\x8f\xce\x05\x9d\xe7S\xd9S\xdd\xa7\x0a\xa7\x16M=:\xf5\xae.\xaak\xa5\x1b\xa1\xbbDw\xbfn\xa7\xee\x98\x9e\xbe^\x80\x9eLo\xa7\xdey\xbd\xe7\xfa\x1c}/\xfdT\xfdm\xfa\xa7\xf5G\x0cX\x06\xb3\x0c$\x06\xdb\x0c\xce\x18<\xc55qo<\x1d/\xc7\xdb\xf1QC]\xc3@C\xa5a\x95a\x97\xe1\x84\x91\xb9\xd1<\xa3\xd5F\x8dF\x0f\x8ci\xc6\x5c\xe3$\xe3m\xc6m\xc6\xa3&\x06&!&KM\xeaM\xee\x9aRM\xb9\xa6)\xa6;L;L\xc7\xcd\xcc\xcd\xa2\xcd\xd6\x995\x9b=1\xd72\xe7\x9b\xe7\x9b\xd7\x9b\xdf\xb7`ZxZ,\xb6\xa8\xb6\xb8eI\xb2\xe4Z\xa6Y\xee\xb6\xbcn\x85Z9Y\xa5XUZ]\xb3F\xad\x9d\xad%\xd6\xbb\xad\xbb\xa7\x11\xa7\xb9N\x93N\xab\x9e\xd6g\xc3\xb0\xf1\xb6\xc9\xb6\xa9\xb7\x19\xb0\xe5\xd8\x06\xdb\xae\xb6m\xb6}agb\x17g\xb7\xc5\xae\xc3\xee\x93\xbd\x93}\xba}\x8d\xfd=\x07\x0d\x87\xd9\x0e\xab\x1dZ\x1d~s\xb4r\x14:V:\xde\x9a\xce\x9c\xee?}\xc5\xf4\x96\xe9/gX\xcf\x10\xcf\xd83\xe3\xb6\x13\xcb)\xc4i\x9dS\x9b\xd3Gg\x17g\xb9s\x83\xf3\x88\x8b\x89K\x82\xcb.\x97>.\x9b\x1b\xc6\xdd\xc8\xbd\xe4Jt\xf5q]\xe1z\xd2\xf5\x9d\x9b\xb3\x9b\xc2\xed\xa8\xdb\xaf\xee6\xeei\xee\x87\xdc\x9f\xcc4\x9f)\x9eY3s\xd0\xc3\xc8C\xe0Q\xe5\xd1?\x0b\x9f\x950k\xdf\xac~OCO\x81g\xb5\xe7#/c/\x91W\xad\xd7\xb0\xb7\xa5w\xaa\xf7a\xef\x17>\xf6>r\x9f\xe3>\xe3<7\xde2\xdeY_\xcc7\xc0\xb7\xc8\xb7\xcbO\xc3o\x9e_\x85\xdfC\x7f#\xffd\xffz\xff\xd1\x00\xa7\x80%\x01g\x03\x89\x81A\x81[\x02\xfb\xf8z|!\xbf\x8e?:\xdbe\xf6\xb2\xd9\xedA\x8c\xa0\xb9A\x15A\x8f\x82\xad\x82\xe5\xc1\xad!h\xc8\xec\x90\xad!\xf7\xe7\x98\xce\x91\xcei\x0e\x85P~\xe8\xd6\xd0\x07a\xe6a\x8b\xc3~\x0c'\x85\x87\x85W\x86?\x8ep\x88X\x1a\xd11\x975w\xd1\xdcCs\xdfD\xfaD\x96D\xde\x9bg1O9\xaf-J5*>\xaa.j<\xda7\xba4\xba?\xc6.fY\xcc\xd5X\x9dXIlK\x1c9.*\xae6nl\xbe\xdf\xfc\xed\xf3\x87\xe2\x9d\xe2\x0b\xe3{\x17\x98/\xc8]py\xa1\xce\xc2\xf4\x85\xa7\x16\xa9.\x12,:\x96@L\x88N8\x94\xf0A\x10*\xa8\x16\x8c%\xf2\x13w%\x8e\x0ay\xc2\x1d\xc2g\x22/\xd16\xd1\x88\xd8C\x5c*\x1eN\xf2H*Mz\x92\xec\x91\xbc5y$\xc53\xa5,\xe5\xb9\x84'\xa9\x90\xbcL\x0dL\xdd\x9b:\x9e\x16\x9av m2=:\xbd1\x83\x92\x91\x90qB\xaa!M\x93\xb6g\xeag\xe6fv\xcb\xace\x85\xb2\xfe\xc5n\x8b\xb7/\x1e\x95\x07\xc9k\xb3\x90\xac\x05Y-\x0a\xb6B\xa6\xe8TZ(\xd7*\x07\xb2geWf\xbf\xcd\x89\xca9\x96\xab\x9e+\xcd\xed\xcc\xb3\xca\xdb\x907\x9c\xef\x9f\xff\xed\x12\xc2\x12\xe1\x92\xb6\xa5\x86KW-\x1dX\xe6\xbd\xacj9\xb2\x15\x89\x8a\xae\x14\xdb\x17\x97\x15\x7f\xd8(\xdcx\xe5\x1b\x87o\xca\xbf\x99\xdc\x94\xb4\xa9\xab\xc4\xb9d\xcff\xd2f\xe9\xe6\xde-\x9e[\x0e\x96\xaa\x97\xe6\x97\x0en\x0d\xd9\xda\xb4\x0d\xdfV\xb4\xed\xf5\xf6E\xdb/\x97\xcd(\xdb\xbb\x83\xb6C\xb9\xa3\xbf<\xb8\xbce\xa7\xc9\xce\xcd;?T\xa4T\xf4T\xfaT6\xee\xd2\xdd\xb5a\xd7\xf8n\xd1\xee\x1b{\xbc\xf64\xec\xd5\xdb[\xbc\xf7\xfd>\xc9\xbe\xdbU\x01UM\xd5f\xd5e\xfbI\xfb\xb3\xf7?\xae\x89\xaa\xe9\xf8\x96\xfbm]\xadNmq\xed\xc7\x03\xd2\x03\xfd\x07#\x0e\xb6\xd7\xb9\xd4\xd5\x1d\xd2=TR\x8f\xd6+\xebG\x0e\xc7\x1f\xbe\xfe\x9d\xefw-\x0d6\x0dU\x8d\x9c\xc6\xe2#pDy\xe4\xe9\xf7\x09\xdf\xf7\x1e\x0d:\xdav\x8c{\xac\xe1\x07\xd3\x1fv\x1dg\x1d/jB\x9a\xf2\x9aF\x9bS\x9a\xfb[b[\xbaO\xcc>\xd1\xd6\xea\xdez\xfcG\xdb\x1f\x0f\x9c499\xe2?r\xfd\xe9\xfc\xa7C\xcfd\xcf&\x9e\x17\xfe\xa2\xfe\xcb\xae\x17\x16/~\xf8\xd5\xeb\xd7\xce\xd1\x98\xd1\xa1\x97\xf2\x97\x93\xbfm|\xa5\xfd\xea\xc0\xeb\x19\xaf\xdb\xc6\xc2\xc6\x1e\xbe\xc9x31^\xf4V\xfb\xed\xc1w\xdcw\x1d\xef\xa3\xdf\x0fO\xe4| \x7f(\xffh\xf9\xb1\xf5S\xd0\xa7\xfb\x93\x19\x93\x93\xff\x04\x03\x98\xf3\xfcc3-\xdb\x00\x00A\x05iTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2013-05-12T21:58:38+04:00\x0a 2014-05-13T11:06+04:00\x0a 2014-05-13T11:06+04:00\x0a image/png\x0a xmp.iid:90266b52-84a9-2c4f-afb6-b1c65e09b7fb\x0a xmp.did:E8A7C96826BBE211806D84C2D957BF50\x0a xmp.did:E8A7C96826BBE211806D84C2D957BF50\x0a \x0a \x0a \x0a created\x0a xmp.iid:E8A7C96826BBE211806D84C2D957BF50\x0a 2013-05-12T21:58:38+04:00\x0a Adobe Photoshop CS6 (Windows)\x0a \x0a \x0a saved\x0a xmp.iid:c1161d27-f700-274f-93d8-153843ea278c\x0a 2014-05-13T10:08:20+04:00\x0a Adobe Photoshop CC (Windows)\x0a /\x0a \x0a \x0a saved\x0a xmp.iid:43a23237-6cf6-5941-a4de-3cd947c17736\x0a 2014-05-13T11:06+04:00\x0a Adobe Photoshop CC (Windows)\x0a /\x0a \x0a \x0a converted\x0a from application/vnd.adobe.photoshop to image/png\x0a \x0a \x0a derived\x0a converted from application/vnd.adobe.photoshop to image/png\x0a \x0a \x0a saved\x0a xmp.iid:90266b52-84a9-2c4f-afb6-b1c65e09b7fb\x0a 2014-05-13T11:06+04:00\x0a Adobe Photoshop CC (Windows)\x0a /\x0a \x0a \x0a \x0a \x0a xmp.iid:43a23237-6cf6-5941-a4de-3cd947c17736\x0a xmp.did:E8A7C96826BBE211806D84C2D957BF50\x0a xmp.did:E8A7C96826BBE211806D84C2D957BF50\x0a \x0a 3\x0a sRGB IEC61966-2.1\x0a 1\x0a 960000/10000\x0a 960000/10000\x0a 2\x0a 1\x0a 64\x0a 64\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0aD?\xa7~\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x0a\x22IDATx\xda\xdc\x9by\x8c\xdce\x19\xc7?s\xec\xbd\xdd\xed\xf6\xd8\x85\xb4\x14\xa8\xb8\xc5\xd2C%E\xac\xa0\x82\x84(VE\xc0@c\xa2\xa0Q\x9azWc\xa5\x8ah\xd4\xe0\xc1*T\x11\x0f\xbcm\x8c\x91\x9a\x80-\xe0U\xb4H]\x89Z1\xdb\x9bV[z\xd0\xa5\xdb\xed\xb5Gwg\xe6\xf1\x8f\xdf\xf7M\xdf\xfe\x98\xeb7G\xbb\xeb\x9bLvf\xf6\xf7\x9by\x9f\xef\xf3<\xdf\xe7z'ff\x8c\x91\xd5\x0c\xbc\x02\xd8\x00\xa4\xcf\xd4\x97\xc6\x19;\xcb\x80\x9b\x81\x8f\x01\x13\xff\xdf\x00\x88\x15q\xcd \xf0\x1f\xe0\x1d\xc0\xf7\x80\xcb\xce\xc4\xfebUt\x81V`!0W\x1a\xcd\x00\xfd\x12r\x17\xb0G\xaf\xfd\x0d\xcc\x04V\x01\xe7\x03\xbd\xc0\xc3\xc0O\x81\x9d\xd5\xdad\xb2\xcaZ\xef\x04\xde*\x81\xea\x81\x140\x0c\x0c\x00\x87\x81\xa7\x81u\xc0\xdf%\xf0.\xe0I\xe0\xa5\xba\xf7v\xe0:`\x0d\xb0\x1a\xd8\x06\x8c\x8e\x17\x0bp.\xf6^\xe0\x93\xc0y@\x8d4n\x12d\x108\x02\x1c\x00\xd6\x02\x8f\x00W\x01\x9f\x03&\xe93F\x80\xa3\xc0\xf3\x02l5\xd0\xad\xf7\xc6<\x00\x0e\x84\x9f\x00o\x13\xd3\xc7B\xc4\x97\x96\x90\xc7\x80\xe3\xb2\x92\x0bd1\xee\xda\x8c\xde\x1f\x00\x0e\xc9%V\x03\x8f\x02\xfb\xc7\xa2\x0b4\x88\x03\x1a\x80\x84L;\x93\xc3M\x92\xba\xa6\x1e\x98\xe2\x81\x16\x0b\x81X+\x0b\x9a\x00\x9c\x0b\x5c\x02\xdc*\xce\xf8\x95\x809\xab\x16P\x0f\xcc\x07\xae\x06^\x05\x9c\xa3M\xd7\x01m\xc0d\xbd\xaeT\xc8\xcc\x00'%\xf8f\xe0\xeb\xc0\x1fs\x00]U\x00&\x03W*\x86\xcf\x95\x16\x9b\xa5\xad\x98\xf7\x88\x17\x19\x0e\xa3\x02\x91\x96k\xec\x915|[\xaeT5\x00\xea\x81v\x85\xac\x85\xc0\xb5\xc0\x0c\x91V\xa3\xcc9V\x05a\xf3-g\x0d\xbd\xc0\x1f\x80;E\xacU\x01\xa0\x11X v\x7f\xa5\xd8\xdd\x17\xfclf\x92)\xa0\x0fx\x0aX&\xab\xa8\x9a\x0bL\x06\xee\x05\xde.\x00\xce\xa6\xf0\xfeJ)\xc7\xf8\x0b\xf0\x01\x85\xcf\x8a\xa7\xc2S\x81\xeb\x81Y\xd2\xfcXZI\xb9\xe3B\xe0\x8b\xe2\xa3\x8aY@\xbd2\xb3%\xca\xd6\xa6*\xd4\xc5\x19{k\x14\xd8\x07<\x00\xdc\x93+:D\x01`\x16\xf0q\xe0u\x8a\xc3\x0dc\xc0\xef\x0bq\xc20\xb0\x03\xf8\x10\xb0\xbeT\x00b\xc0\x1b\x81\xcfH\xeb\xad^\x88\x1b\xeb+\xa3\x90\xf8'\xe0]\xca6#q@\x1c\xb8\x0d\xb8[1\xde%3\xe3Ax\xb7\xff&`\x9eR\xf1H$\x18\x13j\xcb\xa4\xf9\xe61\xea\xeb\x85VB\x5c\xf5NYo\xd1\x00\xbcE\xdd\x99\x0b\xe5\xef1\xc6\xe7\x8a\x89\xbc_\xa2\xc8P\x14\x00s\x81;\x94\xed\x8dg\xe1}+\x98$\xa5&\x0a\x01\xd0\x0c|Zf\x7f6\x13\x1cW\xf0\xa4\x95\xdc\xa4\xf4<\xad\xf7-\xa2\x154)sm/T\x0e\xdf\xa8~\x5ck\x08 \xf3\x1e\xb1*\xe5\xfb\xe6\xa5\xb4'\xd50\x19R\xbf\xc0\xb4\x9f:)\xa6Q\xcf\x13\x1e\xe3g\xf2\x14^IU\xa5\xb3\x94\x1dZ6\x00\xa6\x02\xef\x16J\x09O\x0b\xae\x955\xa8\xe7\x0d@K\x85\xc3aZB\x1fQQ\xb3E\xad\xb2\x1d\xca\xefG\xe5\xcb\x1d*\xbb\xaf\xd4\xdf\x16\xed!\x05\xfcW24f\x89V1Y\xf7\x5cu\x94\x86\xb3\x01p\x9d\xfc\xbeN\x82\x0f)\xaf>\x08\xfc\x0bxF\x05\xc6\xe5\xca\xb3\x93\x15\x00\xc0$x\xbf\x04\xf8\xa5:={\xf4~\xb6\xf5\x90\x08\xedG\x12*!\x00z\x08\x9a\xae\xb7\x08\x88\xda\x10\x00\x0d\xb2\x80\x96l\x004\xa9\xb0\x99(\x93\xeb\x93\x16~\x06K]gd\xba\xfdRT\xbb\x5c\xc7\xb5\xbe\xd6\x8a0\xb7\xea:'\x9b?\x8a\x1b\x06\x9e\x05\x9e\x8b\xd2\x10\xb9\xa2\x02\xc4\xe7\x008N0\xb9\xe9S\x87\xe9Ri2\x9e\xa7\xb9\xd9A0pAY\xe2z\x99\xfeDE\x90\xeb\x15\xa1\x1e\x06\x96*\x8bL{]\xeb\x0e\xed=#\xed?\xea2\xc0|\xc5\x90\x9f5-\xe0\xc5\x03\xcdR\xc9\xef\xa82\xcaZ`\xb1\xb4\x98,P\xc1MTZ\xdbM0F\xbf_\xae3\x9f`\x18\xf3\x15\xfd\x7f\xab8\xaa\x09\xf8\xb3@\xbd]\xc4\x9d\x90\xf5\xed\x03~\xffb\xd5\x98\xe5z\xb4\x9b\xd9_\xcdl\xd8\xca_\xc3f\xf6\xb4>s\x9e\x99=cf'\x8b\xb8/mf\xc7\xcc\xecofv\x95\xf65\xcf\xcc\xd6\x9a\xd9n3\xeb\xd7\xe3\xa0\x99\xf5\x98\xd9R]s\x8b\x99m\xd6\xf7\xa6\xccl\x9f\x99-\xcf&g>\x17\xe8\xf0\x0a\x8dr\xcd?%\x0d\x1cQ\x92\xd3Fq\x93i\xd7\xd3\xbb\x98`\x08\xb3BI\xd12\xe5\x01=^\xad?\xa0t\xfa&\xe0S\xb2\x90\x1a1\xfeN\xe0\xe7\xb9\xfc,\xd7:\xb7\x82\xdd g\x821\xf9~.\xb7\xca\xd6spd\xd6\xa9d\xe9f\x09~@\x05Z\xa7\x94\xb4\x93`\x5cw\x83R\xe6\x06o6\xb0R\x7f#\x010\xcd+$2e4B\x9c\x05\x1c\x92\xa6fr\xfa\xe1\x07\xff\x1a\xd7s\x18\x91\xe0\x0d\x8a\x185\xdaK\xbbB\xf2\x05\x22\xbb\xa4>\x0b\xe0M^\xda^\xeb%]kD\x92D\x05\xa0C\xff\x1fV\x865\xa4\x0f\x9fTB)\xecz\x0b-\xba?\x11\xca\x0f\x06\xa4\xd1\x8d*\xc2\xf6K\xf8y\x04\x83\x98\xf3t_\x9d\x1e\xb5\x9eB\xdcj\xf1\xc8\xd3\x91n7\xf0e\xf2\x9c+J\xe6a\xe0\xa9\xd2\xc6^\xd5\xea\xeb\x14{?L\xf4s|\xee$\xc8\x84\x10xi\xc5\xf6\x7fj\xa3\x1bBM\x90Ur\xc5\xc5\xc0{\xa4\xf9\xc6\x1cV\xe8\x7f\xe6Q\xd5\x19\xcb)pr$\x99\xe7\xfd\x09\x0a[]^\x81\xb4(\xe4\x0eQ\xba\xb2m\xd2j2\x14\x1a\xd7+\xa6\xe7j\x84\x1c\x00\xbe\xa1\x04\xe6\x0bJ\xccr\x9d4I\x89h7\xaa\xcc~\xb6\x18\x96\xcd\xb6\xea\x944,\xf3\x84\xafQM\x10u2\x14\xd3\xbd\x1d\xd2^\xd2\xcb\xcc\xb6\x8b\xb1\xf7\x16\xc1#\xeePT\xb6\xb4\xdde\x9a\x07\x95l-\xc9Q\xd8\x15\x0d\xc0\xa0\x88\xc3\x9f\xa55x\x15a\xd4\xc8P#\xf3\x9d\xe2ef}*\x8avD\xe0\x91Gd5\x96E\xf3\x07\xe52K\x09\x0ee\x15\xb5\x92y\xbe\x8c,M\x91R\xc6c\xce\xff\xa7\x09\xc0\x8c\xb4\xf5\x1c\xf0\x9b\x88\x9f\xb5_\xca\xc9\x84\x9a\x1c\xc7\xc5Q\x9f\xcd\xd3H\x8dd\x01\xb9\xc0*\xf5\xa0SB,=\xdb\x0bu\xdd\xc0\x0b%\x80\x19\xfe~\x17\xeb\xbf\x1bUx8\xb3\x87\xa5\x1b\x81\xd7(\x17\x18\x02\xfe\x11q\xba\xe3\x92\xb3\xba,Q\xe4q\x82S\xa4T\x13\x007\x9a\xb2\x12\x01\xa8SJ\xdb\xe1\xf9l\xd4u\x99\xa2S\x5c\xa6\x7fB$\xbd\x92\x12\x7fc\x10\xe5\xa4\xe8\x90H\xb1\xd4\x1f3\xc4=\x17\xb2\x12\xcc\xb5E\x8d\x8ff\xdd?\xa8(rW\x91\xb3\x84\xb2-`P\x0d\x8d\x91\x12\xad \x1c\x16[#\xde\xf7Z\xe5\x00q\xc5\xfaM\x12\xfe\xc9r|3\x0a\x00i\x82\xd1\xd8@\x05\x00h\x94;\x14\xbb&\x10\x1cp\xc8\xa8\xe8y\x9c`4\xf7X\xb9\xe4\x14\xf5\xb0t\xb7\xd0\x9fZ\x06\x81\xba\xf2\xf5\xf5\xc0w\x04h\xa15]\xe0w\x8b<7\x16y_\xc5\x01\xd8\xa2\xd6\xd4\x0c/\xa1q\x8dGw\xea;^\x04\x00uj^^\x93\xafR\xf3\xd6V=*~\xb6?\xaa\x16Oh\xc3\x87\xc5\x09\xfb\xe4\x83\x8fy\xfd\xf6T\x91yA\xbb\xea\xfb\x8e\x22K\xea\xea\xfc\xb0!OK,\xd7\xe3\x1c3[\xa7\xb6\xd6\xfb\xcd\xac\xd9\xccj\xccl\x8e\x99=df/\xa8\x0dUh\xa5\xcc\xec\x80\x99\xddkf\xf5%\xec\xa3\x22\x8fR\xcf\x0a/\x06.\x02\xbe\x14J\x9bg\x00?\xe6\xd4d\xb6\x90\x85\xb9N\xd1\x0f\x80\xaf\xe9\xf5\x19]\xa5\x02\xe0:\xb0\x87r\x84\xab\xfb\xd4\xaa*\xd4RsU\xdc^\xf5\xec\xba\x88p\xd6\xfflp\x80\x9f\x14\xe5j4\xac\x07\xbe\xcf\xa9\xb9\x9e\x15 \xc4Z\xb1\xfcmj|^4\x1e,\xa0\xd0\xaa'8Kp#\x85\xfb\xff~O\xf0\xa8\x9a\x18\x0f\xa8R\xec\x1f\xaf\x00@0\x99\xf9&\xc1X}\x92\x97L\xc5Ci\xb1\xdf\xce\xcax\xd6\xb5\x8d\xe0\xc7PO\x88'\x86\xc7\x1b\x00\xa8\x07\xd0%R\x1c!8\x17\xd0\xce\xa9\xe1\xa6;\xcd\x95\x08\xd5\x09i\x01\xd1\xaf\xa2i\x17A+|\x9b\xfa\x08{UJ\xa7\xc7:\x00\x10\xfcz\xecV\x82\xf3\x00\x9b\xd5P\xed$8o4\x9b`\x02<\x85\xd3\x7fv\xe3\x12\xac\x13\x02`\xb7\xee\xdd\xa4T\xb8\x8f\x0a\xfd\xc2\xdf\x807\x93\x0f\xf5\x1e\x9b<\x8bp\x07\x1f\xddA\xc9\x13\xaa@\x07\xaa\x15\x22\xff7\x00\x00\xce|\xf6T\x0e\xbbG\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00F~\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x0aOiCCPPhotoshop ICC profile\x00\x00x\xda\x9dSgTS\xe9\x16=\xf7\xde\xf4BK\x88\x80\x94KoR\x15\x08 RB\x8b\x80\x14\x91&*!\x09\x10J\x88!\xa1\xd9\x15Q\xc1\x11EE\x04\x1b\xc8\xa0\x88\x03\x8e\x8e\x80\x8c\x15Q,\x0c\x8a\x0a\xd8\x07\xe4!\xa2\x8e\x83\xa3\x88\x8a\xca\xfb\xe1{\xa3k\xd6\xbc\xf7\xe6\xcd\xfe\xb5\xd7>\xe7\xac\xf3\x9d\xb3\xcf\x07\xc0\x08\x0c\x96H3Q5\x80\x0c\xa9B\x1e\x11\xe0\x83\xc7\xc4\xc6\xe1\xe4.@\x81\x0a$p\x00\x10\x08\xb3d!s\xfd#\x01\x00\xf8~<<+\x22\xc0\x07\xbe\x00\x01x\xd3\x0b\x08\x00\xc0M\x9b\xc00\x1c\x87\xff\x0f\xeaB\x99\x5c\x01\x80\x84\x01\xc0t\x918K\x08\x80\x14\x00@z\x8eB\xa6\x00@F\x01\x80\x9d\x98&S\x00\xa0\x04\x00`\xcbcb\xe3\x00P-\x00`'\x7f\xe6\xd3\x00\x80\x9d\xf8\x99{\x01\x00[\x94!\x15\x01\xa0\x91\x00 \x13e\x88D\x00h;\x00\xac\xcfV\x8aE\x00X0\x00\x14fK\xc49\x00\xd8-\x000IWfH\x00\xb0\xb7\x00\xc0\xce\x10\x0b\xb2\x00\x08\x0c\x000Q\x88\x85)\x00\x04{\x00`\xc8##x\x00\x84\x99\x00\x14F\xf2W<\xf1+\xae\x10\xe7*\x00\x00x\x99\xb2<\xb9$9E\x81[\x08-q\x07WW.\x1e(\xceI\x17+\x146a\x02a\x9a@.\xc2y\x99\x192\x814\x0f\xe0\xf3\xcc\x00\x00\xa0\x91\x15\x11\xe0\x83\xf3\xfdx\xce\x0e\xae\xce\xce6\x8e\xb6\x0e_-\xea\xbf\x06\xff\x22bb\xe3\xfe\xe5\xcf\xabp@\x00\x00\xe1t~\xd1\xfe,/\xb3\x1a\x80;\x06\x80m\xfe\xa2%\xee\x04h^\x0b\xa0u\xf7\x8bf\xb2\x0f@\xb5\x00\xa0\xe9\xdaW\xf3p\xf8~<\xdf5\x00\xb0j>\x01{\x91-\xa8]c\x03\xf6K'\x10Xt\xc0\xe2\xf7\x00\x00\xf2\xbbo\xc1\xd4(\x08\x03\x80h\x83\xe1\xcfw\xff\xef?\xfdG\xa0%\x00\x80fI\x92q\x00\x00^D$.T\xca\xb3?\xc7\x08\x00\x00D\xa0\x81*\xb0A\x1b\xf4\xc1\x18,\xc0\x06\x1c\xc1\x05\xdc\xc1\x0b\xfc`6\x84B$\xc4\xc2B\x10B\x0ad\x80\x1cr`)\xac\x82B(\x86\xcd\xb0\x1d*`/\xd4@\x1d4\xc0Qh\x86\x93p\x0e.\xc2U\xb8\x0e=p\x0f\xfaa\x08\x9e\xc1(\xbc\x81\x09\x04A\xc8\x08\x13a!\xda\x88\x01b\x8aX#\x8e\x08\x17\x99\x85\xf8!\xc1H\x04\x12\x8b$ \xc9\x88\x14Q\x22K\x915H1R\x8aT UH\x1d\xf2=r\x029\x87\x5cF\xba\x91;\xc8\x002\x82\xfc\x86\xbcG1\x94\x81\xb2Q=\xd4\x0c\xb5C\xb9\xa87\x1a\x84F\xa2\x0b\xd0dt1\x9a\x8f\x16\xa0\x9b\xd0r\xb4\x1a=\x8c6\xa1\xe7\xd0\xabh\x0f\xda\x8f>C\xc70\xc0\xe8\x18\x073\xc4l0.\xc6\xc3B\xb18,\x09\x93c\xcb\xb1\x22\xac\x0c\xab\xc6\x1a\xb0V\xac\x03\xbb\x89\xf5c\xcf\xb1w\x04\x12\x81E\xc0\x096\x04wB a\x1eAHXLXN\xd8H\xa8 \x1c$4\x11\xda\x097\x09\x03\x84Q\xc2'\x22\x93\xa8K\xb4&\xba\x11\xf9\xc4\x18b21\x87XH,#\xd6\x12\x8f\x13/\x10{\x88C\xc47$\x12\x89C2'\xb9\x90\x02I\xb1\xa4T\xd2\x12\xd2F\xd2nR#\xe9,\xa9\x9b4H\x1a#\x93\xc9\xdadk\xb2\x079\x94, +\xc8\x85\xe4\x9d\xe4\xc3\xe43\xe4\x1b\xe4!\xf2[\x0a\x9db@q\xa4\xf8S\xe2(R\xcajJ\x19\xe5\x10\xe54\xe5\x06e\x982AU\xa3\x9aR\xdd\xa8\xa1T\x115\x8fZB\xad\xa1\xb6R\xafQ\x87\xa8\x134u\x9a9\xcd\x83\x16IK\xa5\xad\xa2\x95\xd3\x1ah\x17h\xf7i\xaf\xe8t\xba\x11\xdd\x95\x1eN\x97\xd0W\xd2\xcb\xe9G\xe8\x97\xe8\x03\xf4w\x0c\x0d\x86\x15\x83\xc7\x88g(\x19\x9b\x18\x07\x18g\x19w\x18\xaf\x98L\xa6\x19\xd3\x8b\x19\xc7T071\xeb\x98\xe7\x99\x0f\x99oUX*\xb6*|\x15\x91\xca\x0a\x95J\x95&\x95\x1b*/T\xa9\xaa\xa6\xaa\xde\xaa\x0bU\xf3U\xcbT\x8f\xa9^S}\xaeFU3S\xe3\xa9\x09\xd4\x96\xabU\xaa\x9dP\xebS\x1bSg\xa9;\xa8\x87\xaag\xa8oT?\xa4~Y\xfd\x89\x06Y\xc3L\xc3OC\xa4Q\xa0\xb1_\xe3\xbc\xc6 \x0bc\x19\xb3x,!k\x0d\xab\x86u\x815\xc4&\xb1\xcd\xd9|v*\xbb\x98\xfd\x1d\xbb\x8b=\xaa\xa9\xa19C3J3W\xb3R\xf3\x94f?\x07\xe3\x98q\xf8\x9ctN\x09\xe7(\xa7\x97\xf3~\x8a\xde\x14\xef)\xe2)\x1b\xa64L\xb91e\x5ck\xaa\x96\x97\x96X\xabH\xabQ\xabG\xeb\xbd6\xae\xed\xa7\x9d\xa6\xbdE\xbbY\xfb\x81\x0eA\xc7J'\x5c'Gg\x8f\xce\x05\x9d\xe7S\xd9S\xdd\xa7\x0a\xa7\x16M=:\xf5\xae.\xaak\xa5\x1b\xa1\xbbDw\xbfn\xa7\xee\x98\x9e\xbe^\x80\x9eLo\xa7\xdey\xbd\xe7\xfa\x1c}/\xfdT\xfdm\xfa\xa7\xf5G\x0cX\x06\xb3\x0c$\x06\xdb\x0c\xce\x18<\xc55qo<\x1d/\xc7\xdb\xf1QC]\xc3@C\xa5a\x95a\x97\xe1\x84\x91\xb9\xd1<\xa3\xd5F\x8dF\x0f\x8ci\xc6\x5c\xe3$\xe3m\xc6m\xc6\xa3&\x06&!&KM\xeaM\xee\x9aRM\xb9\xa6)\xa6;L;L\xc7\xcd\xcc\xcd\xa2\xcd\xd6\x995\x9b=1\xd72\xe7\x9b\xe7\x9b\xd7\x9b\xdf\xb7`ZxZ,\xb6\xa8\xb6\xb8eI\xb2\xe4Z\xa6Y\xee\xb6\xbcn\x85Z9Y\xa5XUZ]\xb3F\xad\x9d\xad%\xd6\xbb\xad\xbb\xa7\x11\xa7\xb9N\x93N\xab\x9e\xd6g\xc3\xb0\xf1\xb6\xc9\xb6\xa9\xb7\x19\xb0\xe5\xd8\x06\xdb\xae\xb6m\xb6}agb\x17g\xb7\xc5\xae\xc3\xee\x93\xbd\x93}\xba}\x8d\xfd=\x07\x0d\x87\xd9\x0e\xab\x1dZ\x1d~s\xb4r\x14:V:\xde\x9a\xce\x9c\xee?}\xc5\xf4\x96\xe9/gX\xcf\x10\xcf\xd83\xe3\xb6\x13\xcb)\xc4i\x9dS\x9b\xd3Gg\x17g\xb9s\x83\xf3\x88\x8b\x89K\x82\xcb.\x97>.\x9b\x1b\xc6\xdd\xc8\xbd\xe4Jt\xf5q]\xe1z\xd2\xf5\x9d\x9b\xb3\x9b\xc2\xed\xa8\xdb\xaf\xee6\xeei\xee\x87\xdc\x9f\xcc4\x9f)\x9eY3s\xd0\xc3\xc8C\xe0Q\xe5\xd1?\x0b\x9f\x950k\xdf\xac~OCO\x81g\xb5\xe7#/c/\x91W\xad\xd7\xb0\xb7\xa5w\xaa\xf7a\xef\x17>\xf6>r\x9f\xe3>\xe3<7\xde2\xdeY_\xcc7\xc0\xb7\xc8\xb7\xcbO\xc3o\x9e_\x85\xdfC\x7f#\xffd\xffz\xff\xd1\x00\xa7\x80%\x01g\x03\x89\x81A\x81[\x02\xfb\xf8z|!\xbf\x8e?:\xdbe\xf6\xb2\xd9\xedA\x8c\xa0\xb9A\x15A\x8f\x82\xad\x82\xe5\xc1\xad!h\xc8\xec\x90\xad!\xf7\xe7\x98\xce\x91\xcei\x0e\x85P~\xe8\xd6\xd0\x07a\xe6a\x8b\xc3~\x0c'\x85\x87\x85W\x86?\x8ep\x88X\x1a\xd11\x975w\xd1\xdcCs\xdfD\xfaD\x96D\xde\x9bg1O9\xaf-J5*>\xaa.j<\xda7\xba4\xba?\xc6.fY\xcc\xd5X\x9dXIlK\x1c9.*\xae6nl\xbe\xdf\xfc\xed\xf3\x87\xe2\x9d\xe2\x0b\xe3{\x17\x98/\xc8]py\xa1\xce\xc2\xf4\x85\xa7\x16\xa9.\x12,:\x96@L\x88N8\x94\xf0A\x10*\xa8\x16\x8c%\xf2\x13w%\x8e\x0ay\xc2\x1d\xc2g\x22/\xd16\xd1\x88\xd8C\x5c*\x1eN\xf2H*Mz\x92\xec\x91\xbc5y$\xc53\xa5,\xe5\xb9\x84'\xa9\x90\xbcL\x0dL\xdd\x9b:\x9e\x16\x9av m2=:\xbd1\x83\x92\x91\x90qB\xaa!M\x93\xb6g\xeag\xe6fv\xcb\xace\x85\xb2\xfe\xc5n\x8b\xb7/\x1e\x95\x07\xc9k\xb3\x90\xac\x05Y-\x0a\xb6B\xa6\xe8TZ(\xd7*\x07\xb2geWf\xbf\xcd\x89\xca9\x96\xab\x9e+\xcd\xed\xcc\xb3\xca\xdb\x907\x9c\xef\x9f\xff\xed\x12\xc2\x12\xe1\x92\xb6\xa5\x86KW-\x1dX\xe6\xbd\xacj9\xb2\x15\x89\x8a\xae\x14\xdb\x17\x97\x15\x7f\xd8(\xdcx\xe5\x1b\x87o\xca\xbf\x99\xdc\x94\xb4\xa9\xab\xc4\xb9d\xcff\xd2f\xe9\xe6\xde-\x9e[\x0e\x96\xaa\x97\xe6\x97\x0en\x0d\xd9\xda\xb4\x0d\xdfV\xb4\xed\xf5\xf6E\xdb/\x97\xcd(\xdb\xbb\x83\xb6C\xb9\xa3\xbf<\xb8\xbce\xa7\xc9\xce\xcd;?T\xa4T\xf4T\xfaT6\xee\xd2\xdd\xb5a\xd7\xf8n\xd1\xee\x1b{\xbc\xf64\xec\xd5\xdb[\xbc\xf7\xfd>\xc9\xbe\xdbU\x01UM\xd5f\xd5e\xfbI\xfb\xb3\xf7?\xae\x89\xaa\xe9\xf8\x96\xfbm]\xadNmq\xed\xc7\x03\xd2\x03\xfd\x07#\x0e\xb6\xd7\xb9\xd4\xd5\x1d\xd2=TR\x8f\xd6+\xebG\x0e\xc7\x1f\xbe\xfe\x9d\xefw-\x0d6\x0dU\x8d\x9c\xc6\xe2#pDy\xe4\xe9\xf7\x09\xdf\xf7\x1e\x0d:\xdav\x8c{\xac\xe1\x07\xd3\x1fv\x1dg\x1d/jB\x9a\xf2\x9aF\x9bS\x9a\xfb[b[\xbaO\xcc>\xd1\xd6\xea\xdez\xfcG\xdb\x1f\x0f\x9c499\xe2?r\xfd\xe9\xfc\xa7C\xcfd\xcf&\x9e\x17\xfe\xa2\xfe\xcb\xae\x17\x16/~\xf8\xd5\xeb\xd7\xce\xd1\x98\xd1\xa1\x97\xf2\x97\x93\xbfm|\xa5\xfd\xea\xc0\xeb\x19\xaf\xdb\xc6\xc2\xc6\x1e\xbe\xc9x31^\xf4V\xfb\xed\xc1w\xdcw\x1d\xef\xa3\xdf\x0fO\xe4| \x7f(\xffh\xf9\xb1\xf5S\xd0\xa7\xfb\x93\x19\x93\x93\xff\x04\x03\x98\xf3\xfcc3-\xdb\x00\x00:\xd8iTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2014-04-02T00:14:53+04:00\x0a 2014-04-02T00:14:53+04:00\x0a 2014-04-02T00:14:53+04:00\x0a xmp.iid:912a076e-06c9-9c41-964c-4ac3b1eac27c\x0a xmp.did:f1a83438-1190-f446-b9f2-efc89d7bbf8b\x0a xmp.did:f1a83438-1190-f446-b9f2-efc89d7bbf8b\x0a \x0a \x0a \x0a created\x0a xmp.iid:f1a83438-1190-f446-b9f2-efc89d7bbf8b\x0a 2014-04-02T00:14:53+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a saved\x0a xmp.iid:912a076e-06c9-9c41-964c-4ac3b1eac27c\x0a 2014-04-02T00:14:53+04:00\x0a Adobe Photoshop CC (Windows)\x0a /\x0a \x0a \x0a \x0a \x0a \x0a xmp.did:CED979F2760511E1954F918C86BB5E3E\x0a \x0a \x0a 3\x0a sRGB IEC61966-2.1\x0a image/png\x0a 1\x0a 720000/10000\x0a 720000/10000\x0a 2\x0a 1\x0a 16\x0a 16\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0ack\x1e\x85\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00\xc5IDATx\xda\xd4\xd21N\x02A\x14\x87\xf1\x1f\x04n@\x81\x09\x89\x85\x9dp\x8b\xbd\x00\x17\x90Heb\xb5Qi\xecl,\x08\xe8\x15\x00\xb9\xc6VTT6\x96\x1e\xc0\x82\x18k\x0b\x87f61\xeb\x125[\x10\xfe\xd5\xcb{\xc97\xdf\x9b\x99Z\x08A\x95\xd4ULe@#/\xb2,+\x9b\xf7\xf1\x8a\x97\xe2 I\x92_\x0d\xcep\x87\x09\xba\xff]a\x88\x1b|\xe2\x08c\x9c\xfe\x150@\x8a\x0d\xae0G\x07\x0fe&\xf5B}\x81k|\xe0\x16+\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2013-11-30T20:27:55+04:00\x0a 2013-11-30T20:48:10+04:00\x0a 2013-11-30T20:48:10+04:00\x0a image/png\x0a 3\x0a xmp.iid:7bc40d1b-ffcd-7d44-a96d-87bb4278e245\x0a xmp.did:7bc40d1b-ffcd-7d44-a96d-87bb4278e245\x0a xmp.did:7bc40d1b-ffcd-7d44-a96d-87bb4278e245\x0a \x0a \x0a \x0a created\x0a xmp.iid:7bc40d1b-ffcd-7d44-a96d-87bb4278e245\x0a 2013-11-30T20:27:55+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a \x0a 1\x0a 720000/10000\x0a 720000/10000\x0a 2\x0a 65535\x0a 81\x0a 58\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0aj\xf7\xedW\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00\x83IDATx\xda\xec\xd0\xb1\x0d\x00 \x0c\x04\xb1\xecD\xc7$?\x0c\xbb\x87\x96\x11\x22\xe4\xe2\xfa\x93\xab\xbbkbIv\x92\xf3\xb4\xa6\xbe\x16D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\xf1/\xc4\x0b\x00\x00\xff\xff\x03\x00^\x88\x0f~\xc4\xb7\xc6o\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00Fx\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x06\x00\x00\x00\x1f\xf3\xffa\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x00\x0aOiCCPPhotoshop ICC profile\x00\x00x\xda\x9dSgTS\xe9\x16=\xf7\xde\xf4BK\x88\x80\x94KoR\x15\x08 RB\x8b\x80\x14\x91&*!\x09\x10J\x88!\xa1\xd9\x15Q\xc1\x11EE\x04\x1b\xc8\xa0\x88\x03\x8e\x8e\x80\x8c\x15Q,\x0c\x8a\x0a\xd8\x07\xe4!\xa2\x8e\x83\xa3\x88\x8a\xca\xfb\xe1{\xa3k\xd6\xbc\xf7\xe6\xcd\xfe\xb5\xd7>\xe7\xac\xf3\x9d\xb3\xcf\x07\xc0\x08\x0c\x96H3Q5\x80\x0c\xa9B\x1e\x11\xe0\x83\xc7\xc4\xc6\xe1\xe4.@\x81\x0a$p\x00\x10\x08\xb3d!s\xfd#\x01\x00\xf8~<<+\x22\xc0\x07\xbe\x00\x01x\xd3\x0b\x08\x00\xc0M\x9b\xc00\x1c\x87\xff\x0f\xeaB\x99\x5c\x01\x80\x84\x01\xc0t\x918K\x08\x80\x14\x00@z\x8eB\xa6\x00@F\x01\x80\x9d\x98&S\x00\xa0\x04\x00`\xcbcb\xe3\x00P-\x00`'\x7f\xe6\xd3\x00\x80\x9d\xf8\x99{\x01\x00[\x94!\x15\x01\xa0\x91\x00 \x13e\x88D\x00h;\x00\xac\xcfV\x8aE\x00X0\x00\x14fK\xc49\x00\xd8-\x000IWfH\x00\xb0\xb7\x00\xc0\xce\x10\x0b\xb2\x00\x08\x0c\x000Q\x88\x85)\x00\x04{\x00`\xc8##x\x00\x84\x99\x00\x14F\xf2W<\xf1+\xae\x10\xe7*\x00\x00x\x99\xb2<\xb9$9E\x81[\x08-q\x07WW.\x1e(\xceI\x17+\x146a\x02a\x9a@.\xc2y\x99\x192\x814\x0f\xe0\xf3\xcc\x00\x00\xa0\x91\x15\x11\xe0\x83\xf3\xfdx\xce\x0e\xae\xce\xce6\x8e\xb6\x0e_-\xea\xbf\x06\xff\x22bb\xe3\xfe\xe5\xcf\xabp@\x00\x00\xe1t~\xd1\xfe,/\xb3\x1a\x80;\x06\x80m\xfe\xa2%\xee\x04h^\x0b\xa0u\xf7\x8bf\xb2\x0f@\xb5\x00\xa0\xe9\xdaW\xf3p\xf8~<\xdf5\x00\xb0j>\x01{\x91-\xa8]c\x03\xf6K'\x10Xt\xc0\xe2\xf7\x00\x00\xf2\xbbo\xc1\xd4(\x08\x03\x80h\x83\xe1\xcfw\xff\xef?\xfdG\xa0%\x00\x80fI\x92q\x00\x00^D$.T\xca\xb3?\xc7\x08\x00\x00D\xa0\x81*\xb0A\x1b\xf4\xc1\x18,\xc0\x06\x1c\xc1\x05\xdc\xc1\x0b\xfc`6\x84B$\xc4\xc2B\x10B\x0ad\x80\x1cr`)\xac\x82B(\x86\xcd\xb0\x1d*`/\xd4@\x1d4\xc0Qh\x86\x93p\x0e.\xc2U\xb8\x0e=p\x0f\xfaa\x08\x9e\xc1(\xbc\x81\x09\x04A\xc8\x08\x13a!\xda\x88\x01b\x8aX#\x8e\x08\x17\x99\x85\xf8!\xc1H\x04\x12\x8b$ \xc9\x88\x14Q\x22K\x915H1R\x8aT UH\x1d\xf2=r\x029\x87\x5cF\xba\x91;\xc8\x002\x82\xfc\x86\xbcG1\x94\x81\xb2Q=\xd4\x0c\xb5C\xb9\xa87\x1a\x84F\xa2\x0b\xd0dt1\x9a\x8f\x16\xa0\x9b\xd0r\xb4\x1a=\x8c6\xa1\xe7\xd0\xabh\x0f\xda\x8f>C\xc70\xc0\xe8\x18\x073\xc4l0.\xc6\xc3B\xb18,\x09\x93c\xcb\xb1\x22\xac\x0c\xab\xc6\x1a\xb0V\xac\x03\xbb\x89\xf5c\xcf\xb1w\x04\x12\x81E\xc0\x096\x04wB a\x1eAHXLXN\xd8H\xa8 \x1c$4\x11\xda\x097\x09\x03\x84Q\xc2'\x22\x93\xa8K\xb4&\xba\x11\xf9\xc4\x18b21\x87XH,#\xd6\x12\x8f\x13/\x10{\x88C\xc47$\x12\x89C2'\xb9\x90\x02I\xb1\xa4T\xd2\x12\xd2F\xd2nR#\xe9,\xa9\x9b4H\x1a#\x93\xc9\xdadk\xb2\x079\x94, +\xc8\x85\xe4\x9d\xe4\xc3\xe43\xe4\x1b\xe4!\xf2[\x0a\x9db@q\xa4\xf8S\xe2(R\xcajJ\x19\xe5\x10\xe54\xe5\x06e\x982AU\xa3\x9aR\xdd\xa8\xa1T\x115\x8fZB\xad\xa1\xb6R\xafQ\x87\xa8\x134u\x9a9\xcd\x83\x16IK\xa5\xad\xa2\x95\xd3\x1ah\x17h\xf7i\xaf\xe8t\xba\x11\xdd\x95\x1eN\x97\xd0W\xd2\xcb\xe9G\xe8\x97\xe8\x03\xf4w\x0c\x0d\x86\x15\x83\xc7\x88g(\x19\x9b\x18\x07\x18g\x19w\x18\xaf\x98L\xa6\x19\xd3\x8b\x19\xc7T071\xeb\x98\xe7\x99\x0f\x99oUX*\xb6*|\x15\x91\xca\x0a\x95J\x95&\x95\x1b*/T\xa9\xaa\xa6\xaa\xde\xaa\x0bU\xf3U\xcbT\x8f\xa9^S}\xaeFU3S\xe3\xa9\x09\xd4\x96\xabU\xaa\x9dP\xebS\x1bSg\xa9;\xa8\x87\xaag\xa8oT?\xa4~Y\xfd\x89\x06Y\xc3L\xc3OC\xa4Q\xa0\xb1_\xe3\xbc\xc6 \x0bc\x19\xb3x,!k\x0d\xab\x86u\x815\xc4&\xb1\xcd\xd9|v*\xbb\x98\xfd\x1d\xbb\x8b=\xaa\xa9\xa19C3J3W\xb3R\xf3\x94f?\x07\xe3\x98q\xf8\x9ctN\x09\xe7(\xa7\x97\xf3~\x8a\xde\x14\xef)\xe2)\x1b\xa64L\xb91e\x5ck\xaa\x96\x97\x96X\xabH\xabQ\xabG\xeb\xbd6\xae\xed\xa7\x9d\xa6\xbdE\xbbY\xfb\x81\x0eA\xc7J'\x5c'Gg\x8f\xce\x05\x9d\xe7S\xd9S\xdd\xa7\x0a\xa7\x16M=:\xf5\xae.\xaak\xa5\x1b\xa1\xbbDw\xbfn\xa7\xee\x98\x9e\xbe^\x80\x9eLo\xa7\xdey\xbd\xe7\xfa\x1c}/\xfdT\xfdm\xfa\xa7\xf5G\x0cX\x06\xb3\x0c$\x06\xdb\x0c\xce\x18<\xc55qo<\x1d/\xc7\xdb\xf1QC]\xc3@C\xa5a\x95a\x97\xe1\x84\x91\xb9\xd1<\xa3\xd5F\x8dF\x0f\x8ci\xc6\x5c\xe3$\xe3m\xc6m\xc6\xa3&\x06&!&KM\xeaM\xee\x9aRM\xb9\xa6)\xa6;L;L\xc7\xcd\xcc\xcd\xa2\xcd\xd6\x995\x9b=1\xd72\xe7\x9b\xe7\x9b\xd7\x9b\xdf\xb7`ZxZ,\xb6\xa8\xb6\xb8eI\xb2\xe4Z\xa6Y\xee\xb6\xbcn\x85Z9Y\xa5XUZ]\xb3F\xad\x9d\xad%\xd6\xbb\xad\xbb\xa7\x11\xa7\xb9N\x93N\xab\x9e\xd6g\xc3\xb0\xf1\xb6\xc9\xb6\xa9\xb7\x19\xb0\xe5\xd8\x06\xdb\xae\xb6m\xb6}agb\x17g\xb7\xc5\xae\xc3\xee\x93\xbd\x93}\xba}\x8d\xfd=\x07\x0d\x87\xd9\x0e\xab\x1dZ\x1d~s\xb4r\x14:V:\xde\x9a\xce\x9c\xee?}\xc5\xf4\x96\xe9/gX\xcf\x10\xcf\xd83\xe3\xb6\x13\xcb)\xc4i\x9dS\x9b\xd3Gg\x17g\xb9s\x83\xf3\x88\x8b\x89K\x82\xcb.\x97>.\x9b\x1b\xc6\xdd\xc8\xbd\xe4Jt\xf5q]\xe1z\xd2\xf5\x9d\x9b\xb3\x9b\xc2\xed\xa8\xdb\xaf\xee6\xeei\xee\x87\xdc\x9f\xcc4\x9f)\x9eY3s\xd0\xc3\xc8C\xe0Q\xe5\xd1?\x0b\x9f\x950k\xdf\xac~OCO\x81g\xb5\xe7#/c/\x91W\xad\xd7\xb0\xb7\xa5w\xaa\xf7a\xef\x17>\xf6>r\x9f\xe3>\xe3<7\xde2\xdeY_\xcc7\xc0\xb7\xc8\xb7\xcbO\xc3o\x9e_\x85\xdfC\x7f#\xffd\xffz\xff\xd1\x00\xa7\x80%\x01g\x03\x89\x81A\x81[\x02\xfb\xf8z|!\xbf\x8e?:\xdbe\xf6\xb2\xd9\xedA\x8c\xa0\xb9A\x15A\x8f\x82\xad\x82\xe5\xc1\xad!h\xc8\xec\x90\xad!\xf7\xe7\x98\xce\x91\xcei\x0e\x85P~\xe8\xd6\xd0\x07a\xe6a\x8b\xc3~\x0c'\x85\x87\x85W\x86?\x8ep\x88X\x1a\xd11\x975w\xd1\xdcCs\xdfD\xfaD\x96D\xde\x9bg1O9\xaf-J5*>\xaa.j<\xda7\xba4\xba?\xc6.fY\xcc\xd5X\x9dXIlK\x1c9.*\xae6nl\xbe\xdf\xfc\xed\xf3\x87\xe2\x9d\xe2\x0b\xe3{\x17\x98/\xc8]py\xa1\xce\xc2\xf4\x85\xa7\x16\xa9.\x12,:\x96@L\x88N8\x94\xf0A\x10*\xa8\x16\x8c%\xf2\x13w%\x8e\x0ay\xc2\x1d\xc2g\x22/\xd16\xd1\x88\xd8C\x5c*\x1eN\xf2H*Mz\x92\xec\x91\xbc5y$\xc53\xa5,\xe5\xb9\x84'\xa9\x90\xbcL\x0dL\xdd\x9b:\x9e\x16\x9av m2=:\xbd1\x83\x92\x91\x90qB\xaa!M\x93\xb6g\xeag\xe6fv\xcb\xace\x85\xb2\xfe\xc5n\x8b\xb7/\x1e\x95\x07\xc9k\xb3\x90\xac\x05Y-\x0a\xb6B\xa6\xe8TZ(\xd7*\x07\xb2geWf\xbf\xcd\x89\xca9\x96\xab\x9e+\xcd\xed\xcc\xb3\xca\xdb\x907\x9c\xef\x9f\xff\xed\x12\xc2\x12\xe1\x92\xb6\xa5\x86KW-\x1dX\xe6\xbd\xacj9\xb2\x15\x89\x8a\xae\x14\xdb\x17\x97\x15\x7f\xd8(\xdcx\xe5\x1b\x87o\xca\xbf\x99\xdc\x94\xb4\xa9\xab\xc4\xb9d\xcff\xd2f\xe9\xe6\xde-\x9e[\x0e\x96\xaa\x97\xe6\x97\x0en\x0d\xd9\xda\xb4\x0d\xdfV\xb4\xed\xf5\xf6E\xdb/\x97\xcd(\xdb\xbb\x83\xb6C\xb9\xa3\xbf<\xb8\xbce\xa7\xc9\xce\xcd;?T\xa4T\xf4T\xfaT6\xee\xd2\xdd\xb5a\xd7\xf8n\xd1\xee\x1b{\xbc\xf64\xec\xd5\xdb[\xbc\xf7\xfd>\xc9\xbe\xdbU\x01UM\xd5f\xd5e\xfbI\xfb\xb3\xf7?\xae\x89\xaa\xe9\xf8\x96\xfbm]\xadNmq\xed\xc7\x03\xd2\x03\xfd\x07#\x0e\xb6\xd7\xb9\xd4\xd5\x1d\xd2=TR\x8f\xd6+\xebG\x0e\xc7\x1f\xbe\xfe\x9d\xefw-\x0d6\x0dU\x8d\x9c\xc6\xe2#pDy\xe4\xe9\xf7\x09\xdf\xf7\x1e\x0d:\xdav\x8c{\xac\xe1\x07\xd3\x1fv\x1dg\x1d/jB\x9a\xf2\x9aF\x9bS\x9a\xfb[b[\xbaO\xcc>\xd1\xd6\xea\xdez\xfcG\xdb\x1f\x0f\x9c499\xe2?r\xfd\xe9\xfc\xa7C\xcfd\xcf&\x9e\x17\xfe\xa2\xfe\xcb\xae\x17\x16/~\xf8\xd5\xeb\xd7\xce\xd1\x98\xd1\xa1\x97\xf2\x97\x93\xbfm|\xa5\xfd\xea\xc0\xeb\x19\xaf\xdb\xc6\xc2\xc6\x1e\xbe\xc9x31^\xf4V\xfb\xed\xc1w\xdcw\x1d\xef\xa3\xdf\x0fO\xe4| \x7f(\xffh\xf9\xb1\xf5S\xd0\xa7\xfb\x93\x19\x93\x93\xff\x04\x03\x98\xf3\xfcc3-\xdb\x00\x00:\xd8iTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2014-04-02T00:14:53+04:00\x0a 2014-04-02T00:14:53+04:00\x0a 2014-04-02T00:14:53+04:00\x0a xmp.iid:24a905d7-3fe1-ca4d-a9c1-1ab2125c0f5e\x0a xmp.did:628324e0-7850-614a-be1a-f035b8641035\x0a xmp.did:628324e0-7850-614a-be1a-f035b8641035\x0a \x0a \x0a \x0a created\x0a xmp.iid:628324e0-7850-614a-be1a-f035b8641035\x0a 2014-04-02T00:14:53+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a saved\x0a xmp.iid:24a905d7-3fe1-ca4d-a9c1-1ab2125c0f5e\x0a 2014-04-02T00:14:53+04:00\x0a Adobe Photoshop CC (Windows)\x0a /\x0a \x0a \x0a \x0a \x0a \x0a xmp.did:CED979F2760511E1954F918C86BB5E3E\x0a \x0a \x0a 3\x0a sRGB IEC61966-2.1\x0a image/png\x0a 1\x0a 720000/10000\x0a 720000/10000\x0a 2\x0a 1\x0a 16\x0a 16\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0aV\xfc\xea\xb3\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00\xbfIDATx\xda\xc4\xd3;n\x02A\x10\x04\xd0\x87\x85\x88\x91\xb5\x01D\x04\x10\x81\x13H|\x80\xbd\x18\x99%\xf3\xb1I\x1c@`\xf19\x80/\xb0'\xe0*\x9c\x00K\xac\x93\x0e\x90\x8d\x04\xb3\x04\xaed4RWOuWM\xad,K\xf7\xe0\xc1\x9d\xa8\x9f_\x8a\xa2\xb8T\xd3A\x0b\xfb<\xcfO\xa9\x0a\x9e\xb0\xc4\x07\x1eSG\x18`\x1a\xaf\xefpHi\xd0\xc7\x0cml\xb0HY\xe2\x00\x93 \xef0\xc7\xe9\xa6%\xc6\xcc\xd3 \xaf\xf1\x862\xc5\xc6^\x90\x8f\xd8_#_j\xf0\x15\x0a\x1a\x18\xe3\xb9J\x90\xb6xG\x86W\x0c\xab$\xf13\x5ch\x86\xa2Q\x95(o\x22@\x19^\xa2\xd9U\x17~c\x85ot\xe3\xfc\x83\xda\xbf\xff\xc6\x9f\x01\x00$\x1b${\x89\x22c7\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00;\x00\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00\x0c\x00\x00\x00\x0c\x08\x06\x00\x00\x00Vu\x5c\xe7\x00\x00\x00\x09pHYs\x00\x00\x01#\x00\x00\x01#\x01rAw\xde\x00\x009\xcdiTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2013-11-30T20:27:38+04:00\x0a 2013-11-30T20:49:08+04:00\x0a 2013-11-30T20:49:08+04:00\x0a image/png\x0a 3\x0a xmp.iid:c789d111-ecc1-2943-8c52-95c61b03f3a8\x0a xmp.did:2acebcb2-7aac-0943-938e-d33e2def2b2b\x0a xmp.did:2acebcb2-7aac-0943-938e-d33e2def2b2b\x0a \x0a \x0a \x0a created\x0a xmp.iid:2acebcb2-7aac-0943-938e-d33e2def2b2b\x0a 2013-11-30T20:27:38+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a saved\x0a xmp.iid:c789d111-ecc1-2943-8c52-95c61b03f3a8\x0a 2013-11-30T20:49:08+04:00\x0a Adobe Photoshop CC (Windows)\x0a /\x0a \x0a \x0a \x0a 1\x0a 73914/10000\x0a 73914/10000\x0a 2\x0a 65535\x0a 12\x0a 12\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a\x97\xd8kP\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00\xadIDATx\xda\x94\xd1\xd1JBA\x14\x85\xe1}\xc2\xc4\x9e@\x83\xbcPA\xbc1\xa1|\x82\xc2\xf2\xa8W*Y\xef\xff _7{`\x10N\xd8\xc5\x82a\xd6\xfa\xf70k\x07\xa2\xd2\x14\x1b\x1cS\x1f\x98\xd5\x99r\xe8\xe1\x0d_Xc\x9cz\xc59\x87\xf4k\xe0\x1d\x07<\x5c\xbd\x18\x18\xa0\xc5'\x9a\xc0\x04?iD\x87\xeeq\xc1<\x92\x5c\xff\x11.z\xc6.p\xc2\xd3\x0d\xc0\x08\xa7\xff\x00\xc3\x02l\xf1r\x03\xb0\xc4>\xb2\xe7\xefR[\x87zY\xf9\x22\xd0\xe4\x82\xda\x0e\xa8\x9f\xfe\x0ew\xd7\x97g\xac\xf0\x98\x9f\x5c\xe6\xc6\xdbR{=\xa9\xc1<\xcdc\x15\x5c\xa4\x17\x88\xdf\x01\x00\xdb\x9d\xbd\x04\x1e\x00\xecQ\x00\x00\x00\x00IEND\xaeB`\x82\x00\x009=\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00Q\x00\x00\x00:\x08\x06\x00\x00\x00\xc8\xbc\xb5\xaf\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\x00\x9a\x9c\x18\x00\x008\x1aiTXtXML:com.adobe.xmp\x00\x00\x00\x00\x00\x0a\x0a \x0a \x0a Adobe Photoshop CC (Windows)\x0a 2013-11-30T20:27:47+04:00\x0a 2013-11-30T20:48:05+04:00\x0a 2013-11-30T20:48:05+04:00\x0a image/png\x0a 3\x0a xmp.iid:19b03b56-2069-2c45-9900-1dd879bc06b6\x0a xmp.did:19b03b56-2069-2c45-9900-1dd879bc06b6\x0a xmp.did:19b03b56-2069-2c45-9900-1dd879bc06b6\x0a \x0a \x0a \x0a created\x0a xmp.iid:19b03b56-2069-2c45-9900-1dd879bc06b6\x0a 2013-11-30T20:27:47+04:00\x0a Adobe Photoshop CC (Windows)\x0a \x0a \x0a \x0a 1\x0a 720000/10000\x0a 720000/10000\x0a 2\x0a 65535\x0a 81\x0a 58\x0a \x0a \x0a\x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x0a \x8aD\x09\x00\x00\x00 cHRM\x00\x00z%\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00u0\x00\x00\xea`\x00\x00:\x98\x00\x00\x17o\x92_\xc5F\x00\x00\x00\x9dIDATx\xda\xec\xd0\xa1\x11\x84@\x14D\xc1\xcd\x820\x108\xcc\xa51Ta\xc9\x01A\xee\x8b\xa5\xd0\x88\x0f\xd7\xe2\x89qS\xddz\xef\xadbI\xe6$\xc7\xa5\xa9\xea\xd7\x06\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!B\x84\x08\x11\x22D\x88\x10!\xfe\x09\xe2/\xc9P\xb17!\xee\xb7]&\x88\x1fG\x1c\x93l\x97\xd6$K\xc5\xca\x22\xbe)\x08\x10!B\x14D\x88\x10!\x0a\x22D\x88\x10\x05\x11\x22D\x88\x82\x08\x11\x22DA\x84\x08\x11\xa2 B\x84(\x88\xcft\x02\x00\x00\xff\xff\x03\x00\x8a\x81\x01-;\x8b=H\x00\x00\x00\x00IEND\xaeB`\x82" qt_resource_name = "\x00\x0e\x06\x0c\xe6\x07\x00a\x00r\x00r\x00o\x00w\x00_\x00d\x00o\x00w\x00n\x00.\x00p\x00n\x00g\x00\x08\x06\x88Y\xc7\x00m\x00o\x00r\x00e\x00.\x00p\x00n\x00g\x00\x0f\x0f,$\xc7\x00a\x00r\x00r\x00o\x00w\x00_\x00r\x00i\x00g\x00h\x00t\x00.\x00p\x00n\x00g\x00\x0a\x09\xba\x11\x87\x00c\x00l\x00o\x00s\x00e\x00d\x00.\x00p\x00n\x00g\x00\x0b\x08g\xfa'\x00p\x00w\x00_\x00t\x00r\x00a\x00y\x00.\x00p\x00n\x00g\x00\x0c\x0b\xd0z\xe7\x00a\x00r\x00r\x00o\x00w\x00_\x00u\x00p\x00.\x00p\x00n\x00g\x00\x09\x00H\xad'\x00v\x00l\x00i\x00n\x00e\x00.\x00p\x00n\x00g\x00\x0e\x08\xfa\xe1'\x00a\x00r\x00r\x00o\x00w\x00_\x00l\x00e\x00f\x00t\x00.\x00p\x00n\x00g\x00\x08\x06\xc1Y\x87\x00o\x00p\x00e\x00n\x00.\x00p\x00n\x00g\x00\x07\x0cGW\x87\x00e\x00n\x00d\x00.\x00p\x00n\x00g" diff --git a/pw_multiScriptEditor/managers/_3dsmax.py b/pw_multiScriptEditor/managers/_3dsmax.py index 0af2b2d..b8ac33e 100644 --- a/pw_multiScriptEditor/managers/_3dsmax.py +++ b/pw_multiScriptEditor/managers/_3dsmax.py @@ -1,12 +1,11 @@ import os, sys, re -from PySide import QtGui -from PySide import QtCore +from Qt import QtCore, QtWidgets from pw_multiScriptEditor import scriptEditor reload(scriptEditor) import MaxPlus -q3dsmax = QtGui.QApplication.instance() +q3dsmax = QtWidgets.QApplication.instance() class MaxDialogEvents(QtCore.QObject): def eventFilter(self, obj, event): diff --git a/pw_multiScriptEditor/managers/__init__.py b/pw_multiScriptEditor/managers/__init__.py index ab3317a..fd17ed4 100644 --- a/pw_multiScriptEditor/managers/__init__.py +++ b/pw_multiScriptEditor/managers/__init__.py @@ -90,4 +90,4 @@ def getMayaContextMenu(*args): elif platform.system().lower() == 'darwin': _s = 'x' else: - _s = 'l' \ No newline at end of file + _s = 'l' diff --git a/pw_multiScriptEditor/managers/_maya.py b/pw_multiScriptEditor/managers/_maya.py index 0cdf797..0f14884 100644 --- a/pw_multiScriptEditor/managers/_maya.py +++ b/pw_multiScriptEditor/managers/_maya.py @@ -1,13 +1,8 @@ _pyside_ver = 0 try: - from PySide.QtCore import * - from PySide.QtGui import * - from shiboken import wrapInstance as wrp + from Qt import QtCore, QtGui, QtWidgets _pyside_ver = 1 except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * _pyside_ver = 2 import maya.OpenMayaUI as omui @@ -29,7 +24,7 @@ def getMayaWindow(): if _pyside_ver == 1: ptr = omui.MQtUtil.mainWindow() if ptr is not None: - return wrp(long(ptr), QMainWindow) + return wrp(long(ptr), QtWidgets.QMainWindow) elif _pyside_ver == 2: from pymel.core import ui return ui.Window('MayaWindow').asQtObject() @@ -108,7 +103,7 @@ def completer(line, ns): # drop event def wrapDroppedText(namespace, text, event): - if event.keyboardModifiers() == Qt.AltModifier: + if event.keyboardModifiers() == QtCore.Qt.AltModifier: # pymel with namespace for k, m in namespace.items(): if hasattr(m, '__name__'): @@ -160,13 +155,13 @@ def contextMenu(parent): m = mayaMenuClass(parent) return m -class mayaMenuClass(QMenu): +class mayaMenuClass(QtWidgets.QMenu): def __init__(self, parent): super(mayaMenuClass, self).__init__('Maya', parent) self.par = parent self.setTearOffEnabled(1) self.setWindowTitle('MSE %s Maya' % self.par.ver) - a = QAction('Save to shelf', parent, triggered=self.saveToShelfDialog) + a = QtWidgets.QAction('Save to shelf', parent, triggered=self.saveToShelfDialog) self.addAction(a) def saveToShelfDialog(self): @@ -175,15 +170,15 @@ def saveToShelfDialog(self): self.dial.show() -class mayaIconsClass(QListWidget): +class mayaIconsClass(QtWidgets.QListWidget): def __init__(self, parent): super(mayaIconsClass, self).__init__() self.par = parent - self.setWindowFlags(Qt.Tool) - self.setViewMode(QListView.IconMode) - self.setIconSize(QSize(32,32)) - self.setEditTriggers(QAbstractItemView.NoEditTriggers) - self.setResizeMode(QListWidget.ResizeMode.Adjust) + self.setWindowFlags(QtCore.Qt.Tool) + self.setViewMode(QtWidgets.QListView.IconMode) + self.setIconSize(QtCore.QSize(32,32)) + self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) + self.setResizeMode(QtWidgets.QListWidget.ResizeMode.Adjust) self.fillIcons() self.itemClicked.connect(self.print_name) @@ -191,14 +186,14 @@ def fillIcons(self): res, files = self.getIcons() self.par.out.showMessage( "%s icons found" % len(res+files)) for ico in sorted(res): - item = QListWidgetItem(self) - item.setIcon(QIcon(':/'+ico)) + item = QtWidgets.QListWidgetItem(self) + item.setIcon(QtGui.QIcon(':/'+ico)) item.setData(32, ':/'+ico) item.setToolTip(ico) self.addItem(item) for f in sorted(files, key=lambda x: os.path.splitext(x)[0]): - item = QListWidgetItem(self) - item.setIcon(QIcon(f)) + item = QtWidgets.QListWidgetItem(self) + item.setIcon(QtGui.QIcon(f)) item.setData(32, f) item.setToolTip(f) self.addItem(item) @@ -225,23 +220,23 @@ def findInPath(self, path): def print_name(self, item): print item.data(32) -class saveToShelfClass(QDialog): +class saveToShelfClass(QtWidgets.QDialog): def __init__(self, parent): super(saveToShelfClass, self).__init__(parent) self.par = parent - self.setWindowFlags(Qt.Tool) + self.setWindowFlags(QtCore.Qt.Tool) self.setObjectName('maya_create_shelfButton') self.setWindowTitle('Save script to shelf') - self.verticalLayout = QVBoxLayout(self) - self.gridLayout = QGridLayout() - self.label = QLabel('Label') + self.verticalLayout = QtWidgets.QVBoxLayout(self) + self.gridLayout = QtWidgets.QGridLayout() + self.label = QtWidgets.QLabel('Label') self.gridLayout.addWidget(self.label, 0, 0, 1, 1) - self.lineEdit = QLineEdit(self) + self.lineEdit = QtWidgets.QLineEdit(self) self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1) self.verticalLayout.addLayout(self.gridLayout) self.listWidget = mayaIconsClass(parent) self.verticalLayout.addWidget(self.listWidget) - self.pushButton = QPushButton('Save to shelf') + self.pushButton = QtWidgets.QPushButton('Save to shelf') self.verticalLayout.addWidget(self.pushButton) self.pushButton.clicked.connect(self.createButton) diff --git a/pw_multiScriptEditor/managers/_nuke.py b/pw_multiScriptEditor/managers/_nuke.py index bbb6e5d..3850798 100644 --- a/pw_multiScriptEditor/managers/_nuke.py +++ b/pw_multiScriptEditor/managers/_nuke.py @@ -10,8 +10,7 @@ nuke_nodes = dir(nodes) from managers.completeWidget import contextCompleterClass -from PySide.QtGui import * -from PySide.QtCore import * +from Qt import QtCore, QtWidgets p = os.path.dirname(__file__).replace('\\','/') if not p in sys.path: @@ -21,7 +20,7 @@ reload(scriptEditor) # QT -qApp = QApplication.instance() +qApp = QtWidgets.QApplication.instance() def getMainWindow(): for widget in qApp.topLevelWidgets(): @@ -126,17 +125,17 @@ def contextMenu(parent): m = nukeContextMenu(parent) return m -class nukeContextMenu(QMenu): +class nukeContextMenu(QtWidgets.QMenu): def __init__(self, parent): super(nukeContextMenu, self).__init__('Nuke') self.par = parent self.setTearOffEnabled(1) self.setWindowTitle('MSE %s Nuke' % self.par.ver) - self.addAction(QAction('Read PyScript Knob', parent, triggered=self.readPyScriptKnob)) - self.addAction(QAction('Save To PyScript Knob', parent, triggered=self.saveToKnob)) + self.addAction(QtWidgets.QAction('Read PyScript Knob', parent, triggered=self.readPyScriptKnob)) + self.addAction(QtWidgets.QAction('Save To PyScript Knob', parent, triggered=self.saveToKnob)) self.addSeparator() - self.addAction(QAction('From Selected', parent, triggered=self.nodeToCode)) - self.addAction(QAction('From Clipboard', parent, triggered=self.nodesFromClipboard)) + self.addAction(QtWidgets.QAction('From Selected', parent, triggered=self.nodeToCode)) + self.addAction(QtWidgets.QAction('From Clipboard', parent, triggered=self.nodesFromClipboard)) def nodeToCode(self): nodes = nuke.selectedNodes() @@ -180,7 +179,7 @@ def saveToKnob(self): def nodesFromClipboard(self): # nuke.tprint(str(self.par)) - text = QApplication.clipboard().text() + text = QtWidgets.QApplication.clipboard().text() nodes = [] if text: for l in text.split('\n'): @@ -191,22 +190,22 @@ def nodesFromClipboard(self): for n in nodes: self.par.tab.addToCurrent('nuke.toNode("%s")\n' % n) -class selectDialog(QDialog): +class selectDialog(QtWidgets.QDialog): def __init__(self, items, title, sel=None): super(selectDialog, self).__init__() self.setWindowTitle(title) - self.setWindowFlags(Qt.Tool) - self.list = QListWidget(self) - self.list.setSelectionMode(QAbstractItemView.SingleSelection) - self.ly = QVBoxLayout(self) + self.setWindowFlags(QtCore.Qt.Tool) + self.list = QtWidgets.QListWidget(self) + self.list.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) + self.ly = QtWidgets.QVBoxLayout(self) self.setLayout(self.ly) self.ly.addWidget(self.list) - self.btn = QPushButton('Select') + self.btn = QtWidgets.QPushButton('Select') self.ly.addWidget(self.btn) self.btn.clicked.connect(self.accept) selected = None for i in items: - item = QListWidgetItem(i) + item = QtWidgets.QListWidgetItem(i) item.setData(32, i) self.list.addItem(item) if i == sel: diff --git a/pw_multiScriptEditor/managers/completeWidget.py b/pw_multiScriptEditor/managers/completeWidget.py index cd727ee..bddc770 100644 --- a/pw_multiScriptEditor/managers/completeWidget.py +++ b/pw_multiScriptEditor/managers/completeWidget.py @@ -5,4 +5,4 @@ class contextCompleterClass(object): def __init__(self, name, complete, end=None): self.name = name self.complete = complete - self.end_char = end \ No newline at end of file + self.end_char = end diff --git a/pw_multiScriptEditor/managers/houdini/hou.py b/pw_multiScriptEditor/managers/houdini/hou.py index a852f67..b471dce 100644 --- a/pw_multiScriptEditor/managers/houdini/hou.py +++ b/pw_multiScriptEditor/managers/houdini/hou.py @@ -1,4 +1,4 @@ -from PySide2.QtWidgets import * +from Qt import QtWidgets class appearanceChangeType: @@ -7074,7 +7074,7 @@ def activeInterface(self): def activeInterfaceRootWidget(self): - return QWidget + return QtWidgets.QWidget def setActiveInterface(self, interface): @@ -9878,19 +9878,19 @@ class qt(): def createDialog(self): - return QWidget + return QtWidgets.QWidget def createMenu(self): - return QMenu + return QtWidgets.QMenu def createToolTip(self): - return QWidget + return QtWidgets.QWidget def createWindow(self): - return QWidget + return QtWidgets.QWidget class session(): diff --git a/pw_multiScriptEditor/managers/nuke/geo.py b/pw_multiScriptEditor/managers/nuke/geo.py index 5d678e2..3af8d94 100644 --- a/pw_multiScriptEditor/managers/nuke/geo.py +++ b/pw_multiScriptEditor/managers/nuke/geo.py @@ -126,4 +126,4 @@ def normal(self): def points(self): """ Get the list of point indexes for this primitive.""" - return [0,] \ No newline at end of file + return [0,] diff --git a/pw_multiScriptEditor/run.cmd b/pw_multiScriptEditor/run.cmd index f7c56f6..13d05ad 100644 --- a/pw_multiScriptEditor/run.cmd +++ b/pw_multiScriptEditor/run.cmd @@ -1 +1 @@ -start c:\python27\python.exe scriptEditor.py %* \ No newline at end of file +start c:\python27\python.exe runScriptEditor.py %* \ No newline at end of file diff --git a/pw_multiScriptEditor/run.sh b/pw_multiScriptEditor/run.sh index a197682..b2ce0ab 100644 --- a/pw_multiScriptEditor/run.sh +++ b/pw_multiScriptEditor/run.sh @@ -1,3 +1,3 @@ #!/bin/bash CURRENT=`dirname $(readlink -f $0)` -python "$CURRENT/scriptEditor.py" +python "$CURRENT/runScriptEditor.py" diff --git a/pw_multiScriptEditor/scriptEditor.py b/pw_multiScriptEditor/scriptEditor.py index 6c121f4..1be08d7 100644 --- a/pw_multiScriptEditor/scriptEditor.py +++ b/pw_multiScriptEditor/scriptEditor.py @@ -2,49 +2,51 @@ import sys import webbrowser import os -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * -from widgets import scriptEditor_UIs as ui, tabWidget, outputWidget, about, shortcuts -from widgets.pythonSyntax import design + +from Qt import QtCore, QtGui, QtWidgets + +from .widgets import scriptEditor_UIs as ui +from .widgets import tabWidget, outputWidget, about, shortcuts, themeEditor, findWidget + reload(tabWidget) reload(outputWidget) reload(ui) -import sessionManager -import settingsManager -from widgets import themeEditor, findWidget reload(themeEditor) reload(findWidget) -import managers + +from .widgets.pythonSyntax import design +from . import sessionManager +from . import settingsManager +from . import managers reload(managers) + if managers._s == 'w': import ctypes ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID('paulwinex.multiscripteditor.1.0') + import icons_rcs -from icons import * +from .icons import * -class scriptEditorClass(QMainWindow, ui.Ui_scriptEditor): +class scriptEditorClass(QtWidgets.QMainWindow, ui.Ui_scriptEditor): def __init__(self, parent=None): - QMainWindow.__init__(self, parent) + QtWidgets.QMainWindow.__init__(self, parent) # ui self.ver = '2.0.4' + self.tab = tabWidget.tabWidgetClass(self) self.setupUi(self) self.setWindowTitle('pw Multi Script Editor v%s' % self.ver) self.setObjectName('pw_scriptEditor') # widgets self.out = outputWidget.outputClass() + self.out_ly.addWidget(self.out) - self.tab = tabWidget.tabWidgetClass(self) self.in_ly.addWidget(self.tab) for m in self.file_menu, self.tools_menu, self.options_menu, self.run_menu, self.help_menu: m.setWindowTitle('MSE '+self.ver) + #variables self.s = settingsManager.scriptEditorClass() # self.namespace = {} @@ -57,10 +59,10 @@ def __init__(self, parent=None): 'self_help': self.mse_help, 'self_context':managers.context}) self.session = sessionManager.sessionManagerClass() - self.execAll_act.setIcon(QIcon(icons['all'])) - self.execSel_act.setIcon(QIcon(icons['sel'])) - self.clearHistory_act.setIcon(QIcon(icons['clear'])) - self.toolBar.setIconSize(QSize(32,32)) + self.execAll_act.setIcon(QtGui.QIcon(icons['all'])) + self.execSel_act.setIcon(QtGui.QIcon(icons['sel'])) + self.clearHistory_act.setIcon(QtGui.QIcon(icons['clear'])) + self.toolBar.setIconSize(QtCore.QSize(32,32)) self.menubar.setNativeMenuBar(False) # connects @@ -77,34 +79,34 @@ def __init__(self, parent=None): self.shortcuts_act.triggered.connect(self.shortcuts) self.printHelp_act.triggered.connect(self.mse_help) # editor - c = Qt.WindowShortcut + c = QtCore.Qt.WindowShortcut self.undo_act.triggered.connect(self.tab.undo) self.undo_act.setShortcut('Ctrl+Z') - self.undo_act.setShortcutContext(Qt.WidgetShortcut) + self.undo_act.setShortcutContext(QtCore.Qt.WidgetShortcut) self.redo_act.triggered.connect(self.tab.redo) self.redo_act.setShortcut('Ctrl+Y') - self.redo_act.setShortcutContext(Qt.WidgetShortcut) + self.redo_act.setShortcutContext(QtCore.Qt.WidgetShortcut) self.copy_act.triggered.connect(self.tab.copy) self.copy_act.setShortcut('Ctrl+C') - self.copy_act.setShortcutContext(Qt.WidgetShortcut) + self.copy_act.setShortcutContext(QtCore.Qt.WidgetShortcut) self.cut_act.triggered.connect(self.tab.cut) self.cut_act.setShortcut('Ctrl+X') - self.cut_act.setShortcutContext(Qt.WidgetShortcut) + self.cut_act.setShortcutContext(QtCore.Qt.WidgetShortcut) self.paste_act.triggered.connect(self.tab.paste) self.paste_act.setShortcut('Ctrl+V') - self.paste_act.setShortcutContext(Qt.WidgetShortcut) + self.paste_act.setShortcutContext(QtCore.Qt.WidgetShortcut) self.find_act.triggered.connect(self.findWidget) self.find_act.setShortcut('Ctrl+F') - self.find_act.setShortcutContext(Qt.WindowShortcut) + self.find_act.setShortcutContext(QtCore.Qt.WindowShortcut) self.comment_cat.triggered.connect(self.tab.comment) - self.comment_cat.setShortcut(QKeySequence( Qt.ALT+Qt.Key_Q)) - self.comment_cat.setShortcutContext(Qt.WidgetShortcut) + self.comment_cat.setShortcut(QtGui.QKeySequence( QtCore.Qt.ALT+QtCore.Qt.Key_Q)) + self.comment_cat.setShortcutContext(QtCore.Qt.WidgetShortcut) self.fillThemeMenu() @@ -113,15 +115,15 @@ def __init__(self, parent=None): import nuke if nuke.NUKE_VERSION_MAJOR>8: self.execSel_act.setShortcut('Ctrl+Return') - self.execSel_act.setShortcutContext(Qt.ApplicationShortcut) + self.execSel_act.setShortcutContext(QtCore.Qt.ApplicationShortcut) self.execSel_act.triggered.connect(self.executeSelected) self.execSel_act.setShortcut('Ctrl+Return') - self.execSel_act.setShortcutContext(Qt.WidgetWithChildrenShortcut) + self.execSel_act.setShortcutContext(QtCore.Qt.WidgetWithChildrenShortcut) self.execAll_act.setShortcut('Ctrl+Shift+Return') self.execAll_act.triggered.connect(self.executeAll) - self.execAll_act.setShortcutContext(Qt.ApplicationShortcut) + self.execAll_act.setShortcutContext(QtCore.Qt.ApplicationShortcut) self.clearHistory_act.triggered.connect(self.clearHistory) @@ -148,7 +150,7 @@ def mse_help(self): txt = '

File not found: helpText.txt


' old = self.out.toPlainText().replace('\n', '
') self.out.setHtml(old+txt) - self.out.moveCursor(QTextCursor.End) + self.out.moveCursor(QtGui.QTextCursor.End) self.out.ensureCursorVisible() def closeEvent(self, event): @@ -181,13 +183,13 @@ def addArgs(self): def fillThemeMenu(self): self.theme_menu.clear() - self.theme_menu.addAction(QAction('Edit...', self, triggered=self.openThemeEditor)) + self.theme_menu.addAction(QtWidgets.QAction('Edit...', self, triggered=self.openThemeEditor)) self.theme_menu.addSeparator() - self.theme_menu.addAction(QAction('default', self, triggered=lambda: self.applyTheme('default'))) + self.theme_menu.addAction(QtWidgets.QAction('default', self, triggered=lambda: self.applyTheme('default'))) data = self.s.readSettings() if data.get('colors'): for t in data.get('colors').keys(): - self.theme_menu.addAction(QAction(t, self, triggered=lambda x=t: self.applyTheme(x))) + self.theme_menu.addAction(QtWidgets.QAction(t, self, triggered=lambda x=t: self.applyTheme(x))) def applyTheme(self, name): for i in range(self.tab.count()): @@ -208,7 +210,7 @@ def setWindowStyle(self): qss = os.path.join(os.path.dirname(__file__),'style', 'style.css') if os.path.exists(qss): self.setStyleSheet(open(qss).read()) - self.setWindowIcon(QIcon(icons['pw'])) + self.setWindowIcon(QtGui.QIcon(icons['pw'])) def loadSession(self): sessions = self.session.readSession() @@ -275,7 +277,7 @@ def write(self, text): if not self.skip: stripped_text = text.rstrip('\n') self.write_func(stripped_text) - QCoreApplication.processEvents() + QtCore.QCoreApplication.processEvents() self.skip = not self.skip sys.stdout = stdoutProxy(self.out.showMessage) @@ -305,7 +307,7 @@ def saveScript(self): d = os.getenv('HOME') if not d: d = os.path.expanduser('~') - path = QFileDialog.getSaveFileName (self, 'Save script', d, "PY Files (*.py)") + path = QtWidgets.QFileDialog.getSaveFileName (self, 'Save script', d, "PY Files (*.py)") if path[0]: try: with open(path[0], 'w') as f: @@ -317,7 +319,7 @@ def loadScript(self): d = os.getenv('HOME') if not d: d = os.path.expanduser('~') - path = QFileDialog.getOpenFileName(self, 'Open script', d, "PY Files (*.py)") + path = QtWidgets.QFileDialog.getOpenFileName(self, 'Open script', d, "PY Files (*.py)") if path[0]: if os.path.exists(path[0]): text = open(path[0]).read() @@ -339,7 +341,7 @@ def loadSettings(self): if data.get('center'): x, y = data.get('center') geo = self.geometry() - geo.moveCenter(QPoint(x,y)) + geo.moveCenter(QtCore.QPoint(x,y)) self.setGeometry(geo) f = self.out.font() f.setPointSize(data['outFontSize']) @@ -374,7 +376,7 @@ def openThemeEditor(self): def moveEvent(self, event): self.adjustColmpeters() # super(scriptEditorClass, self).moveEvent(event) - QMainWindow.moveEvent(self, event) + QtWidgets.QMainWindow.moveEvent(self, event) def adjustColmpeters(self): for i in range(self.tab.count()): @@ -385,7 +387,7 @@ def adjustColmpeters(self): def resizeEvent(self, event): self.adjustColmpeters() # super(scriptEditorClass, self).resizeEvent(event) - QMainWindow.resizeEvent(self, event) + QtWidgets.QMainWindow.resizeEvent(self, event) def openLink(self, name): @@ -417,12 +419,7 @@ def openFolder(self, path): os.system('open "%s"' % path) try: - QTextCodec.setCodecForCStrings(QTextCodec.codecForName("UTF-8")) + QtCore.QTextCodec.setCodecForCStrings(QtCore.QTextCodec.codecForName("UTF-8")) except: pass -if __name__ == '__main__': - app = QApplication([]) - w = scriptEditorClass() - w.show() - app.exec_() diff --git a/pw_multiScriptEditor/widgets/about.py b/pw_multiScriptEditor/widgets/about.py old mode 100644 new mode 100755 index 5157c93..69796c1 --- a/pw_multiScriptEditor/widgets/about.py +++ b/pw_multiScriptEditor/widgets/about.py @@ -1,24 +1,19 @@ -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * +from Qt import QtCore, QtGui, QtWidgets + import icons import about_UIs import os -class aboutClass(QDialog, about_UIs.Ui_Dialog): +class aboutClass(QtWidgets.QDialog, about_UIs.Ui_Dialog): def __init__(self, parent): super(aboutClass, self).__init__(parent) self.setupUi(self) self.title_lb.setText(self.title_lb.text()+str(parent.ver)) self.text_link_lb.setText(text) - self.icon_lb.setPixmap(QPixmap(icons.icons['pw']).scaled(60,60, Qt.KeepAspectRatio, Qt.SmoothTransformation)) + self.icon_lb.setPixmap(QtGui.QPixmap(icons.icons['pw']).scaled(60,60, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)) self.donate_btn.setMinimumHeight(35) - self.donate_btn.setIconSize(QSize(24,24)) - self.donate_btn.setIcon(QIcon(icons.icons['donate'])) + self.donate_btn.setIconSize(QtCore.QSize(24,24)) + self.donate_btn.setIcon(QtGui.QIcon(icons.icons['donate'])) self.donate_btn.clicked.connect(lambda :parent.openLink('donate')) self.donate_btn.hide() testedFile = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'tested.txt') diff --git a/pw_multiScriptEditor/widgets/about_UIs.py b/pw_multiScriptEditor/widgets/about_UIs.py index 3c5b530..2013847 100644 --- a/pw_multiScriptEditor/widgets/about_UIs.py +++ b/pw_multiScriptEditor/widgets/about_UIs.py @@ -1,72 +1,66 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'D:\Dropbox\Dropbox\pw_prefs\RnD\tools\pw_scriptEditor\pw_multiScriptEditor\widgets\about.ui' -# -# Created: Thu Apr 02 22:56:45 2015 -# by: pyside-uic 0.2.15 running on PySide 1.2.2 -# -# WARNING! All changes made in this file will be lost! - -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * - -class Ui_Dialog(object): - def setupUi(self, Dialog): - Dialog.setObjectName("Dialog") - Dialog.resize(465, 393) - self.verticalLayout = QVBoxLayout(Dialog) - self.verticalLayout.setObjectName("verticalLayout") - self.horizontalLayout = QHBoxLayout() - self.horizontalLayout.setContentsMargins(-1, 20, -1, 20) - self.horizontalLayout.setObjectName("horizontalLayout") - spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) - self.horizontalLayout.addItem(spacerItem) - self.icon_lb = QLabel(Dialog) - font = QFont() - font.setPointSize(20) - self.icon_lb.setFont(font) - self.icon_lb.setText("") - self.icon_lb.setObjectName("icon_lb") - self.horizontalLayout.addWidget(self.icon_lb) - self.title_lb = QLabel(Dialog) - font = QFont() - font.setPointSize(20) - self.title_lb.setFont(font) - self.title_lb.setObjectName("title_lb") - self.horizontalLayout.addWidget(self.title_lb) - spacerItem1 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) - self.horizontalLayout.addItem(spacerItem1) - self.verticalLayout.addLayout(self.horizontalLayout) - self.text_link_lb = QLabel(Dialog) - self.text_link_lb.setObjectName("text_link_lb") - self.verticalLayout.addWidget(self.text_link_lb) - self.textBrowser = QTextBrowser(Dialog) - self.textBrowser.setObjectName("textBrowser") - self.verticalLayout.addWidget(self.textBrowser) - self.horizontalLayout_2 = QHBoxLayout() - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.donate_btn = QPushButton(Dialog) - self.donate_btn.setObjectName("donate_btn") - self.horizontalLayout_2.addWidget(self.donate_btn) - self.verticalLayout.addLayout(self.horizontalLayout_2) - self.verticalLayout.setStretch(2, 1) - - self.retranslateUi(Dialog) - QMetaObject.connectSlotsByName(Dialog) - - def retranslateUi(self, Dialog): - Dialog.setWindowTitle(QApplication.translate("Dialog", "About Multi Script Editor", None)) - self.title_lb.setText(QApplication.translate("Dialog", "Multi Script Editor v", None)) - self.text_link_lb.setText(QApplication.translate("Dialog", "Paul Winex 2015", None)) - self.textBrowser.setHtml(QApplication.translate("Dialog", "\n" -"\n" -"

File not Found :(

", None)) - self.donate_btn.setText(QApplication.translate("Dialog", "Donate", None)) - +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '/Users/johannes/PycharmProjects/pw_MultiScriptEditor/pw_multiScriptEditor/widgets/about.ui' +# +# Created: Sat Apr 28 00:29:02 2018 +# by: pyside2-uic running on PySide2 5.9.0a1.dev1524638381 +# +# WARNING! All changes made in this file will be lost! + +from Qt import QtGui, QtCore, QtCompat, QtWidgets + +class Ui_Dialog(object): + def setupUi(self, Dialog): + Dialog.setObjectName("Dialog") + Dialog.resize(465, 393) + self.verticalLayout = QtWidgets.QVBoxLayout(Dialog) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setContentsMargins(-1, 20, -1, 20) + self.horizontalLayout.setObjectName("horizontalLayout") + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem) + self.icon_lb = QtWidgets.QLabel(Dialog) + font = QtGui.QFont() + font.setPointSize(20) + self.icon_lb.setFont(font) + self.icon_lb.setText("") + self.icon_lb.setObjectName("icon_lb") + self.horizontalLayout.addWidget(self.icon_lb) + self.title_lb = QtWidgets.QLabel(Dialog) + font = QtGui.QFont() + font.setPointSize(20) + self.title_lb.setFont(font) + self.title_lb.setObjectName("title_lb") + self.horizontalLayout.addWidget(self.title_lb) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem1) + self.verticalLayout.addLayout(self.horizontalLayout) + self.text_link_lb = QtWidgets.QLabel(Dialog) + self.text_link_lb.setObjectName("text_link_lb") + self.verticalLayout.addWidget(self.text_link_lb) + self.textBrowser = QtWidgets.QTextBrowser(Dialog) + self.textBrowser.setObjectName("textBrowser") + self.verticalLayout.addWidget(self.textBrowser) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.donate_btn = QtWidgets.QPushButton(Dialog) + self.donate_btn.setObjectName("donate_btn") + self.horizontalLayout_2.addWidget(self.donate_btn) + self.verticalLayout.addLayout(self.horizontalLayout_2) + self.verticalLayout.setStretch(2, 1) + + self.retranslateUi(Dialog) + QtCore.QMetaObject.connectSlotsByName(Dialog) + + def retranslateUi(self, Dialog): + Dialog.setWindowTitle(QtCompat.translate("Dialog", "About Multi Script Editor", None, -1)) + self.title_lb.setText(QtCompat.translate("Dialog", "Multi Script Editor v", None, -1)) + self.text_link_lb.setText(QtCompat.translate("Dialog", "Paul Winex 2015", None, -1)) + self.textBrowser.setHtml(QtCompat.translate("Dialog", "\n" +"\n" +"

File not Found :(

", None, -1)) + self.donate_btn.setText(QtCompat.translate("Dialog", "Donate", None, -1)) + diff --git a/pw_multiScriptEditor/widgets/completeWidget.py b/pw_multiScriptEditor/widgets/completeWidget.py index b8d2102..1334679 100644 --- a/pw_multiScriptEditor/widgets/completeWidget.py +++ b/pw_multiScriptEditor/widgets/completeWidget.py @@ -1,10 +1,5 @@ -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * +from Qt import QtCore, QtGui, QtWidgets + import os, re from . pythonSyntax import design import managers @@ -13,7 +8,7 @@ style=None -class completeMenuClass(QListWidget): +class completeMenuClass(QtWidgets.QListWidget): def __init__(self, parent=None, editor=None): # if managers.context == 'hou': # super(completeMenuClass, self).__init__(managers.main_parent or parent) @@ -22,11 +17,11 @@ def __init__(self, parent=None, editor=None): self.setAlternatingRowColors(1) self.lineHeight = 18 self.e = editor - self.setAttribute(Qt.WA_ShowWithoutActivating) + self.setAttribute(QtCore.Qt.WA_ShowWithoutActivating) if managers._s == 'w': - self.setWindowFlags(Qt.FramelessWindowHint | Qt.Window) + self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Window) else: - self.setWindowFlags(Qt.FramelessWindowHint | Qt.Window | Qt.WindowStaysOnTopHint) + self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.Window | QtCore.Qt.WindowStaysOnTopHint) @self.itemDoubleClicked.connect def insertSelected(item): if item: @@ -44,7 +39,7 @@ def updateCompleteList(self, lines=None, extra=None): self.showMe() if lines: for i in [x for x in lines if not x.name == 'mro']: - item = QListWidgetItem(i.name) + item = QtWidgets.QListWidgetItem(i.name) item.setData(32, i) self.addItem(item) if extra: @@ -53,13 +48,13 @@ def updateCompleteList(self, lines=None, extra=None): font.setItalic(1) font.setPointSize(font.pointSize()*0.8) for e in extra: - item = QListWidgetItem(e.name) + item = QtWidgets.QListWidgetItem(e.name) item.setData(32, e) item.setFont(font) self.addItem(item) - font = QFont("monospace", self.lineHeight, False) - fm = QFontMetrics (font) + font = QtGui.QFont("monospace", self.lineHeight, False) + fm = QtGui.QFontMetrics (font) width = fm.width(' ') * max([len(x.name) for x in lines or extra]) + 40 self.resize(max(250,width), 250) @@ -75,38 +70,38 @@ def applyCurrentComplete(self): self.hideMe() def keyPressEvent(self, event): - if event.key() == Qt.Key_Escape: + if event.key() == QtCore.Qt.Key_Escape: self.close() # elif event.text(): # self.editor().setFocus() - elif event.key() == Qt.Key_Return or event.key() == Qt.Key_Enter: + elif event.key() == QtCore.Qt.Key_Return or event.key() == QtCore.Qt.Key_Enter: self.editor().setFocus() self.applyCurrentComplete() return event - elif event.key() == Qt.Key_Up: + elif event.key() == QtCore.Qt.Key_Up: sel = self.selectedItems() if sel: i = self.row(sel[0]) if i == 0: - QListWidget.keyPressEvent(self, event) + QtWidgets.QListWidget.keyPressEvent(self, event) self.setCurrentRow(self.count()-1) return - elif event.key() == Qt.Key_Down: + elif event.key() == QtCore.Qt.Key_Down: sel = self.selectedItems() if sel: i = self.row(sel[0]) if i+1 == self.count(): - QListWidget.keyPressEvent(self, event) + QtWidgets.QListWidget.keyPressEvent(self, event) self.setCurrentRow(0) return - elif event.key() == Qt.Key_Backspace: + elif event.key() == QtCore.Qt.Key_Backspace: self.editor().setFocus() self.editor().activateWindow() elif event.text(): self.editor().keyPressEvent(event) return - QListWidget.keyPressEvent(self, event) + QtWidgets.QListWidget.keyPressEvent(self, event) def sendText(self, comp): self.editor().insertText(comp) @@ -116,7 +111,7 @@ def editor(self): def activateCompleter(self, key=False): self.activateWindow() - if not key==Qt.Key_Up: + if not key==QtCore.Qt.Key_Up: self.setCurrentRow(min(1, self.count()-1)) else: self.setCurrentRow(self.count()-1) diff --git a/pw_multiScriptEditor/widgets/findWidget.py b/pw_multiScriptEditor/widgets/findWidget.py old mode 100644 new mode 100755 index 70e820e..47aa5e6 --- a/pw_multiScriptEditor/widgets/findWidget.py +++ b/pw_multiScriptEditor/widgets/findWidget.py @@ -1,20 +1,14 @@ -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * +from Qt import QtCore, QtWidgets import findWidget_UIs as ui -class findWidgetClass(QWidget, ui.Ui_findReplace): - searchSignal = Signal(str) - replaceSignal = Signal(list) - replaceAllSignal = Signal(list) +class findWidgetClass(QtWidgets.QWidget, ui.Ui_findReplace): + searchSignal = QtCore.Signal(str) + replaceSignal = QtCore.Signal(list) + replaceAllSignal = QtCore.Signal(list) def __init__(self, parent): super(findWidgetClass, self).__init__(parent) self.setupUi(self) - self.setWindowFlags(Qt.Tool) + self.setWindowFlags(QtCore.Qt.Tool) center = parent.parent().mapToGlobal(parent.geometry().center()) myGeo = self.geometry() myGeo.moveCenter(center) @@ -29,21 +23,21 @@ def __init__(self, parent): def search(self): self.searchSignal.emit(self.find_le.text()) - QTimer.singleShot(10, self.find_le.setFocus) + QtCore.QTimer.singleShot(10, self.find_le.setFocus) def replace(self): find = self.find_le.text() rep = self.replace_le.text() self.replaceSignal.emit([find, rep]) - QTimer.singleShot(10, self.replace_le.setFocus) + QtCore.QTimer.singleShot(10, self.replace_le.setFocus) def replaceAll(self): find = self.find_le.text() rep = self.replace_le.text() self.replaceAllSignal.emit([find, rep]) - QTimer.singleShot(10, self.replace_le.setFocus) + QtCore.QTimer.singleShot(10, self.replace_le.setFocus) def keyPressEvent(self, event): - if event.key() == Qt.Key_Escape: + if event.key() == QtCore.Qt.Key_Escape: self.close() - super(findWidgetClass, self).keyPressEvent(event) \ No newline at end of file + super(findWidgetClass, self).keyPressEvent(event) diff --git a/pw_multiScriptEditor/widgets/findWidget_UIs.py b/pw_multiScriptEditor/widgets/findWidget_UIs.py index e438a80..e247187 100644 --- a/pw_multiScriptEditor/widgets/findWidget_UIs.py +++ b/pw_multiScriptEditor/widgets/findWidget_UIs.py @@ -1,56 +1,49 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'D:\Dropbox\Dropbox\pw_prefs\RnD\tools\pw_scriptEditor\pw_multiScriptEditor\widgets\findWidget.ui' +# Form implementation generated from reading ui file '/Users/johannes/PycharmProjects/pw_MultiScriptEditor/pw_multiScriptEditor/widgets/findWidget.ui' # -# Created: Thu Apr 02 15:51:34 2015 -# by: pyside-uic 0.2.15 running on PySide 1.2.2 +# Created: Sat Apr 28 00:29:02 2018 +# by: pyside2-uic running on PySide2 5.9.0a1.dev1524638381 # # WARNING! All changes made in this file will be lost! -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * - +from Qt import QtCore, QtCompat, QtWidgets class Ui_findReplace(object): def setupUi(self, findReplace): findReplace.setObjectName("findReplace") findReplace.resize(246, 101) - self.verticalLayout = QVBoxLayout(findReplace) + self.verticalLayout = QtWidgets.QVBoxLayout(findReplace) self.verticalLayout.setObjectName("verticalLayout") - self.gridLayout = QGridLayout() + self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setObjectName("gridLayout") - self.replace_le = QLineEdit(findReplace) + self.replace_le = QtWidgets.QLineEdit(findReplace) self.replace_le.setObjectName("replace_le") self.gridLayout.addWidget(self.replace_le, 1, 0, 1, 1) - self.find_le = QLineEdit(findReplace) + self.find_le = QtWidgets.QLineEdit(findReplace) self.find_le.setObjectName("find_le") self.gridLayout.addWidget(self.find_le, 0, 0, 1, 1) - self.find_btn = QPushButton(findReplace) + self.find_btn = QtWidgets.QPushButton(findReplace) self.find_btn.setObjectName("find_btn") self.gridLayout.addWidget(self.find_btn, 0, 1, 1, 1) - self.replace_btn = QPushButton(findReplace) + self.replace_btn = QtWidgets.QPushButton(findReplace) self.replace_btn.setObjectName("replace_btn") self.gridLayout.addWidget(self.replace_btn, 1, 1, 1, 1) - self.replaceAll_btn = QPushButton(findReplace) + self.replaceAll_btn = QtWidgets.QPushButton(findReplace) self.replaceAll_btn.setObjectName("replaceAll_btn") self.gridLayout.addWidget(self.replaceAll_btn, 2, 1, 1, 1) self.verticalLayout.addLayout(self.gridLayout) self.retranslateUi(findReplace) - QMetaObject.connectSlotsByName(findReplace) + QtCore.QMetaObject.connectSlotsByName(findReplace) findReplace.setTabOrder(self.find_le, self.replace_le) findReplace.setTabOrder(self.replace_le, self.find_btn) findReplace.setTabOrder(self.find_btn, self.replace_btn) findReplace.setTabOrder(self.replace_btn, self.replaceAll_btn) def retranslateUi(self, findReplace): - findReplace.setWindowTitle(QApplication.translate("findReplace", "Find and Replace", None)) - self.find_btn.setText(QApplication.translate("findReplace", "Find", None)) - self.replace_btn.setText(QApplication.translate("findReplace", "Replace", None)) - self.replaceAll_btn.setText(QApplication.translate("findReplace", "Replace All", None)) + findReplace.setWindowTitle(QtCompat.translate("findReplace", "Find and Replace", None, -1)) + self.find_btn.setText(QtCompat.translate("findReplace", "Find", None, -1)) + self.replace_btn.setText(QtCompat.translate("findReplace", "Replace", None, -1)) + self.replaceAll_btn.setText(QtCompat.translate("findReplace", "Replace All", None, -1)) diff --git a/pw_multiScriptEditor/widgets/inputWidget.py b/pw_multiScriptEditor/widgets/inputWidget.py index c95ddd5..632d524 100644 --- a/pw_multiScriptEditor/widgets/inputWidget.py +++ b/pw_multiScriptEditor/widgets/inputWidget.py @@ -1,10 +1,5 @@ -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * +from Qt import QtCore, QtGui, QtWidgets + import re import jedi from pythonSyntax import syntaxHighLighter @@ -23,13 +18,13 @@ indentLen = 4 minimumFontSize = 10 -escapeButtons = [Qt.Key_Return, Qt.Key_Enter, Qt.Key_Left, Qt.Key_Right, Qt.Key_Home, Qt.Key_End, Qt.Key_PageUp, Qt.Key_PageDown, Qt.Key_Delete, Qt.Key_Insert, Qt.Key_Escape] +escapeButtons = [QtCore.Qt.Key_Return, QtCore.Qt.Key_Enter, QtCore.Qt.Key_Left, QtCore.Qt.Key_Right, QtCore.Qt.Key_Home, QtCore.Qt.Key_End, QtCore.Qt.Key_PageUp, QtCore.Qt.Key_PageDown, QtCore.Qt.Key_Delete, QtCore.Qt.Key_Insert, QtCore.Qt.Key_Escape] font_name = 'Lucida Console' -class inputClass(QTextEdit): - executeSignal = Signal() - saveSignal = Signal() - inputSignal = Signal() +class inputClass(QtWidgets.QTextEdit): + executeSignal = QtCore.Signal() + saveSignal = QtCore.Signal() + inputSignal = QtCore.Signal() def __init__(self, parent, desk=None): # https://github.com/davidhalter/jedi @@ -37,9 +32,9 @@ def __init__(self, parent, desk=None): super(inputClass, self).__init__(parent) self.p = parent self.desk = desk - self.setWordWrapMode(QTextOption.NoWrap) - self.document().setDefaultFont(QFont(font_name, minimumFontSize, QFont.Normal)) - metrics = QFontMetrics(self.document().defaultFont()) + self.setWordWrapMode(QtGui.QTextOption.NoWrap) + self.document().setDefaultFont(QtGui.QFont(font_name, minimumFontSize, QtGui.QFont.Normal)) + metrics = QtGui.QFontMetrics(self.document().defaultFont()) self.setTabStopWidth(4 * metrics.width(' ')) self.setAcceptDrops(True) self.fs = 12 @@ -54,12 +49,12 @@ def __init__(self, parent, desk=None): def focusOutEvent(self, event): self.saveSignal.emit() # self.completer.hideMe() - QTextEdit.focusOutEvent(self,event) + QtWidgets.QTextEdit.focusOutEvent(self,event) def hideEvent(self, event): self.completer.updateCompleteList() try: - QTextEdit.hideEvent(self,event) + QtWidgets.QTextEdit.hideEvent(self,event) except:pass def applyHightLighter(self, theme=None, qss=None): @@ -135,7 +130,7 @@ def moveCompleter(self): x = futureCompGeo.width() - i.width() y = futureCompGeo.height()+self.completer.lineHeight if (futureCompGeo.height()-i.height())>0 else 0 - pt = self.mapToGlobal(rec.bottomRight()) + QPoint(10-x, -y) + pt = self.mapToGlobal(rec.bottomRight()) + QtCore.QPoint(10-x, -y) # if managers.context == 'hou': # print self.mapToParent(self.geometry().topLeft()) self.completer.move(pt) @@ -149,8 +144,8 @@ def charBeforeCursor(self, cursor): def getCurrentIndent(self): cursor = self.textCursor() auto = self.charBeforeCursor(cursor) == ':' - cursor.movePosition(QTextCursor.MoveOperation.StartOfLine) - cursor.movePosition(QTextCursor.MoveOperation.EndOfLine,QTextCursor.KeepAnchor) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.StartOfLine) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.EndOfLine,QtGui.QTextCursor.KeepAnchor) line = cursor.selectedText() result = '' if line.strip(): @@ -166,7 +161,7 @@ def keyPressEvent(self, event): self.inputSignal.emit() parse = 0 # apply complete - if event.modifiers() == Qt.NoModifier and event.key() in [Qt.Key_Return , Qt.Key_Enter]: + if event.modifiers() == QtCore.Qt.NoModifier and event.key() in [QtCore.Qt.Key_Return , QtCore.Qt.Key_Enter]: if self.completer and self.completer.isVisible(): self.completer.applyCurrentComplete() return @@ -174,15 +169,15 @@ def keyPressEvent(self, event): else: add = self.getCurrentIndent() if add: - QTextEdit.keyPressEvent(self, event) + QtWidgets.QTextEdit.keyPressEvent(self, event) cursor = self.textCursor() cursor.insertText(add) self.setTextCursor(cursor) return # remove 4 spaces - elif event.modifiers() == Qt.NoModifier and event.key() == Qt.Key_Backspace: + elif event.modifiers() == QtCore.Qt.NoModifier and event.key() == QtCore.Qt.Key_Backspace: cursor = self.textCursor() - cursor.movePosition(QTextCursor.MoveOperation.StartOfLine,QTextCursor.KeepAnchor) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.StartOfLine,QtGui.QTextCursor.KeepAnchor) line = cursor.selectedText() if line: p = r" $" @@ -194,25 +189,25 @@ def keyPressEvent(self, event): self.setTextCursor(cursor) parse = 1 #comment - elif event.modifiers() == Qt.AltModifier and event.key() == Qt.Key_Q: + elif event.modifiers() == QtCore.Qt.AltModifier and event.key() == QtCore.Qt.Key_Q: self.p.tab.comment() return # execute selected - elif event.modifiers() == Qt.ControlModifier and event.key() in [Qt.Key_Return , Qt.Key_Enter]: + elif event.modifiers() == QtCore.Qt.ControlModifier and event.key() in [QtCore.Qt.Key_Return , QtCore.Qt.Key_Enter]: if self.completer: self.completer.updateCompleteList() self.executeSignal.emit() return # ignore Shift + Enter - elif event.modifiers() == Qt.ShiftModifier and event.key() in [Qt.Key_Return , Qt.Key_Enter]: + elif event.modifiers() == QtCore.Qt.ShiftModifier and event.key() in [QtCore.Qt.Key_Return , QtCore.Qt.Key_Enter]: return # duplicate - elif event.modifiers() == Qt.ControlModifier and event.key() == Qt.Key_D: + elif event.modifiers() == QtCore.Qt.ControlModifier and event.key() == QtCore.Qt.Key_D: self.duplicate() self.update() return # increase indent - elif event.key() == Qt.Key_Tab: + elif event.key() == QtCore.Qt.Key_Tab: if self.completer: if self.completer.isVisible(): self.completer.applyCurrentComplete() @@ -225,7 +220,7 @@ def keyPressEvent(self, event): self.insertPlainText (' ' * indentLen) return # decrease indent - elif event.key() == Qt.Key_Backtab: + elif event.key() == QtCore.Qt.Key_Backtab: self.selectBlocks() self.moveSelected(False) if self.completer: @@ -237,18 +232,18 @@ def keyPressEvent(self, event): self.completer.updateCompleteList() self.setFocus() # go to completer - elif event.key() == Qt.Key_Down or event.key() == Qt.Key_Up: + elif event.key() == QtCore.Qt.Key_Down or event.key() == QtCore.Qt.Key_Up: if self.completer.isVisible(): self.completer.activateCompleter(event.key()) self.completer.setFocus() return # just close completer - elif not event.modifiers() == Qt.NoModifier and not event.modifiers() == Qt.ShiftModifier: + elif not event.modifiers() == QtCore.Qt.NoModifier and not event.modifiers() == QtCore.Qt.ShiftModifier: self.completer.updateCompleteList() else: parse = 1 - QTextEdit.keyPressEvent(self, event) + QtWidgets.QTextEdit.keyPressEvent(self, event) # start parse text if parse and event.text(): self.parseText() @@ -270,7 +265,7 @@ def moveSelected(self, inc): cursor.endEditBlock() newEnd = cursor.position() cursor.setPosition(start) - cursor.setPosition(newEnd, QTextCursor.KeepAnchor) + cursor.setPosition(newEnd, QtGui.QTextCursor.KeepAnchor) self.document().documentLayout().blockSignals(False) self.setTextCursor(cursor) self.update() @@ -283,9 +278,9 @@ def commentSelected(self): start = cursor.selectionStart() end = cursor.selectionEnd() cursor.setPosition(start) - cursor.movePosition(QTextCursor.MoveOperation.StartOfLine) - cursor.setPosition(end,QTextCursor.KeepAnchor) - cursor.movePosition(QTextCursor.MoveOperation.EndOfLine,QTextCursor.KeepAnchor) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.StartOfLine) + cursor.setPosition(end,QtGui.QTextCursor.KeepAnchor) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.EndOfLine,QtGui.QTextCursor.KeepAnchor) text = cursor.selection().toPlainText() self.document().documentLayout().blockSignals(False) # cursor.removeSelectedText() @@ -325,8 +320,8 @@ def fixLine(self, cursor, comp): pos = cursor.position() linePos = cursor.positionInBlock() - cursor.movePosition(QTextCursor.MoveOperation.StartOfLine) - cursor.movePosition(QTextCursor.MoveOperation.EndOfLine,QTextCursor.KeepAnchor) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.StartOfLine) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.EndOfLine,QtGui.QTextCursor.KeepAnchor) line = cursor.selectedText() cursor.removeSelectedText() @@ -351,7 +346,7 @@ def fixLine(self, cursor, comp): cursor.insertText(res) cursor.endEditBlock() cursor.clearSelection() - cursor.setPosition(pos+ofs,QTextCursor.MoveAnchor) + cursor.setPosition(pos+ofs,QtGui.QTextCursor.MoveAnchor) return cursor def duplicate(self): @@ -362,11 +357,11 @@ def duplicate(self): end = cursor.selectionEnd() cursor.setPosition(end) cursor.insertText(sel) - cursor.setPosition(end,QTextCursor.KeepAnchor) + cursor.setPosition(end,QtGui.QTextCursor.KeepAnchor) self.setTextCursor(cursor) else: # duplicate line - cursor.movePosition(QTextCursor.MoveOperation.StartOfLine) - cursor.movePosition(QTextCursor.MoveOperation.EndOfLine,QTextCursor.KeepAnchor) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.StartOfLine) + cursor.movePosition(QtGui.QTextCursor.MoveOperation.EndOfLine,QtGui.QTextCursor.KeepAnchor) line = cursor.selectedText() cursor.clearSelection() cursor.insertText('\n'+line) @@ -394,9 +389,9 @@ def selectBlocks(self): cursor = self.textCursor() start, end = cursor.selectionStart(), cursor.selectionEnd() cursor.setPosition(start) - cursor.movePosition(QTextCursor.StartOfLine) - cursor.setPosition(end, QTextCursor.KeepAnchor) - cursor.movePosition(QTextCursor.EndOfLine, QTextCursor.KeepAnchor) + cursor.movePosition(QtGui.QTextCursor.StartOfLine) + cursor.setPosition(end, QtGui.QTextCursor.KeepAnchor) + cursor.movePosition(QtGui.QTextCursor.EndOfLine, QtGui.QTextCursor.KeepAnchor) self.setTextCursor(cursor) self.document().documentLayout().blockSignals(False) @@ -415,15 +410,15 @@ def addText(self, text): ########################### DROP def dragEnterEvent(self, event): event.acceptProposedAction() - QTextEdit.dragEnterEvent(self,event) + QtWidgets.QTextEdit.dragEnterEvent(self,event) def dragMoveEvent(self, event): event.acceptProposedAction() - QTextEdit.dragMoveEvent(self,event) + QtWidgets.QTextEdit.dragMoveEvent(self,event) def dragLeaveEvent(self, event): event.accept() - QTextEdit.dragLeaveEvent(self,event) + QtWidgets.QTextEdit.dragLeaveEvent(self,event) def dropEvent(self, event): event.acceptProposedAction() @@ -433,15 +428,15 @@ def dropEvent(self, event): namespace = self.p.namespace text = managers.dropEvents[managers.context](namespace, text, event) mim.setText(text) - QTextEdit.dropEvent(self,event) + QtWidgets.QTextEdit.dropEvent(self,event) else: - QTextEdit.dropEvent(self,event) + QtWidgets.QTextEdit.dropEvent(self,event) ################################################################ def wheelEvent(self, event): - if event.modifiers() == Qt.ControlModifier: + if event.modifiers() == QtCore.Qt.ControlModifier: if self.completer: self.completer.updateCompleteList() if event.delta() > 0: @@ -452,7 +447,7 @@ def wheelEvent(self, event): # self.zoomOut(1) # super(inputClass, self).wheelEvent(event) else: - QTextEdit.wheelEvent(self, event) + QtWidgets.QTextEdit.wheelEvent(self, event) def changeFontSize(self, up): if managers.context == 'hou': @@ -505,7 +500,7 @@ def mousePressEvent(self, event): # if event.button() == Qt.LeftButton: # super(inputClass, self).mousePressEvent(event) # else: - QTextEdit.mousePressEvent(self,event) + QtWidgets.QTextEdit.mousePressEvent(self,event) def selectWord(self, pattern, number, replace=None): text = self.toPlainText() @@ -516,7 +511,7 @@ def selectWord(self, pattern, number, replace=None): if number > len(indexis)-1: number = 0 cursor.setPosition(indexis[number][0]) - cursor.setPosition(indexis[number][1], QTextCursor.KeepAnchor) + cursor.setPosition(indexis[number][1], QtGui.QTextCursor.KeepAnchor) if replace: cursor.removeSelectedText() cursor.insertText(replace) diff --git a/pw_multiScriptEditor/widgets/numBarWidget.py b/pw_multiScriptEditor/widgets/numBarWidget.py index cafef46..6b2a0b5 100644 --- a/pw_multiScriptEditor/widgets/numBarWidget.py +++ b/pw_multiScriptEditor/widgets/numBarWidget.py @@ -1,15 +1,9 @@ -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * +from Qt import QtCore, QtGui, QtWidgets import managers -class lineNumberBarClass(QWidget): +class lineNumberBarClass(QtWidgets.QWidget): def __init__(self, edit, parent=None): - QWidget.__init__(self, parent) + QtWidgets.QWidget.__init__(self, parent) self.edit = edit self.highest_line = 0 self.setMinimumWidth(30) @@ -30,27 +24,27 @@ def update(self, *args): width = ((self.fontMetrics().width(str(self.highest_line)) + 7))*(fontSize/13.0) if self.width() != width and width > 10: self.setFixedWidth(width) - bg = self.palette().brush(QPalette.Normal,QPalette.Window).color().toHsv() + bg = self.palette().brush(QtGui.QPalette.Normal,QtGui.QPalette.Window).color().toHsv() v = bg.value() if v > 20: v = int(bg.value()*0.8) else: v = int(bg.value()*1.1) - self.bg = QColor.fromHsv(bg.hue(), bg.saturation(), v) - QWidget.update(self, *args) + self.bg = QtGui.QColor.fromHsv(bg.hue(), bg.saturation(), v) + QtWidgets.QWidget.update(self, *args) def paintEvent(self, event): contents_y = self.edit.verticalScrollBar().value() page_bottom = contents_y + self.edit.viewport().height() font_metrics = self.fontMetrics() current_block = self.edit.document().findBlock(self.edit.textCursor().position()) - painter = QPainter(self) + painter = QtGui.QPainter(self) line_count = 0 # Iterate over all text blocks in the document. block = self.edit.document().begin() if managers.context == 'hou': fontSize = self.edit.fs - font = QFont('monospace', fontSize*0.7) + font = QtGui.QFont('monospace', fontSize*0.7) offset = (font_metrics.ascent() + font_metrics.descent())/2 else: fontSize = self.edit.font().pointSize() @@ -59,7 +53,7 @@ def paintEvent(self, event): offset = font_metrics.ascent() + font_metrics.descent() color = painter.pen().color() painter.setFont(font) - align = Qt.AlignRight + align = QtCore.Qt.AlignRight while block.isValid(): line_count += 1 # The top left position of the block in the document @@ -69,21 +63,21 @@ def paintEvent(self, event): if position.y() == page_bottom: break - rec = QRect(0, + rec = QtCore.QRect(0, round(position.y()) - contents_y, self.width()-5, fontSize + offset) # draw line rect if block == current_block: - painter.setPen(Qt.NoPen) - painter.setBrush(QBrush(self.bg)) - painter.drawRect(QRect(0, + painter.setPen(QtCore.Qt.NoPen) + painter.setBrush(QtGui.QBrush(self.bg)) + painter.drawRect(QtCore.QRect(0, round(position.y()) - contents_y, self.width(), fontSize + (offset/2) )) # #restore color - painter.setPen(QPen(color)) + painter.setPen(QtGui.QPen(color)) # draw text painter.drawText(rec, align, str(line_count)) @@ -92,7 +86,7 @@ def paintEvent(self, event): block = block.next() self.highest_line = line_count painter.end() - QWidget.paintEvent(self, event) + QtWidgets.QWidget.paintEvent(self, event) def eventFilter(self, object, event): # Update the line numbers for all events on the text edit and the viewport. @@ -100,4 +94,4 @@ def eventFilter(self, object, event): if object in (self.edit, self.edit.viewport()): self.update() return False - return QWidget.eventFilter(object, event) \ No newline at end of file + return QtWidgets.QWidget.eventFilter(object, event) diff --git a/pw_multiScriptEditor/widgets/outputWidget.py b/pw_multiScriptEditor/widgets/outputWidget.py index 60a4305..78e085d 100644 --- a/pw_multiScriptEditor/widgets/outputWidget.py +++ b/pw_multiScriptEditor/widgets/outputWidget.py @@ -1,29 +1,25 @@ -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * + +from Qt import QtCore, QtGui, QtWidgets + from managers import context -class outputClass(QTextBrowser): +class outputClass(QtWidgets.QTextBrowser): def __init__(self): super(outputClass, self).__init__() - self.setWordWrapMode(QTextOption.NoWrap) + self.setWordWrapMode(QtGui.QTextOption.NoWrap) self.fs = 14 - self.document().setDefaultFont(QFont("monospace", self.fs, QFont.Normal)) - metrics = QFontMetrics(self.document().defaultFont()) + self.document().setDefaultFont(QtGui.QFont("monospace", self.fs, QtGui.QFont.Normal)) + metrics = QtGui.QFontMetrics(self.document().defaultFont()) self.setTabStopWidth(4 * metrics.width(' ')) self.setMouseTracking(1) def showMessage(self, msg): - self.moveCursor(QTextCursor.End) + self.moveCursor(QtGui.QTextCursor.End) cursor = self.textCursor() cursor.insertText(str(msg)+'\n') self.setTextCursor(cursor) - self.moveCursor(QTextCursor.End) + self.moveCursor(QtGui.QTextCursor.End) self.ensureCursorVisible() def setTextEditFontSize(self, size): @@ -35,13 +31,13 @@ def setTextEditFontSize(self, size): def wheelEvent(self, event): - if event.modifiers() == Qt.ControlModifier: + if event.modifiers() == QtCore.Qt.ControlModifier: if event.delta() > 0: self.changeFontSize(True) else: self.changeFontSize(False) # super(outputClass, self).wheelEvent(event) - QTextBrowser.wheelEvent(self, event) + QtWidgets.QTextBrowser.wheelEvent(self, event) def changeFontSize(self, up): if context == 'hou': @@ -68,4 +64,4 @@ def changeFontSize(self, up): # # super(outputClass, self).mousePressEvent(event) # QTextBrowser.mousePressEvent(self, event) # else: - # QTextBrowser.mousePressEvent(self, event) \ No newline at end of file + # QTextBrowser.mousePressEvent(self, event) diff --git a/pw_multiScriptEditor/widgets/pythonSyntax/syntaxHighLighter.py b/pw_multiScriptEditor/widgets/pythonSyntax/syntaxHighLighter.py index f30a440..1444039 100644 --- a/pw_multiScriptEditor/widgets/pythonSyntax/syntaxHighLighter.py +++ b/pw_multiScriptEditor/widgets/pythonSyntax/syntaxHighLighter.py @@ -1,18 +1,13 @@ -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * +from Qt import QtCore, QtGui + import re import design import keywords -class PythonHighlighterClass (QSyntaxHighlighter): +class PythonHighlighterClass (QtGui.QSyntaxHighlighter): def __init__(self, document, colors=None): - QSyntaxHighlighter.__init__(self, document) + QtGui.QSyntaxHighlighter.__init__(self, document) if colors: self.colors = colors @@ -20,8 +15,8 @@ def __init__(self, document, colors=None): self.colors = design.getColors() # Multi line comments - self.tri_single = (QRegExp("'''"), 1, self.getStyle(self.colors['docstring'])) - self.tri_double = (QRegExp('"""'), 2, self.getStyle(self.colors['docstring'])) + self.tri_single = (QtCore.QRegExp("'''"), 1, self.getStyle(self.colors['docstring'])) + self.tri_double = (QtCore.QRegExp('"""'), 2, self.getStyle(self.colors['docstring'])) rules = [] # defaults @@ -60,15 +55,15 @@ def __init__(self, document, colors=None): # Build a QRegExp for each pattern - self.rules = [(QRegExp(pat), index, fmt) for (pat, index, fmt) in rules] + self.rules = [(QtCore.QRegExp(pat), index, fmt) for (pat, index, fmt) in rules] # self.rehighlight() def getStyle(self, color, bold=False): - brush = QBrush( QColor(*color)) - f = QTextCharFormat() + brush = QtGui.QBrush( QtGui.QColor(*color)) + f = QtGui.QTextCharFormat() if bold: - f.setFontWeight( QFont.Bold ) + f.setFontWeight( QtGui.QFont.Bold ) f.setForeground( brush ) return f diff --git a/pw_multiScriptEditor/widgets/scriptEditor_UIs.py b/pw_multiScriptEditor/widgets/scriptEditor_UIs.py index 8c983a3..ba3242f 100644 --- a/pw_multiScriptEditor/widgets/scriptEditor_UIs.py +++ b/pw_multiScriptEditor/widgets/scriptEditor_UIs.py @@ -1,195 +1,189 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'D:\Dropbox\Dropbox\pw_prefs\RnD\tools\pw_scriptEditor\pw_multiScriptEditor\widgets\scriptEditor.ui' -# -# Created: Mon Apr 06 09:46:03 2015 -# by: pyside-uic 0.2.15 running on PySide 1.2.2 -# -# WARNING! All changes made in this file will be lost! - -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * - -class Ui_scriptEditor(object): - def setupUi(self, scriptEditor): - scriptEditor.setObjectName("scriptEditor") - scriptEditor.resize(800, 609) - self.centralwidget = QWidget(scriptEditor) - self.centralwidget.setObjectName("centralwidget") - self.verticalLayout_2 = QVBoxLayout(self.centralwidget) - self.verticalLayout_2.setSpacing(0) - self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.frame_2 = QFrame(self.centralwidget) - self.frame_2.setFrameShape(QFrame.NoFrame) - self.frame_2.setFrameShadow(QFrame.Raised) - self.frame_2.setObjectName("frame_2") - self.verticalLayout = QVBoxLayout(self.frame_2) - self.verticalLayout.setContentsMargins(3, 3, 3, 3) - self.verticalLayout.setObjectName("verticalLayout") - self.splitter = QSplitter(self.frame_2) - self.splitter.setOrientation(Qt.Vertical) - self.splitter.setObjectName("splitter") - self.verticalLayoutWidget = QWidget(self.splitter) - self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") - self.out_ly = QVBoxLayout(self.verticalLayoutWidget) - self.out_ly.setContentsMargins(0, 0, 0, 0) - self.out_ly.setObjectName("out_ly") - self.verticalLayoutWidget_2 = QWidget(self.splitter) - self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2") - self.in_ly = QVBoxLayout(self.verticalLayoutWidget_2) - self.in_ly.setContentsMargins(0, 0, 0, 0) - self.in_ly.setObjectName("in_ly") - self.verticalLayout.addWidget(self.splitter) - self.verticalLayout_2.addWidget(self.frame_2) - scriptEditor.setCentralWidget(self.centralwidget) - self.menubar = QMenuBar(scriptEditor) - self.menubar.setGeometry(QRect(0, 0, 800, 21)) - self.menubar.setObjectName("menubar") - self.file_menu = QMenu(self.menubar) - self.file_menu.setTearOffEnabled(True) - self.file_menu.setObjectName("file_menu") - self.help_menu = QMenu(self.menubar) - self.help_menu.setTearOffEnabled(True) - self.help_menu.setObjectName("help_menu") - self.tools_menu = QMenu(self.menubar) - self.tools_menu.setTearOffEnabled(True) - self.tools_menu.setObjectName("tools_menu") - self.options_menu = QMenu(self.menubar) - self.options_menu.setTearOffEnabled(True) - self.options_menu.setObjectName("options_menu") - self.theme_menu = QMenu(self.options_menu) - self.theme_menu.setTearOffEnabled(True) - self.theme_menu.setObjectName("theme_menu") - self.run_menu = QMenu(self.menubar) - self.run_menu.setTearOffEnabled(True) - self.run_menu.setObjectName("run_menu") - scriptEditor.setMenuBar(self.menubar) - self.toolBar = QToolBar(scriptEditor) - self.toolBar.setObjectName("toolBar") - scriptEditor.addToolBar(Qt.TopToolBarArea, self.toolBar) - self.clearHistory_act = QAction(scriptEditor) - self.clearHistory_act.setObjectName("clearHistory_act") - self.save_act = QAction(scriptEditor) - self.save_act.setObjectName("save_act") - self.load_act = QAction(scriptEditor) - self.load_act.setObjectName("load_act") - self.exit_act = QAction(scriptEditor) - self.exit_act.setObjectName("exit_act") - self.openManual_act = QAction(scriptEditor) - self.openManual_act.setObjectName("openManual_act") - self.quickHelp_act = QAction(scriptEditor) - self.quickHelp_act.setObjectName("quickHelp_act") - self.saveSeccion_act = QAction(scriptEditor) - self.saveSeccion_act.setObjectName("saveSeccion_act") - self.tabToSpaces_act = QAction(scriptEditor) - self.tabToSpaces_act.setObjectName("tabToSpaces_act") - self.spacesToTabs_act = QAction(scriptEditor) - self.spacesToTabs_act.setObjectName("spacesToTabs_act") - self.settingsFile_act = QAction(scriptEditor) - self.settingsFile_act.setObjectName("settingsFile_act") - self.editTheme_act = QAction(scriptEditor) - self.editTheme_act.setObjectName("editTheme_act") - self.shortcuts_act = QAction(scriptEditor) - self.shortcuts_act.setObjectName("shortcuts_act") - self.donate_act = QAction(scriptEditor) - self.donate_act.setObjectName("donate_act") - self.about_act = QAction(scriptEditor) - self.about_act.setObjectName("about_act") - self.execAll_act = QAction(scriptEditor) - self.execAll_act.setObjectName("execAll_act") - self.execSel_act = QAction(scriptEditor) - self.execSel_act.setObjectName("execSel_act") - self.copy_act = QAction(scriptEditor) - self.copy_act.setObjectName("copy_act") - self.cut_act = QAction(scriptEditor) - self.cut_act.setObjectName("cut_act") - self.paste_act = QAction(scriptEditor) - self.paste_act.setObjectName("paste_act") - self.find_act = QAction(scriptEditor) - self.find_act.setObjectName("find_act") - self.undo_act = QAction(scriptEditor) - self.undo_act.setObjectName("undo_act") - self.redo_act = QAction(scriptEditor) - self.redo_act.setObjectName("redo_act") - self.printHelp_act = QAction(scriptEditor) - self.printHelp_act.setObjectName("printHelp_act") - self.comment_cat = QAction(scriptEditor) - self.comment_cat.setObjectName("comment_cat") - self.file_menu.addAction(self.saveSeccion_act) - self.file_menu.addAction(self.save_act) - self.file_menu.addAction(self.load_act) - self.help_menu.addAction(self.openManual_act) - self.help_menu.addAction(self.shortcuts_act) - self.help_menu.addAction(self.donate_act) - self.help_menu.addSeparator() - self.help_menu.addAction(self.printHelp_act) - self.help_menu.addAction(self.about_act) - self.tools_menu.addAction(self.undo_act) - self.tools_menu.addAction(self.redo_act) - self.tools_menu.addSeparator() - self.tools_menu.addAction(self.copy_act) - self.tools_menu.addAction(self.cut_act) - self.tools_menu.addAction(self.paste_act) - self.tools_menu.addSeparator() - self.tools_menu.addAction(self.tabToSpaces_act) - self.tools_menu.addAction(self.comment_cat) - self.tools_menu.addAction(self.find_act) - self.theme_menu.addAction(self.editTheme_act) - self.theme_menu.addSeparator() - self.options_menu.addAction(self.theme_menu.menuAction()) - self.options_menu.addAction(self.settingsFile_act) - self.run_menu.addAction(self.execAll_act) - self.run_menu.addAction(self.execSel_act) - self.run_menu.addAction(self.clearHistory_act) - self.menubar.addAction(self.file_menu.menuAction()) - self.menubar.addAction(self.tools_menu.menuAction()) - self.menubar.addAction(self.run_menu.menuAction()) - self.menubar.addAction(self.options_menu.menuAction()) - self.menubar.addAction(self.help_menu.menuAction()) - self.toolBar.addAction(self.execAll_act) - self.toolBar.addAction(self.execSel_act) - self.toolBar.addAction(self.clearHistory_act) - - self.retranslateUi(scriptEditor) - QMetaObject.connectSlotsByName(scriptEditor) - - def retranslateUi(self, scriptEditor): - scriptEditor.setWindowTitle(QApplication.translate("scriptEditor", "MainWindow", None)) - self.file_menu.setTitle(QApplication.translate("scriptEditor", "File", None)) - self.help_menu.setTitle(QApplication.translate("scriptEditor", "Help", None)) - self.tools_menu.setTitle(QApplication.translate("scriptEditor", "Edit", None)) - self.options_menu.setTitle(QApplication.translate("scriptEditor", "Options", None)) - self.theme_menu.setTitle(QApplication.translate("scriptEditor", "Theme", None)) - self.run_menu.setTitle(QApplication.translate("scriptEditor", "Run", None)) - self.toolBar.setWindowTitle(QApplication.translate("scriptEditor", "toolBar", None)) - self.clearHistory_act.setText(QApplication.translate("scriptEditor", "Clear Output", None)) - self.save_act.setText(QApplication.translate("scriptEditor", "Save Script", None)) - self.load_act.setText(QApplication.translate("scriptEditor", "Load Script", None)) - self.exit_act.setText(QApplication.translate("scriptEditor", "Exit", None)) - self.openManual_act.setText(QApplication.translate("scriptEditor", "Manual", None)) - self.quickHelp_act.setText(QApplication.translate("scriptEditor", "Quick Help", None)) - self.saveSeccion_act.setText(QApplication.translate("scriptEditor", "Save session", None)) - self.tabToSpaces_act.setText(QApplication.translate("scriptEditor", "Tab to spaces", None)) - self.spacesToTabs_act.setText(QApplication.translate("scriptEditor", "Spaces to tab", None)) - self.settingsFile_act.setText(QApplication.translate("scriptEditor", "Open Settings Folder", None)) - self.editTheme_act.setText(QApplication.translate("scriptEditor", "Edit ...", None)) - self.shortcuts_act.setText(QApplication.translate("scriptEditor", "Show Shortcuts", None)) - self.donate_act.setText(QApplication.translate("scriptEditor", "Donate", None)) - self.about_act.setText(QApplication.translate("scriptEditor", "About", None)) - self.execAll_act.setText(QApplication.translate("scriptEditor", "Execute All", None)) - self.execSel_act.setText(QApplication.translate("scriptEditor", "Execute Selected", None)) - self.copy_act.setText(QApplication.translate("scriptEditor", "Copy", None)) - self.cut_act.setText(QApplication.translate("scriptEditor", "Cut", None)) - self.paste_act.setText(QApplication.translate("scriptEditor", "Paste", None)) - self.find_act.setText(QApplication.translate("scriptEditor", "Find and Replace", None)) - self.undo_act.setText(QApplication.translate("scriptEditor", "Undo", None)) - self.redo_act.setText(QApplication.translate("scriptEditor", "Redo", None)) - self.printHelp_act.setText(QApplication.translate("scriptEditor", "Print Help", None)) - self.comment_cat.setText(QApplication.translate("scriptEditor", "Comment", None)) - +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '/Users/johannes/PycharmProjects/pw_MultiScriptEditor/pw_multiScriptEditor/widgets/scriptEditor.ui' +# +# Created: Sat Apr 28 00:29:02 2018 +# by: pyside2-uic running on PySide2 5.9.0a1.dev1524638381 +# +# WARNING! All changes made in this file will be lost! + +from Qt import QtCore, QtCompat, QtWidgets + +class Ui_scriptEditor(object): + def setupUi(self, scriptEditor): + scriptEditor.setObjectName("scriptEditor") + scriptEditor.resize(800, 609) + self.centralwidget = QtWidgets.QWidget(scriptEditor) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout_2.setSpacing(0) + self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.frame_2 = QtWidgets.QFrame(self.centralwidget) + self.frame_2.setFrameShape(QtWidgets.QFrame.NoFrame) + self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised) + self.frame_2.setObjectName("frame_2") + self.verticalLayout = QtWidgets.QVBoxLayout(self.frame_2) + self.verticalLayout.setContentsMargins(3, 3, 3, 3) + self.verticalLayout.setObjectName("verticalLayout") + self.splitter = QtWidgets.QSplitter(self.frame_2) + self.splitter.setOrientation(QtCore.Qt.Vertical) + self.splitter.setObjectName("splitter") + self.verticalLayoutWidget = QtWidgets.QWidget(self.splitter) + self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") + self.out_ly = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) + self.out_ly.setContentsMargins(0, 0, 0, 0) + self.out_ly.setObjectName("out_ly") + self.verticalLayoutWidget_2 = QtWidgets.QWidget(self.splitter) + self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2") + self.in_ly = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2) + self.in_ly.setContentsMargins(0, 0, 0, 0) + self.in_ly.setObjectName("in_ly") + self.verticalLayout.addWidget(self.splitter) + self.verticalLayout_2.addWidget(self.frame_2) + scriptEditor.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar() + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21)) + self.menubar.setObjectName("menubar") + self.file_menu = QtWidgets.QMenu(self.menubar) + self.file_menu.setTearOffEnabled(True) + self.file_menu.setObjectName("file_menu") + self.help_menu = QtWidgets.QMenu(self.menubar) + self.help_menu.setTearOffEnabled(True) + self.help_menu.setObjectName("help_menu") + self.tools_menu = QtWidgets.QMenu(self.menubar) + self.tools_menu.setTearOffEnabled(True) + self.tools_menu.setObjectName("tools_menu") + self.options_menu = QtWidgets.QMenu(self.menubar) + self.options_menu.setTearOffEnabled(True) + self.options_menu.setObjectName("options_menu") + self.theme_menu = QtWidgets.QMenu(self.options_menu) + self.theme_menu.setTearOffEnabled(True) + self.theme_menu.setObjectName("theme_menu") + self.run_menu = QtWidgets.QMenu(self.menubar) + self.run_menu.setTearOffEnabled(True) + self.run_menu.setObjectName("run_menu") + scriptEditor.setMenuBar(self.menubar) + self.toolBar = QtWidgets.QToolBar(scriptEditor) + self.toolBar.setObjectName("toolBar") + scriptEditor.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar) + self.clearHistory_act = QtWidgets.QAction(scriptEditor) + self.clearHistory_act.setObjectName("clearHistory_act") + self.save_act = QtWidgets.QAction(scriptEditor) + self.save_act.setObjectName("save_act") + self.load_act = QtWidgets.QAction(scriptEditor) + self.load_act.setObjectName("load_act") + self.exit_act = QtWidgets.QAction(scriptEditor) + self.exit_act.setObjectName("exit_act") + self.openManual_act = QtWidgets.QAction(scriptEditor) + self.openManual_act.setObjectName("openManual_act") + self.quickHelp_act = QtWidgets.QAction(scriptEditor) + self.quickHelp_act.setObjectName("quickHelp_act") + self.saveSeccion_act = QtWidgets.QAction(scriptEditor) + self.saveSeccion_act.setObjectName("saveSeccion_act") + self.tabToSpaces_act = QtWidgets.QAction(scriptEditor) + self.tabToSpaces_act.setObjectName("tabToSpaces_act") + self.spacesToTabs_act = QtWidgets.QAction(scriptEditor) + self.spacesToTabs_act.setObjectName("spacesToTabs_act") + self.settingsFile_act = QtWidgets.QAction(scriptEditor) + self.settingsFile_act.setObjectName("settingsFile_act") + self.editTheme_act = QtWidgets.QAction(scriptEditor) + self.editTheme_act.setObjectName("editTheme_act") + self.shortcuts_act = QtWidgets.QAction(scriptEditor) + self.shortcuts_act.setObjectName("shortcuts_act") + self.donate_act = QtWidgets.QAction(scriptEditor) + self.donate_act.setObjectName("donate_act") + self.about_act = QtWidgets.QAction(scriptEditor) + self.about_act.setObjectName("about_act") + self.execAll_act = QtWidgets.QAction(scriptEditor) + self.execAll_act.setObjectName("execAll_act") + self.execSel_act = QtWidgets.QAction(scriptEditor) + self.execSel_act.setObjectName("execSel_act") + self.copy_act = QtWidgets.QAction(scriptEditor) + self.copy_act.setObjectName("copy_act") + self.cut_act = QtWidgets.QAction(scriptEditor) + self.cut_act.setObjectName("cut_act") + self.paste_act = QtWidgets.QAction(scriptEditor) + self.paste_act.setObjectName("paste_act") + self.find_act = QtWidgets.QAction(scriptEditor) + self.find_act.setObjectName("find_act") + self.undo_act = QtWidgets.QAction(scriptEditor) + self.undo_act.setObjectName("undo_act") + self.redo_act = QtWidgets.QAction(scriptEditor) + self.redo_act.setObjectName("redo_act") + self.printHelp_act = QtWidgets.QAction(scriptEditor) + self.printHelp_act.setObjectName("printHelp_act") + self.comment_cat = QtWidgets.QAction(scriptEditor) + self.comment_cat.setObjectName("comment_cat") + self.file_menu.addAction(self.saveSeccion_act) + self.file_menu.addAction(self.save_act) + self.file_menu.addAction(self.load_act) + self.help_menu.addAction(self.openManual_act) + self.help_menu.addAction(self.shortcuts_act) + self.help_menu.addAction(self.donate_act) + self.help_menu.addSeparator() + self.help_menu.addAction(self.printHelp_act) + self.help_menu.addAction(self.about_act) + self.tools_menu.addAction(self.undo_act) + self.tools_menu.addAction(self.redo_act) + self.tools_menu.addSeparator() + self.tools_menu.addAction(self.copy_act) + self.tools_menu.addAction(self.cut_act) + self.tools_menu.addAction(self.paste_act) + self.tools_menu.addSeparator() + self.tools_menu.addAction(self.tabToSpaces_act) + self.tools_menu.addAction(self.comment_cat) + self.tools_menu.addAction(self.find_act) + self.theme_menu.addAction(self.editTheme_act) + self.theme_menu.addSeparator() + self.options_menu.addAction(self.theme_menu.menuAction()) + self.options_menu.addAction(self.settingsFile_act) + self.run_menu.addAction(self.execAll_act) + self.run_menu.addAction(self.execSel_act) + self.run_menu.addAction(self.clearHistory_act) + self.menubar.addAction(self.file_menu.menuAction()) + self.menubar.addAction(self.tools_menu.menuAction()) + self.menubar.addAction(self.run_menu.menuAction()) + self.menubar.addAction(self.options_menu.menuAction()) + self.menubar.addAction(self.help_menu.menuAction()) + self.toolBar.addAction(self.execAll_act) + self.toolBar.addAction(self.execSel_act) + self.toolBar.addAction(self.clearHistory_act) + + self.retranslateUi(scriptEditor) + QtCore.QMetaObject.connectSlotsByName(scriptEditor) + + def retranslateUi(self, scriptEditor): + scriptEditor.setWindowTitle(QtCompat.translate("scriptEditor", "MainWindow", None, -1)) + self.file_menu.setTitle(QtCompat.translate("scriptEditor", "File", None, -1)) + self.help_menu.setTitle(QtCompat.translate("scriptEditor", "Help", None, -1)) + self.tools_menu.setTitle(QtCompat.translate("scriptEditor", "Edit", None, -1)) + self.options_menu.setTitle(QtCompat.translate("scriptEditor", "Options", None, -1)) + self.theme_menu.setTitle(QtCompat.translate("scriptEditor", "Theme", None, -1)) + self.run_menu.setTitle(QtCompat.translate("scriptEditor", "Run", None, -1)) + self.toolBar.setWindowTitle(QtCompat.translate("scriptEditor", "toolBar", None, -1)) + self.clearHistory_act.setText(QtCompat.translate("scriptEditor", "Clear Output", None, -1)) + self.save_act.setText(QtCompat.translate("scriptEditor", "Save Script", None, -1)) + self.load_act.setText(QtCompat.translate("scriptEditor", "Load Script", None, -1)) + self.exit_act.setText(QtCompat.translate("scriptEditor", "Exit", None, -1)) + self.openManual_act.setText(QtCompat.translate("scriptEditor", "Manual", None, -1)) + self.quickHelp_act.setText(QtCompat.translate("scriptEditor", "Quick Help", None, -1)) + self.saveSeccion_act.setText(QtCompat.translate("scriptEditor", "Save session", None, -1)) + self.tabToSpaces_act.setText(QtCompat.translate("scriptEditor", "Tab to spaces", None, -1)) + self.spacesToTabs_act.setText(QtCompat.translate("scriptEditor", "Spaces to tab", None, -1)) + self.settingsFile_act.setText(QtCompat.translate("scriptEditor", "Open Settings Folder", None, -1)) + self.editTheme_act.setText(QtCompat.translate("scriptEditor", "Edit ...", None, -1)) + self.shortcuts_act.setText(QtCompat.translate("scriptEditor", "Show Shortcuts", None, -1)) + self.donate_act.setText(QtCompat.translate("scriptEditor", "Donate", None, -1)) + self.about_act.setText(QtCompat.translate("scriptEditor", "About", None, -1)) + self.execAll_act.setText(QtCompat.translate("scriptEditor", "Execute All", None, -1)) + self.execSel_act.setText(QtCompat.translate("scriptEditor", "Execute Selected", None, -1)) + self.copy_act.setText(QtCompat.translate("scriptEditor", "Copy", None, -1)) + self.cut_act.setText(QtCompat.translate("scriptEditor", "Cut", None, -1)) + self.paste_act.setText(QtCompat.translate("scriptEditor", "Paste", None, -1)) + self.find_act.setText(QtCompat.translate("scriptEditor", "Find and Replace", None, -1)) + self.undo_act.setText(QtCompat.translate("scriptEditor", "Undo", None, -1)) + self.redo_act.setText(QtCompat.translate("scriptEditor", "Redo", None, -1)) + self.printHelp_act.setText(QtCompat.translate("scriptEditor", "Print Help", None, -1)) + self.comment_cat.setText(QtCompat.translate("scriptEditor", "Comment", None, -1)) + diff --git a/pw_multiScriptEditor/widgets/shortcuts.py b/pw_multiScriptEditor/widgets/shortcuts.py old mode 100644 new mode 100755 index 1363c34..d4332ef --- a/pw_multiScriptEditor/widgets/shortcuts.py +++ b/pw_multiScriptEditor/widgets/shortcuts.py @@ -1,18 +1,13 @@ -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * +from Qt import QtCore, QtWidgets + import shortcuts_UIs import os -class shortcutsClass(QDialog, shortcuts_UIs.Ui_Dialog): +class shortcutsClass(QtWidgets.QDialog, shortcuts_UIs.Ui_Dialog): def __init__(self, parent): super(shortcutsClass, self).__init__(parent) self.setupUi(self) - self.table.horizontalHeader().setResizeMode(QHeaderView.Stretch) + self.table.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) self.table.setColumnCount(2) self.table.setHorizontalHeaderLabels(['Action', 'Shortcut']) self.read() @@ -25,11 +20,11 @@ def read(self): for i, l in enumerate(lines): self.table.insertRow(self.table.rowCount()) description, shortcut = l.split('>') - item = QTableWidgetItem(description) + item = QtWidgets.QTableWidgetItem(description) self.table.setItem(i, 0, item) - item.setFlags(Qt.ItemIsEnabled) - item = QTableWidgetItem(shortcut) - item.setFlags(Qt.ItemIsEnabled) + item.setFlags(QtCore.Qt.ItemIsEnabled) + item = QtWidgets.QTableWidgetItem(shortcut) + item.setFlags(QtCore.Qt.ItemIsEnabled) self.table.setItem(i, 1, item) else: self.table.hide() diff --git a/pw_multiScriptEditor/widgets/shortcuts_UIs.py b/pw_multiScriptEditor/widgets/shortcuts_UIs.py index 63a5b45..c88f40e 100644 --- a/pw_multiScriptEditor/widgets/shortcuts_UIs.py +++ b/pw_multiScriptEditor/widgets/shortcuts_UIs.py @@ -1,48 +1,42 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'D:\Dropbox\Dropbox\pw_prefs\RnD\tools\pw_scriptEditor\pw_multiScriptEditor\widgets\shortcuts.ui' -# -# Created: Wed Apr 01 13:33:16 2015 -# by: pyside-uic 0.2.15 running on PySide 1.2.2 -# -# WARNING! All changes made in this file will be lost! - -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * - -class Ui_Dialog(object): - def setupUi(self, Dialog): - Dialog.setObjectName("Dialog") - Dialog.resize(573, 391) - self.verticalLayout = QVBoxLayout(Dialog) - self.verticalLayout.setObjectName("verticalLayout") - self.table = QTableWidget(Dialog) - self.table.setObjectName("table") - self.table.setColumnCount(0) - self.table.setRowCount(0) - self.verticalLayout.addWidget(self.table) - self.label = QLabel(Dialog) - font = QFont() - font.setPointSize(12) - font.setWeight(75) - font.setItalic(False) - font.setBold(True) - self.label.setFont(font) - self.label.setFrameShape(QFrame.NoFrame) - self.label.setTextFormat(Qt.AutoText) - self.label.setAlignment(Qt.AlignCenter) - self.label.setObjectName("label") - self.verticalLayout.addWidget(self.label) - - self.retranslateUi(Dialog) - QMetaObject.connectSlotsByName(Dialog) - - def retranslateUi(self, Dialog): - Dialog.setWindowTitle(QApplication.translate("Dialog", "Shortcuts list", None)) - self.label.setText(QApplication.translate("Dialog", "Shortcut list hot found!!!", None)) - +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '/Users/johannes/PycharmProjects/pw_MultiScriptEditor/pw_multiScriptEditor/widgets/shortcuts.ui' +# +# Created: Sat Apr 28 00:29:02 2018 +# by: pyside2-uic running on PySide2 5.9.0a1.dev1524638381 +# +# WARNING! All changes made in this file will be lost! + +from Qt import QtGui, QtCore, QtCompat, QtWidgets + +class Ui_Dialog(object): + def setupUi(self, Dialog): + Dialog.setObjectName("Dialog") + Dialog.resize(573, 391) + self.verticalLayout = QtWidgets.QVBoxLayout(Dialog) + self.verticalLayout.setObjectName("verticalLayout") + self.table = QtWidgets.QTableWidget(Dialog) + self.table.setObjectName("table") + self.table.setColumnCount(0) + self.table.setRowCount(0) + self.verticalLayout.addWidget(self.table) + self.label = QtWidgets.QLabel(Dialog) + font = QtGui.QFont() + font.setPointSize(12) + font.setWeight(75) + font.setItalic(False) + font.setBold(True) + self.label.setFont(font) + self.label.setFrameShape(QtWidgets.QFrame.NoFrame) + self.label.setTextFormat(QtCore.Qt.AutoText) + self.label.setAlignment(QtCore.Qt.AlignCenter) + self.label.setObjectName("label") + self.verticalLayout.addWidget(self.label) + + self.retranslateUi(Dialog) + QtCore.QMetaObject.connectSlotsByName(Dialog) + + def retranslateUi(self, Dialog): + Dialog.setWindowTitle(QtCompat.translate("Dialog", "Shortcuts list", None, -1)) + self.label.setText(QtCompat.translate("Dialog", "Shortcut list hot found!!!", None, -1)) + diff --git a/pw_multiScriptEditor/widgets/tabWidget.py b/pw_multiScriptEditor/widgets/tabWidget.py index 4f1eea3..200927a 100644 --- a/pw_multiScriptEditor/widgets/tabWidget.py +++ b/pw_multiScriptEditor/widgets/tabWidget.py @@ -1,11 +1,7 @@ try: - from PySide.QtCore import * - from PySide.QtGui import * + from Qt import QtCore, QtGui, QtWidgets qt = 1 except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * qt = 2 import os import numBarWidget, inputWidget @@ -19,23 +15,23 @@ style=None -class tabWidgetClass(QTabWidget): +class tabWidgetClass(QtWidgets.QTabWidget): def __init__(self, parent=None): super(tabWidgetClass, self).__init__(parent) # ui self.setTabsClosable(True) self.setMovable(True) self.tabCloseRequested.connect(self.closeTab) - self.tabBar().setContextMenuPolicy(Qt.CustomContextMenu) + self.tabBar().setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.tabBar().customContextMenuRequested.connect(self.openMenu) - newTabButton = QPushButton(self) + newTabButton = QtWidgets.QPushButton(self) newTabButton.setMaximumWidth(30) - self.setCornerWidget(newTabButton, Qt.TopLeftCorner) - newTabButton.setCursor(Qt.ArrowCursor) + self.setCornerWidget(newTabButton, QtCore.Qt.TopLeftCorner) + newTabButton.setCursor(QtCore.Qt.ArrowCursor) newTabButton.setText('+') newTabButton.clicked.connect(self.addNewTab) newTabButton.setToolTip("Add Tab") - self.desk = QApplication.desktop() + self.desk = QtWidgets.QApplication.desktop() # variables self.p = parent self.lastSearch = [0, None] @@ -60,14 +56,14 @@ def closeTab(self, i): self.removeTab(i) def openMenu(self): - menu = QMenu(self) - menu.addAction(QAction('Rename Current Tab', self, triggered = self.renameTab)) - menu.exec_(QCursor.pos()) + menu = QtWidgets.QMenu(self) + menu.addAction(QtWidgets.QAction('Rename Current Tab', self, triggered = self.renameTab)) + menu.exec_(QtGui.QCursor.pos()) def renameTab(self): index = self.currentIndex() text = self.tabText(index) - result = QInputDialog.getText(self, 'New name', 'Enter New Name', text=text) + result = QtWidgets.QInputDialog.getText(self, 'New name', 'Enter New Name', text=text) if result[1]: self.setTabText(index, result[0]) @@ -81,7 +77,7 @@ def addNewTab(self, name='New Tab', text = None): cont.edit.saveSignal.connect(self.p.saveSession) # cont.edit.executeSignal.connect(self.p.executeSelected) self.addTab(cont, name) - cont.edit.moveCursor(QTextCursor.Start) + cont.edit.moveCursor(QtGui.QTextCursor.Start) self.setCurrentIndex(self.count()-1) return cont.edit @@ -156,18 +152,18 @@ def comment(self): self.current().commentSelected() def yes_no_question(self, question): - msg_box = QMessageBox(self) + msg_box = QtWidgets.QMessageBox(self) msg_box.setText(question) - yes_button = msg_box.addButton("Yes", QMessageBox.YesRole) - no_button = msg_box.addButton("No", QMessageBox.NoRole) + yes_button = msg_box.addButton("Yes", QtWidgets.QMessageBox.YesRole) + no_button = msg_box.addButton("No", QtWidgets.QMessageBox.NoRole) msg_box.exec_() return msg_box.clickedButton() == yes_button -class container(QWidget): +class container(QtWidgets.QWidget): def __init__(self, text, parent, desk): super(container, self).__init__() - hbox = QHBoxLayout(self) + hbox = QtWidgets.QHBoxLayout(self) hbox.setSpacing(0) hbox.setContentsMargins(0,0,0,0) # input widget @@ -191,7 +187,7 @@ def __init__(self, text, parent, desk): if __name__ == '__main__': - app = QApplication([]) + app = QtWidgets.QApplication([]) w = tabWidgetClass() w.show() - app.exec_() \ No newline at end of file + app.exec_() diff --git a/pw_multiScriptEditor/widgets/themeEditor.py b/pw_multiScriptEditor/widgets/themeEditor.py old mode 100644 new mode 100755 index 0eee310..f3937fa --- a/pw_multiScriptEditor/widgets/themeEditor.py +++ b/pw_multiScriptEditor/widgets/themeEditor.py @@ -1,11 +1,7 @@ try: - from PySide.QtCore import * - from PySide.QtGui import * + from Qt import QtCore, QtGui, QtWidgets qt = 1 except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * qt = 2 import themeEditor_UIs as ui import settingsManager @@ -16,7 +12,7 @@ import icons_rcs -class themeEditorClass(QDialog, ui.Ui_themeEditor): +class themeEditorClass(QtWidgets.QDialog, ui.Ui_themeEditor): def __init__(self, parent = None, desk=None): super(themeEditorClass, self).__init__(parent) self.setupUi(self) @@ -79,10 +75,10 @@ def updateColors(self): if x == 'textsize': self.textSize_spb.setValue(colors['textsize']) else: - item = QListWidgetItem(x) - pix = QPixmap(QSize(16,16)) - pix.fill(QColor(*colors[x])) - item.setIcon(QIcon(pix)) + item = QtWidgets.QListWidgetItem(x) + pix = QtGui.QPixmap(QtCore.QSize(16,16)) + pix.fill(QtGui.QColor(*colors[x])) + item.setIcon(QtGui.QIcon(pix)) item.setData(32, colors[x]) self.colors_lwd.addItem(item) self.updateExample() @@ -103,19 +99,19 @@ def getNewColor(self): items = self.colors_lwd.selectedItems() if items: item = items[0] - init = QColor(*item.data(32)) - color = QColorDialog.getColor(init ,self) + init = QtGui.QColor(*item.data(32)) + color = QtWidgets.QColorDialog.getColor(init ,self) if color.isValid(): newColor = (color.red(), color.green(), color.blue()) item.setData(32, newColor) - pix = QPixmap(QSize(16,16)) - pix.fill(QColor(*newColor)) - item.setIcon(QIcon(pix)) + pix = QtGui.QPixmap(QtCore.QSize(16,16)) + pix.fill(QtGui.QColor(*newColor)) + item.setIcon(QtGui.QIcon(pix)) self.updateExample() def saveTheme(self): text = self.themeList_cbb.currentText() or 'NewTheme' - name = QInputDialog.getText(self, 'Theme name', 'Enter Theme name', QLineEdit.Normal, text) + name = QtWidgets.QInputDialog.getText(self, 'Theme name', 'Enter Theme name', QtWidgets.QLineEdit.Normal, text) if name[1]: name = name[0] if name == 'default': @@ -163,7 +159,7 @@ def apply(self): self.accept() def keyPressEvent(self, event): - if event.key() == Qt.Key_Escape: + if event.key() == QtCore.Qt.Key_Escape: event.ignore() else: super(themeEditorClass, self).keyPressEvent(event) @@ -173,10 +169,10 @@ def current(self): # print self.colors_lwd.selectedItems()[0].data(32) def yes_no_question(self, question): - msg_box = QMessageBox(self) + msg_box = QtWidgets.QMessageBox(self) msg_box.setText(question) - yes_button = msg_box.addButton("Yes", QMessageBox.YesRole) - no_button = msg_box.addButton("No", QMessageBox.NoRole) + yes_button = msg_box.addButton("Yes", QtWidgets.QMessageBox.YesRole) + no_button = msg_box.addButton("No", QtWidgets.QMessageBox.NoRole) msg_box.exec_() return msg_box.clickedButton() == yes_button @@ -203,7 +199,7 @@ def makeSense(self, whatever): if __name__ == '__main__': - app = QApplication([]) + app = QtWidgets.QApplication([]) w = themeEditorClass() w.show() qss = os.path.join(os.path.dirname(os.path.dirname(__file__)),'style', 'style.css') diff --git a/pw_multiScriptEditor/widgets/themeEditor_UI.py b/pw_multiScriptEditor/widgets/themeEditor_UI.py index dcf05e3..71a78aa 100644 --- a/pw_multiScriptEditor/widgets/themeEditor_UI.py +++ b/pw_multiScriptEditor/widgets/themeEditor_UI.py @@ -7,83 +7,83 @@ # # WARNING! All changes made in this file will be lost! -from PyQt4 import QtCore, QtGui +from Qt import QtCore, QtCompat, QtWidgets try: - _fromUtf8 = QtCore.QString.fromUtf8 + _fromUtf8 = unicode except AttributeError: def _fromUtf8(s): return s try: - _encoding = QtGui.QApplication.UnicodeUTF8 + _encoding = QtWidgets.QApplication.UnicodeUTF8 def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig, _encoding) + return QtCompat.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): - return QtGui.QApplication.translate(context, text, disambig) + return QtCompat.translate(context, text, disambig) class Ui_themeEditor(object): def setupUi(self, themeEditor): themeEditor.setObjectName(_fromUtf8("themeEditor")) themeEditor.resize(724, 461) - self.verticalLayout_3 = QtGui.QVBoxLayout(themeEditor) + self.verticalLayout_3 = QtWidgets.QVBoxLayout(themeEditor) self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3")) - self.splitter = QtGui.QSplitter(themeEditor) + self.splitter = QtWidgets.QSplitter(themeEditor) self.splitter.setOrientation(QtCore.Qt.Horizontal) self.splitter.setObjectName(_fromUtf8("splitter")) - self.widget = QtGui.QWidget(self.splitter) + self.widget = QtWidgets.QWidget(self.splitter) self.widget.setObjectName(_fromUtf8("widget")) - self.verticalLayout_2 = QtGui.QVBoxLayout(self.widget) + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget) self.verticalLayout_2.setMargin(0) self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2")) - self.colors_lwd = QtGui.QListWidget(self.widget) + self.colors_lwd = QtWidgets.QListWidget(self.widget) self.colors_lwd.setObjectName(_fromUtf8("colors_lwd")) self.verticalLayout_2.addWidget(self.colors_lwd) - self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName(_fromUtf8("horizontalLayout_3")) - self.label = QtGui.QLabel(self.widget) + self.label = QtWidgets.QLabel(self.widget) self.label.setObjectName(_fromUtf8("label")) self.horizontalLayout_3.addWidget(self.label) - self.textSize_spb = QtGui.QSpinBox(self.widget) + self.textSize_spb = QtWidgets.QSpinBox(self.widget) self.textSize_spb.setMinimum(9) self.textSize_spb.setMaximum(25) self.textSize_spb.setProperty("value", 11) self.textSize_spb.setObjectName(_fromUtf8("textSize_spb")) self.horizontalLayout_3.addWidget(self.textSize_spb) - spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem) self.verticalLayout_2.addLayout(self.horizontalLayout_3) - self.layoutWidget = QtGui.QWidget(self.splitter) + self.layoutWidget = QtWidgets.QWidget(self.splitter) self.layoutWidget.setObjectName(_fromUtf8("layoutWidget")) - self.verticalLayout = QtGui.QVBoxLayout(self.layoutWidget) + self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget) self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) - self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) - self.themeList_cbb = QtGui.QComboBox(self.layoutWidget) + self.themeList_cbb = QtWidgets.QComboBox(self.layoutWidget) self.themeList_cbb.setObjectName(_fromUtf8("themeList_cbb")) self.horizontalLayout.addWidget(self.themeList_cbb) - self.save_btn = QtGui.QPushButton(self.layoutWidget) + self.save_btn = QtWidgets.QPushButton(self.layoutWidget) self.save_btn.setMaximumSize(QtCore.QSize(60, 16777215)) self.save_btn.setObjectName(_fromUtf8("save_btn")) self.horizontalLayout.addWidget(self.save_btn) - self.del_btn = QtGui.QPushButton(self.layoutWidget) + self.del_btn = QtWidgets.QPushButton(self.layoutWidget) self.del_btn.setMaximumSize(QtCore.QSize(60, 16777215)) self.del_btn.setObjectName(_fromUtf8("del_btn")) self.horizontalLayout.addWidget(self.del_btn) self.horizontalLayout.setStretch(0, 1) self.verticalLayout.addLayout(self.horizontalLayout) - self.preview_ly = QtGui.QVBoxLayout() + self.preview_ly = QtWidgets.QVBoxLayout() self.preview_ly.setObjectName(_fromUtf8("preview_ly")) self.verticalLayout.addLayout(self.preview_ly) self.verticalLayout.setStretch(1, 1) self.verticalLayout_3.addWidget(self.splitter) - self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2")) - spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem1) - self.apply_btn = QtGui.QPushButton(themeEditor) + self.apply_btn = QtWidgets.QPushButton(themeEditor) self.apply_btn.setObjectName(_fromUtf8("apply_btn")) self.horizontalLayout_2.addWidget(self.apply_btn) self.verticalLayout_3.addLayout(self.horizontalLayout_2) diff --git a/pw_multiScriptEditor/widgets/themeEditor_UIs.py b/pw_multiScriptEditor/widgets/themeEditor_UIs.py index dd16a0e..2ce558e 100644 --- a/pw_multiScriptEditor/widgets/themeEditor_UIs.py +++ b/pw_multiScriptEditor/widgets/themeEditor_UIs.py @@ -1,93 +1,87 @@ -# -*- coding: utf-8 -*- - -# Form implementation generated from reading ui file 'D:\Dropbox\Dropbox\pw_prefs\RnD\tools\pw_scriptEditor\widgets\themeEditor.ui' -# -# Created: Mon Mar 16 10:29:58 2015 -# by: pyside-uic 0.2.15 running on PySide 1.2.2 -# -# WARNING! All changes made in this file will be lost! - -try: - from PySide.QtCore import * - from PySide.QtGui import * -except: - from PySide2.QtCore import * - from PySide2.QtGui import * - from PySide2.QtWidgets import * - -class Ui_themeEditor(object): - def setupUi(self, themeEditor): - themeEditor.setObjectName("themeEditor") - themeEditor.resize(724, 461) - self.verticalLayout_3 = QVBoxLayout(themeEditor) - self.verticalLayout_3.setObjectName("verticalLayout_3") - self.splitter = QSplitter(themeEditor) - self.splitter.setOrientation(Qt.Horizontal) - self.splitter.setObjectName("splitter") - self.widget = QWidget(self.splitter) - self.widget.setObjectName("widget") - self.verticalLayout_2 = QVBoxLayout(self.widget) - self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) - self.verticalLayout_2.setObjectName("verticalLayout_2") - self.colors_lwd = QListWidget(self.widget) - self.colors_lwd.setObjectName("colors_lwd") - self.verticalLayout_2.addWidget(self.colors_lwd) - self.horizontalLayout_3 = QHBoxLayout() - self.horizontalLayout_3.setObjectName("horizontalLayout_3") - self.label = QLabel(self.widget) - self.label.setObjectName("label") - self.horizontalLayout_3.addWidget(self.label) - self.textSize_spb = QSpinBox(self.widget) - self.textSize_spb.setMinimum(9) - self.textSize_spb.setMaximum(25) - self.textSize_spb.setProperty("value", 11) - self.textSize_spb.setObjectName("textSize_spb") - self.horizontalLayout_3.addWidget(self.textSize_spb) - spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) - self.horizontalLayout_3.addItem(spacerItem) - self.verticalLayout_2.addLayout(self.horizontalLayout_3) - self.layoutWidget = QWidget(self.splitter) - self.layoutWidget.setObjectName("layoutWidget") - self.verticalLayout = QVBoxLayout(self.layoutWidget) - self.verticalLayout.setContentsMargins(0, 0, 0, 0) - self.verticalLayout.setObjectName("verticalLayout") - self.horizontalLayout = QHBoxLayout() - self.horizontalLayout.setObjectName("horizontalLayout") - self.themeList_cbb = QComboBox(self.layoutWidget) - self.themeList_cbb.setObjectName("themeList_cbb") - self.horizontalLayout.addWidget(self.themeList_cbb) - self.save_btn = QPushButton(self.layoutWidget) - self.save_btn.setMaximumSize(QSize(60, 16777215)) - self.save_btn.setObjectName("save_btn") - self.horizontalLayout.addWidget(self.save_btn) - self.del_btn = QPushButton(self.layoutWidget) - self.del_btn.setMaximumSize(QSize(60, 16777215)) - self.del_btn.setObjectName("del_btn") - self.horizontalLayout.addWidget(self.del_btn) - self.horizontalLayout.setStretch(0, 1) - self.verticalLayout.addLayout(self.horizontalLayout) - self.preview_ly = QVBoxLayout() - self.preview_ly.setObjectName("preview_ly") - self.verticalLayout.addLayout(self.preview_ly) - self.verticalLayout.setStretch(1, 1) - self.verticalLayout_3.addWidget(self.splitter) - self.horizontalLayout_2 = QHBoxLayout() - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - spacerItem1 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) - self.horizontalLayout_2.addItem(spacerItem1) - self.apply_btn = QPushButton(themeEditor) - self.apply_btn.setObjectName("apply_btn") - self.horizontalLayout_2.addWidget(self.apply_btn) - self.verticalLayout_3.addLayout(self.horizontalLayout_2) - self.verticalLayout_3.setStretch(0, 1) - - self.retranslateUi(themeEditor) - QMetaObject.connectSlotsByName(themeEditor) - - def retranslateUi(self, themeEditor): - themeEditor.setWindowTitle(QApplication.translate("themeEditor", "Code Theme Editor", None)) - self.label.setText(QApplication.translate("themeEditor", "Completer text size", None)) - self.save_btn.setText(QApplication.translate("themeEditor", "Save", None)) - self.del_btn.setText(QApplication.translate("themeEditor", "Del", None)) - self.apply_btn.setText(QApplication.translate("themeEditor", "Save", None)) - +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file '/Users/johannes/PycharmProjects/pw_MultiScriptEditor/pw_multiScriptEditor/widgets/themeEditor.ui' +# +# Created: Sat Apr 28 00:29:02 2018 +# by: pyside2-uic running on PySide2 5.9.0a1.dev1524638381 +# +# WARNING! All changes made in this file will be lost! + +from Qt import QtCore, QtCompat, QtWidgets + +class Ui_themeEditor(object): + def setupUi(self, themeEditor): + themeEditor.setObjectName("themeEditor") + themeEditor.resize(724, 461) + self.verticalLayout_3 = QtWidgets.QVBoxLayout(themeEditor) + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.splitter = QtWidgets.QSplitter(themeEditor) + self.splitter.setOrientation(QtCore.Qt.Horizontal) + self.splitter.setObjectName("splitter") + self.widget = QtWidgets.QWidget(self.splitter) + self.widget.setObjectName("widget") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget) + self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.colors_lwd = QtWidgets.QListWidget(self.widget) + self.colors_lwd.setObjectName("colors_lwd") + self.verticalLayout_2.addWidget(self.colors_lwd) + self.horizontalLayout_3 = QtWidgets.QHBoxLayout() + self.horizontalLayout_3.setObjectName("horizontalLayout_3") + self.label = QtWidgets.QLabel(self.widget) + self.label.setObjectName("label") + self.horizontalLayout_3.addWidget(self.label) + self.textSize_spb = QtWidgets.QSpinBox(self.widget) + self.textSize_spb.setMinimum(9) + self.textSize_spb.setMaximum(25) + self.textSize_spb.setProperty("value", 11) + self.textSize_spb.setObjectName("textSize_spb") + self.horizontalLayout_3.addWidget(self.textSize_spb) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_3.addItem(spacerItem) + self.verticalLayout_2.addLayout(self.horizontalLayout_3) + self.layoutWidget = QtWidgets.QWidget(self.splitter) + self.layoutWidget.setObjectName("layoutWidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.layoutWidget) + self.verticalLayout.setContentsMargins(0, 0, 0, 0) + self.verticalLayout.setObjectName("verticalLayout") + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.themeList_cbb = QtWidgets.QComboBox(self.layoutWidget) + self.themeList_cbb.setObjectName("themeList_cbb") + self.horizontalLayout.addWidget(self.themeList_cbb) + self.save_btn = QtWidgets.QPushButton(self.layoutWidget) + self.save_btn.setMaximumSize(QtCore.QSize(60, 16777215)) + self.save_btn.setObjectName("save_btn") + self.horizontalLayout.addWidget(self.save_btn) + self.del_btn = QtWidgets.QPushButton(self.layoutWidget) + self.del_btn.setMaximumSize(QtCore.QSize(60, 16777215)) + self.del_btn.setObjectName("del_btn") + self.horizontalLayout.addWidget(self.del_btn) + self.horizontalLayout.setStretch(0, 1) + self.verticalLayout.addLayout(self.horizontalLayout) + self.preview_ly = QtWidgets.QVBoxLayout() + self.preview_ly.setObjectName("preview_ly") + self.verticalLayout.addLayout(self.preview_ly) + self.verticalLayout.setStretch(1, 1) + self.verticalLayout_3.addWidget(self.splitter) + self.horizontalLayout_2 = QtWidgets.QHBoxLayout() + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_2.addItem(spacerItem1) + self.apply_btn = QtWidgets.QPushButton(themeEditor) + self.apply_btn.setObjectName("apply_btn") + self.horizontalLayout_2.addWidget(self.apply_btn) + self.verticalLayout_3.addLayout(self.horizontalLayout_2) + self.verticalLayout_3.setStretch(0, 1) + + self.retranslateUi(themeEditor) + QtCore.QMetaObject.connectSlotsByName(themeEditor) + + def retranslateUi(self, themeEditor): + themeEditor.setWindowTitle(QtCompat.translate("themeEditor", "Code Theme Editor", None, -1)) + self.label.setText(QtCompat.translate("themeEditor", "Completer text size", None, -1)) + self.save_btn.setText(QtCompat.translate("themeEditor", "Save", None, -1)) + self.del_btn.setText(QtCompat.translate("themeEditor", "Del", None, -1)) + self.apply_btn.setText(QtCompat.translate("themeEditor", "Save", None, -1)) + From c46cf35c2cea2e5fa3bd8fbaa36ca304cd8f02da Mon Sep 17 00:00:00 2001 From: johannes Date: Sat, 28 Apr 2018 21:55:07 +0200 Subject: [PATCH 2/6] added python sdtalone file in favour of main, added ui build script with pyside2uic --- pw_multiScriptEditor/runScriptEditor.py | 7 +++++++ pw_multiScriptEditor/widgets/_uiToPy.py | 15 +++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 pw_multiScriptEditor/runScriptEditor.py create mode 100644 pw_multiScriptEditor/widgets/_uiToPy.py diff --git a/pw_multiScriptEditor/runScriptEditor.py b/pw_multiScriptEditor/runScriptEditor.py new file mode 100644 index 0000000..ee1dec5 --- /dev/null +++ b/pw_multiScriptEditor/runScriptEditor.py @@ -0,0 +1,7 @@ +from pw_multiScriptEditor import scriptEditor +from Qt import QtWidgets + +app = QtWidgets.QApplication([]) +w = scriptEditor.scriptEditorClass() +w.show() +app.exec_() diff --git a/pw_multiScriptEditor/widgets/_uiToPy.py b/pw_multiScriptEditor/widgets/_uiToPy.py new file mode 100644 index 0000000..3719ec3 --- /dev/null +++ b/pw_multiScriptEditor/widgets/_uiToPy.py @@ -0,0 +1,15 @@ +import pyside2uic +import os +import qt_py_convert.run + +print pyside2uic.__file__ + +def name_pattern(py_dir, py_file): + py_file = os.path.splitext(py_file)[0] + "_UIs" + os.path.splitext(py_file)[1] + return py_dir, py_file + + +currentDir = os.path.dirname(os.path.abspath(__file__)) + +pyside2uic.compileUiDir(currentDir, map=name_pattern) +qt_py_convert.run.process_folder(currentDir) From 053f2cd4d5b9e4c30b6d34dce693cbd78528f6d8 Mon Sep 17 00:00:00 2001 From: johannes Date: Sat, 28 Apr 2018 23:54:42 +0200 Subject: [PATCH 3/6] changed all lower level modules to import parents as relative imports --- pw_multiScriptEditor/__init__.py | 11 +++-------- pw_multiScriptEditor/managers/_3dsmax.py | 1 + pw_multiScriptEditor/managers/__init__.py | 18 +++++++++--------- pw_multiScriptEditor/managers/_nuke.py | 4 ++-- pw_multiScriptEditor/widgets/about.py | 2 +- pw_multiScriptEditor/widgets/completeWidget.py | 2 +- pw_multiScriptEditor/widgets/inputWidget.py | 4 ++-- pw_multiScriptEditor/widgets/numBarWidget.py | 2 +- pw_multiScriptEditor/widgets/outputWidget.py | 4 ++-- .../widgets/pythonSyntax/design.py | 2 +- pw_multiScriptEditor/widgets/tabWidget.py | 4 ++-- pw_multiScriptEditor/widgets/themeEditor.py | 4 ++-- 12 files changed, 27 insertions(+), 31 deletions(-) diff --git a/pw_multiScriptEditor/__init__.py b/pw_multiScriptEditor/__init__.py index 89c5916..55ead02 100644 --- a/pw_multiScriptEditor/__init__.py +++ b/pw_multiScriptEditor/__init__.py @@ -1,10 +1,5 @@ import os, sys -root = os.path.dirname(__file__) -if not root in sys.path: - sys.path.append(root) - - # HOUDINI def showHoudini(clear=False, ontop=False, name=None, floating=False, position=(), size=(), pane=None, replacePyPanel=False, hideTitleMenu=True): @@ -26,12 +21,12 @@ def showNuke(panel=False): # MAYA def showMaya(dock=False): from .managers import _maya - reload (_maya) + reload(_maya) _maya.show(dock) # 3DSMAX PLUS def show3DSMax(): sys.argv = [] from .managers import _3dsmax - reload (_3dsmax) - _3dsmax.show() \ No newline at end of file + reload(_3dsmax) + _3dsmax.show() diff --git a/pw_multiScriptEditor/managers/_3dsmax.py b/pw_multiScriptEditor/managers/_3dsmax.py index b8ac33e..6c5d88e 100644 --- a/pw_multiScriptEditor/managers/_3dsmax.py +++ b/pw_multiScriptEditor/managers/_3dsmax.py @@ -3,6 +3,7 @@ from Qt import QtCore, QtWidgets from pw_multiScriptEditor import scriptEditor + reload(scriptEditor) import MaxPlus q3dsmax = QtWidgets.QApplication.instance() diff --git a/pw_multiScriptEditor/managers/__init__.py b/pw_multiScriptEditor/managers/__init__.py index fd17ed4..592310f 100644 --- a/pw_multiScriptEditor/managers/__init__.py +++ b/pw_multiScriptEditor/managers/__init__.py @@ -6,40 +6,40 @@ # NUKE def nukeCompleter(*args): - from managers import _nuke + import _nuke return _nuke.completer(*args) def getNukeContextMenu(*args): - from managers import _nuke + import _nuke reload(_nuke) return _nuke.contextMenu(*args) ################################################################### # HOUDINI def houdiniCompleter(*args): - from managers import _houdini + import _houdini return _houdini.completer(*args) def getHoudiniContextMenu(*args): - from managers import _houdini + import _houdini reload(_houdini) return _houdini.contextMenu(*args) def houdiniDropEvent(*args): - from managers import _houdini + import _houdini reload(_houdini) return _houdini.wrapDroppedText(*args) ################################################################### # MAYA def mayaCompleter(*args): - from managers import _maya + import _maya reload(_maya) return _maya.completer(*args) def mayaDropEvent(*args): - from managers import _maya + import _maya return _maya.wrapDroppedText(*args) def getMayaContextMenu(*args): - from managers import _maya + import _maya reload(_maya) return _maya.contextMenu(*args) ################################################################### @@ -90,4 +90,4 @@ def getMayaContextMenu(*args): elif platform.system().lower() == 'darwin': _s = 'x' else: - _s = 'l' + _s = 'l' diff --git a/pw_multiScriptEditor/managers/_nuke.py b/pw_multiScriptEditor/managers/_nuke.py index 3850798..c6b8c21 100644 --- a/pw_multiScriptEditor/managers/_nuke.py +++ b/pw_multiScriptEditor/managers/_nuke.py @@ -6,9 +6,9 @@ exec 'import nukescripts' in ns nuke = ns['nuke'] import nukescripts -from managers.nuke import nodes +from ..managers.nuke import nodes nuke_nodes = dir(nodes) -from managers.completeWidget import contextCompleterClass +from ..managers.completeWidget import contextCompleterClass from Qt import QtCore, QtWidgets diff --git a/pw_multiScriptEditor/widgets/about.py b/pw_multiScriptEditor/widgets/about.py index 69796c1..ac1321f 100755 --- a/pw_multiScriptEditor/widgets/about.py +++ b/pw_multiScriptEditor/widgets/about.py @@ -1,6 +1,6 @@ from Qt import QtCore, QtGui, QtWidgets -import icons +from .. import icons import about_UIs import os diff --git a/pw_multiScriptEditor/widgets/completeWidget.py b/pw_multiScriptEditor/widgets/completeWidget.py index 1334679..758b698 100644 --- a/pw_multiScriptEditor/widgets/completeWidget.py +++ b/pw_multiScriptEditor/widgets/completeWidget.py @@ -2,7 +2,7 @@ import os, re from . pythonSyntax import design -import managers +from .. import managers style = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'style', 'completer.qss') if not os.path.exists(style): style=None diff --git a/pw_multiScriptEditor/widgets/inputWidget.py b/pw_multiScriptEditor/widgets/inputWidget.py index 632d524..b640ca7 100644 --- a/pw_multiScriptEditor/widgets/inputWidget.py +++ b/pw_multiScriptEditor/widgets/inputWidget.py @@ -6,8 +6,8 @@ reload(syntaxHighLighter) import completeWidget reload(completeWidget) -import settingsManager -import managers +from .. import settingsManager +from .. import managers reload(managers) from pythonSyntax import design # import inspect diff --git a/pw_multiScriptEditor/widgets/numBarWidget.py b/pw_multiScriptEditor/widgets/numBarWidget.py index 6b2a0b5..e0c9ce2 100644 --- a/pw_multiScriptEditor/widgets/numBarWidget.py +++ b/pw_multiScriptEditor/widgets/numBarWidget.py @@ -1,5 +1,5 @@ from Qt import QtCore, QtGui, QtWidgets -import managers +from .. import managers class lineNumberBarClass(QtWidgets.QWidget): def __init__(self, edit, parent=None): diff --git a/pw_multiScriptEditor/widgets/outputWidget.py b/pw_multiScriptEditor/widgets/outputWidget.py index 78e085d..2d073ff 100644 --- a/pw_multiScriptEditor/widgets/outputWidget.py +++ b/pw_multiScriptEditor/widgets/outputWidget.py @@ -2,7 +2,7 @@ from Qt import QtCore, QtGui, QtWidgets -from managers import context +from .. import managers class outputClass(QtWidgets.QTextBrowser): def __init__(self): @@ -40,7 +40,7 @@ def wheelEvent(self, event): QtWidgets.QTextBrowser.wheelEvent(self, event) def changeFontSize(self, up): - if context == 'hou': + if managers.context == 'hou': if up: self.fs = min(30, self.fs+1) else: diff --git a/pw_multiScriptEditor/widgets/pythonSyntax/design.py b/pw_multiScriptEditor/widgets/pythonSyntax/design.py index 7123617..6f9aeac 100644 --- a/pw_multiScriptEditor/widgets/pythonSyntax/design.py +++ b/pw_multiScriptEditor/widgets/pythonSyntax/design.py @@ -1,4 +1,4 @@ -import settingsManager +from ... import settingsManager import os, re EditorStyle = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'style', 'completer.qss') diff --git a/pw_multiScriptEditor/widgets/tabWidget.py b/pw_multiScriptEditor/widgets/tabWidget.py index 200927a..3e42989 100644 --- a/pw_multiScriptEditor/widgets/tabWidget.py +++ b/pw_multiScriptEditor/widgets/tabWidget.py @@ -7,7 +7,7 @@ import numBarWidget, inputWidget reload(inputWidget) reload(numBarWidget) -from managers import context +#from managers import context style = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'style', 'completer.qss') @@ -190,4 +190,4 @@ def __init__(self, text, parent, desk): app = QtWidgets.QApplication([]) w = tabWidgetClass() w.show() - app.exec_() + app.exec_() diff --git a/pw_multiScriptEditor/widgets/themeEditor.py b/pw_multiScriptEditor/widgets/themeEditor.py index f3937fa..80df032 100755 --- a/pw_multiScriptEditor/widgets/themeEditor.py +++ b/pw_multiScriptEditor/widgets/themeEditor.py @@ -4,12 +4,12 @@ except: qt = 2 import themeEditor_UIs as ui -import settingsManager +from .. import settingsManager import os from .pythonSyntax import design from .pythonSyntax import syntaxHighLighter from . import inputWidget -import icons_rcs +from .. import icons_rcs class themeEditorClass(QtWidgets.QDialog, ui.Ui_themeEditor): From b07d71e78ce72c61edde67f828908057dd3e9310 Mon Sep 17 00:00:00 2001 From: johannes Date: Sun, 29 Apr 2018 19:44:22 +0200 Subject: [PATCH 4/6] only open a file from argv if there are more args than the file itself, set the stylesheet only in standalone mode not dccs with a working palette and stylesheet --- pw_multiScriptEditor/managers/_3dsmax.py | 1 + pw_multiScriptEditor/runScriptEditor.py | 1 + pw_multiScriptEditor/scriptEditor.py | 29 ++++++++++++------------ 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/pw_multiScriptEditor/managers/_3dsmax.py b/pw_multiScriptEditor/managers/_3dsmax.py index 6c5d88e..f676b9f 100644 --- a/pw_multiScriptEditor/managers/_3dsmax.py +++ b/pw_multiScriptEditor/managers/_3dsmax.py @@ -24,4 +24,5 @@ def show(): se.runCommand('import MaxPlus') se.MaxEventFilter = MaxDialogEvents() se.installEventFilter(se.MaxEventFilter) + se.setWindowStyle() se.show() diff --git a/pw_multiScriptEditor/runScriptEditor.py b/pw_multiScriptEditor/runScriptEditor.py index ee1dec5..5b9bf06 100644 --- a/pw_multiScriptEditor/runScriptEditor.py +++ b/pw_multiScriptEditor/runScriptEditor.py @@ -3,5 +3,6 @@ app = QtWidgets.QApplication([]) w = scriptEditor.scriptEditorClass() +w.setWindowStyle() w.show() app.exec_() diff --git a/pw_multiScriptEditor/scriptEditor.py b/pw_multiScriptEditor/scriptEditor.py index 1be08d7..c73f14a 100644 --- a/pw_multiScriptEditor/scriptEditor.py +++ b/pw_multiScriptEditor/scriptEditor.py @@ -133,7 +133,6 @@ def __init__(self, parent=None): #start self.loadSession() self.loadSettings() - self.setWindowStyle() # self.out.showMessage('Multi Script Editor v.%s Loaded\npaulwinex.com' % self.ver) self.tab.widget(0).edit.setFocus() self.appContextMenu() @@ -172,14 +171,15 @@ def appContextMenu(self): def addArgs(self): if sys.argv: - f = sys.argv[-1] - if os.path.exists(f): - if not os.path.basename(f) == os.path.basename(__file__): - if os.path.splitext(f)[-1] in ['.txt', '.py']: - self.out.showMessage( os.path.splitext(f)[-1]) - self.out.showMessage('Open File: '+f) - text = open(f).read() - self.tab.addNewTab(os.path.basename(f), text) + if len(sys.argv) > 1: + for f in sys.argv[1:]: + if os.path.exists(f): + if not os.path.basename(f) == os.path.basename(__file__): + if os.path.splitext(f)[-1] in ['.txt', '.py']: + self.out.showMessage( os.path.splitext(f)[-1]) + self.out.showMessage('Open File: '+f) + text = open(f).read() + self.tab.addNewTab(os.path.basename(f), text) def fillThemeMenu(self): self.theme_menu.clear() @@ -206,11 +206,10 @@ def applyTheme(self, name): self.s.writeSettings(s) def setWindowStyle(self): - if __name__ == '__main__': - qss = os.path.join(os.path.dirname(__file__),'style', 'style.css') - if os.path.exists(qss): - self.setStyleSheet(open(qss).read()) - self.setWindowIcon(QtGui.QIcon(icons['pw'])) + qss = os.path.join(os.path.abspath(os.path.dirname(__file__)),'style', 'style.css') + if os.path.exists(qss): + self.setStyleSheet(open(qss).read()) + self.setWindowIcon(QtGui.QIcon(icons['pw'])) def loadSession(self): sessions = self.session.readSession() @@ -221,7 +220,7 @@ def loadSession(self): w= self.tab.addNewTab(s['name'], s['text']) if s['active']: active = i - w.setFontSize(s.get('size', None)) + w.setFontSize(s.get('size', 10)) else: self.tab.addNewTab() self.tab.setCurrentIndex(active) From faf03c31602afe6c7cbe9c157bed232df5319009 Mon Sep 17 00:00:00 2001 From: johannes Date: Sun, 29 Apr 2018 23:42:01 +0200 Subject: [PATCH 5/6] added rv support --- .../managers/rvsupport/plugins/Mu/rvload | 1 + .../managers/rvsupport/plugins/Mu/rvload2 | 2 + .../plugins/Python/scriptEditorRv.py | 64 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 pw_multiScriptEditor/managers/rvsupport/plugins/Mu/rvload create mode 100644 pw_multiScriptEditor/managers/rvsupport/plugins/Mu/rvload2 create mode 100644 pw_multiScriptEditor/managers/rvsupport/plugins/Python/scriptEditorRv.py diff --git a/pw_multiScriptEditor/managers/rvsupport/plugins/Mu/rvload b/pw_multiScriptEditor/managers/rvsupport/plugins/Mu/rvload new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/pw_multiScriptEditor/managers/rvsupport/plugins/Mu/rvload @@ -0,0 +1 @@ +1 diff --git a/pw_multiScriptEditor/managers/rvsupport/plugins/Mu/rvload2 b/pw_multiScriptEditor/managers/rvsupport/plugins/Mu/rvload2 new file mode 100644 index 0000000..5717995 --- /dev/null +++ b/pw_multiScriptEditor/managers/rvsupport/plugins/Mu/rvload2 @@ -0,0 +1,2 @@ +3 +scriptEditorRv,scriptEditorRv.zip,nil,nil,nil,true,true,4.0.9,false diff --git a/pw_multiScriptEditor/managers/rvsupport/plugins/Python/scriptEditorRv.py b/pw_multiScriptEditor/managers/rvsupport/plugins/Python/scriptEditorRv.py new file mode 100644 index 0000000..d21c0a2 --- /dev/null +++ b/pw_multiScriptEditor/managers/rvsupport/plugins/Python/scriptEditorRv.py @@ -0,0 +1,64 @@ +''' +add rvsupport-plugins to your env into the var + +RV_SUPPORT_PATH=$RV_SUPPORT_PATH:/pathto/rvsupport/plugins + +make sure the script editor module is in the python path + +PYTHONPATH=$PYTHONPATH:/pathto/pw_multiscriptEditor + +''' + +import sys +sys.dont_write_bytecode = 1 + +from rv import rvtypes, commands, extra_commands, qtutils + +from Qt import QtWidgets, QtCore + +class ScriptEditorRv(rvtypes.MinorMode): + ''' + this class creates a menu and + handles the parenting and creation of a dock widget in which the editor then resides + ''' + def __init__(self): + rvtypes.MinorMode.__init__(self) + + self.init("scriptEditorRv", + None, + None, + [("Script Editor", + [("Show Editor", self.showUi, "", None) + ] + )] + ) + self.NOT_INIT = True + + + def showUi(self, event): + if self.NOT_INIT: + self.initUi() + self.NOT_INIT = False + self.dialog.show() + + def initUi(self): + from pw_multiScriptEditor import scriptEditor + self.mainWindow = qtutils.sessionWindow() + self.widget = scriptEditor.scriptEditorClass() + self.dialog = QtWidgets.QDockWidget("%s" % self.widget.windowTitle(), self.mainWindow) + self.mainWindow.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dialog) + self.dialog.setWidget(self.widget) + + def activate(self): + rvtypes.MinorMode.activate(self) + + def deactivate(self): + rvtypes.MinorMode.deactivate(self) + self.dialog.hide() + +def createMode(): + """ + Required to initialize the module. RV will call this function to create your mode. + """ + print("Adding ScriptEditor") + return ScriptEditorRv() From c126185064eccfdff433811e59d3b37d9c10bce1 Mon Sep 17 00:00:00 2001 From: Johannes Hezer Date: Mon, 30 Apr 2018 18:08:57 +0200 Subject: [PATCH 6/6] fix maya mainwindow function use qtcompat to resizeHeader --- pw_multiScriptEditor/managers/_maya.py | 5 +++-- pw_multiScriptEditor/widgets/shortcuts.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pw_multiScriptEditor/managers/_maya.py b/pw_multiScriptEditor/managers/_maya.py index 0f14884..4a8b54d 100644 --- a/pw_multiScriptEditor/managers/_maya.py +++ b/pw_multiScriptEditor/managers/_maya.py @@ -7,7 +7,7 @@ import maya.OpenMayaUI as omui import os, sys, re -from managers.completeWidget import contextCompleterClass +from ..managers.completeWidget import contextCompleterClass main = __import__('__main__') ns = main.__dict__ @@ -22,9 +22,10 @@ def getMayaWindow(): if _pyside_ver == 1: + from shiboken import wrapInstance ptr = omui.MQtUtil.mainWindow() if ptr is not None: - return wrp(long(ptr), QtWidgets.QMainWindow) + return wrapInstance(long(ptr), QtWidgets.QMainWindow) elif _pyside_ver == 2: from pymel.core import ui return ui.Window('MayaWindow').asQtObject() diff --git a/pw_multiScriptEditor/widgets/shortcuts.py b/pw_multiScriptEditor/widgets/shortcuts.py index d4332ef..98f7217 100755 --- a/pw_multiScriptEditor/widgets/shortcuts.py +++ b/pw_multiScriptEditor/widgets/shortcuts.py @@ -1,4 +1,4 @@ -from Qt import QtCore, QtWidgets +from Qt import QtCore, QtWidgets, QtCompat import shortcuts_UIs import os @@ -7,7 +7,7 @@ class shortcutsClass(QtWidgets.QDialog, shortcuts_UIs.Ui_Dialog): def __init__(self, parent): super(shortcutsClass, self).__init__(parent) self.setupUi(self) - self.table.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) + QtCompat.setSectionResizeMode(self.table.horizontalHeader(), QtWidgets.QHeaderView.Stretch) self.table.setColumnCount(2) self.table.setHorizontalHeaderLabels(['Action', 'Shortcut']) self.read()