From 843687ff2b8349e04d9052c2b624f21636849598 Mon Sep 17 00:00:00 2001 From: sunglocto Date: Sat, 18 Apr 2026 10:29:07 +0100 Subject: [PATCH] add throughput, format code, and begin to add MUC preview window --- assets.go | 12 ++ assets/car.png | Bin 0 -> 671 bytes assets/muc_hidden.png | Bin 0 -> 593 bytes assets/muc_membersonly.png | Bin 0 -> 935 bytes assets/muc_moderated.png | Bin 0 -> 1212 bytes assets/muc_nonanonymous.png | Bin 0 -> 970 bytes assets/muc_open.png | Bin 0 -> 508 bytes assets/muc_passwordprotected.png | Bin 0 -> 612 bytes assets/muc_persistent.png | Bin 0 -> 806 bytes assets/muc_public.png | Bin 0 -> 622 bytes assets/muc_semianonymous.png | Bin 0 -> 924 bytes assets/muc_temporary.png | Bin 0 -> 882 bytes assets/muc_unmoderated.png | Bin 0 -> 1066 bytes assets/muc_unsecured.png | Bin 0 -> 903 bytes gtk-helpers.go | 4 +- gtk-message.go | 20 ++-- helpers.go | 27 +++-- main.go | 190 ++++++++++++++++++++----------- svg-conv.go | 4 +- types.go | 2 +- 20 files changed, 165 insertions(+), 94 deletions(-) create mode 100644 assets/car.png create mode 100644 assets/muc_hidden.png create mode 100644 assets/muc_membersonly.png create mode 100644 assets/muc_moderated.png create mode 100644 assets/muc_nonanonymous.png create mode 100644 assets/muc_open.png create mode 100644 assets/muc_passwordprotected.png create mode 100644 assets/muc_persistent.png create mode 100644 assets/muc_public.png create mode 100644 assets/muc_semianonymous.png create mode 100644 assets/muc_temporary.png create mode 100644 assets/muc_unmoderated.png create mode 100644 assets/muc_unsecured.png diff --git a/assets.go b/assets.go index 33a0cf2..c3ef4a7 100644 --- a/assets.go +++ b/assets.go @@ -115,6 +115,10 @@ var commentB64 string = base64.StdEncoding.EncodeToString(commentBytes) var informationBytes []byte var informationB64 string = base64.StdEncoding.EncodeToString(informationBytes) +//go:embed assets/car.png +var carBytes []byte +var carB64 string = base64.StdEncoding.EncodeToString(carBytes) + func init() { loader := gdkpixbuf.NewPixbufLoader() @@ -331,4 +335,12 @@ func init() { loader.Close() clientAssets["status_"] = gdk.NewTextureForPixbuf(loader.Pixbuf()) + + loader = gdkpixbuf.NewPixbufLoader() + + carData, _ := base64.StdEncoding.DecodeString(carB64) + loader.Write(carData) + loader.Close() + + clientAssets["car"] = gdk.NewTextureForPixbuf(loader.Pixbuf()) } diff --git a/assets/car.png b/assets/car.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f6e15d6abe3131198c8420e908c823ed27fc75 GIT binary patch literal 671 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=gEW*4a*hTg zGgzF7fq}u0k%>W&fq@~4fq@~jodqnO!vFyZAeS;QFu-VZTNxOb85kz8Gq5l)Fc=sa z8!#?_m3utn7}H7EG-zA7@)cg4GcgEZZ4lS_2hQ$cm@VWZ%-G; z5DWjQllFQsJBqaK*ES2|YWl&j@jL60LryKcH*V%%a@YAHI?2uPweRv9oo|{VBm#7F zFL525@8;qu;5td-Wg-dcJr?_+hTR$jY`cMh6h`Jo0hD4Wto&FxOkR$M_b0HccMiLT{+YDzBF}e)M#t; z2;xfpl9Vmju=#n~9~Xw~&zl+6ytx*vq{;X=A-Ps>qrAO|%=|q)WeNWpLtLhZEmtg4 zh?&2i*JQG&$J{9w?|c%`Fj;rYdA6i#0{@roXCnVF{0mvL<6PB&EubLwboFyt=akR{ E0RJ`7$N&HU literal 0 HcmV?d00001 diff --git a/assets/muc_hidden.png b/assets/muc_hidden.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f4dd7928cc5714e002fd2a6e8f2faac0073f00 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$_1Yi(`nz>C(yjvqBvO zj@3VZa&NYPw5Y4jqy-utk9?OmH9g?guxo5pD6?zeU)(YEmPSWY>qg-%V%&jSdR+fC zoVOR-*HttnfcfWdr(#w?z%!QF0oD)_!)|XW*T(UO*z1&@U zUV{a3JCrTVzog$Ff%g)$bD?%8u8COS6Z;}eNcriCj) z7l+x`Rm}UjlQBH+&Qp1YOA|ky5?XIpmzbQ)?#dugt)(K8R9xMzm-=n}J*Kk>CJ)~H zR6RGxqRZODv86y{|xWGgyy7o#Z z!)Ar)PJ98@-o`Rc+KV`qn%?l@JdNCyf?lUcsZ(GB7^PD<5etewIdTSc@^svCo5A@EsehI8Kf0pAhVb_*2fe+8V xp8mf5^^>=+>si>k44ofy`glX=O&z`&C3 z=gEW*4a*hTg zGgzF7fq}u0k%>W&fq@~4fq@~jodqnO!vFyZAeS;QFu-VZTNxOb85kz8Gq5l)Fc=sa z8!#?_m3utn7}H7EG-zA7@)cg4GcgEZZ4lS_2hQ$cm@WhU{4pv z5DWj*NxmLa0!7;9SErlgs_@t^58^SMAokKta?yNO*ZKg?T^(IUQCo_IRdw&O=iTa9 zy{44gP@qX;3d>SWH(s4TlEp&DN@mHp&z<>x_wu8EzML&7|32rl-S<1+WmJ`(^u@>r zC~tFKZnz-CZjLus25%g{^5Xs_!T}7Ycz68rxp=>r|F}fh^-xA7Cf>S(i%tI?)|aeS zdct^bkJJGU6(PfCi}PnhGnsHSG+s-ysCyx`>_gnQ7mK=^;x`JUDC}ice|z{&!7NYp zMjx}~-uuE>9B$0vUB4*j#@(iM$^1KO-Y{x$-Y}4kV@*0Qh!LoV?W zQ}$WsALm*fc1_(V(YjJp;`L;yrT-#h7(C9ME$?qlVA+*@d!ZIl%<(X_z*qixVPJDdAHZ!+28wpVOYfwA#XQz zja}{i@OxJn%h)_~lh^NOJMj9w+uPMl`I0Z6`X901=kcprtu~LLp{D+xUF`jP5*piA z2_`$(?6l+c(!L~JSjTqwvhLo44t4xpJ~=OW*~HYQyItNWa_f5644x#TjQgCIHi~dh z_Fk;J_h7^ABTno;XLOv%d!Z>Of8t)0S$Lqk+Pq`e4ISdtHN#5 zJK}pmn=Np*XB_ddw7>=UupH6x%q)}?6pH8w#F{~ z`k&FHuRc4^F7NJ42hGrxQ&z3n`Ll8Dh3PxYH0v{Mm4bfwpA$a0^<`UjxJ=Bh{f@`f UHy_&+VFpTSp00i_>zopr0P4X=-~a#s literal 0 HcmV?d00001 diff --git a/assets/muc_moderated.png b/assets/muc_moderated.png new file mode 100644 index 0000000000000000000000000000000000000000..397d58d5386255307931c0f5fac63d07ab044a26 GIT binary patch literal 1212 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=gEW*4a*hTg zGgzF7fq}u0k%>W&fq@~4fq@~jodqnO!vFyZAeS;QFu-VZTNxOb85kz8Gq5l)Fc=sa z8!#?_m3utn7}H7EG-zA7@)cg4GcgEZZ4lS_2hQ$cm@XM3{Mxw z5DS0TNzp#DQyJRk|GzMQ+O%Lxj_if9JZjv9k_I6%#RAF~xfO5bnVjx1zS(<`yZ2+0 zw6N=9?`Mj$W=JkJRQY^P(wI|4_=2I)jR41HX^-o@7n!uDO#Ax&Zl zJUDan7qg?9FJCNPxqWhYnElc12FH?8*o7N|Y~HTZ{B`a6KI@3U@ZbPB4XZo`mcBh7 zvb<)swq-v2|61wkRXv|_)}?ZuC$9=Vn=IF*Y%X;7Wp;nKJjc7jsA<#U?kD9cZcAcV zbGG;Io4fz7tlawOZi|`hmcPb5iya>5e0)@zx?--C|MgQxtM^??SbKSsNww*+yz_2{ zPJTVZ$*hq7-et+dJ@3}=$k<94WK@1J`1ZqK+RTG5zdg{ssFB>tk;V!b8%HW zyRhfMtU~*ivwM5bZaS^pKeg_=Tw|5G-)W_-QpzH_55muW-)CO(+sA5VzP?W<*Y|Cg zY%0BSUBCZTXDa>LYkTiQX&3k9h-J-Reu+I4<^6eyVdC?+8V^pjZNaa4qd7&leSW}n zYQeL5N9WrARo?^CHdl9?Yc1*ySAHGr?lLwr^jIi@;XjkPNUxLJ(-&Jn`OnkU&t;ucLK6VC C6yy#7 literal 0 HcmV?d00001 diff --git a/assets/muc_nonanonymous.png b/assets/muc_nonanonymous.png new file mode 100644 index 0000000000000000000000000000000000000000..86d93be305e8ec1224ce7a2240442afb3aaf86d1 GIT binary patch literal 970 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=gEW*4a*hTg zGgzF7fq}u0k%>W&fq@~4fq@~jodqnO!vFyZAeS;QFu-VZTNxOb85kz8Gq5l)Fc=sa z8!#?_m3utn7}H7EG-zA7@)cg4GcgEZZ4lS_2hQ$cm@WhGEW!B z5DWj(N!~d=ffC2-pBFwqw|L7%wcH6C90a>NGn8^}wY+FzNpuh5&e1X1C=x1YeX%!U zo3AQIP`^ixgrkS*3=bRU9u~tdhHq`&-Pzfne91KImd}6p860C!Xkl1T zGJDB|xwaj>*0%2+b}oORaK`n}hc?46$I2%#&UpHao9p@urJ{ZJ-`TkQd@geCy2--J zt~cj9vDVEp0{na;v0Ob?0B5#$-6h-e}Yn@%L`QIbC>AXZf%labOWFE%^51(fj zmwLG$w)@QBU^H1F!&dy|jrMqr$r+IiAwnzfE4&SSlVN+2<%Xc+%0$IFjp|i*<{bDm zX{kQ{$4|l*JC$DW1l2mM>OWDzs+e2iBkbF-I_a$`le=$|rPG7BrAEKFmc}b3%@6#j z6qL2ZHrDI*f=8h_ehHiW{2~~gcojqCgYLV#GA)svsk`u%;Hs&gW}LaoF+;1g-(FLB zEtk`N*INsczM05mJHApmbgSp{qK;W7%EC9=U;FWIhh5e*v-#1x_Hs%_H-@Y>STyef z@5fJV8)ugn{rj=`-L=bgZ>3htzx=teBK*RQ8~e-ZxvK(&XWSJr7Q3&$(LGj$T=zfsEGgbQ-!9hfq|YjuV>5O#Z_ue+_BZd8 zX=_kITfXR-YqI5MZ#{7o&b%{wR_?6hXL$?NI(M;JtUDOgcH#5N?cEV+Ji=D>+YjxZ zcVW-3BcGlf%?|QTil0`UH_b=w?Dlw9nXSwEKOVgKGJNMO>6H6(PwlClE5);Tc8A;S z54G~=wTgTe~ HDWM4f#NBKZ literal 0 HcmV?d00001 diff --git a/assets/muc_open.png b/assets/muc_open.png new file mode 100644 index 0000000000000000000000000000000000000000..64bab57ddd0e95ad9a73a3828ec29b5d0b4dd675 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfw9li#WBR<^wh~`vnD%= zw9WUtyngG(1TWoK7f0Qu2bboWU)s7u>LjBAi}cTSpZB%T6cNm+I(Khh#oN5~XG%iuyZm^0_q6`IvY@+m&-Robb6k5#a>3oa z_T9$1#+D0et&y`t;+O+pM;h-T>Yb|>UDAlm!70>;*8f1`aB}}7Z}ZZ{U}n z*H11wlGB~M{Eo0OO!REo`%E^5^{l-j+YHT>mtVSUzrFPSd;PutkJeS~cTcXLKld)% z)pv5YuktNk&AqR#?!WHZ&vWnF?5|E)#((C?#F=&_+r!qz&7Jk+bi7-E|68T~0__Y8 O3=E#GelF{r5}E+{G}~?f literal 0 HcmV?d00001 diff --git a/assets/muc_passwordprotected.png b/assets/muc_passwordprotected.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec1a928140311ff30a0a9120e958096c77f446e GIT binary patch literal 612 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGf$^KCi(`nz>E6lS{=$J0 zZJqm<`9?k{m^jhf>0$$SXZ?Yt+~MzTC~TjU^pYh=D8qwg>JBB7wh0ovssbDnf)=nf zU1mENq$d?MBhz~B%xTm1%`0BT!Ii6CX>MFO?|sp^DGVAXrypL)?kDu8@ALilt_Np6 zDW5i5r8V(td&m>sOCK#iS)Eon==nJ#?qI0J&&~2HFMqVZ>Nx*_1^;;i`}zI{qLyu_ zyVCgNq`=7>zeh&OvnOsaKV*1vEz>Qd*2uoyGgV|~w{B8)xLe)Q{e-DZCUwVN=D*r6 z7rbBJ(y7zY?c4Ed)yWEZg?%RXIPNdB=Fs1(;2@qfyEI_GZL3%f-_idppWIk4Z4ymd zE@-@0wDJG>>R*b7POr6?9cUv(5NzYcXeqyIZCEt$7XilMd|(`1$mc#QJ+%LMnv37PN*KISRgB(EjGb zEz6h1{y*2<$a6Um)z#X#YHPN*X1JwS)I2Ap3mhkt9S+@R_`85Vo2lF^cXi$T_uGOT z|HPC{PW?Dx8t;X&XpWrL@CQr!nf~v(uz!;E=ObK6Ny?EC##bh=%H6*EVtHNN5`i-; ziqk8d`*j?-OP&6I6kA>9H?Q!HybfC$)BA|p+sih;s<;~{x6oLh@A@7sv1LD5@2>do V(t4&Xn}LCW!PC{xWt~$(69A8^6#4)F literal 0 HcmV?d00001 diff --git a/assets/muc_persistent.png b/assets/muc_persistent.png new file mode 100644 index 0000000000000000000000000000000000000000..fed62219f57cdfb854782dbadf5123c44d056bd4 GIT binary patch literal 806 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7SkfJR9T^zbpD<_bdda}R zAX(xXQ4*Y=R#Ki=l*-_klAn~S;F+74o*I;zm{M7IGS!BGfoX@Qi(`nz>E6k&{eu!^ zj-Oxs+5N}5wWre_s-8AD>$a`cSV|~iO-yW%s!&c+ z``ls=mF=@{i@lq;@sOPBp{V&*nP;Qx4BlLoQ7Tt?p=sxEDIw*?k)ti2t>SifJ={N+ zd;U9*Bg@k#{}-)z!kIE(OVcRnz^AugI7HBKH1Z3kJ-=bW?59;n zVJ{V-#5Qd$t%S`t6Sm(D3=ZC`IpOqE0j}2ltgh$v)kR9?TI+B7%yvZVpZW0s>m;FG zH|F-kjLR=`Mx9w>TaoPUxSS&HI*H0$=;y}Nc>B(@~z z<(`WfDGs~DXPiyrU}^e!XOc1Z&8?B~mrYkDoBT=rJ~g)aNZJ0EexGG~YuB{DEBhP5 Qz`(%Z>FVdQ&MBb@0Ll$=k^lez literal 0 HcmV?d00001 diff --git a/assets/muc_public.png b/assets/muc_public.png new file mode 100644 index 0000000000000000000000000000000000000000..7d863f949741ff83fd8373a77c0d95a3d95e441f GIT binary patch literal 622 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 E02xk{Jpcdz literal 0 HcmV?d00001 diff --git a/assets/muc_unsecured.png b/assets/muc_unsecured.png new file mode 100644 index 0000000000000000000000000000000000000000..f5824896e9e4d3ea9605523ea5c8a70311797bf1 GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&z`&C3 z=gEW*4a*hTg zGgzF7fq}u0k%>W&fq@~4fq@~jodqnO!vFyZAeS;QFu-VZTNxOb85kz8Gq5l)Fc=sa z8!#?_m3utn7}H7EG-zA7@)cg4GcgEZZ4lS_2hQ$cm@V0V^0^y z5DWj>NqfCz92t(*Z|-~Dc;xeqdIt;cZWG2}&Z30k2ch3qIvEHC^5r=F<8Phus41b) zRVU5XJNSmAlL*tYjRJy4F8{T-S^Pb1j!F5V=f|5h+3vmn_{{K7)M@Wewe_MuuIybG zsx`Hhoh|$AW_Qi4tEO!7oODCQb4}1Gt)*e_tK}U37OcLyDLp;ijDsnA?N%?%-CMVQ zUHiOP?#jzm;k!e$1X&oJIKF-R_MvvZ*HWih%idqVe!ZNrr8bHA{`a?M&hVT~6JBe& z?zPg=l=^!4WS-5NH|ON#O~u&;h&DK?p{U#ua&#!n^{_({Q1+e zP{!EC#%EzbLUpxu#`fFcL8lhI-W8EuudAoG@2zd5#?qXfF={-{e*XTQk7rDrDER58 zO|RSIRd@5u!@|PueQl_-bkOcn>g(_4JS=ejb5+5F)SLa&6LvAKXJcod81$%8Zf6YN z(vT%v*M+aX%Kz74zfAI(_a?q4pMMtNVl68xb2?tQPhVfZ{*Af4YT)Xt`y`UZHt7`i n8um^3^!m@AKhNtP7yshFG$k#B|JjTUprqvK>gTe~DWM4fB(p