From 46f77c2704488974720688e07a2ba84cd146c409 Mon Sep 17 00:00:00 2001 From: Kadir Aksoy Date: Fri, 14 May 2021 20:04:59 +0300 Subject: [PATCH] 1.0.0 --- .gitignore | 3 + README.md | 21 +- documentation.md | 45 +- examples/data/SFPro.ttf | Bin 0 -> 413924 bytes examples/data/checkicon.png | Bin 0 -> 10335 bytes examples/data/dlicon.png | Bin 0 -> 2467 bytes examples/data/homeiconw.png | Bin 0 -> 10287 bytes examples/data/spinnericon.png | Bin 0 -> 56077 bytes examples/data/spinnershowcase.gif | Bin 0 -> 79649 bytes examples/data/styledbutton.gif | Bin 142210 -> 207259 bytes examples/requesthandler_example.py | 149 ++ examples/showcase.py | 421 ++++-- pyqt5Custom/__init__.py | 29 +- pyqt5Custom/animation.py | 89 ++ pyqt5Custom/codetextedit.py | 150 ++ pyqt5Custom/colorpicker.py | 109 ++ pyqt5Custom/dragdropfile.py | 105 ++ pyqt5Custom/embedwindow.py | 180 +++ pyqt5Custom/imagebox.py | 108 ++ pyqt5Custom/requesthandler.py | 47 + pyqt5Custom/segbtngroup.py | 166 +++ pyqt5Custom/spinner.py | 64 + pyqt5Custom/styledbutton.py | 377 +++++ pyqt5Custom/themes/default.json | 2 +- .../{material-monokai.json => monokai.json} | 0 pyqt5Custom/themes/oceanic.json | 16 + pyqt5Custom/themes/one-light.json | 16 + pyqt5Custom/themes/zenburn.json | 16 + pyqt5Custom/titlebar.py | 324 +++++ pyqt5Custom/toast.py | 188 +++ pyqt5Custom/toggleswitch.py | 258 ++++ pyqt5Custom/widgets.py | 1285 ----------------- 32 files changed, 2737 insertions(+), 1431 deletions(-) create mode 100644 examples/data/SFPro.ttf create mode 100644 examples/data/checkicon.png create mode 100644 examples/data/dlicon.png create mode 100644 examples/data/homeiconw.png create mode 100644 examples/data/spinnericon.png create mode 100644 examples/data/spinnershowcase.gif create mode 100644 examples/requesthandler_example.py create mode 100644 pyqt5Custom/animation.py create mode 100644 pyqt5Custom/codetextedit.py create mode 100644 pyqt5Custom/colorpicker.py create mode 100644 pyqt5Custom/dragdropfile.py create mode 100644 pyqt5Custom/embedwindow.py create mode 100644 pyqt5Custom/imagebox.py create mode 100644 pyqt5Custom/requesthandler.py create mode 100644 pyqt5Custom/segbtngroup.py create mode 100644 pyqt5Custom/spinner.py create mode 100644 pyqt5Custom/styledbutton.py rename pyqt5Custom/themes/{material-monokai.json => monokai.json} (100%) create mode 100644 pyqt5Custom/themes/oceanic.json create mode 100644 pyqt5Custom/themes/one-light.json create mode 100644 pyqt5Custom/themes/zenburn.json create mode 100644 pyqt5Custom/titlebar.py create mode 100644 pyqt5Custom/toast.py create mode 100644 pyqt5Custom/toggleswitch.py delete mode 100644 pyqt5Custom/widgets.py diff --git a/.gitignore b/.gitignore index 96c7630..4147791 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ __pycache__/ dev/ +dist/ +olddist/ +pyqt5Custom.egg-info/ diff --git a/README.md b/README.md index 1886cc2..763c98b 100644 --- a/README.md +++ b/README.md @@ -2,14 +2,11 @@

- +

-More useful and stylish widgets for PyQt5 such as toggle switches, animated buttons, etc.. +More useful and stylish widgets for PyQt5 such as toggle switches, animated buttons, etc..
- - -**DISCLAIMER:** \ -Currently most widgets can't use style sheets properly so you have to use attributes to stylize them. I'm working on removing this inconvenience and make their usage as close as to base Qt widgets + ## Table of Contents - [Installing](#Installing) @@ -22,8 +19,15 @@ Currently most widgets can't use style sheets properly so you have to use attrib - [License](#License) ## Installing -The module (version 0.0.4) is not on PyPi yet, so you have to manually download `pyqt5Custom` folder. Version 0.0.5 will be on PyPi. \ -You can also use PySide2 instead of PyQt5 with just litte changes. +Install using PIP (it might be `pip3` or `python3` depending on your platform) +``` +pip install pyqt5Custom +``` +or +``` +python -m pip install pyqt5Custom +``` +Also you can also use PySide2 instead of PyQt5 with just litte changes. ## Usage Just import `pyqt5Custom` and you're ready to go. You can check out [Examples](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/), one little example for ToggleSwitch widget: @@ -45,6 +49,7 @@ layout.addWidget(togglesw) | ![ImageBox](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/data/imagebox.png)
**ImageBox**
[Documentation](documentation.md) | ![ColorPicker](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/data/colorpicker.png)
**ColorPicker**
[Documentation](documentation.md) | | ![DragDropFile](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/data/dropfileshowcase.gif)
**DragDropFile**
[Documentation](documentation.md) | ![EmbedWindow](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/data/embedwindowshowcase.gif)
**EmbedWindow**
[Documentation](documentation.md) | | ![CodeTextEdit](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/data/codetextshowcase.gif)
**CodeTextEdit**
[Documentation](documentation.md) | ![TitleBar](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/data/titlebarshowcase.png)
**TitleBar**
[Documentation](documentation.md) | +| ![Spinner](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/data/spinnershowcase.gif)
**Spinner**
[Documentation](documentation.md) | ![Toast](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/data/toastshowcase.gif)
**Toast**
[Documentation](documentation.md) | ## Dependencies diff --git a/documentation.md b/documentation.md index e2a8908..01e2dcb 100644 --- a/documentation.md +++ b/documentation.md @@ -9,8 +9,17 @@ Here is the list of currently implemented widgets - [EmbedWindow](#DEmbedWindow) - [CodeTextEdit](#CodeTextEdit) - [TitleBar](#TitleBar) -- [Misc](#misc) +- [Spinner](#Spinner) +- [Toast](#Toast) +## Other stuff +Other stuff that the the library provides but are not mainly widgets. Some are tools, data classes, etc... +- [RequestHandler](#RequestHandler) +- [FileDetails](#FileDetails) +- [Animation](#Animation) +- [AnimationHandler](#AnimationHandler) +- [ColorPreview](#ColorPreview) +- [SyntaxHighlighter](#SyntaxHighlighter) ## ToggleSwitch @@ -121,13 +130,21 @@ Here is the list of currently implemented widgets - `title()` (str) : Get title -# Misc -Other stuff _(which you mostly don't need to know they existed)_ included within the module other than custom widgets -- [FileDetails](#FileDetails) -- [ColorPreview](#ColorPreview) -- [SyntaxHighlighter](#SyntaxHighlighter) -- [Animation](#Animation) -- [AnimationHandler](#AnimationHandler) +# Other stuff +Other stuff that the the library provides but are not mainly widgets. Some are tools, data classes, etc... + +## RequestHandler +`RequestHandler` is a thread (QThread) that can be used to handle HTTP requests while avoiding blocking Qt's event loop. You can see [Examples](https://github.com/kadir014/pyqt5-custom-widgets/blob/main/examples/) to see usage of this class. + +#### Methods +- `newRequest(method, url, headers, data)` + - `method` (str) : Request method + - `url` (str) : Address where request will be sent at + - `headers` (dict) : Request headers + - `data` (dict) : Request data + +#### Signals +- `requestResponded` : Emitted when a requeest in the current pool gets responded. Response is a [requests.Response](https://docs.python-requests.org/en/latest/api/#requests.Response) object ## FileDetails `FileDetails` object is a data class which is meant to be used by `DragDropFile` for `fileDropped` signal @@ -139,14 +156,14 @@ Other stuff _(which you mostly don't need to know they existed)_ included within - `pureName` (str) : File's name without the extension - `extension` (str) : File's extension -## ColorPreview -`ColorPreview` is a widget to display some color. It can bee seen used next to ColorPicker example. But this widget is most likely going to be deprecated - -## SyntaxHighlighter -`SyntaxHighlighter` inherits `QSyntaxHighlighter`, it's only purpose is to serve `CodeTextEdit` widget. `pyqt5Custom` module currently (version 0.0.4) supports only Python and C++ syntax highlighting. - ## Animation `Animation` is just a static class holding easing animation functions. This class is most likely going to be deprecated when I rework animations. ## AnimationHandler `AnimationHandler` animates widget's properties using `Animation` class's functions. This class is most likely going to be deprecated when I rework animations. + +## ColorPreview +`ColorPreview` is a widget to display some color. It can bee seen used next to ColorPicker example. But this widget is most likely going to be deprecated + +## SyntaxHighlighter +`SyntaxHighlighter` inherits `QSyntaxHighlighter`, it's only purpose is to serve `CodeTextEdit` widget. `pyqt5Custom` module currently supports only Python and C++ syntax highlighting. diff --git a/examples/data/SFPro.ttf b/examples/data/SFPro.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5ae2fafb0d3f3f2acd969863865f518aab202dc7 GIT binary patch literal 413924 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 p2fxFB(?1DozoxUa5~sCx7-IDFJ3`_2R&@W@ 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 literal 0 HcmV?d00001 diff --git a/examples/data/checkicon.png b/examples/data/checkicon.png new file mode 100644 index 0000000000000000000000000000000000000000..5e5deb310875c16e035f08e942f780a98c21ffb4 GIT binary patch literal 10335 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 Q3KSr^+J;)hn-4?&2NU$4l>h($ literal 0 HcmV?d00001 diff --git a/examples/data/dlicon.png b/examples/data/dlicon.png new file mode 100644 index 0000000000000000000000000000000000000000..16ea676c0d4fcd1d053eb4d699ba0c32621ae9cc GIT binary patch literal 2467 zcmbtWdr(t%7QP8LG?(%YxV*^_atT%}5e(4+hBOEXAq}z&rLYQw7bM|+NMM8OqG4sKE>7KhVQssAv}4=*$31t>cfRkO z^Lw1R2cVm@*8og?sPY;*QkbtOThnX-9KCiTFJoR_kcasdLpdHLiW?`6e>Ib=-L5TF^y9aO%nxIx5W0G3$3KG+Hfo zk6&rG>@jBZTYY&4BZ8h&4$Jo3-m1yVuv{M1$-mwicgWs_QU0RQ)$B?;UG0){`v;i6 z=l*)l@;#@8dIi+M(I+X#N*+BqYa;WTWRmSHpHT(62=m9Cab9lsP+i*elPTr{e(B!5 zBLfZ#H4136Y2?IoYEh~MkwmNA_E$~NAee$Dw9|3uCIf>YU<(V+XzZ{}s1%98<>Alg zPqVFCSUwD24N24#&wvXEkT}5wHwfN8qjuO;fixB>KXm-`_3S@SaK}ojmEY-{ur&D& zdAzG9RUO>1t^>5NI#$Rz1#(bYbodK@wbv3am;UdFwm`S(rI0>`xg5GPKlP-BdNHj) z{%pXBRVS>UdeD&604l=uABd2t;%Q=Q%xIxU?MHA44ZTgXAO|9nY<KpRuz$E16mvqzUn^H<)gXCu#iKS`Bfu^Tx#UZEmn6WtDBCx+~7!E&PzARZWq&yb#^{a zE6_u^VpH9F>-$?)WI^)sFp-(6eC5lV(f^}2qG`;*l~n0Sy-HE7Fh#c!pTtv2fuiKt zc%5v6u^DWX+8^1!*OEvo=nJ4AS4>O?RI5NE0e>2wybcB)o#2`m8DQI=LK_=fUbvAe zVPkMnrC#ejqd(@W3DU8mviQuFObW2=LsK>bcB?rH1=mZV=nM3L_d-qWW65_Ng0_ZuRu{4Dh9 z{Ym?tWDz?-la-0LIq#?b>VesIR(kGeb=UplU{R;Dw3F(3vgsX^8-HUm{@}aS$kWh6 z_C5b`PX?9O?}B~pe(DcUFk$2p?BC|6?qBJ*6RuArZIvXlYqR*Y&IW1p!f`27JiVeo zj!ra;`J(y6BKE}m<*9}ue`xDIKi*yI~uz>#FV>kPR3Vy zMwbebTycMS@JxZYj5mxysDwnsb|*+P*`8TZvi=}^MoK2zkQJ4jCSpfBqVCDHZ*f-i zo;&LYS32kjI)!U4o`s|r{7O8Z7gCzGZ!z|E@uN%4?{j4Ro6T+EJMM6Gmu1fE5$nx~ zLxqOeoew=d=7o}&>}_BFtpM&1v|67};mwq+^x6q~RnInT+^?;#Gk0{lc|4SD`}ZYl+1l)(Qnbmw8;X>kZ^m~ry#gUF|6eJ_d$?7evMQRMDq#UuN+ zZvW%KzUKpC7n*jQKFuT3lJ|f+F)=b;?7}gjhuix3$M?NRyqo{v;g{9X(0s4nTGnL8 zMp>T`rI4OeO5kr45K29xaX~9m=L=PU%S6*6#M8E{jInCt-}bCxnfxd5l9`^32Nl7YRuu01#fTsHs;3HA?90}iUd zZjZB{^niY4K-B{3aRzu-0W@}Q7c2n;gaFkG5AGiZctQcU76pZ1;9dr>+iVePxNsD^ zopJVV$qC?^4BKYl3mxZI&m3yGt3`L|Krn1C-*PV@D2D!*GB02&1IzF8jJb8 ze(XS$`sFBdo~7>}+ZmRx_7I+Iy?2E)nPk3JA;?~n?b-jy;!2gnk=^7AJN*(*WyaIh zU+s@O`Q-5DgWc?_Vds`puzOesnvep^3iw|x0 z+MSVIg!pgKi*+`uPBv%()T7s8YR%Q2MwMKE{3%psTJ=Up`kvVf!LL_ut7RsM=Vg8M z{~!&C*M3g6fui7{z$*=M0rs{EA^U3$R$F`=x+TQOk6vE)7-`N*(*TgYl zg!e%_JEKlFZq?=qI=Re-1jbgRN9~N=IjT>>K)6U zB(JEe#X6ihrqH`HX_w0O&k`*lp2btQt9J}N zle0?u3hi#2HlIqH;${R13CD=t#Xo=_lFE|gmxN0NNfxJDzLx5FB!#zC)lr*Cr(}p` z_}V!fDL)b>mi%Sgvp=3GK9f13V*3{T8a<2_w4>X#*(SYpu?feT*=g92-){Xg6=R3a zIX`0~V*`I{@Fo@wf8%Rw{1SO-J&x~Evt_fj>B|dw?_J5YxV?ffsnXzM`@DoPF@aH9 zpA_GB420b|Qj@+eTk{Ble*0X{RO1f~Xz4}zQx9W)a=PDA_HC=JltTq+bmYU~-SdaX z4$HjOw5(FQ=In(|O-psaoWWecn9tN{W9JHTUe}$jxwIN3asvN{lCzRIJgJj6hhj5e zGgPpxK>Qp;pNTz=_If4ryyjF;gHHi19aZlViL&%97!IkUtn3L_S+`yHUMXOj3pwzW z3LW4Z6zY^T{H*2YYbdLNA6&R#db!!e^p*QF_q5S_$yHs3`9!k>GtqcYoHO|V*&FAL z%U9%6+^2Z<9Q7P6^WwRx*N0ylSQ=R3JK8&5bo6FuWkJ;X)G1k%tiG&~3OC1K$7AJh z$}6u~l#DyRzCnMv1_~5@=-(G(>voo7! z9R8V+I;{eCAZ#b}Ymm!#wH^NCnPZdHV-A;qR|VXqKX?>(HoEP2n$htr8Qf4y-S{83 znSPf?5#7w3tkSHHb8iNVY1%YTS}ZBIT{HJE>XJsl*X9<}?-wSzj0JO_sd|kRBCSoW zqu^x}1r?Y|GPJ1gUB#;)G|PQn!sw@we=gaGY^XD=K77fwU8k|4rJ~Kc*%#${f5bFG zfqj*YV0Qrpkq5cp+;LGSqMWv@E+NA9H6$AA4_^COGB9@{KCkM8*oma*qUedHqJ7s} zW*-;rV^PvOlRG^{?w?0a^?v1dpLBoJj1*G3AA27fW1M*FfrE6HTAEf+7s)hW|HTj63desh#MM<6v>~>>j=2N3hyHH|s~%=IF6w zIb(w4P>FPvmdm$7o_Bs^+%FJ+dwl0H{Ztdn2UfaIf1KEU=f8-Swc~)cJ^<)#8~W=MYb3lWVm?4t&;lb!?*Qp3>XLwU)w`Ls|ML@yt7Wz11Q5 zb!vB?BtP~$iQacEr5sL$PkP*GE4+5UWaG2XqY4$dXZ)>RrH>1FFDY*;Klysf*6~o^ z5&jbRHK<2JN8A^^R1E59$6R~qm%+z6+4H&Vxt$+(jy@@W6>}De&O&E0a-s{97S%GzrMt(_eP#m8mEos#*Hc5Iu$ZL&DuJ`k`vbd zb|*fxaFoAC{*EkMR^`UY%*9NzESt<#rz=j?*6l`Jz0_gEn)#r-Xtt)|rI0`9wymDu zrlWgO;ERO#oM$=V$m7c-x4{?Xp%hr>$PH27`ReVrN4rn6A5jcy4LY3{D{n8B3{LEV zRzfq2^snWa$=rzn)1g?RvC{^rf1VU^qcJFt-bFHJ@!h{m z*hpq3iJI~zWhAx52*=EzbdB`%#*F>fr`HNh30Db}h%s%_VY z_ImaV{X?B~ut^-Qbxg<5Yc~CkJ>_4p=lDu(+sd@npB# z6fK@aTRi#a+kcV#m)n1q{M(BEI>rB{=>M8jUs$@AH^uq7uPdZ#rIeaO%pmd-Cx|p; zGi`!B8$H49G)QCXSi5YnZ>2iTpTj6%R-vLOn|V7~TD`cXza#QWm@Siyo-Ydt^Ic}s zd5n{N(ERo)7$dv68-7cE%%9Zfa@^4tB6G<^88n?Q_`N~I@`!$Sm2b~+hvkgyA#<1Xr2B=WOzyQTk8!#68*D*ABn`KiWR*d94`&G4D8%p|2?O4t*k1^o|W@WH(3c0CZJd)CHHPEg%oJB z79BLS*cTkR>UBB^wYchg(`Zg@fBLu?r1sUpiDPv?mg!M-;Z=&*FIvQXa!Sz_v|<*v zGp9+Sfu7oMhc)UOmam9yRWP*TNg>JS+OCJixUL~-;csP@Tp-RV@ZfB4Di_xamksz; zBKz!$gCfd{R^Z?W1;H6XSx02xU59eMb>kbhD)QKcS=#^IIxSdqxO(8vC z-BdF=GDi{*5;~9`eK>ubFZ?94loxSf?KIQ2>7Ls*#i|En6x07Q)A6snH=Mga9%=CH zv~1dK>7UcNS_!WUdr_URY0vqS9|56Ppzor}+v9c5?a3ou+9eg^BDtd++aggoNFM@3 z=Y@f8ea$hQPDbg3$U5s39Lvpd+xFV+iC~@|0jHZ^UAB3LgE(ZBV#pwH-V{w*(>G^( zh?y#{jj9D%uCPOkcozJ*IZ*HC9~il*QEEV2j_<2(T5>4W`wO8oD>z3cd)^ign%}1A zNxEBB^#SqWALcI;AN{kHU7$}*2NFWxX%|3aH#PLI_-iB$!LXX@N1ICIrBCsp9&u+e zyZ!-d7VUC~F|P_%_K%gwvqPFCT!;N%nP^M4Fr zu_%?_10IEHk2y1SSMqDLuFBl`D=wh>?TZQ2&VQ&J$I9*htupzAn(>c;J5VLN!A+kY zQAed%ZX+SSfr1>j#$SYtP{WE%kNOi!`m-Y5()M!nonQJ92z7i#EeDCsXntD>y+pBP zcjjJ>0yr|}PbSzw&?}j+OUXIJxXnq(sLy11$K@oZD0*Xfp|Az@8!!BX3!`sEw{ng+ zgK^cviiNNib;LO;tr_fbRB7FCVGEYZJEPkMw`;h4^XTHMpAo;E%eeA0KD0OVHO?eu z`2^GC*X(Pz$Y45Y@nyDmQl&NxU6Nw0J?l%0%kG_Yjw9z$FDC|^#(GUdTz_c@m5B8r zNE&?K=7OQ)%EXS%7~vqL%~GHJN3>l+D5BhB9?X!!$A~!71b4-AcGxbXff2JKg-wF+;3) z6m?q0r&q+S0k`ChYgdwMc7e*Ih@h(^jW}OuP)7dhiq-PfO&deQg$PXF{kX7~`nN^q zSx$EBDcXI|Mnb6e-IT1NO%klWY|gGp8?eSnv-Z53{mP~VsPjc{iuJZSkWr>+Q9HP8 zh1BRs#3`J~U$BkTdn+k&L>876m~AuUb+4FgMQjL>Gy$7JCB71_W#yagM<6?`q?gOk zA1S)x{V;eF_V_3OMgXkrPoPz(ExYtfpVqW~;-<}U@#`dwjQ2PQzrC+BzHfPQVr07{ z_X)82oxmi$db~&u(rvw(JCIb&dPI~pTS6p6fnk%4_9JWo8KfX();!t##JlE8)tdu) z6=YNc(=fLMoT=c0=J>!N0}MRz2UCU{Y)jph@F+RU9aHDi|AMU!jI-oX!o#Ra_lcNtq;$ zC^rt&SBw@1U*VJ;XziRwp&ucc2o;~oZs^keU-F8oV63@__XUH8C7_}*qqUpC_9T^Z zfy5cstV~3+PqAO@=p5p-=agM|h%enRyG4>L2OX^32djnOcLB<;1(tNgYRqf@LbHSAxG zau_e{1cT9xw$@(}4)6%9iJCXyM6g|ti6lmZpo&_w5;SO4aAs~|M2~K9^}GO!Oh;p6 z8^F%uN2ujwejJgohy6O>G&6n&&H69hTjn@OisTGo*PZd6r{zx|zxW$BawU#=qoBK% z9h#FuNlML&G^#lF2%aA*f13fOJ`O_v*s82-6I*MY_{L~{il5R(l-=9~T*X0VMl-3e z6i7-9moI-`GAG9pO@EK9e!NBmE5RB?yyEJ4)v>Y~(ImiPv%heB@2P~xa4M}1QMY;( z-9OaLe@bY*qTIaVw%ScFvpq-}9q}ODc7d7sxsFENKhkb&T5Yd{XG+0H0k@gHiAd`5 zo#qIacbp~21593=16gh!+93|BEB59@bKo5r^+NqqF3UMJ8ws{>VGbv)bT=Y<-s z693F>^6qcKGyDjW;Cy-?R^H|3${4u}X>Ssi@$*4^s68y+j{rflZ!rS!Rm8eY9AGoh zz!tgafpvY4>W??BaJ~QuzlSHbIU=mZK*pq4Hx!=ZTLum}>^gY#W=hwWrFf57Ij#30!^w{4U438BNZWz}Rb`)nLRx@V>&QdP9p z#H>XwBMV{IHqftFNL~%FSGFG}MsbfQu?V3p4%K6=clnXC%PFsjdPT32p6_mt5B(v- zNqw#PePkWyOY819lb%l%=o*37exj+Bg)4PY^P*7crUN)oRY8L<^AorS;6$a1L+^Q} zm3flZQtS?-Y;Xm*>b=JxlHFFuQKu*3W5DIyz|J**kv`_iFXy~onxEU!s<6gT0ey~d z1yk1C*4Urnpp<6ckfrujQw{gTMOA|)l?m?q5^m)h7FT~+fN?j7>>>O6s}Llw?}Rze z+j0aR=4!81;)AH^%#nCW?xKwzc0LErux^b$^7|_JajnF?4oW;#8(dao5$nyzQRz!+$*Nw$PCj|QA0uN{62W^buVSnVht!ot+g zPpKVT%R`*!(BG#GEEtT+kuv?ZYG>GFF zC6tFsrmn!UwK^CaNeP5QC73#vlLbT=f4#8?dYCq)rchg4eGN4HQ8I0(bGqBgVGniC za3Z>%I;92+E7ezo<(+01^^^EOA_H-fEW>xzEnP4(De{&UoC!t)N4r9c_9SV9iK|2bZ@_$?IJW%eh(LT!kB6@lesQh?~V$H#|+a+67@@lW#$eaKWLTlXpSA3^j03 zhRWY!q}$+@+I!3=G*SzuwR}A8Rwyx3_MX3tjs=EVadiI5_* zR+GLQkbA^T>6q79lbmW!MD8!J)e*A<)gr!Db_<9zm9n05n*Im<+&4Z))6WhYlTk!e zt!YxI2xFYrY*~?M9hRb>93Zo?f7C_-)FVbfG#N4@v39xs3==!oH$J&)Uq7hgPJb*= zOgG?ci}V!2bON0NQ}g+K8kdRTV8)B%s?RK4Z{qY|Yt6MvibYkofNC7L(*;v(SAKj{ ze5j$oonsMwd~WJBPAlIN_x%M3ZeNkr=Qi9>-56fGAGX$!oXdz}(otZ;G={P@VR;tW z(4o*_4zC$%8$V}Ss7Dj!`c>*L4C#Sk9(_plr0;B(1#{p^{96V$T2L19ZXdXx@BIPG z13S!7^%lwNn1~6=*vAyG5b3kjG*Ejt7VDA@7SqBc)uU9LW8*=D-L+nkCc**5O@Dgg>J()gKXfos%M|YwO_3dCPei%-eiSu>rzud%ew2 z;CIT>R?bfKA$7V(`WG%gf&xY!6gYnzgH!=QyW8MRa1bYgWbTLghqT7vc)zZDrsyQy zmAKkh=OnqoLQ)0;6VC+@A`06j2ETLic&5HNY_4&{eYkw(Wj_DwhXkD;_=*X~a*W>v zX5;hU*#qWSPZzgMYX~tM%yRKN_7SSKs+;>&Ftw};k&{zVZzms8rMMfkNeUpfv&*XM z%7WkmM-3|h%d7bMbYBDTI#&%l5ezzsS)lbUxUbAev9hOcDycKFR&|Oudf#)?+52Lc8+;L3J_!!b(j>(6ju4m=?U zZ6M&)j*(h`zPca65VMYtvZp|bei)Vd5mqD-oDO>&FLI1W-lrejft}Bp?N?fy@L?Fy znWFQR)RXWJ`}^#R_bl}(2B9~IUEG47D=;vAWKqbq4MXpp66K60RULuJ_r#>^j)&l~ zwJgixfA`MW5#sT^FB`Ai(ChAd9Gf_>t9_1Gklp$)`?9R@4{lbHlk^tA!5RD3Mf-;r zVWF)!q(4goJvW%zkkT}qJ@8IGb2jM_7b)Ea%`NkDzX&qYF~i&&Gfds{bF7#j`B?5^ zc*}ckho~f-S#@^fM4t)iu}wu8Ls27Dl3Xgcer|VUnIze_Azb~d@G`DE)o2Jf>lDII%%ACfk&HY)yj^>d-bHfyP4!}a)&klgwr zM1rfA(AYY9J~WZL{}l2(MAuhIxanwxT?H0dZ=$mTC+^}yMpju$M;48Jp+<#4D7r@Yh`&O`&=T*)(E!BVSUJ`nyYP+xiAI4iO!ZluNmf%|FtspQ3|ouE3UQ%@mMXc@u=RiJ@KOlhx62Ut ztHJVb3CQO7;eHj(*=toIZ;ht(wz@sk%db9%GgpfqIqwI~88Y>`@)%hIbRP1zI=gMc> z5+E;Lv3LrefwhX&+~Q_0Mdpw91Q82GD?I(-jX) z6QepaKL+$)8j5iBX-4?WrldA#WQc=OdxqB{UhqbK9(zQbb0VpIEk?st8##z*m|U+)){&hyryfNYh=#?|T0kSm_`seHq|SA)C8yeZ9X|QktFqSQRYITmXaZN#IaVe@^gHyh?Ogn-UAlMH6)yr&9`>Nvj z?d5D=UzL>nhni;%cjXWydL#8DK@6CBLLKcONKRE#-^wgY>yXXr5s!TO!5JvF4U9cp zk*=i}gdbgv4?#3*DDS9_^8NNnMho0_q^A!5-~&jHhrGY{rJut~PAO+C1bX)-806`P z@ACO`S=fM9wUL_$0QQrj=E0YT3)Q|VIj#iG|H%{J6nI^x#vlJRSJ#g$Xv_^tB$*?; zho>Z`3aRB;Oy

