From 10cfdbd2521bcdc32b9b8d8537d77c0834a4ee7e Mon Sep 17 00:00:00 2001 From: "David J. Allen" Date: Fri, 4 Apr 2025 23:58:52 -0600 Subject: [PATCH] initial commit --- .gitattributes | 2 + .gitignore | 2 + assets/groups/canvas_layout.tres | 3 + assets/groups/canvas_tool.tres | 3 + assets/textures/barsHorizontal.png | Bin 0 -> 15220 bytes assets/textures/barsHorizontal.png.import | 34 +++ assets/textures/barsVertical.png | Bin 0 -> 15163 bytes assets/textures/barsVertical.png.import | 34 +++ assets/textures/checkmark.png | Bin 0 -> 15751 bytes assets/textures/checkmark.png.import | 34 +++ assets/textures/checkmark_small.png | Bin 0 -> 491 bytes assets/textures/checkmark_small.png.import | 34 +++ assets/textures/cross.png | Bin 0 -> 15480 bytes assets/textures/cross.png.import | 34 +++ assets/textures/exclamation.png | Bin 0 -> 15304 bytes assets/textures/exclamation.png.import | 34 +++ assets/textures/exit.png | Bin 0 -> 15378 bytes assets/textures/exit.png.import | 34 +++ assets/textures/export.png | Bin 0 -> 15268 bytes assets/textures/export.png.import | 34 +++ assets/textures/fastBackwards.png | Bin 0 -> 645 bytes assets/textures/fastBackwards.png.import | 34 +++ assets/textures/fastForward.png | Bin 0 -> 15352 bytes assets/textures/fastForward.png.import | 34 +++ assets/textures/flag.png | Bin 0 -> 15515 bytes assets/textures/flag.png.import | 34 +++ assets/textures/gear.png | Bin 0 -> 16228 bytes assets/textures/gear.png.import | 34 +++ assets/textures/home.png | Bin 0 -> 15222 bytes assets/textures/home.png.import | 34 +++ assets/textures/information.png | Bin 0 -> 15443 bytes assets/textures/information.png.import | 34 +++ assets/textures/left-arrow.png | Bin 0 -> 15243 bytes assets/textures/left-arrow.png.import | 34 +++ assets/textures/menuGrid.png | Bin 0 -> 15242 bytes assets/textures/menuGrid.png.import | 34 +++ assets/textures/menuList.png | Bin 0 -> 15278 bytes assets/textures/menuList.png.import | 34 +++ assets/textures/mouse.png | Bin 0 -> 15685 bytes assets/textures/mouse.png.import | 34 +++ assets/textures/mouseLeft.png | Bin 0 -> 15627 bytes assets/textures/mouseLeft.png.import | 34 +++ assets/textures/mouseMiddle.png | Bin 0 -> 15704 bytes assets/textures/mouseMiddle.png.import | 34 +++ assets/textures/mouseRight.png | Bin 0 -> 15619 bytes assets/textures/mouseRight.png.import | 34 +++ assets/textures/musicOff.png | Bin 0 -> 15721 bytes assets/textures/musicOff.png.import | 34 +++ assets/textures/musicOn.png | Bin 0 -> 15537 bytes assets/textures/musicOn.png.import | 34 +++ assets/textures/pause.png | Bin 0 -> 15197 bytes assets/textures/pause.png.import | 34 +++ assets/textures/plus.png | Bin 0 -> 15215 bytes assets/textures/plus.png.import | 34 +++ assets/textures/pointer.png | Bin 0 -> 15787 bytes assets/textures/pointer.png.import | 34 +++ assets/textures/question.png | Bin 0 -> 15636 bytes assets/textures/question.png.import | 34 +++ assets/textures/return.png | Bin 0 -> 957 bytes assets/textures/return.png.import | 34 +++ assets/textures/right-arrow.png | Bin 0 -> 15148 bytes assets/textures/right-arrow.png.import | 34 +++ assets/textures/signal3.png | Bin 0 -> 15211 bytes assets/textures/signal3.png.import | 34 +++ assets/textures/thumb-1920-667142.jpg | Bin 0 -> 121756 bytes assets/textures/thumb-1920-667142.jpg.import | 34 +++ assets/textures/trashcan.png | Bin 0 -> 15231 bytes assets/textures/trashcan.png.import | 34 +++ assets/textures/trashcanOpen.png | Bin 0 -> 15470 bytes assets/textures/trashcanOpen.png.import | 34 +++ assets/textures/warning.png | Bin 0 -> 15751 bytes assets/textures/warning.png.import | 34 +++ assets/textures/wrench.png | Bin 0 -> 15771 bytes assets/textures/wrench.png.import | 34 +++ assets/textures/zoom.png | Bin 0 -> 15871 bytes assets/textures/zoom.png.import | 34 +++ assets/textures/zoomDefault.png | Bin 0 -> 15922 bytes assets/textures/zoomDefault.png.import | 34 +++ assets/textures/zoomIn.png | Bin 0 -> 15939 bytes assets/textures/zoomIn.png.import | 34 +++ assets/textures/zoomOut.png | Bin 0 -> 15908 bytes assets/textures/zoomOut.png.import | 34 +++ assets/themes/default.tres | 5 + icon.svg | 1 + icon.svg.import | 37 ++++ project.godot | 36 +++ src/app.gd | 136 ++++++++++++ src/app.tscn | 13 ++ src/canvas.gd | 217 ++++++++++++++++++ src/canvas.tscn | 219 +++++++++++++++++++ src/canvas_settings.tscn | 22 ++ src/code.gd | 55 +++++ src/code.tscn | 80 +++++++ src/designer.tscn | 29 +++ src/doctree.gd | 21 ++ src/doctree.tscn | 38 ++++ src/graph.tscn | 9 + src/html.gd | 128 +++++++++++ src/html.tscn | 6 + src/inspector.gd | 18 ++ src/inspector.tscn | 27 +++ src/log.tscn | 8 + src/main_ui.gd | 37 ++++ src/main_ui.tscn | 147 +++++++++++++ src/widgets/button/button.gd | 20 ++ src/widgets/button/button.tscn | 16 ++ src/widgets/button/button_ui.gd | 15 ++ src/widgets/button/button_ui.tscn | 111 ++++++++++ src/widgets/div/div.gd | 73 +++++++ src/widgets/div/div.tscn | 29 +++ src/widgets/div/div_ui.gd | 65 ++++++ src/widgets/div/div_ui.tscn | 177 +++++++++++++++ src/widgets/input/input.gd | 19 ++ src/widgets/input/input.tscn | 14 ++ src/widgets/input/input_ui.gd | 16 ++ src/widgets/input/input_ui.tscn | 111 ++++++++++ src/widgets/label/label.gd | 26 +++ src/widgets/label/label.tscn | 15 ++ src/widgets/label/label_ui.gd | 16 ++ src/widgets/label/label_ui.tscn | 109 +++++++++ src/widgets/widget.tscn | 27 +++ src/widgets/widget_inspector.gd | 54 +++++ src/widgets/widget_inspector.tscn | 89 ++++++++ src/widgets/widget_model.gd | 94 ++++++++ src/widgets/widget_model.tscn | 8 + src/widgets/widget_ui.gd | 42 ++++ src/widgets/widget_ui.tscn | 32 +++ src/widgets/widget_view.tscn | 72 ++++++ test.html | 6 + 129 files changed, 3881 insertions(+) create mode 100755 .gitattributes create mode 100755 .gitignore create mode 100755 assets/groups/canvas_layout.tres create mode 100755 assets/groups/canvas_tool.tres create mode 100755 assets/textures/barsHorizontal.png create mode 100644 assets/textures/barsHorizontal.png.import create mode 100755 assets/textures/barsVertical.png create mode 100644 assets/textures/barsVertical.png.import create mode 100755 assets/textures/checkmark.png create mode 100644 assets/textures/checkmark.png.import create mode 100755 assets/textures/checkmark_small.png create mode 100644 assets/textures/checkmark_small.png.import create mode 100755 assets/textures/cross.png create mode 100644 assets/textures/cross.png.import create mode 100755 assets/textures/exclamation.png create mode 100644 assets/textures/exclamation.png.import create mode 100755 assets/textures/exit.png create mode 100644 assets/textures/exit.png.import create mode 100755 assets/textures/export.png create mode 100644 assets/textures/export.png.import create mode 100755 assets/textures/fastBackwards.png create mode 100644 assets/textures/fastBackwards.png.import create mode 100755 assets/textures/fastForward.png create mode 100644 assets/textures/fastForward.png.import create mode 100755 assets/textures/flag.png create mode 100644 assets/textures/flag.png.import create mode 100755 assets/textures/gear.png create mode 100644 assets/textures/gear.png.import create mode 100755 assets/textures/home.png create mode 100644 assets/textures/home.png.import create mode 100755 assets/textures/information.png create mode 100644 assets/textures/information.png.import create mode 100755 assets/textures/left-arrow.png create mode 100644 assets/textures/left-arrow.png.import create mode 100755 assets/textures/menuGrid.png create mode 100644 assets/textures/menuGrid.png.import create mode 100755 assets/textures/menuList.png create mode 100644 assets/textures/menuList.png.import create mode 100755 assets/textures/mouse.png create mode 100644 assets/textures/mouse.png.import create mode 100755 assets/textures/mouseLeft.png create mode 100644 assets/textures/mouseLeft.png.import create mode 100755 assets/textures/mouseMiddle.png create mode 100644 assets/textures/mouseMiddle.png.import create mode 100755 assets/textures/mouseRight.png create mode 100644 assets/textures/mouseRight.png.import create mode 100755 assets/textures/musicOff.png create mode 100644 assets/textures/musicOff.png.import create mode 100755 assets/textures/musicOn.png create mode 100644 assets/textures/musicOn.png.import create mode 100755 assets/textures/pause.png create mode 100644 assets/textures/pause.png.import create mode 100755 assets/textures/plus.png create mode 100644 assets/textures/plus.png.import create mode 100755 assets/textures/pointer.png create mode 100644 assets/textures/pointer.png.import create mode 100755 assets/textures/question.png create mode 100644 assets/textures/question.png.import create mode 100755 assets/textures/return.png create mode 100644 assets/textures/return.png.import create mode 100755 assets/textures/right-arrow.png create mode 100644 assets/textures/right-arrow.png.import create mode 100755 assets/textures/signal3.png create mode 100644 assets/textures/signal3.png.import create mode 100755 assets/textures/thumb-1920-667142.jpg create mode 100644 assets/textures/thumb-1920-667142.jpg.import create mode 100755 assets/textures/trashcan.png create mode 100644 assets/textures/trashcan.png.import create mode 100755 assets/textures/trashcanOpen.png create mode 100644 assets/textures/trashcanOpen.png.import create mode 100755 assets/textures/warning.png create mode 100644 assets/textures/warning.png.import create mode 100755 assets/textures/wrench.png create mode 100644 assets/textures/wrench.png.import create mode 100755 assets/textures/zoom.png create mode 100644 assets/textures/zoom.png.import create mode 100755 assets/textures/zoomDefault.png create mode 100644 assets/textures/zoomDefault.png.import create mode 100755 assets/textures/zoomIn.png create mode 100644 assets/textures/zoomIn.png.import create mode 100755 assets/textures/zoomOut.png create mode 100644 assets/textures/zoomOut.png.import create mode 100755 assets/themes/default.tres create mode 100755 icon.svg create mode 100644 icon.svg.import create mode 100644 project.godot create mode 100755 src/app.gd create mode 100755 src/app.tscn create mode 100755 src/canvas.gd create mode 100755 src/canvas.tscn create mode 100755 src/canvas_settings.tscn create mode 100755 src/code.gd create mode 100755 src/code.tscn create mode 100755 src/designer.tscn create mode 100755 src/doctree.gd create mode 100755 src/doctree.tscn create mode 100755 src/graph.tscn create mode 100644 src/html.gd create mode 100755 src/html.tscn create mode 100755 src/inspector.gd create mode 100755 src/inspector.tscn create mode 100755 src/log.tscn create mode 100755 src/main_ui.gd create mode 100644 src/main_ui.tscn create mode 100755 src/widgets/button/button.gd create mode 100755 src/widgets/button/button.tscn create mode 100755 src/widgets/button/button_ui.gd create mode 100755 src/widgets/button/button_ui.tscn create mode 100755 src/widgets/div/div.gd create mode 100755 src/widgets/div/div.tscn create mode 100755 src/widgets/div/div_ui.gd create mode 100755 src/widgets/div/div_ui.tscn create mode 100755 src/widgets/input/input.gd create mode 100755 src/widgets/input/input.tscn create mode 100755 src/widgets/input/input_ui.gd create mode 100755 src/widgets/input/input_ui.tscn create mode 100755 src/widgets/label/label.gd create mode 100755 src/widgets/label/label.tscn create mode 100755 src/widgets/label/label_ui.gd create mode 100755 src/widgets/label/label_ui.tscn create mode 100755 src/widgets/widget.tscn create mode 100755 src/widgets/widget_inspector.gd create mode 100755 src/widgets/widget_inspector.tscn create mode 100755 src/widgets/widget_model.gd create mode 100755 src/widgets/widget_model.tscn create mode 100755 src/widgets/widget_ui.gd create mode 100755 src/widgets/widget_ui.tscn create mode 100755 src/widgets/widget_view.tscn create mode 100755 test.html diff --git a/.gitattributes b/.gitattributes new file mode 100755 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..4709183 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/assets/groups/canvas_layout.tres b/assets/groups/canvas_layout.tres new file mode 100755 index 0000000..53cf914 --- /dev/null +++ b/assets/groups/canvas_layout.tres @@ -0,0 +1,3 @@ +[gd_resource type="ButtonGroup" format=3 uid="uid://c71aawlem32fa"] + +[resource] diff --git a/assets/groups/canvas_tool.tres b/assets/groups/canvas_tool.tres new file mode 100755 index 0000000..046e494 --- /dev/null +++ b/assets/groups/canvas_tool.tres @@ -0,0 +1,3 @@ +[gd_resource type="ButtonGroup" format=3 uid="uid://b12lx5kudvat0"] + +[resource] diff --git a/assets/textures/barsHorizontal.png b/assets/textures/barsHorizontal.png new file mode 100755 index 0000000000000000000000000000000000000000..b40ad8f218312b6d95f420e557c4bb6364f0d7ee GIT binary patch literal 15220 zcmeI3ZEO@p7{{jw2HVh}5P31g%~2JByS=?P?w0G7_O7L;9&OsIw22_w-MMztyW3-T z%Ux??5xzi(fncOcG{hG$sY-%;69^#&B*7T@pg|=eAteOTL<7-)iQw$*z0AEaHR0o2 z(%#dV|MQ=j-#jzjFT1yU)5Zn$%j*FE3&NeD9`r34Kl7hNzf;%WkD{-qQk?@D01bME$E{@?cFxIicGlsuavbkk$8#Pg_pt=( zQRG*p7~d1>$PI`7YPJmPdWvV+bUJNIJ8gVcD6=RB=YFAM51b@ zruV?&%Bl{iMaNQ*?SYyys)`WFS5}*Xrnm1vOUfadg;DzsnAEFUNn*h#HLAw5pe2!o zahO0U8lu2eT}x_M(G_i2sR6LiT@#}&$7--JdTOS@j9eql=rPl>HDzwK9~CkmRH2|N zYE)6;0kd4Y^Rs7yL1xuvIVmY=?PWh(t}fP0(FleF9R^TMyHGV-?T)B}&{i z|AV=T1vUxfhKA{sHFR{wuUQnHk1Frl886&aQkb(rb^A9)`)1<6d@DO{=V`wuz?1^t7PD)**Bv2$zs)SejAW zSsWIULr@B^d1(2D@)SR7>{?td-88ecbT9MuSGo6oN#tXSnh^AWoDhZ}n@SG(*1&03TH1ii$2X7;yU8YRy=darYagjVKA(df@zQMO(SP-#Ga3(X4)*!;U`aX#;(7 zsd#sJ>cFE@@$T}}VrE}b)&q{*Xl2bJjSWhm~EC%cWDqAaND|$RbPljya(Xh0P3J3Es2gM~lW@Frr z4uaDl#uOJ35iX#(a2mvz;vyo#1r!%fgBVj>L`1lN;=*YVV~UH22p3RXI1OSar$LM`inX2V=F{<-na;c0#1*vBnj zG#v>yPAuDY@_NJ6&8FSg?oD23V#CLec3r$YGc@wv>BRQ7(+v-VUu>h3-|hrYFJ$H* zm*`^2{^O041B<4=yL$HPYjdXmeQ3&N)fW>S_MG|Z{(G0tZ#}d=w_;H1uNUc-^6wjr-^a0wn<8=k*#V|)(WB3wJ)i)#P)2r zNsGiLkYI?H2}BuVz{JahkoJUl0HjGEB;L@FKpGN%gb)M7n8XVL#>zR)pUb~pk@k3& z()@b&{e92(x!+y<;uoe4JvuzJX9xf=Jef^Tqi@yy3~oh#%^zOLqp$5|cHRbH$35=H z2hN_`4M2Qd%g;G;xyMAsCKRS_AKp(8WZa!I$vYQkUh6;bRqvwo%~agHVY zWA1>=TyBa<85U%Opb${F5YLRngS-%l^Zdh1h~vX7&#|F+fak@?h{#8o`sGg!p-8gS zf;gR?s1Jw!OZb-@#}rw%QmF(h;hQmNkdz) zG}F-xopF8TMPu1X`2Frc&8t4Ive_I+x9jW>MYbxNEFa|9K1sRUt<%coo|(2Y4O=to zIiQ_iH6c3IxbqltWSwT~(Bie*fW(Dd_Pb*bv`k2dBsRmkASXhE(lwu2X>N~~R;wv*sU=j%V#^sM*>kH5)H%_Bawg-f(2EDvJjPHwMn+8cUh+mW!bHvy0z+B$1)S~%*04El$zlA zOe8iQ3y-CQNO(LI<>NxMVT+}9+d@lQf$D^1lxy4Dlr0;&yC&gpY@6nJP_Kd7z7w?` zQ;lWfTx>kv|9-ksTla&^C9hlUIaAkpjO2`^ww#+7T2t*PX@vf;rJ)mDE@77?mZcw{7>1t?F6TRQ*kCqu^9z3yu}hjvyRDo?&}Ne`jS$ z){9V0vJGgBhRzg;byuyVwJ)02+P;>J`s-eMNmayxVU=Yksg>m-WKF#&v8~3|m{Ri> zKuj4W!$OA{Ook=4S2LF7p8alVBT90u9(alEYU|X`xf{Q4RqC0@$Syl z`CF&r-JPke%voJ?lA-!&9nDyl`vc{{m_ZL^Fc}quupqIW&7B!jS{0V&(i%ETZFh&D zsnwG@dwOQh_szt5>X}|KU=L8WTJc)Z;~9D~WSftM?Pb*5n727-P3blp<92iqoCYzb zxQK{w0mX&WAjT9I5fLt+xNsW8nBpQL!UYr;PJar$LM9?9MMQ)PC@!1^F{ZePh;RYLh0`F$6c-T@E}*z@8pN35A|k>C6c`78i`ZJ_U809fV#_;mpQ@eBaFjF*mnIst(1 z-pTY>zWViV-y9tNcxvZ!moM%1ZTlW<&-%7!N4MO4`sBcazHI|{ezJ9C-+pP&`Kt#D ztHsMN{}lXSX=e8FpOHTXPYw?5^!fbE=)k}!FMiwD_S$_{j$RN8Z>g`U()oYi5R4n6 zLhg&?@!!v=>p$MO`p;7*QePc@^YwjK?pio;-T3U?7tbE}?)r4)ogJRnmM!VghHt-k zbfBf_5ubkI+Vh{^{QKs&WAC%)o*Z7-P-ee;q&Po&VeO;TY+&nqm+U*_YQ9)Lz)%s|6uW73lOm1!-K<*|Xn1^7EA_N6jT0(M#D@kt5y^w%T z3w8$Gu8dgUk9Hg%712s{hFa0uIKI}Q+HGCb)mm6}VWC=D9akN9*FAYa4uN>xnf`e* zljN6kzQ6Ce=W~AN~n;T5vYlJf+pFxng zF}`;cvUU4-1W|0HOnGdcaW-M0?IN?4E+R!9yA!ApM49Gsnk}Uyix!c^ltU%xIrfzR zrK~E!0=ZFabZW^GDx=ax=2XrxSt?5{3acPZ9jo*Zz`#zjX4GT1IT*sD68L=y5c`@j z0qU2qr7A(XZ$LE9n1yO-7m3P6a-l^m!O;|j2$#zgI6fVfh;b=~i!q5ph~tDTg}{^1 z;7g#61(DKaT}))_48h^RFO{H#Wt{|ux!rD&TPmVm#Tc$oC@`@ElSqU>A!I5Xtl1-U zFs}tndVO>xV{uVVmZBY~&(~Z;m$52=z&B9eD>yH^vu_{=6J!S{Vji;-!$o2&LXy$= z>@>T5&`gHSCPOnDbU?;b;UuwalA+67781x`8|)GoR$mUL6h!nKM*4En!47I=we8UWT(f$w9@T2mHy2P2EA3{cDY0;MsAfV&q|VHeYEaWMP|ZTI z#3aE9se}+qlf*b77DFZhWtfMNwo;2L26zC2R6?2pdqB!?53mQVX4d>%F0i)0kI_hE zIvCdMu#lNLHJH1IqO1fdOHNV9rMS>)C2^sJlv#udv9w5-f?M&_)FP=|B3Ae(**|@N zwT`xw`D!R=Z3Wgcz08oRPnRZ3v<4j4%Ti~gO4GG+nRJFW8CS@Ydu^fAfwrWJDkrT5 z7j5@%Z>QPCkiK1`67+7HzVjeh1O9zSPy?qLydH7n>lu(5x*lMz40Kx~&J^czhEhY$ zeHcPh4J&DYey)oGC%V}NvGT3p|AToD3+N(%8yF^oV!+m^fX4UD+jp+!kW2fw_IB8) z=UkY+t)^CtPn^=%NA{zJUUQLDuy7%6C9|u3u}h5 ze1A{@7&+jkj8rGf*vy}1e5HPi1Qh3jxnfVbjp`Ku7pctSV zD1WU4TEXoZxHH81ZVmgFQQyY=m4ncfer03WjvoZ3!5Q;q%;Vxj1PgdvFb&R_$Hj>V7Vx-W8k{kYixUwn;Bmn;IAb0cCn8wDck;kBbu#EZ}j$G&o}(7bhZEz~h2xaK=0?PDHSP#|6{ijCov~h+qMa z3#P#t^SC$>!2%u^OoKD#ad9Go1w1a824~FU;zR@scw8_I&iI+QVnYvGk`C~Mr5ij- zxn%pjiQq9z)RK{HM3Bli5TxpT1bO@ve0L#8nHWL33lW6aj36)5AHH+OfFRMOnYwh7 z=h~g^Hs)nx;phI>JUsd(y5CQlZ_=Fn$ zUBB<#<%mK$HBVcAoS4_~Xy!#$6j#;eZEyW?#Lvcp`5%8zdy)F8PLrac&O0(kZhI^K zd*r_LBsiRn^F+ZSr?o$|z!Tbom(@QYUMQulwZ4~sg~ zvPPEiyAKo7m*Su0O#Ew`w4oqp@5y(kp-(2{-gVv}a=%`rx$~gBZS#_)4z#mt#4%)? zch|ak4?aqp8NK}Q7g-n2oaymCivRN8)YY>xBxYmlru{R1n@xH)KK(rTxa+e1uBy1{ z@WL;pNov!yl_$k#3l7w^yxLr+U4M^g8na=-&wEP8oN6ln{O&hTmZ{5Bw~iXN4eLC6 zZ$*NpX4#VBGfNtaHvQ!6u0KN8x^u5gsd?!AbK$<7wZBOlHldY>ZeR02uS&Xo5;QZ~m%> zTfgnNG~wHiH+)bWb+}^v*`!^vgVR^kHq7;!SBe~2wclN;Ot{)nwPW4Xjhb=QDgR8o zTHi6RHorW7-di`;PKb7|jbB*WL)QFs`cnM~LrOP3>X&Px+S#k->EpYZqD?1Ms}ti! z&TXkY?OfAtD)f~0yn5)#i{p;g${Jp|U)P|$b$<90?Ku6&?gClkh%F~}tc%X*>ez6h z-o@tc*>+{;>*LpIX2}|BTHk$ic=y!T&mBE5b@iy2J6k5TFQDGoW@$Py^nSB2!EiA4 zy#4Jn<8w1Lt}P4Vmy0SS>zVfxuN}W!`KPMeDUC5Jwf1wDN&VI<$X>>DZvNzij@+^r z44GqZl5guL<#uTfTqv#i`<0<{K5aRi+}K>#T6Hn{kht;U_}rJ9r^nszURQCY=W62Z z(f1pgNA6ODwRs5QrQM0 zoZ(sNERO?FChLo5#P4jzey)O>zX}fms92;m*-GS3SP{fE*)3j_&f1CYCVNvlV>I?R*}Kx&lCj%lpG#-T1|NdN0#8ck hsZ=VJN~Q9@@duieCXI&jSS$bl002ovPDHLkV1gJY)5-t< literal 0 HcmV?d00001 diff --git a/assets/textures/checkmark_small.png.import b/assets/textures/checkmark_small.png.import new file mode 100644 index 0000000..21d068c --- /dev/null +++ b/assets/textures/checkmark_small.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://260h8iplfej8" +path="res://.godot/imported/checkmark_small.png-e303c4e9c735c1d9cb4e3b8872697277.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/checkmark_small.png" +dest_files=["res://.godot/imported/checkmark_small.png-e303c4e9c735c1d9cb4e3b8872697277.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/cross.png b/assets/textures/cross.png new file mode 100755 index 0000000000000000000000000000000000000000..e21d5ac103af953a9ef5fc507ddc3c599c869f1f GIT binary patch literal 15480 zcmeI3eQXow9mg-BOOxPq5p=<{DY?2z38nV={FeA?8yvqhW;Nu+9btmP`R++_!uA>8 z1)E4=i0~G~Xp7vcMRZMzD2TpHL){CS)UpcNvaMUuIyRMVqm=&9sbWm)*eXryp7ZMy z$L3*D|9mVt_sjEqf8Xbx&+~g8-#<6qzxv^p=DV6HifRe<`3K=u)V_@k@Ne?UQxSM+ zO7^W&C~E#f?OR73KBA{6=hISTSRD>O!U=NR#EWtim@@GsR8y2|MJCA$n}JG4!KjpQ z8~*n5Hx0BTx(#dXVRJa?17lL(L<$T|td0m1n+2z6Sm9}QWjJUM2P#iz;<1FnW!#3G zF9&0-nK95giMrWs@M;6n!{L6~C#L{yH`$GX*}~G@P7`alIa&5W+G1v{3~OdAP9w{5 zwr-Af(1nk|(+ne5N*v(^{lUU;@ISX}`sY-H!)_nP>Jg&M825q3yr!cR0vNTXaDX@bSnGBy~Sd*El zkrWQ!JS`rtnyILRpggmx11gbiNx%#OMIKKH0Lt&Hb_pGYw><8fjWjJ}p;M z`K5NjLgsuaz^ig9BFiyPzFhl@cTf9#bk|xbAICqmIiCni3wK;7g-9`|#0wWM@z!-J#tWku2oWLQPZB9Nn$=T_1to^bu zuGLV%T7=fNfZb;E_I5igz97p6Y(2d_R+cj=Oaod#6gF+4D_8lk9ovJNh3-$!Ow%YeIC$)S((A<^p7OTxP=WNG0BdKNQ z5{B|rD@q!oUz3vHiO$CmR@w^wKbWgnAU6Ts;4poX0=LdKWPEMj+POLew#;rVcEqGx zT$s}Gz|)N51?|N4C_G$T7n3{Tif!ea%4cW;RDgx|nLsNS1c?Yo!e-@ws|n zUCf-eO8v05@nhpTeYeF7Kk#V-ehR5*cV+6jo2R1Pm8s>-M-!6ju@pwDXhyQMAE-Qx zA^1=RJPy0vYIiY}&6OGbQU=6^{SrJ&6>W#WsTGncd#YxxtC@-P6f*P0fIL9uY9-$a zAJ5>EAyaxZoLxqxjrlbPK}8rYcN!XiQi1Q$vJ8xveuM5ut^LTO-Qf(wfX6%bq~4Qxzs zVG*GMf(xaAjR`I+B2++dp){~D!G%SH3J5Ng1~w+Ru!v9r!G+Sm#sn7@5h@_KP#V~n z;KCw81q2sL0~-@uSVX9R;6iC&V}c8d2o(@qC=F~(aA6Ul0)h*rfsF|+EFx4uaG^A? zF~NmJgbD~Qlm<2?xUh&&0l|gRz{WSl)m(nr5+vXomTCAZWy^+49KME03w?uOikj%8 zs2x)j_2pOa`WZ!ynx~2AvK7;g?LXxnN}rw@Y;OO- zuH$FugI?Vg{n_%ReM*0p-RCV_jtqEzL%FseJoU*R)gyb~+dt7!=c0Ok`QTOh@AvOr zNL_NT_@w^KiNd?w=dq?-SqsAY}c}rEOl9b#whF+|Gegd7l$n7H{Sd7 z-KGEh@VP_ZXU{$Ga$B=;&s(Ru@7{fv4|E*b-TU|pud^R53e@}J$KPlRH27M?mi>3` zF}!Q)O6gD1UwNNA+u!iz{6L%Uo~ujmlyp?juI*26d~D5M?)~;?cK6kpnYz>MA2)88 z-g188j%QmszjgFtXtFJ<9yt8+D;EY%Zu;P{8wd9fwj4d@5pCI%`d1x$j?P5h89P0+ z_F-w~g$4e_#})@Sw+6B=>D?={{fC7w>IYVSw)4WmU5k(19h6&x+1K>o~<(&vBtx#ik-F8*izD(7!s>HNpUKI_M8mNsnBMO)t~FM6Q_+NT*-!NnDBTe+3weK z{@?%1`JL~aotJsGsd4_;lF20$MU8E!_cz0D+4_tc3I9fZd8Gw@jgHhWH7IIKsr4zM zwr-zDQSMDjORL!$SRhDR*dfYV8*s$J5vZmp&)ir&5VtXOU%wH zTeUSH-5O}3eVPtvm&0Y3Se~OR+z!s=baUKnnrFE(hGQAtZRa?_Ss`%cbn>!!OJL;D z<)F~)uS*UG|Escfm}W#^m}oTWh?Y4ty`ACQZa2g74A0x4!fte{rWmuU#Lsv~))R(+mu)OP2tYPs?`;hFQB3PAQ4#HjHXl0@ciGB}-|aNS7XpgO()*gg_Xk z7?1*&cP^0*&D4wztpLDucR`G%5-h;N>M588VoHHDt0$2buc^dRdtf08J{^drrnhKX z$eSqFrqtcjJ|BJG5=E7@s4>gKWUDhZlQ9B*(F9&t(@t2;c9w79IiZXfSm*sLC$KDH zl2B%O1TQ_@ za^6?Rakb9Mn#!_jpUYWR<16RfuJV*ElA3D^bY&%w>vSy~-`){XH-NQks%)uklRgiU zH4xu-f|5Jc6)fPoi5cIMW)OGm@HdPGiVSHLIi{`h~gzPjoSau(DS0 z|6tBzf!qXigTvG-2HZN`$oSU0t#fq|cx-5Esw1S_=E9_x2cBkvC|M`A*AU_2dYJeL zmuk!0R3gI~C?UwRrngtVIq8MRh;{&V$ac@#stK#Os<4Tn1m4cRFk##*(IGIY@rtwYx`Re!l_?~x@TsOe$R^eSPo9WW8K-NR%W zGh=$vzW{%hjPyamb!Xb6%l%1t-Pua6}PtmmfYxfsTIXd#< zaDG^bD*b81p_6peg9Dp?5A44%edEl-Z;fc4b9qp>F=t2jm^GtDjV~&)(es86eyW#FVi@qB7+s6$-*XiRg|1f>&mKTGodJkL`jval>8NRxqjZ(YrA@+SBo3#m}9GE6@Nc)e!_x;&7*Jp zwQl*UiiWw{&IVUko!YU{?0x8la;>)OrSHxTe9|!D!(k`YZ>C=_UUqKWm8t!MtEsx) z(cR9e{r!{nPQJY9ly@&X^>}&TfvfzW)<68$^;Z|}JNFs^OzI9G>DC6(rijd^tm3h z&lu3u8k}nK%c@{Es5N&f0@)~Na)-(ZKt4X-6g0i26D%o(=n{--It5A3YsGUJAEiSLCqVNYDTIXx zNYMZVD(_m9c3GFTcDVq+Om{(yx)>_J!sscOCd9-7X+}>nEm2d+t!6+W(|%Q8by;ne z<*+wdu2a*qH~Iah+gn75m!sMp44JFW)=bt&2(Y@~1vTvi)oiiZo9z_su+ui@BpXHB zY>-J(nd1?Zc`?*A!~+;q(hfK50V#7mz!~IOoxLO%SUcD!7^LeZO=l%es1JC-+O49< z(@x42;yI49l-nGX#aZFxEtMfxg{9KYx?E11z1&@1nONlD^dZ&(nd>lWC}qtX)-{zr zpU>ehxBF`;s>WG4xzgeDyPS^6{&LFgDo@)&sY7iARqPb_T2+oDj<>?9nqZt7k2!s8 zGWS8M1`_9v7V|7MIUjf7`3y z%GkmGf;o=`Gzs7ahN%-ZaCEw$@r`vG_iB^y(BRf|M_9bXjmc~exXoymGj43J#)8dd z$ixkoZp%(8nPCi+6y)2}ODf+X>4nFLwhPjrVaa&A#J((R^#A@I}-W|yA6E6 z(+2pYQsM60)ae&bg}ZZ8vzhlxqVBb)M$2i2vW$OFNf=Gwp-k|WyIc+zL*_Q;W=s`h zLbx>`g1b~RP6$|9Dk--oZ|3xZnNUwEGg%DK15~0`lC9wJ3_KZ+u=cA8ps&qLL!0%7#Bj0>iL zj4>`GB3OWN!8DLD#)U)#3otI21~SIDkceOb#s$+r#uyh85iG#CU>e96<3b{W1sE4h z0~upnNJOvzK*kss5)mxGxL_K{7~?`Bf&~~COamEXTu4N)0ONvbAY+URi3k>8 zTrdq}d{JDb*_SN^3A|w$1+P->zj5Sl@EWFxt7{ArME3-OSlB}l1OI^U69my=BZ!l; z34&ft5ZBAk&HA90Ad1e_2Yk)3zSG|wjr3I$i;sSK|AoiPz9>6h!uE77e|ld@q~dtV zp%F*c>zC~+no>P~_Pr|~Gaq|&+ap~MjvPI@X7xPXdz-txVMCL1o%hCKQ*m*idf|u> zql${mQ2g>vy`_I(?DOHnZ&b8gnBq9v&rBS!zkTFvZ0({K#(Y)Z$t`_z-e&)xo zhn?{pXj-yr&%HDK?@a7^Nj>N--M^hY8=ti5)#{1Fn(kA2KFXJ#5$$3yIOA zOvUMV+ULLCInVP~Z}gQh-OD1{-`<}Nymn&2$;W#us?LvN=KnBx^Y?QP_P({{)QRHS z=f-SX@0sa3^vo|yK9v`5l%Dxxf4petw5r3wn7Xb9s{EeiE{j#G9?72^Q?pFiJyc<6dxXJcm#-%3*b zO+Dv7V$OYY)$j$YK8{b?bYb})+xGnMOC%oZZaA}f@w_z_qn0E8? literal 0 HcmV?d00001 diff --git a/assets/textures/exit.png.import b/assets/textures/exit.png.import new file mode 100644 index 0000000..2eb40e7 --- /dev/null +++ b/assets/textures/exit.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ccrodmdktimve" +path="res://.godot/imported/exit.png-538106750e61a416cfc164cc99820b25.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/exit.png" +dest_files=["res://.godot/imported/exit.png-538106750e61a416cfc164cc99820b25.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/export.png b/assets/textures/export.png new file mode 100755 index 0000000000000000000000000000000000000000..97100c763c26c23d3061bfe0fd150b1276a4c591 GIT binary patch literal 15268 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 AWB>pF literal 0 HcmV?d00001 diff --git a/assets/textures/fastBackwards.png.import b/assets/textures/fastBackwards.png.import new file mode 100644 index 0000000..525d34d --- /dev/null +++ b/assets/textures/fastBackwards.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cvffd2h31otem" +path="res://.godot/imported/fastBackwards.png-23e3b875391285f6e1867ad4307c8e31.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fastBackwards.png" +dest_files=["res://.godot/imported/fastBackwards.png-23e3b875391285f6e1867ad4307c8e31.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/fastForward.png b/assets/textures/fastForward.png new file mode 100755 index 0000000000000000000000000000000000000000..6500b10b5aa505a40178d42bdb140da916bf9c3e GIT binary patch literal 15352 zcmeI3eQXnD9LJAs!8ss0r!Zg8vjmyZ?s{Fjtw&qZwVRvLZP|u&i^6Vq&$^SgSMP4D zTbSUOaq3JEBN%}oqGCj45rZNjY8(lf5j19KCW&$J1?J0QltduDJlEG}UCT2Q|9md# z`rGq-f8Xbx&+~hp-aq$5WBomg3T`T(C~8q%t)~foi~1*jKKvV=e69t4T^+7%RVivg zk^Y%Sy|BBOqHH^)7N6$xuI2i2dxV1qL7?$;Bp3*(T*P6B`f@PVn;8Qg zm1r9r2A4h{?ejL$Zdn1ewbW`9OlFp@u$8h_i;ZRPrp+d{jA2cT*=A%}&Qig#<#hZq zI16B8SHw=P$x{;_4*usbbZJ_cW0;3o z0(ebUT4XukjFoF+;_hj;n=V-^g+#eWz0=O5t5Y?TG6Ei615Q}e7Ff+jlexvra%E=D zWVy@4awZdE5>uvmcx6%Q?49KS4JtW{3H3mf=^k(oioC|p$pzKU^znMRx{#{zApz8R zoN(@?k|c6GU^{K)qSe?5EHjUor5+dIrFD$sY0 z!;siE$@3sy1JQlQNwcRKzaLxn`&`)fq z%EQIAGtm<+(U!WYScX1OOpsws=T^S6(zB1z(*;5^wtL!Ejafxi*-ccrQ|sXs;PS&A zfjNX?hBGs=I}2TW$PYv(lYo|JNKdgd`lc2VFuWhKaKPASOy z0TT}S?M$jMHKslJ3&6SMfULm73^>c|Or~ZeOF#Sd(uS1yXg#oYW>#Ce-luQ;KzCGM zVK%`FK5f7&o{Dy-r?y@>741$>O=YeLNt)9fA1$pJ$d&02Qs3SSx%ygHMJ`^3iZ+86`L7 z{~V;I^gkP;c4QEg1~w+Ru!v9r!G+Sm#sn7@5h@_KP#V~n;KCw81q2sL0~-@uSVX9R z;6iC&V}c8d2o(@qC=F~(aA6Ul0)h*rfsF|+EFx4uaG^A?F~NmJgbD~Qlm<2?xUh&& z0l|gRz{Ug@77;2SxKJ9{nBc-9LIngDN&_1cTv$Y?fZ#%DU}J&{iwG4ETqq4}OmJZl zp#p*nrGbqJE-WHcKyaZnura}fMT80nE|dl~Cb+POPyxY((!j<97ZwpJAh=K(*qGqL zB0>cO7fJ&gUlCV9>Saq1f^S&%z*i}APMlf?U&Ew@+9oeW^)08UEn6w-;y>{FJVkYz zC~B&mqPXWNYKgpk{fQcins>I&<7$aa{CxIvZ!UYi=kuL~e>LW4Rj+MXd~WcS?eC22 zX&kut?Sk7~Z*M<(WV-h9lFz>KS3EO$)qyi@H`Y%s&hN-89L+Zj6?(2+HbmFN{ zI8{{f==h3I&cTMWdH3Ho@#XX<`>#Fi-chsf)<)w~RZjMS>mGY#@YpS5`TnW<_6?iA z8(BD3+q~kw7l+H|TO4CUYHRcUVXmaYICk>crY^?MlN|4-oJO~qpAPYnLB>q^5*3?Vf1!Bv#|(;Kf@g%afn28$LWB Q>+j~)Ro8pos%jtj7oU#f(f|Me literal 0 HcmV?d00001 diff --git a/assets/textures/fastForward.png.import b/assets/textures/fastForward.png.import new file mode 100644 index 0000000..8fe8512 --- /dev/null +++ b/assets/textures/fastForward.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbyfjjoavhi6i" +path="res://.godot/imported/fastForward.png-5dc9dc1dd0f314414d0e8358c405e79f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/fastForward.png" +dest_files=["res://.godot/imported/fastForward.png-5dc9dc1dd0f314414d0e8358c405e79f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/flag.png b/assets/textures/flag.png new file mode 100755 index 0000000000000000000000000000000000000000..5f09821994ddb81a068d6dfc6a702cc4cb077047 GIT binary patch literal 15515 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 literal 0 HcmV?d00001 diff --git a/assets/textures/information.png.import b/assets/textures/information.png.import new file mode 100644 index 0000000..b424102 --- /dev/null +++ b/assets/textures/information.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ce1h6limtxn4p" +path="res://.godot/imported/information.png-6d94c3e6aae926c3672f4231983a22c2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/information.png" +dest_files=["res://.godot/imported/information.png-6d94c3e6aae926c3672f4231983a22c2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/left-arrow.png b/assets/textures/left-arrow.png new file mode 100755 index 0000000000000000000000000000000000000000..291c350a0781130048125eed8cfcf0676c11df8b GIT binary patch literal 15243 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 literal 0 HcmV?d00001 diff --git a/assets/textures/left-arrow.png.import b/assets/textures/left-arrow.png.import new file mode 100644 index 0000000..2e38e84 --- /dev/null +++ b/assets/textures/left-arrow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bc748njoctfcw" +path="res://.godot/imported/left-arrow.png-ead4d2a5a61c451207c85467f72d7c3a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/left-arrow.png" +dest_files=["res://.godot/imported/left-arrow.png-ead4d2a5a61c451207c85467f72d7c3a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/menuGrid.png b/assets/textures/menuGrid.png new file mode 100755 index 0000000000000000000000000000000000000000..3e92b499b7ff0133e78a248f81066548da3f95da GIT binary patch literal 15242 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 Jy-my4{|Dc4z~cY_ literal 0 HcmV?d00001 diff --git a/assets/textures/menuList.png.import b/assets/textures/menuList.png.import new file mode 100644 index 0000000..cca6c87 --- /dev/null +++ b/assets/textures/menuList.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1ufmjxbn2se7" +path="res://.godot/imported/menuList.png-bfe6cb64af812aae2d6f991fb90c37aa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/menuList.png" +dest_files=["res://.godot/imported/menuList.png-bfe6cb64af812aae2d6f991fb90c37aa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/mouse.png b/assets/textures/mouse.png new file mode 100755 index 0000000000000000000000000000000000000000..e504ab7522a4e221acb3e776030cacd954ffbc0b GIT binary patch literal 15685 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 QeD^uuI^S|QXYs240h+gmT>t<8 literal 0 HcmV?d00001 diff --git a/assets/textures/mouseMiddle.png.import b/assets/textures/mouseMiddle.png.import new file mode 100644 index 0000000..ddec99b --- /dev/null +++ b/assets/textures/mouseMiddle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bluchrj0o5qdj" +path="res://.godot/imported/mouseMiddle.png-9ff476f134f39cab1d53a35cbf0b7f3b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/mouseMiddle.png" +dest_files=["res://.godot/imported/mouseMiddle.png-9ff476f134f39cab1d53a35cbf0b7f3b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/mouseRight.png b/assets/textures/mouseRight.png new file mode 100755 index 0000000000000000000000000000000000000000..9c79c9577e1c2921306862bb9ea82c87df5239f5 GIT binary patch literal 15619 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 literal 0 HcmV?d00001 diff --git a/assets/textures/musicOff.png.import b/assets/textures/musicOff.png.import new file mode 100644 index 0000000..b03beae --- /dev/null +++ b/assets/textures/musicOff.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cbn0iyq1hfe5s" +path="res://.godot/imported/musicOff.png-2760868011e73a10a0bcdaaac7d5dae3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/musicOff.png" +dest_files=["res://.godot/imported/musicOff.png-2760868011e73a10a0bcdaaac7d5dae3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/musicOn.png b/assets/textures/musicOn.png new file mode 100755 index 0000000000000000000000000000000000000000..e0db7ff6b67c94a9f7ea0fd509de9a3df842d337 GIT binary patch literal 15537 zcmeI3dvFuS9mkI_5K!=d!3of`L6#>elt_1{hizSDf%U>pBV${3WA~Bxe0R1FB%Lgs zkqn{rBymET8ERZZ3?b$bLU03dONXRP+k_HA!J#3A4pZaA?SyGkUUib87-$UL({n9b zES<@ps~Jf@?S6mXz5VQOSNG37UtYE>OZ5#EK@eG`C5}q)%`5L|Q^9B8lZ{p2YkHuh zHbfBj%u(Kxh%H;^5rlb@SXCp}xF2OW$){s^sb0`Ud;y>)2+NX4faO*SvbtVq6#Ye- z;orTZQHy+$<}s6-atG`}lUTAkD0o(vRdK6Va%Nt$#HzAH7+~NNWL6#VdHo?KQlyFc zG9Xr(NsT%xkyjRJij@J?HSTh?T?z_nlg^~&C_Sw%FzaZO(M;11tMwFZAZd!!o3%8} z7z-FWUmbsGtSS&$f_wv0>2Sq|1HXziO|l$dNHQD_>%s<|6l^4Ev)N2idQz{~0);lz z>X+Gw)*s4?nIwE1LWm2B0a=v%YQ>kWms;c^jYb(L`HIiW7f24|55?I5ie!WhkhG2> zGbFj)w@>r=Cd>@Ul|pJ}6Al=vY7Gcvr4W)@f}8;4c@teiNOrCQQ;H+H10&}u!7oo} z#dArYKugdY1YFGxngs%2KdOlDyVfxt1rcUTwFl7d|HXc_|!PWFgblshUX{2@X~kte~ci zpqjOmzDiFs20cR=7gIDtQIJVYndae^c(I{%oCh!{1X~04fRyPTU=Q-F%-)d;tR3s) zb~B~^kj(lyq10gobJvL?&+r1r>nX~hHG)sAzQD+73u&%FYi=l{dDd*MFBA%*lN_5q z&e|byElLf=t$AQ=bQU=EMoOQrx4UTCX)LrA8j9^Eqrqm+r_HAPge{ah-c|^Ts|4N^ zlzh?c9bkhYLD@A$n#8tAo(J(7i0(T^96wcXJ^3cHi_UyK<5E-C1I#V4Za(8oDU>sm znsQEJNKG}ZqyhTnK@ptjtQTUXtl)XQB7hqhrbG;Ztc8NiGjK%@~$bPHbz41&eDTqbFRVEp<_`3}v90V1hNhv+^C6o_UOLli(k--P5*e z%qptNY!Z?hKpa9b!?78eow+8~-ze}_G65~oke*^8l~wbKV;3#fI(97+ z^*4U)Ej-6GNI@SfTSXt+D3AevqlHX0rpB}+{{a}g3pr6Ul%<^gN@)X1 zY_uL|3puVWU0CYetNo&E)yGFmYlgCv zKd2ZC54b54tobIB!DJ!Ro6|GO#fadoafsk74JkVWOf8<2-ZNolZN^NfC!QHA2IvMV zS}UkE|>-~#<-A(U;)Mj(?G@;7ZMRHz_?%<$Qa{7B7y}N7fb^gV_Zl?umIzN zX&_^a3yBC8U|cW_WQ=hk5y1kC3#NgLF)kz`Sb%ZCG>|dIg+v4kFfNz|GRC-&h+qN6 z1=B#r7#9)|EWo&68ps&qLL!0%7#B zj0>iLj4>`GB3OWN!8DLD#)U)#3otI21~R@aE>-GbOTiDGundDoDd%$M3c+KTYObWx zO%SUeB#5@B3F7)K@O_>jS}20JP)86~8ysW!Z+Eu6vLFX4~cP`W$D4 zwdaf0ksCMqBeHedh9|H6BWIx_XXmVnbv8$?D!U#0(5NcbEp+7WoYlV027Y9>cO9z! z^xXZEm$Y5{e5B=YpD7ahCz&ba1YGvlw$qRE>cJl?i{X8&m4sP(h!i>JK& z!DgFoTQ`0AkN+waZ7bZh7eDGB09P`vss4k_*}?fQbl%-J%k%v!UH_TaI=Uxc`18BF zFVm0Se1F?pvpq+3S9e|cwda;?@aS)K)GL=({?P6}{M>gcT%FTO4?g?VjQ>9Uw}X~5 zcduys`2okV{oMSuyEeMD!tmCs_dU~jxNAg*BtoMqJIwNfCewS)h3RfIdHMpxa8FbBKvGTyY|}p z5AyB-;t9|0-l|25U+Xzl_@ZtrSkm`thjHs!B!>@2Kyd&{mePK zY2>Y;mv$U0sTTG%_1*K+lUtfkE-k6PI&^B)<0Er7y?HwK__{yrdFNIf2PH_1!AMLDh!0HsQz9|=h$))*2O5x9d_a7q2u4FpsI#~Cn0qlb^5JhH51bqfGsS$|)22z@K|&yr^JJM;a^!{}>irf<{);P#dF zPZN0cz})}{`_1Mkl_pv<3dIdMni~e?zZ(|A{SGWa5 zlA$ETp=fVmIP_P@m9(sk$gPMfWcNzo?? z&A6dvELBf4wy!*{Pg)_D%O0roDXdG&lm<$h1$Kxco0Bsv@8Q@6NwL_?(=@GarfChq z^2+KCXbw+jAUgz2ebR_SByX)Z1=H%8LQ5(jT7Xf{6ii!nt(17lCo^fJ@}QMC3sX=- zDJG)8*Ii2{sav|4)EfXSbvMLlsfh+G?4E{cFsC+1vwNJhd`&r9EulgdBLg?&l%C{!H@fg`8OjjKDs-x;yhW8NUXhUDYbIboYu;{EY@G`-b+ecOz4ItTVYj`Cm@?iPe^RJu{@?! z`VSyR^ptL(%M6Bn5?iks%d+o&yR;D{IbRRF#MZP`>qqQ^pPJ0;+r1q6pr;M=DWu}v z)v2R5PsO{dQ_Go~(yA5q7DlUT#L`1lN;=*YVV~UH22p3RXI1OSar$LMsH9)14|z$6F2FJl0RuK;kDzW0ew zdjV+b>W_8}=g$0g?&H{r&O3X)Zr>f+*SXXJYjzFvEw%1=^x$*W^1~ND_~V6D%^RfF z*Vc`m{xW+h_|jVT?2(67AG&7?h<5H+vSfKvlZ)wG?8Mr+-&ZB>-Fx=_=^K~Dx!KG7 z7vDy&Z9XM-92B+pS9JWd{_2(4*y*Qk3~nDix~8pl_SCimV>dF#Uz|0rp8M+QE7wmv z^XIma3(c?3d1kevJHU$N%p%)-@$UZhLWr_Uze-Sf`&*eB=Fl#g9J|M-4q)J68%3Nx_dT{QWPyX$xu$NCD z&9Be%{e7S3`8>bp$-T*;!GT@tnm0956t%9uFFXW4W$V3mHT;|U`A8IgJdos6y-arL`Tih$R0t`l1@?9V!)YArl6Xl{GHj9C`|&Bj)AzM2AEr4pJix8 z4lpC$h%1r`feEE=S_i|^15s&uQu4`6XRz6y6`(;9m?E7`CR9Vn1{m8{fU(ugGPEr* zCj(5kH6T428Kgs+4rs5_>yTVLN4NW&oY&*yxE(a_;@m9fVtJo~;{;E;z_ro&7ZYrT zkzbd`g`se7emMAFfSEAOl)$o?OvagUJ2gGdaz3Arb@43EJD|d0OsS@rb*RSHoJqka z3=BzEQl_G*wB;+tw6qyu7;B*7E5EK}syL8p-rY*tLMoYTeDNs2`7ot8}2%rwj) zP+D2d0gdQX3a~@K(9*gDpnPksDHvwY0l1_*q7@kR9000W(@K_#KB=^xutCcb3lbm+ zQw&IftGSlcgl1~SgjNS&vAZrtQyH(r!s@A;2C_<>G^;0_Qccnbe8A&ZU7crEUT2ayv{a#&xH@cWWSXn#x ze=yguKqdj*;4poP0guiUGQPEL>s}oOFO|0zIugnXH>S8f@HP`f$-1$Fh6p#;&)PR! zp{+EjT!uAJPEcb{S604N>Gj9ROaQg)xK|w2oRzJrZ(?ZUW=7OOcO0Gw%q5gFEYGO# zEKP`N9LPbo0Ikqanc`=yT}vqCo0e-W-^)V%RqwrDmV|LlPl{$xNs4j6rqsBfEj5)A7={mJAlT;hy1jn3vbi#2P|1SCXjp-F zsbQTExU_syWlzn_eRVUDo_uDm7?1}jyH;|o@bL^j8M4Jk!}2mJ9?bh3l$La#jZr%? z2ucGR6I@tCsDR)?X<%c53yTO95L_q?Y)o)r5upNt3#EaL2`(%mR6uZ{G_Wzjg++u4 z2riTcHYT{Rh)@B+h0?&r1Q!+&Dj>K}8rYcN!XiQi1Q$vJ8xveuM5ut^LTO-Qf(wfX z6%bq~4QxzsVG*GMf(xaAjR`I+B2++dp){~D!G%SH3J5Ng1~w+Ru!v9r!G+Sm#sn7@ z5h@_KP#V~n;KCw81q2sL0~-@uSVX9R;6iC&V}c8d2o(@qC=F~(aA6Ul0)h*rfsOBp ztGV=JOQ6DESZ3f)DSLbW{sR6Cla~61A`~^c8}^=Qw9_@*sSbgenv)!MqHrEATNnT?EaY~xU4bgWH0 zbU5IC=X2l4A3C#rSLfngd2Y$KFz|4&k#1}Zcg?I_yS|};DT~wd+s<4$dFP|wX0LDk z{@Uin%csw^ymew5IDckxc4^zyCqGG^II{Fm|Kgs$e_qtG{Fb86hV>;MJHGx^%faE@ zrxu>Qy7%Jzsm=ShPyY4k?M3gp+uuy@`A+#k`yjOG=F5K`JA7gJma?$$1~Qk`Yg$*m z@*#MaUV63rz5Pv7XMehUY3%*q=dOQw`^~$*Tns%|oOxGMX%%*Ces<-?j>Db8$nij< za&>P0)NJp;;rSo0J%2R*_6)VbUT#-YQ$GH<6V<%_Hd2xU#h=nAbfJ? H*lYg*r*Dl$ literal 0 HcmV?d00001 diff --git a/assets/textures/plus.png.import b/assets/textures/plus.png.import new file mode 100644 index 0000000..e0f1091 --- /dev/null +++ b/assets/textures/plus.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://m2s5sd4pmrhu" +path="res://.godot/imported/plus.png-50ad455194f0ed193dc689e27c5354a1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/plus.png" +dest_files=["res://.godot/imported/plus.png-50ad455194f0ed193dc689e27c5354a1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/pointer.png b/assets/textures/pointer.png new file mode 100755 index 0000000000000000000000000000000000000000..cdd89b3ec6d451fa4072737847d22f431c5f89da GIT binary patch literal 15787 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 IdDY|p13*D+6aWAK literal 0 HcmV?d00001 diff --git a/assets/textures/question.png.import b/assets/textures/question.png.import new file mode 100644 index 0000000..f820ba6 --- /dev/null +++ b/assets/textures/question.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3c0k5xktslsn" +path="res://.godot/imported/question.png-e99ab9730bf445631148b3ac93df82e6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/question.png" +dest_files=["res://.godot/imported/question.png-e99ab9730bf445631148b3ac93df82e6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/return.png b/assets/textures/return.png new file mode 100755 index 0000000000000000000000000000000000000000..8eb2cfb5e70c98d176ca70d322d95bd40b2e6d4c GIT binary patch literal 957 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 Lq0YCW+myQn literal 0 HcmV?d00001 diff --git a/assets/textures/right-arrow.png.import b/assets/textures/right-arrow.png.import new file mode 100644 index 0000000..1db630a --- /dev/null +++ b/assets/textures/right-arrow.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxy1e87mujpi1" +path="res://.godot/imported/right-arrow.png-c326af30c34e91efe548cff6e7671be0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/right-arrow.png" +dest_files=["res://.godot/imported/right-arrow.png-c326af30c34e91efe548cff6e7671be0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/signal3.png b/assets/textures/signal3.png new file mode 100755 index 0000000000000000000000000000000000000000..b0763e7d8da1681202a49b315a08ef8bd53ac512 GIT binary patch literal 15211 zcmeI3Z)_7~9LI045SW>nF({E3k1`X?Z0}G1tUbGqt=-&+Wy>fqNW@+5o^==6yK;A< z-B4LXBO0BAL`35|qbMjSzA}o87?H#TBm`mvXF>=OLIMdvgAnI)z5aRHwLCN7<#S2b z-=63D`#$%4p5OEI-rO7gtDkLbc&veD7tsK6d2HfRn;pA#f4@Nagb2dHplgEk2+{Y zZgZ^nM%idO3`UfmaUHA~UmcUiH%kH8(H?3DW(8=F0;Wi3Q%ThjvTcr>uK;7KnQ_oL ziMhGW(P0fp4@Udxu%-jr>+(7!mgnf!fQ$2b0vz`=&9j`F;aG+bI5|%6vpD z1B`;YJS+@Ey7R-q|JocQrkNHPCX>myGH#cqCm1de2rw+q@VpZ$oW_`Hidm;>EVoSx zJ`rF@x{@{(O{FbgF|Li8Z4QSuQ1QyoE0rz|q#Aj4kRp>6(+uZgnHova=)KcYsj8WV zIRHvCt2&?&8%qOb02tb+E&(WCUhNhPvui7yQXbJ9jJmc0)vRhIOGTgbsGiJ$mL&!x zK?O^l{8T!V$xQ!@=@l^SVQkDZpQDSN4du#knY4n$Ma zW15x>+2z__xO+MrrdO<2R9VXyPX(Dub*W}bMj#@ZAOvgL1FPA|@-dzh+`PbgT3AkC zS;WLvR(M1;Ss5Oi|AmBbqd7)llAAhSr|0PTt4z zojyL?&2e2Gf2ZHw5%zlAonapr@cIh2Na}1`petK}+^uV=-1bh3x&f?R)8;5_o8ozp zuYugY6O`Fg&EJo|_WjICE!__^58B;w&6x&p&PZy>xrm`O)ryja==*d9p6Fr{VP&o0 z|G`|v0=Wt328ZcU47hd1knyc~Tj%N;u%*1U(2-Q;xG=@#fv1@uO4f-TGDNtzK_+*? z71~NSWoK9e*@7x-I=Awjm0o*{%m`4+wtK}^wXJfh+9rlJY-U6qbR^)8z#KxhVR=Sv zXK6%K6F?3z1!#qa%9J2uty)qkUo^Y5d@T$0H+$`avLp;^dP+1yN=i%sCaordOsTOn zX0Z4RAcVD~ro+Pwgxo=-Gkj%I3<9ekBW%gAoOu zrG~Xb;MDR-l|5B6H`L5Tdh(feF(406xmvMX;o}*6GGvO6hUH~c+?e+{C{5`;8>4n) z5R?WsCb+POPyxY((!j<97ZwpJAh=K(*qGqLB0>cO7fJ&g6I@tCsDR)?X<%c53yTO9 z5L_q?Y)o)r5upNt3#EaL2`(%mR6uZ{G_Wzjg++u42riTcHYT{Rh)@B+h0?&r1Q!+& zDj>K}8rYcN!XiQi1Q$vJ8xveuM5ut^LTO-Qf(wfX6%bq~4QxzsVG*GMf(xaAjR`I+ zB2++dp){~D!G%SH3J5Ng1~w+Ru!v9r!G+Sm#sn7@5h@_KP#V~n;KCw81q2sL0~_BH zS3~J#OQ6CxEHm&`O6l#`1bhvXmU;%F6gB=NMNRCWsM|B}`wB&kvJ`c7h@ynO6!oaK z`-LC7DXOloH_{Qy{&wxc>F5valGjczePr3vsReIMtzbL5hw6PpuTK6lIkjNtqL(){ z9ddql=J=J{&F#XQdc5oKfd|(v{$k%V?@&7@sE3;9dGjJGCl;dd31Qo+!*?DZm9Oo7 zvH2TqZ2pcX0(Woiy2MJ;iQPXn|FN#;{3q|$!9CrKTN=FMi~rSJqoL3!Ccd z9Q4X_=g*#M*>iB;@6#WjYPt5;zh5htzvCKDwS2zo=Of3~p<}`L^x_WR_Dx@z&dj!L z?T3E7pkDVF(|adRwv2CFcI4=>li~XMQbx7->Y__u-ncM*X#193f4eV#KRtD;@4)_z zlke^SXaAY=>(Ab7e17K78;QH2tM*jwd$i*d=kC-|)XdC$YRT)LcK0={x(=6t>g`$` JIoLV$%73$SmwEsI literal 0 HcmV?d00001 diff --git a/assets/textures/signal3.png.import b/assets/textures/signal3.png.import new file mode 100644 index 0000000..da09da9 --- /dev/null +++ b/assets/textures/signal3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cnupc4sbjpqrc" +path="res://.godot/imported/signal3.png-9a581cde38ac66c1947039e63aa552e3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/signal3.png" +dest_files=["res://.godot/imported/signal3.png-9a581cde38ac66c1947039e63aa552e3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/thumb-1920-667142.jpg b/assets/textures/thumb-1920-667142.jpg new file mode 100755 index 0000000000000000000000000000000000000000..2fc01dac216fb21d5397e0ee3661430984807a82 GIT binary patch literal 121756 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 + \ No newline at end of file

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 Gp8X%cY!Pt) literal 0 HcmV?d00001 diff --git a/assets/textures/trashcanOpen.png.import b/assets/textures/trashcanOpen.png.import new file mode 100644 index 0000000..411849f --- /dev/null +++ b/assets/textures/trashcanOpen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://x6rjmc3qqynr" +path="res://.godot/imported/trashcanOpen.png-95d1f5865eda44d1a9a66e73a8b13643.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/trashcanOpen.png" +dest_files=["res://.godot/imported/trashcanOpen.png-95d1f5865eda44d1a9a66e73a8b13643.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/warning.png b/assets/textures/warning.png new file mode 100755 index 0000000000000000000000000000000000000000..5869f57f7242f3ebde41606a368793b9fe9e9f9a GIT binary patch literal 15751 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 As{jB1 literal 0 HcmV?d00001 diff --git a/assets/textures/warning.png.import b/assets/textures/warning.png.import new file mode 100644 index 0000000..bba53f1 --- /dev/null +++ b/assets/textures/warning.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1f87exx3bxff" +path="res://.godot/imported/warning.png-d02fee0a1849545d57b452515c90196a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/warning.png" +dest_files=["res://.godot/imported/warning.png-d02fee0a1849545d57b452515c90196a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/wrench.png b/assets/textures/wrench.png new file mode 100755 index 0000000000000000000000000000000000000000..5f7464176dfddeb467d90cdfe2ee09ce138c8b6d GIT binary patch literal 15771 zcmeI3dsGuw9>)jp0a000*j6gtB%%fsCQmS9h(H1hYA}VU;Il(Az${57CKD3yu|c%e z)gsbLsjbK3sV=&8)vDXmtp#1HJxbMD*LAIn&(*cMtk_y#wO#j4638VG$33TiPR>d4 z%e~*<_s;#?-@TcCX0^WH*TZ=6JOn|8<>zS&!MBNdM-Bp?wrd*<;48|OSK>gBAtRZ0 z7_#xb7ZF6+L>h|eV%>DiNLf;G6IDv2x-B-KMiA8$w+%N|5;VV*C?~BM!ma}cg?!SK zA)KwyiFGy&Q9J=o(3SB9{HrfnFCx?HYQmn@aCm!lG;Qi+PCs8pH)6e*5sD~-ET ztd220lWrd^;V{}s8%1NE+hgo>vuqhq1r~Eg@l80+KmK|kLm9c9CS_m3CRzcB}qk;+nu%|mDMw%=O!Gh@tnMSzD5NS-0FU?z1 zzNJ=yLdG<90;egvfuhW6U%BeLub!{b@I|vptBGm{<&%_>@5&I?6B_Pcahb9-MJbkp4_uy>Ql>N!rG$b|;J9y+z0>(v*svbVZs}lPi(r$R}k_l4WTWa#^+}O`=q!dD#J5D7CLGVJE8y zQ?8w|c(=C=w>t=C*JKF0w@uG^;I9GizQf4AQ}thuH1zfKNex^NFjx7yO(AD0V{?X5 z1I|4d0#gktX~1ZPodhR3ZiZMfEBOCl?#BYU2;c^W$s-+L>r_MIGxKK7)goe1@7C@P zGx?kg)3ZF_G{bNsb7HFOJAQ+X5Hm%U}lb3Hn*n=PTbn>7mDPRS?!*+dXKj z`mDUF&?XM5jCSF6BC8zi2$n<0XV^OFrlHJ~9UNwaTBbt#YlgCzv!5w# zKneHOgG7b)X$#gDGaKLR^y<^4V(w3(35V$T&yL*S?XYR2$-5bDY&QK%#x6qP>(;;R}9b% zl($xVt>E?y+!>-hw}!pTsApsT%t2sEKeI7x#|;A0V2wFktcYL%hYO~`8gsZ<5y1iu z7fgdS=5Vnhf(0Bdm;u z%;9211PeG^Fb&q2!^MgS7I3&=8muvgixm+p;Bdh-SYr+sDxL6Uv0uC2UgEi)Gu_A&694?p!Yy3=HyuibjgcUqt=>m^Z z{`ZUaDc~_ozA>**hafd$5yVr6AdjDd?^_7s6eGy(R}lnjMvxb%#)U_75hUWb`PwXl z`$FfYi*H=Wj9t0z{ZIdC*i$gDfoB^mh&wbZ28&EEP4@i9W7zZih?eDh5}J9(>UPHs zS^1}LJHEYypIX0j!|8VEy+wDvbgK$Z-IR$Y|8PjakNI6@VV&$^otLmGOD&EZ`#Egt? z)^zOGV>43q3lhKoN)VygP&+;D%aW*XA`o%GcXuYsMa*yLp}}|Irz`y=bkV zGV03EE9)R{-Zx6&Tz!AC!SF#g4|1I`JV@uJ0xj*LDuW1TpjKesY-$@GJ0 z#xJ&hRE50U^|fH&;l`wvN62?mMGyY4Q|F0mi4wJWMu*d@qeSW_4Kee-yQ5zcuFM-X zP1H5-!AFYqZHYr-Pkb}>!>%1~j=cSkZE>4QBO>*?Yv%~&y}=_+thC?DoUr?q&;H)L zuXXTQ*N|!0(LoL4mfYCc)`^fKeo7B>B);`<@R?|Q^Nk@*E2PT`yUrM(G*pDZ~2|UuQfJnX3bq!pD}gyor`t6%L}hvdN7Z!Ju`kr%&}E^>9(hM;q3OL z`AfB%?}v@`p!6|kOGjb#wvXGgP7b)g@8SIDq+1Qvi8c`4oi4t#-+DYj=x^{Q?8)?!ebJKOlQ}WUYQcHb1tO`RV%{kiFyIT}a3FyX{Z5FLpAIPv_?pXm@45y8M6e5TA(v literal 0 HcmV?d00001 diff --git a/assets/textures/wrench.png.import b/assets/textures/wrench.png.import new file mode 100644 index 0000000..5a3db66 --- /dev/null +++ b/assets/textures/wrench.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://f2b6en8hsyh4" +path="res://.godot/imported/wrench.png-0bf537c67e84e6157d5037b8d039d173.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/wrench.png" +dest_files=["res://.godot/imported/wrench.png-0bf537c67e84e6157d5037b8d039d173.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/zoom.png b/assets/textures/zoom.png new file mode 100755 index 0000000000000000000000000000000000000000..6485b489f3f51efcdc3632b7a2ab232dadd69514 GIT binary patch literal 15871 zcmeI3ZB!Fi8pj6;h_Je7MTKI|7?&25WHJc>G7S+(KoCKMSP^k`k_<3PGI27I2&;w4 zsk&|{RfK9Q)r06-p`x{=MZ3PDxO=p|7mx+FzSNhhU8|*5cijmIIZ2+} z`+xp-?(aVLX1>gtwA5)Md;)zS2pW-;s7`0U^|rUS7yD`YZi9yX8g5FQYla}-mu+u1 zXwygIAxK_HYBHJ3lo^MB8tvMP`O-=h$V^m_@(TW9Ee`PD1IqnWCpd;>-v05 z7COHNv|fi0`GkQ@F|!oVLFZ!1qZrDZM-2h6uX{+044E?o3tP{SX@r#=BF)xgPwS~E z`%){|LdH}yfio1Xp{RVNy<1=hT%HfiLEr_?BXhro)fOO&3RGw4BJ3`fV=jF8EsG6mw=?3$5AT8aEjHOZc(X4?*7r{+jfdU>ENP{!xad9F71w1a024~FU;zR@rcw8V2&X~u=i3k+%xIh}5F^`KA z5h&nsfiyT{9v3GfP{88?X>i6oE>1+CfX4;W;EZ`(oQOaHj|-&18S}U}5rG087f6FM z=5cW%0tGxSkOpVWujae*{A z2zu#ik~&snZU13&*OK-azvELSD^`sxpHe)sPUDyEMthd~!2Ych)S89qvDbY5GG%pk ztlG0`SmnuME6*nFcv5q|`&8aj_og@gv#+SJsK~ml!ri}2`R`GF-tn+U+$isoG>sFS|d_`^p^mv**Xhh{oa>MNmNTq}Lz4_xYIay{0pl;@Y!Dw-AP7lGjFF{wVRo zSDNacJyLb7nt2_%M^1db>U~e~jWB(;<*HvoCmk@ar7L;5-cq@*VKme_;w*9M+Sc2r z12!lcUfXj_{?5t3FV=fChP^qx?ZENrJIB@T9#(td!j`XhcBtkc=cbj?ZN@8G53k&4 zX}wo>cCKKM<1?O6B5JstCMS0u$HecqZ)7^069cbF%d7GswBH=Joa{nU#h9Q?KNzh$TG_sbicFV{;aH) z!&j~Un3$EgxzpY2?TPMNy-Q>MT3oCNEU7_Gjd;?T3=ccHN}I6;?a_6T z1C3lU?rdB8mUC?p^;fow7G2UBTdwR}eLCmjN#tg5U`Fd3lh15>aBZFc)DvTNQnKYs z@zBhtTIj0c@cx1YmA(h7!`EK?FOwb8sQD)uki4~{ji}i4@}l7Nwe<;^iw}yz<7yk_{dkn>XBiOSFFXuA5y=wO=Y?{g2!V&6vC3 zll>jP|7se1vBYarX0|`pSpHdi_4dHh+Fx4Hjx~2Clc9L#>bt>DNo zz9F6^rJmPgU_AEZ@IM5Fcw#NTj(qGfyDDumv+ot`;UvTS*ts<|(W9zSMQmH(pQgsI z+7RMFpDS2%W0zM~=#szBw`4s_hM(;_8oK;%^==tH2j*pl(BtDoyXx;LKR8hT>c?>T oA$8S&{WZq1^^R>h_!5*{>hsf~)3=t{9??#UPgQ>!xA5)%0Vc%NDgXcg literal 0 HcmV?d00001 diff --git a/assets/textures/zoom.png.import b/assets/textures/zoom.png.import new file mode 100644 index 0000000..6e3c768 --- /dev/null +++ b/assets/textures/zoom.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cf2mtfsfsb6k1" +path="res://.godot/imported/zoom.png-960a6405624a1439b35bc8d2d6ac8a9c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/zoom.png" +dest_files=["res://.godot/imported/zoom.png-960a6405624a1439b35bc8d2d6ac8a9c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/zoomDefault.png b/assets/textures/zoomDefault.png new file mode 100755 index 0000000000000000000000000000000000000000..451cb6aa72590a346ed7ca862bbdb897b6f06ffc GIT binary patch literal 15922 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 ZoL@Dpdfiv2FPR_njtY+ns|rmn_&?aK^=$wE literal 0 HcmV?d00001 diff --git a/assets/textures/zoomIn.png.import b/assets/textures/zoomIn.png.import new file mode 100644 index 0000000..ed8ca4c --- /dev/null +++ b/assets/textures/zoomIn.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bna16xaqa674x" +path="res://.godot/imported/zoomIn.png-1b0b2ed8a89f0dc9324087aada6c42bc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/zoomIn.png" +dest_files=["res://.godot/imported/zoomIn.png-1b0b2ed8a89f0dc9324087aada6c42bc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/assets/textures/zoomOut.png b/assets/textures/zoomOut.png new file mode 100755 index 0000000000000000000000000000000000000000..77e7909b5338eb46baf85d80c2bd327dc9f1b857 GIT binary patch literal 15908 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 diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..a4f7651 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://difri7b7mxc4q" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..097bd70 --- /dev/null +++ b/project.godot @@ -0,0 +1,36 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="HtmlDesigner" +config/tags=PackedStringArray("app", "interface", "tool") +run/main_scene="res://src/main_ui.tscn" +config/features=PackedStringArray("4.3", "Forward Plus") +run/low_processor_mode=true +config/icon="res://icon.svg" + +[autoload] + +html="*res://src/html.tscn" +app="*res://src/app.tscn" + +[display] + +window/size/initial_position_type=3 +window/subwindows/embed_subwindows=false + +[dotnet] + +project/assembly_name="HtmlDesigner" + +[rendering] + +renderer/rendering_method="gl_compatibility" diff --git a/src/app.gd b/src/app.gd new file mode 100755 index 0000000..a2d0869 --- /dev/null +++ b/src/app.gd @@ -0,0 +1,136 @@ +extends Control + + +var drag_widget: Control = null + + +func _physics_process(_delta: float) -> void: + if drag_widget: + drag_widget.set_global_position(get_global_mouse_position()) + +func lmb_pressed(event: InputEventMouseButton) -> bool: + return event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed() + +func lmb_released(event: InputEventMouseButton) -> bool: + return event.button_index == MOUSE_BUTTON_LEFT and event.is_released() + +func rmb_pressed(event: InputEventMouseButton) -> bool: + return event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed() + +func rmb_released(event: InputEventMouseButton) -> bool: + return event.button_index == MOUSE_BUTTON_RIGHT and event.is_released() + +func set_drag_widget(o: WidgetModel, duplicate: bool = true) -> void: + if !o: + print("nothing...") + return + drag_widget = o.duplicate() if duplicate else o + drag_widget.set_global_position(get_global_mouse_position()) +# drag_widget.set_visible(true) + drag_widget.set_z_index(100) + + add_child(drag_widget) + if drag_widget: +# print("show model: ", drag_widget.get_model()) + drag_widget.show() + +func reset_drag_object() -> void: + if drag_widget: + drag_widget.queue_free() + drag_widget = null + + +func swap_children(parent: Node, from_index: int, to_index: int) -> void: + var from = parent.get_child(from_index) + var to = parent.get_child(to_index) + parent.move_child(from, to_index) + parent.move_child(to, from_index) + + +func swap_child_nodes(parent: Node, from: Node, to: Node) -> void: + var from_index = from.get_index() + var to_index = to.get_index() + parent.move_child(from, to_index) + parent.move_child(to, from_index) + + +func clear_children(node: Node) -> void: + for i in node.get_children(): + i.queue_free() + + +func delay(seconds: float): + return await get_tree().create_timer(seconds).timeout + + +func make_multi_file_dialog(node: Node, title: String, on_files_selected: Callable, filters = []) -> FileDialog: + var file_dialog := FileDialog.new() + file_dialog.set_title("Attach files") + file_dialog.set_file_mode(FileDialog.FILE_MODE_OPEN_FILES) + file_dialog.set_initial_position(Window.WINDOW_INITIAL_POSITION_CENTER_MAIN_WINDOW_SCREEN) + file_dialog.set_min_size(Vector2(640, 480)) + file_dialog.set_filters(filters) + file_dialog.files_selected.connect(on_files_selected) + node.add_child(file_dialog) + file_dialog.show() + return file_dialog + + +func make_color_picker(node: Node, title: String, on_color_selected: Callable) -> ColorPicker: + var color_picker := ColorPicker.new() + color_picker.set_h_size_flags(Control.SIZE_EXPAND_FILL) + color_picker.color_changed.connect(on_color_selected) + var window := make_window(node, title, color_picker) + window.set_min_size(Vector2i(300, 560)) + window.set_max_size(Vector2i(300, 560)) + return color_picker + + +func make_file_dialog(node: Node, title: String, on_file_selected: Callable, filters = []) -> FileDialog: + var file_dialog := FileDialog.new() + file_dialog.set_title("Attach files") + file_dialog.set_access(FileDialog.ACCESS_FILESYSTEM) + file_dialog.set_file_mode(FileDialog.FILE_MODE_OPEN_FILE) + file_dialog.set_initial_position(Window.WINDOW_INITIAL_POSITION_CENTER_MAIN_WINDOW_SCREEN) + file_dialog.set_min_size(Vector2(640, 480)) + file_dialog.set_filters(filters) + file_dialog.file_selected.connect(on_file_selected) + node.add_child(file_dialog) + file_dialog.show() + return file_dialog + + +func make_window(node: Node, title: String, ui_scene: Control) -> Window: + var window = Window.new() + window.set_flag(Window.FLAG_POPUP, false) +# window.set_flag(Window.FLAG_BORDERLESS, true) + window.set_title(title) + window.set_exclusive(true) + window.set_min_size(Vector2i(640, 480)) + window.set_initial_position(Window.WINDOW_INITIAL_POSITION_CENTER_MAIN_WINDOW_SCREEN) + window.close_requested.connect(window.queue_free) + window.add_child(ui_scene) + node.add_child(window) + window.show() + return window + + +func toggle_popup_menu(popup_menu: PopupMenu) -> void: + popup_menu.set_visible(!popup_menu.is_visible()) + if popup_menu.is_visible(): + popup_menu.set_position(DisplayServer.mouse_get_position()) + else: + popup_menu.set_position(Vector2i(-600, -480)) + popup_menu.set_process(popup_menu.is_visible()) + +func array_to_string(arr: PackedStringArray, delim: String = ", ", trim_suffix: bool = true) -> String: + if arr.is_empty(): + return "" + return delim.join(arr).trim_suffix(delim if trim_suffix else "") + +func scroll_to_top(scroll_view: ScrollContainer) -> void: + scroll_view.set_v_scroll(0) + +func scroll_to_bottom(scroll_view: ScrollContainer) -> void: + var max_value = scroll_view.get_v_scroll_bar().get_max() + scroll_view.set_deferred("scroll_vertical", max_value) diff --git a/src/app.tscn b/src/app.tscn new file mode 100755 index 0000000..2298eab --- /dev/null +++ b/src/app.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=3 uid="uid://byeo2r0t0rpld"] + +[ext_resource type="Script" path="res://src/app.gd" id="1_56vju"] + +[node name="app" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +script = ExtResource("1_56vju") diff --git a/src/canvas.gd b/src/canvas.gd new file mode 100755 index 0000000..6e7ee75 --- /dev/null +++ b/src/canvas.gd @@ -0,0 +1,217 @@ +extends TextureRect + +class_name Canvas + +signal update_doctree(data) +signal update_document(document) +signal update_selected(selected) + +@onready var button_select := %Select +@onready var button_move := %Move +@onready var label_selection := %Selection +@onready var label_tool := %SetTool +@onready var selection_bounds := %SelectionBounds +@onready var popup_menu := %PopupMenu +@onready var background := $"../Background" +@onready var layout := $Layout +@onready var no_layout := %NoLayout +@onready var v_layout := %VerticalLayout +@onready var h_layout := %HorizontalLayout +@onready var g_layout := %GridLayout + +enum CanvasTool { + SELECT, + MOVE +} + +var page_name := "index" +var contains_mouse := false +var current_tool := CanvasTool.SELECT +var selected: Array[WidgetModel] = [] +var mouse_position := Vector2() +var bg_image_path := "" + + +func _ready() -> void: + mouse_entered.connect(func(): contains_mouse = true) + mouse_exited.connect(func(): contains_mouse = false) + button_select.pressed.connect(_set_tool.bind(CanvasTool.SELECT)) + button_move.pressed.connect(_set_tool.bind(CanvasTool.MOVE)) + popup_menu.id_pressed.connect(_handle_popup_menu) + + no_layout.pressed.connect(func(): _set_layout(_init_container(Container.new()))) + v_layout.pressed.connect(func(): _set_layout(_init_container(VBoxContainer.new()))) + h_layout.pressed.connect(func(): _set_layout(_init_container(HBoxContainer.new()))) + g_layout.pressed.connect( + func(): + var c := GridContainer.new() + c.set_columns(2) + _set_layout(c) + _init_container(c) + ) + + +func _init_container(c: Container) -> Container: + c.set_name("MainLayout") + c.set_size(background.get_size()) + c.size_flags_horizontal = Control.SIZE_EXPAND_FILL + c.size_flags_vertical = Control.SIZE_EXPAND_FILL + return c + + +func _set_layout(container) -> void: + var temp = layout + layout.replace_by(container) + temp.queue_free() + layout = container + + +func _input(event: InputEvent) -> void: + if not contains_mouse: + return + + # get the dragged object + if event is InputEventMouseButton: + if app.lmb_pressed(event): + if current_tool == CanvasTool.SELECT: + _start_selection() + if app.lmb_released(event): + if app.drag_widget: + print("dropped widget: ", app.drag_widget) + unselect_all() + var widget = app.drag_widget + var parent = widget.get_parent() + parent.remove_child(widget) + layout.add_child(widget) + if widget.has_signal("selected"): + widget.selected.connect(_set_selection.bind(widget)) + if widget.has_signal("update_document"): + widget.update_document.connect(emit_signal.bind("update_document", generate_html())) + widget.set_global_position(get_global_mouse_position()) + app.drag_widget = null + _set_selection(widget) + emit_signal("update_document", generate_html()) + _end_selection() + if app.rmb_pressed(event): + # open context menu + if popup_menu: + app.toggle_popup_menu(popup_menu) + + elif event is InputEventMouseMotion: + if current_tool == CanvasTool.SELECT: + _update_selection() + +func unselect_all() -> void: + for i in get_children(): + if i is WidgetUI: + i.is_selected = false + +func generate_html() -> String: + var bg_color: Color = background.get_theme_stylebox("panel").get_bg_color() + var bg := html.background(bg_image_path, bg_color) + var document := html.html("", {"style": bg, "position": "relative"}) + "\n" + var attrs: Dictionary = { + "style": bg, + "position": "relative", + } + var contents = "" + for i in layout.get_children(): + if i.has_method("generate_html"): + contents += i.generate_html() + "\n" + var s: Vector2 = background.get_size() + document += html.body(contents, {"width": s.x, "height": s.y}) + return document + + +func generate_tree() -> Tree: + # build tree from canvas + var tree := Tree.new() + var children := get_children() + for child in children: + if child is HtmlDiv: + child.generate_tree() + return tree + + +func _set_tool(tool: CanvasTool) -> void: + current_tool = tool + match current_tool: + CanvasTool.SELECT: label_tool.set_text("Select") + CanvasTool.MOVE: label_tool.set_text("Move") + + +func _set_selection(widget: WidgetModel) -> void: + selected.clear() + selected.append(widget) + label_selection.set_text(widget.get_name()) + emit_signal("update_doctree", {"parent": "index.html", "name": widget.get_name()}) + emit_signal("update_selected", selected) + + +func _start_selection() -> void: + mouse_position = get_global_mouse_position() + var rect = Rect2(mouse_position, Vector2()) +# draw_rect(rect, Color(1.0, 1.0, 0), false, 2.0) +# selection_bounds.set_visible(true) +# selection_bounds.set_global_position(mouse_position) + + +func _update_selection() -> void: + var delta = get_global_mouse_position() - mouse_position + var rect = Rect2(mouse_position, delta) +# draw_rect(rect, Color(1.0, 1.0, 0), false, 2.0) +# selection_bounds.set_size(delta) + + +func _highlight_selection() -> void: + pass +# for i in selected: +# i. + + +func _end_selection() -> Array: +# selection_bounds.set_visible(false) + return [] + + +func set_background_color(color: Color) -> void: + background.get_theme_stylebox("panel").set_bg_color(color) + emit_signal("update_document", generate_html()) + + +func load_background(path: String) -> void: + # Check if file is shader or image + var bg = load(path) + + print(typeof(bg)) + # Load a background shader or static image + match typeof(bg): + TYPE_OBJECT: + print("setting image/texture background...") +# var mat = get_material() +# mat.albe + bg_image_path = path + var t := load(bg_image_path) + set_texture(t) + emit_signal("update_document", generate_html()) + + +func update_selected_from_data(data: Dictionary) -> void: + pass + + +func clear_widgets() -> void: + for i in layout.get_children(): + i.queue_free() + + +func add_page() -> void: + pass + +func _handle_popup_menu(id: int) -> void: + match id: + 0: app.make_file_dialog(self, "Select Background", load_background, ["*.png ; PNG Images","*.jpg; JPEG Images", "*.gdshader ; GD Shader"]) + 1: app.make_color_picker(self, "Select Background Color", set_background_color) + 2: add_page() + 3: clear_widgets() +# 3: reset_background() diff --git a/src/canvas.tscn b/src/canvas.tscn new file mode 100755 index 0000000..783838b --- /dev/null +++ b/src/canvas.tscn @@ -0,0 +1,219 @@ +[gd_scene load_steps=12 format=3 uid="uid://dg2dai5xiebkw"] + +[ext_resource type="Script" path="res://src/canvas.gd" id="1_s4wkp"] +[ext_resource type="ButtonGroup" uid="uid://b12lx5kudvat0" path="res://assets/groups/canvas_tool.tres" id="1_som1s"] +[ext_resource type="ButtonGroup" uid="uid://c71aawlem32fa" path="res://assets/groups/canvas_layout.tres" id="2_bven0"] +[ext_resource type="Texture2D" uid="uid://ua5o5an18y6y" path="res://assets/textures/pointer.png" id="2_kl574"] +[ext_resource type="Texture2D" uid="uid://c85xvc3cn6yc6" path="res://assets/textures/cross.png" id="3_e1hxl"] +[ext_resource type="Texture2D" uid="uid://b78r0uxu2q8bg" path="res://assets/textures/barsHorizontal.png" id="4_2ddyv"] +[ext_resource type="Texture2D" uid="uid://b1gxogaykwk3t" path="res://assets/textures/barsVertical.png" id="5_fu4lw"] +[ext_resource type="Texture2D" uid="uid://cdb5sd2l8f4cb" path="res://assets/textures/menuGrid.png" id="6_yohf3"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_1k5jw"] +bg_color = Color(1, 1, 1, 1) + +[sub_resource type="Shader" id="Shader_57orc"] +code = "// NOTE: Shader automatically converted from Godot Engine 4.1.1.stable.mono's CanvasItemMaterial. + +shader_type canvas_item; +render_mode blend_mix; +" + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_q3mnx"] +shader = SubResource("Shader_57orc") + +[node name="ScrollContainer" type="ScrollContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MarginContainer" type="MarginContainer" parent="."] +custom_minimum_size = Vector2(400, 200) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PanelContainer" type="PanelContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/PanelContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="Tools" type="HBoxContainer" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +layout_mode = 2 +text = "Tools" +vertical_alignment = 1 + +[node name="Select" type="TextureButton" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +unique_name_in_owner = true +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +toggle_mode = true +button_pressed = true +button_group = ExtResource("1_som1s") +texture_normal = ExtResource("2_kl574") +ignore_texture_size = true +stretch_mode = 5 + +[node name="Move" type="Button" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +unique_name_in_owner = true +layout_mode = 2 +toggle_mode = true +button_group = ExtResource("1_som1s") +text = "Move" + +[node name="VSeparator" type="VSeparator" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +layout_mode = 2 + +[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +layout_mode = 2 +text = "Main Layout" + +[node name="NoLayout" type="TextureButton" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +unique_name_in_owner = true +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +toggle_mode = true +button_group = ExtResource("2_bven0") +texture_normal = ExtResource("3_e1hxl") +ignore_texture_size = true +stretch_mode = 5 + +[node name="VerticalLayout" type="TextureButton" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +unique_name_in_owner = true +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +toggle_mode = true +button_group = ExtResource("2_bven0") +texture_normal = ExtResource("4_2ddyv") +ignore_texture_size = true +stretch_mode = 5 + +[node name="HorizontalLayout" type="TextureButton" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +unique_name_in_owner = true +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +toggle_mode = true +button_group = ExtResource("2_bven0") +texture_normal = ExtResource("5_fu4lw") +ignore_texture_size = true +stretch_mode = 5 + +[node name="GridLayout" type="TextureButton" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +unique_name_in_owner = true +custom_minimum_size = Vector2(32, 32) +layout_mode = 2 +toggle_mode = true +button_group = ExtResource("2_bven0") +texture_normal = ExtResource("6_yohf3") +ignore_texture_size = true +stretch_mode = 5 + +[node name="Spacer" type="Control" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="SetTool" type="Label" parent="MarginContainer/VBoxContainer/PanelContainer/MarginContainer/Tools"] +unique_name_in_owner = true +layout_mode = 2 +text = "Select" + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Spacer" type="Control" parent="MarginContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Selection" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Spacer2" type="Control" parent="MarginContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +scroll_horizontal = 100 +scroll_vertical = 100 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/margin_left = 200 +theme_override_constants/margin_top = 200 +theme_override_constants/margin_right = 200 +theme_override_constants/margin_bottom = 200 + +[node name="Background" type="Panel" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer"] +layout_mode = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_1k5jw") + +[node name="Canvas" type="TextureRect" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer"] +unique_name_in_owner = true +material = SubResource("ShaderMaterial_q3mnx") +custom_minimum_size = Vector2(1024, 960) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_s4wkp") + +[node name="Layout" type="Container" parent="MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/Canvas"] +unique_name_in_owner = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="Control" type="Control" parent="MarginContainer"] +layout_mode = 2 +mouse_filter = 2 + +[node name="SelectionBounds" type="ColorRect" parent="MarginContainer/Control"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +offset_right = 120.0 +offset_bottom = 123.0 +mouse_filter = 1 +color = Color(1, 0.909804, 0.615686, 1) + +[node name="PopupMenu" type="PopupMenu" parent="MarginContainer/Control"] +unique_name_in_owner = true +item_count = 5 +item_0/text = "Set Background" +item_0/id = 0 +item_1/text = "Set Background Color" +item_1/id = 1 +item_2/text = "" +item_2/id = 1000 +item_2/separator = true +item_3/text = "Add Page" +item_3/id = 2 +item_4/text = "Clear Page" +item_4/id = 3 diff --git a/src/canvas_settings.tscn b/src/canvas_settings.tscn new file mode 100755 index 0000000..803738b --- /dev/null +++ b/src/canvas_settings.tscn @@ -0,0 +1,22 @@ +[gd_scene format=3 uid="uid://b8hb0s6n4yu2t"] + +[node name="canvas_settings" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer"] +layout_mode = 2 +horizontal_scroll_mode = 0 + +[node name="Interface" type="VBoxContainer" parent="MarginContainer/ScrollContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 diff --git a/src/code.gd b/src/code.gd new file mode 100755 index 0000000..d2c2b2c --- /dev/null +++ b/src/code.gd @@ -0,0 +1,55 @@ +extends PanelContainer + +signal update_code + +@onready var save := %Save +@onready var load := %Load +@onready var reload := %Reload +@onready var editor := %Editor + + +func _ready() -> void: + save.pressed.connect(_save_file_dialog) + load.pressed.connect(_load_file_dialog) + reload.pressed.connect(emit_signal.bind("update_code")) + + +func _save_file_dialog() -> void: + var file_dialog := FileDialog.new() + file_dialog.set_file_mode(FileDialog.FILE_MODE_SAVE_FILE) + file_dialog.set_access(FileDialog.ACCESS_FILESYSTEM) + file_dialog.set_filters(PackedStringArray(["*.html ; HTML page"])) + file_dialog.set_min_size(Vector2(600, 480)) + file_dialog.set_initial_position(Window.WINDOW_INITIAL_POSITION_CENTER_MAIN_WINDOW_SCREEN) + file_dialog.file_selected.connect( + func(path: String): + var file = FileAccess.open(path, FileAccess.WRITE) + if file: + file.store_string(editor.get_text()) + remove_child(file_dialog) + file_dialog.queue_free() + ) + add_child(file_dialog) + file_dialog.popup() + + +func _load_file_dialog() -> void: + var file_dialog := FileDialog.new() + file_dialog.set_file_mode(FileDialog.FILE_MODE_OPEN_FILE) + file_dialog.set_access(FileDialog.ACCESS_FILESYSTEM) + file_dialog.set_filters(PackedStringArray(["*.html ; HTML page"])) + file_dialog.set_min_size(Vector2(600, 480)) + file_dialog.set_initial_position(Window.WINDOW_INITIAL_POSITION_CENTER_MAIN_WINDOW_SCREEN) + file_dialog.file_selected.connect( + func(path: String): + var file = FileAccess.open(path, FileAccess.READ) + editor.set_text(file.get_as_text() if file else "") + remove_child(file_dialog) + file_dialog.queue_free() + ) + add_child(file_dialog) + file_dialog.popup() + + +func set_text(text: String) -> void: + editor.set_text(text) diff --git a/src/code.tscn b/src/code.tscn new file mode 100755 index 0000000..cc108a1 --- /dev/null +++ b/src/code.tscn @@ -0,0 +1,80 @@ +[gd_scene load_steps=5 format=3 uid="uid://byt4c7isecxso"] + +[ext_resource type="Script" path="res://src/code.gd" id="1_kmlt3"] + +[sub_resource type="InputEventKey" id="InputEventKey_26e8s"] +device = -1 +ctrl_pressed = true +keycode = 83 +unicode = 115 + +[sub_resource type="Shortcut" id="Shortcut_xrwox"] +events = [SubResource("InputEventKey_26e8s")] + +[sub_resource type="CodeHighlighter" id="CodeHighlighter_tcpfj"] +number_color = Color(0.556863, 0.258824, 0.392157, 1) +symbol_color = Color(0, 0, 0.745098, 1) +function_color = Color(0.686275, 0, 0.368627, 1) +member_variable_color = Color(0.239216, 0.878431, 0.827451, 1) +keyword_colors = { +"button": Color(0, 0, 1, 1), +"height": Color(0.329284, 0.803401, 0.828125, 1), +"width": Color(0.329412, 0.803922, 0.827451, 1) +} + +[node name="Code" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_kmlt3") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="Controls" type="HBoxContainer" parent="MarginContainer/VBoxContainer/MarginContainer"] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="Save" type="Button" parent="MarginContainer/VBoxContainer/MarginContainer/Controls"] +unique_name_in_owner = true +layout_mode = 2 +shortcut = SubResource("Shortcut_xrwox") +text = "Save" + +[node name="Load" type="Button" parent="MarginContainer/VBoxContainer/MarginContainer/Controls"] +unique_name_in_owner = true +layout_mode = 2 +text = "Load" + +[node name="Spacer" type="Control" parent="MarginContainer/VBoxContainer/MarginContainer/Controls"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Reload" type="Button" parent="MarginContainer/VBoxContainer/MarginContainer/Controls"] +unique_name_in_owner = true +layout_mode = 2 +text = "Reload" + +[node name="Editor" type="CodeEdit" parent="MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 +highlight_all_occurrences = true +highlight_current_line = true +draw_tabs = true +syntax_highlighter = SubResource("CodeHighlighter_tcpfj") +gutters_draw_line_numbers = true diff --git a/src/designer.tscn b/src/designer.tscn new file mode 100755 index 0000000..93e9a82 --- /dev/null +++ b/src/designer.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=3 format=3 uid="uid://bec7c5seis81k"] + +[ext_resource type="PackedScene" uid="uid://dg2dai5xiebkw" path="res://src/canvas.tscn" id="1_jayv4"] + +[sub_resource type="GDScript" id="GDScript_x6j4p"] +script/source = "extends PanelContainer + + +" + +[node name="Designer" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +script = SubResource("GDScript_x6j4p") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="Canvas" parent="MarginContainer" instance=ExtResource("1_jayv4")] +layout_mode = 2 +size_flags_vertical = 3 diff --git a/src/doctree.gd b/src/doctree.gd new file mode 100755 index 0000000..9672ffa --- /dev/null +++ b/src/doctree.gd @@ -0,0 +1,21 @@ +extends PanelContainer + +@onready var tree := %Tree + + +func _ready() -> void: + var root = tree.create_item() + root.set_text(0, "root") + var page1 = tree.create_item(root) + page1.set_text(0, "index.html") + + +func add_page(parent: String, widget_name: String) -> void: + # tokenize parent into path array + var path := _tokenize(parent) + pass + + +func _tokenize(dots: String, delimiter: String = ",") -> Array[String]: + var path: Array[String] = [] + return path diff --git a/src/doctree.tscn b/src/doctree.tscn new file mode 100755 index 0000000..7f5f9cc --- /dev/null +++ b/src/doctree.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=2 format=3 uid="uid://cy5b2bxrwni8w"] + +[ext_resource type="Script" path="res://src/doctree.gd" id="1_ulm8l"] + +[node name="DocumentTree" type="PanelContainer"] +custom_minimum_size = Vector2(0, 150) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ulm8l") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="Controls" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Button" type="Button" parent="MarginContainer/VBoxContainer/Controls"] +layout_mode = 2 +text = "New" + +[node name="Button2" type="Button" parent="MarginContainer/VBoxContainer/Controls"] +layout_mode = 2 +text = "Delete" + +[node name="Tree" type="Tree" parent="MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 diff --git a/src/graph.tscn b/src/graph.tscn new file mode 100755 index 0000000..91a4824 --- /dev/null +++ b/src/graph.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://cjyhxon67nd1a"] + +[node name="Graph" type="GraphEdit"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +scroll_offset = Vector2(-126, 0) diff --git a/src/html.gd b/src/html.gd new file mode 100644 index 0000000..c660f82 --- /dev/null +++ b/src/html.gd @@ -0,0 +1,128 @@ +extends Node + +@onready var selection + +func doctype() -> String: + return "" + +func html(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("html", content, attrs) + +func head(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("head", content, attrs) + +func body(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("body", content, attrs) + +func link(attrs: Dictionary = {}) -> String: + return _format_attrs("link", attrs) + +func heading(level: int, content: String = "", attrs: Dictionary = {}) -> String: + level = clamp(level, 1, 6) + return _format_attrs("h" + str(level), attrs) + content + "" + +func h(level: int, content: String = "", attrs: Dictionary = {}) -> String: + return heading(level, content, attrs) + +func paragraph(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("p", content, attrs) + +func p(content: String = "", attrs: Dictionary = {}) -> String: + return paragraph(content, attrs) + +func header(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("header", content, attrs) + +func footer(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("footer", content, attrs) + +func div(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("div", content, attrs) + +func ref(url: String, content: String = "") -> String: + return _format_tag("a", content, {"href": url}) + +func image(src: String, attrs: Dictionary = {}) -> String: + return _format_attrs("img src=" + src, attrs) + +func img(src: String, attrs: Dictionary = {}) -> String: + return image(src, attrs) + +func input(content: String = "", attrs: Dictionary = {"type": "content"}) -> String: + attrs["value"] = "\"" + content + "\"" + return _format_tag("input", "", attrs) + +func italic(content: String = "") -> String: + return _format_tag("i", content, {}) + +func i(content: String = "") -> String: + return italic(content) + +func bold(content: String = "") -> String: + return _format_tag("b", content, {}) + +func b(content: String = "") -> String: + return bold(content) + +func line_break() -> String: + return "
" + +func br() -> String: + return line_break() + +func button(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("button", content, attrs) + +func label(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("label", content, attrs) + +func comment(content: String = "") -> String: + return "" + +func iframe(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("iframe", content, attrs) + +func nav(content: String = "", attrs: Dictionary = {}) -> String: + return _format_tag("nav", content, attrs) + +func style(content: Dictionary = {}, attrs: Dictionary = {}) -> String: + var ss: String + for k in content: + ss += k + ": " + str(attrs[k]) + "; " + return _format_tag("style", "", attrs) + ss + "" + +func widget(w: WidgetUI) -> String: + return w.generate_html() + +func background(url: String, color: Color) -> Dictionary: + var bg := { + "background-image": "url('" + url + "')", + "background-repeat": "no-repeat", + "background-attachment": "fixed", + "background-size": "cover", + "background-color": "#" + color.to_html() + } + return bg + +func test_document() -> String: + return doctype() + html(body(h(1, "My first heading.") + p("My first paragraph."))) + +func _format_style_attr(attrs: Dictionary = {}) -> String: + var s := "\"" + for k in attrs: + s += k + ": " + str(attrs[k]) + "; " + return "style=" + s + "\"" + +func _format_attrs(tag_name: String, attrs: Dictionary) -> String: + var tag := "<" + tag_name + for k in attrs: + if k == "style": + tag += " " + _format_style_attr(attrs[k]) + else: + var has_value = len(str(attrs[k])) + tag += " " + k + ("=" + str(attrs[k])) if has_value else "" + tag += ">" + return tag + +func _format_tag(tag_name: String, content: String, attrs: Dictionary) -> String: + return _format_attrs(tag_name, attrs) + content + "" diff --git a/src/html.tscn b/src/html.tscn new file mode 100755 index 0000000..de3d244 --- /dev/null +++ b/src/html.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://bj0g3xmjs70xa"] + +[ext_resource type="Script" path="res://src/html.gd" id="1_0s8tj"] + +[node name="html" type="Node"] +script = ExtResource("1_0s8tj") diff --git a/src/inspector.gd b/src/inspector.gd new file mode 100755 index 0000000..e558dd6 --- /dev/null +++ b/src/inspector.gd @@ -0,0 +1,18 @@ +extends PanelContainer + +@onready var interface := %Interface + +signal update_widget(data) + + +func add_interface(new_interface: WidgetInspector) -> void: + print("new interface: ", new_interface) + if !new_interface: + return + new_interface.show() + interface.add_child(new_interface) + + +func clear_interface() -> void: + for i in interface.get_children(): + i.queue_free() diff --git a/src/inspector.tscn b/src/inspector.tscn new file mode 100755 index 0000000..e29e8a9 --- /dev/null +++ b/src/inspector.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=3 uid="uid://ber4hj8igsi1a"] + +[ext_resource type="Script" path="res://src/inspector.gd" id="1_vnn04"] + +[node name="Inspector" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +mouse_filter = 1 +script = ExtResource("1_vnn04") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 + +[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer"] +layout_mode = 2 +horizontal_scroll_mode = 0 + +[node name="Interface" type="VBoxContainer" parent="MarginContainer/ScrollContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(200, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 diff --git a/src/log.tscn b/src/log.tscn new file mode 100755 index 0000000..3cad2fa --- /dev/null +++ b/src/log.tscn @@ -0,0 +1,8 @@ +[gd_scene format=3 uid="uid://cu7dssjm8pil1"] + +[node name="Log" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 diff --git a/src/main_ui.gd b/src/main_ui.gd new file mode 100755 index 0000000..a90a458 --- /dev/null +++ b/src/main_ui.gd @@ -0,0 +1,37 @@ +extends PanelContainer + +@onready var inspector := %Properties +@onready var canvas := %Canvas/%Canvas +@onready var doctree := %Doctree +@onready var code := %Code +@onready var log := %Log + + + +func _ready() -> void: + canvas.update_selected.connect(_update_selected) + canvas.update_doctree.connect(_update_doctree) + canvas.update_document.connect(func(doc): code.set_text(doc)) + code.update_code.connect(func(): code.set_text(canvas.generate_html())) + + +func _input(event: InputEvent) -> void: + if event is InputEventMouseButton: + if app.lmb_released(event): + app.reset_drag_object() + + +func _update_selected(selected: Array[WidgetModel]) -> void: + inspector.clear_interface() + for i in selected: + var inspect := i.load_inspector() as WidgetInspector + inspector.add_interface(inspect) + + +func _update_widget(data: Dictionary) -> void: + canvas.update_selection_from_data(data) + + +func _update_doctree(data: Dictionary) -> void: + pass + #doctree.add_page diff --git a/src/main_ui.tscn b/src/main_ui.tscn new file mode 100644 index 0000000..07d91ca --- /dev/null +++ b/src/main_ui.tscn @@ -0,0 +1,147 @@ +[gd_scene load_steps=11 format=3 uid="uid://boasb5n8rqfd7"] + +[ext_resource type="Theme" uid="uid://bpy5ajiru3dns" path="res://assets/themes/default.tres" id="1_dd06c"] +[ext_resource type="Script" path="res://src/main_ui.gd" id="1_myl0w"] +[ext_resource type="PackedScene" uid="uid://c1jt1x0ltj8o4" path="res://src/widgets/widget_view.tscn" id="1_pqv61"] +[ext_resource type="PackedScene" uid="uid://ber4hj8igsi1a" path="res://src/inspector.tscn" id="2_4ryji"] +[ext_resource type="PackedScene" uid="uid://cy5b2bxrwni8w" path="res://src/doctree.tscn" id="2_n2mey"] +[ext_resource type="PackedScene" uid="uid://byt4c7isecxso" path="res://src/code.tscn" id="3_7welq"] +[ext_resource type="PackedScene" uid="uid://cu7dssjm8pil1" path="res://src/log.tscn" id="3_iw1l6"] +[ext_resource type="PackedScene" uid="uid://dg2dai5xiebkw" path="res://src/canvas.tscn" id="5_36e2g"] +[ext_resource type="PackedScene" uid="uid://cjyhxon67nd1a" path="res://src/graph.tscn" id="5_mfp0n"] +[ext_resource type="PackedScene" uid="uid://b8hb0s6n4yu2t" path="res://src/canvas_settings.tscn" id="10_52e1j"] + +[node name="MainUI" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +theme = ExtResource("1_dd06c") +script = ExtResource("1_myl0w") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="File" type="MenuButton" parent="MarginContainer/VBoxContainer/HBoxContainer2"] +layout_mode = 2 +text = "File" +item_count = 4 +popup/item_0/text = "Open" +popup/item_0/id = 2 +popup/item_1/text = "Recent" +popup/item_1/id = 3 +popup/item_2/text = "Export" +popup/item_2/id = 2 +popup/item_3/text = "Close" +popup/item_3/id = 1 + +[node name="About" type="MenuButton" parent="MarginContainer/VBoxContainer/HBoxContainer2"] +layout_mode = 2 +text = "About" + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="HSplitContainer2" type="HSplitContainer" parent="MarginContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="WidgetFrame" type="PanelContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2"] +custom_minimum_size = Vector2(275, 0) +layout_mode = 2 +mouse_filter = 1 + +[node name="TabContainer" type="TabContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/WidgetFrame"] +layout_mode = 2 +current_tab = 0 + +[node name="Tools" type="VSplitContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/WidgetFrame/TabContainer"] +layout_mode = 2 +metadata/_tab_index = 0 + +[node name="Doctree" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/WidgetFrame/TabContainer/Tools" instance=ExtResource("2_n2mey")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Widgets" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/WidgetFrame/TabContainer/Tools" instance=ExtResource("1_pqv61")] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Documents" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/WidgetFrame/TabContainer"] +visible = false +layout_mode = 2 +metadata/_tab_index = 1 + +[node name="HSplitContainer" type="HSplitContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2"] +layout_mode = 2 + +[node name="DesignerFrame" type="PanelContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="VSplitContainer" type="VSplitContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/DesignerFrame"] +layout_mode = 2 + +[node name="TabContainer" type="TabContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/DesignerFrame/VSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +current_tab = 0 + +[node name="Canvas" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/DesignerFrame/VSplitContainer/TabContainer" instance=ExtResource("5_36e2g")] +unique_name_in_owner = true +layout_mode = 2 +metadata/_tab_index = 0 + +[node name="Graph" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/DesignerFrame/VSplitContainer/TabContainer" instance=ExtResource("5_mfp0n")] +visible = false +layout_mode = 2 +scroll_offset = Vector2(0, -31) +metadata/_tab_index = 1 + +[node name="TabContainer2" type="TabContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/DesignerFrame/VSplitContainer"] +custom_minimum_size = Vector2(0, 200) +layout_mode = 2 +current_tab = 0 + +[node name="Code" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/DesignerFrame/VSplitContainer/TabContainer2" instance=ExtResource("3_7welq")] +unique_name_in_owner = true +layout_mode = 2 +metadata/_tab_index = 0 + +[node name="Console" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/DesignerFrame/VSplitContainer/TabContainer2" instance=ExtResource("3_iw1l6")] +unique_name_in_owner = true +visible = false +layout_mode = 2 +metadata/_tab_index = 1 + +[node name="InspectorFrame" type="PanelContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer"] +layout_mode = 2 + +[node name="TabContainer2" type="TabContainer" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/InspectorFrame"] +custom_minimum_size = Vector2(250, 0) +layout_mode = 2 +current_tab = 0 + +[node name="Properties" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/InspectorFrame/TabContainer2" instance=ExtResource("2_4ryji")] +unique_name_in_owner = true +layout_mode = 2 +metadata/_tab_index = 0 + +[node name="Page Settings" parent="MarginContainer/VBoxContainer/HBoxContainer/HSplitContainer2/HSplitContainer/InspectorFrame/TabContainer2" instance=ExtResource("10_52e1j")] +visible = false +layout_mode = 2 +metadata/_tab_index = 1 diff --git a/src/widgets/button/button.gd b/src/widgets/button/button.gd new file mode 100755 index 0000000..e05f2c4 --- /dev/null +++ b/src/widgets/button/button.gd @@ -0,0 +1,20 @@ +extends WidgetModel + +class_name HtmlButton + +@onready var button := $Button + +func generate_html() -> String: + return html.button(button.get_text(), + { + "style": super.get_style(), + "text-align": _get_alignment(button) + } + ) + +func _get_alignment(button: Button) -> String: + match button.get_text_alignment(): + HORIZONTAL_ALIGNMENT_LEFT: return "left" + HORIZONTAL_ALIGNMENT_CENTER: return "center" + HORIZONTAL_ALIGNMENT_RIGHT: return "right" + return "left" diff --git a/src/widgets/button/button.tscn b/src/widgets/button/button.tscn new file mode 100755 index 0000000..9d4df14 --- /dev/null +++ b/src/widgets/button/button.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=2 format=3 uid="uid://boy6hls2choco"] + +[ext_resource type="Script" path="res://src/widgets/button/button.gd" id="1_t2end"] + +[node name="button" type="PanelContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +mouse_filter = 1 +script = ExtResource("1_t2end") +inspector_file = "res://src/widgets/button/button_ui.tscn" + +[node name="Button" type="Button" parent="."] +show_behind_parent = true +layout_mode = 2 +mouse_filter = 2 +text = "button" diff --git a/src/widgets/button/button_ui.gd b/src/widgets/button/button_ui.gd new file mode 100755 index 0000000..ee1f6a3 --- /dev/null +++ b/src/widgets/button/button_ui.gd @@ -0,0 +1,15 @@ +extends WidgetInspector + + +@onready var text := %text + + +func _ready() -> void: + super._ready() + widget_type.set_text("button") + text.set_text(target_widget.button.get_text()) + text.text_changed.connect( + func(t: String): + target_widget.button.set_text(t) + _update_document() + ) diff --git a/src/widgets/button/button_ui.tscn b/src/widgets/button/button_ui.tscn new file mode 100755 index 0000000..c253d9d --- /dev/null +++ b/src/widgets/button/button_ui.tscn @@ -0,0 +1,111 @@ +[gd_scene load_steps=2 format=3 uid="uid://c5snky0pypbcq"] + +[ext_resource type="Script" path="res://src/widgets/button/button_ui.gd" id="1_hjme1"] + +[node name="button_ui4" type="PanelContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_hjme1") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="type" type="Label" parent="MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "object" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 16 +theme_override_constants/v_separation = 4 +columns = 2 + +[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Name" + +[node name="name" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Text" + +[node name="text" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Alignment" + +[node name="alignment" type="OptionButton" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 3 +selected = 0 +popup/item_0/text = "Left" +popup/item_0/id = 0 +popup/item_1/text = "Center" +popup/item_1/id = 1 +popup/item_2/text = "Right" +popup/item_2/id = 2 + +[node name="LabelPosition" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Position" + +[node name="position" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 + +[node name="x" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 10000.0 +alignment = 1 + +[node name="y" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 10000.0 +alignment = 1 + +[node name="LabelSize" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Size" + +[node name="size" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="width" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 +custom_arrow_step = 1.0 + +[node name="height" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 diff --git a/src/widgets/div/div.gd b/src/widgets/div/div.gd new file mode 100755 index 0000000..7244d09 --- /dev/null +++ b/src/widgets/div/div.gd @@ -0,0 +1,73 @@ +extends WidgetModel + +class_name HtmlDiv + +signal update_document() + +@onready var layout := %layout +@onready var padding := %padding + +var mouse_position := Vector2() +var border_width := 1 +var border_color := Color() + +func generate_html() -> String: + var content := "" + var offset := 0 + for i in layout.get_children(): + if i.has_method("generate_html"): + var sep = layout.get("theme_override_constants/separation") + i.style = make_default_style(i) + i.style["position"] = "relative" + if layout.is_vertical(): + i.style["left"] = "0px" + i.style["top"] = str(offset) + "px" + else: + i.style["left"] = str(offset) + "px" + i.style["top"] = "0px" + content += i.generate_html() + "\n" + offset += sep + var style = make_default_style(self) + var p = str(padding.get("theme_override_constants/margin_top")) + "px " + p += str(padding.get("theme_override_constants/margin_right")) + "px " + p += str(padding.get("theme_override_constants/margin_bottom")) + "px " + p += str(padding.get("theme_override_constants/margin_left")) + "px" + style["border_width"] = str(border_width) + "px solid black" + style["display"] = "inline-block" + style["padding"] = p +# style["padding-top"] = str(p.get("theme_override_constants/margin_top")) + "px" +# style["padding-right"] = str(p.get("theme_override_constants/margin_right")) + "px" +# style["padding-bottom"] = str(p.get("theme_override_constants/margin_bottom")) + "px" +# style["padding-left"] = str(p.get("theme_override_constants/margin_left")) + "px" + style["background-color"] = "#" + str(get("theme_override_styles/panel/bg_color").get_bg_color().to_html(true)) + style["box-sizing"] = "border_width-box" + return html.div(content, {"style": style}) + + +func generate_tree() -> Tree: + return Tree.new() + + +func _input(event: InputEvent) -> void: + if not contains_mouse: + is_selected = false + return + + # get the dragged object + if event is InputEventMouseButton: + if app.lmb_pressed(event) and is_selected: + var parent = get_parent() + parent.remove_child(self) + app.set_drag_widget(self, false) + elif app.lmb_pressed(event) and !is_selected: + is_selected = true + emit_signal("selected") + elif app.lmb_released(event): + if app.drag_widget: + var widget = app.drag_widget + var parent = widget.get_parent() + parent.remove_child(widget) + layout.add_child(widget) + widget.set_global_position(get_global_mouse_position()) + app.drag_widget = null + emit_signal("update_document") diff --git a/src/widgets/div/div.tscn b/src/widgets/div/div.tscn new file mode 100755 index 0000000..02a0ba1 --- /dev/null +++ b/src/widgets/div/div.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=3 format=3 uid="uid://4cfrxaordmjn"] + +[ext_resource type="Script" path="res://src/widgets/div/div.gd" id="1_xlxh1"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_6x5w8"] +bg_color = Color(0.195312, 0.195312, 0.195312, 0.294118) + +[node name="div" type="PanelContainer"] +offset_right = 150.0 +offset_bottom = 150.0 +theme_override_styles/panel = SubResource("StyleBoxFlat_6x5w8") +script = ExtResource("1_xlxh1") +inspector_file = "res://src/widgets/div/div_ui.tscn" + +[node name="padding" type="MarginContainer" parent="."] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="layout" type="BoxContainer" parent="padding"] +unique_name_in_owner = true +layout_mode = 2 +mouse_filter = 2 +theme_override_constants/separation = 8 +vertical = true diff --git a/src/widgets/div/div_ui.gd b/src/widgets/div/div_ui.gd new file mode 100755 index 0000000..fbe20c5 --- /dev/null +++ b/src/widgets/div/div_ui.gd @@ -0,0 +1,65 @@ +extends WidgetInspector + + +@onready var orientation := %orientation +@onready var separation := %separation +@onready var padding := %padding +@onready var bg_color := %bgcolor + + +func _ready() -> void: + super._ready() + widget_type.set_text("div") + orientation.select(!target_widget.layout.is_vertical()) + + _init_signals() + _init_padding() + _init_bg_color() + + +func _init_bg_color() -> void: + bg_color.set_pick_color(target_widget.get("theme_override_styles/panel/bg_color").get_bg_color()) + + +func _init_padding() -> void: + var p: MarginContainer = target_widget.padding + padding.get_node("top").set_value(p.get("theme_override_constants/margin_top")) + padding.get_node("right").set_value(p.get("theme_override_constants/margin_right")) + padding.get_node("bottom").set_value(p.get("theme_override_constants/margin_bottom")) + padding.get_node("left").set_value(p.get("theme_override_constants/margin_left")) + + +func _init_signals() -> void: + padding.get_node("top").value_changed.connect( + func(value: int) -> void: + target_widget.padding.set("theme_override_constants/margin_top", value) + ) + padding.get_node("right").value_changed.connect( + func(value: int) -> void: + target_widget.padding.set("theme_override_constants/margin_right", value) + ) + padding.get_node("bottom").value_changed.connect( + func(value: int) -> void: + target_widget.padding.set("theme_override_constants/margin_bottom", value) + ) + padding.get_node("left").value_changed.connect( + func(value: int) -> void: + target_widget.padding.set("theme_override_constants/margin_left", value) + ) + orientation.item_selected.connect( + func(index: int) -> void: + target_widget.layout.set_vertical(!index) + _update_document() + ) + separation.value_changed.connect( + func(value: int) -> void: + target_widget.layout.set("theme_override_constants/separation", value) + _update_document() + ) + bg_color.color_changed.connect( + func(color: Color) -> void: + target_widget.get("theme_override_styles/panel/bg_color").set_bg_color(color) + _update_document() + ) + + diff --git a/src/widgets/div/div_ui.tscn b/src/widgets/div/div_ui.tscn new file mode 100755 index 0000000..b23c8eb --- /dev/null +++ b/src/widgets/div/div_ui.tscn @@ -0,0 +1,177 @@ +[gd_scene load_steps=3 format=3 uid="uid://cp0kw1a6vy45n"] + +[ext_resource type="Script" path="res://src/widgets/div/div_ui.gd" id="1_wtbfy"] +[ext_resource type="Texture2D" uid="uid://cdb5sd2l8f4cb" path="res://assets/textures/menuGrid.png" id="2_pf4gw"] + +[node name="div_ui" type="PanelContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_wtbfy") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="type" type="Label" parent="MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "object" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 16 +theme_override_constants/v_separation = 4 +columns = 2 + +[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Name" + +[node name="name" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label4" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Padding" + +[node name="padding" type="GridContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +columns = 2 + +[node name="top" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/padding"] +layout_mode = 2 +suffix = "px" + +[node name="right" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/padding"] +layout_mode = 2 +suffix = "px" + +[node name="bottom" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/padding"] +layout_mode = 2 +suffix = "px" + +[node name="left" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/padding"] +layout_mode = 2 +suffix = "px" + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Orientation" + +[node name="orientation" type="OptionButton" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +alignment = 1 +item_count = 2 +selected = 0 +popup/item_0/text = "Vertical" +popup/item_0/id = 0 +popup/item_1/text = "Horizontal" +popup/item_1/id = 1 + +[node name="Label6" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Alignment" + +[node name="orientation2" type="MenuButton" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +icon = ExtResource("2_pf4gw") +icon_alignment = 1 +expand_icon = true +item_count = 2 +popup/item_0/text = "" +popup/item_0/id = 0 +popup/item_1/text = "" +popup/item_1/id = 1 + +[node name="Label7" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Expand" + +[node name="expand" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="vertical" type="CheckBox" parent="MarginContainer/VBoxContainer/GridContainer/expand"] +layout_mode = 2 +text = "vertical" + +[node name="horizontal" type="CheckBox" parent="MarginContainer/VBoxContainer/GridContainer/expand"] +layout_mode = 2 +text = "horizontal" + +[node name="Label5" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Separation" + +[node name="separation" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +alignment = 1 + +[node name="LabelPosition" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Position" + +[node name="position" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 + +[node name="x" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 10000.0 +alignment = 1 + +[node name="y" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 10000.0 +alignment = 1 + +[node name="LabelSize" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Size" + +[node name="size" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="width" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 +custom_arrow_step = 1.0 + +[node name="height" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 + +[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Bg Color" + +[node name="bgcolor" type="ColorPickerButton" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 diff --git a/src/widgets/input/input.gd b/src/widgets/input/input.gd new file mode 100755 index 0000000..6f84698 --- /dev/null +++ b/src/widgets/input/input.gd @@ -0,0 +1,19 @@ +extends WidgetModel + +@onready var lineedit := $LineEdit + +func generate_html() -> String: + return html.input(lineedit.get_text(), { + "style": super.get_style(), + "type": "content", + "text-align": _get_alignment(lineedit) + } + ) + + +func _get_alignment(input: LineEdit) -> String: + match input.get_horizontal_alignment(): + HORIZONTAL_ALIGNMENT_LEFT: return "left" + HORIZONTAL_ALIGNMENT_CENTER: return "center" + HORIZONTAL_ALIGNMENT_RIGHT: return "right" + return "left" diff --git a/src/widgets/input/input.tscn b/src/widgets/input/input.tscn new file mode 100755 index 0000000..747f20f --- /dev/null +++ b/src/widgets/input/input.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=3 uid="uid://b5adgc74cmjls"] + +[ext_resource type="Script" path="res://src/widgets/input/input.gd" id="1_me8lb"] + +[node name="input" type="PanelContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_me8lb") +inspector_file = "res://src/widgets/input/input_ui.tscn" + +[node name="LineEdit" type="LineEdit" parent="."] +layout_mode = 2 +mouse_filter = 2 +placeholder_text = "input" diff --git a/src/widgets/input/input_ui.gd b/src/widgets/input/input_ui.gd new file mode 100755 index 0000000..88c7598 --- /dev/null +++ b/src/widgets/input/input_ui.gd @@ -0,0 +1,16 @@ +extends WidgetInspector + +class_name HtmlInput + +@onready var text := %text + + +func _ready() -> void: + super._ready() + widget_type.set_text("input") + text.set_text(target_widget.lineedit.get_text()) + text.text_changed.connect( + func(t: String): + target_widget.lineedit.set_text(t) + _update_document() + ) diff --git a/src/widgets/input/input_ui.tscn b/src/widgets/input/input_ui.tscn new file mode 100755 index 0000000..324b287 --- /dev/null +++ b/src/widgets/input/input_ui.tscn @@ -0,0 +1,111 @@ +[gd_scene load_steps=2 format=3 uid="uid://bjjimbyvsw64f"] + +[ext_resource type="Script" path="res://src/widgets/input/input_ui.gd" id="1_e5u0f"] + +[node name="input_ui" type="PanelContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_e5u0f") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="type" type="Label" parent="MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "object" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 16 +theme_override_constants/v_separation = 4 +columns = 2 + +[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Name" + +[node name="name" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Text" + +[node name="text" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Alignment" + +[node name="alignment" type="OptionButton" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 3 +selected = 0 +popup/item_0/text = "Left" +popup/item_0/id = 0 +popup/item_1/text = "Center" +popup/item_1/id = 1 +popup/item_2/text = "Right" +popup/item_2/id = 2 + +[node name="LabelPosition" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Position" + +[node name="position" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 + +[node name="x" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 10000.0 +alignment = 1 + +[node name="y" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 10000.0 +alignment = 1 + +[node name="LabelSize" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Size" + +[node name="size" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="width" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 +custom_arrow_step = 1.0 + +[node name="height" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 diff --git a/src/widgets/label/label.gd b/src/widgets/label/label.gd new file mode 100755 index 0000000..fc0f541 --- /dev/null +++ b/src/widgets/label/label.gd @@ -0,0 +1,26 @@ +extends WidgetModel + +@onready var label := $Label + +func generate_html() -> String: + style["vertical-align"] = _get_v_align(label) + return html.label(label.get_text(), + { + "style": self.get_style(), + "text-align": _get_h_align(label), + } + ) + +func _get_h_align(label: Label) -> String: + match label.get_horizontal_alignment(): + HORIZONTAL_ALIGNMENT_LEFT: return "left" + HORIZONTAL_ALIGNMENT_CENTER: return "center" + HORIZONTAL_ALIGNMENT_RIGHT: return "right" + return "left" + +func _get_v_align(label: Label) -> String: + match label.get_vertical_alignment(): + VERTICAL_ALIGNMENT_TOP: return "top" + VERTICAL_ALIGNMENT_CENTER: return "middle" + VERTICAL_ALIGNMENT_BOTTOM: return "bottom" + return "middle" diff --git a/src/widgets/label/label.tscn b/src/widgets/label/label.tscn new file mode 100755 index 0000000..e1ed7e9 --- /dev/null +++ b/src/widgets/label/label.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=2 format=3 uid="uid://ty203p68s81"] + +[ext_resource type="Script" path="res://src/widgets/label/label.gd" id="1_ekon1"] + +[node name="label" type="PanelContainer"] +offset_right = 40.0 +offset_bottom = 40.0 +script = ExtResource("1_ekon1") +inspector_file = "res://src/widgets/label/label_ui.tscn" + +[node name="Label" type="Label" parent="."] +layout_mode = 2 +mouse_filter = 1 +text = "label" +vertical_alignment = 1 diff --git a/src/widgets/label/label_ui.gd b/src/widgets/label/label_ui.gd new file mode 100755 index 0000000..0ed05d7 --- /dev/null +++ b/src/widgets/label/label_ui.gd @@ -0,0 +1,16 @@ +extends WidgetInspector + +class_name HtmlLabel + +@onready var text := %text + + +func _ready() -> void: + super._ready() + widget_type.set_text("label") + text.set_text(target_widget.label.get_text()) + text.text_changed.connect( + func(t: String): + target_widget.label.set_text(t) + _update_document() + ) diff --git a/src/widgets/label/label_ui.tscn b/src/widgets/label/label_ui.tscn new file mode 100755 index 0000000..7d06b49 --- /dev/null +++ b/src/widgets/label/label_ui.tscn @@ -0,0 +1,109 @@ +[gd_scene load_steps=2 format=3 uid="uid://bt78jm5l36ohg"] + +[ext_resource type="Script" path="res://src/widgets/label/label_ui.gd" id="1_4w022"] + +[node name="label_ui" type="PanelContainer"] +script = ExtResource("1_4w022") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="type" type="Label" parent="MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "object" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 16 +theme_override_constants/v_separation = 4 +columns = 2 + +[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Name" + +[node name="name" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Text" + +[node name="text" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 + +[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Alignment" + +[node name="alignment" type="OptionButton" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +item_count = 3 +selected = 0 +popup/item_0/text = "Left" +popup/item_0/id = 0 +popup/item_1/text = "Center" +popup/item_1/id = 1 +popup/item_2/text = "Right" +popup/item_2/id = 2 + +[node name="LabelPosition" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Position" + +[node name="position" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 + +[node name="x" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 10000.0 +alignment = 1 + +[node name="y" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +max_value = 10000.0 +alignment = 1 + +[node name="LabelSize" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Size" + +[node name="size" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="width" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 +custom_arrow_step = 1.0 + +[node name="height" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 diff --git a/src/widgets/widget.tscn b/src/widgets/widget.tscn new file mode 100755 index 0000000..213cb0c --- /dev/null +++ b/src/widgets/widget.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=2 format=3 uid="uid://56tj4bi3gtib"] + +[sub_resource type="GDScript" id="GDScript_e651v"] +script/source = "extends Control + +class_name Widget + +enum Type { + BASIC, + COMPONENT +} + +@export var ui: WidgetUI = preload(\"res://src/widgets/ui/widget_ui.tscn\").instantiate() +@export var model: WidgetModel = preload(\"res://src/widgets/models/widget_model.tscn\").instantiate() + + +var type := Type.BASIC +" + +[node name="widget" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = SubResource("GDScript_e651v") diff --git a/src/widgets/widget_inspector.gd b/src/widgets/widget_inspector.gd new file mode 100755 index 0000000..5bba693 --- /dev/null +++ b/src/widgets/widget_inspector.gd @@ -0,0 +1,54 @@ +extends PanelContainer + +class_name WidgetInspector + + +@onready var widget_name := %name +@onready var widget_type := %type +@onready var x := %x +@onready var y := %y +@onready var width := %width +@onready var height := %height + +var target_widget = null + + +func _ready() -> void: + set_name(target_widget.get_name()) + var _s: Vector2 = target_widget.get_size() + var _p: Vector2 = target_widget.get_position() + x.set_value(_p.x) + y.set_value(_p.y) + width.set_value(_s.x) + height.set_value(_s.y) + widget_name.set_text(target_widget.get_name()) + width.value_changed.connect( + func(w: int) -> void: + target_widget.set_size(Vector2(w, height.get_value())) + _update_document() + ) + height.value_changed.connect( + func(h: int) -> void: + target_widget.set_size(Vector2(width.get_value(), h)) + _update_document() + ) + x.value_changed.connect( + func(x: int) -> void: + target_widget.set_position(Vector2(x, y.get_value())) + _update_document() + ) + y.value_changed.connect( + func(y: int) -> void: + target_widget.set_position(Vector2(x.get_value(), y)) + _update_document() + ) + widget_name.text_changed.connect( + func(t: String) -> void: + target_widget.set_name(t) + _update_document() + ) + + +func _update_document() -> void: + var canvas = target_widget.get_parent().get_parent() + canvas.emit_signal("update_document", canvas.generate_html()) diff --git a/src/widgets/widget_inspector.tscn b/src/widgets/widget_inspector.tscn new file mode 100755 index 0000000..7babd0e --- /dev/null +++ b/src/widgets/widget_inspector.tscn @@ -0,0 +1,89 @@ +[gd_scene load_steps=2 format=3 uid="uid://plevr8r1yvw6"] + +[ext_resource type="Script" path="res://src/widgets/widget_inspector.gd" id="1_ijy7f"] + +[node name="WidgetInspector" type="PanelContainer"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_ijy7f") + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 32 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 32 +theme_override_constants/margin_bottom = 8 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="type" type="Label" parent="MarginContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "object" +horizontal_alignment = 1 + +[node name="GridContainer" type="GridContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/h_separation = 16 +theme_override_constants/v_separation = 4 +columns = 2 + +[node name="Label3" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Name" + +[node name="name" type="LineEdit" parent="MarginContainer/VBoxContainer/GridContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="LabelPosition" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Position" + +[node name="position" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 + +[node name="x" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +value = 1.0 +alignment = 1 + +[node name="y" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/position"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +alignment = 1 + +[node name="LabelSize" type="Label" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +text = "Size" + +[node name="size" type="HBoxContainer" parent="MarginContainer/VBoxContainer/GridContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="height" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 + +[node name="width" type="SpinBox" parent="MarginContainer/VBoxContainer/GridContainer/size"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +min_value = 1.0 +max_value = 10000.0 +value = 1.0 +alignment = 1 +custom_arrow_step = 1.0 diff --git a/src/widgets/widget_model.gd b/src/widgets/widget_model.gd new file mode 100755 index 0000000..a97ab6c --- /dev/null +++ b/src/widgets/widget_model.gd @@ -0,0 +1,94 @@ +extends Control + +class_name WidgetModel + +signal selected() + +@onready var popup_menu = %popup_menu +@export_file var inspector_file: String = "" + +var id := -1 +var contains_mouse := false +var is_selected := false +var inspector :WidgetInspector = null +var last_size := Vector2() +var style := {} + + +func _ready() -> void: + _init_widget() + + +func _input(event: InputEvent) -> void: + # Don't do anything if mouse not in bounds + if not contains_mouse: + is_selected = false + return + + # Start dragging the set model + if event is InputEventMouseButton: + if app.lmb_pressed(event) and is_selected: + var parent = get_parent() + parent.remove_child(self) + app.set_drag_widget(self, false) + elif app.lmb_pressed(event) and !is_selected: + is_selected = true + emit_signal("selected") + if app.rmb_pressed(event): + # open context menu + app.toggle_popup_menu(popup_menu) + pass + + if event is InputEventMouseMotion: + if is_selected: + pass + + +func generate_html() -> String: + return "" + +func make_default_style(widget: Control) -> Dictionary: + var s: Vector2 = widget.get_size() + var p: Vector2 = widget.get_position() + return { + "background": "#00000000", + "position": "absolute", + "width": str(s.x)+"px", + "height": str(s.y)+"px", + "left": str(p.x)+"px", + "top": str(p.y)+"px", + "display": "block" + } + +func get_style() -> Dictionary: + return style + +func load_inspector() -> WidgetInspector: + if inspector_file.is_empty(): + return null + inspector = load(inspector_file).instantiate() + if inspector is WidgetInspector: + inspector.target_widget = self + return inspector + return null + + +func get_inspector() -> WidgetInspector: + return inspector + + +func _init_widget() -> void: + mouse_entered.connect(func(): contains_mouse = true) + mouse_exited.connect(func(): contains_mouse = false) + size_flags_horizontal = Control.SIZE_EXPAND_FILL + size_flags_vertical = Control.SIZE_EXPAND_FILL + + +func _handle_popup_menu(id: int) -> void: + match id: + 0: pass +# 0: app.make_file_dialog(self, "Select Background", load_background, ["*.png ; PNG Images","*.jpg; JPEG Images", "*.gdshader ; GD Shader"]) +# 1: app.make_color_picker(self, "Select Background Color", set_background_color) +# 2: add_page() +# 3: clear_widgets() +# 3: reset_background() diff --git a/src/widgets/widget_model.tscn b/src/widgets/widget_model.tscn new file mode 100755 index 0000000..2adb9fd --- /dev/null +++ b/src/widgets/widget_model.tscn @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://bej7c61cavhfe"] + +[ext_resource type="Script" path="res://src/widgets/widget_model.gd" id="1_wpu75"] + +[node name="WidgetModel" type="PanelContainer"] +mouse_filter = 2 +script = ExtResource("1_wpu75") +inspector_file = null diff --git a/src/widgets/widget_ui.gd b/src/widgets/widget_ui.gd new file mode 100755 index 0000000..3c4daec --- /dev/null +++ b/src/widgets/widget_ui.gd @@ -0,0 +1,42 @@ +extends Control + +class_name WidgetUI + +@onready var label := $VBoxContainer/Label +@onready var icon := $VBoxContainer/Icon +@export_file var model_file: String = "" + +var model: WidgetModel = null +var inspector: WidgetInspector = null +var contains_mouse := false + + +func _ready() -> void: + mouse_entered.connect(func(): contains_mouse = true) + mouse_exited.connect(func(): contains_mouse = false) + if model_file: + model = load(model_file).instantiate() + if model: + label.set_text(model.get_name()) + + +func _input(event: InputEvent) -> void: + # Don't do anything if mouse not in bounds + if not contains_mouse or get_child_count() <= 0: + return + + # Get the model which should be a WidgetUI + if !model is WidgetModel: + return + + # Start dragging the set model + if event is InputEventMouseButton: + if app.lmb_pressed(event): + app.set_drag_widget(model) + + +func load_inspector() -> Control: + return load(load_model().inspector_file).instantiate() + +func load_model() -> WidgetModel: + return load(model_file).instantiate() diff --git a/src/widgets/widget_ui.tscn b/src/widgets/widget_ui.tscn new file mode 100755 index 0000000..d834e51 --- /dev/null +++ b/src/widgets/widget_ui.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=3 format=3 uid="uid://chp6edqaytoqd"] + +[ext_resource type="Script" path="res://src/widgets/widget_ui.gd" id="1_ywdh4"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_7sglw"] +bg_color = Color(0.0705882, 0.0705882, 0.0705882, 1) +border_width_left = 1 +border_width_top = 1 +border_width_right = 1 +border_width_bottom = 1 +border_blend = true + +[node name="widget" type="PanelContainer"] +custom_minimum_size = Vector2(64, 64) +offset_right = 64.0 +offset_bottom = 64.0 +mouse_filter = 1 +theme_override_styles/panel = SubResource("StyleBoxFlat_7sglw") +script = ExtResource("1_ywdh4") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 2 + +[node name="Icon" type="TextureRect" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="VBoxContainer"] +layout_mode = 2 +theme_override_font_sizes/font_size = 14 +text = "widget" +horizontal_alignment = 1 diff --git a/src/widgets/widget_view.tscn b/src/widgets/widget_view.tscn new file mode 100755 index 0000000..14ef2b2 --- /dev/null +++ b/src/widgets/widget_view.tscn @@ -0,0 +1,72 @@ +[gd_scene load_steps=2 format=3 uid="uid://c1jt1x0ltj8o4"] + +[ext_resource type="PackedScene" uid="uid://chp6edqaytoqd" path="res://src/widgets/widget_ui.tscn" id="1_te5l0"] + +[node name="Widgets" type="PanelContainer"] +custom_minimum_size = Vector2(300, 200) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 + +[node name="MarginContainer" type="MarginContainer" parent="."] +layout_mode = 2 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Label" type="Label" parent="MarginContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Basic" + +[node name="Widgets" type="HFlowContainer" parent="MarginContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="button" parent="MarginContainer/ScrollContainer/VBoxContainer/Widgets" instance=ExtResource("1_te5l0")] +layout_mode = 2 +model_file = "res://src/widgets/button/button.tscn" + +[node name="Label" parent="MarginContainer/ScrollContainer/VBoxContainer/Widgets/button/VBoxContainer" index="1"] +text = "button" + +[node name="label" parent="MarginContainer/ScrollContainer/VBoxContainer/Widgets" instance=ExtResource("1_te5l0")] +layout_mode = 2 +model_file = "res://src/widgets/label/label.tscn" + +[node name="Label" parent="MarginContainer/ScrollContainer/VBoxContainer/Widgets/label/VBoxContainer" index="1"] +text = "label" + +[node name="input" parent="MarginContainer/ScrollContainer/VBoxContainer/Widgets" instance=ExtResource("1_te5l0")] +layout_mode = 2 +model_file = "res://src/widgets/input/input.tscn" + +[node name="Label" parent="MarginContainer/ScrollContainer/VBoxContainer/Widgets/input/VBoxContainer" index="1"] +text = "input" + +[node name="div" parent="MarginContainer/ScrollContainer/VBoxContainer/Widgets" instance=ExtResource("1_te5l0")] +layout_mode = 2 +model_file = "res://src/widgets/div/div.tscn" + +[node name="Label" parent="MarginContainer/ScrollContainer/VBoxContainer/Widgets/div/VBoxContainer" index="1"] +text = "div" + +[node name="Label2" type="Label" parent="MarginContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Components" + +[editable path="MarginContainer/ScrollContainer/VBoxContainer/Widgets/button"] +[editable path="MarginContainer/ScrollContainer/VBoxContainer/Widgets/label"] +[editable path="MarginContainer/ScrollContainer/VBoxContainer/Widgets/input"] +[editable path="MarginContainer/ScrollContainer/VBoxContainer/Widgets/div"] diff --git a/test.html b/test.html new file mode 100755 index 0000000..281121f --- /dev/null +++ b/test.html @@ -0,0 +1,6 @@ + +