From 7a0b29c83a6910494a9f162cfabc06faa56d5235 Mon Sep 17 00:00:00 2001 From: oscarg Date: Sun, 1 Jun 2025 22:29:01 +1200 Subject: [PATCH] Initial Commit --- main.py | 31 ++++++++++ .../__pycache__/app_window.cpython-313.pyc | Bin 0 -> 2791 bytes .../characteristics.cpython-313.pyc | Bin 0 -> 3925 bytes util/gui/__pycache__/window.cpython-313.pyc | Bin 0 -> 2463 bytes util/gui/__pycache__/windows.cpython-313.pyc | Bin 0 -> 1192 bytes .../app_window_types.cpython-313.pyc | Bin 0 -> 2809 bytes .../characteristics.cpython-313.pyc | Bin 0 -> 3931 bytes util/gui/logic/app_window_types.py | 41 +++++++++++++ util/gui/logic/characteristics.py | 57 ++++++++++++++++++ util/gui/windows.py | 14 +++++ 10 files changed, 143 insertions(+) create mode 100644 main.py create mode 100644 util/gui/__pycache__/app_window.cpython-313.pyc create mode 100644 util/gui/__pycache__/characteristics.cpython-313.pyc create mode 100644 util/gui/__pycache__/window.cpython-313.pyc create mode 100644 util/gui/__pycache__/windows.cpython-313.pyc create mode 100644 util/gui/logic/__pycache__/app_window_types.cpython-313.pyc create mode 100644 util/gui/logic/__pycache__/characteristics.cpython-313.pyc create mode 100644 util/gui/logic/app_window_types.py create mode 100644 util/gui/logic/characteristics.py create mode 100644 util/gui/windows.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..cb6a969 --- /dev/null +++ b/main.py @@ -0,0 +1,31 @@ +# Standard Library +import sys + +# Local Library +from util.gui.logic.app_window_types import MDIApp +from util.gui.logic.characteristics import Characteristics, Window, Toolbar, ToolbarAction, SubWindow +from util.gui.windows import Windows + +# External Library +from PySide6.QtWidgets import QApplication, QTextEdit, QMdiSubWindow + +def main(): + app = QApplication(sys.argv) + + characteristics = Characteristics([ + Window("Main Window"), + Toolbar("Main Toolbar", [ + ToolbarAction("File", lambda app: print("File?")), + ToolbarAction("Connections", lambda app: print("Connections menu")), + ToolbarAction("Create Note", Windows.create_note) + ]) + ]) + + application = MDIApp(characteristics) + + application.show() + sys.exit(app.exec()) + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/util/gui/__pycache__/app_window.cpython-313.pyc b/util/gui/__pycache__/app_window.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58a737ef1c551a32b489538ec1f0636911a5a61d GIT binary patch literal 2791 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 a1U?}PdMyoDuSG!^YY`xv@jVW?D*pjZf$OyZ literal 0 HcmV?d00001 diff --git a/util/gui/__pycache__/window.cpython-313.pyc b/util/gui/__pycache__/window.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7298082a8f9584ab39c876dd002f9d5a753d762f GIT binary patch literal 2463 zcmZuyO>ERg6dv#I?5;N(0%=2jz*%U){3HTG4;7{Sq#!n7VdJEzN?ObDnq4EW9mX~x zJ)x?q5($YDQcw@%&_gTr&|{B1_qIx+jiwxsN)OynQxuMUGi$Fysb!7d%zHEM&3oVX zyq(Wy5j;N}KUM!DfzY395jPx7TM(j}ojR76UmA1TSX#MyY;2PxE2a{48k$O0`~ zu4_coJ%gC8XX>t;pjuqKl)6Ja-S_l%wCynn9c`b3`B#vjIYa~nk(eToxDuO7jKyZqn4rY_(H(pzL6Yp! zB&8%_Oe-mZXV51C$s9&#<#KSy7nh?QaBx&I^yxY)3f_{=NkL z*ii75Do1?*0JC4w7KGZ2f zxDWiM!&UIGCzPWvtae4SPzv|MZT5z1v%R6D#6msXFvt^l%7uD3^Sw}xzEgdX97WwtO}hSqK`2&L(>6U-B`l>BH>#$p zF|2mGhIiSpJ)&6w0CRQCRlW8pL}b?KU`DfAwHlz4uoMxNU%L0UZ&|KR48vC40HHJk zyfN=-o>8S~-LY*$_vjwasnsk)jqK$(O}K`2oAj`QGODUun(L~n%b+1i59ruv-Dw!3 zj;m{=Hac$HGc0GJ0r8Gj=TCZd)2@yBo@tHNd~^KfKgiLg}DLL18?;muhs+;3rc z^8h`=`IU4N_if<*7k$#&zVEx16A$xSSZv{;CLUU?K5aZ{Y~T~mbN#K{hwwfdIJ8z? zA2_o-{%~?j?0$4(<;Lpx)5#~38>0N;(21Yte*Iwm3LLGDQx2XWYI0(<;Z9*sm{nP2Pvw9hrsv6Kco8X@JkQ(|4Yn t2Nk=a%TVrFP!XyIlWpyxg<+FjlYwM6&dyrv zsi$HQ@nXSa4;~b}`Hv)8Nf|r{3euaJgI8ygY@*=BfqnBn=KX&2=DlsiViCaCIRHA)rCVTCBGRf%__H3=+}TF6?ImKYYP7w3*37EHameuDeF^qe1O+F z69d4NOC5~Opda?hZE0P~_W0iJz8Us)UGDPyi=_|D$*DGjzb64l?e!75`~P5Z43Ld> zbA2t_?`z$CUHXf8pd0ZuzuqJ$@TR6u#DyP+(hjxUq#7pT1z6PPCdxaWO)WyiQ?amX z(G6@CEJ{R6SYOi?{a(YgWHDGaF*1l{u&800onc@Bx9DuEGWS+02-_|-?7YPk*UP!0 zQOP7rX+@`OX^xvWNI_e%9$F=*QnqZWnYkHS#CAdRC@yIQ4{O`a33F#FJFGX)$@neB zRav|}F0+3)MI|obVi$ac{dG9@9*!MKHF)kL9Q)Ka`qX)%9K+t{vHjQ!d^q`bq^>U3 z)Wz!5QZ;$)!|?SZxXi`6K`U literal 0 HcmV?d00001 diff --git a/util/gui/logic/__pycache__/app_window_types.cpython-313.pyc b/util/gui/logic/__pycache__/app_window_types.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1bc6dc32ccf9fb51553e476575be5c6279727778 GIT binary patch literal 2809 zcmd5;&2Jk;6rWvxt?hN3v<;-8Nw;lU>Ox}LBt;;o`Vm@UleG3W^pL=^S#O=K)?RmZ zw`~qc6$g|`NSum_IKUB095{01U$C0uXoN&1;Lux9Ql$qDytnJMoe#tT4$R@r%zJNk z-n{v}-|TuSl_1c*_+)bFQiPCSaS}9`du{y=boYr&WG+u~9OWb&^LaiOqM=-vhI0`b z$wg^27o)M9K!seK#&Zdp$R%mg^9|+2T#BZ0J+wz61LQD~!-GVQEQBXR{uVUtX``Tx zb!mIcLMHwMT{0X?UszJ9syR9}Y{$^-Oq_{@bG4djXsTmaRhBHws7CdgQ7u`wnNXN1 z8Rw|3vJ{SFcd=!N7q04eoOeow0}HOW_R@LRalF;}im#qVl_0ur_5Yo0lC?^xj%Nz~K{6ctw zpCc2T92z7ygd1TR!Bo(w9HFr}@-|0>5t50r=*-kK9PNn!A7N>2>%ld?YeT#w+;hFi z5pssRPv+aktD!ma0oW&78i~vYS4!r{B=}>SBW4gYjEiw!+buyG?VkJNV7)}K@^gGKwbg>N&i)dad4Z55f#}kK-+W&%lDS|XSkXE+MBI)NV%rn=cKRah zyuB4)+^)eWiUT{f!HyCslR7`kLKjb-%%oVvc56Cif}$8z!%-B9Nnt{zWGE`)tk>3^ z3wqU|s@VchLbED0s|q@sMHXGdEYTiVLopw0?{(KSZH?-BRk2%0VsXH?aZ7dd5{qe8 zwW@0l>vODf+0>Pee?82?wr*ahcytzT@517WqM52~D~cTklO#!Z*;IDPs_0qE)>K-~ zPU*LF)2dYz>Kr`;AF?q* ziH?Az2SKobR<3tkem_{(Uj}iPtR>UU5jlM?{sJV)AizKP$0M2FM)XeDS65# zB6;rH^d`Z6b08c!{FH$3g7>^NaBR2WlKvgZhLB+~0I!aAXVpK!{7+%P2 zq(l6I8-QS{HE@M@a#^ZpttUJt&~sCfc0HjmW`5rdaU61kDX1i1}KuF_b^ffJ;fTQ2y2Re2ozyW5w9%O zS%1kjycf}b8$Ei!Q0o3EJ>)RqEuW>%&6(PCsu3eKRZqQK`B zm{+I7V0J3_5Sk9TG2q6Fsm`h{zc1t`fUou7_lNu>@KZhb10g>R{Juk{AF1|d2X^o- zS%JkWmT#47mgi+9CV%XBK2vX4wVG9`*-ZU}y1rX>YuN}>XXjnF_P#|~V)nM>)bBX; ziu;f$vv-_I)rM8Gw=2$dYFjLcJ)= z+`zPapE{+6Z+jqsyVDa$hLEH>1Ru)7(Qimg6e7vBw_X$Y1fn><&nlt+lJ9Dz zq$n37hBywKVzj8_1Vfq>QAe1San^`XwJL$7lISWWiw0)jNdk|_sM!ot%ivrktNegp zI2)tGz@%>>If*2LvXbXh22Wts>n^J5)=@(|DtL!e*gK%Gj&n%xG!Gx*x8(2f(UkG$Z+1|QO1Lw`UhgwTqYq_X`w?YH}Z;csI8m}r@l_}vH z>)i$n)z_w>*33xH?)renTFRZ2xDZvyXFj`+y*ED zK~5_u0Q6$Vd~YIwN$ED(`+QPV1Vd}t2GyV*PDh;Ab?Km;Vb<6 zF=@`tKP!B?Id_-)7PvLOJGVN`Vh_bw4B%R=+7!-K%5J@GmwkGgGptG_zzT~)Hw?7d z2pz<=7`2$<2asaXz=>GwGv5sT3B6JOxvuL0^m&x%KrpyGPI-$!;HobNhSw(lc=@Z# z8v|!olySu6VbXz;JrDd90X3cq_o%>!P$4<9Y64Sm+eUVyy_*@+cAcikKlTGx(I6VVA zdKL+~FGucfkfXg2j$orm(3&1fbP%5GUwx;U)Hh_kB}XGVhB){HcfbW@_;njv8(aH* zAa8W!Cap8_!NgS=pLVR;S& zuvGwt3!SS&wbB8EEi9nEC=62KPo!GQ)LqzA}5t2!qEjHNjYt_K>d z#x!!E?O7%EgtW9rLYhNQInX-i>yX9)@=RT-IHm;!#xGCY{@|vLJsr}6e$Q>xE4owH zp%}=5~=dM7>pm{ONA1*#NeP}G&hJlhW{7y2U{r}!94nt8{s*?|o;0Ats- zP(v)b53}+vDCsp^8TT3`^C7Q>JTxiba4!(k-37hZ>G78X z`m@oi8w1y#Y1jUlIkRqjdwwG`wW7Wp9Q&QQ65mz_w$zhN_2k<8R_0POb7>>n`##LU#7oEKUYuuKZrz+qUb391Cf_e1PQvm zhdHi;$id87X?=X{L38l@hJ3yy$0EasO85l#z(u`LIRTvij!Hu+Mj_eCJlQI|;D|y= z6%A_5og6G?5uaNS!{(th!SQy5A5jqIx=9u$!uIBLi@wN{Nmis7K4=~ZrX3HH^ghFD z!JPuDzl$O$hxK4$OC4^i7=^EVb>+GG_FmKUEQt05%WfUmGemv_Cr~8#5FUaG43bEF zo^Q!QWIQPS#)IQfs<#E+22L*vpjQ;5K>=t;RH@4Fw;+9Ee^tDLg(HiXJB7N(>$I7y z+A|3tUV>7UXM$c)e+EU6;Km-tA5f|9=;}hVZ}f#c8YqMOne0)P=>D6rJ&LwwQUB30 z)bc@+;eL&^7VH1yk>OPA_a