+VjuO!mH)MCt;0wbgD};qyLseL!Aiod<6oaJ>)+#^^Y7F3j41fb5gY^}h z1-Jnt2tIfMmjNKCJqize!7RWCgoX7L%!TG7=2&7uVc-%N2<1T{Sld7-@C5(@c43u; zB^Epa(1Bo}BE*Ds5o(Wm!(zY}yaRlJ7zXvgM1UCfWUwSwR=DT7SQSe+_!R0fJca~CVlfHw06x$eWCYMbvak~P23=y!1{Q&M&@^^b01xao|0#X`xBfdgt3QYO+i%A+Yd8*nyf@y& zv%v7)c#j5(WLJ0{If|c@TGoEGF>m7BZ4*Vwc$1h(`PUl0k}Y>5Bzo8G`YTs+X3zQc zvg^xzt?TQqdGVy|M2&dM^3zPoV-bF-5cXBBtf{z}-A&dh8bK#HzUN^S8HG?*Hn@<`+#Fx%}-iO#%y%Umto zX1j*PEq(uR`?3@rd(z-B;Wvy;l-eT}uYcT*Re4W^uHj9VOs*|ow&d9^`ND7i;ZPM) z`aUy~QdIHUGMX6l{lW!=(sNi1vqavr=-Xmv$&PpZj@^)&k-uK>H({LoUPMG@{nBmg z+_3&(A|+wZPra4Aaj`-{z;Q>B&Sb>I65SNa@LLZ($feFgf7ax@os0=BdxcWl<85T#4;Ald^rSHH ztI@}u&RnZ(UXz_Iyt3mlYo{lns>$l5&wsYe`i^!wd3wez>m6>}ieH6TxTam82-7`k zsLt-n7r`c7ylJO;cWy1D4m&ws%`(-;5FCzB-{_=pYJcEOiWOvPhg~TVVPwkn3?$Fo zw6q$kKi(i)G@{re@Yk!)Iy2S>+p5pKaV&B0F^>GIbGETvHJK!oB@_8ZE9VQ@Hf|j| zSe*2)caM3`UEFH&Cb@E32t&9u!P{o_um`j;ilUz)DbZ~$gxzf8~6O!tr2QQB}dEaI2M>4R%_ajO5 zkvx_X$*NxiiEZ1UI1@|2svm}Cl`rQk>JbsC1vkJ2TkrAAk8Q-<+sc=0nkn72wxmWz{i^s8ET zMmtGvY?i5~`zS_!EmsZh*|e&JOYO?JCsi8T7SdCHuC!Um-!6WubRn~ktQpx#Er_d z+4Jm5g2i?0?p-UG&TjFiwWQ9{mH1&mk=X+Bg2m;;Y?nf}HPL#~hNd>I;h93Nwgc5t!I*8O1u<`ymtD;lS8sory>Ixl zknb1Y`LLtg@AAHppPIg3{`tdB!lX=M6xxz$_ff|TFOyj}x8x4}Si)UhChr~En%}dY zAl=k~-iupT&;989*DJThggYG3{1-T!1|VDhEm+Vh9v^ixmtec@!8;Lwj*) zgz_7H5e{Mi8hFCTun@sg27ZBVumnMG5m^=}%paAMY;h_vH zjKB&A2=2h@2QftDuo^(jQF3Gu4MZow8E^x}!IA}g4Fnup3~ZF34?qdaAV>!*54Z^= zfwu5?7;=rLjGznv3bMfV2dOta9%hgf{008NAjm$JAXs)lB?vVZUSJM*1#7?~xPk(* zka}#mKo5h7KqSK!2Kx>;1q49tahZo@2Xc*u<9ZJn$3hJmH!Nka^}w12cYe?cwqW21 z3<5EMPJkP1f~67+2%*4G5FFfujSM`33qN=bfPzGT4sZ#C#10EQ#KH@T0aCydESum; zXbv`kYoI*%3-kaIVJN5ypu;^MU;AmC9y~{?3ExXzyx=G z5FeIe*fBva|Jy9_cl#Qy@VuD+=l5sIx-wS^g$~TKls%M-zkh$`lq$DZ6y+T^;r9o$ zIOF7EyugjK4OedAEP7oFzCSaR<1G8_`!kOu+e0m%7xi_^h`!&vVQPL59!##krNsAV zjBJZ2D$0QgCw39ti$;(4BE5)>*Y97tZvOlCX971TUNU85Sx}!4`i-3z{dkfcXQQ%A zn~TS699L^ShBy6tpPNYy-%}^@#BFK8}q>- zR6&HrLmLZ1x2L#O6B(hM!kPEvoshMB&-hor7V`+7J1#v}OYS|==X7yrHN^%8)=#iz z94z_PCb2|Er^|u^hcSp}zi>AEq>))3P3FhTmOx!d-;Gom*KL`) zZpagXeT!Awn1XX2PeM{W_qv-*_tQBjhNQG)g{pRZ^iNbxTff3=RdM!u(=j@=DAb)$ zF?TOvA2qfx&L-Q!ZWPy#Mj1W#N^F%DMJ7E0g))XUNcFjh@1#}UUEbV6T4o&^G>>h-?la8^Te5qMrI=hTndnM-Y2=L=2@>DX6);9Irj=m-AoQ*Ub6+W7)ogpI=m- zc=P#X)x~~aULCzT=gaGp&klZhbN17lFK_im{l9kAS%35OU1RSR$TcJgJo+$%-Ox-)Ll$JU;#UB_c&?GD6-cKC$`Y3Bhje%F?Gv=5b61 zTBYD#*t0KJDH@A=0>W6*8oMAmTppNUSMsxD-_TP{)@-kiz-coAy1f>SmM_*@);Khd zJahYGoKLCl#J!r0R-p~Gzp6JGYo7NVP$OS1n`2KMkr(()(~1=tAJZsAc5u+*OT)v> zR}_vVM$l`oWuEVx#Y^k#qzP!U8%K3pl-miXs;r$44%4jSw-;?w(RRE0#2<7~Gke;j zt-N>(hO5+(^E}S5M2V!=>bkc00#1bd7vPu1|vRn1QY=z z$T|RESgT-l0b{@tpbq>13t{5|lOUidEH1H7UeE=e!HxvOJHrK-6FLjkz&Ti)Ks7J`*Z?OW@yICZk7!~S0;r(x1{xvXun^)7gka5p z#f;$zC%6bf$7%;kF|0BN2n>VqpdhdZ{=r=oECdZg zhS*ZT4*&xgV0hRYB7zfO8*mQW2)G65$8rTE0LE|`2H*i>@E*hk17O91{R$X^6$|zd zkQjUdr9dwrALt0Hz%Y;u;0LteZVBqZ;slPurUyhZtWN+K=nDu01;JN<6IOvqU@hjo1-Q;-QX2#`Qi@D)G{uE0)^As+KG+;YLRz%5*g zWe;{gP$H~|6&lzH_+hUDO@U0nAwUTA0lgq1mTGVyI0O_yxd1S92j)S2@E-OzuoH}p zhozuF;1Js#s2FyF=-^?94k$7_JqEkN-jFsZh^s`{@4t_wzg3XQf@=XDxvMAna^!!0 zh0inHZAH!+jkVudXQAOMe9qAl=cZyKKSs=0;qPDJv&_`~_8wL1fil`}U*WqHeZZW| zARB(awTkD8N*Zq9)+&C|y2R#fgK=y1t8FJ;&5XybmHj%k^SmSZzu#J!bBq-~;nqsI z!py{!C%RnRm77HD@ZE8F6Tu^rMYA@pQfJX7ZuMUku6$j`Z7r*AI7NFI_~K@GWJ0@PQK=X=)Opb8x3yI}F-1*IC8m`mEaD zv+8IXBjEYO1xwSYU6Ml?+PhIy_l2>{qg%k$(*oS7+K7IxvS%ith1{%x63*r)n=~_ABeN3s1F~zSMcP~ht{$@*j!{o$JLuVYUjR?L5reX66DV(E2d$P~saQq59T4qrTF zCzGIG-2W*c$b!z)QtgFIrzP=@x7OjSFn%=>`T|u#iInE>-IB4cU%6QA=hhR-(>IKt-YgJ6*Or9T(Rvl%{we~H?Y&xin8ubf@oP&8xT{icWW`LC- zw_%SPX(rCI%iFCUom!XR(2>cit2%Y`xzv{KP30|_SD9CL*yT!ao#oSA*+J&C)C*Fz zlW-SxY(|p((00v4rYa;;;5=k%W*%|6qtM<mdaHpA1u94bo&=;^8@B9@>z1O zN6+&|v$#q|TBmv_y>)%bQ*(8&ugoO4+ai@BzPN&^rv;0dC5+GOLV2Z9GnRxRD^(PS z37t202NMw;+Nfxu<%Dd0)wa$RnJEKyJG_2A`ZTw2@*G#fA~rx~$6Yf@M?`GCQ#9^g zXJK)3o10Bup6x0-f?@NR5Q{FD6l~!}ZEp5BDhlREYEJzez_6duLorPl8h`BP zdeS*#CZ|PBVW;Y-^F^sKVJCRbmv1PJz4n|^Bp|cpW*KGS#vwy?XI1pAIMXb@L;F@4b9*AZ7*eD9{>qD(GoPfKw<2euNoeLjV?dfp8%^ z!_^(E3Os@^pbg9jfdVqv=m4H?dN`>x0 zR6rHGL(CIUIfx1!L#$vacnA+-GQc_wV#Nv&poR*;e+Ut1#oPcMf{kD`hz-Aklh`A| z^4Ju@yl^Gt2-RXlFuYj+69cRbe8)>|Yb|Kv#)?TV-%Ff{u+Zx5qZjU8C!P`5cK_1gggggs z8=j}Sb-|n*!0hwji_$_pb(PEa+bNQq$Cr|pFoSbW4Y*;{Kh&lx>~wjBBS|TmY~p)t z=8dX^(`&-F?s<9h*t~h$4xBj=_+b9nZQ4Xeeab^`%@5<0ntX{#@&i0>Fl_!53gI)U zk*ZruebIMA&!=Qwhqj=u-9P{BnHv1Gd(gFSC*qT5l#%w2mmFO_Bsgox4?k{lqJCwS z^;*X0S5!;8)F!aaWVzSfqfk=c1tf6;^IFK=0%fMPRj69@)ID)k z={e@30^b`ck5>CVHM}@r_nh(f+MCy|^N^5C%28QTl7E;^<}mtSKVP@^6P42^x!j8E zL#qierWAKPiDeUoYJ%e19xS}Iz5Kdcjrz^kI z*!d~91{v8-nw9BrF>Y(!!kf-I+UYjWO!D}AvAQpdF=dH-$IbUd)lo`|W;R7I`Af~A zb#6LoU&mm5;%W-5w4{{E-NQY)>6-vg3^|7Xs7A4C(XdlLQq^K^+^%8i{n z?9~nn*DtTCo}It&kYY;;y815pI9FE%j4O_*S*eHofJuEr1m?~p?nG6^tp$eAba}uY;*5}g_TpvHG z?OUfHW;9ZYQkXL4*MdP62`xFMLj|1NA1~&3WEC5Sq{*fVBZ*CmZ&;LY5A<#jjEY*C zNYni!$G5{**1d4Pd^oSpSoLlt>-owfr$xC*+QM)_tjsdvc;KKJ662rN-=Lh|>J))qH z=BO?2i^>Yteb_coO)B6q*r#C4fh#vGZm={#W)WDF76&;pg}|a+ z$T(t-g#~&A6riGLEJ}scprVGGCu9M)UuX!Df_lROSVo`>NCdVp-~;vu=szF;GN5=^ zKOxIl!C>ct_@iLB1j5qFa5aeV8ZNrfI*egF+6r{xUxcfp&sY}%OC&&SB%(~!8lL@ zumijx$S?(J3`)Qn&=8aXUtnW}hQl2QI0}qDqt)1m0Ytd&!afeTKznha1yEp#gBKQH zkpy&Lmjq=X&ImYGPLK%djdX)WkO;yK<^U8}(_pCtWuUjv5cXVH?jXe|GZKvsBj(65 zS`C;W-DoxHjnx<=f~vzN*#3Yd2r|S3eIUrd2=+dJ3ASUnm&KJBY=Q-l;SB|d_W!!x z{!jeNf1B#9TewrlKv8_gez(N?03!ThiSnd10?yK6JH z5M}1=2kxISb1P>ltPef>j{eJgdRX_N_L>}vGb1Wbro}a^ahaaub;@UK^Tq*R{bqMF?St9wpG#NHzD2i zFCTvY-FNuqIYZR0{-HWRkkDT%tkq;lbt?!t#`^MW_4(ni+oiLKdxMy($Bd|wawE?+JkrYl=F79YdApo9I9eWVru9*t ziezSTT_nceX8h7ZjII&rsZqs0YCXo#sCw2!amO^7qgciER5Q~h7MeQMGpW-_u7;pQ zs-^;Y_6vzP2S zT}$y{msQjmd+izOZ#;TWyr%bvJzHdbD%f4rz55pHvnm!Yje2e8Sn5gGPsuZ;_AYPm zAu1BIL~2=3aOC|dyrihh#sS=_ozxZQzF6C)WUF_Y{`%Rt*f_mqg>)``w7Z^hYr$T^ ze7fG5wu`em(!b`zpr=xkQWGM;ku#$hysg8@_Y-_txOAdY_Lzn8irEy~v+ylcpytz4A7Zr|*fklcuHGOaA7m;-K8+KmGQ8 zhP?2J)&i!0;Op8_08h_FFa=TlZ#)HIcr;pp|gGEGeS$i}~mGvh0NzR~? zm!ccm$(E7y?5UT-$6Dl3E#`EW(N$7YsYP2GZ=#y)Ri!8Ms&+ov*jVR2^xaBD!7l#3 z;Cj#acloiGcUhfitnat@-6|z#H?FlBd>Z67)50E2$SCFwV$lA17%us@MMViQ2_tdn zBu;na4$VZMkR}}PIHXZ3Bp1y=@z6idK+dxjJ3!tDuis}766wc2qvB8f;SD1_-3RYW{7^x_fx?LFvEj9 zun)3{bpxi^|B3DTKl4xhZBd75n|)kbwKUqF!?2^j@N;`kriATawUTKl>eO7NATeu~ z*-pyyB-`JwX;=(V)x7DyJ*+avYi9Is53A69p4c9%xV~fTp_%tTSBvmAA;&=`qmScZ zm6RVUCS5{NPpBR>Zy$Z);QcchA70$QbOJ?HHx2cZGYL_J=0mfplvJ;)Uil%SSnuoe zuzBOB7nd*pQPks$Nt066?kDR?3S}3cwyC6&+}A%3e0}%iyq6EIoH_CKp+3vFSH#&v zh1~j6&VHE*LGSmAf(eCoYV(KvjEZe1fBSsyTRg6ij*U+xPqR20nWrSxvFjOK3|bYH=UYNJs()*3Qi}l8FQ@Jt za#x9Io780K&-BelY&(65De|#i2xc!hc zjnLO07*8kY4)=T9Qe{?LMMVtz)4)SA{x?5WPZ4fito_!06`8u`N3%QRFo@s|cx=R#7_a=95~p42_Cz9vyo?u`i)zL$+wp z!W-o_X??3S#XIMRQlCyw=3Wr_6)0xR+@1IsFRskkw>I_;+`iGR`dVj8>XmgE`C^kXO@6GT3;eYTp zp@?JouU?LmXGe_JpV32DNyiiIi;Im7|cz!8WO8f8Og zFn!@fM{UpVCOAwnB5Wa7NXxsHJc z=Q<8-GzV=#-_Q_@o!Ek6hQyhQvlfFNLV=iIh(a#V5Tq3u!Ayw364}I&kH#Xf$O5J* zEM1XJGy!o#Jun2Kr5IT;E27NUZ6bi^8xD1Z6gfo)F#F-WNA56=Vq`)VP(my@v7*EQ zk5Hqx2sMUbL=1gKu`$ab@0j8Y&p2QLM28Vx1P6m0(u4$|_J|ddg`lBDh#Mw7jM?Zd zT!0`WYsfoFh3O8p!AOQ2p+$zPcnoHSXBd$$^a?3Pa4>P9y% zdW*Dz4{!vM3j*MY00b5TJR*$bVwOgJ!40?oqbXVqBOsfw21H!-?lyDbCaM;io!zqSk$i-B!^gp~(?P{q}|vZLKj;k)d)N zy`az9UWC(Ek4wjAE0`Q2Pu+g};3Vyck3{1<6fF1P(t?t%6IBVBp@gf4>g2mA0^+mZ zj-{VS!k8+WwP360!_)64nEk>ePp8K)`|b4}bmj95%i04|FFhu3(RR0gT(LrZW?`_| z;Gx}4S0lM(Xx)*a#UBZyONaN04}|xmYbX|!c_Vr)p%JrR_}}emBUD)%w>ZfWU=?s)6sS_Pq0FBeY|Um}+{xYyg!YU>DAmBU^-F~;|KlncRa zjpY!^WMS|g2lc9{{loO}LJ6lt8aQT|ux93pQ-$&w^f0NKnA2U;slW^MS4|y8aNDQb z6Ec}?TE^2hh0{dJ?u2ms9(1~6m}Irr1Yvt!l0)WRJz1JMFeG<{V+zaN)_Mbhyr`Fmw zTHCO`{_oehv!m;l4{I~6%Wh{SHafE8zrLAETsb2b28UDKn7%>q#v zjidc^qRz{_jXw9=(c=^W*$-ZO`p;H=KCV)EwOQ?-zNBEKe@XSERF@Wsl#(;)Lt8+f z>f@#+B|n*+xt0{4lIR&N42M|D%yoz4o3=xb+8)n5pBMx0mp! zk3+3Tc9KSZrOPgA( zpx{+(*~+ldrOwtNMZY$Ar5RVNX@28ug3WsqS7L4D4Ps5$Ibrm&G`$5gq3MBI&!XkY zJdAOUs1Nt=T}CCA>iHBC!h92#X?drr`GQ(WUTqK;+cva1B`xo;;~e}>J=M8_ zzGk)86$kgK%+U1wqL42dt6MV$*l^QQ`h;%bNjCY8cJNJ!5z(a6V{#VSg{RK-vg;F} zI%;-HK)3$&ajQ)gv3sSExmcm%_BJpS|5|05IW0_&p#+DXCDm;V6 zq05GCGC%^EKnoZyAqqpI;RF;JR6x;y1Vq;GVh6wmyn%(VQ%2LVTn3f^42TH1L^RZje%7aNz3RdK> z6O4o6}D9y4YlFo%o_71BRk@oGWKzTMMIB&20}7@;;=AGO$WhdDDn z%OsZ5?hzl*qGSJ(~6e|&;I=47~q!hUuv zi8po(>T}J0iYuX}tqM!Pr+&neRSso3f!2E3@LygBByijP*%X#U!j+Ysc@yBy$IjR@ zg+ilzVt94w{|jFYoFdc{7sE2RS+x98U#|-qPGsH=3R6t7Jckuzdn7ScT#teMy>fXD zqSA?>>`}a|tHyoPh*qOsIyKYGttP!DLNYeea;&j~#7r8)uch|lebt!Q9y33#56;+B z*e7nnEXig&jko^x!$IPp;O}hjzUr}Zej;0VB)))F|FF(kuqQa}`Tg5usA%~HhTF1^ zlZh3ABW&jjVQ<=aUF+IbK3(onBC)0(Acl?&TA7|@dfMwsWumP(O3Pnxc8;aP_E~Z@ zBSL+DLBh7+G;Xis;{);npjAM1Q$P7YRr1w`wlPS@N9IKC3v2oNfucCs1LW1 zsBP~#%VfW3q!JzNOhKiyk|-WMQ$j>?LPZIpV0z_L>yTKQ_23~=)?{D4@v%du%S(F6 zog?)d#p>Yj+bt5l)aK-fY-Z2kkZfX03*Uk-_g!v_54omUC}|fw#G*#}7um{uafiDL zQ!sX#f;)(fnB&uTB2eLZpTqnj&9YZ+^N>-pZg%^rlSisEQ;SQ8*3 zMAKM$x*{uQ#2R;E2v^SJb};;J)RQ~7wY?dMl)>ws66*!qCDF>JOD*MoW_}EkT}!h4 ze7q+sAIvf(*djspn0;Ox@5EoMXhj<1b7hld@+xZloqF~{iEK+jOGvFmO3I@x7*3I4 zNAm=f98m**=1F%u-vNnqRoy`0pcS)aub2#P*q6{^{cY zi}8-fJ@`G#3ZE-JhVTEO0^kIAfUIL1fF1!A;0G{(eF*Z3C}aPCz+oqVEd+Xpcp+FQ zEJl0OAKgdUv9&-45oK@%T?RamY#;<_My!!$cmsYw{$Lm+4+z0F080#H3sit!&|D1H zxE%+35M}Hxzy?SL34=zEU9bUKK+X(z0*2?QKnQFnARIUW>lY}(kYKO}egG8!2~-tc zLXIdKdtXLV~d%M_U0ZY9ry?`a1lfYQ~((NN4erZ`k(nbZ!oDewc#BW17>=OsvkA175L}#Z?`^b{Oz}= zG(}YBZy&`OnK~pAp8y;@q4QqT*gaQwNU~;f%4!H*)d^Pi$5hGrguv_I{SEkm=;=$J9&=bFJAQWj$|JR| z*%s52#OnOci&jA=)nBirM7a^QiikL$3Ti*bptYr}V>Q&?y81*>+GJExnKCL}O z@%x_$b>s}kQyFt7CA$*7=M#GZtgf;61Cq@BI;N%a2_NmTm9*-nHU=@IAo&9Idh#*J z)WPSbJs97Ao8*R=Ett06VvCkep*dw{SWqTub1ph1S+$ zt!V0$QA@>=-X=XM<4IdWFDVQh^yB083d6H)w$>RjGD`_{y`n|BB#xb2=iSI533I;M z)?E=Cr4955sQk~~VKJn9<@3P4Uyqgrl11$+c=55i=etdK0xEB3usMaG%DYxDisShj z@7MxwZZBpw8Cu?B!<$F9CHP}k+E)FmH~zC{+m38NAJxXAd;LAyM$UgCAH{ovY~pSiVXX+s3+Gqr57l){`%h^s7_HE*S?$~4uX10QR+ zR(3@%U)qlHizdj2KgZWFxu+7V4^nPLw)Sy+`FTo!Lzg7};4pn!A^YLx2{U=TBzeOn z?K$H%hW)$4ua*A(^VMc{$u*&^3l7xmxDpk)f!ABnwR97nA4v3Q3#rz~1FcmBPp)t5 zdMS0E=o0WCz@gM<&=ktq$QI)n#v3wCtrI%m_e^WBEe*XdaZG9D4eZYTCTxUA$>lzF zTEjQBda_OyI=toGf>6u01TDWZ*^OXZuI%s&&goWVe=j5_DQxd29`g@Kp15J1+0IVB z#DZR3RU5lsQL3kS3I$}BA1{i_;b`eYd!f~@+}F!r|Mqc!Z$ta0WPjLrJ%>~ZMn>7{ zQWd@N_D>D(xVBk%O)=0m|TMRy;# zf^Ktm6-}UHP7;%v!JlP(&4#_+pYy5V>AR|}(oQ8?>Q*<~)e72+y~eii;zYqUj%(fW zN7xzDroFn3cMKmO%aq1<{?3G^n)vkYePJJ;x zaJT!958N4kL5YXmaG;}z=r<~Ydj*sm4aTMbbw@3bRa6aqMH_Iqqh#3iquCGuYK?58 zTc|Zcg(#xXs3S^`IUn)BwK%o|NHW@h7UJ$0!A3K%EI=5L1hfHMF#LoNV?4r-)FI56 z&vB1}9HMrx1&W2)7}-O{kS=r!Aboloiv!Hts6Oz4tQu}jz!c;bYYRLlfa2nw0Bts87^%hv0b+niaHRpYAkrWXvW*^N zDS$l-q=Mq&CId-EfN@)ZDx4ddj~9d-nRaFKpm{Hbubj8<`<>QHD2}1&yPI|eueah?9Q9}shPV#h&OXY&zF*>^ z6z3e974A&PG8~ORT(saN{jisls9Yak9JF;Wse5{0^j>*nSM?e5w+a{f*RFB5TYsby zc8uL#ua2%YD$n;fRlPTwJ9b=nRs8ZHEW)&c#%?>=-0ilRma^|4r6tod`&yqFzK!#K zs$x~}xT%xNjnsSg3u&>%q2=n>EtaR>ERr3QY3}-db4&l?G3C0weQIEfW?U4bf<3o~ zGPHHv*vB89|FD0`_vg=j`P8+Hq3RHfT*5Xc_;+T1Tg9PSr0A!7OS4M(>(#tzKuxAS zRaRU?!*k2(-j?yP(L9&Sk{~0ejVYZgMSIIS^SzEg?_BklmjC{oy7{eywNB(aR_`iu zGmjN|RIq}woghLB10&LFosF3#LV^*j*0Wazlt(u@>P7d| zor=$KQ4`f8@1*Ql_c?j`p0)2+t`rte+wx3EnRqSBY%KY z5Fi&{f&1pU<7+!MXT`+cG*9n5e^r@c#@aJi6 z^ypG5b4TFQ7tyH`k7n*k${99}eQ{)V?cqn~2lgE|I<`n}`|kW6%E=d=PpAy5oOOrd zsp3Sn$noPUzMWNaSIw@e!nscvUb-(o*jw6aDRq34N^{bL@0)p1k`u<`tST%pw_>=} zR!4Y7KPFkdL%egEUE;)!Qqw6pv;fM|1?H|MZPV8~(pf5_m<+{Hf;!M%l^vnr7u6H7 zC9+nUC|sbn8d{=g`9AiwB+^y1T3-|4#QzvP{&qM&AXNV%T_P=?H2+hRoa_4HxA%Vb ztTXnt4wbTqws(iO`zX9G@I#kz>pDB%ZwR&Q&q)h#Df(ckCob)nUO%gg-lDON_R@PU zUX%V{95H-&R{(`t-MM(|yn7G$RQD<(hh`L_9uTACeCuR(+ImA4h32|5#=gONzMhWd zY29X{2HvmRhxo1)S=_x_zV(A@BSHH`^?pf;S;x&&S>?;@T1Rf*cX`xwi>|k)=+x(j zJoF?lR?~`Qx2YG3{Br-co2|uEQDEf0u#qovt z3XwuMaP%Q1C=||i#03XC<|3pG=P>ezITi)Psf)uFXC@{wtdemtj0Rx_Ll=+(42l?H zF{&X_m=%!&jH4(Kj&2+(Jvg}7^rYiV?ss^4eMhZ z@)#YFNNi@&U!2%@J_@rCj%YLsgDA3y)}TZv6oQL!8lA;-itJ)kMmG%)wxMFk7G_t( z7iB~T5pK+f82`{64Ce?FqKvpBH%Jop?}qUe&BA1hSR<^MaxrOR^^8KHUx*ZviUl+x zg}kCls6Qq^002WEWuA;cKeQ7%XTwL)}|AuPmU z49thvk7EeLh=@obNpOXsTo}<&ZL|ra`~PqA^xui^-=r<`FKP2E5dD$1Y@4*wCXA`< z$7R1g$88Z;yDeni-pgD3=50A!j;GF6xqZuayrb=nZ`hGG;mvK+TlNmzP4$0kuRRV>YAEzJR~c7#tXg47?PYh}rJf_>f!++=VTSsO+{PU@^RlUZXKl{sH()Q?*k;1)@ z1VIjUMMKvF1yh?dPQ_}K)Iy4B8v0TNg>p5d9g1n z==`*fih$#59@C}69jf*#q>AX;D)0IE*G%Xg>dGCqJ9ySf?RY0!1^(^}*h#Dz6ZDK)(@l@l6xIU^7#Gf-a}#V~ zFMjpzF1g)A_amJZ#=B=m`zTV!j*xZkcAofNMAVE(Y~Ot$^iaEt(@0tSBhFCfq>F1z zyb@Pf`dMi%7)kH?=^gnKrMs`vQ`Pf0bKUsd-!t&X?Wi0RPTpTKfFmBqD^6jo`p^TM z=@NR$I7EDlpF+c25n zWQW3Wlw-iaRAYE73r99mflVGxYV-p~HVT9p00%BkWSqrVA0iu=VQ{>n6Bs1W4;;h@ z2D*Yn8Cy@J0(W{iMh#~xhA2!pShyl5C>C;soZy5tJf4eyVaUOFgLoLm0L%mE8KxAZ z3)#S^hIs}F#LR=1ppF=048tCZh`|P>LH3Y3j7I1UYKLJAJwOH!45S6YzyOA{pfSh; zMjZ@1*vMjZK}s++T%D3KhqkiLhb##QGWW!_6ut-v7?Y{(tM= z{<{n$Tp+lPp?^#`{bd}j;Zvp~3q*&1%Yen4uqJc2rj52!YAZ$aFyZjO>2x?XR(Ev= z=UYm^^T#wri9gRdJX963j~ubd$4xZAZL|SdPZSG zV+}h%==3oin<+*woC^fCmqpu*uU)>jszsELoj-_wGAltzHxG>%sx$vZEFDi|#|}!# z^w8vs z6mdt!HR=lDdE5b}n)57VRDnh@ZJ^8aTkCrm2_zB2z2r)`GIyp2YfK1duk`d?-eE%r zuBjRmnrlv&<_^!INvZd`m=3;7f)g>ob?$@Z{vqNV3T0Vl9(x>LKoCwxqgc@c+(?Ot z>oZ?%si#FhpY(Pki&CbB%&ks)v_=q@Xth?7Sf_V0q0LANh$94-3d4qG z*IRLXJ(6XERrwT)^}hSNwa4Ly=losgb?3gn95&yUL>tFWUNO=C;N;a|Zu*DohpJ7H zD|3VWhdN%UTK%|U3e}p={o2!YsD08h?Zhq0Us9~ zXPUouB&V9@K1&QCsVN*`Ot-Fc%XnfsEJkKz3HV!F)q{L$TR7}&snFA>O7<)%GDE=< zGFa(MVj?-`T|C7Kqln$9x=>f>WsG1ahFm4iq_#CbC^4fpfAQ_Z&t4wyJk#^H6Mx6R z$49$=JNfzjv)_IoHvh5hsI(;Tb&JoMtk;P>cGq7X({2Cr;0w+_1ip!r{*=}ClKb67 zvoC~QcwTprk*PN`LzA{fyPirVeNXiat=06ZEbWYR94ypp-Q)W_KU3_WTJdgHpNSus zH|z$RD^?EaK99O7*qJ?d#neB~@NV(BuMfwB{`OYYWp}oLYT^Xn{(hY}w-2+>B3=AK z#K>BxZ1_q*pVC8UAyfQJ8Gmbc z@2F~&PFdgiCCmw3;}dzZ_FD1JzNSQa>d)WRFI6q}=pl=gHCJ6>PP?crr^av?3G6iC zpHd%cilr&Z*;ra0s$1j`yK2&->_G))J82`DL+dVbL?zld1`aKQ#Me3EdNpDjmCyr@P z;`+?3JY}n!VmBd1$S4kK3-eoVPDJ~sC(c&Q_1Qke!Txo_yt+NY?X_%`Dh83VxO7H5sWYu zxUXE1K7tthMrezsVyCr8-uy$TYNru}atVmzL$H2kkNK5?%8{N(B6NJ9 z0AOW|4 z5Xe3RoOR?w0wR=Q73?Yz-!KMXgG5GtSqC`;9M}LwAfYgBA*8?|q%8o0EXIU}oWh6; zv0w%UU=YDj5ONlN0HP4e$bEV~B6*Rma0`$F6(CG879uX87o?~4G&h8RRJHC50T_q{G6By37>vj86+8gp zprQo^fCP8|da)u0cmoU|F(3^jz=9Om16nZaLRVW100fQ2d?2;_h_unI_k zUKJn&43PMUew54L4UhmZfCm_Tt!q!%00zU93ou~%1=3(MjI|&EFaX#a2Fm4t|zE}om!Yz{aSVJ4$ zna;JuEj>D+5AB)oibn?)b~``xV(6CsWVu_<)WD-T6pK`5hHR1fJv?9O*ilQC-Y3JH zYc7B09h;*P3?d{=c)7rlT6cZH07=mo#E~?JAk}cx>GEvK?qXQnu=9ApoksUJ| ziRUoQ6Ji=$vF*~vt{!$GUs0n&yr*PDQfmpfFe=74YidkHQlAahx=s?nW$}66FV<7eoCco5>njnpoeWsass+D@mIIpRQ zA+)LP%#Z1z5-oG0IR~S+6mGoiN7ftLE_*I`>!l1HrTwLf>#>M7JN%T7~)1Lw8PV$e*kg2`EeBk*3i%J^3H zuvUHH0f8IdFh5^fcTq;nodpsDkwzb|{CC*koP5Wg*XRHBv2K1aKBbElq}oNff?6qcz-lYq>^jPuOGj2@!++= zWBQh}I7O<%@x%XYKIk&DVD&-X8Do>Mi#2C+h+ghl^*xc-Cwos{O#hr?aI%ZNd?fY& z$>!_0Cu&uyB9Bm|)6@`B;dcFxW|sZJ#)mDc%a?oPd()*iSdJn~p_bj!tU0Bk^@(>k zI4+*m9u?U!>!W(gqQp}y_Cswk%RyLDNiFusIJI9OP(-@SHeCK)Gb=O1>>kc({XSxN zb}JbhmMb+=BP`01a?T6oEwvjSY^4YGj?@dp+jQ)xcaD0}OUfy2u&|=FW_$UTT^lm> zT+V!wC=Av+E>h`fi&Ltic5vAqy{s>8d15sfhP;bf$Pp30E?quXLL82nBcCZc$R)im zr8c+lmV7YA^HusTBH7|zd}Ez$u23d!RsK<0Mak|J^#|o!~{F`Rm6J|+(*|$>On(Aa6LvfT!dPnl9fPlV? z)H%MD9FE~sC|MoDGcnsHR=ETwUWi#D{hITSNRKt?@sy@1t+3;v+w@vlkw|a5KlOn_ z+>Kf~^_2hgb|RMbr$_5X5@84Hw8V05Ge_y5_llVLGTWAhRYQI0rWxXcguutKDSwI{BAOHdu zSE)1h_#-zy&II7zzdfl&nY1U`en7&;Tev32*~_4;+f_1mb`@;3k*? zfC4cf4m2+RWitFn{=>g22PTJ@zzX8CQq@wsS7?54Hl#f^GI zhtUoas#dKOC&o_vD&(9>xn);oT2$?5+Pum$Ip5AF=0GEF($qIkeFq+C|3+T-p68iW zw?Aeutq@MQ__1Bd@YAZ^ApzH(Ci>?fQ0l#;Wn|5(2E$X$2W4qB(5xG{RDO}0m= zX-Shnd&xl+`q47~I7d-XWUo$k6ZrdFb}d=OrQ zy^BW&`zn8|M#ZF;hGm}ZMwESR@up;ci7WBBm$cnuSOrB=NhLd~i=i>Ax{*#xg01J) zr&5jw?qefgD}xwLLBdv}t!-#xv-dAE%oj6{edT&elE8V@ldw3i2>zM_wC#=lUS~b( zZ@bRe&d^(0Bq`6eY8KHdqdCRb=;G?f|Mkk@-?Ad>&82_;*J9&y^Wz4r?0$8q%iH>; zvWgrvKWO+2@7OOCG9@+Q`MI=xkEiaP6Pv;@9VTPjbH3ChJvh=YGLAEO?h+o8n$s1v zOHMw&mZ;2HwubjJsZ`hXZF_?dK8Tk8$yY6Q05&BZNIF349 z+V4=LZ_S;?ZNpI^6D)N0T-XADa z+ez9dm?%A0@7Rm}SRjm^toQ9*%`N!9*!xW}e)knzCyy6w+#>7eX)@3nN2eJ^RY;WX5^j<(h{zOV6iZMTf z7>IquDcAy@AP+G`BdDPdKm*x@d`9@AVFy5vd&pj7K4KOfH)e8#If5M+K~^KoAsSEx zp$FYyV1|7VN600l69O6Zz?6>c1#pn7h+l*!+6^QsxPjP2$fHm|l>m1ja?vutN5BYz z7eD|6KpyA-^njH>9#rn1fe991Maw1LA<}tb2ZBI820O1~CxP02h#j zOt!8);6W%1!UE`EE-W^zCISG#BDe!R3)BEg02E*jPk|pHFCYlkgN9%w_yVHD zL3FDoP(VNvP!DJTM1W=}EUa(<8K4Xp4F-e_;RrMua1&$%Xjr=#hzV4L6JaR85QqaJ zU<&vGN`jk!CTIeN`j2qn|JI-RH=7SDLjol-V{w_a-S{p_OJ(MHlwJPm+oe7ucV%?= zo7b*VI9=g&`ftC4mv$N(&W*HeC0{S#y$fxOh;SWRoE}oA+&OaDylMTei5^aEPE6f1 zZBC}&*ocrmhr=`v)O*GjmKKI&C@jyL*fZ{&XJso{r$9I5Yt>m2(mPTQi+e7i7iplzy7ZRpq$N`GuyrsFa5$ME)WbKDG6 z;Ev5#IJIeY&IW#{qD3f;?zk!?7h7J4BM6T%oXWeJrf1q*oGuYI-hM(H?l^VP{(A2d zTH0^fx&c+RdCR-OW0>;X)j?6d-JON{pBy#BZ}N;YV>SMZq#DlWSA{h19XIpKh<=1J z(;T0?tDaQNz10PD)pj8*l~{gV;`~dI7+57fN!hjcVuWF-vy}On)X2!dplc(%` zcRh99i+4A4CB5FaCG@nM<+|h=;(OPKCl++mCA^NfQE4*Sa+`!M=D*%_?q+rvAASFW zr69iLkbhy1lSkH$ySp{-{-{|q&OInx^KkpB@d2t&mKnKgOQfqjYNJ>yH^iQQv}8c* zHpY^rvnG4ieCQ>Mk|ovMa9QG>GugiG&G@*egEjruu$Fkwn#^3p&@b?CtvfVEuw+d3 zcBh4onomuR_uf^fF8(;aIn_9gsd~rqA97qXhN-`kI`reEf^s@1gIU25?fYGI&!t_G zv2f?v4?WjUbGVJ}zQJ@%)Cgyhs%ctBRjj*byWP6%2%F<1vTUW4UM({Fcs1q6 zA8;twn>^xSP^TGJiZR*_X-k;U^koofb~d{n?MXX;mIOl=qkeuWol@ZWo)M1g=<- zbDnv?e2_PpvLANN?6~O67E|b?9$z@N`mMgV(k@w=xqg1(NIQL{X{z2SZlK<~bT$3@ zRiTY_$bIso!^I(2nEXs7xJu^IRq`URQIKV=C`2aq_meFqPY) z^ny|%l=xHplk*QTtChkl(_^^16m)8ifa z4M2b(NKFt2v$Hjuffb}0iWg)v5)SS`Dg!!z3nCe-8wkL0i2ueTp+a)KH`5NHE- zgj(Pya1%U2g8>>^ z`}fb<544-vqhhiYe_x@_tP@tH6a369wAToZP==%FO0M0Ndqqk3nc0^qJEgw3HBPpL zsiP0=8dWBUn%Z#w&~9}&bw96L{B@f$ZpPKQGlJUpk%c4|S)_Br;!uk4W!do^jjEh@c^vO((X7VR`Mut@7k=6eR=TwJ~5-#)e4=`^i zWF#1SDd}@hD|(amsH%)}0S9_XTu)w_CDQlfM)KFHRV!Je9C~S_ooDI{pWjFna-S5gySZc<~v_A z73ULPYXM`ND)U~EWb!}V!#bQx?$6+?4o%PSmB|gv9UJl_`MgYnx~TWRzC!)Mw@S8u z`@gz}wVPi{hSq<`r;+7}aq}Hl`JQi7(W9F*4{0Ja#dwG1K6z;0)93PeuiUEt%2UZp z7?K0rZ5}ZqvrU;Mj0Emy>UJ^v4SdR!Z9nX0cJEs5XHog?JDftLzB|yZ;E~=?e`Oe5Y${9Z*=w=Et#ZqO7NsVs2xJQ>$vP zwDZt--gY%p{log3=4YOdf=udD!gK5j$~S`^MfJOOjI6me(7B?g=(N$`JWABKoAv0E zDO$5Grk+Ll4eFZiQ9{a3#5t@gid1c1TN1D7lN6$M z8MP`=%Y5Y|6x~{Lrq_qtxweJUvnynI%>B%0)rqw$hH<6M%=u)LZ+XeYWLftkZH@T> zebRS^=ChMJ=aq5!#yo@Xg5Z?$&DUnJSR2F1N4@{1S@X;0iR;Y*m(RMQRBF4tF@~Yd`guhxA;9qA#_(sY@9`x?S|HLex#H`FG(xc9!;Q(< zTCyWi@O?yJAghoW7{u}QM=0W>kFPwYSbVJUHOJ=|-(u@G8Vd%54L-s6jN+?`TtQ4C z7?5x%;xT0+R*{`Z1x%m#^y3STNI=vfUlF4Cj^h)Lk2@wsL?%KDD+CO+_+(pKX$*^) zw(%XuR~tcv?=`;2h%RI*f(jvu(85HEU`DTiKt(uN&*LG1kkbeW(gInI1Vtnu-Y`rf>d@mO%OM6d z3aBE`b70&@E@Hk%WTIn0s3Y2~O9;dvmKjJyBs$U^-2=i8xrmV(l|29fNg&wJ1faV| z79!&jZ>Rwfhlqd7<%mNF0M0;&LIddTk?sgN6a$EV$O9TcA%WQ%Ek6cs1R?qlPI8|xWlKb8|%SAZ$t2v#x>0Jag(0FoYLLG~l0!4YIOx)AFD zNW?h;8#+OW0+&E7ICOy;0E0g20RROSK_o*VfDsx3q%VRQ2@QW(&s|_=gW?3O38MEu zn|A+hfZ5n7W}RjiQlh_47vQ&5EO#MCnez>Mkdty3?q%5)Z(t{z=U>^$jvX;vdgAuE zgFA-jGa4=ii1Zg3K3}W|7=Qk9L6tXkY}v#(Tzi`DxG0NjG~E7qzwT?#Y<*)~;Ig!< zyGG5Yl8Mj-uhZ>*HBzQH)A97qZsDjh=C+SKPd+gelR=!G+XtB#_fH#d9OGsO9(cH) zQOc6%9PRrvRnDn>lMv=#B#O#iIpNZqvlW4vV=qiN${|~CHmG=}I!pA+yB_bvGU`NL zR6pk^ZvShK8vBIL;Y()Dw`g4&7iKpe7*V-=&6A!l@Ce2>$@yM>xwPgZ>GEcUdC4}H zPKs-)YT#ECaEv8IWgFGqHq41pY$#;x_G_7`FT1c8l zO#TyPaJXJ;<6vqT!yrlh14x%rF{{;9rBJu^pL&v~XHJx4*b4h8Rc$Us;?4kD_R%Y6 z=?LkdHl|1OhiM+8dAb)2Y9;rZbQ$R^-8Z~*%3dh*M~^srkG+Z-_#x3mqt~tcJgW#aB6Lp@-?T;Y;s&-sdboQpM<{hlKZq%`tEm&pVMT-^M3mdjd|^mFYvM#^U2JPeg_ZP)L+s4NIYs!Z`XX; z-F#yinR?n}IJxNRyW-%(tln#={)nUa-Xu#5qRY8XT|xHsaI3Y&sEZLO4qWg-iGTNrg2d|-5FZHN*t{P|xJmsc#68`H{M zy_7d)BL#dvspG*|m0N@MN0|CTQ(|hed_O#Mh|hx8aw}P znyuQ)hYDv&ZRNvyc9$7S>!s_byLu%|a;sn}HTJ~Zl$zu#OcqD?6Aq*`VYL)*`?mhf zb5XN6PcN4w>B%0G?X1^*FPGHkdQA>x3IqLIsvR;MP8%ee1$tw^OE11!%Zh!d9&Rw* z+q7-V>bO1I^uuU9J7fG(DlpBMPI|C|TQ~u~1n3>}zT>YlU9bsB6JB?EJ3{!0G2qGT zgS3QZUzQfA(o?jDCs*4StR1V6tMrAql4|Fju085hW%BYpLlu1;N2mik_qY9+;Kk70 zj@o6>-2SHLW)7F0!kK+yt-wOR;4u1y(Q$WqB$stro#Ax#I6H)5e^sjYR**_o?fGLf z0%B}Avow!>+(QM-Irqihp86C`r&G78GdG;y9HfkgeVK}$8TiTHi7R7BN?w_C`;9>x z_W9U^6;1f1YgeB1`zy%NxWM|!=z>F{s zTmTQko8T2l2zz3v$Jh>7!BB{OAP9tn$Urba59ot>z(#NYU<6J9J)jSY0kYsnR3%_3 zH~{5Apr|0=N8k>Agg`+Oa1Xo!NkBhX4-$bW0VPNZmV}jn6hIHE0Bl-#;7diuNz%HN?zyZOm>kyC)`~lej zMx0Io!Qd~53>>rWKOkAq6;l99Okf$JguGxh9GL(lAz9!H&_?kB zd;!jY7;FwX!tY=*kO&w;f`Bc|1<3+~*xZ1VU?Y}Ta5N5kz}M(H;4g3tszomZkpcCv zA#e>!1Haavo&epL2EbmR3^WvR0wffk9I(dkRv>6J;4I)VzvN; zF(m-t7&u^6=oMTAQ9(t35p@=n4fkQNfat+PObpnWfv7k$1APOeur@dkYXhX#9tOn} zYzXEedvg>o7-NlZFmO^OQ>I&(t zB*Ki&Lx*r-AA8&)Tk|BFn=2QQBx2g(a{CAU*SyP)%933ywWue_E>v318r|cP?@=O~ z@#A{!A=3N9+J7>!et+el)BJSAKb1&k^{b!WU|<$~>?c)J+wxOR{JM9}sC@NM+3uL7 zZy`|J8A2>ZBaM~yp`$RW0kCug} zHL9auo{so7`JBx!bRkn&w1PkWREBoG@4XZ%K2&HEJ2*4@;qVE0_uM>W$>}2k+&qH( z;=bI(c9Y0O40Gko)#6lpo=mFQHh9J7 zZlP2Ya!px#bNQ<+$2mXOaUvW;JIA}dy+2OKpuAU>F_vW7(Bv>@k(Tpipr*h^Ic>~t zM?06oSTah^92(3s?HbQ6H5r3c{={-qMJpRMg1LD&4D1~n60|-<5pN`PwQ;%R?$5MY z+TZ?KF}KvUd3Ma*G*yW_(!M&{i)p82;%c8>TETg`W}8C_!#E~{bZu>v4Tu_F#7OQK zpp;PI$|-FV!%cVTaio*(;-)byF+}&%+1cC&g;$O!v!u1P^W*z$%)PrjJF)M=<$V{2 z5)U6`#KQP5hqQ7Zw_674R}k~{j!$>Yg&j3l2bdYD39Vs^b&rDwEjII4ynk`GTRP9X zy7R|h8KO-2=Xs3Vw9^0V*Yk)c$+&W2o=?r_J8y4p)Cx|uO^H4w_iMZPM{Y_?Vq?z- z@dFrqBECHL_cN~&O8F^GKaG13pq>81^i|_dex32hgPVUU9hH9ygu$x@S*9~;Wx}b_+TSr2H+M=$Iylb)ALsge|-=EltkH6b1Z6UJQvqI-)JtZ~^&NuAumzn1Fj?qL=S>!O0bDWoJ9EcT_^v;9{4P(hY)EPE5n z{_W*&afI1h-oa6NI8^j#RJwR|Ea!wfR92+=F#F7kP1sbpSQu{T8+Pu@=4NUBap@#S zL!~}^h>^GJV!BqMHA#lq@OfI_(fk{p+>9-@Z8|+)tzTxpatoK;eyMw|zt~^W6do#% z=pFAbRjpNbLvi= zuv=HHk~>0Y(@THAXUD~1Lc6s>N6E8LacBnPk^WMW6NBNq(;&V%_4E+uq)lgn*xuKx zNO<5BFL_N{jAED2Ymc7S-K5+~9`FKx*SmMf&D_G)WiA@C)J6JudP@1}Ayp5&Y>dp< z*QrYWUFjewA#7zV!_*|W5zYABG|f7`8w&^ zEmS1GJ*6^znWmeMYV?h~i3RH&d_n^q%wKe)2Uo_#@3{OV`P)Kv#oUTQ!foqvo;f5@ zIOkodn=B|l)+p@#AY-|7qpnh*Y4WbDeimBp8&kf3dA&GqwGTh}>@2%Pp{wFajIgeE zY^`PggVZfjW4dUSL>*tbvXRN{YuDE;GNd%Hz-MMv)Xe3x_ZgTgBX=z>o#7Q+m=U7P zz!CcGoUMIXtMn|{lSdIuy{*5Qe{_yKrh8R;_lnM)Uh%dOfy-uX7;S8n8g6NAn*JfY zCd-&=Q)=horW0o9@*{0N*2XkwN5ANNZo}9&v2e)$` z`6uenIQWqBy30MvdphV=>d%Ec()6a=MPf$g)a=g2Sl*e2Gm&GZfo+=8OX!$_WRnkB z(ir>`FPjo9N}ILe*=9lEgh(zp2%4n;wIE;3nER*D@cDDs{>;G|@au6Njr;)ZBVbd+PW$T(ewWr=DU<77zc5 z$Vcy0&%E`*S7vEkHNIm;ijS0@V(xoSobK7-qk zEQn{_p#hT6F(3&+L&xYS(fXk!1eU>101bMwR-#r*0@olL+B9Gdl!MxUGSCTR2GYSa zAR43spa4v?Y|tFKKOh&>g{HwY$Q_!7E1@=o@_=SSuUmzX! z1Vy1{YxxVsgU^^kP{Lxe0p7t+D@&nK99V*s0d`0kYQ~@d2m|#PVytJJU}T6GR7YP4 zrGmz=JUUYV8F+_MVb%XERR80D{@?35?Om3s4?L_Cm;TSQMrTV_rWbt*QmB@?3>;$Z zIty(>lN>s9HYI{Sv!C8R*LMr)J-~s4UO9b6zbR%#z^JKDXuVC3kid;`hn}i=YP&_M z4BSDziy;gmQbyyAgPHT9^elZ#etq_XT^stRjg(P2Z=M!OmJ?UrLWXUW+|O*sC~)lI z=d3)Jc-r{x3a9nSto932U09Ndt_L6QlX2u7pO3!1!f~8%T5)N?6ViA6*7{A$lZNT1 z)X#nv!c-ex-t9fJa0GSYV{|-~Ao=2!QnS`|YM;-F>y2TG4us{+^-Q>Rvxsdv-srwmjoj&v`RQ>zh$uoPC7H zu=LrpeXvKJatP5qZ*;NEFf)43O>jT@U1`F4=L*im;2ATn9LSkIRH(glVULrUX0WfM zuIrWYBsIm!>2~GzpQ@%BPBRXO7Oy4ZhKl7^;v)uyTq_@&Fz4sdU-nAAo?>%m&W-tl zPk6R1C>whC26yxKF3r=9ym)^r`|MxKx*Ib-+{t^q_rqUjjb8k9k5uoEmO_`WKHe+s zvG3#kWdmM*d|-_3{i%KBn6ExPtaA5JiepIY8HbsiRY#Saz`hL6@47R2e*LPKv~rT# z?;TSmFe@KCXL7Sk+!|a8m7F6V?DT|_<^370rTNS&+V>0Q8(N_BfBOrQ3?@VMy1{SQ z7ahzWE>3y<$HzE((&DzRCTR79(9AEo-iHiO!~~VQz8UhVr>$0fs@zp={^R4bw%Y4E zBmqRB=NY10P6(;y(#)8O%S{TqQe{C675A--^-+3Nz&rVyl+v1AucR{^IZcVNRP&z} z8$xr^gl>7mQ@^q_@@OgPtxX&iXkl#8Mu@xO{LQvQIQlTHE-T01>@iJZ{;f#b%Pm{! zS=q?x_SA<WcbTr_C3psa0Ki zv2)dH2hWNv5y7n@ClAxmFju9w;Ny_wD3a{7CQ{3?armh6 zJ9Vw%nX;PW5gW8mspSn}t2Bkg4iy@mJgzFX!l8`c+NF4N_{7wmfg=kxYl_NMdbC^}6`y_KfUs#Esl9VqO-KF2Y*aXKe^J^pYVg?HNy>wgtGv}!mrf}xv4+++ zUkWdB`fey!FaqDv>A6)T83kUr)ReMV!W>;uAUYXOcImc9b@U z{A{{YL=`*5T#=BpYI|9vggLiS#MaAZr8|=Dr8`Bl0(u`DRi%t7*NwS2`8}g^Q4D?i zXv0OGjta~h7vt*rIK@8vTd&EbzV}jl>gnb*ubOP9_PksA#a`8{f$qI$vW!Iq)oBw} zjN3A00E_L2UzJ4PP6pYw}g2FW!He8ICYE?wG?JL_@Ey|v5dXHAS%TDQu7 zAB(a|>%#xKRfc=4#UPAjtq_s%z!snbNC7l(7|a1zA(){VlvHRJ0W28Bde{l5LY-wj zO@y=ttpFqV0|5+#K>)xRKmfr&E$|9B0=FUBAriO*p^nT3iL5q4U5RoJq=Sth478Mh z1waOKpiM%AqoRa$kkGK8^)M3Pg~AYAKuHMM0C3iR%zCT{e1xLFDL4SCL(d70AnD;k zggOEq4}riU;2rz~e*kc32w^xl4=91904WF$ctU3gSinO7D98wlKt%u?IyyKK1c9i~ z(E)Z470d@kfl%m9At&Gu&;*{KI#3m)Lpui~ftWA~w%-sHi~=p8rh`$SA~a?&pS8&Z zN`OD$30)%ag!&ZJ13dvyw1}_~%mi-2o$w#n2ke5m5HRQl+hK)^jt*>snP5Ih7XXE) zp;Gt{)B}}ZAgBmcCy)difxjpfp-qPvhJm^_=QjbDfEgk9~g~x^gj-x|Moxm?@H@yKBbIp&G(-DPmgIz-G6PPO-*Ln zXP=S#_pvC2sDE;>%H%-ujGZyUzaP_d93iavj+bwOv}U-LN{IX1Y^${BNpzAf{m||) zyXUDFH5eb@wT~~{@tZj{^~;g$aSJ$?{qdNl+d_{v1&zlvIemz(lhmf2DkGlg0`ue1jzyt3LExJ{5A3bANLr4@+nVY#Jvp$2CGU_KABIuB(mHaIov}1^u zr1gp`)!yjFCbedHLT-(zB%YgODU8SL&YHg4dD_pLyMC(kG23rAyi!e!wTErVjFf(6 z>EdeX?(h0+%nq0?TktT3G8A8vPwxHdzG|yUpxih%oo~B0K9Je!k!immz`d@|p-Pp@ zcJ5r;r8YzL`BUZMrkASeOV+rGnl4Q@N}RKI-VD)8YG$hVi#lT_Pa4~|R@J~X#!sgA zynfNdtP4Ju@zaPbZNEZY!oD+`C-H+bfBI_BfwO*_ZzrD%hzQKNQ29N7_Qk$8{*ON{ z`+q&vov~)d`!rRJDVZ=F6a?zCH$OSQg>t7{+M$|)6F2B;E!WFIYz zvG=I^jKMnk0b`q)-A?Z%HV;X4_P~es*GfMctlK} z?B32|2e(DCqU*9gj#@(DsNc|7fpMW~=I4IoSGQielViT(CtKbO`FVn|r#^N?ltwrB zprS>UBqA#~YHHf2NP+uQW{Nyx%TDcgQkKy{_xYWX(>XJs+X3D&&TG~wj>XY!ATvd3 zqzs9^eAcUc?m$z8#1t7hT132gBXE7l%MkB zR+kq)3n@Fz1m)CgLHU`U-_}0%Iv30lWeVMk@Tm(A%=1<)+pxW$~g@=eETdc7B;~ zWn{PP(;*I5rqPxv+Z2Xj8dttpXVlHth4^`FYKe~JyH zwlCW?-M;j^P@K173fIE$jjd%2h&i}#p)yfTo1|NAHZEnEl)^{6%GLePQ{zlqRJ6iy z>OG$!4`uir?zlNPmg2Cu8RT8d^8>z4)3#!Y=bI_vv) zn9}`-nmU35wPPd2c=Yhy5JLf~Eu_0ZowlFbco{PQi2F z2;7G52Xuo-;0zE19s)t&Gx!5SLW(2%5#gwFpe_gi@<3r@ZJuBeG$KG7#0GT%TVMxZ z1n_}PSYbj)a3q)rk)UCMz+gBuNoe4JMVJi813OUIfE}PAEQ0C|)PtEID(n=&3%Ccu zfFytna0K`OEZ{#l3Dkg%z$SDyXuQzGfRfhzC6ECg0cS8Mgo<(wZUaEAJs*AmXFaor zwh!WjJ|QOv31)>{;Whvc00I^vB=mpK8@8=bsr3*ez=Sm?w!*L!tZY5S4z$6MP$~2S z27%6400Wm`B^U=q0Z&+k0-BH$>zy}{&Pd@@o zXdIy^C>%olZwJu-|9>IK6@i@+t_jK?P&Jk|DNXVCk-DjOn89D3`G zE%BJkaBR0tXRq)HV=~$_kK}hZ{q+QL;%E_DRjcL3|h!e^g}eC$#S;*UM9G+mB{i zPEjwNa+;Qquu<;%K&980?xgdIMe}%k#{}2O?WTJr(%|M2DyuMaYgtu{u(2#~LRCI9 z*?8mrvWHxe(l6vuXg8{7sv`dz<;&tmVTeM~UQsSeGqX9eC)MMFn5~A%!$%+eSxj}v zzFU?0zCNDx3Ay>Os#l$ea6OGXC&#)es2IWYGiwvw{gjq-t8*Tm(=v0JwaW1e*wcix zmQOQ!?Bni|lQnHZGjn?2u^P$j`W{cVRZZUYWc!A>PoL~C760?=uiJM$-L>cN|M7vf z|EC8}4z*3*{o?TLxzAo4u@v`w+0edv`pcso+jqY_)}wz~OC;B@km=wubrxfklSg}6 zRGzD*DE-s4mC5l@>2Lc)B&Jm<8A+pN32od)O=;zp7gZ-xLECCYJq7o4dI!4^lPXlc znc_1lnSAwub3wDVC-$_PBc(ht26I;W+c<4W^tCyUI0ogXz*h z&6~(U{?etsZn^i0)4$0QNB-c!%{~+LA*}ukQ)qm>j!g4-%RD7Xd3ZQIC|i7F{;;g( zQjI8C+1!<-aTJ^HW`=bfzBIGf-b5$K%=)W5_r=-wsHLBK%_k9UUJd#ruhz3sRF=NS zHM)9>XqH<}c4Pb3Uq~bF+kHPiMdraWscGt^W@Z$%VOyH8CVt=STl-gCoKI%gz7*5! zWfRVqFy&VU@m}?7(~th{&pY|uXV{twgqbaAjgEsgV!}(G5M!3J6TWILNp0@^iLF00 zq~TV$-q;ve>X8;H7n077vaP1mchA)Bw;kWOxN?QL=lL77I1z zA4a0qSNuA37&AS&g%RCx%ypJ!wxE33$MCk}HZ`(-0-t-FdA@qPkiw$S=Y}&H`KeEr zYsrN~1;?&LqW8bHr=;-sD)Q9wh0Lx_loTf8E2B*GbMlE_<<&VWy-Oe8udVU!d*g~ZzEVy`r|ogh2=dGF*DGuO&kvrQyD;JR z*K5rDM?2ZZ^OWRj)pz0BgNN@-$ncxJ_F~pQ)hRakfCgIYl$L*!?MMRz1;P`XDwHJF zRTeTCF^F76;3JNZ!w6?<(}FNT2qRB0J0ni5sg9W)BRN7FB7hW-jVM4+Vju}oTp%bA z9jIlHa>##l6ewp9Q%HN%9SB&ICkSCk0hx*LL6{?&kojnA5SyqwKnw&m0vvS>GSj-a z0ynUC`R7gpYCvuys1e=BL(l;Ej6enuQ0Z7VWC%3G8cGR-73O-Z!K|w$1S|p>MG(Rk zUO;(*;Du$N22ce~fdzmXZ~#Vt6p*^;C?Fs-5^w>EBd7INi1)MLp6$bc|l0?H+nKj?hG695WU0-69ffCYsKkb>R@QICBXkOH}&szSen z(gSIa3`e}9%t5MyQNR=m9N-1vZ>?^iKU7Zu3mAni3xt8@Q18Hia2&`6h5#UF$-qE3 z1vY`9P%B}L2f3iqfmyKq0y^M07zA|GtZURzZJ;)IS8ct_{8`x~2kU@tAXy6DI z(1B(K(EG2s;NPoLgo4VCO+#DU#}D9Za0TGs51<72$RgqmhOw6Hb<)3XiC0XNEo!Z< zPzKO9e9h9o>l7zm>k7SC&-Tn_jmP7u@q#B}^6`H2&YyQDySV8yDCKg-*i+@F*Tpwh zjiJx%8vpE#raKXb9M~A|;*&qzV^_`Y3rG4i`$rd-zK(C`Y-IRkC-lA8)@kca_JwS^ z?Lvi+ALP?F#q0Usj$R+}tw1enBjMb zBY}*qC7lnvZi@A$`LXMV$<={MJI4Y^_WDUN!q9egx2L@wyGWZ;%4whAZ6t7@U`U3) z{m!1@ZdWa_FW!4Dw3NP1iMAmp7U{o?9!M1BGae9K6NizLksoyAj+XSX50QullG0jt z2WNGXF7((PO6l4y%ty(e>dSO>US2kl>h8O)>b}aa#z9G4Hk*?rq)_M`K{Iy>*&+Oj zMse|CDSOcuJl}TpKzw_Biw~IzHPlbszKnOSQPro|t21LYd&U!C5K9_cwKl^uk%}{MM z7o;Zq@v0!LB0YdGDaE~OPLw{ft=oA2bA(22(0t_21#f9C@8dWZ;hyky3QeDnL}|P8 z+B+_po$y>l9TH0^`A-K%#ZX)FJ}26ViL{ZGUlX?4W_pt8b@Y^~bQPhp&G`aNRk>3D z$;&x7-pi-;6g&Q-K{0xVM*I5m;YJ62Ueeu1r|bhK3D#5od0url*3Y2z(u`Awi}1?9 z#&tYbY4FBdTZ^}{^H)eiE(0m%&l(+ zIIG$IoZ!5Nvv=0Ah48g~fvK9(5|Zudc4gt7)fe3xuLh4?VrBRx0Q&Q-86VH$FT#riXi$Dq8UC zj{RM~KR@zY*FQSX_WASk+Z!|g{Nv-}{eS-TnAx9y626Jp#F%NfPCX~VM7y+@*|Pu9 z+?_`?eed}n|7KqZkg)HB2pSdv5iRZs`yz@8h>98z6f8oZN}(=I!VaRr1<+y}z=a}3 zMBETNrQ zMb9;gVKB{AaNXbAv0p0A4JENI3=epjNl8oc>TG5X%VhI9m8t!*EDnnpuOM2p_KP=6 zaql#aE@{nB%EV){X6ACIF7}#19pxAEukf@|3Jjf-`JNe%Zhx4CMwCBy!F4-da%Plt%PH*?LV z)>j zc1Lk5X=_N{eVw+`^>Ud0@(Bq6=MONW3EA&lzbpe(9 z9XZ>X1lu_xS1Y`iw6yIie?{)~Fm-_P=RXXpf(9RX)fp`!jnwmLb#lXA60KN3rJD-n zlWPPy3L$ZDo10_E7^P_LuFxQ|%8}?5k!|}WR8g$HXTDNS7Tx_`JjqLZQ+B>_IC|XF zM~|Jpoy2x+;@8PznZ|ezyIx%MuG#5X;>as~ri(r8!c*26qhCyn{Ws2Mb?<{&W;(Ks{!cvA{X(LOA4H( zx6tPAFla1YzSBh%!hN#DMLQu~ebyr-GwuSjY0vVjoY_;juU^)~Cdl{uxhK;mxHq5q zb=|sE^SB&&U&$KJ(u-8*$GlfYGRlJxx?xNm+1%;wY4L&auG^#ogeu8dLJr9JVNE`X zrNZ-~UM#8ln0K!abs=vw_feRD>>*-^$_gC4-R_EC&u6S+UdWwx?Z>BEV%kWe=0D@Q zdA0>lzSinp>s{v5^QWcE)I2$b*viC25#2R!-eO_{|3OyVG@^me->IF(ZJm5sCA)Mg zYtQAHZZh45b8A}Xo^;>C6srO4xTE#sC+c#7N21L?#8LcD)R)Y{+hITaasi)bKdSc+->4`lAOt>vTH!b74io{0fHxowIKgTJG6aVJ z56}yX86XxM1-f7`_zK7bt8hmK#{#stTZDTd7Wft_#`Pks3m5~pU=lc|d9(`_0)c== z7!odp27xrJwcta@861TbvAF?F;WTIsW&=t=Q#ct6(?AisB4`|B1%6;`m>kzq05GHq zY(ru&4@3%%f`z~#7>u0|yb4sqhk&By`7O{L&;qfrLW91rwbI<0VQU4f0?AMrv)bHofe=7lELKAIB*LS0)*fzpa>iSV;UI(v6`ojfP7F5s0L*r zYHa(!ML-d>hNz)La1kQ_WDDiu1`zu#j1OQfxC>E(i@+g#iy;Ei#()6L!m%Jdunkq> zQW6sipa>Si*jQF!(15NnjKJH_J~mj;Be;ug9ApdAVgSLu5WEC;;YlDCGX13e@~VFga6e(2Wl;|NM*=gyd>P`{{dAnQYrS-CXtN|7B%lzbONYd zW$8*^{Wzgj08z)!+skmzU|R-;4jR#&h>-HDs;aApLRRkRQ{9sl99(d0?d`ov&x6%2 z3#FDpQyppa%OB_3gq--{mI~J0LaQlok%PCn^$+`2R%sRDKBJm$+&DHJUN)_ww zcF5yx31#b~`xjGL_wh}KV-HU9S zG(%K!TfIh57jiG)#XT3Xhp1;}424RXnG=#MxLh>kMv3d_&Y{ueQ&x;6wCF6_xc+iD z{SQ|{l4bDH=F+h(s)uZ)^Xb8)U6=O;F^L|J@|AuckNOh&^cqR4%wnCNxeeJ?X`R6_ z>{}`zR3aO1BQv3bu{7abZ#u)U?jnmXN^Pas<_{Oy9doLaX+_TbxxBz)P);XIyo>q@ zJyN_C#=rhCEKyodA=*sm2;MKWH*OfVO%=_{>n{pl{r!XD$kay%mQR@i5m`7^bIu^w=}3Q6#{_bWYgCQS=%}Big{^~{EDEd6%oQLCC4ON=&ap(C3XUn zpF=T^WJ^p^%GDL$Xs>=v?x0%l5!rt+?OM|<-rSM4BI2NgaXxum-<2zdpUn)FF@=o} zsP+|GQ)FWDCaDG4d}iUGm!3s$i|)9-^BHt{FcB)Hw$&Gn5wrWBhR}o_N^wi#0@p(E zH96k)o!iRC_dJb9nx&B9|}c zeheoJDZL6k`%|^ctT+>uBF508J0ZIxEj`b>h`GNmB?5#7o|NWQrbVw~X>~rYTU=JY z5dXAGKI_e~&6gvIc7y%R0_vvue`t-D9`E;SwobMDxU+#DVz)?iXiE;qg4-OPE6jB( z9cTWIrsDbZW@x`PKC6f%2;aUyU3NuYN3M;aipWd#72!h-&-wWSUE7#$d)gxSg0ojt zjANfEnK1*amkf&IJGs2mRUw;r7YL&I#TH7&;sh2*voG{^3vfG$H^Jy}tfk^dMrfH1%%@(Vo?w2LxciJgN zJnwpz|B!A9Qs*R zCcZ1+|#`ed_YVMX_NTKmI_8-a)*e=|yh(33}#35q$Y_FF= zE;Va8i(fx*S=3PNQT1w^y2hs_u};1sm0BwB4`U#Jd@{FiJkCWnH!4 zcq%tTciMfzNh!9y+dh%p9Y7Co74tZvV2k}?T7xUKpy#|gecGGvLkg=y4+UQT^m~Aa zOV!~gyRO%M_2#fd`*1`@;Lr7Y-_*q2?j`8z+T)E=mM3m@jC{~od%P#}2g|=+pDFNc zc-21$26tx&Ke7rgpq)rH7HaSW3<1Po!-d{sA%!}^E66!Q4$uG!@CwQeZD8?))fnUf zDngYedqWK$!4#Mh zVuRbjGJp?O14N)bumeuQ15#iIJO@OAl2}@SP}o<(C2%Jw36X$D;0S~PLcttZsA1`e zJs?m8PC-}j3Zw#8fh?dNuG@e)XakDECJP1yJ3tV)3Mc_>{|7Pgzw%f8Gr{Q0=&$DH z1PSzl{{F-gi~fjA&8Eo7r9y>N@VD1tcTtt9V%CzSuL*AN15w@{5dllgDG{^Mjcaut5=Xy{L{bx3QMCO|M%_~?Xh_YMeVnX=J{#Qf=#V6^Ro@ycvn z2u8d9rx$#`fmWGz8cS_*^xny>W&5X}GX*G|?v*Y#1xGV9NG1TkdfmJGvr z3+K+C*PK;lP;zqYPaW>+6Yp*wx!gMS$d*|j-ZDPx^x(>0u6xH$pT(_f>DKyKw_Dn& zzd=gy6L`wxU*%P2J0x*hvxS412H}5skyCjlJI%F?uqONFa5=-S-nw>US^i8$_m#U_ z-T(F?r<8Zi)M+QKhZ$~v?GY|?HsH$)7qeK`O$AJ9fUT`CZ@0nhObL~>Cg2|g6H^>N zv`6!eVfL<8mvas8c{D4NyzDZINuFNgB$s3ly-Lzma)Pr-@BDXK0YsO*)ir`baMp|3 zzRtDE44mNVBnmOwmN2^L06WZ-Vz-PhBUe@Z*RIc;2pt18m2b>F$~qEp|4L9&qmi1m zz0o;@e&BR9x0P|ms;IeEN9}gL)_kPyutma1K4sz=XQHE4yH9nPAoIn7+IKfA91W>6 zPpBQ7BFno@8?6cCMndq*QCf=Sj<#f{4iOnt18@>9b zeZDuTXV2qZ-%ULH@#?6Q* zoj=pqNhV*rLG0T1Sm6*tuw2q6EM2ag^L0e|ht#1KYTP;i}muceI>JoRS?{*Au4G>q(!7-y4Sx=vkx*s+{G5zM~wzTd_tKT|1X8%6AUDnTJrqC3gH|;bpPyE}p)~DuH z{Kw`ZvZy4s2Iv=NQB)F}0-WloA&R3ZrlyrR+cDcCmpGzvR-=hHhjAd|ssk;?NRQ0| zrfBpU2}ZIJFHEX9@Nx2M9u!8|(Ra+B7=v-1qmO6`a)}aQN=H2rN_0n48FU9XOh^*a zj3}d!TROty$ME|bs{L~lJPYmZU2|R%H2Q-4=93Vl;VG`tC^W+Ik0-RvofJFlwg=k`u2b{2j08}6W z008y;Uy0rSk$?1`HCH!zZgsL}YbJxMdH0mx_RsP&ZBBVnbuFzI{q6TyYAY)lq2#;f zXA{n!evh?CQp_fNX(l(1Rb8p%GC0fgKQ%XK&+L7HVQWGw!tjcLv<-)E9ML(WunamO zxmF){Av*XXwgxAq_qz54oy1eZX|EpNzIYN(3Ck#2Mw_bIjTl@yBk?DnTs8f3!#^*1 z-K~jHFHT-D_Idi`HJ4Rh1y;c~of&k|>s{^3?3l92MT;*#Re4p9G#*WQa_7>Slh1!u zXJ}c^YdST0uTyL9i=vNDD7I76+;8MZYkjefZ_P2k#`Z$r6%NS`TiB}Aq?X4Qa#Gj(_%gX{bE=4N+zXIsQ3 z6Fl>jcfIs!PCN4TV{-dKNDB#W3(vCZR4=i$>?MhCZ{V-;q&i8mXoOHrXpx@zhp_TT zND4B+?Dgj4nX(868~zT zN66|4$mC^9+}DhEFHLSPBU8lzW~J<2ncbXDdl_M0$9FIic2Dz6OmLPg`)14}_xez9 zef4`WX;1vYgY47iZra(Nt#`P`52P(C)-K(o$fT4M)BWoj>vwzd-{lpH^xE5Z%l4Fi zU$idL@!eWuww=eo1rDqHisN#t^(RVn6-~SVv5~j&D#Q38q_JrhIE z7*Y${r0U(t{TFY9P&k8RV{=Y|a@_tE+^6B=6Ru>mZl3ri<2YQda7Y3a;O#LQK5MZEHxc9f^^ZR-3ag}BwkL5Eq@$BLY=iCV= z>$yu?sMRG?tBIgi)8B`adY+|~9lP;tXr$uRx6_}q<6fkH!x!-mk<)~O+$MC7jeoW zAn1eU?8K3YMBu!{sul+=ma&>=577tB<{UE<`iU0d{6-Kk$zg6o9Pro!iiDFMb;5{- za~+LEmvEvZp6Du0cf=4SM59nAoZsjn&TK5nF;Jo~XdqU;7`)IQv=M2-h>3v=vlmK> zydWT$m{DfU%!5guGxUj8PK(!F-7+6LmsHkPbXIg6RtN!0d=&3pGZW(GxTW z!Ng>S(Gc}O*s(=NrI8Nw1P`U68|XYThybF@Z~?|d4AU6FG3=t`2sK7?AOaRZLNO*{ ziH)|y6zDcwfT0iruI3p`Tp6I8m=STsfFTk+MX7}?C+F4eGiai1^s8z)>skTC@&0=HpTG=%6&hr!SSBcDDmBn zyon?e0Z|{TE@+Otv(@-&Opj{t*@lJF8sh8BEWTSYaknqEwPuz6Q?mNV$gQbb19v7~ zWj_DaCWDCJ^gGgcOJimxU*JvD9-mYYq}>voDbjVG$_n1-)p$)z%p6TA@A#5n+Fb6%Rda~C7RBT+ zvf5C2Ts$~8B2thMJN{@kg-vUac+T}rjwb0A+Y!z2p-uh-v9hc$EL4BR_^x<8BE;W< zQtlthGYY9&Vqd<%MsB}fcED4&Os;pcV4uv#cb&N+%ZvF=zMDdf#Xd3=P>JN?38}g7 z!$?u8H;TQ|cKe5Anl<>dsp`V?_P2R#+t;V}(pL~78Ci$fxRfDO9~`b!`Z_$?zbl+w zrrq=+-aeY*N_d&fS!ZU#O?=HI5tAbA9ip?{`HF*MhwmKsVN7#siLN;{RQ;s3>Fwhu zN7R3L22<CX;?u-03=!aLA1%X2qwN z1Z(7<}p)4%1HexHhV$K@1ifr7B9x@Fa~5a6F0?d!jERQcjxWY zMdZLf^}J0H11rb#6WW&c(EJf zP3g`mv*P!Jmdi46e7KQx;#U(h{tYXg Bw-*2a literal 0 HcmV?d00001 diff --git a/examples/data/styledbutton.gif b/examples/data/styledbutton.gif index 68e360104533fc3c97dd99992920391d8a3feaff..f8beffd18c5289aa107f67cf408e52835019555b 100644 GIT binary patch literal 207259 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

