From 997d9e87c54d1ee20b3c06f2bf19122e08fb2cce Mon Sep 17 00:00:00 2001 From: balazs Date: Wed, 17 May 2023 11:16:15 +0100 Subject: [PATCH] First Commit Signed-off-by: balazs --- __init__.py | 0 __pycache__/base.cpython-310.pyc | Bin 0 -> 1598 bytes __pycache__/base_var.cpython-310.pyc | Bin 0 -> 966 bytes __pycache__/browser.cpython-310.pyc | Bin 0 -> 1127 bytes __pycache__/callhandler.cpython-310.pyc | Bin 0 -> 3754 bytes __pycache__/main.cpython-310.pyc | Bin 0 -> 208 bytes __pycache__/mouseevents.cpython-310.pyc | Bin 0 -> 1429 bytes __pycache__/settings.cpython-310.pyc | Bin 0 -> 223 bytes __pycache__/sight.cpython-310.pyc | Bin 0 -> 1947 bytes __pycache__/sightfactory.cpython-310.pyc | Bin 0 -> 2938 bytes base.py | 48 ++++ base.py.bak | 47 ++++ browser.py | 19 ++ browser.py.bak | 19 ++ callhandler.py | 101 +++++++++ callhandler.py.bak | 100 +++++++++ core/template/base/content/main/content.html | 1 + .../base/content/main/content.html.bak | 1 + core/template/base/content/main/main.html.bak | 0 .../base/content/main_text/content.html | 6 + .../base/content/main_text/content.html.bak | 6 + core/template/base/content/main_text/test.css | 3 + core/template/base/css/template.css | 26 +++ core/template/base/css/template.css.bak | 35 +++ core/template/base/img/close.png | Bin 0 -> 775 bytes core/template/base/img/maximized.png | Bin 0 -> 571 bytes core/template/base/img/minimize.png | Bin 0 -> 535 bytes core/template/base/img/restoredown.png | Bin 0 -> 689 bytes core/template/base/main.html | 40 ++++ core/template/base/main.html.bak | 40 ++++ core/template/base/other.html | 30 +++ core/template/base/other.html.bak | 30 +++ core/template/base/template.conf.bak | 0 core/template/base/template.js | 13 ++ core/template/base/template.js.bak | 13 ++ core/template/config.ini | 3 + core/template/config.ini.bak | 3 + lib/jquery-3.6.4.min.js | 2 + main.py | 2 + main.py.bak | 9 + main.spec | 40 ++++ mouseevents.py | 37 ++++ mouseevents.py.bak | 39 ++++ place/css/sight.css | 41 ++++ place/css/sight.css.bak | 34 +++ place/js/jquery-3.6.4.min.js | 2 + place/js/sight.js | 207 +++++++++++++++++ place/js/sight.js.bak | 208 ++++++++++++++++++ place/js/xtr-translator/demo/index.html | 82 +++++++ place/js/xtr-translator/demo/styles.css | 27 +++ place/js/xtr-translator/demo/styles.less | 23 ++ place/js/xtr-translator/dictonary.js | 8 + place/js/xtr-translator/jquery.xtr.js | 88 ++++++++ place/js/xtr-translator/jquery.xtr.min.js | 1 + .../templates/base/content/main/content.html | 1 + .../base/content/main/content.html.bak | 1 + .../templates/base/content/main/main.html.bak | 0 .../base/content/main_text/content.html | 6 + .../base/content/main_text/content.html.bak | 6 + .../templates/base/content/main_text/test.css | 3 + place/templates/base/css/template.css | 26 +++ place/templates/base/css/template.css.bak | 35 +++ place/templates/base/img/close.png | Bin 0 -> 775 bytes place/templates/base/img/maximized.png | Bin 0 -> 571 bytes place/templates/base/img/minimize.png | Bin 0 -> 535 bytes place/templates/base/img/restoredown.png | Bin 0 -> 689 bytes place/templates/base/main.html | 40 ++++ place/templates/base/main.html.bak | 40 ++++ place/templates/base/other.html | 30 +++ place/templates/base/other.html.bak | 30 +++ place/templates/base/template.conf.bak | 0 place/templates/base/template.js | 13 ++ place/templates/base/template.js.bak | 13 ++ place/templates/config.ini | 3 + place/templates/config.ini.bak | 3 + settings.py.bak | 4 + sight .py.back | 194 ++++++++++++++++ sight.py | 47 ++++ sight.py.2back | 168 ++++++++++++++ sight.py.bak | 47 ++++ sightfactory.py | 79 +++++++ sightfactory.py.bak | 79 +++++++ 82 files changed, 2302 insertions(+) create mode 100644 __init__.py create mode 100644 __pycache__/base.cpython-310.pyc create mode 100644 __pycache__/base_var.cpython-310.pyc create mode 100644 __pycache__/browser.cpython-310.pyc create mode 100644 __pycache__/callhandler.cpython-310.pyc create mode 100644 __pycache__/main.cpython-310.pyc create mode 100644 __pycache__/mouseevents.cpython-310.pyc create mode 100644 __pycache__/settings.cpython-310.pyc create mode 100644 __pycache__/sight.cpython-310.pyc create mode 100644 __pycache__/sightfactory.cpython-310.pyc create mode 100644 base.py create mode 100644 base.py.bak create mode 100644 browser.py create mode 100644 browser.py.bak create mode 100644 callhandler.py create mode 100644 callhandler.py.bak create mode 100644 core/template/base/content/main/content.html create mode 100644 core/template/base/content/main/content.html.bak create mode 100644 core/template/base/content/main/main.html.bak create mode 100644 core/template/base/content/main_text/content.html create mode 100644 core/template/base/content/main_text/content.html.bak create mode 100644 core/template/base/content/main_text/test.css create mode 100644 core/template/base/css/template.css create mode 100644 core/template/base/css/template.css.bak create mode 100644 core/template/base/img/close.png create mode 100644 core/template/base/img/maximized.png create mode 100644 core/template/base/img/minimize.png create mode 100644 core/template/base/img/restoredown.png create mode 100644 core/template/base/main.html create mode 100644 core/template/base/main.html.bak create mode 100644 core/template/base/other.html create mode 100644 core/template/base/other.html.bak create mode 100644 core/template/base/template.conf.bak create mode 100644 core/template/base/template.js create mode 100644 core/template/base/template.js.bak create mode 100644 core/template/config.ini create mode 100644 core/template/config.ini.bak create mode 100644 lib/jquery-3.6.4.min.js create mode 100644 main.py create mode 100644 main.py.bak create mode 100644 main.spec create mode 100644 mouseevents.py create mode 100644 mouseevents.py.bak create mode 100644 place/css/sight.css create mode 100644 place/css/sight.css.bak create mode 100644 place/js/jquery-3.6.4.min.js create mode 100644 place/js/sight.js create mode 100644 place/js/sight.js.bak create mode 100644 place/js/xtr-translator/demo/index.html create mode 100644 place/js/xtr-translator/demo/styles.css create mode 100644 place/js/xtr-translator/demo/styles.less create mode 100644 place/js/xtr-translator/dictonary.js create mode 100644 place/js/xtr-translator/jquery.xtr.js create mode 100644 place/js/xtr-translator/jquery.xtr.min.js create mode 100644 place/templates/base/content/main/content.html create mode 100644 place/templates/base/content/main/content.html.bak create mode 100644 place/templates/base/content/main/main.html.bak create mode 100644 place/templates/base/content/main_text/content.html create mode 100644 place/templates/base/content/main_text/content.html.bak create mode 100644 place/templates/base/content/main_text/test.css create mode 100644 place/templates/base/css/template.css create mode 100644 place/templates/base/css/template.css.bak create mode 100644 place/templates/base/img/close.png create mode 100644 place/templates/base/img/maximized.png create mode 100644 place/templates/base/img/minimize.png create mode 100644 place/templates/base/img/restoredown.png create mode 100644 place/templates/base/main.html create mode 100644 place/templates/base/main.html.bak create mode 100644 place/templates/base/other.html create mode 100644 place/templates/base/other.html.bak create mode 100644 place/templates/base/template.conf.bak create mode 100644 place/templates/base/template.js create mode 100644 place/templates/base/template.js.bak create mode 100644 place/templates/config.ini create mode 100644 place/templates/config.ini.bak create mode 100644 settings.py.bak create mode 100644 sight .py.back create mode 100644 sight.py create mode 100644 sight.py.2back create mode 100644 sight.py.bak create mode 100644 sightfactory.py create mode 100644 sightfactory.py.bak diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/__pycache__/base.cpython-310.pyc b/__pycache__/base.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..495518f54055059194c0bd53c34a38209ce75ec5 GIT binary patch literal 1598 zcmZ`(OHbrR5bpNa9*@TZEFmF8DDr9}p~->cN{LVu#6q$Xi$IV>Y9Wn!-3=J|rS68^ zK_nOQBXWdeeo}nRDSsiSeBGW|HZNOUkFIicb$wN?N28eF`OW9zSxCt5R(b#NpnQ#` z8xTPREePv4Wz^{&^T55LSNhDS*48V6GGw8X{i0t+EOK&C49b|rP7aG zHWC97gD;4oNWd2bJtpJPA2^j9jA=W3RbOejdo3%Yp$4T@AtcB7`GwiznW@#(>POp6 zQ{)*pd0jz|ck0Thx+tW|Y^?c1A^2E3So#+bLkzw2?kMjW|Bmp$grNPL@JLV-32zJc z0{6E_PQU}`A$Whrqb*_vm+}434DOQ$@<6S2Ia;;81K2>x1}!+~}kdZ8CnwF-y-?}(pZHRPT?0E=64?>ztwaP)?tz|mU;!oa6@ORkCf;uaEi z{WStRI;8Wm@)`lk!DV>a2ls8)%zQ)V8@kTu-`QBe8hsGWM}JKGM%5JXCK>i(zCh{Qf;O$O`7p)!=w(ir{h7JbVoE?X{lJ!L44S0 zk(TJ-xmTJM0MN5`J+MrQ+W$_QYKo0qid}N(I0QnS4TW^c+GS(7Z$4Y48 zIs4zxh1=u2e-6c>EAT#en7J9k;63aB4ddSj7IQa&-ht}li*cwDFr$$;Wi-*%A^L+Ej{E!Qbn07PElJ2Wb7tT$rYkXH9cl3W{+D2Pwn5#m5 VWq&5xCLg&XqqMU(@}iX_`3tQ7eZBwy literal 0 HcmV?d00001 diff --git a/__pycache__/base_var.cpython-310.pyc b/__pycache__/base_var.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dcf5bfb4385134817e6139feaf8785f6e469b2f1 GIT binary patch literal 966 zcmZWn!A{#i5Zztdi4&XxQPn7iO6jG@7mhukwrUh2K&_&nAW$t-)UcRpAJ7<}Ybf<1Y8ENL1$)UIn|teO?0_ za5^Gk{TE=9K}b!o-z|zX8OJ)wGw{7xK38H)F@JaP?t}C|)D@^pAoYdG6-}-wXEzk7 zjL71pW@ip}+K_LPYxjmw@+jgxj=Ukd!re>KBHU|{C7|f)623XIXfDxy*`?q^yuvH^ z4&QvV*$Wa@2gaSnNhXn=Syjnos!s};kA+e~Exd!N=xi+3HadywjMH2R-pTTd7mL<= zQTCZif26=QG@a$MHtBIy(jMKJl6pkch1L;8~bYuWV;uK{K6_R_P z*3oT%YJn)+z$Uf+e~W-QTM+>@ECLSYuGV6`x7!`;>^BVY#ngZSL!%ginN461hZ`qRfi9 zme`7@-pezXQJM;AYPXxLWoq15PR?ZoUf4F;KePA`_}GqMAB_Kcmh*Wk-r{B{?5qz% O!9n<}&V1%K0`?aKyvo`D literal 0 HcmV?d00001 diff --git a/__pycache__/browser.cpython-310.pyc b/__pycache__/browser.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b31428c37f99f7e620a9a812cba29adac3ab6c4e GIT binary patch literal 1127 zcmZ8g!EO^V5FPJ&leA5$7NWLDoVYDQIU_G2U&;s+K%E;~9_V&Ac5o8tZ^-@$0+z=>hz9MtM;*-rzP)2oOX8 zb6-!9p~pPpbYJ;H%4n`r6$~q^Lf`;IASzcNDw589Ru!ZRVf7DYfuoRQ8=Y^m*FKBV zR4Oz#ow=V5l2o1~@&Zq2=c`t+3okGK)-cadk-&%m=3PUd2qL_z8uNuO=oK(pJkEk^ zpuj5b>8$!rk1mYVF)3wqI^qVG*zBONFoy+M0s-sIVFuh6(1jav6w)j(ld;rUjq@Z; zEa%$Y%&PGn3~Hq6-;ivL^H@d3aDD@SA9r7#c0V0_{BnHww!MG)e*fgOS5(p(U+NmB zaND>}uai2NZr#?|T0Il5P-8@1s0(f5HcwH^JS-9mJtqrqM(_(u9Lo$A{t_0{oiB+S zO&4?p!^0q}V!c91t=G_In_3PMW2OGwJD0I#bQ}#NYZz%u6Y{mAN#-Sj)#FGhzDm)+ zW1Wjl7qAuyQRJzkY21SqvPGI?y1hbm7ZJPet(MbWbPnqUDi$m`_XK$aGqQ_(+l4v8 zaIh?01owT*JCLD&lr@FyM-yeamBX=$tmGom)1Y-`hbpXO!B{7$&1f$&GNU50QAX7$ z6592ZHTrrqJRBj)4~deYS0JbM5=Vaz?S{M69;H^Mb{p^JGu$Ch$n@a~Z7BjNh|Ec& zq2xSU=X^L46Xope^9(l(w{`Ev21y5)$Y@3gb*W_0Vb*-;p@TRyfIo zc+68W!&9gKLj0J2Nw0n4Id435cO@J719^11-P^nU-R|D**)JCJ44$QuEB~Ef>^~&Z zj|s%j@CIK)BbnqLtHxhmodzFsmkK8%!F~JZ92V#*tCAB(Jct^%iEb&9aEH zPk!6pQ?)R%_YYr$70(ZAIFx>@ga~eP#uP&pRq=*B48z(5pDF08I#Bk2r@gtT2rc130XGU2le`Lg#>vc&Je@Zi>h;LluM=>H+S*Alg%D zy*OCrQAVqv<%J*CJ_U1o+B*=F3xJ?3Hmg}jtFWb;dJ+UQN)79`P{l1Armfq;=I!ZW z2)Akw_5BC?2$uGZ&_lKdI+tRd(UerrTtMrDssHjFI6)#2li>GLo{UxcO{N0GjO zjG;Knfx`QQoWw7KNP8}AwElR_fU(|#X!?k*0fD|e5nwCP6|aqsAz6#-Y2pIah3M`W zNpzP@joXhhbO3`WQ_~9E4d-yzKY&4scu|)ST(FUz6whq+5ivkB!pjq zo4j30Lyy;8uOZOhGXVSsa65*cNP~}E3@$fL%y>I#r&|PFUxA5H(Uo$;^S51Z4dOG7 zhAi-q>TSb#t_~yXrR%j+l&c5M4#^Mi1#zGe1572RDDjeL&!l&ftUBNVbO*i^6zJNH z&~|SpU8q#OJz$^GN_hZ1oQ4tfctQ}p5udd(tg1i7W-w~>XTZZZ0bBs%4+2gW8ae-c zz(2w45Xvv+y^!w-DV7qzUH072bC8wD1zo6s5Iadfmb^=uvTSTtGj1)czf@5n{yK3= zxAZy0j6tUH9LKJ)0Mi4hmyj{IooFJSUcm$W6^v6%*$+q81MusB*~G@^$)~6 ztdV#k0geZtpWX-jVAVW7Py|tbj@ZTk)L+8D9R!9cV_pnqT3TQP42BYh#@PxqV832j zq?`e_5BhcCl7p}y=W9&QNm8p8@hCoWU)39s+GMl* zYg7Q?{#11H8QLW;=6QQDZOOFQ2>M=~IKv9_9{qb0Laf6`0u(Ab0Ue8H0u?0^WDs0? zQVhB^B{PDhXGwhvCW58jrY)66OKtkP;d&ZFXFLR`!=bO$nt#yTK%sA-83d4$7y-~T zhQ5t+u|z>er|nOo_Vt$MRUp@?=2+!L*c*xjB=QiK_zu-C4LRez%m{$qsU>enj-f3@ z{}gUTX2XA}G)Db61o}r9*y`&YxTxU753195VGqlADl(^8JeH{bIGZ`IF zgFEUU*S~?lJwXhBR9hR)k}(3I`C2<94oD}etH+Jk=)eoznVelyNj29OayjQA_6WFV?s76BE!4WU>_3|>_jhk*m!QD9TI1OL6JnR=7 z=S9o);t{&=YP4Qt1fkX?=xMxo>t*7>omF2#as`{K$TPQn-_uy)sBGvju!jjv<6kiS zEjF0j^bgoztZ2*{w1udcT*qt5^BgCYxAFd{@g}U%jd&)4U!k#CfoDv(h#Prs!#4w8 zd<*dAGf=1CHLW~1Gw=e>1exAf7(@}L#A)4fCb_C;xbpjrsPOpkNqGC_6Uc*FX*`!? c3zAKNqw+%6bo*{>$Dh#gaamzDpW?IPe<%L_O#lD@ literal 0 HcmV?d00001 diff --git a/__pycache__/main.cpython-310.pyc b/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f191856054e99c68757f16b7cd11bf760cb23e1d GIT binary patch literal 208 zcmd1j<>g`kf{7h*DaJthF^Gce1niECzO*6!YzjhmBR z{SVor;4kW{7d?3t1;whKUD&MlP}S9ss;RFYT`e!S2#lZKQ~6a8@&y<3gTrD2$lL)Y ziKGQdaApPVvxHIdkVr1Y2O`CLmT(!!@B>MNY{&@aKsIFy=1|ft5-)uN8>Aak7xb&4 zQ8_N>2ZO~1kU0lTk%UT;Fi9l?6I^mIA>7haRNdTHr8PN)d$WPc0nj}la~YT=uc>90 zTOsL3eniLgIG7L$-h(05jk#-7W!kUym5V^gi(bCxnjo26S49zr8cinAlb*4vR9ZuP zh{j*&5SR;$&9se~6Gjy~NmNYleImLE=f65zx3{+*KYaB3*^|5XHn;C@zS#D#mG}Mn zVC14S?Ug;7rfAf(feFg|7yfRG!*g>`ug|V_AqJpVW_^{Wu9X4+IV@0ar|FwvR@5hY z39NZP<`|}0V@45)K^BoV^*cFYoeexe@}c|;0)|r3HKLz;iLF7>_n5u{D|XENo>(Ij zdMqXcgFGe|YaO;;&%spV)_*lZ(4bR|U>&q)f4M-8*qHhiSb!D&>*OCBV>ad!C`3%F zPi@$B!e{lg4|ggdFIkzZ^gv_1xOSG?-o8prZ}*jTin6bNj>0JW>@gCDLmuwH}S@M!fF@|#4VG}k(9|zsT)h*w(0P5Y1 zqfTZ!?`|G>Fz^^vZ_9)Y2Qkx^z@iIxD&5cQ2?$Icz*93?^c-Ee3S=T+A$T0p)*s*g val;40g@aK!7+U{U_)c1QCgv>StDvz5U9?_z?Hw#g9~ErG6&5w4cDwl(ckLy* literal 0 HcmV?d00001 diff --git a/__pycache__/settings.cpython-310.pyc b/__pycache__/settings.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09ffc5777c878db071b5852c4e0c1e129510a60f GIT binary patch literal 223 zcmd1j<>g`kf|!Q56kQ133e%i-!>a D&om>A literal 0 HcmV?d00001 diff --git a/__pycache__/sight.cpython-310.pyc b/__pycache__/sight.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14d045703c26b52c0039eb06d02aec99a2e73f37 GIT binary patch literal 1947 zcmZ`)OK%%D5GMDn)ia7?Cn*ZJ?=D*S*h66yO`J3d;J6WFBmiMxyIO9PRacTrQch&( zW&`;f($W8*zlA_gJ^9>Q(L-mrlIl7zg&huOhWv&z!_l~24+)Ha{`iI49wC3?;_7f< z@gscl5C|un7KGt!6?AAZiz06q_RwLD;hn-AddxGtTlm9(1;Yxf3_})D@`P}Y`{#uF zS>?=TRZhDk3NGPfau88n-Ajt%X)@wPCSd756yvwjuvSM!wyt)bC;8}AKH}rI+V8x| zc|TJiefebqMrS0p zW)@I8CqSJU8Cc34IGpa5T5m??z6$0QZY}77!X7dYVO`~RxmL9^+*ya6^?8FksyQQP zbOBi~lGY6NQKD`ct2W5m^V_H?&w|wkch~$K$c6bWAaj7UiT0@F1g_^F=vtDh{3MGd zUNa{FA(!vqO3Z&#rbtj&T_TCLv@0janb1KT=c8Q3v9@xq9W_19w8ImXXs4IROuH&q zMaCL3Q)M21Dw4hwSY<3MC5Nzw)xh9^QX=n7RK}WRs@DR6an^pXtPfU6IRCjf$WkRN zJg8cX6TUYdscfW#kEUK>%EMTeXR#0vy2nYHkNUa|{L)@NPeeZ-Nmc<_SyWJYj?9YJ zq5(&VCXfrND{-6_iIj1CLH@qq{r;%??8(!^7yA$P9v?k={PM^IZRdC@>R=C{BXS!^ zNIlD=9<2dwSuGk^ZCV4`0NMu0X~Wdi&MJzj3!7F0c`U9y_~a%KNEj3s6qYr!XAY(j zQ+GiRB1>$5Ufcl^xdLr9O*HLknrh0$JyaTUA5~lHt1g4EjKMZ2B}R0Uo_<_9c7tV# zR;z(Le#TGiE~fO2Z{j0ZUQp4737ka741e9D0B{bmQa%F<<3dPRv0157ti07g9zVqV z3xkBQ=@Nq{K7loW8nkOy51@k>pf7MEdhM-&R;n9;1bSy6B3c&5=P0-a;ler3_*ba; z63A(_jHHo%&^&Cgz&l8+HEb3Gh~Do1V%GvqWS2>`f6b=aJxPj5b{*D-NAUG%LF3A2k3A;ME?eK67vz#kUDD* zmfEO_4P%rHGiVrL91q8QQXpT8ItSI96 ziZ@$mf>kc?5n?lt7{GwQv%4GEfrY=8WwcRE+yWh|rtm+sYH}DlaT^KdhSgq7JLX4n-6sTm3X-MJ=9;J;{W{kXHWx$$!Q&Fi0^zt~xO@#{`R2EWU0dptN!?QYi# zytvyf&@Cp00xPrR?zC2q$2>hkef-dx_?3EPC>z5ILwyO@FKICwvJ-~2v80_aHln%t zUY8Gt+NnNdXG}iC35&jxF|o04^1_P7i{ROaEjrI_tiK0WY0Nb_yMf)Zx@~6awn}ze zPF@u<`cv|LgN(wN_K8jQOxd5v?Pr=pQ$y`$oW&t5JJE;QzCC15$kN)iyJxezhZJG; zc2ZcS$GKpuNl`6VS5vd^dO@k@MXjKJv?xFZqSUK z9`nAG$$LG?L=>o)D(mMJI!vnUc+stG& zy~1cNvj;>mq8{O`>qI9Dxv{L+eSH`vrtdv3+5wzyMdhS!p^R#}^6?6)of} z;%cn7EI9{_6hNp0*pstFQ|UO@6=3o%ZBT8v#7f=+`3P@R!B7S$cK`*w$y^Q&l6X59 z-{9~BjPe)^7_0*b;|dVS_m#!Z-(=CQh#M{Q(w<98j zcbO&iobq6}UH1g1Cc1w&WSpU9EW{}Is&?u7#;M7TGgK?|Dl|x{Z)CVD-M;hUqZc<+`pRYcPzOXvAwP_es+2+7NsYE9 zLC{=pl`^oD$LDb;@kNzWk5sTL-D^i8VO@PXWknk73x?QtN;MPgJW@mY*|K=*E@Ic#ryL9lHL(wOUqnIp6TZx30g29=`^0vVkGF zmjfZkbUP3fPZJ<0O+l?79jRq1y(E<5x_P#PSMnM8?)pHmEfu_j9=BTTr`IrN2yp+ZWw#TJBQA zJ@9E=>2^OHxPJCU&Oo4CqJgTbd_V)`lyqoNW%^56k>yH_Db*C-)VU-KRUoM>v^8X* zX)oKhZP_*3z*?_ZiU&YYfJgkE~acfSV+z_LEHUpXfh=GM~g(*u4Hf+`?rM literal 0 HcmV?d00001 diff --git a/base.py b/base.py new file mode 100644 index 0000000..71dab8c --- /dev/null +++ b/base.py @@ -0,0 +1,48 @@ +import sys +import os +import configparser +from mouseevents import MouseEvents +from pynput import mouse +from sightfactory import SightFactory +from PyQt6.QtWidgets import QApplication +from pynput.mouse import Controller + +def init(): + global data, sights, mousectrl, app + #init the basic values + app = QApplication(sys.argv) + mousectrl = Controller() + sights = SightFactory() + data = {} + data["move"] = False + data["active_sight"] = "main" + data["sight_processes"] = {} + data["mouse_distance_x"] = 0 + data["mouse_distance_y"] = 0 + data["base_dir"]=os.path.abspath(os.getcwd())+os.path.sep + data["template_dir"]=data["base_dir"]+"place"+os.path.sep+"templates"+os.path.sep + #LOAD the template config content + loadConfigTemplate() + #Events + mouseevent = MouseEvents() + start() + +def loadConfigTemplate(): + config = configparser.ConfigParser() + config.sections() + config.read(data["template_dir"]+"config.ini") + if "DEFAULT" in config: + data["default_template"] = config["DEFAULT"]["default_template"] + data["default_template_dir"] = data["template_dir"]+data["default_template"]+os.path.sep + data["sight_mode"] = config["DEFAULT"]["sight_mode"] + print("Template config is loaded!") + else: + print("Missing 'DEFAULT' data from the templates config.ini folder. It can't start!") + +def start(): + # Creating the main Sight + sights.create("main","main"); + sights.processes(); + sights.show("main"); + + app.exec() \ No newline at end of file diff --git a/base.py.bak b/base.py.bak new file mode 100644 index 0000000..1b5a350 --- /dev/null +++ b/base.py.bak @@ -0,0 +1,47 @@ +import sys +import os +import configparser +from mouseevents import MouseEvents +from pynput import mouse +from sightfactory import SightFactory +from PyQt6.QtWidgets import QApplication +from pynput.mouse import Controller + +def init(): + global data, sights, mousectrl, app + #init the basic values + app = QApplication(sys.argv) + mousectrl = Controller() + sights = SightFactory() + data = {} + data["move"] = False + data["active_sight"] = "main" + data["sight_processes"] = {} + data["mouse_distance_x"] = 0 + data["mouse_distance_y"] = 0 + data["base_dir"]=os.path.abspath(os.getcwd())+os.path.sep + data["template_dir"]=data["base_dir"]+"place"+os.path.sep+"templates"+os.path.sep + #LOAD the template config content + loadConfigTemplate() + #Events + mouseevent = MouseEvents() + start() + +def loadConfigTemplate(): + config = configparser.ConfigParser() + config.sections() + config.read(data["template_dir"]+"config.ini") + if "DEFAULT" in config: + data["default_template"] = config["DEFAULT"]["default_template"] + data["default_template_dir"] = data["template_dir"]+data["default_template"]+os.path.sep + print("Template config is loaded!") + else: + print("Missing 'DEFAULT' data from the templates config.ini folder. It can't start!") + +def start(): + # Creating the main Sight + sights.create("main","main"); + sights.processes(); + sights.show("main"); + + app.exec() \ No newline at end of file diff --git a/browser.py b/browser.py new file mode 100644 index 0000000..c127325 --- /dev/null +++ b/browser.py @@ -0,0 +1,19 @@ +import base + +from PyQt6.QtWebChannel import QWebChannel +from PyQt6.QtWebEngineWidgets import QWebEngineView +from PyQt6.QtCore import QUrl + +class Browser(QWebEngineView): + def __init__(self): + super().__init__() + self.channel = QWebChannel() + + def addObject(self, id, call_handler): + self.handler = call_handler + self.channel.registerObject(id, self.handler) + self.page().setWebChannel(self.channel) + + def loadContent(self, type): + print(base.data["default_template_dir"]+type+".html") + self.load(QUrl.fromLocalFile(base.data["default_template_dir"]+type+".html")) \ No newline at end of file diff --git a/browser.py.bak b/browser.py.bak new file mode 100644 index 0000000..519aadf --- /dev/null +++ b/browser.py.bak @@ -0,0 +1,19 @@ +import base + +from PyQt6.QtWebChannel import QWebChannel +from PyQt6.QtWebEngineWidgets import QWebEngineView +from PyQt6.QtCore import QUrl + +class Browser(QWebEngineView): + def __init__(self): + super().__init__() + self.channel = QWebChannel() + + def addObject(self, id, call_handler): + self.handler = call_handler + self.channel.registerObject(id, self.handler) + self.page().setWebChannel(self.channel) + + def loadContent(self, type): + print(base.data["default_template_dir"]+type+".html")) + self.load(QUrl.fromLocalFile(base.data["default_template_dir"]+type+".html")) \ No newline at end of file diff --git a/callhandler.py b/callhandler.py new file mode 100644 index 0000000..345eaaa --- /dev/null +++ b/callhandler.py @@ -0,0 +1,101 @@ +import base +import random +from PyQt6.QtCore import QObject, pyqtSlot + +class CallHandler(QObject): + def __init__(self, sight): + super().__init__() + self.sight = sight + + @pyqtSlot(str) + def test(self, t): + print(t) + + @pyqtSlot(str, result=str) + def test2(self, t): + print(t) + return t+"_return" + + @pyqtSlot(result=str) + def getDefaultTemplate(self): + return base.data["default_template"] + + @pyqtSlot(int) + def setWidth(self, width): + self.sight.resize(width, self.sight.height()); + + @pyqtSlot(int) + def setHeight(self, height): + self.sight.resize(self.sight.width(), height); + + @pyqtSlot(str, str, result = str) + def create(self, id, type): + new_id = base.sights.create(id, type) + if new_id is not None: + base.sights.show(new_id) + return new_id; + + @pyqtSlot(str, str, bool) + def addData(self, key, value, is_global = False): + if is_global: + base.sights.addGlobalData(key,value) + else: + self.sight.addData(key,value) + + @pyqtSlot(str, bool, result=str) + def getData(self, key, is_global = False): + if is_global: + return base.sights.getGlobalData(key) + return self.sight.getData(key) + + @pyqtSlot() + def activeSight(self): + print("active") + if base.data["active_sight"] != self.sight.getId(): + print(self.sight.getId()) + base.data["active_sight"] = self.sight.getId() + + @pyqtSlot() + def close(self): + base.sights.close(self.sight.getId()) + + @pyqtSlot() + def setMaximized(self): + self.sight.showMaximized() + self.sight.setLayoutContentMargins(0,0,0,0) #because there will be a transparented line as a border + + @pyqtSlot() + def setMinimize(self): + self.sight.showMinimized() + + @pyqtSlot() + def restoreDown(self): + self.sight.showNormal() + self.sight.setLayoutContentMargins(1,1,1,1) #because if it is no border then I get setgeometry warning what can't be set + + @pyqtSlot() + def setFullscreen(self): + self.sight.showFullScreen() + + """@pyqtSlot(result=str) + def getTitle(self): + return self.sight.getTitle(); + """ + @pyqtSlot() + def move(self): + base.data["move"] = True + + + @pyqtSlot() + def endmove(self): + base.data["move"] = False + + @pyqtSlot() + def resize(self): + new_height = base.mousectrl.position[1]-self.sight.pos().y() + new_width = base.mousectrl.position[0]-self.sight.pos().x() + if(new_height<250): + new_height = 250 + if(new_width<250): + new_width = 250 + self.sight.resize( new_width, new_height) \ No newline at end of file diff --git a/callhandler.py.bak b/callhandler.py.bak new file mode 100644 index 0000000..794d4fe --- /dev/null +++ b/callhandler.py.bak @@ -0,0 +1,100 @@ +import base +import random +from PyQt6.QtCore import QObject, pyqtSlot + +class CallHandler(QObject): + def __init__(self, sight): + super().__init__() + self.sight = sight + + @pyqtSlot(str) + def test(self, t): + print(t) + + @pyqtSlot(str, result=str) + def test2(self, t): + print(t) + return t+"_return" + + @pyqtSlot(result=str) + def getDefaultTemplate(self): + return base.data["default_template"] + + @pyqtSlot(int) + def setWidth(self, width): + self.sight.resize(width, self.sight.height()); + + @pyqtSlot(int) + def setHeight(self, height): + self.sight.resize(self.sight.width(), height); + + @pyqtSlot(str, str, result = str) + def create(self, id, type): + new_id = base.sights.create(id, type) + base.sights.show(new_id) + return new_id; + + @pyqtSlot(str, str, bool) + def addData(self, key, value, is_global = False): + if is_global: + base.sights.addGlobalData(key,value) + else: + self.sight.addData(key,value) + + @pyqtSlot(str, bool, result=str) + def getData(self, key, is_global = False): + if is_global: + return base.sights.getGlobalData(key) + return self.sight.getData(key) + + @pyqtSlot() + def activeSight(self): + print("active") + if base.data["active_sight"] != self.sight.getId(): + print(self.sight.getId()) + base.data["active_sight"] = self.sight.getId() + + @pyqtSlot() + def close(self): + base.sights.close(self.sight.getId()) + + @pyqtSlot() + def setMaximized(self): + self.sight.showMaximized() + self.sight.setLayoutContentMargins(0,0,0,0) #because there will be a transparented line as a border + + @pyqtSlot() + def setMinimize(self): + self.sight.showMinimized() + + @pyqtSlot() + def restoreDown(self): + self.sight.showNormal() + self.sight.setLayoutContentMargins(1,1,1,1) #because if it is no border then I get setgeometry warning what can't be set + + @pyqtSlot() + def setFullscreen(self): + self.sight.showFullScreen() + + """@pyqtSlot(result=str) + def getTitle(self): + return self.sight.getTitle(); + """ + @pyqtSlot() + def move(self): + base.data["move"] = True + + + @pyqtSlot() + def endmove(self): + base.data["move"] = False + + @pyqtSlot() + def resize(self): + new_height = base.mousectrl.position[1]-self.sight.pos().y() + new_width = base.mousectrl.position[0]-self.sight.pos().x() + if(new_height<250): + new_height = 250 + if(new_width<250): + new_width = 250 + self.sight.resize( new_width, new_height) \ No newline at end of file diff --git a/core/template/base/content/main/content.html b/core/template/base/content/main/content.html new file mode 100644 index 0000000..ecf63d5 --- /dev/null +++ b/core/template/base/content/main/content.html @@ -0,0 +1 @@ +Create an "Other" sight! \ No newline at end of file diff --git a/core/template/base/content/main/content.html.bak b/core/template/base/content/main/content.html.bak new file mode 100644 index 0000000..1cfc492 --- /dev/null +++ b/core/template/base/content/main/content.html.bak @@ -0,0 +1 @@ +Create an "Other" sight! \ No newline at end of file diff --git a/core/template/base/content/main/main.html.bak b/core/template/base/content/main/main.html.bak new file mode 100644 index 0000000..e69de29 diff --git a/core/template/base/content/main_text/content.html b/core/template/base/content/main_text/content.html new file mode 100644 index 0000000..1e61d87 --- /dev/null +++ b/core/template/base/content/main_text/content.html @@ -0,0 +1,6 @@ + + +
This is a sentence.
+ \ No newline at end of file diff --git a/core/template/base/content/main_text/content.html.bak b/core/template/base/content/main_text/content.html.bak new file mode 100644 index 0000000..792c4b3 --- /dev/null +++ b/core/template/base/content/main_text/content.html.bak @@ -0,0 +1,6 @@ + + +
This is a sentence.
+ \ No newline at end of file diff --git a/core/template/base/content/main_text/test.css b/core/template/base/content/main_text/test.css new file mode 100644 index 0000000..11c8899 --- /dev/null +++ b/core/template/base/content/main_text/test.css @@ -0,0 +1,3 @@ +#example { + background-color: yellow; +} \ No newline at end of file diff --git a/core/template/base/css/template.css b/core/template/base/css/template.css new file mode 100644 index 0000000..d6db84a --- /dev/null +++ b/core/template/base/css/template.css @@ -0,0 +1,26 @@ +body { + background-color: white; +} +#sight #stitlebar { + background-color: #4f9af3; +} +#sight #stitle { + color: white; + padding: 2px; + font-weight: bold; + font-family: monospace; + font-size: larger; + float: left; +} +#sight { + border: 4px solid #4f9af3; +} +#sight #content { + padding: 5px; +} +#sight #sclose:not([except]), #sight #sminimize:not([except]), #sight #stoggled:not([except]) { + height: 20px; + width: 20px; + float: right; + margin-left: 5px; +} diff --git a/core/template/base/css/template.css.bak b/core/template/base/css/template.css.bak new file mode 100644 index 0000000..67dbb73 --- /dev/null +++ b/core/template/base/css/template.css.bak @@ -0,0 +1,35 @@ +body { + background-color: white; +} +#sight #stitlebar { + background-color: #4f9af3; +} +#sight #stitle { + color: white; + padding: 2px; + font-weight: bold; + font-family: monospace; + font-size: larger; + float: left; +} +#sight #sresize { + width: 15px; + height: 15px; + background-color: none; + right: 0; + float: right; + bottom: 0; + position: absolute; +} +#sight { + border: 4px solid #4f9af3; +} +#sight #content { + padding: 5px; +} +#sight #sclose:not([except]), #sight #sminimize:not([except]), #sight #stoggled:not([except]) { + height: 20px; + width: 20px; + float: right; + margin-left: 5px; +} diff --git a/core/template/base/img/close.png b/core/template/base/img/close.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f8492739300a0d8eb373a01824cfd3597a70c7 GIT binary patch literal 775 zcmV+i1Ni)jP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0-Q-iK~!i%?bhlhtCzg5r#OsM=sfrZ3hIQDA zh0!uEO|^OxD{ywSEJt=Bm069DE%267nFHwNG_0{+S%oIcgm_9>WkPaFB^P=Rea!k2 zD-|mfau3$F(?PpQ6?DkH@TNlGb|xeaT7DT)@7SxS{IBgG4e zCIC+^!rDGZ@j{-dIYdWNN7UL+s-lHvDHBqPp7EB_e?i^typjv)1!IYwG(Dwmz}j}2tdHCo zSn*r|#7Z4S>W`ntWwAD71nr<>_QTb)GTF!ZmHZdQlyYPMCxs`zK_>Y z;y3nUg@$6e(9pGo^iYGfvPSKd%iGR^+HFUBhiR>>%{S=O(LOt44XDi>wAlq+Y+8eA zasuOAhBc@bPp}f>=&2?>2xJW&Iz2hI8%v_6nx4bjXsA@?IC`@QvtD4%%VU^F#>!z_ zg>JL0oz07;=DRqFMc)~3w2?0F_h9dw>7?17XZq7Le*pxOrF9JkKYjoJ002ovPDHLk FV1lb#V~YR) literal 0 HcmV?d00001 diff --git a/core/template/base/img/maximized.png b/core/template/base/img/maximized.png new file mode 100644 index 0000000000000000000000000000000000000000..7e659def2b7af825ddf9e9419b5ca36a9b3d78a4 GIT binary patch literal 571 zcmV-B0>u4^P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0nkZAK~!i%?b^*N z1yLNv@rl?ILb9>ILJ_ecS^5Jk*jZXzSmUp-VC7}QMqXCzl_*(JB0{oI6nX#trt3E5 z{-!&Fd(Rx5r#_pRbEflj@66P_$BRfU#<7hHyx_y2cU)lyQ)oe~lwlh8&@P-7Z_@$Q8=?aiIoG6i^3(DR`k`=g$kBz+_gStt%{cA^8`&4<=HNTWISF zi(N>_kA2ISDWZAYKwFO{Q6U@nh2-m`owQL8yz9UL+cm=9ZlayE%@bt5g}--38(^Ca z_-RFw|6tN;7}?B08)S=plpq_~)g&8%w83d7JIC6P6WP^t3T;waNtr=JrUvWKCa29F z)K5lBKb9cdO|*-dB9G=xjNscn6E`xc4(;ePOkSG)dnP)b_X*%<2~iJ+JtP1C002ov JPDHLkV1jR4@$Uct literal 0 HcmV?d00001 diff --git a/core/template/base/img/minimize.png b/core/template/base/img/minimize.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac804d14772edcaaf9f0f4377f32511feddeab2 GIT binary patch literal 535 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg1|*MGNWTVBjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4Qo7I978gk-`+Z_%^E0i{9|XtVh-+TohgfQ zJf{6)`Nvz&Xckr`CbnkJk{gwg8@Dgaadq*SwCKd|?=wyATF+a#xa54X#r|J8Y3F>N zU*Bu|-LH63lSwjhWdtA0&jmz zi^_4fKCvsQ6YW zUa5CeU{~A)|H>CepGjENw5*UN*G}rW)2CmHxb1@4xidbWD%Mk3 zuUnJGdTY<8Ioz@b(!~~@)z%mLG&NqoglB$av)OtZpmMP)2D?jL(h%ix8@q0DMIA8R z@-w3@M1v($@uyX$weywsC#zDNU)-9YXMVA)?HT8$drGm^i+MTDs$D91BzkMXgdT;{ zHd`DQ-f$P)bYhj-PxrOF+x)`%R`#21TJ@6UmSdRb%tVo8oYEKgwx#i(-gWWu%s&~+_8TAdoaC=B@=^OAPwjbNWHNZV`njxgN@xNA D<96dg literal 0 HcmV?d00001 diff --git a/core/template/base/img/restoredown.png b/core/template/base/img/restoredown.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd247524e8dae6f55935c525fde5d1acf947188 GIT binary patch literal 689 zcmV;i0#5yjP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!B$hK~!i%?b9e2dCl}ZeSC<*$90j)(52O4R&E!*5fIxol^H6n=zIdSc7wMAEW31Fb`{BPL86E zj%L??dhov|E2m1L`Kb<#L>l5DgKqq%=zDWmQZV06_`APJd<5+|> zf8#LB4WV9Q8hH$B{zkMyW9NY$a|_n|jZ(;`6zZ5#sH@3BI>8-_U-w{C8dx@DFkyvqZC?7Hih)0@~lBOUv3WK zdIU${CVHX0u*PL`E!Vct6HFubV9no%R!EPKwxZAI+50T4`5Vy+iN;>Vg%&1%8+vVx zYg~aI%vuJww>Do*SDy(_CIE3np^G5D=qF!!dZOqLN zXuUgz} X7+8R)z*;(x00000NkvXXu0mjff{QS( literal 0 HcmV?d00001 diff --git a/core/template/base/main.html b/core/template/base/main.html new file mode 100644 index 0000000..262556b --- /dev/null +++ b/core/template/base/main.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + +
+
+
Main Template
+
+
+
+
+
+
+ MAIN +
+
+
+
+ + \ No newline at end of file diff --git a/core/template/base/main.html.bak b/core/template/base/main.html.bak new file mode 100644 index 0000000..c756937 --- /dev/null +++ b/core/template/base/main.html.bak @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + +
+
+
Main Template
+
+
+
+
+
+
+ MAIN +
+
+
+
+ + \ No newline at end of file diff --git a/core/template/base/other.html b/core/template/base/other.html new file mode 100644 index 0000000..0b5204f --- /dev/null +++ b/core/template/base/other.html @@ -0,0 +1,30 @@ + + + + + + + + + + + +
+
+
TITLE
+
+
+
+
+ +
+
+ + \ No newline at end of file diff --git a/core/template/base/other.html.bak b/core/template/base/other.html.bak new file mode 100644 index 0000000..b99c0c9 --- /dev/null +++ b/core/template/base/other.html.bak @@ -0,0 +1,30 @@ + + + + + + + + + + + +
+
+
TITLE
+
+
+
+
+ +
+
+ + \ No newline at end of file diff --git a/core/template/base/template.conf.bak b/core/template/base/template.conf.bak new file mode 100644 index 0000000..e69de29 diff --git a/core/template/base/template.js b/core/template/base/template.js new file mode 100644 index 0000000..d36ed3b --- /dev/null +++ b/core/template/base/template.js @@ -0,0 +1,13 @@ +var s_template={ + 'name' : "Base", + 'author' : 'Balazs Birtalan', + 'URL' : '/template/base', + 'created': '2023' +} + +// first element: "key" is the ID where the content html will be embedded +// second element: "value" is the folder name of that content folder where the content.html file's contents will be embedded +var s_contents={ + 'main_content':"main", + 'main_text':"main_text", +} \ No newline at end of file diff --git a/core/template/base/template.js.bak b/core/template/base/template.js.bak new file mode 100644 index 0000000..6556055 --- /dev/null +++ b/core/template/base/template.js.bak @@ -0,0 +1,13 @@ +var s_template={ + 'name' : "Base", + 'author' : 'Balazs Birtalan', + 'URL' : '/template/base', + 'created': '2023' +} + +// first element "key" is the ID where the content html will be embedded +// second element "value" is the folder name of that content folder where the content.html file's contents will be embedded +var s_contents={ + 'main_content':"main", + 'main_text':"main_text", +} \ No newline at end of file diff --git a/core/template/config.ini b/core/template/config.ini new file mode 100644 index 0000000..5b58ad9 --- /dev/null +++ b/core/template/config.ini @@ -0,0 +1,3 @@ +[DEFAULT] +default_template = base +sight_mode = single \ No newline at end of file diff --git a/core/template/config.ini.bak b/core/template/config.ini.bak new file mode 100644 index 0000000..2b10775 --- /dev/null +++ b/core/template/config.ini.bak @@ -0,0 +1,3 @@ +[DEFAULT] +default_template = base +sight_mode = multiple \ No newline at end of file diff --git a/lib/jquery-3.6.4.min.js b/lib/jquery-3.6.4.min.js new file mode 100644 index 0000000..0de648e --- /dev/null +++ b/lib/jquery-3.6.4.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.4 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.4",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssHas=ce(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssHas||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssHas=ce(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssHas||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0 0) { + new QWebChannel(qt.webChannelTransport, function (channel) { + // now I retrieve my object + window.sight = channel.objects.handler; + }); +} + +(function ( $ ) { + $.fn.s_create = function() { + $(document).on( "click", "#screate", function() { + event.preventDefault(); + window.sight.create($(this).data("id"), $(this).data("type"), function(sight_id) { + /*alert(sight_id)*/ + }); + }) + }; + $.fn.s_close = function() { + $("body").on( "click", "#sclose", function() { + event.preventDefault(); + window.sight.close(); + }) + }; + $.fn.s_exit = function() { + this.bind("click.s_exit", function (event) { + event.preventDefault(); + window.sight.exit(); + }); + }; + $.fn.s_toggled = function() { + this.bind("click.s_toggled", function (event) { + event.preventDefault(); + $(this).empty(); + if($(this).attr('state') != "maximized") { // set to the maximized + window.sight.setMaximized(); + $(this).attr("state", "maximized"); + $(this).prepend('') + } else { // set to the restore down + window.sight.restoreDown(); + $(this).attr("state", "restoredown"); + $(this).prepend('') + } + }); + }; + $.fn.s_maximized = function() { + this.bind("click.s_maximized", function (event) { + if($(this).attr('state') != "maximized") { + event.preventDefault(); + $("#stoggled").empty(); + window.sight.setMaximized() + $("#stoggled").prepend('') + $("#stoggled").attr("state", "maximized"); + } + }); + }; + $.fn.s_restoredown = function() { + this.bind("click.s_restoredown", function (event) { + if($(this).attr('state') != "restoredown") { + event.preventDefault(); + $("#stoggled").empty(); + window.sight.restoreDown(); + $("#stoggled").attr("state", "restoredown"); + $("#stoggled").prepend('') + } + }); + }; + $.fn.s_minimize = function() { + this.bind("click.s_minimize", function (event) { + event.preventDefault(); + window.sight.setMinimize(); + }); + }; + $.fn.s_fullscreen = function() { + this.bind("click.s_fullscreen", function (event) { + event.preventDefault(); + window.sight.setFullscreen(); + }); + }; + $.fn.s_title = function() { + $(this).text(window.sight.getTitle()); + }; + $.fn.s_titlebar = function() { + /* DISABLE TEXT SELECT */ + $( this ).attr('unselectable', 'on').css('user-select', 'none').on('selectstart dragstart', false); + $( this ).mousedown(function() { + /*$( "body" ).attr('unselectable', 'on').css('user-select', 'none').on('selectstart dragstart', false);*/ + if($(this).children("#stoggled").attr('state') == "restoredown") + window.sight.move(); + }) + .mouseup(function() { + /*$( "body" ).attr('unselectable', 'off').css('user-select', 'yes').on('selectstart dragstart', true);*/ + window.sight.endmove(); + }); + + }; + $.fn.s_global_add = function() { + this.bind("click.s_global_add", function (event) { + event.preventDefault(); + //window.sight.global($(this)); + }); + }; + $(document).mousemove(function(e){ + if(resizing) + window.sight.resize(); + }); + $(document).mouseup(function(e){ + resizing = false + }); + $(document).mousedown(function(e){ + window.sight.activeSight(); + }); + var resizing = false; + $.fn.s_resize = function() { + $(this).mousemove(function(e){ + event.preventDefault(); + if(e.buttons==1) + resizing = true + }); + }; +}( jQuery )); +function addData(key, value, is_global = false) { + window.sight.addData(key,value, is_global); +} +function getData(key, is_global = false) { + window.sight.getData(key, is_global, function(result) { + alert(result) + }); +} +function sclose() { + window.sight.close(); +} +function setTitle(title) { + $("#stitle").text(title); +} +$(document).ready(function(){ + // LOAD the contents into the Sight + if (typeof s_contents !== 'undefined') { + for ( const [id_name,content_folder] of Object.entries( s_contents ) ) { + $("#"+id_name).load("content/"+content_folder+"/content.html"); + } + } + // INIT the Sight from init_sight variable + if (typeof init_sight !== 'undefined') { + + for ( const [key,value] of Object.entries( init_sight ) ) { + window.sight.test(key + " - " + value) + switch(key) { + case 'width': + window.sight.setWidth(value) + break; + case 'height': + window.sight.setHeight(value) + break; + } + } + } + // INIT + /*window.sight.getDefaultTemplate(function(default_template) { + $('a[href]:not([href^="http://"]), a[href]:not([href^="https://"]), a[href]:not([href^="#"])').each(function(){ + if(!$(this).hasClass( "nav-link" )) { + window.sight.test($(this).attr("href") + " je1"); + var newUrl = './templates/'+default_template+'/'+$(this).attr("href"); + $(this).attr("href", newUrl); + window.sight.test(newUrl + " je2"); + } + }); + });*/ + + if($("#stoggled").length) { + var attr = $("#stoggled").attr("state") + if (typeof attr !== 'undefined' && attr !== false && (attr == "restoredown" || attr == "maximized")) { + + png_button = "restoredown" + if(attr == "restoredown") + png_button = "maximized" + $("#stoggled").prepend(''); + + if(attr == "maximized") + window.sight.setMaximized(); + } else { + $("#stoggled").attr("state", "restoredown"); + $("#stoggled").prepend(''); + } + } + if($("#sclose").length) { + $("#sclose:not([except])").empty(); + $("#sclose:not([except])").prepend(''); + } + if($("#sminimize").length) { + $("#sminimize").empty(); + $("#sminimize").prepend(''); + } + /*window.sight.getTitle(function(result) { + setTitle(result); + });*/ + // INIT END + + $( "#screate" ).s_create(); + $( "#sclose" ).s_close(); + $( "#sexit" ).s_exit(); + $( "#smaximized" ).s_maximized(); + $( "#sminimize" ).s_minimize(); + $( "#sresize" ).s_resize(); + $( "#srestoredown" ).s_restoredown(); + $( "#sfullscreen" ).s_fullscreen(); + $( "#stitlebar" ).s_titlebar(); + $( "#stoggled" ).s_toggled(); +}); \ No newline at end of file diff --git a/place/js/sight.js.bak b/place/js/sight.js.bak new file mode 100644 index 0000000..6ab0db4 --- /dev/null +++ b/place/js/sight.js.bak @@ -0,0 +1,208 @@ +if(navigator.userAgent.indexOf("QtWebEngine") > 0) { + new QWebChannel(qt.webChannelTransport, function (channel) { + // now I retrieve my object + window.sight = channel.objects.handler; + }); +} + +(function ( $ ) { + $.fn.s_create = function() { + $(document).on( "click", "#screate", function() { + event.preventDefault(); + var data_id = "" + window.sight.create(data_id, $(this).data("type"), function(sight_id) { + /*alert(sight_id)*/ + }); + }) + }; + $.fn.s_close = function() { + $("body").on( "click", "#sclose", function() { + event.preventDefault(); + window.sight.close(); + }) + }; + $.fn.s_exit = function() { + this.bind("click.s_exit", function (event) { + event.preventDefault(); + window.sight.exit(); + }); + }; + $.fn.s_toggled = function() { + this.bind("click.s_toggled", function (event) { + event.preventDefault(); + $(this).empty(); + if($(this).attr('state') != "maximized") { // set to the maximized + window.sight.setMaximized(); + $(this).attr("state", "maximized"); + $(this).prepend('') + } else { // set to the restore down + window.sight.restoreDown(); + $(this).attr("state", "restoredown"); + $(this).prepend('') + } + }); + }; + $.fn.s_maximized = function() { + this.bind("click.s_maximized", function (event) { + if($(this).attr('state') != "maximized") { + event.preventDefault(); + $("#stoggled").empty(); + window.sight.setMaximized() + $("#stoggled").prepend('') + $("#stoggled").attr("state", "maximized"); + } + }); + }; + $.fn.s_restoredown = function() { + this.bind("click.s_restoredown", function (event) { + if($(this).attr('state') != "restoredown") { + event.preventDefault(); + $("#stoggled").empty(); + window.sight.restoreDown(); + $("#stoggled").attr("state", "restoredown"); + $("#stoggled").prepend('') + } + }); + }; + $.fn.s_minimize = function() { + this.bind("click.s_minimize", function (event) { + event.preventDefault(); + window.sight.setMinimize(); + }); + }; + $.fn.s_fullscreen = function() { + this.bind("click.s_fullscreen", function (event) { + event.preventDefault(); + window.sight.setFullscreen(); + }); + }; + $.fn.s_title = function() { + $(this).text(window.sight.getTitle()); + }; + $.fn.s_titlebar = function() { + /* DISABLE TEXT SELECT */ + $( this ).attr('unselectable', 'on').css('user-select', 'none').on('selectstart dragstart', false); + $( this ).mousedown(function() { + /*$( "body" ).attr('unselectable', 'on').css('user-select', 'none').on('selectstart dragstart', false);*/ + if($(this).children("#stoggled").attr('state') == "restoredown") + window.sight.move(); + }) + .mouseup(function() { + /*$( "body" ).attr('unselectable', 'off').css('user-select', 'yes').on('selectstart dragstart', true);*/ + window.sight.endmove(); + }); + + }; + $.fn.s_global_add = function() { + this.bind("click.s_global_add", function (event) { + event.preventDefault(); + //window.sight.global($(this)); + }); + }; + $(document).mousemove(function(e){ + if(resizing) + window.sight.resize(); + }); + $(document).mouseup(function(e){ + resizing = false + }); + $(document).mousedown(function(e){ + window.sight.activeSight(); + }); + var resizing = false; + $.fn.s_resize = function() { + $(this).mousemove(function(e){ + event.preventDefault(); + if(e.buttons==1) + resizing = true + }); + }; +}( jQuery )); +function addData(key, value, is_global = false) { + window.sight.addData(key,value, is_global); +} +function getData(key, is_global = false) { + window.sight.getData(key, is_global, function(result) { + alert(result) + }); +} +function sclose() { + window.sight.close(); +} +function setTitle(title) { + $("#stitle").text(title); +} +$(document).ready(function(){ + // LOAD the contents into the Sight + if (typeof s_contents !== 'undefined') { + for ( const [id_name,content_folder] of Object.entries( s_contents ) ) { + $("#"+id_name).load("content/"+content_folder+"/content.html"); + } + } + // INIT the Sight from init_sight variable + if (typeof init_sight !== 'undefined') { + + for ( const [key,value] of Object.entries( init_sight ) ) { + window.sight.test(key + " - " + value) + switch(key) { + case 'width': + window.sight.setWidth(value) + break; + case 'height': + window.sight.setHeight(value) + break; + } + } + } + // INIT + /*window.sight.getDefaultTemplate(function(default_template) { + $('a[href]:not([href^="http://"]), a[href]:not([href^="https://"]), a[href]:not([href^="#"])').each(function(){ + if(!$(this).hasClass( "nav-link" )) { + window.sight.test($(this).attr("href") + " je1"); + var newUrl = './templates/'+default_template+'/'+$(this).attr("href"); + $(this).attr("href", newUrl); + window.sight.test(newUrl + " je2"); + } + }); + });*/ + + if($("#stoggled").length) { + var attr = $("#stoggled").attr("state") + if (typeof attr !== 'undefined' && attr !== false && (attr == "restoredown" || attr == "maximized")) { + + png_button = "restoredown" + if(attr == "restoredown") + png_button = "maximized" + $("#stoggled").prepend(''); + + if(attr == "maximized") + window.sight.setMaximized(); + } else { + $("#stoggled").attr("state", "restoredown"); + $("#stoggled").prepend(''); + } + } + if($("#sclose").length) { + $("#sclose:not([except])").empty(); + $("#sclose:not([except])").prepend(''); + } + if($("#sminimize").length) { + $("#sminimize").empty(); + $("#sminimize").prepend(''); + } + /*window.sight.getTitle(function(result) { + setTitle(result); + });*/ + // INIT END + + $( "#screate" ).s_create(); + $( "#sclose" ).s_close(); + $( "#sexit" ).s_exit(); + $( "#smaximized" ).s_maximized(); + $( "#sminimize" ).s_minimize(); + $( "#sresize" ).s_resize(); + $( "#srestoredown" ).s_restoredown(); + $( "#sfullscreen" ).s_fullscreen(); + $( "#stitlebar" ).s_titlebar(); + $( "#stoggled" ).s_toggled(); +}); \ No newline at end of file diff --git a/place/js/xtr-translator/demo/index.html b/place/js/xtr-translator/demo/index.html new file mode 100644 index 0000000..db1e695 --- /dev/null +++ b/place/js/xtr-translator/demo/index.html @@ -0,0 +1,82 @@ + + + + + + + + +jQuery xtr.js plugin Demo + + + +
+
+ +
+
+
+
+
+
+

jQuery xtr.js plugin Demo

+
Welcome
+
Hello
+
Good Bye
+ + + +
+ + + + + + + \ No newline at end of file diff --git a/place/js/xtr-translator/demo/styles.css b/place/js/xtr-translator/demo/styles.css new file mode 100644 index 0000000..a6ed151 --- /dev/null +++ b/place/js/xtr-translator/demo/styles.css @@ -0,0 +1,27 @@ + +#wrapper { + font: 16px/18px Calibri; + margin: 0 auto; + width: 200px; + text-align: center +} + +#wrapper div { + background: #28b7ff; + padding: 15px; + margin: 10px; + text-align: center +} + +label { + font-weight: 700; + margin: 25px 0 5px; + display: block +} + +select { + width: 100%; + height: 30px; + outline: 0; + cursor: pointer +} diff --git a/place/js/xtr-translator/demo/styles.less b/place/js/xtr-translator/demo/styles.less new file mode 100644 index 0000000..a26f8be --- /dev/null +++ b/place/js/xtr-translator/demo/styles.less @@ -0,0 +1,23 @@ +#wrapper { + font: 16px / 18px Calibri; + margin: 0 auto; + width: 200px; + text-align: center; + div { + background: #28b7ff; + padding: 15px; + margin: 10px; + text-align: center; + } +} +label { + font-weight: bold; + margin: 25px 0 5px; + display: block; +} +select { + width: 100%; + height: 30px; + outline: none; + cursor: pointer; +} \ No newline at end of file diff --git a/place/js/xtr-translator/dictonary.js b/place/js/xtr-translator/dictonary.js new file mode 100644 index 0000000..ff3df08 --- /dev/null +++ b/place/js/xtr-translator/dictonary.js @@ -0,0 +1,8 @@ +var data = { + "close": { + en: "close", + hu: "Bezar", + it: "Vicino" + }, + +}; diff --git a/place/js/xtr-translator/jquery.xtr.js b/place/js/xtr-translator/jquery.xtr.js new file mode 100644 index 0000000..90458ba --- /dev/null +++ b/place/js/xtr-translator/jquery.xtr.js @@ -0,0 +1,88 @@ +/*! + * July 2017 + * xtr 1.0.0 + * @author Mario Vidov + * @url http://vidov.it + * @twitter MarioVidov + * MIT license +*/ + +(function($) { + var pluginName = 'xtr'; + + var settings = { + default: 'en', + lang: 'en', + regExp: { + '': /\s/g, + '_': /[&<>"'`\/=]/g + } + }; + + var config = { + defaultClass: 'data-xtr-default', + langClass: 'data-xtr-lang', + langKey : 'data-xtr-key', + langOrig : 'data-xtr-original' + }; + + function Plugin(element, options) { + options = options || {}; + this.$element = $(element); + this.options = $.extend(true, {}, settings, options); + this.selector = '[xtr]'; + this.regExp = this.options.regExp; + this.default = this.options.default; + this.t = this.options.t; + this.l = this.options.lang; + + this.$element.attr(config.langClass, this.l) + .attr(config.defaultClass, this.default); + this.init(); + } + + Plugin.prototype.lang = function(l) { + if (l && l === 'reset') { + this.l = this.default; + } else if (l) { + this.l = l; + } + this.init(); + }; + + Plugin.prototype.set = function(index) { + var $el = $('[' + config.langKey + '="' + index + '"]'); + var original = $el && $el.attr(config.langOrig) || index; + return (this.t && this.t[index] && this.t[index][this.l]) ? this.t[index][this.l] : original; + }; + + Plugin.prototype.init = function() { + var self = this; + this.$element.attr(config.langClass, this.l); + $(self.selector).add('[' + config.langKey + ']').each(function () { + var $this = $(this); + var key = $this.attr(config.langKey); + var original = $this.attr(config.langOrig); + var text = $this.text(); + if (!key) { + key = text; + for (var i in self.regExp) { + key = key.replace(self.regExp[i], i); + } + $this.attr(config.langKey, key); + } + if (!original) { + $this.attr(config.langOrig, text); + } + $this.html(self.set(key)); + }); + }; + + $.fn[pluginName] = function (options) { + return this.each(function () { + if (!$.data(this, 'plugin_' + pluginName)) { + $.data(this, 'plugin_' + pluginName, new Plugin(this, options)); + } + }); + }; +})(jQuery); diff --git a/place/js/xtr-translator/jquery.xtr.min.js b/place/js/xtr-translator/jquery.xtr.min.js new file mode 100644 index 0000000..9a8431b --- /dev/null +++ b/place/js/xtr-translator/jquery.xtr.min.js @@ -0,0 +1 @@ +(function(t){var i="xtr";var a={"default":"en",lang:"en",regExp:{"":/\s/g,_:/[&<>"'`\/=]/g}};var e={defaultClass:"data-xtr-default",langClass:"data-xtr-lang",langKey:"data-xtr-key",langOrig:"data-xtr-original"};function s(i,s){s=s||{};this.$element=t(i);this.options=t.extend(true,{},a,s);this.selector="[xtr]";this.regExp=this.options.regExp;this.default=this.options.default;this.t=this.options.t;this.l=this.options.lang;this.$element.attr(e.langClass,this.l).attr(e.defaultClass,this.default);this.init()}s.prototype.lang=function(t){if(t&&t==="reset"){this.l=this.default}else if(t){this.l=t}this.init()};s.prototype.set=function(i){var a=t("["+e.langKey+'="'+i+'"]');var s=a&&a.attr(e.langOrig)||i;return this.t&&this.t[i]&&this.t[i][this.l]?this.t[i][this.l]:s};s.prototype.init=function(){var i=this;this.$element.attr(e.langClass,this.l);t(i.selector).add("["+e.langKey+"]").each(function(){var a=t(this);var s=a.attr(e.langKey);var n=a.attr(e.langOrig);var r=a.text();if(!s){s=r;for(var l in i.regExp){s=s.replace(i.regExp[l],l)}a.attr(e.langKey,s)}if(!n){a.attr(e.langOrig,r)}a.html(i.set(s))})};t.fn[i]=function(a){return this.each(function(){if(!t.data(this,"plugin_"+i)){t.data(this,"plugin_"+i,new s(this,a))}})}})(jQuery); \ No newline at end of file diff --git a/place/templates/base/content/main/content.html b/place/templates/base/content/main/content.html new file mode 100644 index 0000000..ecf63d5 --- /dev/null +++ b/place/templates/base/content/main/content.html @@ -0,0 +1 @@ +Create an "Other" sight! \ No newline at end of file diff --git a/place/templates/base/content/main/content.html.bak b/place/templates/base/content/main/content.html.bak new file mode 100644 index 0000000..1cfc492 --- /dev/null +++ b/place/templates/base/content/main/content.html.bak @@ -0,0 +1 @@ +Create an "Other" sight! \ No newline at end of file diff --git a/place/templates/base/content/main/main.html.bak b/place/templates/base/content/main/main.html.bak new file mode 100644 index 0000000..e69de29 diff --git a/place/templates/base/content/main_text/content.html b/place/templates/base/content/main_text/content.html new file mode 100644 index 0000000..1e61d87 --- /dev/null +++ b/place/templates/base/content/main_text/content.html @@ -0,0 +1,6 @@ + + +
This is a sentence.
+ \ No newline at end of file diff --git a/place/templates/base/content/main_text/content.html.bak b/place/templates/base/content/main_text/content.html.bak new file mode 100644 index 0000000..792c4b3 --- /dev/null +++ b/place/templates/base/content/main_text/content.html.bak @@ -0,0 +1,6 @@ + + +
This is a sentence.
+ \ No newline at end of file diff --git a/place/templates/base/content/main_text/test.css b/place/templates/base/content/main_text/test.css new file mode 100644 index 0000000..11c8899 --- /dev/null +++ b/place/templates/base/content/main_text/test.css @@ -0,0 +1,3 @@ +#example { + background-color: yellow; +} \ No newline at end of file diff --git a/place/templates/base/css/template.css b/place/templates/base/css/template.css new file mode 100644 index 0000000..d6db84a --- /dev/null +++ b/place/templates/base/css/template.css @@ -0,0 +1,26 @@ +body { + background-color: white; +} +#sight #stitlebar { + background-color: #4f9af3; +} +#sight #stitle { + color: white; + padding: 2px; + font-weight: bold; + font-family: monospace; + font-size: larger; + float: left; +} +#sight { + border: 4px solid #4f9af3; +} +#sight #content { + padding: 5px; +} +#sight #sclose:not([except]), #sight #sminimize:not([except]), #sight #stoggled:not([except]) { + height: 20px; + width: 20px; + float: right; + margin-left: 5px; +} diff --git a/place/templates/base/css/template.css.bak b/place/templates/base/css/template.css.bak new file mode 100644 index 0000000..67dbb73 --- /dev/null +++ b/place/templates/base/css/template.css.bak @@ -0,0 +1,35 @@ +body { + background-color: white; +} +#sight #stitlebar { + background-color: #4f9af3; +} +#sight #stitle { + color: white; + padding: 2px; + font-weight: bold; + font-family: monospace; + font-size: larger; + float: left; +} +#sight #sresize { + width: 15px; + height: 15px; + background-color: none; + right: 0; + float: right; + bottom: 0; + position: absolute; +} +#sight { + border: 4px solid #4f9af3; +} +#sight #content { + padding: 5px; +} +#sight #sclose:not([except]), #sight #sminimize:not([except]), #sight #stoggled:not([except]) { + height: 20px; + width: 20px; + float: right; + margin-left: 5px; +} diff --git a/place/templates/base/img/close.png b/place/templates/base/img/close.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f8492739300a0d8eb373a01824cfd3597a70c7 GIT binary patch literal 775 zcmV+i1Ni)jP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0-Q-iK~!i%?bhlhtCzg5r#OsM=sfrZ3hIQDA zh0!uEO|^OxD{ywSEJt=Bm069DE%267nFHwNG_0{+S%oIcgm_9>WkPaFB^P=Rea!k2 zD-|mfau3$F(?PpQ6?DkH@TNlGb|xeaT7DT)@7SxS{IBgG4e zCIC+^!rDGZ@j{-dIYdWNN7UL+s-lHvDHBqPp7EB_e?i^typjv)1!IYwG(Dwmz}j}2tdHCo zSn*r|#7Z4S>W`ntWwAD71nr<>_QTb)GTF!ZmHZdQlyYPMCxs`zK_>Y z;y3nUg@$6e(9pGo^iYGfvPSKd%iGR^+HFUBhiR>>%{S=O(LOt44XDi>wAlq+Y+8eA zasuOAhBc@bPp}f>=&2?>2xJW&Iz2hI8%v_6nx4bjXsA@?IC`@QvtD4%%VU^F#>!z_ zg>JL0oz07;=DRqFMc)~3w2?0F_h9dw>7?17XZq7Le*pxOrF9JkKYjoJ002ovPDHLk FV1lb#V~YR) literal 0 HcmV?d00001 diff --git a/place/templates/base/img/maximized.png b/place/templates/base/img/maximized.png new file mode 100644 index 0000000000000000000000000000000000000000..7e659def2b7af825ddf9e9419b5ca36a9b3d78a4 GIT binary patch literal 571 zcmV-B0>u4^P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0nkZAK~!i%?b^*N z1yLNv@rl?ILb9>ILJ_ecS^5Jk*jZXzSmUp-VC7}QMqXCzl_*(JB0{oI6nX#trt3E5 z{-!&Fd(Rx5r#_pRbEflj@66P_$BRfU#<7hHyx_y2cU)lyQ)oe~lwlh8&@P-7Z_@$Q8=?aiIoG6i^3(DR`k`=g$kBz+_gStt%{cA^8`&4<=HNTWISF zi(N>_kA2ISDWZAYKwFO{Q6U@nh2-m`owQL8yz9UL+cm=9ZlayE%@bt5g}--38(^Ca z_-RFw|6tN;7}?B08)S=plpq_~)g&8%w83d7JIC6P6WP^t3T;waNtr=JrUvWKCa29F z)K5lBKb9cdO|*-dB9G=xjNscn6E`xc4(;ePOkSG)dnP)b_X*%<2~iJ+JtP1C002ov JPDHLkV1jR4@$Uct literal 0 HcmV?d00001 diff --git a/place/templates/base/img/minimize.png b/place/templates/base/img/minimize.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac804d14772edcaaf9f0f4377f32511feddeab2 GIT binary patch literal 535 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg1|*MGNWTVBjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4Qo7I978gk-`+Z_%^E0i{9|XtVh-+TohgfQ zJf{6)`Nvz&Xckr`CbnkJk{gwg8@Dgaadq*SwCKd|?=wyATF+a#xa54X#r|J8Y3F>N zU*Bu|-LH63lSwjhWdtA0&jmz zi^_4fKCvsQ6YW zUa5CeU{~A)|H>CepGjENw5*UN*G}rW)2CmHxb1@4xidbWD%Mk3 zuUnJGdTY<8Ioz@b(!~~@)z%mLG&NqoglB$av)OtZpmMP)2D?jL(h%ix8@q0DMIA8R z@-w3@M1v($@uyX$weywsC#zDNU)-9YXMVA)?HT8$drGm^i+MTDs$D91BzkMXgdT;{ zHd`DQ-f$P)bYhj-PxrOF+x)`%R`#21TJ@6UmSdRb%tVo8oYEKgwx#i(-gWWu%s&~+_8TAdoaC=B@=^OAPwjbNWHNZV`njxgN@xNA D<96dg literal 0 HcmV?d00001 diff --git a/place/templates/base/img/restoredown.png b/place/templates/base/img/restoredown.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd247524e8dae6f55935c525fde5d1acf947188 GIT binary patch literal 689 zcmV;i0#5yjP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0!B$hK~!i%?b9e2dCl}ZeSC<*$90j)(52O4R&E!*5fIxol^H6n=zIdSc7wMAEW31Fb`{BPL86E zj%L??dhov|E2m1L`Kb<#L>l5DgKqq%=zDWmQZV06_`APJd<5+|> zf8#LB4WV9Q8hH$B{zkMyW9NY$a|_n|jZ(;`6zZ5#sH@3BI>8-_U-w{C8dx@DFkyvqZC?7Hih)0@~lBOUv3WK zdIU${CVHX0u*PL`E!Vct6HFubV9no%R!EPKwxZAI+50T4`5Vy+iN;>Vg%&1%8+vVx zYg~aI%vuJww>Do*SDy(_CIE3np^G5D=qF!!dZOqLN zXuUgz} X7+8R)z*;(x00000NkvXXu0mjff{QS( literal 0 HcmV?d00001 diff --git a/place/templates/base/main.html b/place/templates/base/main.html new file mode 100644 index 0000000..262556b --- /dev/null +++ b/place/templates/base/main.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + +
+
+
Main Template
+
+
+
+
+
+
+ MAIN +
+
+
+
+ + \ No newline at end of file diff --git a/place/templates/base/main.html.bak b/place/templates/base/main.html.bak new file mode 100644 index 0000000..c756937 --- /dev/null +++ b/place/templates/base/main.html.bak @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + +
+
+
Main Template
+
+
+
+
+
+
+ MAIN +
+
+
+
+ + \ No newline at end of file diff --git a/place/templates/base/other.html b/place/templates/base/other.html new file mode 100644 index 0000000..0b5204f --- /dev/null +++ b/place/templates/base/other.html @@ -0,0 +1,30 @@ + + + + + + + + + + + +
+
+
TITLE
+
+
+
+
+ +
+
+ + \ No newline at end of file diff --git a/place/templates/base/other.html.bak b/place/templates/base/other.html.bak new file mode 100644 index 0000000..b99c0c9 --- /dev/null +++ b/place/templates/base/other.html.bak @@ -0,0 +1,30 @@ + + + + + + + + + + + +
+
+
TITLE
+
+
+
+
+ +
+
+ + \ No newline at end of file diff --git a/place/templates/base/template.conf.bak b/place/templates/base/template.conf.bak new file mode 100644 index 0000000..e69de29 diff --git a/place/templates/base/template.js b/place/templates/base/template.js new file mode 100644 index 0000000..d36ed3b --- /dev/null +++ b/place/templates/base/template.js @@ -0,0 +1,13 @@ +var s_template={ + 'name' : "Base", + 'author' : 'Balazs Birtalan', + 'URL' : '/template/base', + 'created': '2023' +} + +// first element: "key" is the ID where the content html will be embedded +// second element: "value" is the folder name of that content folder where the content.html file's contents will be embedded +var s_contents={ + 'main_content':"main", + 'main_text':"main_text", +} \ No newline at end of file diff --git a/place/templates/base/template.js.bak b/place/templates/base/template.js.bak new file mode 100644 index 0000000..6556055 --- /dev/null +++ b/place/templates/base/template.js.bak @@ -0,0 +1,13 @@ +var s_template={ + 'name' : "Base", + 'author' : 'Balazs Birtalan', + 'URL' : '/template/base', + 'created': '2023' +} + +// first element "key" is the ID where the content html will be embedded +// second element "value" is the folder name of that content folder where the content.html file's contents will be embedded +var s_contents={ + 'main_content':"main", + 'main_text':"main_text", +} \ No newline at end of file diff --git a/place/templates/config.ini b/place/templates/config.ini new file mode 100644 index 0000000..5b58ad9 --- /dev/null +++ b/place/templates/config.ini @@ -0,0 +1,3 @@ +[DEFAULT] +default_template = base +sight_mode = single \ No newline at end of file diff --git a/place/templates/config.ini.bak b/place/templates/config.ini.bak new file mode 100644 index 0000000..2b10775 --- /dev/null +++ b/place/templates/config.ini.bak @@ -0,0 +1,3 @@ +[DEFAULT] +default_template = base +sight_mode = multiple \ No newline at end of file diff --git a/settings.py.bak b/settings.py.bak new file mode 100644 index 0000000..91b3cc2 --- /dev/null +++ b/settings.py.bak @@ -0,0 +1,4 @@ + +def init(): + global data + data = [] \ No newline at end of file diff --git a/sight .py.back b/sight .py.back new file mode 100644 index 0000000..609d1b5 --- /dev/null +++ b/sight .py.back @@ -0,0 +1,194 @@ +import os +import sys +import random + +import base +from PyQt6.QtCore import QUrl, QObject, pyqtSlot, Qt +from PyQt6.QtWebEngineWidgets import QWebEngineView +from PyQt6.QtWidgets import QMainWindow +from PyQt6.QtWebChannel import QWebChannel +from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout + +class CallHandler(QObject): + def __init__(self, sight): + super().__init__() + self.sight = sight + + @pyqtSlot(str) + def test(self, t): + print(t) + + @pyqtSlot(str, result=str) + def test2(self, t): + print(t) + return t+"_return" + + @pyqtSlot(str) + def create(self, t): + id = str(random.randrange(1000,9999)) + createSight(id) + base.data["sight_processes"][id].show() + + @pyqtSlot() + def activeSight(self): + print("active") + if base.data["active_sight"] != self.sight.getId(): + print(self.sight.getId()) + base.data["active_sight"] = self.sight.getId() + + @pyqtSlot() + def close(self): + closeSight(self.sight.id) + """if self.sight.id == "main": + app.exit(0) + else: + try: + base.data["sight_processes"][self.sight.id].close() + base.data["sight_processes"][self.sight.id].destroy() + del base.data["sight_processes"][self.sight.id] + print("The '"+self.sight.id+"' is closed now!") + base.processSight() + except KeyError: + print("KeyError: when closing "+self.sight.id)""" + + @pyqtSlot() + def setMaximized(self): + self.sight.showMaximized() + + @pyqtSlot() + def setMinimize(self): + self.sight.showMinimized() + + @pyqtSlot() + def restoreDown(self): + self.sight.showNormal() + + @pyqtSlot() + def setFullscreen(self): + self.sight.showFullScreen() + + @pyqtSlot(result=str) + def getTitle(self): + print("IIIIID: ") + return self.sight.getTitle(); + + @pyqtSlot() + def move(self): + base.data["move"] = True + + + @pyqtSlot() + def endmove(self): + base.data["move"] = False + + @pyqtSlot() + def resize(self): + global mousectrl + new_height = base.mousectrl.position[1]-self.sight.pos().y() + new_width = base.mousectrl.position[0]-self.sight.pos().x() + if(new_height<250): + new_height = 250 + if(new_width<250): + new_width = 250 + self.sight.resize( new_width, new_height) + + +class Browser(QWebEngineView): + def __init__(self, sight_id): + super().__init__() + self.id = sight_id + self.channel = QWebChannel() + self.handler = CallHandler(self) + self.channel.registerObject('handler', self.handler) + self.page().setWebChannel(self.channel) + self.title = sight_id + + def getId(self): + return self.id + def setTitle(self, title): + self.title = title + def getTitle(self): + return self.title + + def mouseMoveEvent(self, e): + print("mouseMoveEvent") + + def mousePressEvent(self, e): + print("mousePressEvent") + + def mouseReleaseEvent(self, e): + print("mouseReleaseEvent") + + def mouseDoubleClickEvent(self, e): + print("mouseDoubleClickEvent") + +class Sight(QWidget): + def __init__(self, sight_id): + super().__init__() + + self.id = sight_id + base.data["active_sight"] = self.id + self.title = sight_id + self.setWindowFlags(Qt.WindowType.FramelessWindowHint | self.windowFlags()) + + self.browser = Browser(sight_id) + + + + current_folder = os.path.abspath(os.getcwd()) + html_file = current_folder + os.path.sep + "place" + os.path.sep + "templates" + os.path.sep + "base" + os.path.sep + "index.html" + print(html_file) + url = QUrl.fromLocalFile(html_file) + + self.browser.load(url) + + lay = QVBoxLayout(self) + lay.setSpacing(0); + lay.setContentsMargins(0, 0, 0, 0); + lay.addWidget(self.browser) + #self.setCentralWidget(self.browser) + + def mouseMoveEvent(self, e): + print("mouseMoveEvent") + + def mousePressEvent(self, e): + print("mousePressEvent") + + def mouseReleaseEvent(self, e): + print("mouseReleaseEvent") + + def mouseDoubleClickEvent(self, e): + print("mouseDoubleClickEvent") + + + + + def getId(self): + return self.id + +def createSight(id): + if id != "main": + base.data["sight_processes"][id] = Sight(id) + base.data["sight_processes"][id].show() + print("The '"+id+"' is opened now!") + base.processSight() + else: + print("The 'main' id is the main active windows which is occupied!") + +def closeSight(id): + if id == "main": + app.exit(0) + else: + try: + base.data["sight_processes"][id] .close() + base.data["sight_processes"][id] .destroy() + del base.data["sight_processes"][id] + print("The '"+id+"' is closed now!") + base.processSight() + except KeyError: + print("KeyError: when closing "+id) + +app = QApplication(sys.argv) +base.data["sight_processes"]["main"] = Sight("main") +base.data["sight_processes"]["main"].show() +app.exec() \ No newline at end of file diff --git a/sight.py b/sight.py new file mode 100644 index 0000000..16a6fe8 --- /dev/null +++ b/sight.py @@ -0,0 +1,47 @@ +import base +from callhandler import CallHandler +from browser import Browser +from PyQt6.QtCore import Qt +from PyQt6.QtWidgets import QMainWindow, QWidget, QVBoxLayout + +class Sight(QWidget): + def __init__(self, id, type): + super().__init__() + + self.id = id + self.type = type + self.data = {} # private data(s) of the sight + + base.data["active_sight"] = self.id + self.title = id + + self.setWindowFlags(Qt.WindowType(0x00000800)) # remove the os windows frame (borders, close and other buttons + self.setAttribute(Qt.WidgetAttribute(0x78)) # (int: 120)) # Make Transparent + + self.browser = Browser() + self.browser.addObject('handler', CallHandler(self) ) + self.browser.loadContent(type) + + self.layout = QVBoxLayout() + self.layout.addWidget(self.browser) + self.layout.setSpacing(0); + self.layout.setContentsMargins(1, 1, 1, 1); #Need 1,1,1,1 if it is 0,0,0,0 I got setgeometry warnings + + self.setLayout(self.layout) + + def setLayoutContentMargins(self,a,b,c,d): + self.layout.setContentsMargins(a, b, c, d) + + def setTitle(self, title): + self.title = title + def getTitle(self): + return self.title + def getId(self): + return self.id + def addData(self, key, value): + self.data[key] = value + def getData(self, key): + if key in self.data: + return self.data[key] + return None + \ No newline at end of file diff --git a/sight.py.2back b/sight.py.2back new file mode 100644 index 0000000..6348548 --- /dev/null +++ b/sight.py.2back @@ -0,0 +1,168 @@ +import os +import sys +import random + +import base +from PyQt6.QtCore import QUrl, QObject, pyqtSlot, Qt +from PyQt6.QtWebEngineWidgets import QWebEngineView +from PyQt6.QtWidgets import QMainWindow +from PyQt6.QtWebChannel import QWebChannel +from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout + +class CallHandler(QObject): + def __init__(self, sight): + super().__init__() + self.sight = sight + + @pyqtSlot(str) + def test(self, t): + print(t) + + @pyqtSlot(str, result=str) + def test2(self, t): + print(t) + return t+"_return" + + @pyqtSlot(str) + def create(self, t): + id = str(random.randrange(1000,9999)) + createSight(id) + base.data["sight_processes"][id].show() + + @pyqtSlot() + def activeSight(self): + print("active") + if base.data["active_sight"] != self.sight.getId(): + print(self.sight.getId()) + base.data["active_sight"] = self.sight.getId() + + @pyqtSlot() + def close(self): + closeSight(self.sight.id) + """if self.sight.id == "main": + app.exit(0) + else: + try: + base.data["sight_processes"][self.sight.id].close() + base.data["sight_processes"][self.sight.id].destroy() + del base.data["sight_processes"][self.sight.id] + print("The '"+self.sight.id+"' is closed now!") + base.processSight() + except KeyError: + print("KeyError: when closing "+self.sight.id)""" + + @pyqtSlot() + def setMaximized(self): + self.sight.showMaximized() + + @pyqtSlot() + def setMinimize(self): + self.sight.showMinimized() + + @pyqtSlot() + def restoreDown(self): + self.sight.showNormal() + + @pyqtSlot() + def setFullscreen(self): + self.sight.showFullScreen() + + @pyqtSlot(result=str) + def getTitle(self): + print("IIIIID: ") + return self.sight.getTitle(); + + @pyqtSlot() + def move(self): + base.data["move"] = True + + + @pyqtSlot() + def endmove(self): + base.data["move"] = False + + @pyqtSlot() + def resize(self): + global mousectrl + new_height = base.mousectrl.position[1]-self.sight.pos().y() + new_width = base.mousectrl.position[0]-self.sight.pos().x() + if(new_height<250): + new_height = 250 + if(new_width<250): + new_width = 250 + self.sight.resize( new_width, new_height) + + +class Browser(QWebEngineView): + def __init__(self): + super().__init__() + self.channel = QWebChannel() + + def addHandler(self, id, call_handler): + self.handler = call_handler + self.channel.registerObject(id, self.handler) + self.page().setWebChannel(self.channel) + +class Sight(QWidget): + def __init__(self, sight_id): + super().__init__() + + self.id = sight_id + base.data["active_sight"] = self.id + self.title = sight_id + self.setWindowFlags(Qt.WindowType.FramelessWindowHint | self.windowFlags()) + + self.browser = Browser() + self.browser.addHandler('handler', CallHandler(self) ) + #self.channel = QWebChannel() + #self.handler = CallHandler(self) + #self.channel.registerObject('handler', self.handler) + #self.browser.page().setWebChannel(self.channel) + + current_folder = os.path.abspath(os.getcwd()) + html_file = current_folder + os.path.sep + "place" + os.path.sep + "templates" + os.path.sep + "base" + os.path.sep + "index.html" + print(html_file) + url = QUrl.fromLocalFile(html_file) + + self.browser.load(url) + + lay = QVBoxLayout(self) + lay.setSpacing(0); + lay.setContentsMargins(0, 0, 0, 0); + lay.addWidget(self.browser) + #self.setCentralWidget(self.browser) + + def setTitle(self, title): + self.title = title + def getTitle(self): + return self.title + + def getId(self): + return self.id + +def createSight(id): + if id != "main": + base.data["sight_processes"][id] = Sight(id) + base.data["sight_processes"][id].show() + print("The '"+id+"' is opened now!") + base.processSight() + else: + print("The 'main' id is the main active windows which is occupied!") + +def closeSight(id): + if id == "main": + app.exit(0) + else: + try: + base.data["sight_processes"][id] .close() + base.data["sight_processes"][id] .destroy() + del base.data["sight_processes"][id] + print("The '"+id+"' is closed now!") + base.processSight() + except KeyError: + print("KeyError: when closing "+id) + +app = QApplication(sys.argv) +base.data["sight_processes"]["main"] = Sight("main") +base.data["sight_processes"]["main"].show() +app.exec() \ No newline at end of file diff --git a/sight.py.bak b/sight.py.bak new file mode 100644 index 0000000..7b11e5b --- /dev/null +++ b/sight.py.bak @@ -0,0 +1,47 @@ +import base +from callhandler import CallHandler +from browser import Browser +from PyQt6.QtCore import Qt +from PyQt6.QtWidgets import QMainWindow, QWidget, QVBoxLayout + +class Sight(QWidget): + def __init__(self, id, type): + super().__init__() + + self.id = id + self.type = type + self.data = {} # private data of the sight + + base.data["active_sight"] = self.id + self.title = id + + self.setWindowFlags(Qt.WindowType(0x00000800)) # remove the os windows frame (borders, close and other buttons + self.setAttribute(Qt.WidgetAttribute(0x78)) # (int: 120)) # Make Transparent + + self.browser = Browser() + self.browser.addObject('handler', CallHandler(self) ) + self.browser.loadContent(type) + + self.layout = QVBoxLayout() + self.layout.addWidget(self.browser) + self.layout.setSpacing(0); + self.layout.setContentsMargins(1, 1, 1, 1); #Need 1,1,1,1 if it is 0,0,0,0 I got setgeometry warnings + + self.setLayout(self.layout) + + def setLayoutContentMargins(self,a,b,c,d): + self.layout.setContentsMargins(a, b, c, d) + + def setTitle(self, title): + self.title = title + def getTitle(self): + return self.title + def getId(self): + return self.id + def addData(self, key, value): + self.data[key] = value + def getData(self, key): + if key in self.data: + return self.data[key] + return None + \ No newline at end of file diff --git a/sightfactory.py b/sightfactory.py new file mode 100644 index 0000000..425e738 --- /dev/null +++ b/sightfactory.py @@ -0,0 +1,79 @@ +import base +import random +from sight import Sight + +class SightFactory(): + def __init__(self): + self.list = {} + self.data = {} #Global data(s) for the sight(s) + + def create(self, id, type): + print("----- "+type+"-"+str(id)+"-------") + + if str(id) == "main" and self.checkKey(id): + print("The 'main' window already exist! You can't create more than one 'main' type window!") + return None + + if base.data["sight_mode"] == "single": + if len(id) == 0: + print("No ID was given! In single mode need declare an ID to the Sight in advance!") + return None + if self.checkKey(id): + print("This ['"+type+"'-'"+str(id)+"'] already exist!") + return None + if base.data["sight_mode"] == "multiple": + if len(id) == 0: + id = self.createUniqueId() + if len(id) > 0 and self.checkKey(id) and str(id) != "main": + id = self.createUniqueId() + + self.list[id] = Sight(id,type) + print("The ['"+type+"'-'"+str(id)+"'] is created now!") + return id + + def show(self, id): + if self.checkKey(id): + self.list[id].show() + print("The '"+str(id)+"' sight is showed!") + return True + print("This '"+str(id)+"' id isn't exist to show!") + return False + + def get(self, id): + if self.checkKey(id): + return self.list[id] + print("This '"+str(id)+"' id isn't exist to get!") + + def close(self, id): + if self.checkKey(id): + if id == "main": + print("Program Exit!") + base.app.exit(0) + self.list[id].close() + self.list[id].deleteLater() + del self.list[id] + print("The '"+str(id)+"' is closed now!") + return True + else: + print("The '"+str(id)+"' isn't exist'") + return False + + def processes(self): + print(self.list) + + def checkKey(self, id): + if id in self.list: + return True + return False + def addGlobalData(self, key, value): + self.data[key] = value + def getGlobalData(self, key): + if key in self.data: + return self.data[key] + return None + + def createUniqueId(self): + new_id = str(random.randint(1000, 9999)) + if self.checkKey(new_id): + self.createUniqueId() + return new_id \ No newline at end of file diff --git a/sightfactory.py.bak b/sightfactory.py.bak new file mode 100644 index 0000000..d9823f5 --- /dev/null +++ b/sightfactory.py.bak @@ -0,0 +1,79 @@ +import base +import random +from sight import Sight + +class SightFactory(): + def __init__(self): + self.list = {} + self.data = {} #Global data(s) for the sight(s) + + def create(self, id, type): + print("----- "+type+"-"+str(id)+"-------") + + if str(id) == "main" and self.checkKey(id): + print("The 'main' window already exist! You can't create more than one 'main' type window!") + return None + + if base.data["sight_mode"] == "single": + if len(id) == 0: + print("No ID was given! In single mode need declare an ID to the Sight in advance!") + return None + if self.checkKey(id): + print("This ['"+type+"'-'"+str(id)+"'] already exist!") + return None + if base.data["sight_mode"] == "multiple": + if len(id) == 0: + id = self.createUniqueId() + if len(id) > 0 and self.checkKey(id) and str(id) != "main": + id = self.createUniqueId() + + self.list[id] = Sight(id,type) + print("The ['"+type+"'-'"+str(id)+"'] is created now!") + return id + + def show(self, id): + if self.checkKey(id): + self.list[id].show() + print("The '"+str(id)+"' sight is showed!") + return True + print("This '"+str(id)+"' id isn't exist to show!") + return False + + def get(self, id): + if self.checkKey(id): + return self.list[id] + print("This '"+str(id)+"' id isn't exist to get!") + + def close(self, id): + if self.checkKey(id): + if id == "main": + print("Program Exit!") + base.app.exit(0) + self.list[id].close() + self.list[id].destroy() + del self.list[id] + print("The '"+str(id)+"' is closed now!") + return True + else: + print("The '"+str(id)+"' isn't exist'") + return False + + def processes(self): + print(self.list) + + def checkKey(self, id): + if id in self.list: + return True + return False + def addGlobalData(self, key, value): + self.data[key] = value + def getGlobalData(self, key): + if key in self.data: + return self.data[key] + return None + + def createUniqueId(self): + new_id = str(random.randint(1000, 9999)) + if self.checkKey(new_id): + self.createUniqueId() + return new_id \ No newline at end of file