From d212584486fc3072a71ed182429882258040dc27 Mon Sep 17 00:00:00 2001 From: John Costa Date: Sat, 8 Mar 2025 11:58:25 +0000 Subject: [PATCH] wip: dialog to choose folder to watch --- frontend/bun.lockb | Bin 113507 -> 113510 bytes frontend/src-tauri/src/lib.rs | 2 +- frontend/src/App.tsx | 184 ++++++++++++------------ frontend/src/components/ImageViewer.tsx | 57 ++++---- 4 files changed, 124 insertions(+), 119 deletions(-) diff --git a/frontend/bun.lockb b/frontend/bun.lockb index 66c8f4ec506356151f30af38822facd7c79cb34e..e402c1c51e0d0e40ac66d671689f35e4d20ef6f3 100755 GIT binary patch delta 10458 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 G;eP?Vc%V!G delta 10488 zcma)C33yb+vhE&ok{otOLYB$G4g+DxJ_!?Y*h3(YgpfeO8X&;L1W1BG1k7+%76B1k zZB#^X`7{bD0^*7+D(--K<*|zwmthrAG+dVV*I6?6d)NEj$HzZa)m`0PU0tWT&*}Vl zE$|=L0v{U9zh0MDQ2)4%v2ez`fz23e4LZHHw!C&aW6Mw;0(sut+W9DBQ2~s#g4`M9 z%|Yjs&6(?&!I%PBg}kt=s*>Sf9ptuM=8aoJU$iR4% z6D`0G86IKECm@r-(`w45>oYAxFQoW5C>e4dloVQ<4Xhd7;6`~>dCjcyB*v_PFSRsg z{3=Evj|HI<6nP6l+kl=D+}1-~0hW4iFA{BWyiyd{!b?WBH>NOucKIBdWwI$}fs)A+ z+A)UzUVUD0L2Jyv1LRv6hJ5@PWOBhCla2{9Mtni+wZ+w6g%;H+SYDb>m1mA;URiDJ zIh2$94$8^Cwh@M9XUy^j$kh7=P_p9DNJD=%DEVnXltEJ=(>xDDrU?27l*VgBIcUB2 zZM)Hd8f`TAZygPcF%0=X9eKyV2V}4tlm^-#%NWM+z6gpTyuA@mR4yRH1KtYHd=F#d zRI@1ln`msN)dzMl44DNVQV5lT(#)oJHRO*$X(k7uM>8+&#u%2sn*&PzFG4-7T?%L? z&=cK_0e6F9Oz(4`n7sEs(2k%n&?AG|80`jm&-FA4zBcK5ptO)Lf|A88dl@sj1_Nkj zJ0O!m^J^%FgnL6CSim~^E{>r6TWl>9cvqytRqG-HXU+2Erd$b15j6$06=YbIpsxWY)XtXB8}<2>ileQT5=g)Nv}HlH1ZOn!V9 zv;}C^FeC2HfRgzKL8*Q}D1}Mva3dg)&dMswW|X&sOrzY)HWu^>DCsGpIw(9c4z0*3 z%|R(V{v2xbc1~;#3Rmxk)DflkioHSMp1NG4r^%oZC_OjISfQ!rd=HqGcF!|Hvn^-` z=v^OeP>mUnz5|qIvaqaXRxS9X0>eLDKq&`>i-Ey$^+)oJ(GGx;wI0HtsU0i^(MM1K_6 z$3dwby44qa&LpG05Y*0kBXGe`#CHab0Bvs4s}l|Xo&+WT9@xH8oucxeg|EG)cHxW_ zqtGT2LtT8g@PugmHPL|IP~pSxG~o!<)W@1JhE?$fh$|s3epWPuYP^T=;nyP^VVb%< zfUy+RHxr5R>7pS_q91zOAjJeTmf6&*L^MQb>PnPhMPMPuP>wP%(d{G+zK{)K1 z8i!>yW_cyjrA~rGZG)(-`T``HBOa3|m--u|enuU<>J*-6O|3wbP?=3^gBP9?zG%&M ztEK1_lcgphAjvd^rpM=rh8T_S6TTQt4M7wQKn)y(M$?2RR^u;<2K@dceE5wLjyR3y z3r`#t2@gZMKERb|m-;0nGDsgz>4HaMgxDJ4wpFzi6>(Y0^C(CcTf^KuK=?Xp+$$WN zG=5lkI%!G}@XqD|Q_1mVpZ4oXt6uF(e2LHp8#lqK_ z;>giOQ@e&THrD6^p1BJWG7S2lR^LLR{sYJ-YA7-aNkO8zlS?gwge*gA6Y5fSKpLd4 z<27(JO;`cH4@X2N=~@&gcQ;8C&09o6H;uOzzHXYD6K=E$(j#aoBw7nqY>Ra%pF$cY zwmLF-gg6(HrB1`sL$%Gsm2NKnmhkk@)PI^~!FoKtkLRpuebs;{BN77jwI5+hMkFkQ zL<<-osxi{fkc#zLWFhm@T!U$L>S9xZAK;Y(ko*xCB76=_&5Jfh4Awoh5|R;nU9nQsqO@qfcC~i`GfHE)zsw9hH)s1O%H}Z*$4t2ig$z~K~qAIO5LJQ zf}4*P4G9{5RQT|_KsXXL{*Cb9x0PtXZ>8|z_hsQo(vSf?Ntznpow4zHZ`+2Z2SXrt z!IfADR}V}W5+lbdD zJKpdPk}1lNm|U9Dt}h%S`ncT66mYpZ_i_{WM-w*~ZZ&GxHgU(njnG?kOSHJT;9wW} z+ttL~ZsM}>ycxA?o46xQTwJnMJFAI%72Ghrzu%iUcZyZEw233}pbW-JbZ#oRBAwd_&ZuqMkFi3%Y&y6}qADvh0E|a3 za<~~Q)42!08D&?&P14Kq@vzMTml*)2TrZ05&)5{5ThzoI17|dF;VCmLc?g`Lce$x- zxW?ExYO6jC4x>d5~sca4(mmaFT(m~NJjgf!Z8ew zFXEqSk+Bfm4?{x4(Kdo`+bw*F;1AZq9Uyi0epJU8I(X;$%NaoIi zl+qcwhunlmz^?B#BQ)g=lp%*lxYZlra&?Po{=-KiQ5Ef0&w-<^gY=XbixVpuiL@N=Qi~zc6O1ECv`bkJ3CR$S4L~j`78kSK zyi_ESUp^-`r{T-0-Xn9-ft)sA7)Ee0jxo{#R3M)7ro5f?0Og}|p1BH~YJ3p$( z&{B1+v5@fiVUEb3WS z!*+~bj)TkBx!x1aUTE#cYs#ug^dw&_$qWEfBrcA3D;bj+E6}+Iz~$-O(I&3v6vjsB zWp{!bNgUs^-B-G*P8r_}Z#1I%RH68;eSkQ0I9Pc;0Ec;$gzF`L9v;s#wikT$bu(pC z2wr1Qv6d=YIdQIO4o9Sew%uNRYJyF?*1o6SCjV%#(iMAb3!`}6(bZI}(%UD)ze%Ft zM2K<>k1#3x!Szb(9ooLV>eO@_pC}H0XXjhR#qWL!vtA3QS9+WkwT#)&N38Ij5jY($ z`F?@2gBw%0y8XgGE^y^JtQeWuTeqdUSsb2Cxfw6L<@F8+ZqJ33wUU0&E3d0bT`O1GWLL1KXwA ziRTrBVOaQyzM{~35WPIndp5mH(F+v4gt3l5XP^tv73cu1>58MbrQ3pfk>0Q@8y zI`MI>5U&jJNM{9BDqD5tycFd!Qk4&(qMfRR8h zFbWtA>OY&Fb}8(YJk~*2dDrrGQA(N{%G1A=mGQwQh-FD04M~;%ABq| zu6`L*R{~kU< zz=Ob}z(U|IzyTnIu}3(QKXv5}b$B=QhJWe1BD?YMARPS+*}E$vp0~8A^la+?COMN3 zadI;hcxTCrpl5vqw>Q+Ee&wf~2$#tz&ID&7wqkjiIEW?=4 zz(g81O0G@R^%@ePV3*b7cxa$LU|;!1A|GY9?gO5!sJnCFtqCz0Dao0L!Po6dbA5+B76%70Q}fecGVW9#F7(bNmKuRm0FO>dk`;}*&#$(V=rkw0L3(%3Ho zU-}RVsm46c%WY8Lr{rg(XMNOvKmN&M?xKhh&?5&YljCkDV|d-q9b`@lckx%{(iFYv zlOT5M`~UJF$Hr05zW##VG|`zsHXKahPx3T*M=JEJ8-XEhUVCBwnnMrR_&u1Y;rgdj zd9uBITjL|yjMZ-xdroY;q)$e7)d_i#dicxPCOA`?7SAo+w1#73Q5sC1AXlcrN0sf& z&%6cG7v-<&c@MfpM38;S@(QVE$rdh|2;)_jXtA2vQ0Y1 z{7gF1VWM@BF(B;p`hM>RFY(X(1-UMr4^_`&bHJY9RpeT!+ zw=Orv6?`*l(yyPK@sGGc_Q`mVxot}@c)GE| zuS261G!mO%Ip1qoXn>7xL`f)08YAVc47kd=UAbAwUz^u?$T74{G1|_SiT&WJ0dgb} zUFr~kseUBuQIKj~$84FKxTEsY^o?kU%t2vg-N#I;?%IDqi#F+~Nit$zm0zH#-MqQ+ zj_$kfnaEG~he9FE7&BFJOcjICjO_#9`sT2;ly5jb?2o5uz0G7`D5P39I2UG=7M;x8 zGXx45MtZXDcuGD>8*^?%;|0_tpa#|n`4shSUFtNpE5GAb$`_AAA<>DMC$RnUFxk*s zo+t96R5J1S|0WAFkzoSmJCM?>3!Jio;~Ty|c8{hvPNm2HG)@V$W-C5D+-{eg7l)c; zbc=DXb&*;9;c)Y^#(O$w-Jz)`-*)MiWl-A~S=}EarpQ$wcIz^Ttv_{hRDH87T`$p@ z&e(MMet$e>AIqym4$2-`AUSeE78;kzwf{msmJL*QpFD{|yLEjuV7PB&pVQQvYYZ$ywx9KG01|ak?0@E}Txje`3R|L&cxy zLnJs;8T(o;82}rs8>*5^?$GKp^CF>u?Svj-bN0Foq4M+quE6de1|UEESG$e*{gwGG zrEee{U`&kfkOhMv=_HcBE1w>OIJT}9mgQuPeD=2$H(`;>nM7H|x*oZ_rR|QBqi>(p zCzDRLo|hNV)YjNr1`p;*AsumK#$)Au(wlko&g9EKgd$Ex4aP_ryOs{-8n?eeXKE;{ z>sz{}`_BFup?p0`aKQBLmB)v`Enh&S=QRAW_=P98-aHq|dzt%nv}`jJR$5nEp0_ez zObM*|F@PhSQz$oDmtQ|UHviYn+O>E5HDlx?G__l|Wofyezp?q@9e4W`>f|~o@Rjmq z(z9;cRs?LBJ*8d0yZm~u%F|?nc|YgVm55}QjP?Pwyr&s+AS$Q z^Y)l&e!c5X>CNU5e2RQL8>?F>zkt5oy42fw`@*lyqdx5xz*C&bDfFN|EBSEryHDCd zqOD88!1-UzsQmJ(&98SOP38~h5vkTSV)`$O@>;iDe%P;JT{Ny*dvn9CF73|wYbMI4 z(7D~Znf!5Jx8UCg5Bb2a@RU4EM(ma6N$(6EQoO`?A6^<=a!=jwJ^gx$jLU(8t-DYy zs9+iDlelazF1a|;9)X$1doOH`j0@-Nx62URTIg><*E_L z%BJ3cTpqw@%5`IK#7j!U38PkS8wG>@dK^;tn;b~J9g!1=7>8J6h~)p+DGoXLP~I=w zNqy-5WQH+{d^ne<*sc4{AxEG6HtmjWt1;&UXL1IT=DYGtE?=mg9BQP1fA6fL zKBsf2r|m!c`^urc_U?MiaGHO%@X2TYpGl`$_ps-Ge&UJ3zWa005pB=d2CSP}Hgop} z7ayuVq1Wh}W}F-~8k5eFvqmHE75OAd`{m_g9;VRlc2FKfNt$(WeE#L~=Qn=!^c#ka zsc^V;HJtqL^t<;ywFxJ!v)RUcZ)VHbJnW0sW%90w4^JFAbc?dBerm{Iv9cf!qw1>^ z8lj)=txpeg*B@+i&x%~xmamZ8@^~jBFe14gM_~$$YzB_*79qa^cJp zN-K#~gHyW5dMKn?xAJFC798+gjG3%2wZ5)@agucz0~+VgSUC1CPpo>B>Q>J}czTL( zR`bcjcr~@%;POHdPvQYGt{4l}YOE1<6F-dqIdVyl(HI-gAx&wGtbzhxFEgTCp*Lb-ACtXR=%r*1HBHVPl|EQft|N9EQ-% z)sNKr>uGYdb!|U+bNu;dj$fV>!0Bv+2CQ+M+%pb4gmuxM)copqVGABacD6LEKLxNi zUh%H_JhIqdlPg<|$EsL=JMhI8B{KeGi{JbTtK>i^AOa?kp7pl}-!ErX+x|YbwO{YN zTnmNN1NiER*COu^jmdYM?a~bU7+&h=RK%>m8rX8IL+ajZqp^QkHCN?H>f8D=1FcU( zaK*9M%YKE5(pg(xRaagkpDy8!P?$Bp%u~6*GiOHjgs-|^>b*2-4|fTjOkY zylByL<6iC<`7`8}nBLOxqSm)VQ%?ORGfKG@*(2X5zAruXbADIrTYJorKijpgl(*q> P=|pbd_0a^rY0CcsuLhIl diff --git a/frontend/src-tauri/src/lib.rs b/frontend/src-tauri/src/lib.rs index 3920ce6..daa3d04 100644 --- a/frontend/src-tauri/src/lib.rs +++ b/frontend/src-tauri/src/lib.rs @@ -115,7 +115,7 @@ pub fn run() { .setup(|app| { let win_builder = WebviewWindowBuilder::new(app, "main", WebviewUrl::default()) .inner_size(480.0, 360.0) - .resizable(false); + .resizable(true); // set transparent title bar only when building for macOS #[cfg(target_os = "macos")] let win_builder = win_builder.title_bar_style(TitleBarStyle::Transparent); diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index cd87c9e..97c3a6f 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -2,107 +2,109 @@ import { createSignal } from "solid-js"; import { Search } from "@kobalte/core/search"; import { IconSearch, IconRefresh } from "@tabler/icons-solidjs"; import clsx from "clsx"; +import { ImageViewer } from "./components/ImageViewer"; type Emoji = { - emoji: string; - name: string; + emoji: string; + name: string; }; function App() { - const [options, setOptions] = createSignal([]); - const [emoji, setEmoji] = createSignal(null); + const [options, setOptions] = createSignal([]); + const [emoji, setEmoji] = createSignal(null); - const emojiData: Emoji[] = [ - { emoji: "😀", name: "Grinning Face" }, - { emoji: "😃", name: "Grinning Face with Big Eyes" }, - { emoji: "😄", name: "Grinning Face with Smiling Eyes" }, - { emoji: "😁", name: "Beaming Face with Smiling Eyes" }, - { emoji: "😆", name: "Grinning Squinting Face" }, - ]; + const emojiData: Emoji[] = [ + { emoji: "😀", name: "Grinning Face" }, + { emoji: "😃", name: "Grinning Face with Big Eyes" }, + { emoji: "😄", name: "Grinning Face with Smiling Eyes" }, + { emoji: "😁", name: "Beaming Face with Smiling Eyes" }, + { emoji: "😆", name: "Grinning Squinting Face" }, + ]; - const queryEmojiData = (query: string) => { - return emojiData.filter((emoji) => - emoji.name.toLowerCase().includes(query.toLowerCase()), - ); - }; + const queryEmojiData = (query: string) => { + return emojiData.filter((emoji) => + emoji.name.toLowerCase().includes(query.toLowerCase()), + ); + }; - return ( -
-
- setOptions(queryEmojiData(query))} - onChange={(result) => setEmoji(result)} - optionValue="name" - optionLabel="name" - placeholder="Search for stuff..." - itemComponent={(props) => ( - - - {props.item.rawValue.emoji} - - - )} - > - - - - - } - > - - - - - - - - e.preventDefault()} - > - - - 😬 No emoji found - - - - -
- {/*
+ return ( +
+
+ setOptions(queryEmojiData(query))} + onChange={(result) => setEmoji(result)} + optionValue="name" + optionLabel="name" + placeholder="Search for stuff..." + itemComponent={(props) => ( + + + {props.item.rawValue.emoji} + + + )} + > + + + + + } + > + + + + + + + + e.preventDefault()} + > + + + 😬 No emoji found + + + + +
+ {/*
Emoji selected: {emoji()?.emoji} {emoji()?.name}
*/} -
-
-
-
-
-
-
-
-
-
-
-
-
-
- footer -
-
- ); + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ footer +
+
+ ); } export default App; diff --git a/frontend/src/components/ImageViewer.tsx b/frontend/src/components/ImageViewer.tsx index 2fffb5c..8efbbdb 100644 --- a/frontend/src/components/ImageViewer.tsx +++ b/frontend/src/components/ImageViewer.tsx @@ -1,37 +1,40 @@ import { createEffect, createSignal } from "solid-js"; import { listen } from "@tauri-apps/api/event"; import { FolderPicker } from "./FolderPicker"; +import { sendImage } from "../network"; export function ImageViewer() { - const [latestImage, setLatestImage] = createSignal(null); + const [latestImage, setLatestImage] = createSignal(null); - createEffect(() => { - // Listen for PNG processing events - const unlisten = listen("png-processed", (event) => { - console.log("Received processed PNG"); - const base64Data = event.payload as string; - setLatestImage(`data:image/png;base64,${base64Data}`); - }); + createEffect(() => { + // Listen for PNG processing events + const unlisten = listen("png-processed", (event) => { + console.log("Received processed PNG"); + const base64Data = event.payload as string; + setLatestImage(`data:image/png;base64,${base64Data}`); - return () => { - unlisten.then((fn) => fn()); // Cleanup listener - }; - }); + sendImage("test-image.png", base64Data); + }); - return ( -
- + return () => { + unlisten.then((fn) => fn()); // Cleanup listener + }; + }); - {latestImage() && ( -
-

Latest Processed Image:

- Latest processed -
- )} -
- ); + return ( +
+ + + {latestImage() && ( +
+

Latest Processed Image:

+ Latest processed +
+ )} +
+ ); }