From 34db86fdac73a0db616b707ce43245d81d4811cf Mon Sep 17 00:00:00 2001 From: admin Date: Sun, 24 May 2026 10:53:42 +0000 Subject: [PATCH] ui v1.1 --- ui/app.ico | Bin 0 -> 8945 bytes ui/editor.py | 37 ++++++++++++++++++++++++++++--------- ui/styles.py | 2 +- 3 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 ui/app.ico diff --git a/ui/app.ico b/ui/app.ico new file mode 100644 index 0000000000000000000000000000000000000000..609541d827a2b77d1523df027b97a1b3f324a3d8 GIT binary patch literal 8945 zcmeHsXH-*N*WgVE5PE`$^d=poiPBprN~B8>1OzEk1cXSFUZfZ4AVrFRhyeuwkuFWT zK1c%61&Iowg(_{X&-2cj^{qAYz3=>)Uvt(^*~ z$&+0g@%^52PRvc=3j^dnz`jPxlMmW#W+wdnFmjDwt@;Ve^ffaT`WZLg`K9rR(5|Ix z8b}SgwKWRx1_E6Iu^Vl9mL^qP!>=Z&0yaiULR4&J^)I_l@8vzgy&oo!=J^;=!l`%L zEhxfkeQi48r3ZZ;IILLXcUh4(mzWb%=Yrt8j#PB40UJVb0kLscknu|kc33m59ZUC< zQLE`;=Xz~PR8$7WfMs8+r#v$qvl5B`;>PvyzO~gaf4`o(--zOpv0#vT-!wP&*JNlb zoHzJ3*1Wa=Gml@raw%uXP$|U(?a?%yqd>UrFsxOu4@Fl+#tD{xks>iTw>RNzrAR?Q z?sbR7FSX}lGt*H$RXeCB7;};GXT!&@qRXy}WU-X(L?%o74PX8>&vSw-<;>c@1HA?* z+xRftB70^)`6e~%8q{N2hOdY$T(Gp#GG&SlcrHZvkk+;+dhuJ%%a?P0HWt4hF;IPM zxGLSZn)%mv1H0gbNe8xWh5qrMJNT|017vF937O6Ses}krhY)y2fUdTIRt?H7@_%!a ze`JT{@0(okS2+LxsL?++Icu()GA)I0beC>(Tu773SuPOj39r?VXkJ;cSf;rw_~W}~ z;I$gdCrJzgDvd~YapMIUVXxN$tZ9@OG$a~Gx6$^?nG!UoP#}m_4DpmcV&6xg0>;{& zC7g@uD*n8&e`h&xy-r*VOE%(s&fNgr937YWSJAo66hoOjJ=L8@ZIZ4}Po?^1C^d}O z>{(8~SdD!p?$r)B`cV4tY8m-Xp3q&TLBY9V7GF)cwGGzM9%5C~2-4Wyr_zniHqHV5n8PBv(^){ca3x|cUcYTwcpHq(TL z_xPJWy|xLuxloJ;ZDw~nb}^AHWUOv2B%OcXm?@ct&naT$N@LeqG-mXnV&N_HVNin= zrln*EHK=ULolm@9lk^47d-q+>{t5hW zu6!Bxv18-N5o>dmEm^KFHxL0UX}D^JZd)k`8zdc<<9<^xQ^>8Ev1`G6;Jzf~vtgDf z*4N8OP5n*l?hm8Qhg-`TFyMJw;kSj(d&pu`@~FxaLqB7i z<9pDDu4Gl}X-h_qqYA7JM)HZjCx~w3caND>9uNspg{;>_b`df5g9@pe*4^Vdz}|8} zy{tZd;VV0xc!1z_bRP2aHQ9578E$vt3`_ls%dam;$B|RM>!e!$E9hdh%Y)I{P0<4P zJniDgd{@v_S(!3wEn9z8+=(sw72R;wmk2qznfq=at_l?Qu&ik`fZmFQtDos7w?0!mqnvb>mI09LQsQ z6y@b_k>)zIdwdB61xrq?ndz49^J{BsF6Eh@tXgCkr9NMCC$>ClJDm*bpa8@yJWz3F zqla!B{j;{Um2Yu*CZf6J+vQN%4O3-wRZQkKJ0M$taTL3xHQG$mE%h1~s-p#pb!zMW zbFHTFpP8bNB~Axg-E~$6%@qsCA-P5;())F5>v0bYDXZ^!=4@MAn`a)Q)LeXN+^x~J zV??Z^g;#@B9}7upsLp{6-ffhX2ACsVM1PbtsIKlG<>S8cG0JK3P)?*NgM*!xLYv>t z99eT+#IWjRA*NfyJViXkA+6$PtaJTg68hWnvZMSci@TQbjz~hO@6!rd{g%F53&$^3 zH?h)PqLKTmvtPfKx)xvk;NLf?Q;RquHUxZ+`6mcyJVsH0^SxkKt&UtbRz zRrusHJi_1PJE~FREYn<_piO0DN8q^Bdt@?Ld2=mk%`#gbtI#Ei%69r8d=moLxk(tG zkFfq$wbfU#>~(i78{!X}oMoDkS?J)iODbt-oqY4?s??Y_l{9$zk1Nk(=J!~S`e))v z8O+NHr>5a&r%dBj2SN^O0j{nh08m_Jem?oGv0j3{f-wFE^kT)@i?IxTZ{YP}LA7Hw zeI(C~^ko{taqse*qzekfjg5IFH8qABA8C;fADhgpn~6js_t~BEN{T>b~icL*zuW1T$ozY+33o>=N{A-8}Y#sUDD$-ji$Qr~l2ohg)SI!_lRfU@$A zLO%d{Vs1Z3itH&hxtXU(?``=o!qj(M^8q#U<8!a=$Mvro_Xx(TIE>Lg>Wcrm5Pd9f zKzGPLWUwtmYCoJ)?#P2o+Q&B7iMv%cfI|0^g6`rp#rVQ|i7xk>9^HcHJL#3jZXN`C zdm9t?kC^d0Lv^5ZOhcEg#=6zCSH!GB`9oesj#% zW{A`pFwytwr{n|EzR~=O!`?=skUa~OcS?(KR6s=F0iE~IKiPS;lH4+foDwl})@JcR)JZp;YVi($k(HCy%9GC9hnt(5oP-&Teh3iB zbL&R@7er~Mr}(w`xj7tX|5j|by%=u^p7%`}hZ;>TM>K-%+~XyAi5P=s>&C4n9(bwQ z^<}i(D~a|yHMO-KNk`EzQTtb=TI;aB9}g87g@{b?<=w9Cu%{z}qSE?zZRJ(Op;Qm4 zyYW7JscOmjMm#l;rcp}h}5eRxr#eIJ*~8@ z^|!Oc-3FOD!O$(`%SS)~v3eqpM^#cvf8={ii+W$L%=2%tp~aS%pwFQ;1D#(GUIL7~ z(O;O~Vtc)h@d-Tp3gKq1*+k1Hm$R$x??P#|JUS?GeJP!d8pR7dMh_6e@^B^&7&SeV zoH8OZO1rF|8XrQt!HBKIO62y zW`Og`WtzNYeslu>x>&jedMtKCrm{XIin~1E{2EvK!>qvyy9DXK+R0LeisJ$bhQAi( z2lae$YbeS>mor$c=6G{h_$XLL&!6O1u;x|-b}NL1`T6aIJW_J1fx5)`EOJ8@b|)q# z$~>DA3FOTs=GF0KWo4&@4z-`#KSwDzkGu?XNQ+6wcFx!@Gu0^_;}6K2?!RMtifjEl zNd9jEA9YX_)&Ew-m#*G(pej!OOBM4w+&Qi>_0I=g#ssax9Pt z%rAwTq0^*SS_%sbue)C=6P8J2hR`UUm7DycV;B zs?BzzF>~AB9V^x67}v;uEoVg4JPe8+*6^Y$Fxw}o9l0JMDyz13&;?=B>P^m!n8t+0eYZg{dp?+DSlh^362tS2gvDOM6p|Ej2o1Q@w>a*{ z_6OCO+u71Ny~@8Not3}aPKq;}qTF+`lKtqKOiK|}-Pb-+w?@MoZQW-+gNyt*){0>esnBt}SmQ;YJtTN`@}ho_#3T zIm-9U<=2&tD}PkXCEWesLfhTo<$$4v;D6(r!$Exb-v*&u)qV&7C_4US5DJI9*v*(? z2{Um2TvKun_2gpUfv+~s?rx$0YXFFN?ug^^J zmF5R;3=Iv{xiIR9LuK>zNnKHt@vH9>8>~jMOxnN8r)2QQ^Oi3|+1m$WmgIF1u({vA zAGO3W>S=}V^kw+9oVa1lk3PwcU_eK&mN33~U3){UpU1u7DQo|mrp88`0Xxc`zgU-c z?_GzX*cnE|NhP5)H||}BqV7rfIlS*A!s1p9-j8pCyE(>Yb7?<@@OzF;2b31&mp~X)TrE%9X8&CAJS!c{2 zsmR?Iz8o1C6*VblJMpKzN{ zjEA*v2!ZZTh3(vM87xoK<85*MyLY#;Oe8i@hIz*5t-Iz+b8SI}6j5F5-W*|pj8yM} z6&NQQi6hmpz}r~i@$Gf_xHz%=v%al>u&^^9mKaT{OcMuzg^%)M^-(4E2KH1X@D)aNU_>AsczOeX$mRf07YPXLll6Z?z;q|lT0J}x{psgJWOlhZ>sz-1CS7DDc8@{^PTHjfcsi*T zJ>^0+CuEy62Hf#ATX?nnkrnqFH*P$;mA(5Yo!`M>UUUV%FkM@YEhli9u zuWnXtjrnO|p72v`=y2I~za1rq6hTto9coyh;z(KO@2%1o1DdXQq3I&+UJ@bzq3EVg zlIOgo>Y8ZC!Gh^MH^jojEc+~?0{j-`Ck}YA0?0d%bs*;=fTv^-SxTr2J?#H6V)?v! z5f7Fsml0jX4~JgCKy(a;=VoVj^~aBIz+vf@-A)qG^6#X3&jS{`}0gg7@<=r)Qy(n4OWV(@4y$_vu%I%6g)_ zLG}DbzgDz3|IKL1*<_vW?U1u5(6i!R(ARNE;(uWAt8_QBsd>M)Z>ZII)Ed=vnX-e;QC)zuwh<#Ws^j<1a#6*n~>Qf5R^&PwN8LhhCc zzklD@xW}HOg4ZY_Gvp^Tsl{K;$;ml~_q|hvU*(=^3|ai~BTnruQhwj2S?1D6%HkSY z#OVqf-Nl5`XWdf4_Z%FS@{RKdDqTII&R;Gx*96s=SGQGWT2+~f(i3KuE;v(7ZBuNE z(P|cXZfF@l3ij%F=;$`4^1quPYDIwV6wW8a*(H zXShaUEVz5Mt$P`6hZhBHd4q{Fa^-=3vF~bb%h8r8{={VEb$53!oSqz=d=4_OCI)gP z8YjIuf9Lh;`&`DA=pm^QE7kMP=hNSq1fc(#t7E}({ulQF0K-CIWY>6=cLFAjbN-ygo>6c#$qaDT(&X?kXaFq?({AE`Z&+KVdE|8-$TngxfQVXe%3Sedsqewi$k`g-z(}L`$sv; z8(+R2)_lBgH{w`q8o9xs8?cUmBTA6b%bA7{bjNU!W6J|G>2kCLSEtPXQd*yO}H z=hkKfDz5Y+9YxfJmAj$8VxfyNR}kN8+pJuOxL?X4QcX8~zu!A}*y<<`@qrU-KBPd< zDwuvP-@{mHNBQc5Lq`!$0|!HofIgZ);0t72+!2s)lI!$^q`TtAg0n4ufy?q1!mXV-Q=??SBO!q9&A z;^yjTvzJ`{$ZhBPJPxAMCrQd+*D#9KON<*lmzxJ1>lzvwdiB5s^D2)SRCYemS!RdS zPPm1L49R3TeMS{sY$vP%6fcntf=kEP+h;%reWnxg&#rg9z6@S z+=oh86ksX6b=Fg;((u{(fGTMB9nbjpjy`64e+3VL9dRbbgULYGfMdGZPdDVtL@}?|#fw573y*NqWs{~Wxc!c5@kX?Nm)wOVyFmrjdnZ0$N zx2#t8{)euLtEJ2&#ljb5Ml2l5<6nKz=#KF6if zS%?7B)6=9fP57c`^Rs7^8m7;JBPCND@&-0O?#{g-~L|xfd!2@*Wlfxz_FE;m3pvOfSEhW`6lmIT|_1B#e*J~ou8a! zc|c~|0F_cZ3tM~B{|)g$Ke3SFisJcO%CC0^z``GIbk1IoV5bm8twBl7jBW6icA)1x zU1ER0`O_+`S1}lgoH2h6wb0fq{(+nIQ?FX?T#jf%+6iuso(~zZ;adMJ5y1ZX?%dJg zL_riK!{9e-eh_J7@R*V(`coz=z;IZFr?oq56Cb^F@d3!qc>~H^DpMgqW-~C_YlN5_ zJ`BSlAw}Y*X@EKD%m58XAtHQu0AX6BFc(Cn4(y}`P-?1Sl?|^jI zV0#P@bpb@g35a6VvfG6NqL1OPm?7%l5fKx-zzcr9*K9B#OB+_h2~jUcM!17(1Zpk( zLIPi)$ajh`pg{vRrvMGN;)QO|LezLmr&L0k>3ms{#}_ zAJ=)N0~Avr54>Q&OGJbmA7B&~*EL7(xx_QGzCIsnwq<%PHY zB}>YY#C)amyiH@0vtyK;)61@FL$=EkkbGHJiZ)Z!Vyjbekc$|tqlOZNFE^k z8yo?sd&A&Bu{<;xG`_nRx&6{0n5}QUF0yO`SJtgql66Krn~qF7=FdQ5b*x)I)#`mU zpWNM}Bxk#Z9MTyYpq=uxk0o$ISK{n?`tm@R-DbRe$~9vq&H++u9k|4;pOn_E`+ZhN zZ@TPwqWBtd=Alo61vWyK3xWhdb5tg*Xgkp*2?xw|D8N>TU_$B9vKgTXXXXBv>=iTB z-!#zhtf9KK22!ZIhX)R*DIkjHQC|dZHH%Sbms5VsuR3@aMwbJD^nyoVfdEVwf$+O9 zz$gg-5|DtpG!zil0gw9sk^dnR#FPPE*zKLGfYo`naIpAfht>angg~X`LtmJ>0Q4O4 zPht^%SSLn61qIjHJ4AeNa?q=|3dAyS8(#;2OR{VRuTw zq2#AmaTexZvsn(e!}EEO`_R zU#ykc%yG~#15&tD6xFu;M^%>E2yOt_e!DeAz&3QuDlwaq+XV#$seT_I9siuVzk+Qr z(ZE5B{5AG`rwGZ?9aDc(D07WnP;1@q$g$w)-xhqp7XF@8S39Kotm5b6Hir`UnWM2Z7eQv|1Z$?fBgO@Kq?(L>eUt+}%RnY`or&n_SLq-fM_ z0;l?&?&O4oZm<}!hKF`+fI-Xc+qcKq9Y#SPkw^ZTKHQ3$7xoX4?Oq5gnYL$!*w9NC zChht8+1ZmD9R0&kBRnQdE>G`N{OFP8dW0)e8zd2mrn>l$Wh&j zKxn6dO0YJNA#|rmPw+AKiGDmqF7ctFfw?ASRM$mzcJ_UP%JEmU5zrblIImaJ^k=Y1 zQ&wqE_}-BD6zqy_^H{v7qkS#KmK!`4$F#Cy{HNs8kqRxes<81>Il2HE+lmv=AEq1|Mk7=ujvlg_pA5aH z*rXVe6V**8GiD08hJ$S@%eg*9!wbGcpu#1azXa}E5>wfdW0W^njPv$}(mIl&I^IGM zLG!N{9~?{wC$vww$f`bZ%9~Mpa>-e;aafJa6rPylKYHbx{8h{B6X`KhEVvu)w0R?3 zm)D?bfMeHl{HkRjX|zBAQ?`HVKH3}vCZQvYk+Owq`r^|;iWkoq&cW8kPhEQMLcA1; z2~oDT;5oVHj$#WjY5@xol&6=-I`FHH>%aX1{tV!htUJRT5F zU0d3kBvM6SMrVlyM=vnzDPWu$ICu-b_`4U|+xc?8Ylh|G*j9@RHbf$NlhR?hR?_<2 z=FWDCD(gX^L8WZYp(uuR6DvOV$(rKyn@NJ+$ury5l?Zw7Z(2v6N;H!}6&{SHoA6%f zgdB>8`F-n&AIKt8)@5Y9(N2Bsr0u1$(fxG(x)V|m<>32|k&n>Kl%>7xP1f*N1)`M2 jqiQsRlAuujhf(|=GCl88vOc@wXGOhBm;S*2GhO)~W0TMr literal 0 HcmV?d00001 diff --git a/ui/editor.py b/ui/editor.py index 90cd252..726ea92 100644 --- a/ui/editor.py +++ b/ui/editor.py @@ -1,10 +1,19 @@ -# v3.0.0 editor.py +# v4.1.0 editor-link-click-fix-v1 import re import webbrowser -from PyQt6.QtCore import Qt, QUrl -from PyQt6.QtGui import QDesktopServices -from PyQt6.QtWidgets import QTextEdit +from PyQt6.QtCore import ( + Qt, + QUrl, +) + +from PyQt6.QtGui import ( + QDesktopServices, +) + +from PyQt6.QtWidgets import ( + QTextEdit, +) URL_PATTERN = re.compile( @@ -15,9 +24,14 @@ URL_PATTERN = re.compile( class LinkTextEdit(QTextEdit): - def mouseReleaseEvent(self, event) -> None: + def mouseReleaseEvent( + self, + event, + ) -> None: if ( - event.modifiers() + event.button() + == Qt.MouseButton.LeftButton + and event.modifiers() & Qt.KeyboardModifier.ControlModifier ): cursor = self.cursorForPosition( @@ -47,14 +61,19 @@ class LinkTextEdit(QTextEdit): ) try: - webbrowser.open(target) + webbrowser.open( + target + ) except Exception: QDesktopServices.openUrl( QUrl(target) ) + event.accept() + return - super().mouseReleaseEvent(event) - + super().mouseReleaseEvent( + event + ) \ No newline at end of file diff --git a/ui/styles.py b/ui/styles.py index 5f1bf4c..4fd3408 100644 --- a/ui/styles.py +++ b/ui/styles.py @@ -28,7 +28,7 @@ def build_stylesheet( QWidget#container {{ background: {background}; border: 1px solid {border}; - border-radius: 16px; + border-radius: 7px; }} QWidget#container:hover {{