%K{*eHFMl{|2+O3U)130ie8?k1{v+#ytWY18 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 MDf2cVm=Aj*TD$@5A7r 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%0Dc2Js^HBipr?Oy z-vV9;n9{aecVWu9l(}Y!k1sd{15*ls4OFR+YokD=0=WC|;X^=DVU^+Et(pI1ANbc9 zlGQ*=B+LCJ@zCCP+hT%JGQPL>WBZeL;k`Ek7^BrLadN0vJ-32uh%;FU?fo+#@!$J; z=A}9*a+ckkGZ{YDzr&@AHb^;8W-dD0ug(_BltZVZAAaxa3E@%zV{R+E)4T-y=4(@N z?4Ud$81wMrvXvF?Hkuy37q$>2)pnmJ)=SJYp{!RATfZ#|)YxJjG7>RAEZ~nL>|p|lQu~MGif>G9 zLZR-I!;Fx9pN`)WXD-7_KMzKq1D*VK+6IJ(P1PdTaMp<3P<+ge`&3;J_*Jjkcc&!s zn69gmOlFhGWFjX`qb02fTg(LRRE0Wjw@d7j65lW=o_Q5^-XiTXacowIpVf&x-?Tte zHah`rv}{fdH?7!5n9?Q=aZFSV`&=C6VIw}BNVD06=ODX1iY&1eNInc}IJi#Xu1)4D zN4?T~TwdSrd2uA>O?^ZK>@MD zbqQD6HAo4YQ^F7D&Hki?`*u9@P5OFwcm?<%gWto?5!eDkN>ORjhi>y*HJDfGbvaBT@v>+A*gE zvrX7%?vzdpXCc9>fg>gi{@Tjya!=Ktyk}&<+`zRJPq^ZWqgd4F#2&NFP-{!*+n`n^$Hgv z(Api;(=us3sHsZ+^DcIt(+s1HnMtXEgQs07^w0vsF0T1SvM(pyulycyHtqFNOjDBTntJNG&SEw5)BEKI7^G}oy_&d- zbK3S2lB#n(Ww}S2qm>tfbir9l&86MZuOvH;}dacu^r0;Oh&#sE`!>9!w33AyCesegOgsuqae^aIuG423#m$qQJ5O(F&yscv0X# z0rdnf6aZ29rSMyVm2|*9fdvI36lhiW%>b?HdieGHYmYB zz3%+umI!%0d-g2wu~3MiQeS&9GC2I!yZO~WS(W{Ff4e`*aXtQDl;ixt5hfzjh0}Hz zvxzB*m5w+IcRdKE$v(BrOhtXC8s;Z;-j8xDaM$kuvFkw z&sN^5!0=6N+1-p(rNilD@+n&a8^&yv%dVa~e*Zk|dK4U<%?_5r*^(Ku{4TL%NfTD} zCRaXBYNMRN^3K{*E78;#vSp2~dNSSQ)ozDBYtOv6&buGeZSY#Gp0B!fjZC#h&FeeW z^5V2=heAo^U}D~$YZuS2lfu^qyG(?-xIb>oxp<C3*1&S3^4 zSuFu4Rz8xEv{u`)JCRoROpqjBs$GcDBWiD_B$m8T51QKb{82jVf+;`KP@0vI9$Rmk zyjgp5+kOePfjmvzGiA(nm(dM;@luki2l}mNZ9vkV)!JMx&DrsVCfA76j|DrZ1r}tx zRX!U~H1A|&Qt%lb4|5GpR~Hf1oX$9!<*DQUG-Jcu3M^>xB82TvX7gqsT?WI07&jah z#=}3Oy$IA{n{Z{feX~T8v6oD-sn&>z*CzzZ9F}dt->$fTprluUn9 z>7}ORMh|~yT>>{-FR0e+;@isOvL>eJOWo_C%cy+m@5dxJWvt>yg|9hz5N-5W6NGjN zjDz&Q?Ao7$8$vIStj{xR4Lr(Rnyju<&b60qGOHT7}o2}YO z_fBedieaxyf*`5&hzTbB}-nk z?7ez+YXMoJP$DRVprT(nj-SabyS8^;M@0nXcPqrx*v20oOtY%2DqX+C^!DPqMR&%p zD0dqQ)+vt|ulf91>RVUSLV93X^v6PZ+?!Q=0_6mU<}(dXDB+WXx{U~zc%)m|^-^1_ zlhk?{WV^_EnQU63Yy&4_v2z2R#GuxN^piMpsma|KBZIkzI?M8~nJ$s^lEZ3_*sN49 zb;%Z0V{PG?XDH@m0V!YoNxFt6+qArXwwWMVj%%|2wDT$3Ej^O5`6h%!<^W!m>7X{! zEwLo{*&f#JV%7K?ne&d>Ou@10R}j}LE3xaR?4vbKKf+6zt1`w-AIOkCG6M6LA{pjj zCX>fcvvB6fp5itsdo;8!-s+|9HQ1sAvcK;>YB=|9G8!7S zpkYrXx3a`^EJOG6silrgkB$^Jkzm2XN#|>JMp)fcSL7qRz407+H=A(1vvjs*C~dd% zhQk8-bG@mdS*%0ehyNmI#X%Jfqo9eRg0%j|*+JbFy2cnF@C<|X6j)VhY3+d84je69 zmtlDYEM~szsR0xasJ)O}1|=6x1R}l`+<2kRKmZvab;7dGhEn+OoaaFW zKo>v=Km|YxAdVJZd*K1wU=F?XutdY@Nc#}IjyWwSKhOB<_WZ>7! z{D1hz^Vcu?&wm2s``;y?8xi2}uVGOw0DDw|6j(CI6g6c?8yM61Sw$_0s`DcL3{cl< zm6TgRF^uv;i}oqHM`Jv}O1B)f$mmN^X32|p8M)hH9;Ok5z2s~iqmEM?0##0rs)Y#( z?aL@yWHuv2-#3L+jo-qz;S(xQ`3{G4zKuJg7?RVgZFu+2(je-aTR;4;l4cVy(QU)z zG^R_ITjVQ^J|S{7o&4f?r=MM&E*|-)GoIbj#hY(O#p-IJZpbgGlICum_4>CHD^^=b z2`tw1o{gHRR=zDR=7Bsx6b10T_bv)1f~8crio#_d-gM}_1B4-pJ{5(Y0uTkcrx1E7 zN<4+C{6~EgWCi^3d<-m^AshhGt3ejP3>uO_&KAW+4{#c&6Q3{=QNUAS=Jf&~j80~JzH;mQoE1@Z;L1q${v3{_cK84~^= z4;4~Te}!V-B%wk!Dg>kcN<#h5e_#J^zk=|xPvp}$xPJ&HQcr?>I}+>W zkM!z3=KqcY_!s$h_Z0~NQ{5q$D3Z;`@vSac!yY|JnqwK(B$L-73MP_bX=Ma) zT=oisiTcxtc%zN6QuEki-4q66%QQASAA*TU6NS%fTFe&`GkFuAcpPLMu*I1zc)LN; z!McV~jr$QybRxxm_q3K&y79(YCWnH84=j_!ZJaY;;}B!HGTYVo`GC#p z-Uyt0O>^qfUBMBNVN%Zb%KfB-A$J9ii<*)ZRmP*5Y#hfca4K#CQU4;}ZqYM7Axj6A zGIRZ+a|s0IXSpSZG@7Ey4nE)LSuU|>QRQNA;;ba};;4+OvN^N(j>w?4Qt#NQuApc) zVN_~)*4Vw*l|~SR$LXB?J>PEX8%eBOd$qjtIOEN^2f|>Y2VUC_9SaGQ{2oknA{M{V zLz5N5-JbV(5)8H!=qKC#B_A8IHB#YObC_y6L8fV#^&GYsUL{;K}kyye2f4Jv!Ef^H*KptUF+W z=+=sBPhQ9SQqyGDZVws1Ir({wX|IpuZVUd;n;lRzBAJKP36Q{_GT**cuN@*=^tQ%# zyc>Jh0lI#L-w1LZ85MPTU?g4-jlO#at}u}M0%0(q@$0(YWM*cLLH0}0J4i1ZEAkxc z*eXGx6mIndl@%#^dy(h1?b|`@A!bwh!F|AnwnbwlP56G zjNiHyaz!D-6x3HF?GGP4I(7PVd{I%MCjv#cv$qFzKXT*Hzm>2nt9_P6mx1>nH*VfBEW_NYSBc zwRgM&6^~xM8WKxE;0rt6fpWKR^#lnAEk9pd3&uiF*3O+j|9`76zkdCHgD3D^=6T)d zA8kX`lVK^5gpK`>`3c@nSO5Nhzs!Gr(p;~+a7QP^nD&!}@zyMj5jTjpwj=gct7GXB zcmv+Et1K%0?7#%_1`eGoO;@?ia898E>7Q)Vl7n zHA@(8eGmU5-Z}yII^SFvZ;f%MLcDbWOOyN~-uh*AA_d~D*(6cC^#wsg%{+ra(tZyhorza&6=Nh__z9kBv{T+Q-MUNp(JW0xi1S zD_tjOu*h-NE8UVTY39okO9-K}l_0Y8O3jzm=-Cx)-C9v(9+G^coV+jk6}sTVyLW@& zPV{J~JXZJlmE!42p}T%mUB!u$dwW(pD~6XmKK+->-?yDooX}w_-V;$Jlz9WAv-kuC z?cB87*KfY(&w+I-?S!}kk=Z1TCsz+&o_KzL%|+aH0f#)B$WN4d|7!I}{lvM~C&~Cc zW;4?1-Zj!h-(bL2n7nO(mm&0W9hw=GE747*pdAAE4t{s4w?G;|ChDxUO zD2YUt&XW*m+YqERP#(XKef_Yst|8(wIoI)ss*8aJlW^h|v}4s47$Qy~np9)mutDms zOlEh#H|Ud|VjavMoQ0O2B>uce|MgZ%{pCIZS7>!u&ElXmP!V{#JB!G{lxcTMLrQg4&0n zr?r4T1a}{}0zl+hS67#CC!qMf@M^Qo3-Zo<+lJwD6+9Ym8Tt0%^A~7n!De?tLIR|d z`L@21l$3$~{R zeFAXt5hE+1FvnyG+>iBvzpNu1Qsgu`ks0qPhMQ(AGA_-UMv|skY9OLG6}A11EfvBn z=E|0A8ndaD>!yH2#-*5IIhm=Ej1DX+6tblTU1IhN?a2au)!j3Z2du~}6RfiaV3u$i zoLnz#d3R`8IT)9gZl9#6<(r%IH>OExE+6tYecHNyn%$A@erC_EE;VX=R&N)vn_&~m z+*_r5JY8;vJ>qJxu13}#y_QYm*(4!Zd7{^rg4whEHGGJUu^QDAF}!75n&9}&^M1y9 z#1ghT&2i&HS4px7|59~BtsU{(?7N=9d}&?$fw0Gqrj>0d(^&JA>$#jqRmFP|Zgnk- z$ao^lG`+bK@6tUTPf^8qXwmq4HSaS~yd;_T@&}To&t;9s?KF#;fhbeSEdKg?F5PzN z_%MVL@f=-lX8ioxTx{WhM@anKKN;Yw8py6sH&d_9{|&=qS~$ZGtsFFEP+QYu<^=ct zo@c&-MoH`S=e2fQtaZ65HTxKwnWbj(av+Z79vCcX)EgJP9~s^ab6?&?EX|WJ7RL^5 zc=CS0E1J^Hc9Y8eSh_@2O?g1x@mu+etd+0YUmTQZmLKFHdh~;>U*iXhh_D>_BxB}@ zyfU|(mh_0A1G3S&WiQPGAyJZm-y*2kcBmryDC>fUTInIm0N$T0@EHo*iFas}Q?yu` z+{!UET%Z97I z@$VY^PF@bWbzo*t`&gBC%H;6bll;XG16ckz&FymgBv&c$eb>#U%J0M5|4Cma7wo&g zS#jmDSnt&iEO}xe=K;NCX!BXN0&Y9ea+(BYuVt{b~6A|DJTSq3dv$M0ZvVdp=vk+hw0B{8N z5YXVB@yQpTz@F0=un4g30LKxa784T_tE#GCt^gS~aM**d0k<%?i@_>6IFZbnH4Es5 z;*m)>?}6h8kd94lY*-(MEVP1x0*F9^Goh1{6Yz`q`T3B-1C`<8#ftz?!aNni4!(Z< z3MWS3@)-<9X=$mVqN0h32@sHVb#+iT*lac&PXSv5BW!7DX`mrPb;0TA>6%X2w7IdDvciy@47;atk+^Zot(kv=;% zHkQR=+1lFnTxG-926hHiRaK+)ke{C)oJ&RbN4QAB=@d??@O&Y5r)i}3=6G*zZmx}u z4fG2EMg+@jVc>G_WMi8!Z3oV=V7>zR1#rz2Ci}3#+;ia5HxWqkpR0oZGe7(HrdK)o z*Jc|8vOJO0w(>{QD^l=two!=t_r@F>)vau;*L2BNh1o_SnWKS5WRyx_wxMo8BCFd7 zlFtOUZ;>!**nLHWS2){HCyV3twAM?_Lt@=zD_!AiqewX0U}Qh9ahzpOOoiEofQ>8zSS%jQ zHYoEg`3&aI*~XO!;%`%1Zaos17EO6~TgljGVY+CxF&$@NuF!183 z&1X}*6UB(kz^G=CJx!^zpOD#mRkGT68@gS@31a$)wQREqk;%br!#E|`ZnrV~qC$s* zPxoqTggLLJlWmu-`E4yP?VyXXo}Cna4TB*S?c#D2vk-R3c4?Gwvbm1>Y!V({??B3< z#BynQ5r|B~92gZPGHd#B%ZqJ;Dl1&)AF9lLm3z9fmsH$EOUX{`IFyUia<*zz@H|#g z<>fw3c}c}>H*KqSRj%fcOcK>S@Ka1)_u^GNR~vcvMJ#=D&Slf$JGD=3T3HEh}*f>Jua> z%@H>m?^c}2eJ6qAF`aJ2(cX;ToO7q}3^v0VhtW1*$KT(!D5epSFAHLhr_Iz5)7VJ; zdyerYC@0ep|Wez=AIr z6TnUvSOb7z0eA<9916gU0JI$p3q;xuE(W0I;BEjL!(dVX4h3LC0G0&cQveIWAn8I! z13eJ+IiTKPY5+HVC^X&$cYK?ro!t6~ziq`>|FEDS(V_2#*Oz{)FXfjiXGPgb=Y!KaEVYhhe&KQ2{LXiQ*Y17{^LCP-$4f-!;gY>_d6l=K2px9mLk`?ob9(XwTH5#YI*r*3%dg(N=;Yf6WkEt^s3+aXd4>7 zJ7s3J1&tpUbCbfz)O86Kth>2QFY{X8gHNLeD0$QeCe}|joFq;wsVOlYo!36qL)=lx zX2Fvw@04~f4$C<8nU8bqY*igGEx~`mk195=qi_X$M6R^p&}Byz5k=g3#4lEQ#{fQ& z5XolHodtqM8Dg@o22Nj$6_RSzZGuTJ+N~R!LAcEA7gs%If+z-%L$(*s*X@>6=~lwT z?Wx^3+WfIT&E0lnWh8D+<=fKmdM}IZr&XI^QiRbh;r2eABgwR7!_LqmQU655eFt)& zy@8yN#ozo6K)OU{G_X7Xrvvaf00#suguw3r91Xw<0S>d^XaGB{V0-|s2jFM`#s}bo zAPnp(_7x>@fnk9V?9pSxmMAzK?0q-^pbv-{NEhT~fwckn9e}$5C?9wqfY|}q9DqLp zSQ~(hfyV*p83bg3sR39I2#=zlCc%IJKw`1KF}j88zM zTh7&tdM%R$i-%Pg(Ln_l&a~ot)aZFq&2nVN*$ox93goPvOq}6Z@}Q^%TUDcZgSKYZ7z_}~dNS1~Y>%$)J5}GJ)EDyX zO|CYbOvjOGS)5uq3oUd1oVmTe;Z~XHUdLnMZRQs5MWEdYX#Hb#>zw=c^GH;PBu{trn6vyP?ag^D3@&-@w z`#a_JE!C2wZPRZgPa77imnQketw@%z&ibABrLbiB&Z`d2MJrX@xEe7hLKKgX4UixR zxg~!rOqcZ<>?7(7@bGdxma3EKWo(-&z(Bud+B3$hPfI6Hus2(fasT`6YhQM%On zm=D55pNLmDgyZYI@VDk3^upoq#+P|(u`ay8c6@Wmm2{V06q%no9G18@)A*jQpRS`m zOlqUJ>Wj83*gF*Fogmt9_Dhe8l^5b!A!vA0bhlDod8ic=-HhGpDM>6jB)bha9#Ms< zkGt@zFTA2)8}YYDSed%pDSNbBDP+x}i&7h#Z7tW(5~+q0)i#m~wrCC44y+#_+RWBX zZaim5_DGVS+RJjhFn(LIM|`$ViG!R2*{6v%wUaI8PN1);u3xGh+#_SYhE1#|Pq$__ z&?W6#Xpv#K(I%X8@Mx?2bm~~!(hRrtHh+g|bU~_95%d>81);HQTmJ^LbqBRpRMNV> z)8P8o$%GriaE}k4A=s~1AECz9&edyU5)9C9S=rE5*vrk*-`NXV)zf<$g4rRB*Sli! zQ-yEoPTx;A*se{(VVxr&iY-H*2PeLQ82~682sUh7?&KtbwJcD(%pHZK!jEb^|Dex0|0$K3Lz>a_&N%f})~h z=$##+YdRUqvk@Vv+GWz3xuDtb$AOfJN1Vpy?TZjOQ2 zU;3k7Sw#h;ouX#y>*qiF@@ve-wtwJxYe%P#ub=nM-nHvkQ&m-e4y3Q|^u2y#^5*Tn zk%=##Zd8_5RA%MmaHzQ2_`E-c{u#yZpX+=6F4gocj_e$2^{?KjaQRdr2dn!%4WQ&qW#o4H3- z4+V()NPqek;MfyfTYgTCs@;I;Z8+FK+o7_2*^dth#wPf`nn~GNMZ)-xevMZXTv1tMqg!N%^+C$_(sOW2)*K z)GV<)SxF$KP*QsXe^tFg3oTYNS-D-AXo3qSwMWRy&wfDCa-#KNDOrzv<5#*yoYS&L zrWO+eBx-O*F)B@X_6)<&sTDD3f7CPAsM9qOhoz0hQU3b6aF3PCA1bp626Oo`zlYf# zEGd-i40)O3Sr?^S6hJXa3EXQ-VV4j*x8|fHZls3fH<_mH%0#0pO2uUc9IF?BM;)zR zZo{3>a!Qoh$YFA*3Wrwb7nC8K&Uvl4UiIg7d7SrpM7xUk!^{=Dn4nx^yeL!$&F zX2F>5dtc3uk6xWP>~k?mo`x=sX*ir@et0x>-Icj-Ui<&?4X;{_x;{9t>Pb(vu~13# z2doW6br;pI$R(v!H-E|E#J0>-_L=bq)-r0^W*FW+n##_nnvvySI*%Q&q_WLiLpCwq z@dgVr@v7g)WAsxbcfi#7lC zk;mheRaJLJKXDQhVft9`=$(Jt8&M}48rTR?VRK)!^#^t3Xldz%x;p4#za1HYb$)1F zL$5l&pa2@x(5{B+0?X`&^YeGI*>x8$4!(Q|Yk}am4WRy?U%vvV5AqHE{H9g63=cNQ zyM)17AQTMP5`=w!SQI>azD{-84A=>*=$(Z60o(C+`ud;`4NYk1QbP~>4?Z87)6k`c zO?f~6pp48+QQsP_2|2mBaF2jiG+7>~a$u7k$_CU7I-LOq0{?}k>zw0B zh)n2xc=h8@!xc7R-q)%A)%}gLB{Y{`3V`7y2Zooy{xH0ZG+Ozn)AwDlmUEbzXVCz8 zRo#)BMYME0roxF?eBC|4F9qZ1>yS$rOO4)~@V-JO<4WDhxRA}};odK>bp<=0l^%U+ z%ihIUu$@?OLbV)+BOm$pV)u#L(u%lcF@Mq~o~9~t!t-`anfdMcy7DS9s?7Q?=eX*} z;>91iY3j13su5LmX$e$}fpPE;aeWDk@9MCnBF67LR-P^RaC5s^!VJEos?uP7`aBj$ znWC_^XsPsRtf0@C)*oB)sK|q78NmdfwUMmz<}Q@d4fbd)%IR zB*)B)wzQF%OH@|NHNQdBaknBf8h1HH^Vqo-`u2+Z&yVtxQZGqNgy+uQGuQjzDyzKb zhrH|ND&|8M`zGn@t(V%!t)q!e-z^)Zl@r-fqH}ng=UsZfDK|Eblim6Kgyq5Vl=Y$%(+8{5AwEETs(1R__Nr$Wn*3U zV=fmwboIaTdF=kW)1xOY#wd(asPc7-ahHr$Bn%$V8{Ow#icytu{Zp>lE$~u|lvrdZ zy%l?A&~RR?B>!|9rkzX+p4ef4m++)wVp4|YoBSQaM~@D7N+_9PQjP;u`cjo}`I+6Q zlh=aG1#2vpNL`ZQOE~X4dMj9r+Z}^vQBjk;_gf2a5TWt2k^DyVZn-%!MfC8eT69mx zO(mN#=NWr?iE>LUdp-)1m-Hqs+A3Gw5D+gvJn@w4n%g50bu#zav%FO&=02aY@f-g+ z??-`oapd1=|I1FrS!!T4Bo-o-f3P}L+1+W*<02HR5-%}HO z0d;`^A5;*Sfx@g4CY~_&1m*<*7T{k1dx0VW%nOV=VZ;d&OqguKG!y2S5U?N`V#2Tz zrj{_lgux}uE1?##*=(3s!YmR-lfs~e%1Rhh&aAwZlam9ZMwmjvI1CqlPDvJE~iV_XpF1r}0 z0d08qYW_tQ(31EE6=O%S>O~Iq~*M3-`r>y>7~H20HRCEZ-}MPj;ivSj=lP zjN5RJf`!*BwdbL{_?xM-BcDd7*g4`JTE(v`u-TS^y{Oqh z&}PssgruzB+3lyEe-Tr2tN3>K><;fw-o5ysbege;{jT1dRaYQ2nDP6YM!i*U?Tksg8JCZ95GEugzKgC*af}iwh+MFWP zierW1=zHhb?92{1uwPR9!R`?ECzuqty`ywGK$M%i}quYDHUraY3$L_&T%j21&XHBY#Sv z7b96>AmP?a?;(jpmEk2jTO3|iZEvphOFMC+^5F5Phj~>eJdVH0&G`d=KeyU_t{!%( z!00k4M8{?Dk%9M88ZX27t zIyMRD*5NCi!U2{VgDgQgbg@NDT%227C##?+uQFB7Y*u_uzP6DGG(F+f+jG3GytB{F zJ1Agv>>q<4%oo_!Jsnx-;MDnU^5*+VXK#O+93!QuYL1;#)~Sn}f>L|$00kA*Gk2fw zJIg;(-&uIHbY(nSNo8tT$L+1T1qaU6_uRhYAI%EimdM)9KFaTGdi(Y4gO@gT?gJB( ztF|S=nx&nmpP@N8F#Y=R>k0e^o&fm<7+KKMQDPE_nuus-)rA<2NF|bKMPh78lbCK; z7PL!*gg8j|2uUPK$)#J+M`A;%iYV2mn$c~WB1e#5yQ$;&yQy>)ueNFe!e`(%A}$|K zbmGhn!;s#S28#R=@oW}apFBk@aO!L{S7uEkS;o>L44chv#LG#huU+jYNUN2)kbT@> z#0Fg;lx3goAK?@D#H__b{UP;uI)2JVRxm*v6|9{htrTgAIB7=rW1e@~@v+|yI!*br zpH}n)RW_=Kg%%N$`lS9^yZIguV1eu*7}5}>LDhr)7;oS+yyh?+DdKm+Kpav$0;6Ie zIbd^U7BtOZNFBE;8^+l%<37=O8|L6-3I)8KK^BI;2-N^E90e62!U?i`>3y1H&aTkP(K zNmg>^($%b43v5aoI{#?xgf1EQEeEfOefVKA`_V-9V_{JHd}n`Xg>BiBn}41USkuXC zcc4G!qGzRp1_ZBITPVY zY9WWf7u>s=a3_!67!h+GD2L6h+E zr~u>I2F;DdGZ|+{c4+oNj+c@%@97;aJ$%UseDA;YRm74^Gd>t7XybY>rK_8?NLt{l zi0+yr_5L#ZLIxPNTxV$|2r5cojOhBc%cg!~U5E^KenzuYCSMZllSrLrX4cWi>F;3U zjpfLl0{PY{oik>Q5TpsJ>=n)mWD9&ClD251ibaw52&bf!Ek!YNrs37pF>W&5Zwt>! ziNt^GFLi{kj)4Arf+=jxWul=%OK#@09fO|f_~!Bz=uv!g;~s-^y0j_t6v7I(;w(Sj zl5)ow;ZxM!Gqi~j54a`SVk|{$-6pZ-r&y3GHw8PMqF3s$%CI^SJ5rHxGmm(-KLT;v z5$dd3YrfC*vhL zjHjh4;pm=GHY-CYe4LM}>R^)$uGb{RVcCVxo{AN>X?$6Qz@r8zNNl7aLlM5NT$(Xi@aDWA)!+m&CKn#JF{&PEt{vL(T1?WY^XCQRuf9>N zaE%Id5>yV978*s+LmK|lE419#XM+hpIQHuz1m^r;+P`W|OxkZ*a8HTrnFQ;8FzT11 z(%Np`1_OVPW$@<*1AmeI{%{W)oczJYA5J(;Z@z#VKS=J2kADIS1XldYQ>XIEtJdFq z2Oj>Ld*6W-d^|f5T=&7uzkB2hMN$$R{=v`R)M8fYlMg4(*MSa;i;IJ#-yIkP2mX__ z7vYKoAm@d~7BJxlD}E4ms1A?<0D}DR==P81va*bs_O!UTU1ltljmdB<)J)Y4wHyoUF~@q{IqiX-iSRNw@OoXi!a?g&2|53 zFC6)5<+7zdgqE5$PdkoQJX_1Y5U!}iH^@m@c4eg^qfc@ooK_Pj>9mZ&tPVvn{R=jC z)S8Cy7togM2)etz|77+Y#WzC--%hz^b>2$bwn;lj$33stM=EDy)TQ##Lt920h-@<@ zIhnHwOO3hRvHs){fek-XTxlA0PDan(rx#SXRr8abu?+LLMc>F=xq?Uro>>0&g4%(! z&8I`c$lRWl?b&K$SEm%PkJKTTq2nn{+m>b6q@tDGJfh>GZkmK+0|kY@ z(msi6z9A`6I(L~4^7!#{D|V`rF{I?8g(IuYY~~?HSxn%CqpC7A9dpV1LPEp!UVuyP zM4F6>hsF6s54lu&&`4FeNLf^<(cpB)uBVk!&5T_miAm|>3d z20ap$-DCv=iYYV?JMEC=88~sjy797oq4&sqF}x2?PBO~Mw@Ie^^1&X06TKdOGfJ#_ z`Bd_Vv%*Yu%5zs+G9v8d;Hx?K%;&jw#ov}VWMmleX9TFea@NFC>mAD@ zvZM7Y{VO{v7ti6p$~}g+5O@)4W%nK3vvad)GFnToCZQyqsm7;`kKc=4+@&UVyast3 z_B>&`?6ns$n)*ac)yNqU_6Mzhshu~Vzs-2@OO><3HMgX-PrAl-mTN1TS_MDdGgoJ| z@fk72St%|1evu?3$%y%JXY;KVI@~ zS#a~umEHDtEEv}v6yK=bu;|%uvEr`j*NxX(UFOf~y0C28cvMJ~`?$aFvS(+nA2f2X z^#H+%V3DDK?C= zVSWvRY?xoe6dU$(Z;yO}l`NQX!z>#P+c3L;88l3^VUP_YY|%0n7}`QXfw?wJuE8(^ z=GrjJhS4_6vPGk9m~p=t9E4H=gKQXQ!*m;t*)ZL%yLb^`f6-_gR-Vd@Q2Y?x)k zTpniGP#s{jEt+wQ>~UeD4Fhf%WW!J!&hRkZUfMAX)9vq1>(~GM|9%2Lj^%$PwwI4! z#MB>&?J45M)|b9VHLFdbc9Vr3@;VNCAEXPTn#sN=l3mW|EIMeu_SJ(xnN^FAU`cA@ zpS%Zc@XnsKZ9E$`)C-7e7JA56Eh(e+b!@t}Pd%V9b5Esuk|do-)F`kCJq8}~N28y0 zob9?(yQM6f%-zr5t$;Ty--38BxlaGfL%z}e{Hs{TlT**GrcNhTGk7T&eeGitz8ly` zHf5d1$Fk~Xg_7nHo5%u8;YNA4XsLg{Kuw?5&XFr38$ZI(0Y8ViDFDR_h-P~ zd2BZ3F5&%nZ(zv=84uDo#A*0CPQV4`?_cqDf**(Gj8JP$3+6|Ze|V?4xw^;<$pldO z_9~wPQ&(`vYMTjige_UjmEsH1c`5;aj;6410}6%7s++g;rK+V)Fw!;l=S|PhDQ%mU z`Fd85eaK=T&lEZRSFIXxhHVUjBzmAun>Opngb!yXk!DNAU1D%BIbzh~Jsq1kjz}j@ zCQSmDUmq5=ejy`b*Li_@vW+dA$oIxHLj_QyFpp%Lmnhs z<`8>8@>`x%PylZF1V$iJv_`^lI3|-Q^asMB-zghkmp0zpqPuBj9>ZY@^+;glX}v7@^hYuV7P1E#K$n69-g;KBzyW{<44e||%z zLuV=QX6yG=9G(C;VZzIf7t!h7Wdux@H(jY=7ui)p6UQKDXu0}(*49(hO#)A9Q z4u8;3EzRG$HTDMXsv9fbnHFZ=g;!U9fZtVkJhbk(r;MXGYo=$PEGrHp$)}vK+_2%% z_Ujko9ICPt9Gi_L(*;=_yXXz2*rV6ald91KXiT(90WDzRg+)P_O$*l*IP}90;VQ+I*HBKN0zsJ(qE6o(lR)J` z#9>hj3>9Fd7qlC;u71);KqkT29r`=Kw?dTyMF!c0V>fIjh(MzM-=gyC>-~BH|B)v^ zZWehN^TmW-#>pdmPD2_|{kxYj4hLoj<>ez9j(b#Pw*FabTEfrLa>ru_&9q!`D%kq% zdQ3taj-YmfK4PQUl`j!T3Gfii=uT7;)0zn2MR^u$nCf6m8!VMf*z?5R>OGcJD0Mn| zel*VjiK!BG`4r|5$SN(@T3~~cr11~0IFz$Fh>DjW!?3$BnL^hg>U8FzR>akGO%0Ac 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 a(J`Eb@hNef!0E{`F|&i_c*e&fWBw0UspvNV diff --git a/examples/requesthandler_example.py b/examples/requesthandler_example.py new file mode 100644 index 0000000..ef78058 --- /dev/null +++ b/examples/requesthandler_example.py @@ -0,0 +1,149 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # +# # +# This script is one of the pyqt5Custom examples # + + +import sys +import time + +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QVBoxLayout, QLabel, QLineEdit +from PyQt5.QtGui import QColor, QFontDatabase + +from pyqt5Custom import StyledButton, TitleBar, Spinner, RequestHandler + + + +class MainWindow(QWidget): + def __init__(self): + super().__init__() + + self.setFixedSize(400, 400) + self.setGeometry(100, 100, 400, 400) + self.setWindowTitle("RequestHandler Example") + + QFontDatabase.addApplicationFont("data/SFPro.ttf") + + self.setAutoFillBackground(True) + p = self.palette() + p.setColor(self.backgroundRole(), QColor(255, 255, 255)) + self.setPalette(p) + + self.layout = QVBoxLayout() + self.layout.setAlignment(Qt.AlignTop) + self.setLayout(self.layout) + self.layout.setContentsMargins(0, 0, 0, 0) + + # Creating and starting the RequestHandler object + self.rh = RequestHandler() + self.rh.start() + + self.btn = StyledButton("GET Request", icon="data/dlicon.png") + self.btn.setIconSize(33, 33) + self.btn.setMinimumSize(178, 44) + self.btn.setStyleDict({ + "background-color" : (52, 199, 89), + "border-color" : (2, 199, 89), + "border-radius" : 39, + "color" : (255, 255, 255), + "font-family" : "SF Pro Display", + "font-size" : 21, + }) + self.btn.setStyleDict({ + "background-color" : (47, 212, 119), + "border-color" : (47, 212, 119) + }, "hover") + self.btn.setStyleDict({ + "background-color" : (89, 227, 149), + "border-color" : (89, 227, 149), + "color" : (255, 255, 255), + }, "press") + + self.layout.addSpacing(80) + self.layout.addWidget(self.btn, alignment=Qt.AlignHCenter) + + self.search = QLineEdit() + self.search.setFixedSize(220, 41) + self.search.setStyleSheet("padding: 10px; padding-bottom: 3px; font-size:16px; font-family: SF Pro Display; border: none; border-bottom: 2px solid rgb(0,122,255);") + self.search.setText("https://github.com/") + self.layout.addWidget(self.search, alignment=Qt.AlignHCenter) + + self.layout.addSpacing(25) + + self.panel = QWidget() + self.panel.setStyleSheet("font-size: 17px; font-family: SF Pro Default;") + self.panel.setFixedWidth(350) + self.panellyt = QVBoxLayout() + self.panellyt.setContentsMargins(0, 10, 0, 10) + self.panel.setLayout(self.panellyt) + self.layout.addWidget(self.panel, alignment=Qt.AlignHCenter) + + self.panel.setAutoFillBackground(True) + p = self.panel.palette() + p.setColor(self.backgroundRole(), QColor(250, 250, 250)) + self.panel.setPalette(p) + + self.row1 = QHBoxLayout() + self.panellyt.addLayout(self.row1) + self.row1.setContentsMargins(10, 0, 10, 0) + + self.row2wdt = QWidget() + self.row2 = QHBoxLayout() + self.row2wdt.setLayout(self.row2) + self.panellyt.addWidget(self.row2wdt) + self.row2.setContentsMargins(10, 8, 10, 8) + + self.row2wdt.setAutoFillBackground(True) + p = self.row2wdt.palette() + p.setColor(self.backgroundRole(), QColor(222, 222, 222)) + self.row2wdt.setPalette(p) + + self.row3 = QHBoxLayout() + self.panellyt.addLayout(self.row3) + self.row3.setContentsMargins(10, 0, 10, 0) + + self.info_status_d = QLabel("HTTP Code:") + self.info_status = QLabel("0") + self.row1.addWidget(self.info_status_d, alignment=Qt.AlignLeft) + self.row1.addWidget(self.info_status, alignment=Qt.AlignRight) + + self.info_conlength_d = QLabel("Response content size:") + self.info_conlength = QLabel("0 MB") + self.row2.addWidget(self.info_conlength_d, alignment=Qt.AlignLeft) + self.row2.addWidget(self.info_conlength, alignment=Qt.AlignRight) + + self.info_elaps_d = QLabel("Elapsed time:") + self.info_elaps = QLabel("0 ms") + self.row3.addWidget(self.info_elaps_d, alignment=Qt.AlignLeft) + self.row3.addWidget(self.info_elaps, alignment=Qt.AlignRight) + + + @self.btn.clicked.connect + def slot(): + self.btn.setIcon(Spinner(2.4, QColor(255, 255, 255))) + # Add new GET request to the pool + self.rh.newRequest("GET", self.search.text()) + + @self.rh.requestResponsed.connect + def slot(response): + self.btn.setIcon("data/dlicon.png") + self.btn.setIconSize(28, 28) + + self.info_status.setText(str(response.status_code)) + l = len(response.content) / 1048576 + if l > 1: l = int(l) + + self.info_conlength.setText(f"{l:.2} MB") + self.info_elaps.setText(str(response.elapsed.microseconds//1000)+" ms") + + + +if __name__ == "__main__": + app = QApplication(sys.argv) + + mw = MainWindow() + mw.show() + + sys.exit(app.exec_()) diff --git a/examples/showcase.py b/examples/showcase.py index 925a3fa..8a15d5e 100644 --- a/examples/showcase.py +++ b/examples/showcase.py @@ -1,5 +1,5 @@ -# PyQt5 Custom Widgets # -# GPL 3.0 - Kadir Aksoy # +# PyQt5 Custom Widgets - Showcase Demo # +# Kadir Aksoy # # https://github.com/kadir014/pyqt5-custom-widgets # # # # This script is one of the pyqt5Custom examples # @@ -11,7 +11,7 @@ from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QVBoxLayout, QLabel, QFrame from PyQt5.QtGui import QColor, QFontDatabase -from pyqt5Custom import TitleBar, ToggleSwitch, StyledButton, ImageBox, ColorPicker, ColorPreview, DragDropFile, EmbedWindow, CodeTextEdit +from pyqt5Custom import ToggleSwitch, StyledButton, ImageBox, ColorPicker, ColorPreview, DragDropFile, EmbedWindow, TitleBar, CodeTextEdit, Spinner, SegmentedButtonGroup @@ -20,18 +20,18 @@ def __init__(self): super().__init__() w, h = 950, 630 - self.setMinimumSize(w, h) + self.setMinimumSize(w//6, h//6) self.setGeometry(100, 100, w, h) - self.setWindowTitle("PyQt5 Custom Widgets Showcase") QFontDatabase.addApplicationFont("data/Montserrat-Regular.ttf") QFontDatabase.addApplicationFont("data/SourceCodePro-Regular.ttf") + QFontDatabase.addApplicationFont("data/SFPro.ttf") self.setStyleSheet("QLabel {font-family: Montserrat-Regular;}") self.setAutoFillBackground(True) p = self.palette() - p.setColor(self.backgroundRole(), QColor(252, 252, 252)) + p.setColor(self.backgroundRole(), QColor(254, 254, 254)) self.setPalette(p) @@ -41,7 +41,11 @@ def __init__(self): self.setLayout(self.mainlayout) self.titlebar = TitleBar(self, title="PyQt5 Custom Widgets Showcase") - self.titlebar.setStyleSheet("QLabel {color:white; font-size:13px; font-family: Montserrat-Regular;}") + self.titlebar.setStyleDict({ + "color" : (0, 0, 0, 0), + "font-family" : "Montserrat-Regular", + "font-size" : 14 + }) self.mainlayout.addWidget(self.titlebar) self.layout = QHBoxLayout() @@ -69,69 +73,51 @@ def __init__(self): self.menubtn5 = StyledButton(icon="data/dragdropicon.png") self.menubtn6 = StyledButton(icon="data/windowicon.png") self.menubtn7 = StyledButton(icon="data/codeicon.png") + self.menubtn8 = StyledButton(icon="data/spinnericon.png") - self.menubtn1.resize(70, 70) + w, i = 60, 30 + + self.menubtn1.setFixedSize(w, w) self.menubtn1.setIconSize(40, 40) - self.menubtn1.borderColor = QColor(245, 66, 126) - self.menubtn1.backgroundColor = QColor(245, 66, 126) - self.menubtn1.circleColor = self.menubtn1.borderColor.lighter(146) - self.menubtn1.borderRadius = 14 - self.menubtn1.hoverLighter = True - self.menubtn1.hoverFactor = 3.8 - - self.menubtn2.resize(70, 70) - self.menubtn2.setIconSize(40, 40) - self.menubtn2.borderColor = QColor(245, 66, 126) - self.menubtn2.backgroundColor = QColor(245, 66, 126) - self.menubtn2.circleColor = self.menubtn2.borderColor.lighter(146) - self.menubtn2.borderRadius = 14 - self.menubtn2.hoverLighter = True - self.menubtn2.hoverFactor = 3.8 - - self.menubtn3.resize(70, 70) - self.menubtn3.setIconSize(40, 40) - self.menubtn3.borderColor = QColor(245, 66, 126) - self.menubtn3.backgroundColor = QColor(245, 66, 126) - self.menubtn3.circleColor = self.menubtn3.borderColor.lighter(146) - self.menubtn3.borderRadius = 14 - self.menubtn3.hoverLighter = True - self.menubtn3.hoverFactor = 3.8 - - self.menubtn4.resize(70, 70) - self.menubtn4.setIconSize(40, 40) - self.menubtn4.borderColor = QColor(245, 66, 126) - self.menubtn4.backgroundColor = QColor(245, 66, 126) - self.menubtn4.circleColor = self.menubtn4.borderColor.lighter(146) - self.menubtn4.borderRadius = 14 - self.menubtn4.hoverLighter = True - self.menubtn4.hoverFactor = 3.8 - - self.menubtn5.resize(70, 70) - self.menubtn5.setIconSize(40, 40) - self.menubtn5.borderColor = QColor(245, 66, 126) - self.menubtn5.backgroundColor = QColor(245, 66, 126) - self.menubtn5.circleColor = self.menubtn4.borderColor.lighter(146) - self.menubtn5.borderRadius = 14 - self.menubtn5.hoverLighter = True - self.menubtn5.hoverFactor = 3.8 - - self.menubtn6.resize(70, 70) - self.menubtn6.setIconSize(40, 40) - self.menubtn6.borderColor = QColor(245, 66, 126) - self.menubtn6.backgroundColor = QColor(245, 66, 126) - self.menubtn6.circleColor = self.menubtn4.borderColor.lighter(146) - self.menubtn6.borderRadius = 14 - self.menubtn6.hoverLighter = True - self.menubtn6.hoverFactor = 3.8 - - self.menubtn7.setFixedSize(70, 70) - self.menubtn7.setIconSize(40, 40) - self.menubtn7.borderColor = QColor(245, 66, 126) - self.menubtn7.backgroundColor = QColor(245, 66, 126) - self.menubtn7.circleColor = self.menubtn4.borderColor.lighter(146) - self.menubtn7.borderRadius = 14 - self.menubtn7.hoverLighter = True - self.menubtn7.hoverFactor = 3.8 + self.menubtn1.setStyleDict({ + "background-color" : (245, 66, 126), + "border-color" : (0, 0, 0, 0), + "border-radius" : 14 + }) + self.menubtn1.setStyleDict({ + "background-color" : (245, 127, 167), + }, "hover") + self.menubtn1.setStyleDict({ + "background-color" : (255, 156, 189), + }, "press") + + self.menubtn2.setFixedSize(w, w) + self.menubtn2.setIconSize(i, i) + self.menubtn2.copyStyleDict(self.menubtn1) + + self.menubtn3.setFixedSize(w, w) + self.menubtn3.setIconSize(i, i) + self.menubtn3.copyStyleDict(self.menubtn1) + + self.menubtn4.setFixedSize(w, w) + self.menubtn4.setIconSize(i, i) + self.menubtn4.copyStyleDict(self.menubtn1) + + self.menubtn5.setFixedSize(w, w) + self.menubtn5.setIconSize(i, i) + self.menubtn5.copyStyleDict(self.menubtn1) + + self.menubtn6.setFixedSize(w, w) + self.menubtn6.setIconSize(i, i) + self.menubtn6.copyStyleDict(self.menubtn1) + + self.menubtn7.setFixedSize(w, w) + self.menubtn7.setIconSize(i, i) + self.menubtn7.copyStyleDict(self.menubtn1) + + self.menubtn8.setFixedSize(w, w) + self.menubtn8.setIconSize(i, i) + self.menubtn8.copyStyleDict(self.menubtn1) self.menu.addSpacing(10) self.menu.addWidget(self.menubtn1, alignment=Qt.AlignTop|Qt.AlignCenter) @@ -141,6 +127,7 @@ def __init__(self): self.menu.addWidget(self.menubtn5, alignment=Qt.AlignTop|Qt.AlignCenter) self.menu.addWidget(self.menubtn6, alignment=Qt.AlignTop|Qt.AlignCenter) self.menu.addWidget(self.menubtn7, alignment=Qt.AlignTop|Qt.AlignCenter) + self.menu.addWidget(self.menubtn8, alignment=Qt.AlignTop|Qt.AlignCenter) @self.menubtn1.clicked.connect def slot(): @@ -151,6 +138,7 @@ def slot(): self.dropfile_showcase_wdt.hide() self.emwin_showcase_wdt.hide() self.codeedit_showcase_wdt.hide() + self.spinner_showcase_wdt.hide() @self.menubtn2.clicked.connect def slot(): @@ -161,6 +149,7 @@ def slot(): self.dropfile_showcase_wdt.hide() self.emwin_showcase_wdt.hide() self.codeedit_showcase_wdt.hide() + self.spinner_showcase_wdt.hide() @self.menubtn3.clicked.connect def slot(): @@ -171,6 +160,7 @@ def slot(): self.dropfile_showcase_wdt.hide() self.emwin_showcase_wdt.hide() self.codeedit_showcase_wdt.hide() + self.spinner_showcase_wdt.hide() @self.menubtn4.clicked.connect def slot(): @@ -181,6 +171,7 @@ def slot(): self.dropfile_showcase_wdt.hide() self.emwin_showcase_wdt.hide() self.codeedit_showcase_wdt.hide() + self.spinner_showcase_wdt.hide() @self.menubtn5.clicked.connect def slot(): @@ -191,6 +182,7 @@ def slot(): self.dropfile_showcase_wdt.show() self.emwin_showcase_wdt.hide() self.codeedit_showcase_wdt.hide() + self.spinner_showcase_wdt.hide() @self.menubtn6.clicked.connect def slot(): @@ -201,6 +193,7 @@ def slot(): self.dropfile_showcase_wdt.hide() self.emwin_showcase_wdt.show() self.codeedit_showcase_wdt.hide() + self.spinner_showcase_wdt.hide() @self.menubtn7.clicked.connect def slot(): @@ -211,6 +204,18 @@ def slot(): self.dropfile_showcase_wdt.hide() self.emwin_showcase_wdt.hide() self.codeedit_showcase_wdt.show() + self.spinner_showcase_wdt.hide() + + @self.menubtn8.clicked.connect + def slot(): + self.togglesw_showcase_wdt.hide() + self.stbtn_showcase_wdt.hide() + self.imgbox_showcase_wdt.hide() + self.colorpk_showcase_wdt.hide() + self.dropfile_showcase_wdt.hide() + self.emwin_showcase_wdt.hide() + self.codeedit_showcase_wdt.hide() + self.spinner_showcase_wdt.show() ################################################## @@ -331,43 +336,132 @@ def slot(): self.stbtn_style1_lyt.setAlignment(Qt.AlignTop|Qt.AlignHCenter) self.stbtn_style1_lyt.setSpacing(15) self.stbtn_content_lyt.addLayout(self.stbtn_style1_lyt) + self.stbtn_style2_lyt = QVBoxLayout() self.stbtn_style2_lyt.setAlignment(Qt.AlignTop|Qt.AlignHCenter) self.stbtn_style2_lyt.setSpacing(15) self.stbtn_content_lyt.addLayout(self.stbtn_style2_lyt) - # Flat styled button - self.stbtn_style1_lyt.addWidget(QLabel("Flat"), + self.stbtn_style3_lyt = QVBoxLayout() + self.stbtn_style3_lyt.setAlignment(Qt.AlignTop|Qt.AlignHCenter) + self.stbtn_style3_lyt.setSpacing(15) + self.stbtn_content_lyt.addLayout(self.stbtn_style3_lyt) + + + self.stbtn_style1_lyt.addWidget(QLabel("Default style"), alignment=Qt.AlignHCenter) self.stbtn_style1_lyt.addSpacing(35) - self.stbtn_style1 = StyledButton(text="Flat styled", style="flat") - self.stbtn_style1_icon = StyledButton(text="Icon", style="flat", icon="data/homeicon.png") - self.stbtn_style1_shad = StyledButton(text="Drop shadow", style="flat") - self.stbtn_style1_di = StyledButton(text="Disabled", style="flat") - self.stbtn_style1_shad.setDropShadow(True) - self.stbtn_style1_di.setEnabled(False) + self.stbtn_style1 = StyledButton(text="Button") + self.stbtn_style1_icon = StyledButton(text="Icon", icon="data/homeicon.png") + self.stbtn_style1_spn = StyledButton(text="Spinner", icon=Spinner(2, QColor(0, 0, 0))) + self.stbtn_style1_shad = StyledButton(text="Drop shadow") + self.stbtn_style1_shad.setStyleDict({ + "drop-shadow-radius" : 7, + "drop-shadow-offset" : (0, 2) + }) self.stbtn_style1_lyt.addWidget(self.stbtn_style1) self.stbtn_style1_lyt.addWidget(self.stbtn_style1_icon) + self.stbtn_style1_lyt.addWidget(self.stbtn_style1_spn) self.stbtn_style1_lyt.addWidget(self.stbtn_style1_shad) - self.stbtn_style1_lyt.addWidget(self.stbtn_style1_di) - # Hyper styled button - self.stbtn_style2_lyt.addWidget(QLabel("Hyper"), + + self.stbtn_style2_lyt.addWidget(QLabel("Shadow interactions"), alignment=Qt.AlignHCenter) self.stbtn_style2_lyt.addSpacing(35) - self.stbtn_style2 = StyledButton(text="Hyper styled", style="hyper") - self.stbtn_style2_icon = StyledButton(text="Icon", style="hyper", icon="data/homeicon.png") - self.stbtn_style2_shad = StyledButton(text="Fixed bottom", style="hyper", fixedBottom=True) - self.stbtn_style2_di = StyledButton(text="Disabled", style="hyper", fixedBottom=True) - self.stbtn_style2_di.setEnabled(False) - - self.stbtn_style2_lyt.addWidget(self.stbtn_style2) - self.stbtn_style2_lyt.addWidget(self.stbtn_style2_icon) - self.stbtn_style2_lyt.addWidget(self.stbtn_style2_shad) - self.stbtn_style2_lyt.addWidget(self.stbtn_style2_di) + self.stbtn_style2_1 = StyledButton(text="Shadow on hover") + self.stbtn_style2_2 = StyledButton(text="Shadow on press") + self.stbtn_style2_3 = StyledButton(text="Shadow on idle") + self.stbtn_style2_4 = StyledButton(text="Changing offset") + + self.stbtn_style2_1.setStyleDict({ + "drop-shadow-radius" : 10, + "drop-shadow-offset" : (0, 3) + }, "hover") + + self.stbtn_style2_2.setStyleDict({ + "drop-shadow-radius" : 10, + "drop-shadow-offset" : (0, 3) + }, "press") + + self.stbtn_style2_3.setStyleDict({ + "drop-shadow-radius" : 10, + "drop-shadow-offset" : (0, 3) + }, "default") + + self.stbtn_style2_4.setStyleDict({ + "drop-shadow-radius" : 10, + "drop-shadow-offset" : (0, 3) + }) + self.stbtn_style2_4.setStyleDict({ + "drop-shadow-offset" : (3, 0) + }, "hover") + self.stbtn_style2_4.setStyleDict({ + "drop-shadow-offset" : (-1.5, -1.5) + }, "press") + + self.stbtn_style2_lyt.addWidget(self.stbtn_style2_1) + self.stbtn_style2_lyt.addWidget(self.stbtn_style2_2) + self.stbtn_style2_lyt.addWidget(self.stbtn_style2_3) + self.stbtn_style2_lyt.addWidget(self.stbtn_style2_4) + + + self.stbtn_style3_lyt.addWidget(QLabel("Variations"), + alignment=Qt.AlignHCenter) + self.stbtn_style3_lyt.addSpacing(35) + + self.stbtn_style3_1 = StyledButton(text="iOS styled") + self.stbtn_style3_2 = StyledButton(text="Pill shaped") + self.stbtn_style3_3 = StyledButton(text="✕") + self.stbtn_style3_4 = StyledButton(text="Only text") + + self.stbtn_style3_1.setStyleDict({ + "border-radius" : 4, + "border-color" : (0, 122, 255), + "color" : (0, 122, 255) + }) + self.stbtn_style3_1.setStyleDict({ + "background-color" : (255, 255, 255), + "border-color" : (0, 172, 255), + "color" : (0, 172, 255) + }, "hover") + self.stbtn_style3_1.setStyleDict({ + "background-color" : (0, 122, 255), + "border-color" : (0, 122, 255), + "color" : (255, 255, 255) + }, "press") + + self.stbtn_style3_2.setStyleDict({ + "border-radius" : 100 + }) + + self.stbtn_style3_3.setFixedSize(52, 52) + self.stbtn_style3_3.setStyleDict({ + "border-radius" : 100, + "border-color" : (0, 0, 0, 0), + "background-color" : (241, 241, 241), + "font-size" : 24 + }) + self.stbtn_style3_3.setStyleDict({ + "background-color": (200, 0, 0), + "color" : (255, 255, 255) + }, "hover") + self.stbtn_style3_3.setStyleDict({ + "background-color": (255, 0, 0), + "color" : (255, 255, 255) + }, "press") + + self.stbtn_style3_4.setStyleDict({ + "border-color" : (0, 0, 0, 0), + "background-color" : (0, 0, 0, 0) + }) + + self.stbtn_style3_lyt.addWidget(self.stbtn_style3_1) + self.stbtn_style3_lyt.addWidget(self.stbtn_style3_2) + self.stbtn_style3_lyt.addWidget(self.stbtn_style3_3) + self.stbtn_style3_lyt.addWidget(self.stbtn_style3_4) ################################################## @@ -561,40 +655,145 @@ def slot(): self.codeedit_filedrop.borderWidth = 3 self.codeedit_showcase_lyt.addWidget(self.codeedit_filedrop, alignment=Qt.AlignHCenter) - self.codeedit_showcase_lyt.addSpacing(59) + self.codeedit_showcase_lyt.addSpacing(9) @self.codeedit_filedrop.fileDropped.connect def slot(file): self.codeedit.loadFile(file.path) self.codeedit = CodeTextEdit() - self.codeedit.setFixedSize(384, 200) - self.codeedit.setStyleSheet("QPlainTextEdit {font-size:14px; font-family: SourceCodePro-Regular;}") + self.codeedit.setFixedSize(510, 300) + self.codeedit.setStyleSheet("QPlainTextEdit {font-size:17px; font-family: Source Code Pro;}") self.codeedit.loadFile("example.cpp") + self.codeedit.setTheme("one-dark") self.codeedit_showcase_lyt.addWidget(self.codeedit, alignment=Qt.AlignHCenter|Qt.AlignTop) - self.codeedit_showcase_lyt.addSpacing(59) - self.codeedit_themes_lyt = QHBoxLayout() - self.codeedit_showcase_lyt.addLayout(self.codeedit_themes_lyt) - self.codeedit_themebtn1 = StyledButton("Default", style="hyper") - self.codeedit_themebtn1.setStyleSheet("font-size: 15px;") - self.codeedit_themebtn1.setFixedHeight(30) + self.codeedit_showcase_lyt.addSpacing(9) + + self.codeedit_theme_btngrp = SegmentedButtonGroup(radio=True) + self.codeedit_theme_btngrp.setFixedHeight(32) + + self.codeedit_theme_btngrp.addButton("Default", tag=0) + self.codeedit_theme_btngrp.addButton("One Light", tag=1) + self.codeedit_theme_btngrp.addButton("One Dark", tag=2) + self.codeedit_theme_btngrp.addButton("Monokai", tag=3) + self.codeedit_theme_btngrp.addButton("Oceanic", tag=4) + self.codeedit_theme_btngrp.addButton("Zenburn", tag=5) + + self.codeedit_theme_btngrp.getByTag(2).setChecked(True) + + @self.codeedit_theme_btngrp.clicked.connect + def slot(tag): + btn = self.codeedit_theme_btngrp.getByTag(tag) + self.codeedit.setTheme(btn.text().lower().replace(" ", "-")) + + self.codeedit_showcase_lyt.addWidget(self.codeedit_theme_btngrp) + + + ################################################## + # # + # Spinner Widget # + # # + ################################################## + + self.spinner_showcase_wdt = QWidget() + self.spinner_showcase_lyt = QVBoxLayout() + self.spinner_showcase_lyt.setSpacing(5) + self.spinner_showcase_lyt.setAlignment(Qt.AlignTop|Qt.AlignHCenter) + self.spinner_showcase_wdt.setLayout(self.spinner_showcase_lyt) + + self.spinner_showcase_lyt.addWidget(QLabel("Spinner"), + alignment=Qt.AlignHCenter) + self.spinner_showcase_lyt.addWidget(QLabel("It's spinning! You can use this widget as icon argument."), + alignment=Qt.AlignHCenter) + + self.spinner_showcase_lyt.addSpacing(70) + + self.spinner_row1 = QHBoxLayout() + self.spinner_row2 = QHBoxLayout() + self.spinner_row3 = QHBoxLayout() + self.spinner_row4 = QHBoxLayout() + self.spinner_showcase_lyt.addLayout(self.spinner_row1) + self.spinner_showcase_lyt.addSpacing(15) + self.spinner_showcase_lyt.addLayout(self.spinner_row2) + self.spinner_showcase_lyt.addSpacing(15) + self.spinner_showcase_lyt.addLayout(self.spinner_row3) + self.spinner_showcase_lyt.addSpacing(15) + self.spinner_showcase_lyt.addLayout(self.spinner_row4) + + + self.spinner_style1_1 = Spinner(1.5, QColor(0, 0, 0)) + self.spinner_style1_1.setFixedSize(18, 18) + + self.spinner_style1_2 = Spinner(1.5, QColor(0, 0, 0)) + self.spinner_style1_2.setFixedSize(36, 36) + + self.spinner_style1_3 = Spinner(1.5, QColor(0, 0, 0)) + self.spinner_style1_3.setFixedSize(78, 78) + + self.spinner_row1.addWidget(QLabel("Fixed Width")) + self.spinner_row1.addWidget(self.spinner_style1_1) + self.spinner_row1.addSpacing(20) + self.spinner_row1.addWidget(self.spinner_style1_2) + self.spinner_row1.addSpacing(20) + self.spinner_row1.addWidget(self.spinner_style1_3) + + + self.spinner_style2_1 = Spinner(1.5, QColor(0, 0, 0)) + self.spinner_style2_1.setFixedSize(18, 18) + + self.spinner_style2_2 = Spinner(6.0, QColor(0, 0, 0)) + self.spinner_style2_2.setFixedSize(36, 36) + + self.spinner_style2_3 = Spinner(18, QColor(0, 0, 0)) + self.spinner_style2_3.setFixedSize(78, 78) + + self.spinner_row2.addWidget(QLabel("Increasing width")) + self.spinner_row2.addWidget(self.spinner_style2_1) + self.spinner_row2.addSpacing(20) + self.spinner_row2.addWidget(self.spinner_style2_2) + self.spinner_row2.addSpacing(20) + self.spinner_row2.addWidget(self.spinner_style2_3) + + + self.spinner_style3_1 = Spinner(2, QColor(0, 0, 0)) + self.spinner_style3_1.animType = 0 + self.spinner_style3_1.setFixedSize(18, 18) + + self.spinner_style3_2 = Spinner(2, QColor(0, 0, 0)) + self.spinner_style3_2.animType = 0 + self.spinner_style3_2.setFixedSize(36, 36) + + self.spinner_style3_3 = Spinner(2, QColor(0, 0, 0)) + self.spinner_style3_3.animType = 0 + self.spinner_style3_3.setFixedSize(78, 78) + + self.spinner_row3.addWidget(QLabel("Boring animation type")) + self.spinner_row3.addWidget(self.spinner_style3_1) + self.spinner_row3.addSpacing(20) + self.spinner_row3.addWidget(self.spinner_style3_2) + self.spinner_row3.addSpacing(20) + self.spinner_row3.addWidget(self.spinner_style3_3) + - self.codeedit_themebtn2 = StyledButton("One Dark", style="hyper") - self.codeedit_themebtn2.setStyleSheet("font-size: 15px;") - self.codeedit_themebtn2.setFixedHeight(30) + self.spinner_style4_1 = Spinner(4, QColor(255, 0, 0)) + self.spinner_style4_1.animType = 0 + self.spinner_style4_1.speed = 1.2 + self.spinner_style4_1.setFixedSize(24, 24) - self.codeedit_themebtn3 = StyledButton("Monokai", style="hyper") - self.codeedit_themebtn3.setStyleSheet("font-size: 15px;") - self.codeedit_themebtn3.setFixedHeight(30) + self.spinner_style4_2 = Spinner(2, QColor(0, 255, 20)) + self.spinner_style4_2.setFixedSize(36, 36) - self.codeedit_themebtn1.clicked.connect(lambda: self.codeedit.setTheme("default")) - self.codeedit_themebtn2.clicked.connect(lambda: self.codeedit.setTheme("one-dark")) - self.codeedit_themebtn3.clicked.connect(lambda: self.codeedit.setTheme("material-monokai")) + self.spinner_style4_3 = Spinner(5, QColor(0, 55, 255)) + self.spinner_style4_3.speed = 12 + self.spinner_style4_3.setFixedSize(55, 55) - self.codeedit_themes_lyt.addWidget(self.codeedit_themebtn1) - self.codeedit_themes_lyt.addWidget(self.codeedit_themebtn2) - self.codeedit_themes_lyt.addWidget(self.codeedit_themebtn3) + self.spinner_row4.addWidget(QLabel("Variations")) + self.spinner_row4.addWidget(self.spinner_style4_1) + self.spinner_row4.addSpacing(25) + self.spinner_row4.addWidget(self.spinner_style4_2) + self.spinner_row4.addSpacing(45) + self.spinner_row4.addWidget(self.spinner_style4_3) # finalize layout @@ -605,6 +804,7 @@ def slot(file): self.layout.addWidget(self.dropfile_showcase_wdt) self.layout.addWidget(self.emwin_showcase_wdt) self.layout.addWidget(self.codeedit_showcase_wdt) + self.layout.addWidget(self.spinner_showcase_wdt) self.togglesw_showcase_wdt.show() self.stbtn_showcase_wdt.hide() @@ -613,6 +813,7 @@ def slot(file): self.dropfile_showcase_wdt.hide() self.emwin_showcase_wdt.hide() self.codeedit_showcase_wdt.hide() + self.spinner_showcase_wdt.hide() diff --git a/pyqt5Custom/__init__.py b/pyqt5Custom/__init__.py index b0cc882..30b13ad 100644 --- a/pyqt5Custom/__init__.py +++ b/pyqt5Custom/__init__.py @@ -3,20 +3,23 @@ # https://github.com/kadir014/pyqt5-custom-widgets # -__version__ = "0.0.4" +__version__ = "1.0.0" -from .widgets import (ToggleSwitch, - StyledButton, - ImageBox, - ColorPicker, - DragDropFile, - EmbedWindow, - CodeTextEdit, - TitleBar) -from .widgets import (FileDetails, - ColorPreview, - Animation, - AnimationHandler) +from .toggleswitch import ToggleSwitch +from .styledbutton import StyledButton +from .segbtngroup import SegmentedButtonGroup +from .imagebox import ImageBox +from .colorpicker import ColorPicker +from .dragdropfile import DragDropFile +from .embedwindow import EmbedWindow +from .codetextedit import CodeTextEdit +from .titlebar import TitleBar +from .spinner import Spinner +from .toast import Toast +from .dragdropfile import FileDetails +from .colorpicker import ColorPreview +from .animation import Animation, AnimationHandler +from .requesthandler import RequestHandler from .syntaxhighlighter import SyntaxHighlighter diff --git a/pyqt5Custom/animation.py b/pyqt5Custom/animation.py new file mode 100644 index 0000000..eea8a99 --- /dev/null +++ b/pyqt5Custom/animation.py @@ -0,0 +1,89 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +import time +from math import ceil, sin, pi, sqrt, pow + +from PyQt5.QtGui import QColor + + + +class Animation: + easeOutSine = lambda x: sin((x * pi) / 2) + easeOutCubic = lambda x: 1 - ((1 - x)**3) + easeOutQuart = lambda x: 1 - pow(1 - x, 4) + easeOutCirc = lambda x: 1 - ((1 - x)**3)#sqrt(1 - pow(x - 1, 2)) + + + +class AnimationHandler: + def __init__(self, widget, startv, endv, type): + self.widget = widget + self.type = type + + self.startv = startv + self.endv = endv + + self.value = 0 + + self.speed = 3.45 + + self.sensitivity = 0.001 + + self.reverse = False + self.start_time = None + self.interval = 20 / 1000 + + def __repr__(self): + return f"{self.endv}, interval={self.interval:.4})>" + + def start(self, reverse=False): + self.reverse = reverse + self.start_time = True + self.orgstart_time = time.time() + self.value = 0 + + def reset(self): + self.value = 0 + self.start_time = None + + def done(self): + return self.start_time is None + + def update(self): + if not self.done(): + ep = time.time() - self.orgstart_time + + self.value = self.type(ep * self.speed) + + if self.reverse: + if self.current() <= self.startv + self.sensitivity: self.start_time = None + else: + if self.current() >= self.endv - self.sensitivity: self.start_time = None + + def current(self): + if self.reverse: + return self.endv - (self.value * (self.endv-self.startv)) + else: + return self.value * (self.endv-self.startv) + + def lerp(self, a, b): + f = self.current() / self.endv + + if isinstance(a, QColor): + r1, r2 = a.red(), b.red() + g1, g2 = a.green(), b.green() + b1, b2 = a.blue(), b.blue() + a1, a2 = a.alpha(), b.alpha() + + r = (r2 - r1) * f + r1 + g = (g2 - g1) * f + g1 + _b = (b2 - b1) * f + b1 + _a = (a2 - a1) * f + a1 + + return QColor(r, g, _b, _a) + + else: + return (b - a) * f + a diff --git a/pyqt5Custom/codetextedit.py b/pyqt5Custom/codetextedit.py new file mode 100644 index 0000000..e9bf47f --- /dev/null +++ b/pyqt5Custom/codetextedit.py @@ -0,0 +1,150 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QLabel, QPlainTextEdit +from PyQt5.QtGui import QColor, QPainter, QPen, QBrush + +from .syntaxhighlighter import SyntaxHighlighter + + + +class CodeTextEdit(QWidget): + + LANG_DISPLAY = { + "plain" : "Plain text", + "python" : "Python", + "py" : "Python", + "cpp" : "C++", + "c++" : "C++" + } + + def __init__(self): + super().__init__() + + self.layout = QHBoxLayout() + self.layout.setContentsMargins(0, 0, 0, 0) + self.setLayout(self.layout) + + self.layout.addSpacing(37) + + self.editorlyt = QVBoxLayout() + self.editorlyt.setSpacing(0) + self.editorlyt.setContentsMargins(0, 0, 0, 0) + self.layout.addLayout(self.editorlyt) + + self.editor = QPlainTextEdit() + self.editor.setLineWrapMode(QPlainTextEdit.NoWrap) + self.editorlyt.addWidget(self.editor) + + self.setStyleSheet("QPlainTextEdit {font-family:Consolas; font-size:14px; color:#222222;}") + + self.highlighter = SyntaxHighlighter(self.editor.document()) + + self.sliderVal = 0 + self.lastdigit = 2 + vs = self.editor.verticalScrollBar() + + @vs.rangeChanged.connect + def slot(v): + self.sliderVal = self.editor.verticalScrollBar().value() + + if len(str(vs.maximum()+15)) > self.lastdigit: + self.lastdigit = len(str(vs.maximum()+15)) + self.layout.insertSpacing(0, 10) + + self.update() + + @vs.valueChanged.connect + def slot(v): + self.sliderVal = v + + self.update() + + self.statusbar = QWidget() + self.statusbar.setFixedHeight(26) + self.statusbarlyt = QHBoxLayout() + self.statusbarlyt.setContentsMargins(10, 0, 30, 0) + self.statusbar.setLayout(self.statusbarlyt) + self.editorlyt.addWidget(self.statusbar) + + self.cursor_lbl = QLabel("0:0") + self.cursor_lbl.setStyleSheet("font-size:16px;") + self.statusbarlyt.addWidget(self.cursor_lbl, alignment=Qt.AlignLeft|Qt.AlignVCenter) + + self.lang_lbl = QLabel("Plain text") + self.lang_lbl.setStyleSheet("font-size:16px;") + self.statusbarlyt.addWidget(self.lang_lbl, alignment=Qt.AlignRight|Qt.AlignVCenter) + + @self.editor.cursorPositionChanged.connect + def slot(): + self.cursor_lbl.setText(f"{self.editor.textCursor().blockNumber()}:{self.editor.textCursor().positionInBlock()}") + + def __repr__(self): + return f"" + + def setTheme(self, theme): + self.highlighter.setTheme(theme) + self.highlighter.setRules() + + c = self.highlighter.theme["background"] + rgb = f"rgb({c.red()}, {c.green()}, {c.blue()})" + + cc = self.highlighter.theme["identifier"] + crgb = f"rgb({cc.red()}, {cc.green()}, {cc.blue()})" + + self.editor.setStyleSheet(f"QPlainTextEdit {{background-color: {rgb}; color: {crgb};}}") + + self.cursor_lbl.setStyleSheet(f"color: {crgb}; font-size:16px;") + self.lang_lbl.setStyleSheet(f"color: {crgb}; font-size:16px;") + + self.highlighter.rehighlight() + self.update() + + def setLang(self, lang): + self.lang_lbl.setText(CodeTextEdit.LANG_DISPLAY[lang]) + + self.highlighter.setLang(lang) + self.highlighter.setRules() + self.highlighter.rehighlight() + self.update() + + def loadFile(self, filepath, encoding="utf-8"): + + if filepath.endswith(".py"): lang = "python" + elif filepath.endswith(".cpp"): lang = "cpp" + else: lang = "plain" + + with open(filepath, "r", encoding=encoding) as f: + self.editor.setPlainText(f.read()) + + self.setLang(lang) + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing) + + pt.setBrush(QBrush(self.highlighter.theme["lines-background"])) + + pt.drawRect(0, 0, self.width(), self.height()) + + font = self.editor.font() + pt.setFont(font) + + gap = font.pixelSize() + 3 + + for i in range((self.height()//gap)): + font = pt.font() + pt.setFont(font) + pt.setPen(QPen(self.highlighter.theme["lines"])) + + pt.drawText(13, i*gap, str(i+self.sliderVal)) + + pt.setBrush(QBrush(self.highlighter.theme["background"])) + pt.setPen(QPen(QColor(0, 0, 0, 0))) + pt.drawRect(3, self.height()-self.statusbar.height(), 40, self.statusbar.height()-6) + + pt.end() diff --git a/pyqt5Custom/colorpicker.py b/pyqt5Custom/colorpicker.py new file mode 100644 index 0000000..b328db5 --- /dev/null +++ b/pyqt5Custom/colorpicker.py @@ -0,0 +1,109 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +import time +from math import sqrt, atan2, pow, pi + +from PyQt5.QtCore import Qt, pyqtSignal +from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel +from PyQt5.QtGui import QColor, QPainter, QPen, QBrush + + + +class ColorPreview(QWidget): + def __init__(self): + super().__init__() + + self.color = QColor(0, 0, 0) + + self.layout = QVBoxLayout() + self.setLayout(self.layout) + self.label = QLabel("#000000") + self.layout.addWidget(self.label, alignment=Qt.AlignBottom|Qt.AlignHCenter) + + self.setFixedSize(90, 65) + + def __repr__(self): + return f"" + + def setColor(self, color): + self.color = color + self.label.setText(self.color.name()) + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing, on=True) + + pt.setPen(QPen(QColor(0, 0, 0, 0))) + pt.setBrush(QBrush(QColor(225, 225, 225))) + + pt.drawRoundedRect(0, 0, self.width(), self.height(), 9, 9) + + pt.setBrush(QBrush(self.color)) + + pt.drawRoundedRect(15, 15, self.width()-30, self.height()-45, 4, 4) + + pt.end() + + +# TODO: Complete optimized color wheel & picker are and cursor +class ColorPicker(QWidget): + + colorChanged = pyqtSignal(QColor) + + def __init__(self): + super().__init__() + + self.color = None + + self.radius = 110 + self.setFixedSize(self.radius*2, self.radius*2) + + self.mouse_x, self.mouse_y = 0, 0 + + def __repr__(self): + return f"" + + def mouseMoveEvent(self, event): + self.mouse_x, self.mouse_y = event.x(), event.y() + + dist = sqrt(pow(self.mouse_x-self.radius, 2)+pow(self.mouse_y-self.radius, 2)) + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing, on=True) + + for i in range(self.width()): + for j in range(self.height()): + color = QColor(255, 255, 255, 255) + h = (atan2(i-self.radius, j-self.radius)+pi)/(2.*pi) + s = sqrt(pow(i-self.radius, 2)+pow(j-self.radius, 2))/self.radius + v = 1.0 + + rr = 0.65 + + ww = self.width()/(rr*5.72) + hh = self.height()/(rr*5.72) + + if rr < s < 1.0: + color.setHsvF(h, s, v, 1.0) + pt.setPen(color) + pt.drawPoint(i, j) + + elif ww < i < self.width()-ww and hh < j < self.height()-hh: + h = 0.8 + s = (i - ww) / (self.width()-ww*2) + v = 1-((j - hh) / (self.height()-hh*2)) + + hh = int(h*360) + ss = int(s*255) + vv = int(v*255) + color.setHsv(hh, ss, vv) + pt.setPen(color) + pt.drawPoint(i, j) + + pt.end() diff --git a/pyqt5Custom/dragdropfile.py b/pyqt5Custom/dragdropfile.py new file mode 100644 index 0000000..2e56a8a --- /dev/null +++ b/pyqt5Custom/dragdropfile.py @@ -0,0 +1,105 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +import pathlib + +from PyQt5.QtCore import Qt, pyqtSignal +from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel +from PyQt5.QtGui import QColor, QPainter, QPen, QBrush + + + +class FileDetails: + def __init__(self, path, content): + self.path = path + self.content = content + self.size = len(self.content) + + self._path = pathlib.Path(self.path) + + self.name = self._path.name + self.pureName = self._path.stem + self.extension = self._path.suffix + + def __repr__(self): + return f"" + + + +class DragDropFile(QWidget): + + fileDropped = pyqtSignal(FileDetails) + + def __init__(self): + super().__init__() + + self.setAcceptDrops(True) + + self.setMinimumSize(120, 65) + + self.borderColor = QColor(190, 190, 190) + self.hoverBackground = QColor(245, 245, 250) + self.borderRadius = 26 + self.borderWidth = 6 + + self.layout = QVBoxLayout() + self.layout.setAlignment(Qt.AlignCenter) + self.setLayout(self.layout) + + self.title_lbl = QLabel("Drop your file here!") + self.filename_lbl = QLabel("") + + self.layout.addWidget(self.title_lbl, alignment=Qt.AlignHCenter) + self.layout.addSpacing(7) + self.layout.addWidget(self.filename_lbl, alignment=Qt.AlignHCenter) + + self.title_lbl.setStyleSheet("font-size:19px;") + self.filename_lbl.setStyleSheet("font-size:14px; color: #666666;") + + self.dragEnter = False + + self.file = None + + def setTitle(self, title): + self.title_lbl.setText(title) + + def dragEnterEvent(self, event): + if event.mimeData().hasUrls(): + self.dragEnter = True + event.accept() + self.repaint() + else: + event.ignore() + + def dragLeaveEvent(self, event): + self.dragEnter = False + self.repaint() + + def dropEvent(self, event): + mime = event.mimeData() + file = FileDetails(mime.urls()[0].toLocalFile(), mime.text()) + + self.filename_lbl.setText(file.name) + + self.fileDropped.emit(file) + + self.dragEnter = False + self.repaint() + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing, on=True) + + pen = QPen(self.borderColor, self.borderWidth, Qt.DotLine, Qt.RoundCap) + pt.setPen(pen) + + if self.dragEnter: + brush = QBrush(self.hoverBackground) + pt.setBrush(brush) + + pt.drawRoundedRect(self.borderWidth, self.borderWidth, self.width()-self.borderWidth*2, self.height()-self.borderWidth*2, self.borderRadius, self.borderRadius) + + pt.end() diff --git a/pyqt5Custom/embedwindow.py b/pyqt5Custom/embedwindow.py new file mode 100644 index 0000000..5cdba6b --- /dev/null +++ b/pyqt5Custom/embedwindow.py @@ -0,0 +1,180 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +import random + +from PyQt5.QtCore import Qt, QRect, pyqtSignal +from PyQt5.QtWidgets import QWidget, QHBoxLayout, QVBoxLayout, QLabel, QGraphicsDropShadowEffect +from PyQt5.QtGui import QColor, QPainter, QPen, QBrush + +from .animation import Animation, AnimationHandler +from .styledbutton import StyledButton + + +class EmbedWindow(QWidget): + + closed = pyqtSignal() + + def __init__(self, parent, pos=None, title="New window"): + super().__init__(parent) + + if pos is None: + pos = (random.randint(0, self.parent().width()-285), random.randint(0, self.parent().height()-190)) + self.setFixedSize(285, 190) + self.setGeometry(pos[0], pos[1], 285, 190) + + self.shadow = QGraphicsDropShadowEffect(self) + self.shadow.setBlurRadius(8) + self.shadow.setColor(QColor(0, 0, 0, 110)) + self.shadow.setOffset(0, 2) + self.setGraphicsEffect(self.shadow) + + self.borderRadius = 12 + self.headerColor = QColor(255, 255, 255) + self.headerHeight = 36 + + self.pressed = None + self.pressed_pos = None + + self.layout = QVBoxLayout() + self.layout.setContentsMargins(0, 0, 0, 0) + self.layout.setAlignment(Qt.AlignTop) + self.setLayout(self.layout) + + self.header = QWidget() + self.header.setFixedHeight(self.headerHeight) + self.header_lyt = QHBoxLayout() + self.header_lyt.setContentsMargins(0, 0, 0, 0) + self.header_lyt.setSpacing(0) + self.header.setLayout(self.header_lyt) + + self.contentwdt = QWidget() + self.content = QVBoxLayout() + self.contentwdt.setLayout(self.content) + self.content_visible = True + self.last_height = self.height() + + self.layout.addWidget(self.header) + self.layout.addWidget(self.contentwdt) + + self.title = QLabel(title) + self.title.setStyleSheet("color:black; font-size:14px;") + + self.close_btn = StyledButton("✕") + self.close_btn.setFixedSize(self.headerHeight, self.headerHeight) + self.close_btn.setStyleDict({ + "border-color" : (0, 0, 0, 0), + "border-radius" : 50 + }) + + @self.close_btn.clicked.connect + def slot(): + self.close() + self.closed.emit() + + self.deta_btn = StyledButton("▲") + self.deta_btn.setFixedSize(self.headerHeight, self.headerHeight) + self.deta_btn.setStyleDict({ + "border-color" : (0, 0, 0, 0), + "border-radius" : 50 + }) + + @self.deta_btn.clicked.connect + def slot(): + if self.content_visible: + self.content_visible = False + self.contentwdt.hide() + self.last_height = self.height() + self.deta_btn.textLbl.setText("▼") + self.anim.start(reverse=True) + + else: + self.content_visible = True + self.contentwdt.show() + self.deta_btn.textLbl.setText("▲") + self.anim.start() + + self.header_lyt.addSpacing(10) + self.header_lyt.addWidget(self.title, alignment=Qt.AlignVCenter) + self.header_lyt.addWidget(self.deta_btn, alignment=Qt.AlignVCenter|Qt.AlignRight) + self.header_lyt.addWidget(self.close_btn, alignment=Qt.AlignVCenter) + + self.anim = AnimationHandler(self, 0, 1, Animation.easeOutSine) + self.anim.interval = 10/1000 + self.anim.value = 1 + + def __repr__(self): + return f"" + + def setTitle(text): + self.title.setText(text) + + def title(self): + return self.title.text() + + def setControlsVisible(b): + if not b: + self.close_btn.hide() + self.deta_btn.hide() + + else: + self.close_btn.show() + self.deta_btn.show() + + def update(self, *args, **kwargs): + self.anim.update() + super().update(*args, **kwargs) + + def mousePressEvent(self, event): + self.startpos = self.pos() + self.__mousePressPos = None + self.__mouseMovePos = None + if event.button() == Qt.LeftButton: + self.__mousePressPos = event.globalPos() + self.__mouseMovePos = event.globalPos() + + def mouseMoveEvent(self, event): + if event.buttons() == Qt.LeftButton and event.y() <= self.headerHeight: + currPos = self.mapToGlobal(self.pos()) + globalPos = event.globalPos() + diff = globalPos - self.__mouseMovePos + newPos = self.mapFromGlobal(currPos + diff) + self.move(newPos) + + self.__mouseMovePos = globalPos + + self.raise_() + + def mouseReleaseEvent(self, event): + if self.__mousePressPos is not None: + moved = event.globalPos() - self.__mousePressPos + if moved.manhattanLength() > 3: + event.ignore() + return + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing, on=True) + + pen = QPen(QColor(0, 0, 0, 0), 1) + brush = QBrush(QColor(255, 255, 255)) + pt.setBrush(brush) + pt.setPen(pen) + + self.setFixedHeight(((self.last_height-36)*self.anim.current())+36) + pt.drawRoundedRect(0, 0, self.width(), self.height()*self.anim.current(), self.borderRadius, self.borderRadius) + + brush = QBrush(self.headerColor) + pt.setBrush(brush) + + pt.drawRoundedRect(0, 0, self.width(), self.headerHeight, self.borderRadius, self.borderRadius) + if self.content_visible: + pt.drawRect(0, self.headerHeight/2, self.width()*2, self.headerHeight/2) + + pt.end() + self.show() + + if not self.anim.done(): self.update() diff --git a/pyqt5Custom/imagebox.py b/pyqt5Custom/imagebox.py new file mode 100644 index 0000000..3215d1b --- /dev/null +++ b/pyqt5Custom/imagebox.py @@ -0,0 +1,108 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +import pathlib +import requests + +from PyQt5.QtCore import Qt, QSize +from PyQt5.QtWidgets import QLabel +from PyQt5.QtGui import QPixmap, QMovie, QImage + + + +class ImageBox(QLabel): + def __init__(self, source=None, parent=None, keepAspectRatio=True, smoothScale=True): + super().__init__() + + self.source = source + self.animated = False + + self.keepAspectRatio = keepAspectRatio + self.smoothScale = smoothScale + + if self.source is not None: self.setSource(self.source) + + def __repr__(self): + return f"" + + def setSource(self, source): + self.source = source + + if isinstance(self.source, pathlib.Path): + self.source = str(self.source) + + if isinstance(self.source, str): + + # TODO: Better URL validation + if self.source.startswith("http"): + + if self.source.endswith(".gif"): + r = requests.get(self.source) + + with open("temp.gif", "wb") as f: + f.write(r.content) + + self.animated = True + self.orgmovie = QMovie("temp.gif") + self.movie = self.orgmovie + self.setMovie(self.movie) + self.movie.start() + + else: + r = requests.get(self.source) + + self.animated = False + self.orgpixmap = QPixmap.fromImage(QImage.fromData(r.content)) + self.pixmap = QPixmap(self.orgpixmap) + self.setPixmap(self.pixmap) + + else: + if source.endswith(".gif"): + self.animated = True + self.movie = QMovie(source) + self.setMovie(self.movie) + self.movie.start() + + else: + self.animated = False + self.orgpixmap = QPixmap(source) + self.pixmap = QPixmap(source) + self.setPixmap(self.pixmap) + + elif isinstance(self.source, QPixmap): + self.animated = False + self.orgpixmap = QPixmap(self.source) + self.pixmap = QPixmap(self.source) + self.setPixmap(self.pixmap) + + elif isinstance(self.source, QImage): + self.animated = False + self.orgpixmap = QPixmap.fromImage(self.source) + self.pixmap = QPixmap.fromImage(self.source) + self.setPixmap(self.pixmap) + + elif isinstance(self.source, QMovie): + self.animated = True + self.movie = QMovie(self.source) + self.setMovie(self.movie) + self.movie.start() + + else: + raise TypeError(f"QImage(source: Union[str, pathlib.Path, QPixmap, QImage, QMovie]) -> Argument 1 has unexpected type '{type(self.source)}'") + + self.resizeEvent(None) + + def resizeEvent(self, event): + w, h = self.width(), self.height() + + t = (Qt.FastTransformation, Qt.SmoothTransformation)[self.smoothScale] + k = (Qt.IgnoreAspectRatio, Qt.KeepAspectRatio)[self.keepAspectRatio] + + if self.animated: + self.movie.setScaledSize(QSize(w, h)) + + else: + self.pixmap = self.orgpixmap.scaled(w, h, transformMode=t, aspectRatioMode=k) + self.setPixmap(self.pixmap) diff --git a/pyqt5Custom/requesthandler.py b/pyqt5Custom/requesthandler.py new file mode 100644 index 0000000..2770ee6 --- /dev/null +++ b/pyqt5Custom/requesthandler.py @@ -0,0 +1,47 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +import time +import requests + +from PyQt5.QtCore import QThread, pyqtSignal + + + +class RequestHandler(QThread): + + requestResponsed = pyqtSignal(requests.Response) + + def __init__(self): + super().__init__() + + self._request_pool = list() + self._resume = True + + def __repr__(): + return f"" + + def pause(self): + self._resume = False + + def resume(self): + self._resume = True + + def newRequest(self, method, url, headers=None, data=None): + self._request_pool.append((method, url, headers, data)) + + def run(self): + # time.sleeps prevents main window from glitching out, but IDK why + while True: + while not self._resume: time.sleep(0.15) + + if len(self._request_pool) > 0: + for req in self._request_pool: + resp = requests.request(req[0], req[1], headers=req[2], data=req[3]) + self.requestResponsed.emit(resp) + + self._request_pool.clear() + + time.sleep(0.15) diff --git a/pyqt5Custom/segbtngroup.py b/pyqt5Custom/segbtngroup.py new file mode 100644 index 0000000..9736eb2 --- /dev/null +++ b/pyqt5Custom/segbtngroup.py @@ -0,0 +1,166 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +from PyQt5.QtCore import Qt, pyqtSignal +from PyQt5.QtWidgets import QWidget, QHBoxLayout + +from .styledbutton import StyledButton + + + +class SegmentedButtonGroup(QWidget): + + clicked = pyqtSignal(int) + + def __init__(self, radio=False): + super().__init__() + + self.styleDict = { + "default" : { + "background-image" : None, + "background-color" : (255, 255, 255), + + "border-color" : (0, 0, 0), + "border-width" : 1, + "border-radius" : 11, + "radius-corners" : (True, True, True, True), + + "font-family" : None, + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "drop-shadow-radius" : 0, + "drop-shadow-offset" : (0, 0), + "drop-shadow-alpha" : 120, + + "click-effect-radius" : 500, + "click-effect-color" : (0, 0, 0, 90), + + "render-fast" : False, + "render-aa" : True, + "font-subpixel-aa" : False + }, + + "hover" : { + "background-image" : None, + "background-color" : (245, 245, 245), + + "border-color" : (0, 0, 0), + "border-width" : 1, + "border-radius" : 11, + + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "drop-shadow-radius" : 0, + "drop-shadow-offset" : (0, 0), + "drop-shadow-alpha" : 120 + }, + + "press" : { + "background-image" : None, + "background-color" : (228, 228, 228), + + "border-color" : (0, 0, 0), + "border-width" : 1, + "border-radius" : 11, + + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "drop-shadow-radius" : 0, + "drop-shadow-offset" : (0, 0), + "drop-shadow-alpha" : 120 + }, + + "check-hover" : { + "background-image" : None, + "background-color" : (245, 245, 245), + + "border-color" : (0, 0, 0), + "border-width" : 1, + "border-radius" : 11, + + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "drop-shadow-radius" : 0, + "drop-shadow-offset" : (0, 0), + "drop-shadow-alpha" : 120 + }, + } + + self.radio = radio + + self._buttons = list() + + self.layout = QHBoxLayout() + self.setLayout(self.layout) + self.layout.setContentsMargins(2, 0, 2, 0) + self.layout.setSpacing(0) + + def __repr__(self): + return f"" + + def setStyleDict(self, styledict, state=None): + if state is None: + for k in styledict: + self.styleDict["default"][k] = styledict[k] + self.styleDict["hover"][k] = styledict[k] + self.styleDict["press"][k] = styledict[k] + self.styleDict["check-hover"][k] = styledict[k] + else: + for k in styledict: + self.styleDict[state][k] = styledict[k] + + def addButton(self, text="", icon=None, tag=None): + btn = StyledButton(text=text, icon=None) + btn.setStyleDict(self.styleDict["default"]) + btn.setStyleDict(self.styleDict["hover"], "hover") + btn.setStyleDict(self.styleDict["press"], "press") + btn.setStyleDict(self.styleDict["check-hover"], "check-hover") + if self.radio: + btn.setCheckable(True) + + if tag is None: tag = id(btn) + self._buttons.append((tag, btn)) + self.layout.addWidget(btn) + + if len(self._buttons) == 1: + btn.setStyleDict({"radius-corners":(True, False, True, False)}) + + else: + if len(self._buttons) >= 3: + btnPrev = self._buttons[-2][1] + btnPrev.setStyleDict({"radius-corners":(False, False, False, False)}) + btn.setStyleDict({"radius-corners":(False, True, False, True)}) + + for btnn in self._buttons: + btnn[1].setFixedSize(self.width()/len(self._buttons), self.height()) + + @btn.clicked.connect + def slot(): + self._clicked(tag) + self.clicked.emit(tag) + + l = len(self._buttons) + self.layout.setContentsMargins(l*2, 0, l*2, 0) + return btn + + def getByTag(self, tag): + for btn in self._buttons: + if btn[0] == tag: return btn[1] + + def _clicked(self, tag): + for btn in self._buttons: + if btn[0] != tag: + if btn[1].isChecked(): + btn[1].anim_press.start(reverse=True) + btn[1]._was_checked = False + btn[1].setChecked(False) diff --git a/pyqt5Custom/spinner.py b/pyqt5Custom/spinner.py new file mode 100644 index 0000000..8e41eb3 --- /dev/null +++ b/pyqt5Custom/spinner.py @@ -0,0 +1,64 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +import time +from math import sin, cos, radians + +from PyQt5.QtCore import Qt, pyqtSignal +from PyQt5.QtWidgets import QWidget, QHBoxLayout +from PyQt5.QtGui import QPainter, QPen + +from .animation import Animation, AnimationHandler + + + +class Spinner(QWidget): + def __init__(self, width, color): + super().__init__() + + self.w = width + self.color = color + + self.angle = 0 + self.speed = 4.8 + + self.animType = 1 + + self.play = True + + self.last_call = time.time() + + def __repr__(self): + return f"" + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing, on=True) + + w = self.w + pen = QPen(self.color, w) + pt.setPen(pen) + + if self.animType == 0: + pt.drawArc(w, w, self.width()-w*2, self.height()-w*2, self.angle, 90*16) + + elif self.animType == 1: + sa = ((sin(radians(self.angle/16))+1)/2)*(180*16) + ((sin(radians((self.angle/16)+130))+1)/2)*(180*16) + pt.drawArc(w, w, self.width()-w*2, self.height()-w*2, self.angle, sa) + + pt.end() + + ep = (time.time()-self.last_call)*1000 + self.last_call = time.time() + + self.angle += self.speed*ep + if self.angle > 360*16: + self.angle = 0 + + elif self.angle < 0: + self.angle = 360*16 + + if self.play: self.update() diff --git a/pyqt5Custom/styledbutton.py b/pyqt5Custom/styledbutton.py new file mode 100644 index 0000000..d3bdc22 --- /dev/null +++ b/pyqt5Custom/styledbutton.py @@ -0,0 +1,377 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +from PyQt5.QtCore import Qt, QPointF +from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QAbstractButton, QGraphicsDropShadowEffect, QGraphicsOpacityEffect +from PyQt5.QtGui import QColor, QPainter, QPen, QBrush, QFont + +from .animation import Animation, AnimationHandler +from .imagebox import ImageBox + + + +class StyledButton(QAbstractButton): + def __init__(self, text="", icon=None): + super().__init__() + + self.setMinimumSize(100, 45) + + self.layout = QHBoxLayout() + self.layout.setContentsMargins(0, 0, 0, 0) + self.setLayout(self.layout) + + self.conwdt = QWidget() + self.conlyt = QHBoxLayout() + self.conlyt.setContentsMargins(0, 0, 0, 0) + self.conwdt.setLayout(self.conlyt) + self.layout.addWidget(self.conwdt, alignment=Qt.AlignCenter) + + self._text = text + self.textLbl = QLabel(text) + self.conlyt.addWidget(self.textLbl, alignment=Qt.AlignCenter) + + self._icon = None + if icon is not None: + self.setIcon(icon) + + # REMOVE + self.opacity = QGraphicsOpacityEffect() + self.opacity.setOpacity(1.0) + #self.setGraphicsEffect(self.opacity) + + self.shadow = QGraphicsDropShadowEffect() + self.shadow.setBlurRadius(0.8) + self.shadow.setColor(QColor(0, 0, 0, 100)) + self.shadow.setOffset(0, 2) + self.setGraphicsEffect(self.shadow) + + self.styleDict = { + "default" : { + "background-image" : None, + "background-color" : (255, 255, 255), + + "border-color" : (0, 0, 0), + "border-width" : 1, + "border-radius" : 11, + "radius-corners" : (True, True, True, True), + + "font-family" : None, + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "drop-shadow-radius" : 0, + "drop-shadow-offset" : (0, 0), + "drop-shadow-alpha" : 120, + + "click-effect-radius" : 500, + "click-effect-color" : (0, 0, 0, 90), + + "render-fast" : False, + "render-aa" : True, + "font-subpixel-aa" : False + }, + + "hover" : { + "background-image" : None, + "background-color" : (245, 245, 245), + + "border-color" : (0, 0, 0), + "border-width" : 1, + "border-radius" : 11, + + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "drop-shadow-radius" : 0, + "drop-shadow-offset" : (0, 0), + "drop-shadow-alpha" : 120 + }, + + "press" : { + "background-image" : None, + "background-color" : (228, 228, 228), + + "border-color" : (0, 0, 0), + "border-width" : 1, + "border-radius" : 11, + + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "drop-shadow-radius" : 0, + "drop-shadow-offset" : (0, 0), + "drop-shadow-alpha" : 120 + }, + + "check-hover" : { + "background-image" : None, + "background-color" : (245, 245, 245), + + "border-color" : (0, 0, 0), + "border-width" : 1, + "border-radius" : 11, + + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "drop-shadow-radius" : 0, + "drop-shadow-offset" : (0, 0), + "drop-shadow-alpha" : 120 + }, + } + + self.anim_hover = AnimationHandler(self, 0, 1, Animation.easeOutCirc) + self.anim_press = AnimationHandler(self, 0, 1, Animation.easeOutCubic) + + self._press_reset = False + self.mouse_x, self.mouse_y = 0, 0 + self._mouse_pressed = False + self._hover = False + self._was_checked = False + + def __repr__(self): + return f"" + + def setText(self, text): + self._text = text + self.textLbl.setText(self._text) + + def text(self): + return self._text + + def setStyleDict(self, styledict, state=None): + if state is None: + for k in styledict: + self.styleDict["default"][k] = styledict[k] + self.styleDict["hover"][k] = styledict[k] + self.styleDict["press"][k] = styledict[k] + self.styleDict["check-hover"][k] = styledict[k] + else: + for k in styledict: + self.styleDict[state][k] = styledict[k] + + def copyStyleDict(self, widget): + for state in widget.styleDict: + self.setStyleDict(widget.styleDict[state], state) + + def setIcon(self, icon): + if self._icon is not None: + self._icon.deleteLater() + + if isinstance(icon, str): + self._icon = ImageBox(icon) + self._icon.setFixedSize(18, 18) + if self._text: + self.textLbl.show() + self.conlyt.insertWidget(0, self._icon, alignment=Qt.AlignVCenter|Qt.AlignRight) + self.conlyt.removeItem(self.conlyt.itemAt(1)) + self.conlyt.addWidget(self.textLbl, alignment=Qt.AlignVCenter|Qt.AlignLeft) + else: + self.textLbl.hide() + self.conlyt.insertWidget(0, self._icon, alignment=Qt.AlignCenter) + + else: + self._icon = icon + self._icon.setFixedSize(18, 18) + if self._text: + self.textLbl.show() + self.conlyt.insertWidget(0, self._icon, alignment=Qt.AlignVCenter|Qt.AlignRight) + self.conlyt.removeItem(self.conlyt.itemAt(1)) + self.conlyt.addWidget(self.textLbl, alignment=Qt.AlignVCenter|Qt.AlignLeft) + + else: + self.textLbl.hide() + self.conlyt.insertWidget(0, self._icon, alignment=Qt.AlignCenter) + + def setIconSize(self, width, height): + self._icon.setFixedSize(width, height) + + def update(self): + self.anim_hover.update() + self.anim_press.update() + + super().update() + + def enterEvent(self, event): + self.anim_hover.start() + self._hover = True + + if not self.isChecked(): + self._was_checked = False + + def leaveEvent(self, event): + self.anim_hover.start(reverse=True) + self._hover = False + + if not self.isChecked(): + self._was_checked = False + + def mousePressEvent(self, event): + self.mouse_x, self.mouse_y = event.x(), event.y() + self._mouse_pressed = True + self.anim_press.start() + + if self.isChecked(): self._was_checked = True + + super().mousePressEvent(event) + + def mouseReleaseEvent(self, event): + self._mouse_pressed = False + self.anim_press.start(reverse=True) + + super().mouseReleaseEvent(event) + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing, on=self.styleDict["default"]["render-aa"]) + + dsr1 = self.styleDict["default"]["drop-shadow-radius"] + dsr2 = self.styleDict["hover"]["drop-shadow-radius"] + dsr3 = self.styleDict["press"]["drop-shadow-radius"] + dso1 = self.styleDict["default"]["drop-shadow-offset"] + dso2 = self.styleDict["hover"]["drop-shadow-offset"] + dso3 = self.styleDict["press"]["drop-shadow-offset"] + dsc1 = self.styleDict["default"]["drop-shadow-alpha"] + dsc2 = self.styleDict["hover"]["drop-shadow-alpha"] + dsc3 = self.styleDict["press"]["drop-shadow-alpha"] + + if self.anim_press.current() > 0.001: + dsr = dsr3 + dso = dso3 + dsc = dsc3 + elif self._hover: + dsr = dsr2 + dso = dso2 + dsc = dsc2 + else: + dsr = dsr1 + dso = dso1 + dsc = dsc1 + + if dsr == 0: + self.shadow.setEnabled(False) + else: + self.shadow.setEnabled(True) + self.shadow.setBlurRadius(dsr) + self.shadow.setOffset(*dso) + self.shadow.setColor(QColor(0, 0, 0, dsc)) + + if self.isChecked(): + fc1 = QColor(*self.styleDict["press"]["color"]) + fc2 = QColor(*self.styleDict["check-hover"]["color"]) + fc = self.anim_hover.lerp(fc1, fc2) + else: + fc1 = QColor(*self.styleDict["default"]["color"]) + fc2 = QColor(*self.styleDict["hover"]["color"]) + fc3 = QColor(*self.styleDict["press"]["color"]) + if self.anim_press.current() > 0.001 and self._hover: fc = self.anim_press.lerp(fc2, fc3) + elif self.anim_press.current() > 0.001: fc = self.anim_press.lerp(fc1, fc3) + else: fc = self.anim_hover.lerp(fc1, fc2) + + plt = self.textLbl.palette() + plt.setColor(self.textLbl.foregroundRole(), fc) + self.textLbl.setPalette(plt) + + fs1 = self.styleDict["default"]["font-size"] + fs2 = self.styleDict["hover"]["font-size"] + fs3 = self.styleDict["press"]["font-size"] + if self.anim_press.current() > 0.001 and self._hover: fs = self.anim_press.lerp(fs2, fs3) + elif self.anim_press.current() > 0.001: fs = self.anim_press.lerp(fs1, fs3) + else: fs = self.anim_hover.lerp(fs1, fs2) + + fnt = self.textLbl.font() + fnt.setPixelSize(fs) + if not self.styleDict["default"]["font-subpixel-aa"]: fnt.setStyleStrategy(QFont.NoSubpixelAntialias) + if self.styleDict["default"]["font-family"]: fnt.setFamily(self.styleDict["default"]["font-family"]) + self.textLbl.setFont(fnt) + + pc1 = QColor(*self.styleDict["default"]["border-color"]) + pc2 = QColor(*self.styleDict["hover"]["border-color"]) + pc3 = QColor(*self.styleDict["press"]["border-color"]) + if self.anim_press.current() > 0.001 and self._hover: pc = self.anim_press.lerp(pc2, pc3) + elif self.anim_press.current() > 0.001: pc = self.anim_press.lerp(pc1, pc3) + else: pc = self.anim_hover.lerp(pc1, pc2) + + pw1 = self.styleDict["default"]["border-width"] + pw2 = self.styleDict["hover"]["border-width"] + pw3 = self.styleDict["press"]["border-width"] + if self.anim_press.current() > 0.001 and self._hover: pw = self.anim_press.lerp(pw2, pw3) + elif self.anim_press.current() > 0.001: pw = self.anim_press.lerp(pw1, pw3) + else: pw = self.anim_hover.lerp(pw1, pw2) + + pen = QPen(pc, pw) + + if self.isChecked(): + b1 = QColor(*self.styleDict["press"]["background-color"]) + b2 = QColor(*self.styleDict["check-hover"]["background-color"]) + b = self.anim_hover.lerp(b1, b2) + else: + b1 = QColor(*self.styleDict["default"]["background-color"]) + b2 = QColor(*self.styleDict["hover"]["background-color"]) + b3 = QColor(*self.styleDict["press"]["background-color"]) + b4 = QColor(*self.styleDict["check-hover"]["background-color"]) + if self._was_checked: b = self.anim_press.lerp(b2, b4) + elif self.anim_press.current() > 0.001 and self._hover: b = self.anim_press.lerp(b2, b3) + elif self.anim_press.current() > 0.001: b = self.anim_press.lerp(b1, b3) + else: b = self.anim_hover.lerp(b1, b2) + + brush = QBrush(b) + + pt.setPen(pen) + pt.setBrush(brush) + + r1 = self.styleDict["default"]["border-radius"] + r2 = self.styleDict["hover"]["border-radius"] + r3 = self.styleDict["press"]["border-radius"] + if self.anim_press.current() > 0.001 and self._hover: r = self.anim_press.lerp(r2, r3) + elif self.anim_press.current() > 0.001: r = self.anim_press.lerp(r1, r3) + else: r = self.anim_hover.lerp(r1, r2) + + if r > self.height()/2: r = self.height()/2 + + + crn = self.styleDict["default"]["radius-corners"] + + if all(crn) and self.styleDict["default"]["render-fast"]: + pt.drawRoundedRect(1, 1, self.width()-2, self.height()-2, r, r) + + else: + pt.setPen(QPen(QColor(0, 0, 0, 0))) + pt.setBrush(QBrush(pc)) + + pt.drawRect(0, r, self.width(), self.height()-r*2) + pt.drawRect(r, 0, self.width()-r*2, self.height()) + + if crn[0]: pt.drawEllipse(QPointF(r, r), r, r) + else: pt.drawRect(0, 0, r, r) + if crn[3]: pt.drawEllipse(QPointF(self.width()-r, self.height()-r), r, r) + else: pt.drawRect(self.width()-r, self.height()-r, r, r) + if crn[2]: pt.drawEllipse(QPointF(r, self.height()-r), r, r) + else: pt.drawRect(0, self.height()-r, r, r) + if crn[1]: pt.drawEllipse(QPointF(self.width()-r, r), r, r) + else: pt.drawRect(self.width()-r, 0, r, r) + + pt.setBrush(QBrush(b)) + + pt.drawRect(pw, r+pw, self.width()-pw*2, self.height()-r*2-pw*2) + pt.drawRect(r+pw, pw, self.width()-r*2-pw*2, self.height()-pw*2) + if crn[0]: pt.drawEllipse(QPointF(r, r), r-pw, r-pw) + else: pt.drawRect(pw, pw, r+1, r+1) + if crn[3]: pt.drawEllipse(QPointF(self.width()-r, self.height()-r), r-pw, r-pw) + else: pt.drawRect(self.width()-r-pw, self.height()-r-pw, r, r) + if crn[2]: pt.drawEllipse(QPointF(r, self.height()-r), r-pw, r-pw) + else: pt.drawRect(pw, self.height()-r-pw, r, r) + if crn[1]: pt.drawEllipse(QPointF(self.width()-r, r), r-pw, r-pw) + else: pt.drawRect(self.width()-r-pw, pw, r, r) + + pt.end() + + if not self.anim_hover.done(): self.update() + if not self.anim_press.done(): self.update() diff --git a/pyqt5Custom/themes/default.json b/pyqt5Custom/themes/default.json index ba0778a..0e4f740 100644 --- a/pyqt5Custom/themes/default.json +++ b/pyqt5Custom/themes/default.json @@ -12,5 +12,5 @@ "numeric" : "#6496be", "this" : "#96558c-italic", "function" : "#4993b8", - "preprocessor" : "#96558c" + "preprocessor" : "#f07116" } diff --git a/pyqt5Custom/themes/material-monokai.json b/pyqt5Custom/themes/monokai.json similarity index 100% rename from pyqt5Custom/themes/material-monokai.json rename to pyqt5Custom/themes/monokai.json diff --git a/pyqt5Custom/themes/oceanic.json b/pyqt5Custom/themes/oceanic.json new file mode 100644 index 0000000..4ae134f --- /dev/null +++ b/pyqt5Custom/themes/oceanic.json @@ -0,0 +1,16 @@ +{ + "background" : "#032d38", + "lines-background" : "#032d38", + "lines" : "#4b5f66", + + "identifier" : "#9bb1b4", + "operator" : "#9bb1b4", + "brace" : "#9bb1b4", + "string" : "#31afa5", + "comment" : "#4b5f66-italic", + "keyword" : "#90a507", + "numeric" : "#31afa5", + "this" : "#b58910-italic", + "function" : "#2f95dc", + "preprocessor" : "#90a507" +} diff --git a/pyqt5Custom/themes/one-light.json b/pyqt5Custom/themes/one-light.json new file mode 100644 index 0000000..c4096ba --- /dev/null +++ b/pyqt5Custom/themes/one-light.json @@ -0,0 +1,16 @@ +{ + "background" : "#fafafa", + "lines-background" : "#fafafa", + "lines" : "#a7a7a7", + + "identifier" : "#383a42", + "operator" : "#4078f2", + "brace" : "#4e5260", + "string" : "#50a14f", + "comment" : "#a7a7a7-italic", + "keyword" : "#a626a4", + "numeric" : "#986801", + "this" : "#e45649-italic", + "function" : "#4078f2", + "preprocessor" : "#a626a4" +} diff --git a/pyqt5Custom/themes/zenburn.json b/pyqt5Custom/themes/zenburn.json new file mode 100644 index 0000000..5b602d9 --- /dev/null +++ b/pyqt5Custom/themes/zenburn.json @@ -0,0 +1,16 @@ +{ + "background" : "#3f3f3f", + "lines-background" : "#3f3f3f", + "lines" : "#627483", + + "identifier" : "#e3e2d5", + "operator" : "#e3e2d5", + "brace" : "#e3e2d5", + "string" : "#a06666", + "comment" : "#627483-italic", + "keyword" : "#e6bda0", + "numeric" : "#9bd8dc", + "this" : "#e4a1ce-italic", + "function" : "#ede7a5", + "preprocessor" : "#e6bda0" +} diff --git a/pyqt5Custom/titlebar.py b/pyqt5Custom/titlebar.py new file mode 100644 index 0000000..912da83 --- /dev/null +++ b/pyqt5Custom/titlebar.py @@ -0,0 +1,324 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QLabel +from PyQt5.QtGui import QColor, QPainter, QPen, QBrush, QFont + +from .styledbutton import StyledButton + + + +class TitleBar(QWidget): + def __init__(self, parent, title=""): + super().__init__(parent) + + self.parent().setWindowTitle(title) + self.parent().setWindowFlags(Qt.FramelessWindowHint) + + setattr(self.parent(), "mousePressEvent", self.parentMousePressEvent) + setattr(self.parent(), "mouseMoveEvent", self.parentMouseMoveEvent) + setattr(self.parent(), "mouseReleaseEvent", self.parentMouseReleaseEvent) + + # self.event_widget = QWidget() + # self.event_widget.setParent(self.parent()) + # self.event_widget.setGeometry(5, 5, self.parent().width()-10, self.parent().height()-10) + # self.event_widget.raise_() + # self.event_widget.hide() + # + # setattr(self.event_widget, "enterEvent", self.childEnterEvent) + + self._resizable = True + + self.setFixedHeight(32) + + self.styleDict = { + "background-color" : (255, 255, 255), + + "font-family" : None, + "font-size" : 12, + "font-weight" : "regular", + "color" : (0, 0, 0), + + "render-aa" : True, + "font-subpixel-aa" : False + } + + self.layout = QHBoxLayout() + self.layout.setContentsMargins(14, 0, 0, 0) + self.layout.setSpacing(0) + self.setLayout(self.layout) + + self.title_lbl = QLabel(title) + self.layout.addWidget(self.title_lbl) + + self.close_btn = StyledButton(text="✕") + self.close_btn.setFixedSize(self.height()+19, self.height()) + + self.max_btn = StyledButton(text="🗖") + self.max_btn.setFixedSize(self.height()+19, self.height()) + + self.min_btn = StyledButton(text="🗕") + self.min_btn.setFixedSize(self.height()+19, self.height()) + + self._styleControlButtons() + + self.close_btn.clicked.connect(self.parent().close) + + self.min_btn.clicked.connect(self.parent().showMinimized) + + @self.max_btn.clicked.connect + def slot(): + if self.parent().isMaximized(): + self.parent().showNormal() + else: + self.parent().showMaximized() + + self.layout.addWidget(self.min_btn, alignment=Qt.AlignRight) + self.layout.addWidget(self.max_btn) + self.layout.addWidget(self.close_btn) + + self.pressing = False + + self.cursize = 9 + self.cur = None + self.curs = { + "southeast" : (1, 1), + "east" : (1, 0), + "south" : (0, 1) + } + + self.ccurs = { + "southeast" : Qt.SizeFDiagCursor, + "northeast" : Qt.SizeBDiagCursor, + "southwest" : Qt.SizeBDiagCursor, + "northwest" : Qt.SizeFDiagCursor, + "north" : Qt.SizeVerCursor, + "south" : Qt.SizeVerCursor, + "east" : Qt.SizeHorCursor, + "west" : Qt.SizeHorCursor, + } + + def __repr__(self): + return f"" + + def setWindowResizable(self, resizable): + self._resizable = resizable + + if self._resizable: + self.max_btn.show() + + else: + self.max_btn.hide() + + def setStyleDict(self, styledict): + for k in styledict: + self.styleDict[k] = styledict[k] + self._styleControlButtons() + + def _styleControlButtons(self): + self.close_btn.setStyleDict({ + "font-family" : self.styleDict["font-family"], + "font-size" : self.styleDict["font-size"], + "border-color" : (0, 0, 0, 0), + "border-radius" : 0, + "background-color" : (255, 255, 255) + }) + self.close_btn.setStyleDict({ + "background-color" : (224, 0, 0), + "color": (255, 255, 255) + }, "hover") + self.close_btn.setStyleDict({ + "background-color" : (255, 0, 0), + "color" : (255, 255, 255) + }, "press") + + self.max_btn.setStyleDict({ + "font-family" : self.styleDict["font-family"], + "font-size" : self.styleDict["font-size"], + "border-color" : (0, 0, 0, 0), + "border-radius" : 0, + "background-color" : (255, 255, 255) + }) + self.max_btn.setStyleDict({ + "background-color" : (236, 236, 236), + }, "hover") + self.max_btn.setStyleDict({ + "background-color" : (218, 218, 218), + }, "press") + + self.min_btn.setStyleDict({ + "font-family" : self.styleDict["font-family"], + "font-size" : self.styleDict["font-size"], + "border-color" : (0, 0, 0, 0), + "border-radius" : 0, + "background-color" : (255, 255, 255) + }) + self.min_btn.setStyleDict({ + "background-color" : (236, 236, 236), + }, "hover") + self.min_btn.setStyleDict({ + "background-color" : (218, 218, 218), + }, "press") + + def setTitle(self, title): + self.parent().setWindowTitle(title) + self.title_lbl.setText(title) + + def title(self): + return self.title_lbl.text() + + def parentMousePressEvent(self, event): + self._start = self.mapToGlobal(event.pos()) + self._orw = self.parent().width() + self._orh = self.parent().height() + self._orx = self.parent().x() + self._ory = self.parent().y() + + if event.x() > self.parent().width() - self.cursize: + if event.y() > self.parent().height() - self.cursize: + self.cur = "southeast" + + elif event.y() < self.cursize: + self.cur = "northeast" + + else: + self.cur = "east" + + elif event.x() < self.cursize: + if event.y() > self.parent().height() - self.cursize: + self.cur = "southwest" + + elif event.y() < self.cursize: + self.cur = "northwest" + + else: + self.cur = "west" + + elif event.y() > self.parent().height() - self.cursize: + self.cur = "south" + + elif event.y() < self.cursize: + self.cur = "north" + + else: + self.cur = None + + def parentMouseReleaseEvent(self, event): + self.cur = None + QApplication.restoreOverrideCursor() + + def parentMouseMoveEvent(self, event): + if self.cur is not None and self._resizable: + QApplication.restoreOverrideCursor() + QApplication.setOverrideCursor(self.ccurs[self.cur]) + + end = self.mapToGlobal(event.pos()) + self._movement = end - self._start + + if self.cur in ("east", "southeast", "south"): + x = self._movement.x() * self.curs[self.cur][0] + y = self._movement.y() * self.curs[self.cur][1] + + if self.parent().width() + x < self.parent().minimumWidth(): + end.setX(end.x()-x) + x = 0 + + if self.parent().height() + y < self.parent().minimumHeight(): + end.setY(end.y()-y) + y = 0 + + self.parent().setGeometry(self.parent().x(), + self.parent().y(), + self._orw + x, + self._orh + y) + self.parent().update() + + self._orw += x + self._orh += y + + elif self.cur == "northeast": + x = self._movement.x() + y = self._movement.y() + + self.parent().setGeometry(self.parent().x(), + self._ory + y, + self._orw + x, + self.parent().height() - y) + self.parent().setFixedSize(self._orw+x, self.parent().height()-y) + self.parent().update() + + self._orw += x + self._ory += y + + elif self.cur == "southwest": + x = self._movement.x() + y = self._movement.y() + + #if x > 2: x = 2 + #if x < -2: x = -2 + + # self.parent().setFixedSize(self.parent().width()-x, + # self._orh + y) + # + # self.parent().move(self._orx - x, + # self.parent().y()) + + self.parent().setGeometry(self._orx - x, + self.parent().y(), + self.parent().width()-x, + self._orh + y) + #self.parent().update() + + self._orx += x + self._orh += y + #self._ory += y + + #self.parent().setGeometry(self.parent().x(), self.parent().y(), self._orw+x, self.parent().height()) + + self._start = end + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing, on=self.styleDict["render-aa"]) + + fnt = self.title_lbl.font() + fnt.setPixelSize(self.styleDict["font-size"]) + if not self.styleDict["font-subpixel-aa"]: fnt.setStyleStrategy(QFont.NoSubpixelAntialias) + if self.styleDict["font-family"]: fnt.setFamily(self.styleDict["font-family"]) + self.title_lbl.setFont(fnt) + + brush = QBrush(QColor(*self.styleDict["background-color"])) + pen = QPen(QColor(0, 0, 0, 0), 0) + pt.setBrush(brush) + pt.setPen(pen) + + pt.drawRect(0, 0, self.width(), self.height()) + + pt.end() + + def mousePressEvent(self, event): + if event.x() < self.parent().width() - 10: + self.start = self.mapToGlobal(event.pos()) + self.pressing = True + else: + self.parentMousePressEvent(event) + + def mouseReleaseEvent(self, event): + self.pressing = False + self.parentMouseReleaseEvent(event) + + def mouseMoveEvent(self, event): + if self.pressing: + end = self.mapToGlobal(event.pos()) + self.movement = end - self.start + self.parent().setGeometry(self.mapToGlobal(self.movement).x(), + self.mapToGlobal(self.movement).y(), + self.parent().width(), + self.parent().height()) + self.start = end + else: + self.parentMouseMoveEvent(event) diff --git a/pyqt5Custom/toast.py b/pyqt5Custom/toast.py new file mode 100644 index 0000000..2715b9e --- /dev/null +++ b/pyqt5Custom/toast.py @@ -0,0 +1,188 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +from PyQt5.QtCore import Qt, pyqtSignal +from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel +from PyQt5.QtGui import QPainter, QPen, QBrush, QColor, QFont + +from .animation import Animation, AnimationHandler +from .imagebox import ImageBox +from .styledbutton import StyledButton + + + +class Toast(QWidget): + def __init__(self, parent, text="", icon=None, closeButton=True): + super().__init__(parent) + + self.setFixedHeight(45) + + w = self.width() + h = self.height() + ww = self.parent().width() + hh = self.parent().height() + self.setGeometry(ww/2-w/2, hh-h-5, w, h) + + self.styleDict = { + "background-color" : (0, 0, 0, 180), + "border-radius" : 16, + + "font-family" : None, + "font-size" : 17, + "color" : (255, 255, 255), + + "font-subpixel-aa" : False + } + + self._closeButton = closeButton + + self.layout = QHBoxLayout() + self.layout.setContentsMargins(15, 0, 7, 0) + self.setLayout(self.layout) + + self.conwdt = QWidget() + self.conlyt = QHBoxLayout() + self.conlyt.setContentsMargins(0, 0, 0, 0) + self.conwdt.setLayout(self.conlyt) + self.layout.addWidget(self.conwdt, alignment=Qt.AlignLeft) + + self.close_btn = StyledButton("✕") + self.layout.addWidget(self.close_btn) + self.close_btn.setFixedSize(self.height()/1.6, self.height()/1.6) + self.close_btn.setStyleDict({ + "border-color" : (0, 0, 0, 0), + "background-color" : (0, 0, 0, 0), + "color" : (255, 255, 255), + "font-size" : 14, + "color" : (255, 255, 255, 130), + "border-radius" : 100, + }) + self.close_btn.setStyleDict({ + "background-color" : (255, 255, 255, 8), + "color" : (255, 255, 255, 255) + }, "hover") + self.close_btn.setStyleDict({ + "background-color" : (255, 255, 255, 15), + "color" : (255, 255, 255, 147) + }, "press") + + self.close_btn.clicked.connect(self.fall) + + self.text = text + self.textLbl = QLabel(text) + self.conlyt.addWidget(self.textLbl, alignment=Qt.AlignCenter) + + self._icon = None + if icon is not None: + self.setIcon(icon) + + self.risen = False + self.hide() + + self.anim = AnimationHandler(self, 0, 1, Animation.easeOutQuart) + self.anim.speed = 1.7 + + def __repr__(self): + return f"" + + def rise(self, duration): + if self.risen: return + + self.duration = duration + self.risen = True + self.anim.start() + self.show() + self.raise_() + self.update() + + def fall(self): + if not self.risen: return + + self.anim.start(reverse=True) + self.risen = False + self.update() + + def setStyleDict(self, styledict): + for k in styledict: + self.styleDict[k] = styledict[k] + + def setIcon(self, icon): + if self._icon is not None: + self._icon.deleteLater() + + if isinstance(icon, str): + self._icon = ImageBox(icon) + self._icon.setFixedSize(18, 18) + if self.text: + self.conlyt.insertWidget(0, self._icon, alignment=Qt.AlignVCenter|Qt.AlignRight) + self.conlyt.removeItem(self.conlyt.itemAt(1)) + self.conlyt.addWidget(self.textLbl, alignment=Qt.AlignVCenter|Qt.AlignLeft) + else: + self.conlyt.insertWidget(0, self._icon, alignment=Qt.AlignRight) + + else: + self._icon = icon + self._icon.setFixedSize(18, 18) + if self.text: + self.conlyt.insertWidget(0, self._icon, alignment=Qt.AlignVCenter|Qt.AlignRight) + self.conlyt.removeItem(self.conlyt.itemAt(1)) + self.conlyt.addWidget(self.textLbl, alignment=Qt.AlignVCenter|Qt.AlignLeft) + + else: + self.conlyt.insertWidget(0, self._icon, alignment=Qt.AlignCenter) + + def setIconSize(self, width, height): + self._icon.setFixedSize(width, height) + + def setText(self, text): + self.textLbl.setText(text) + + def resizeEvent(self, event): + w = self.width() + h = self.height() + ww = self.parent().width() + hh = self.parent().height() + self.setGeometry(ww/2-w/2, hh-h-5, w, h) + + def update(self): + self.anim.update() + super().update() + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing, on=True) + + plt = self.textLbl.palette() + plt.setColor(self.textLbl.foregroundRole(), QColor(*self.styleDict["color"])) + self.textLbl.setPalette(plt) + + fnt = self.textLbl.font() + fnt.setPixelSize(self.styleDict["font-size"]) + if not self.styleDict["font-subpixel-aa"]: fnt.setStyleStrategy(QFont.NoSubpixelAntialias) + if self.styleDict["font-family"]: fnt.setFamily(self.styleDict["font-family"]) + self.textLbl.setFont(fnt) + + pt.setPen(QPen(QColor(0, 0, 0, 0))) + pt.setBrush(QBrush(QColor(*self.styleDict["background-color"]))) + r = self.styleDict["border-radius"] + if r > self.height() / 2: r = self.height() / 2 + + pt.drawRoundedRect(0, 0, self.width(), self.height(), r, r) + + pt.end() + + if not self.anim.done(): + w = self.width() + h = self.height() + ww = self.parent().width() + hh = self.parent().height() + + self.setGeometry(ww/2-w/2, hh-(self.anim.current()*(h+5))-0.01, w, h) + #print((self.anim.current()*h)) + + if not self.anim.done(): self.update() + else: + if self.isVisible() and not self.risen: self.hide() diff --git a/pyqt5Custom/toggleswitch.py b/pyqt5Custom/toggleswitch.py new file mode 100644 index 0000000..43afd38 --- /dev/null +++ b/pyqt5Custom/toggleswitch.py @@ -0,0 +1,258 @@ +# PyQt5 Custom Widgets # +# GPL 3.0 - Kadir Aksoy # +# https://github.com/kadir014/pyqt5-custom-widgets # + + +from PyQt5.QtCore import Qt, QEvent, pyqtSignal +from PyQt5.QtWidgets import QWidget, QGraphicsOpacityEffect +from PyQt5.QtGui import QColor, QPainter, QPen, QBrush + +from .animation import Animation, AnimationHandler + + + +class ToggleSwitch(QWidget): + + defaultStyles = ("win10", "ios", "android") + + toggled = pyqtSignal() + + def __init__(self, text="", style="win10", on=False): + super().__init__() + + self.text = text + + self.on = on + + # TODO: find a better way for opacity + self.opacity = QGraphicsOpacityEffect(self) + self.opacity.setOpacity(1) + self.setGraphicsEffect(self.opacity) + + if style not in ToggleSwitch.defaultStyles: + raise Exception(f"'{style}' is not a default style.") + self.style = style + + + if self.style == "win10": + self.onColor = QColor(0, 116, 208) + self.offColor = QColor(0, 0, 0) + + self.handleAlpha = True + self.handleColor = QColor(255, 255, 255) + + self.width = 35 + self.radius = 26 + + elif self.style == "ios": + self.onColor = QColor(73, 208, 96) + self.offColor = QColor(250, 250, 250) + + self.handleAlpha = False + self.handleColor = QColor(255, 255, 255) + + self.width = 21 + self.radius = 29 + + elif self.style == "android": + self.onColor = QColor(0, 150, 136) + self.offColor = QColor(255, 255, 255) + + self.handleAlpha = True + self.handleColor = QColor(255, 255, 255) + + self.width = 35 + self.radius = 26 + + self.setMinimumSize(self.width + (self.radius*2) + (len(self.text)*10), self.radius+2) + + self.anim = AnimationHandler(self, 0, self.width, Animation.easeOutCirc) + if self.on: self.anim.value = 1 + + def __repr__(self): + return f"" + + def isToggled(self): + return self.on + + def desaturate(self, color): + cc = getattr(self, color) + h = cc.hue() + if h < 0: h = 0 + s = cc.saturation()//4 + if s > 255: s = 255 + c = QColor.fromHsv(h, s, cc.value()) + setattr(self, color, c) + + def saturate(self, color): + cc = getattr(self, color) + h = cc.hue() + if h < 0: h = 0 + s = cc.saturation()*4 + if s > 255: s = 255 + c = QColor.fromHsv(h, s, cc.value()) + setattr(self, color, c) + + def update(self, *args, **kwargs): + self.anim.update() + super().update(*args, **kwargs) + + def mousePressEvent(self, event): + if self.isEnabled(): + if self.on: + self.on = False + self.anim.start(reverse=True) + else: + self.on = True + self.anim.start() + self.update() + + self.toggled.emit() + + def changeEvent(self, event): + if event.type() == QEvent.EnabledChange: + if self.isEnabled(): + self.saturate("onColor") + self.saturate("offColor") + self.saturate("handleColor") + self.opacity.setOpacity(1.00) + else: + self.desaturate("onColor") + self.desaturate("offColor") + self.desaturate("handleColor") + self.opacity.setOpacity(0.4) + + self.update() + + else: + super().changeEvent(event) + + def paintEvent(self, event): + pt = QPainter() + pt.begin(self) + pt.setRenderHint(QPainter.Antialiasing) + + if self.style == "win10": + + if self.on: + pen = QPen(self.onColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) + pt.setPen(pen) + brush = QBrush(self.onColor) + pt.setBrush(brush) + + + r = self.radius + w = self.width + + pt.drawChord(r, 1, r, r, 90*16, 180*16) + pt.drawChord(r+w, 1, r, r, -90*16, 180*16) + pt.drawRect(r+r//2, 1, w, r) + + if self.handleAlpha: pt.setBrush(pt.background()) + else: pt.setBrush(QBrush(self.handleColor)) + offset = r*0.4 + pt.drawEllipse(r+offset/2+self.anim.current() , 1+offset/2 , r-offset , r-offset) + + else: + pen = QPen(self.offColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) + pt.setPen(pen) + + r = self.radius + w = self.width + + pt.drawArc(r, 1, r, r, 90*16, 180*16) + pt.drawArc(r+w, 1, r, r, -90*16, 180*16) + pt.drawLine(r+r//2, 1, r+w+r//2, 1) + pt.drawLine(r+r//2, r+1, r+w+r//2, r+1) + + brush = QBrush(self.offColor) + pt.setBrush(brush) + offset = r*0.4 + pt.drawEllipse(r+offset/2+self.anim.current() , offset/2+1 , r-offset , r-offset) + + elif self.style == "ios": + + if self.on: + pen = QPen(self.onColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) + pt.setPen(pen) + brush = QBrush(self.onColor) + pt.setBrush(brush) + + r = self.radius + w = self.width + + pt.drawChord(r, 1, r, r, 90*16, 180*16) + pt.drawChord(r+w, 1, r, r, -90*16, 180*16) + pt.drawRect(r+r//2, 1, w, r) + + if self.handleAlpha: pt.setBrush(pt.background()) + else: pt.setBrush(QBrush(self.handleColor)) + offset = r*0.025 + pt.drawEllipse(r+offset/2+self.anim.current() , 1+offset/2 , r-offset , r-offset) + + else: + pen = QPen(self.offColor.darker(135), 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) + pt.setPen(pen) + brush = QBrush(self.offColor) + pt.setBrush(brush) + + r = self.radius + w = self.width + + pt.drawChord(r, 1, r, r, 90*16, 180*16) + pt.drawChord(r+w, 1, r, r, -90*16, 180*16) + pt.drawRect(r+r//2, 1, w, r) + pt.setPen(QPen(self.offColor)) + pt.drawRect(r+r//2-2, 2, w+4, r-2) + + if self.handleAlpha: pt.setBrush(pt.background()) + else: pt.setBrush(QBrush(self.handleColor)) + pt.setPen(QPen(self.handleColor.darker(160))) + offset = r*0.025 + pt.drawEllipse(r+offset/2+self.anim.current() , 1+offset/2 , r-offset , r-offset) + + elif self.style == "android": + + if self.on: + pen = QPen(self.onColor.lighter(145), 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) + pt.setPen(pen) + brush = QBrush(self.onColor.lighter(145)) + pt.setBrush(brush) + + r = self.radius + w = self.width + + pt.drawChord(r+r//4, 1+r//4, r//2, r//2, 90*16, 180*16) + pt.drawChord(r+w+r//4, 1+r//4, r//2, r//2, -90*16, 180*16) + pt.drawRect(r+r//2, 1+r//4, w, r//2) + + pt.setBrush(QBrush(self.onColor)) + pt.setPen(QPen(self.onColor)) + pt.drawEllipse(r+self.anim.current(), 1 , r, r) + + else: + pen = QPen(self.offColor.darker(130), 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) + pt.setPen(pen) + brush = QBrush(self.offColor.darker(130)) + pt.setBrush(brush) + + r = self.radius + w = self.width + + pt.drawChord(r+r//4, 1+r//4, r//2, r//2, 90*16, 180*16) + pt.drawChord(r+w+r//4, 1+r//4, r//2, r//2, -90*16, 180*16) + pt.drawRect(r+r//2, 1+r//4, w, r//2) + + pt.setBrush(QBrush(self.offColor)) + pt.setPen(QPen(self.offColor.darker(140))) + pt.drawEllipse(r+self.anim.current(), 1 , r, r) + + font = pt.font() + pt.setFont(font) + pt.setPen(QPen(Qt.black)) + + pt.drawText(w+r*2+10, r//2+r//4, self.text) + + pt.end() + + if not self.anim.done(): self.update() diff --git a/pyqt5Custom/widgets.py b/pyqt5Custom/widgets.py deleted file mode 100644 index 44e5d96..0000000 --- a/pyqt5Custom/widgets.py +++ /dev/null @@ -1,1285 +0,0 @@ -# PyQt5 Custom Widgets # -# GPL 3.0 - Kadir Aksoy # -# https://github.com/kadir014/pyqt5-custom-widgets # - - -import time -from math import ceil, sin, pi, sqrt, atan2, pow -import random -import pathlib -import requests - -from PyQt5.QtCore import Qt, QEvent, QSize, QPoint, pyqtSignal -from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout, QLabel, QAbstractButton, QPlainTextEdit, QGraphicsOpacityEffect, QGraphicsDropShadowEffect -from PyQt5.QtGui import QColor, QPainter, QPixmap, QPen, QBrush, QMovie, QImage, QFont - -from .syntaxhighlighter import SyntaxHighlighter - - - -class Animation: - easeOutSine = lambda x: sin((x * pi) / 2) - easeOutCubic = lambda x: 1 - ((1 - x)**3) - easeOutQuart = lambda x: 1 - pow(1 - x, 4) - easeOutCirc = lambda x: sqrt(1 - pow(x - 1, 2)) - - - -class AnimationHandler: - def __init__(self, widget, startv, endv, type): - self.widget = widget - self.type = type - - self.startv = startv - self.endv = endv - - self.value = 0.0001 - - self.reverse = False - self.start_time = None - self.interval = 20 / 1000 - - def start(self, reverse=False): - self.start_time = time.time() - self.reverse = reverse - self.value = 0.01 - - def done(self): - return self.start_time is None - - def update(self): - if not self.done(): - if time.time() - self.start_time < self.interval: - return - - self.start_time = time.time() - self.value = self.type(self.value) - - if self.reverse: - if ceil(self.current()) <= self.startv: self.start_time = None - else: - if self.current() >= self.endv: self.start_time = None - - def current(self): - if self.reverse: - return self.endv - (self.value * (self.endv-self.startv)) - else: - return self.value * (self.endv-self.startv) - - - -class TitleBar(QWidget): - def __init__(self, parent, title=""): - super().__init__(parent) - - self.parent().setWindowTitle(title) - self.parent().setWindowFlags(Qt.FramelessWindowHint) - - setattr(self.parent(), "mousePressEvent", self.parentMousePressEvent) - setattr(self.parent(), "mouseMoveEvent", self.parentMouseMoveEvent) - setattr(self.parent(), "mouseReleaseEvent", self.parentMouseReleaseEvent) - - # self.event_widget = QWidget() - # self.event_widget.setParent(self.parent()) - # self.event_widget.setGeometry(5, 5, self.parent().width()-10, self.parent().height()-10) - # self.event_widget.raise_() - # self.event_widget.hide() - # - # setattr(self.event_widget, "enterEvent", self.childEnterEvent) - - self.setFixedHeight(32) - - self.layout = QHBoxLayout() - self.layout.setContentsMargins(14, 0, 0, 0) - self.layout.setSpacing(0) - self.setLayout(self.layout) - - self.title_lbl = QLabel(title) - self.layout.addWidget(self.title_lbl) - - self.close_btn = StyledButton(text="✕") - self.close_btn.setStyleSheet("font-size:18px;") - self.close_btn.setFixedSize(self.height()+19, self.height()) - self.close_btn.borderRadius = 0 - self.close_btn.borderColor = QColor(245, 66, 126, 0) - self.close_btn.backgroundColor = QColor(245, 66, 126) - self.close_btn.circleColor = self.close_btn.borderColor.lighter(146) - self.close_btn.hoverLighter = True - self.close_btn.hoverFactor = 3.8 - - self.max_btn = StyledButton(text="🗖") - self.max_btn.setStyleSheet("font-size:18px;") - self.max_btn.setFixedSize(self.height()+19, self.height()) - self.max_btn.borderRadius = 0 - self.max_btn.borderColor = QColor(245, 66, 126, 0) - self.max_btn.backgroundColor = QColor(245, 66, 126) - self.max_btn.circleColor = self.max_btn.borderColor.lighter(146) - self.max_btn.hoverLighter = True - self.max_btn.hoverFactor = 3.8 - - self.min_btn = StyledButton(text="🗕") - self.min_btn.setStyleSheet("font-size:18px;") - self.min_btn.setFixedSize(self.height()+19, self.height()) - self.min_btn.borderRadius = 0 - self.min_btn.borderColor = QColor(245, 66, 126, 0) - self.min_btn.backgroundColor = QColor(245, 66, 126) - self.min_btn.circleColor = self.min_btn.borderColor.lighter(146) - self.min_btn.hoverLighter = True - self.min_btn.hoverFactor = 3.8 - - self.close_btn.clicked.connect(self.parent().close) - - self.min_btn.clicked.connect(self.parent().showMinimized) - - @self.max_btn.clicked.connect - def slot(): - if self.parent().isMaximized(): - self.parent().showNormal() - else: - self.parent().showMaximized() - - self.layout.addWidget(self.min_btn, alignment=Qt.AlignRight) - self.layout.addWidget(self.max_btn) - self.layout.addWidget(self.close_btn) - - self.pressing = False - - self.cursize = 9 - - self.curs = { - "southeast" : (1, 1), - "east" : (1, 0), - "south" : (0, 1) - } - - self.ccurs = { - "southeast" : Qt.SizeFDiagCursor, - "northeast" : Qt.SizeBDiagCursor, - "southwest" : Qt.SizeBDiagCursor, - "northwest" : Qt.SizeFDiagCursor, - "north" : Qt.SizeVerCursor, - "south" : Qt.SizeVerCursor, - "east" : Qt.SizeHorCursor, - "west" : Qt.SizeHorCursor, - } - - def setTitle(self, title): - self.parent().setWindowTitle(title) - self.title_lbl.setText(title) - - def title(self): - return self.title_lbl.text() - - def parentMousePressEvent(self, event): - self._start = self.mapToGlobal(event.pos()) - self._orw = self.parent().width() - self._orh = self.parent().height() - self._orx = self.parent().x() - self._ory = self.parent().y() - - if event.x() > self.parent().width() - self.cursize: - if event.y() > self.parent().height() - self.cursize: - self.cur = "southeast" - - elif event.y() < self.cursize: - self.cur = "northeast" - - else: - self.cur = "east" - - elif event.x() < self.cursize: - if event.y() > self.parent().height() - self.cursize: - self.cur = "southwest" - - elif event.y() < self.cursize: - self.cur = "northwest" - - else: - self.cur = "west" - - elif event.y() > self.parent().height() - self.cursize: - self.cur = "south" - - elif event.y() < self.cursize: - self.cur = "north" - - else: - self.cur = None - - def parentMouseReleaseEvent(self, event): - self.cur = None - QApplication.restoreOverrideCursor() - - def parentMouseMoveEvent(self, event): - if self.cur is not None: - QApplication.restoreOverrideCursor() - QApplication.setOverrideCursor(self.ccurs[self.cur]) - - end = self.mapToGlobal(event.pos()) - self._movement = end - self._start - - if self.cur in ("east", "southeast", "south"): - x = self._movement.x() * self.curs[self.cur][0] - y = self._movement.y() * self.curs[self.cur][1] - - if self.parent().width() + x < self.parent().minimumWidth(): - end.setX(end.x()-x) - x = 0 - - if self.parent().height() + y < self.parent().minimumHeight(): - end.setY(end.y()-y) - y = 0 - - self.parent().setGeometry(self.parent().x(), - self.parent().y(), - self._orw + x, - self._orh + y) - self.parent().update() - - self._orw += x - self._orh += y - - elif self.cur == "northeast": - x = self._movement.x() - y = self._movement.y() - - self.parent().setGeometry(self.parent().x(), - self._ory + y, - self._orw + x, - self.parent().height() - y) - self.parent().setFixedSize(self._orw+x, self.parent().height()-y) - self.parent().update() - - self._orw += x - self._ory += y - - elif self.cur == "southwest": - x = self._movement.x() - y = self._movement.y() - - #if x > 2: x = 2 - #if x < -2: x = -2 - - # self.parent().setFixedSize(self.parent().width()-x, - # self._orh + y) - # - # self.parent().move(self._orx - x, - # self.parent().y()) - - self.parent().setGeometry(self._orx - x, - self.parent().y(), - self.parent().width()-x, - self._orh + y) - #self.parent().update() - - self._orx += x - self._orh += y - #self._ory += y - - #self.parent().setGeometry(self.parent().x(), self.parent().y(), self._orw+x, self.parent().height()) - - self._start = end - - def paintEvent(self, event): - pt = QPainter() - pt.begin(self) - pt.setRenderHint(QPainter.Antialiasing) - - brush = QBrush(QColor(245, 66, 126)) - pen = QPen(QColor(0, 0, 0, 0), 0) - pt.setBrush(brush) - pt.setPen(pen) - - pt.drawRect(0, 0, self.width(), self.height()) - - pt.end() - - def mousePressEvent(self, event): - if event.x() < self.parent().width() - 10: - self.start = self.mapToGlobal(event.pos()) - self.pressing = True - else: - self.parentMousePressEvent(event) - - def mouseReleaseEvent(self, event): - self.pressing = False - self.parentMouseReleaseEvent(event) - - def mouseMoveEvent(self, event): - if self.pressing: - end = self.mapToGlobal(event.pos()) - self.movement = end - self.start - self.parent().setGeometry(self.mapToGlobal(self.movement).x(), - self.mapToGlobal(self.movement).y(), - self.parent().width(), - self.parent().height()) - self.start = end - else: - self.parentMouseMoveEvent(event) - - - -class ImageBox(QLabel): - def __init__(self, source, keepAspectRatio=True, smoothScale=True): - super().__init__() - - self.source = source - self.animated = False - - self.keepAspectRatio = keepAspectRatio - self.smoothScale = smoothScale - - if self.source is not None: self.setSource(self.source) - - def setSource(self, source): - self.source = source - - if self.source.startswith("http"): - - if self.source.endswith(".gif"): - r = requests.get(self.source) - - with open("temp.gif", "wb") as f: - f.write(r.content) - - self.animated = True - self.orgmovie = QMovie("temp.gif") - self.movie = self.orgmovie - self.setMovie(self.movie) - self.movie.start() - - else: - r = requests.get(self.source) - - self.animated = False - self.orgpixmap = QPixmap.fromImage(QImage.fromData(r.content)) - self.pixmap = self.orgpixmap - self.setPixmap(self.pixmap) - - else: - if source.endswith(".gif"): - self.animated = True - self.movie = QMovie(source) - self.setMovie(self.movie) - self.movie.start() - - else: - self.animated = False - self.orgpixmap = QPixmap(source) - self.pixmap = QPixmap(source) - self.setPixmap(self.pixmap) - - self.resizeEvent(None) - - def resizeEvent(self, event): - w, h = self.width(), self.height() - - t = (Qt.FastTransformation, Qt.SmoothTransformation)[self.smoothScale] - k = (Qt.IgnoreAspectRatio, Qt.KeepAspectRatio)[self.keepAspectRatio] - - if self.animated: - self.movie.setScaledSize(QSize(w, h)) - - else: - self.pixmap = self.orgpixmap.scaled(w, h, transformMode=t, aspectRatioMode=k) - self.setPixmap(self.pixmap) - - - -class ColorPreview(QWidget): - def __init__(self): - super().__init__() - - self.color = QColor(0, 0, 0) - - self.layout = QVBoxLayout() - self.setLayout(self.layout) - self.label = QLabel("#000000") - self.layout.addWidget(self.label, alignment=Qt.AlignBottom|Qt.AlignHCenter) - - self.setFixedSize(90, 65) - - def setColor(self, color): - self.color = color - self.label.setText(self.color.name()) - - def paintEvent(self, event): - pt = QPainter() - pt.begin(self) - pt.setRenderHint(QPainter.Antialiasing) - - pt.setPen(QPen(QColor(0, 0, 0, 0))) - pt.setBrush(QBrush(QColor(225, 225, 225))) - - pt.drawRoundedRect(0, 0, self.width(), self.height(), 9, 9) - - pt.setBrush(QBrush(self.color)) - - pt.drawRoundedRect(15, 15, self.width()-30, self.height()-45, 4, 4) - - pt.end() - - -# TODO: Complete optimized color wheel & picker are and cursor -class ColorPicker(QWidget): - - colorChanged = pyqtSignal(QColor) - - def __init__(self): - super().__init__() - - self.color = None - - self.radius = 110 - self.setFixedSize(self.radius*2, self.radius*2) - - self.mouse_x, self.mouse_y = 0, 0 - - def mouseMoveEvent(self, event): - self.mouse_x, self.mouse_y = event.x(), event.y() - - dist = sqrt(pow(self.mouse_x-self.radius, 2)+pow(self.mouse_y-self.radius, 2)) - - def paintEvent(self, event): - pt = QPainter() - pt.begin(self) - pt.setRenderHint(QPainter.Antialiasing) - - for i in range(self.width()): - for j in range(self.height()): - color = QColor(255, 255, 255, 255) - h = (atan2(i-self.radius, j-self.radius)+pi)/(2.*pi) - s = sqrt(pow(i-self.radius, 2)+pow(j-self.radius, 2))/self.radius - v = 1.0 - - rr = 0.65 - - ww = self.width()/(rr*5.72) - hh = self.height()/(rr*5.72) - - if rr < s < 1.0: - color.setHsvF(h, s, v, 1.0) - pt.setPen(color) - pt.drawPoint(i, j) - - elif ww < i < self.width()-ww and hh < j < self.height()-hh: - h = 0.8 - s = (i - ww) / (self.width()-ww*2) - v = 1-((j - hh) / (self.height()-hh*2)) - - hh = int(h*360) - ss = int(s*255) - vv = int(v*255) - color.setHsv(hh, ss, vv) - pt.setPen(color) - pt.drawPoint(i, j) - - pt.end() - - - -# this is a data class which is meant to be used by DragDropFile -class FileDetails: - def __init__(self, path, content): - self.path = path - self.content = content - - self._path = pathlib.Path(self.path) - - self.name = self._path.name - self.pureName = self._path.stem - self.extension = self._path.suffix - - - -class DragDropFile(QWidget): - - fileDropped = pyqtSignal(FileDetails) - - def __init__(self): - super().__init__() - - self.setAcceptDrops(True) - - self.borderColor = QColor(190, 190, 190) - self.hoverBackground = QColor(245, 245, 250) - self.borderRadius = 26 - self.borderWidth = 6 - - self.layout = QVBoxLayout() - self.layout.setAlignment(Qt.AlignCenter) - self.setLayout(self.layout) - - self.title_lbl = QLabel("Drop your file here!") - self.filename_lbl = QLabel("") - - self.layout.addWidget(self.title_lbl, alignment=Qt.AlignHCenter) - self.layout.addSpacing(7) - self.layout.addWidget(self.filename_lbl, alignment=Qt.AlignHCenter) - - self.title_lbl.setStyleSheet("font-size:19px;") - self.filename_lbl.setStyleSheet("font-size:14px; color: #666666;") - - self.dragEnter = False - - self.file = None - - def setTitle(self, title): - self.title_lbl.setText(title) - - def getFile(self): - return - - def dragEnterEvent(self, event): - if event.mimeData().hasUrls(): - self.dragEnter = True - event.accept() - self.repaint() - else: - event.ignore() - - def dragLeaveEvent(self, event): - self.dragEnter = False - self.repaint() - - def dropEvent(self, event): - mime = event.mimeData() - file = FileDetails(mime.urls()[0].toLocalFile(), mime.text()) - - self.filename_lbl.setText(file.name) - - self.fileDropped.emit(file) - - self.dragEnter = False - self.repaint() - - def paintEvent(self, event): - pt = QPainter() - pt.begin(self) - pt.setRenderHint(QPainter.Antialiasing) - - pen = QPen(self.borderColor, self.borderWidth, Qt.DotLine, Qt.RoundCap) - pt.setPen(pen) - - if self.dragEnter: - brush = QBrush(self.hoverBackground) - pt.setBrush(brush) - - pt.drawRoundedRect(self.borderWidth, self.borderWidth, self.width()-self.borderWidth*2, self.height()-self.borderWidth*2, self.borderRadius, self.borderRadius) - - pt.end() - - - -class CodeTextEdit(QWidget): - - LANG_DISPLAY = { - "plain" : "Plain text", - "python" : "Python", - "py" : "Python", - "cpp" : "C++", - "c++" : "C++" - } - - def __init__(self): - super().__init__() - - self.layout = QHBoxLayout() - self.layout.setContentsMargins(0, 0, 0, 0) - self.setLayout(self.layout) - - self.layout.addSpacing(37) - - self.editorlyt = QVBoxLayout() - self.editorlyt.setSpacing(0) - self.editorlyt.setContentsMargins(0, 0, 0, 0) - self.layout.addLayout(self.editorlyt) - - self.editor = QPlainTextEdit() - self.editor.setLineWrapMode(QPlainTextEdit.NoWrap) - self.editorlyt.addWidget(self.editor) - - self.setStyleSheet("QPlainTextEdit {font-family:Consolas; font-size:14px; color:#222222;}") - - self.highlighter = SyntaxHighlighter(self.editor.document()) - - self.sliderVal = 0 - self.lastdigit = 2 - vs = self.editor.verticalScrollBar() - - @vs.rangeChanged.connect - def slot(v): - self.sliderVal = self.editor.verticalScrollBar().value() - - if len(str(vs.maximum()+15)) > self.lastdigit: - self.lastdigit = len(str(vs.maximum()+15)) - self.layout.insertSpacing(0, 10) - - self.update() - - @vs.valueChanged.connect - def slot(v): - self.sliderVal = v - - self.update() - - self.statusbar = QWidget() - self.statusbar.setFixedHeight(26) - self.statusbarlyt = QHBoxLayout() - self.statusbarlyt.setContentsMargins(10, 0, 30, 0) - self.statusbar.setLayout(self.statusbarlyt) - self.editorlyt.addWidget(self.statusbar) - - self.cursor_lbl = QLabel("0:0") - self.cursor_lbl.setStyleSheet("font-size:16px;") - self.statusbarlyt.addWidget(self.cursor_lbl, alignment=Qt.AlignLeft|Qt.AlignVCenter) - - self.lang_lbl = QLabel("Plain text") - self.lang_lbl.setStyleSheet("font-size:16px;") - self.statusbarlyt.addWidget(self.lang_lbl, alignment=Qt.AlignRight|Qt.AlignVCenter) - - @self.editor.cursorPositionChanged.connect - def slot(): - self.cursor_lbl.setText(f"{self.editor.textCursor().blockNumber()}:{self.editor.textCursor().positionInBlock()}") - - def setTheme(self, theme): - self.highlighter.setTheme(theme) - self.highlighter.setRules() - - c = self.highlighter.theme["background"] - rgb = f"rgb({c.red()}, {c.green()}, {c.blue()})" - - cc = self.highlighter.theme["identifier"] - crgb = f"rgb({cc.red()}, {cc.green()}, {cc.blue()})" - - self.editor.setStyleSheet(f"QPlainTextEdit {{background-color: {rgb}; color: {crgb};}}") - - self.cursor_lbl.setStyleSheet(f"color: {crgb}; font-size:16px;") - self.lang_lbl.setStyleSheet(f"color: {crgb}; font-size:16px;") - - self.highlighter.rehighlight() - self.update() - - def setLang(self, lang): - self.lang_lbl.setText(CodeTextEdit.LANG_DISPLAY[lang]) - - self.highlighter.setLang(lang) - self.highlighter.setRules() - self.highlighter.rehighlight() - self.update() - - def loadFile(self, filepath, encoding="utf-8"): - - if filepath.endswith(".py"): lang = "python" - elif filepath.endswith(".cpp"): lang = "cpp" - else: lang = "plain" - - with open(filepath, "r", encoding=encoding) as f: - self.editor.setPlainText(f.read()) - - self.setLang(lang) - - def paintEvent(self, event): - pt = QPainter() - pt.begin(self) - pt.setRenderHint(QPainter.Antialiasing) - - pt.setBrush(QBrush(self.highlighter.theme["lines-background"])) - - pt.drawRect(0, 0, self.width(), self.height()) - - font = self.editor.font() - pt.setFont(font) - - gap = font.pixelSize() + 3 - - for i in range((self.height()//gap)): - font = pt.font() - pt.setFont(font) - pt.setPen(QPen(self.highlighter.theme["lines"])) - - pt.drawText(13, i*gap, str(i+self.sliderVal)) - - pt.setBrush(QBrush(self.highlighter.theme["background"])) - pt.setPen(QPen(QColor(0, 0, 0, 0))) - pt.drawRect(3, self.height()-self.statusbar.height(), 40, self.statusbar.height()-6) - - pt.end() - - - -class EmbedWindow(QWidget): - - closed = pyqtSignal() - - def __init__(self, parent, pos=None): - super().__init__(parent) - - if pos is None: - pos = (random.randint(0, self.parent().width()-285), random.randint(0, self.parent().height()-190)) - self.setFixedSize(285, 190) - self.setGeometry(pos[0], pos[1], 285, 190) - - self.shadow = QGraphicsDropShadowEffect(self) - self.shadow.setBlurRadius(8) - self.shadow.setColor(QColor(0, 0, 0, 110)) - self.shadow.setOffset(0, 2) - self.setGraphicsEffect(self.shadow) - - self.borderRadius = 12 - self.headerColor = QColor(245, 66, 126) - self.headerHeight = 36 - - self.pressed = None - self.pressed_pos = None - - self.layout = QVBoxLayout() - self.layout.setContentsMargins(0, 0, 0, 0) - self.layout.setAlignment(Qt.AlignTop) - self.setLayout(self.layout) - - self.header = QWidget() - self.header.setFixedHeight(self.headerHeight) - self.header_lyt = QHBoxLayout() - self.header_lyt.setContentsMargins(0, 0, 0, 0) - self.header_lyt.setSpacing(0) - self.header.setLayout(self.header_lyt) - - self.contentwdt = QWidget() - self.content = QVBoxLayout() - self.contentwdt.setLayout(self.content) - self.content_visible = True - self.last_height = self.height() - - self.layout.addWidget(self.header) - self.layout.addWidget(self.contentwdt) - - self.title = QLabel("New window") - self.title.setStyleSheet("color:white; font-size:14px; font-family:Montserrat-Regular;") - - self.close_btn = StyledButton("✕") - self.close_btn.opacity.setOpacity(0.999) - self.close_btn.setFixedSize(self.headerHeight, self.headerHeight) - self.close_btn.setStyleSheet("color:white; font-size:17px;") - self.close_btn.backgroundColor = QColor(245, 66, 126) - self.close_btn.borderColor = QColor(245, 66, 126) - self.close_btn.circleColor = self.close_btn.backgroundColor.lighter(146) - self.close_btn.hoverLighter = True - self.close_btn.borderRadius = self.borderRadius - self.close_btn.hoverFactor = 3.8 - - @self.close_btn.clicked.connect - def slot(): - self.close() - self.destroy() - self.closed.emit() - - self.deta_btn = StyledButton("▲") - self.deta_btn.opacity.setOpacity(0.999) - self.deta_btn.setFixedSize(self.headerHeight, self.headerHeight) - self.deta_btn.setStyleSheet("color:white; font-size:17px;") - self.deta_btn.backgroundColor = QColor(245, 66, 126) - self.deta_btn.borderColor = QColor(245, 66, 126) - self.deta_btn.circleColor = self.deta_btn.backgroundColor.lighter(146) - self.deta_btn.hoverLighter = True - self.deta_btn.borderRadius = self.borderRadius - self.deta_btn.hoverFactor = 3.8 - - @self.deta_btn.clicked.connect - def slot(): - if self.content_visible: - self.content_visible = False - self.contentwdt.hide() - self.last_height = self.height() - self.deta_btn.textLbl.setText("▼") - self.anim.start(reverse=True) - - else: - self.content_visible = True - self.contentwdt.show() - self.deta_btn.textLbl.setText("▲") - self.anim.start() - - self.header_lyt.addSpacing(10) - self.header_lyt.addWidget(self.title, alignment=Qt.AlignVCenter) - self.header_lyt.addWidget(self.deta_btn, alignment=Qt.AlignVCenter|Qt.AlignRight) - self.header_lyt.addWidget(self.close_btn, alignment=Qt.AlignVCenter) - - self.anim = AnimationHandler(self, 0, 1, Animation.easeOutSine) - self.anim.interval = 10/1000 - self.anim.value = 1 - - def setTitle(text): - self.title.setText(text) - - def setControlsVisible(b): - if not b: - self.close_btn.hide() - self.deta_btn.hide() - - else: - self.close_btn.show() - self.deta_btn.show() - - def update(self, *args, **kwargs): - self.anim.update() - super().update(*args, **kwargs) - - def mousePressEvent(self, event): - self.startpos = self.pos() - self.__mousePressPos = None - self.__mouseMovePos = None - if event.button() == Qt.LeftButton: - self.__mousePressPos = event.globalPos() - self.__mouseMovePos = event.globalPos() - - def mouseMoveEvent(self, event): - if event.buttons() == Qt.LeftButton and event.y() <= self.headerHeight: - currPos = self.mapToGlobal(self.pos()) - globalPos = event.globalPos() - diff = globalPos - self.__mouseMovePos - newPos = self.mapFromGlobal(currPos + diff) - self.move(newPos) - - self.__mouseMovePos = globalPos - - self.raise_() - - def mouseReleaseEvent(self, event): - if self.__mousePressPos is not None: - moved = event.globalPos() - self.__mousePressPos - if moved.manhattanLength() > 3: - event.ignore() - return - - def paintEvent(self, event): - pt = QPainter() - pt.begin(self) - pt.setRenderHint(QPainter.Antialiasing) - - pen = QPen(QColor(0, 0, 0, 0), 1) - brush = QBrush(QColor(252, 252, 252)) - pt.setBrush(brush) - pt.setPen(pen) - - self.setFixedHeight(((self.last_height-36)*self.anim.current())+36) - pt.drawRoundedRect(0, 0, self.width(), self.height()*self.anim.current(), self.borderRadius, self.borderRadius) - - brush = QBrush(self.headerColor) - pt.setBrush(brush) - - pt.drawRoundedRect(0, 0, self.width(), self.headerHeight, self.borderRadius, self.borderRadius) - if self.content_visible: - pt.drawRect(0, self.headerHeight/2, self.width()*2, self.headerHeight/2) - - pt.end() - - if not self.anim.done(): self.update() - - - -class StyledButton(QAbstractButton): - - defaultStyles = ("flat", "hyper") - - def __init__(self, text="", style="flat", icon=None, fixedBottom=False): - super().__init__() - - self.text = text - - self.layout = QHBoxLayout() - self.layout.setContentsMargins(0, 0, 0, 0) - self.setLayout(self.layout) - - if self.text: - self.textLbl = QLabel(self.text) - self.layout.addWidget(self.textLbl, alignment=Qt.AlignCenter) - - self._icon = None - if icon is not None: - self.setIcon(icon) - - # TODO: find a better way for opacity - self.opacity = QGraphicsOpacityEffect(self) - self.opacity.setOpacity(1) - self.setGraphicsEffect(self.opacity) - - if style not in StyledButton.defaultStyles: - raise Exception(f"'{style}' is not a default style.") - self.style = style - - self.dropShadow = False - self.shadow = None - - self.borderRadius = 6 - - if self.style == "flat": - self.anim = AnimationHandler(self, 0, 5, Animation.easeOutCubic) - self.animcirc = AnimationHandler(self, 0, 100, Animation.easeOutSine) - self.animcirc.interval = 25 / 1000 - - self.borderColor = QColor(52, 189, 235) - self.borderWidth = 2 - self.backgroundColor = QColor(255, 255, 255) - - self.hoverLighter = False - self.hoverFactor = 1 - - elif self.style == "hyper": - self.animline = AnimationHandler(self, 0, 1, Animation.easeOutCubic) - self.animline.value = 0 - - self.borderColor = QColor(235, 52, 91) - self.borderWidth = 4 - - self.fixedBottom = fixedBottom - - self.circleColor = self.borderColor.lighter(166) - - self._press_reset = False - self.mouse_x, self.mouse_y = 0, 0 - - def setIcon(self, filepath): - self._icon = ImageBox(filepath) - self._icon.setFixedSize(18, 18) - if self.text: - self.layout.insertWidget(0, self._icon, alignment=Qt.AlignVCenter|Qt.AlignRight) - self.layout.addSpacing(30) - else: - self.layout.insertWidget(0, self._icon, alignment=Qt.AlignCenter) - - def setIconSize(self, width, height): - self._icon.setFixedSize(width, height) - - def setDropShadow(self, bshad): - if bshad: - self.dropShadow = True - if self.shadow is None: - self.shadow = QGraphicsDropShadowEffect(self) - self.shadow.setBlurRadius(6) - self.shadow.setColor(QColor(0, 0, 0, 100)) - self.shadow.setOffset(0, 2) - self.setGraphicsEffect(self.shadow) - - else: - self.dropShadow = False - self.shadow.setColor(QColor(0, 0, 0, 0)) - - def update(self, *args, **kwargs): - if self.style == "flat": - self.anim.update() - self.animcirc.update() - elif self.style == "hyper": - self.animline.update() - super().update(*args, **kwargs) - - def enterEvent(self, event): - if self.style == "flat": self.anim.start() - elif self.style == "hyper": self.animline.start() - - def leaveEvent(self, event): - if not self._press_reset and self.style == "flat": - self.anim.start(reverse=True) - if self.style == "hyper": - self.animline.start(reverse=True) - self._press_reset = False - - def mousePressEvent(self, event): - self.mouse_x, self.mouse_y = event.x(), event.y() - if self.style == "flat": - self.animcirc.start() - if not self._press_reset: - self.anim.start(reverse=True) - self._press_reset = True - super().mousePressEvent(event) - - def paintEvent(self, event): - pt = QPainter() - pt.begin(self) - pt.setRenderHint(QPainter.Antialiasing) - - if self.style == "flat": - if self.isEnabled(): - pen = QPen(self.borderColor, self.borderWidth, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - if self.hoverLighter: brush = QBrush(self.backgroundColor.lighter(100+self.anim.current()*self.hoverFactor)) - else: brush = QBrush(self.backgroundColor.darker(100+self.anim.current()*self.hoverFactor)) - else: - pen = QPen(self.borderColor.darker(106), self.borderWidth, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - brush = QBrush(self.backgroundColor.darker(103)) - pt.setPen(pen) - pt.setBrush(brush) - - pt.drawRoundedRect(1, 1, self.width()-2, self.height()-2, self.borderRadius, self.borderRadius) - - pt.setPen(QPen(QColor(0, 0, 0, 0), 0)) - c = QColor(self.circleColor.red(), self.circleColor.green(), self.circleColor.blue(), 255-(self.animcirc.current()*2.5)) - pt.setBrush(QBrush(c, Qt.SolidPattern)) - - pt.drawEllipse(self.mouse_x-self.animcirc.current()/1, - self.mouse_y-self.animcirc.current()/1, - self.animcirc.current()*2, - self.animcirc.current()*2) - - elif self.style == "hyper": - if self.isEnabled(): - pen = QPen(self.borderColor, self.borderWidth, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - else: - pen = QPen(self.borderColor.darker(110), self.borderWidth, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - pt.setPen(pen) - - if self.fixedBottom: a = 1 - else: a = self.animline.current() - - pt.drawLine(self.width()//2, self.height(), self.width()//2+(a*(self.width()//2)), self.height()) - pt.drawLine(self.width()//2, self.height(), self.width()//2+(a*(self.width()//-2)), self.height()) - - pt.end() - if self.style == "flat": - if not self.anim.done(): self.update() - if not self.animcirc.done(): self.update() - elif self.style == "hyper": - if not self.animline.done(): self.update() - - - -class ToggleSwitch(QWidget): - - defaultStyles = ("win10", "ios", "android") - toggled = pyqtSignal(name="toggled") - - def __init__(self, text="", style="win10", on=False): - super().__init__() - - self.text = text - - self.on = on - - # TODO: find a better way for opacity - self.opacity = QGraphicsOpacityEffect(self) - self.opacity.setOpacity(1) - self.setGraphicsEffect(self.opacity) - - if style not in ToggleSwitch.defaultStyles: - raise Exception(f"'{style}' is not a default style.") - self.style = style - - - if self.style == "win10": - self.onColor = QColor(0, 116, 208) - self.offColor = QColor(0, 0, 0) - - self.handleAlpha = True - self.handleColor = QColor(255, 255, 255) - - self.width = 35 - self.radius = 26 - - elif self.style == "ios": - self.onColor = QColor(73, 208, 96) - self.offColor = QColor(250, 250, 250) - - self.handleAlpha = False - self.handleColor = QColor(255, 255, 255) - - self.width = 21 - self.radius = 29 - - elif self.style == "android": - self.onColor = QColor(0, 150, 136) - self.offColor = QColor(255, 255, 255) - - self.handleAlpha = True - self.handleColor = QColor(255, 255, 255) - - self.width = 35 - self.radius = 26 - - self.setMinimumSize(self.width + (self.radius*2) + (len(self.text)*10), self.radius+2) - - self.anim = AnimationHandler(self, 0, self.width, Animation.easeOutCirc) - if self.on: self.anim.value = 1 - - def isToggled(self): - return self.on - - def desaturate(self, color): - cc = getattr(self, color) - h = cc.hue() - if h < 0: h = 0 - s = cc.saturation()//4 - if s > 255: s = 255 - c = QColor.fromHsv(h, s, cc.value()) - setattr(self, color, c) - - def saturate(self, color): - cc = getattr(self, color) - h = cc.hue() - if h < 0: h = 0 - s = cc.saturation()*4 - if s > 255: s = 255 - c = QColor.fromHsv(h, s, cc.value()) - setattr(self, color, c) - - def update(self, *args, **kwargs): - self.anim.update() - super().update(*args, **kwargs) - - def mousePressEvent(self, event): - if self.isEnabled(): - if self.on: - self.on = False - self.anim.start(reverse=True) - else: - self.on = True - self.anim.start() - self.update() - - self.toggled.emit() - - def changeEvent(self, event): - if event.type() == QEvent.EnabledChange: - if self.isEnabled(): - self.saturate("onColor") - self.saturate("offColor") - self.saturate("handleColor") - self.opacity.setOpacity(1.00) - else: - self.desaturate("onColor") - self.desaturate("offColor") - self.desaturate("handleColor") - self.opacity.setOpacity(0.4) - - self.update() - - else: - super().changeEvent(event) - - def paintEvent(self, event): - pt = QPainter() - pt.begin(self) - pt.setRenderHint(QPainter.Antialiasing) - - if self.style == "win10": - - if self.on: - pen = QPen(self.onColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - pt.setPen(pen) - brush = QBrush(self.onColor) - pt.setBrush(brush) - - - r = self.radius - w = self.width - - pt.drawChord(r, 1, r, r, 90*16, 180*16) - pt.drawChord(r+w, 1, r, r, -90*16, 180*16) - pt.drawRect(r+r//2, 1, w, r) - - if self.handleAlpha: pt.setBrush(pt.background()) - else: pt.setBrush(QBrush(self.handleColor)) - offset = r*0.4 - pt.drawEllipse(r+offset/2+self.anim.current() , 1+offset/2 , r-offset , r-offset) - - else: - pen = QPen(self.offColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - pt.setPen(pen) - - r = self.radius - w = self.width - - pt.drawArc(r, 1, r, r, 90*16, 180*16) - pt.drawArc(r+w, 1, r, r, -90*16, 180*16) - pt.drawLine(r+r//2, 1, r+w+r//2, 1) - pt.drawLine(r+r//2, r+1, r+w+r//2, r+1) - - brush = QBrush(self.offColor) - pt.setBrush(brush) - offset = r*0.4 - pt.drawEllipse(r+offset/2+self.anim.current() , offset/2+1 , r-offset , r-offset) - - elif self.style == "ios": - - if self.on: - pen = QPen(self.onColor, 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - pt.setPen(pen) - brush = QBrush(self.onColor) - pt.setBrush(brush) - - r = self.radius - w = self.width - - pt.drawChord(r, 1, r, r, 90*16, 180*16) - pt.drawChord(r+w, 1, r, r, -90*16, 180*16) - pt.drawRect(r+r//2, 1, w, r) - - if self.handleAlpha: pt.setBrush(pt.background()) - else: pt.setBrush(QBrush(self.handleColor)) - offset = r*0.025 - pt.drawEllipse(r+offset/2+self.anim.current() , 1+offset/2 , r-offset , r-offset) - - else: - pen = QPen(self.offColor.darker(135), 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - pt.setPen(pen) - brush = QBrush(self.offColor) - pt.setBrush(brush) - - r = self.radius - w = self.width - - pt.drawChord(r, 1, r, r, 90*16, 180*16) - pt.drawChord(r+w, 1, r, r, -90*16, 180*16) - pt.drawRect(r+r//2, 1, w, r) - pt.setPen(QPen(self.offColor)) - pt.drawRect(r+r//2-2, 2, w+4, r-2) - - if self.handleAlpha: pt.setBrush(pt.background()) - else: pt.setBrush(QBrush(self.handleColor)) - pt.setPen(QPen(self.handleColor.darker(160))) - offset = r*0.025 - pt.drawEllipse(r+offset/2+self.anim.current() , 1+offset/2 , r-offset , r-offset) - - elif self.style == "android": - - if self.on: - pen = QPen(self.onColor.lighter(145), 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - pt.setPen(pen) - brush = QBrush(self.onColor.lighter(145)) - pt.setBrush(brush) - - r = self.radius - w = self.width - - pt.drawChord(r+r//4, 1+r//4, r//2, r//2, 90*16, 180*16) - pt.drawChord(r+w+r//4, 1+r//4, r//2, r//2, -90*16, 180*16) - pt.drawRect(r+r//2, 1+r//4, w, r//2) - - pt.setBrush(QBrush(self.onColor)) - pt.setPen(QPen(self.onColor)) - pt.drawEllipse(r+self.anim.current(), 1 , r, r) - - else: - pen = QPen(self.offColor.darker(130), 1, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin) - pt.setPen(pen) - brush = QBrush(self.offColor.darker(130)) - pt.setBrush(brush) - - r = self.radius - w = self.width - - pt.drawChord(r+r//4, 1+r//4, r//2, r//2, 90*16, 180*16) - pt.drawChord(r+w+r//4, 1+r//4, r//2, r//2, -90*16, 180*16) - pt.drawRect(r+r//2, 1+r//4, w, r//2) - - pt.setBrush(QBrush(self.offColor)) - pt.setPen(QPen(self.offColor.darker(140))) - pt.drawEllipse(r+self.anim.current(), 1 , r, r) - - font = pt.font() - pt.setFont(font) - pt.setPen(QPen(Qt.black)) - - pt.drawText(w+r*2+10, r//2+r//4, self.text) - - pt.end() - - if not self.anim.done(): self.update()

2{lek*HyoKEARd`|E-FEWd!K^9Q*C+f>uOB^^6Bn*~yQbh&5_R z(wQnr9sWL~T@t+&=#grN)T65r@(sg;4-BQ~tQD=BMBzafNJDD`A@~H7lC_*);R&e{!}d0{?W?ex`x$3$P>nP~BnKbXy=gPA6ETa9YODa`QBUbHd6w&WYX% zPO+&4KHkSU!~-b;Pk&zjPXgOG=f9ikn|y-mptVhPjGAd^w8R@U$QU=KTkjszpVj8i6LI0cGa zhX;PZ*SldS*-XP7AR4L6x2kLPr}wy^bVx&Zs+}8Beg6r$p?9fNTNIe+rebIsBOhhU5WON z#Q~xyq!=tpHS@Jw%VixfXH}gcC);Ar>2rQy`ChTtD?rRGdS&7(+)CQ2)Q(cd*hh`9hx|#tq-x=l!*5qH(H^oZ>GJ=_*Mv_*qW;}$N6yQ{fAiWA od?)xnys!Kh#qkeIY<^%*ll|DU%IXF1jVxes+UgYcq+9fV0WdXnH~;_u literal 0 HcmV?d00001 diff --git a/examples/data/spinnericon.png b/examples/data/spinnericon.png new file mode 100644 index 0000000000000000000000000000000000000000..266d41f65c00f16c0a29df5b329c046b6134117c GIT binary patch literal 56077 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 literal 0 HcmV?d00001 diff --git a/examples/data/spinnershowcase.gif b/examples/data/spinnershowcase.gif new file mode 100644 index 0000000000000000000000000000000000000000..ca15e05f6219e2694451c95b42f33184a5ba6529 GIT binary patch literal 79649 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