From 523465d84071dc6e95afd1beaa934dc68e5d7fb5 Mon Sep 17 00:00:00 2001 From: mufasa159 Date: Sat, 24 Aug 2024 18:24:24 -0400 Subject: [PATCH] add: create executables using pyinstaller --- .gitignore | 4 ++- Timer.spec | 63 +++++++++++++++++++++++++++++++++++++++++ readme.txt | 27 ++++++++++++++---- resources/icon.icns | Bin 0 -> 82220 bytes src/interface.py | 10 ++++--- src/project_manager.py | 18 ++++++++++-- src/style.py | 34 +++++++++++++--------- src/title_bar.py | 19 +++++++++++-- 8 files changed, 145 insertions(+), 30 deletions(-) create mode 100644 Timer.spec create mode 100644 resources/icon.icns diff --git a/.gitignore b/.gitignore index 3d9fc1c..c63b1ef 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ __pycache__ *.pyc src/default/ *.json -*.csv \ No newline at end of file +*.csv +dist/ +build/ \ No newline at end of file diff --git a/Timer.spec b/Timer.spec new file mode 100644 index 0000000..6fd0ef9 --- /dev/null +++ b/Timer.spec @@ -0,0 +1,63 @@ +# -*- mode: python ; coding: utf-8 -*- + + +a = Analysis( + ['src/main.py'], + pathex=[], + binaries=[], + datas=[ + ('resources/close.svg', 'resources'), + ('resources/dropdown.svg', 'resources'), + ('resources/fullscreen.svg', 'resources'), + ('resources/icon.icns', 'resources'), + ('resources/minimize.svg', 'resources'), + ('resources/fonts/satoshi_bold.otf', 'resources/fonts'), + ('resources/fonts/satoshi_medium.otf', 'resources/fonts'), + ('resources/fonts/satoshi_regular.otf', 'resources/fonts'), + ('resources/fonts/license.txt', 'resources/fonts'), + ('src/default/settings.json', 'src/default'), + ('src/default/timesheet.csv', 'src/default'), + ], + hiddenimports=[], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=[], + noarchive=False, + optimize=0, +) +pyz = PYZ(a.pure) + +exe = EXE( + pyz, + a.scripts, + [], + exclude_binaries=True, + name='Timer', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + console=False, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + icon=['resources/icon.icns'], +) +coll = COLLECT( + exe, + a.binaries, + a.datas, + strip=False, + upx=True, + upx_exclude=[], + name='Timer', +) +app = BUNDLE( + coll, + name='Timer.app', + icon='resources/icon.icns', + bundle_identifier=None, +) diff --git a/readme.txt b/readme.txt index 11cd558..323a3fd 100644 --- a/readme.txt +++ b/readme.txt @@ -1,8 +1,8 @@ -Time Tracker +Timer -The application allows you to track time for different projects. -The data is stored locally in a csv file. The location of the -csv file can be changed from the settings. +A desktop application that allows you to track time for multiple different +projects. The data is stored locally in a csv file. The location of the csv file +can be changed from the settings menu. --- @@ -16,7 +16,8 @@ Project Setup 2. Create a virtual environment and activate it python3 venv .venv - source .venv/bin/activate + source .venv/bin/activate # For Linux and MacOS + .venv\Scripts\activate # For Windows 3. Install the required packages @@ -30,3 +31,19 @@ Project Setup cd src python3 main.py + + +--- + +Creating Executables + +1. Install PyInstaller + + pip3 install pyinstaller + +2. Bundle the application + + pyinstaller Timer.spec + + +It will create a `dist` directory with the executable files. \ No newline at end of file diff --git a/resources/icon.icns b/resources/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..9a202c6a822a4181f4d0f4c9e43ed157664fac1d GIT binary patch literal 82220 zcmZs>1F$GC4=#9Y+qP}nwr$(CZQHhWk8SH7+s3>9zi)T;q0=^B(l(vxWYSCgZB$p5J`{+0h# z1Yr6P_dnJB2mZJGZ#)P%AmIO3e@y_00RV-aObuP^owx|344oBBoe0!Sot!Q0?Fbm@ zI2jn|7=M)jVE$x z=KTdUM)Hphh4Dm20Ni9Yppcpv5=4ZkW&~-F-_>|{hi4?td$FZT?ANm%h?f*^KtGfTDm!r>kv^VEW6 z^ch3v%;Lu~jQI`P!^Gbl&7q~M_UBO_S95I(m0$6~Dwk(K5`H7tT`l>OiRy`0+hn2X zF@Jk`MD&B&FgWmhJ@VQZI8&1nPL&nnH{yG{@{65SIG#E?ow|31KRZWp*E%7D=u~hQ zv3S~YW91w4zaB#`sC>1Xt_29uhzkW^TmotjCvt)@PNO^uxH;8f1P2a96}M&W%*Zb_ z>=7J9`d0P80-Mt7DSCG|6EL{XctK`t+7*P|MZvym3ZW9Jys&nymB2SxPaH|od+;g^aK63o5vbPdM#mSt((shaabm(=J`n;G67^Hb1f%h5^A zkPl4H0NiHW=hBHl7?e8{=3((O&Mi)7)#Jo|FvO!^-MO(-f@Zi5muoDz`vV5bE&<{` zR?Qg!siskd_QXa0-^{LdQUWkWFD4wp&AS<5b!BkTZx;3gBO?1C*`a0zMcft>K)?b2 zy|94)#TrETK9O6La496U{bI&SEfw+3CU2+tRLo+Um!Mbn=h$#%_D=1XNARn<9P{1MryB+hq!gUn?_NC+iaI zzPWNuz|asl+up7TP6$BT4B?-=-x1I(CG~n<=)q*j`f`$4yWrg`S3~#jg}NZhnf{>O z>eI-)q7zy9og*eoKnlz%FXh3JgM!vxX37EW2TFTA0mFt9nA!k;T}J-Y)3vxd5V_KD zYKJ3cODgzWY}jY08o!1h$@e3*+f^&R(stl>WB!&k-Ah{Kat+^)_E+pwT(qljH`7sknQ_fZ&1#=i`xvJ9K zq<=2TcU4wO4{Q!lOoj_cAGEb3(BNX{k8SD65B0?lHDM(ry?HNit10t>I**2Ct#BJ? z@5EdXDu^Ip<)d~DihM-_wZ=vFuYNp7`~XndL0A?4HA4drfjmCJhn+4cDKp2mFaC5V zecI405V=`%0}~O=+TQYvzKZMCAYS7mF_0;9>qin|Clj;YZe#vO8(@)n$05sh9WL#u4^L zepT|W0Ej4&ycO{s8hlASW0CmlIZ!1BU4h~B#S=B!_MwTSt#;I>$u}n_tC!6f|Ggo} ze=IBGkq@E(Z`naQuJ@N_2+X+Hey=yXLziX+@4yv8<1NmkP?7t3}Z+p1Z`; zJIaQwk!yxP2@ri_XZbS(b@d7ozYFbyg4EyBF`6heWnY|I6dRI=s_L>9l=)6V#iQUf z_P|>63f~h@>NmLn&fC5Sj1O&Afbb6szq)FW(1_=E4KR9|fenn{a}Riw)nnb*Jkm!v zlu`qL0e6l(lp*G{=|p??#9*WGZo^8Z54E=r7WgxN@)w83vkPzvX#2s}6m-AexK5@J)l?9p#bz&NkXian*|#Vy0*c_w@ioUPei7ftE`14D_@C1e}0nJ z-L{;M!y)wRmY~JVz=pRwMyNPa4Enw=g75*wRvrOI2Q-HKwNI$2P-*WA{T}ZR zW$WdBkZ+!=6{K*OKZWIB^#%LPW4z=aN8mCYrTBt$4iODyI9-+_&{*ERdIte|xoX3c zi>kriS`@2^7rr7Ah91yO6z-VU{VDP&Op}4Dn51?xAJA`mfK$}%LvMGq8r!?ZTS*=pto0V7iGyiicd`-!4jNiINpF5WaqqE6Kw0a6aEf_vaO{8TW=NCKKxpYPLw@44Y762V zGR;3ULPZ`CpHkyuvC93wWeCT`D+cn1YwW)6I-pQRMDF>20>h7v^-=E|Im#)oKv)j? z4_)8=lCERT`_@+J!A0>&D-yRhGrr>V_mIP9#E&B|mwMC9cqvkjO3^MLH$SF$Q?1o> zRlG#4jtma#b!d6EeNu#V`0d3~ahap~$F?-bwzS0$)B>;)GLZ{8dg-qfG3*M>)3P8> zokBI`&nAXOhk!4t!}z*8?j*48mQ~ZQ?SO=gz#fDb)7NWK;4>}e=MXPy81W^dD>&Kw z>ud?QxM4zcRh{iVak~A3C|~fpgGlA=YKR7Ho&=M+5UR3mu|pmT;efY5dzxLDj<%%4 z5zkiOfw86B`4Su$jHBDj?h8D$q4wjje)({6*H5=fYb#S!EFJh!d9RjWZ?4BH*An0s z0o<95ZwWY)%!Ovw6r|!~wpvtYWyTO7;S>pNg*E)NZXVku9r{i{lT|#%BU8ObAkR-{1a{1d5-iSWzCFld;!VWHgsJG#4R%_I6Pz&Ih0iakk#-*O$r&_{bQ&90)E zF|Gn(9{kEBJ~$}ba(xJqVaE(EbasLqsv%VVuHgiW=WS^{->FDXDh>3gQ7>#(OxvBg zq&Pzt<7)&FBsOi1=1_xsf6YGayK(KZTk5C=p6D@msL7CK1A`4Y1NZh(WBU=; zqC@_ZM?S$vOhhwZa1Ak>{X&{%cK{wGRUudBF`8y|-el^Ap_QIbmICJ$CyYO-SK5!~ zE<0C-JCF~O#rbp#fW2f;i67CC#CG1b|7(^UV6YM_`Ayj$iKz^{FMT%~!b_$xvfMUq zWIP1fDk`m7%m7BlM0j3hnO;_eT|c(f{&=^|@x?Y0|M*j9ujcyHV$%ZedG!!K)U0%R zs71?7_VcRxC!fb2oM-EvnC)1r%TOl)`DHVjktLIz(*TwVeW;DX0|SZR@=va2Gv$&! z^@P1C5kY-SUCcOPlrgUn@6LKfX|Mi=@)?vD7`@P2Q<$9vRF&tVnS=DJ1n3F%q&egq z9m#CWgU6kiCw689PzmF3?3VJhV37V$t6oE@WlB_$9)}r#Ry@&1ejlwMsto4jD(^&lmyNjK-KUlq*$l0>8AjKQ1v1% zaCOavS2(vW!!?cOoyl5e`2`Q($OT_SKl`#!oK9Hd zxcSeMj+(tXu?Y`nmO^ockKETr@}6#wz9jL(GzO7qRAJR#srH}^{u`Er+61~0<4Rl6N$<;e1p{;4%G1jmCR^Rk^fLH))YG7K z#fVb_m;=`!$|czSHz^)9(gPuyB!s}$HPh!`&^KYSaA{0yc*eB+qS!sSwppUiANew zN#iJWpb0!^-Q}la0t8vgJN}sWp#hoTl63o46W3)?VVOmko;F=L@a)y#9}(5$F+P6P z7}O)zJYx%n1eJU(Rc5^jwLSC&C}Pyn>h zwq&#J?x1wn+3!NbKtC$E7Exnf{;DIEQLj& zwHLJ8yUlhJKH7<9Bop9+e-|xWE%mS5m=mV)BKD0hbq<7=S>4vh(L@!t6dkNMiC{xA z#>?VRa@ta)Cz@b}PLA0LQjNxJr;6EKbRGy4_9+{`a+Q6PSfN59`Y)&&I8fK9NFOA% z^MWnk`eZ3EIFQlzfUvn4U}t6e--a{N&G~r4JUI2xBs##_bG2E&b4W&;?|>Re+&ggB zRO2UnE?m!_M@Mnl?Sx|rE^L8Lag6w?B~9EMLpKi&3)v zyWUi^sosZ)7Sp-ZkUewHS6Ic-hC6g?rv$7oEdZNl09o?S4nK4OSd!_%CQja`nE@GC zke|m$qnkmd`Y=J4Jf6Ckz;U}V&uyDI1w5QzrKz3TbsR+k+*~)}KDltFmfl6ejzWBG zSZWyp_v5-NA>y>QS~249+8XECI; zf6O>wGAwc3Ip$0;Iet{JEO*e?z3<_*XZxF)c9k#mwy@I_8Tw(KXtsP_D$?O`@&Fig zJ-y058vLp$@!d(|=Z2lk4>}XyY{&nUGJR-RrIfPnIkF&O%FL9M4Q(P(iZH5R-mbr` zCSdL3A-Z>!6rq1b1xoQ^;wT3Sy@lgZtZI^r;};U6NkppcyBwc4i2~c(xAt1+57fG# zr@6!=eVkt>cy9v_AB1-SRIyz<_U!PrKf7%5XZ-P`l%_@{#OftZ#Bf_d_rn`5_bh)= z4#X4`w(AO5{~|La+8*f~hye4=(QnLvI0cB_;+s5>gF@YkB}d|&?HAk`q&DPd-rdM7 zq7vu7S-HU4-QEzmTc19z1b+q34^s4Re_4&^IC1o8Tn}Wb%tyX`va5UI<6le3cXAxS z9xN_y&Sp9*Mkq5GwX}2YkWLfg){DJCT=^b9p3k%>01DQtapq1P@;jW?uDl=dhcwO5 zg9dcAKc}uxhGzTnEBTI5^_(WwjbGjHCXO4iqt|V*wh6JqNI!LARjBB}vTj5N^>}Xk z9AT{|zk>#h)*=}dDxNYTqh6FOJN)6osS{8$umPbf%IXk$*>&{DN~jHk#>#?UbGcx_ z0!QCJH~ZOe^fEi4V#hY2(frj1h1Jn_RN)T?*adn_!A1!<6j7k2?nBWs6E`D$iTB4+Hw`H z#=|`sfR%o%T+;$){hAe8q`O-u1etOV=BKk4its3OS0Jq^5j;mOg-*;!WP{1bi+LU* zIj7r;gQHuT#V_tzzD6LSEO)n)Zk z(~cI({o31c10>HGud0%XPML@uiW&;#>(9DgPLZLPB{$08RplS14+YO84gx=bvnIw{)lsb#$SH49O<*P>2IC&1y+E_?l{25Z!B74L`KjPJ>EGbg?3e ze9Awv1Q$$pp?eAKLi@;oVayw<3yZJz(;v;M6-H)E#&&hes6v~YM`86*-7x*~D(CfU zOV-6jYehzc6|^^9Yh?Az!11@N+ao)}uauv8hGX(rzeqVx=50h|wS=UFe=VZzCcA5% z;-^OR^1Y7}XMV`-(?{MTq$y0Mx8{$&<-*q??Y#(<{TV_7WBQ>sb3xa4NDSZm$LU;Z zjCp+A2h}Ur;JMc8!aRot& z?9nS?DHBcjOJ*|s9A4peh=CO+D(fR|7Y1I9=DSC-seyicPmOK0Cca#U_+d-@KS8NuE^C|ujyuvV z&`5_Uz4)Ikrq4qoG6J=ZwaiEwB;JrV$%9q}Afh;T+>hb=micrMmk6AJYSm{8vy{)5 z29y{TLY6lirsEL5Kn3P)A*9D6g1_;0x`-r;K^I;-LxvHAFYQ<)V( zxDfP+V8DsL1U|toAMbZ5sL8m4YdvDU^Gjbdx!%hf{E<^f>;XLVUoj$b4U+)JChWK= zkXBm`R^X~jy*^9`j3vl+1HYO^-z|!r%5Wgpl4!vt#W#|;Nfxip#U_{mEwefCcrCIv zLK#b;o1%e%)nbwg2|48fyzZNbc%2Cr{-zQz<7jiLT1-!lp;#m1ruaGV9UPU<5gtxfaV0Q#@=G3{;D2iDw~B zvLH-XiHwBA1DXIPv`(M5ydLSy9~1Rt&b}W&mfw!{aRD2BX#IhS^7F{l_g0k&eO1g? z_mxIAZmHd`RQAbTTBRh>Kyq3TKN@ zfzj*)b{Tz#JlDQjOcn`wag}h=#exu-KlcLUgMb5t8_1E3Feq{Ti9Vz!16z@W+rH*p zSU0kRf%`%zu_d9!A0pGDdwV1XK3 zdKtPsC%Mx+hJnZBr;_@=cH>Z`UuS0YdEGUhCs1>2VLQSSY{moNMjPLU<&nZ|P!`e8JIEFD^o zXxpXOV@;bI64v3y3ygcAJW=6w1BaXRX3GU-(5qu{x*6-I=X04Vj_C@ zY3>2VCaEsY?yGSkXx>u|>x^_{WNwB=V$8j7>=|MyW9@t1Kgv#3vVplLfm8l_er1dBPhLTZgb&!cyp|nmsSbLD{7t5Tf*zokdTVO0HM3>BnG3> z%>^af2L1u#nj-rcMD+LvW$8VR&Vem{20O6R&v<7we^ML(PI&lHEuII7D3bLw*lo z%)CLLm{uv)rXB;W3YX$xo=7PB(Y8M^ttE$zBO#aGdCZnN647NU?-gH+F5&46QIU<0 z@2AaJ?we%`B7RWt+c$0ibN?cS7y(}@TwhfYbkp=XqSWF_uE=FCT~8Y(OaqlhBVW(J zlYpWHJ9sut;|vS830CDee5EpL=iS2vO)56rVu2R5>ro2+nojp-`y1tM*<}{$%Rj9x zRZ8-3N@$h>Jfj>dq@EfRf{=*iW0-Xg$~heif{gVLhWc~E{gQ9)m-ykH z26tQ9DNnj!5ZptC1C@hs1D?{2E2y+Y6An2CHw#uGz9B*F#XCiyc&8yRGImsk!6J2t zx@STGz$5xL3^a`Hi(Eito^zO<=1!lM~GOYUG?HIXh+OxIY=!G5so4+^5v(a7X2 z63c=Z5m%gO?d1@uKw+bUOITbG47gf;Y&199HgsLGgFHqt} zjRK*Ik=En|I^qy4=pr&*^oYcnR8OxVa-13sT1wYSrVYbzZN3Lz(L_8niR4}fCb{BQ z_NyxqJr*d>YiSW70O|TZFT_6+wh8s*$`&}8!J@fqw|hi-Qn;jC^kLrCF|CoO<9Ai3 z!KFF$l$ypHUZwfXY`@elK}m&H+*2LkJk_LkAn?tC4Q-Q)@cP#+hpSM>-yWUi_VpjJ z@i%Tcq4Qe~#h0OOJ11zo_hJchLyWccwCK|7qw877T!E^=vi&Y8R-<>zM3-db7O-Ei z;VJa9up@~UCjB8|xZ=sr=Mv1L8_;~GOhwwpM&pt92QP~Osla(q0KVV8G-fm_2LQfa zAcNGjxjo?8lh_VhmYt%xBGCYC>yuDy6xaHn8%DnlKsW?z#c+o0#DUK+xX2#v36sz0 zfUgA7jBK-B5EW224>KiSv#Os(`mHy6>RP@&6f&r%`|R=j?qH7S;Q9!Yi<1-^DRhI& z(cv7(PfHE;$zX4^=0%swpAq7dsQW$-H)U!GI()ACEmMhJ`!W<0RZpSfO-0K-*&M`E zG3MT!EKCOzOSZvR#T_apkVr`s%EhoGLt{`z*)KMvIKvjtInL`MsEJ#WwHKx5lcd$$ z76x|8swdxYgAPvofCMyp(luIto%eU~79kqDf%5wdw+QF7qn|t>WxpaCqhi?%dVJzJ zQO^^1xSG|xAy%f4^p9?U8)ZdBP89#;O8P%7l@yd(onU?)O@L;L6=e?XY7KwvT zFUsH!A7^*o`}LGYlJ(j)0tPR0)4d0Lb!Aa?_Msauw`i&K4lbU>H=_7#eP&Qt6ul6_`KKSo zW9d7@nY~hEGpvsbFAbW%NU<2874gJo{D5B#97DSXa^sff$nI-0FOAvmxI=to5lR6R zFQj$ETluYf>rbB-bL_QLpgUj$G^-P`z{Em~74eipXK~ykE^AJ;O?X%tB{PTA*Nqy> z&_#IE>5KdO%+(kS!&*x|i&Go#mpHKy>+d=P8jg`Ig?66vN}zVYe8zrO2!Bo%>PS-s z(Ngz+qN)p5TXT}W8Z770P+8KA7 zC`6O>?rJr3z7Snmhf$Rpk-yXH`CZWjj48wl6pgPV>I1Q-&n@HQQgv#Kt_PE8$?ApB zed=eqx>n*=HdPN5!7w7GBMiVJ6#uBLqx;VIp=LIVqm&LS^otbJF&D`2B_sgEoBdfU zGxjne3_3vAIu8lvz;+i7{IijY=vR9eOY>zWn>03aOJdUSSD&g}{}(z#`-i6t5=GdI zQ>v6uG1{@z=XBy$N2h;_w{_Wi*Xkh`P1`#QQHkQDX114#ByI#OvbSi_b*L96;U+!- z=*z6_J`(D5nHZx62w^KqmdFAu|9CEFscmDl>p|7TIiOuET|pDuU`(}?#ifu_#icmx z0kPQtYzQ4kB3Yc^abeK&*NIr3-A413Wt9`(Xsp?lj2|`XGXZstOK5JtcHZVNKKomr z@ftnVq>I{-x43yKi$)^Ta{$edh6MniZW8{s^$zp?K4IhhUk;AS;j;lQ%Hgdj`MO3u ztAh7}of^19e4(XtL7PduJM9^uQdI!RO)*hD_QN#%$9>h!A!#_+=KS}-fyP~Y{!$

h~+QpSS)LfEUZzamkA8(`_hNd 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 #O?5PR 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 literal 0 HcmV?d00001 diff --git a/src/interface.py b/src/interface.py index 53621a0..dbf00ae 100644 --- a/src/interface.py +++ b/src/interface.py @@ -27,7 +27,7 @@ class MainWindow(QMainWindow): """ - Main application window for the Time Tracker. + Main application window for the Timer. """ def __init__(self): @@ -46,7 +46,7 @@ def __init__(self): self.setMaximumHeight(210) self.setMinimumHeight(210) - self.setWindowTitle("Time Tracker") + self.setWindowTitle("Timer") # Remove the default title bar self.setWindowFlags(Qt.WindowType.FramelessWindowHint) @@ -70,6 +70,10 @@ def __init__(self): self.project_combo.currentTextChanged.connect(self.project_changed) self.project_combo.setFont(self.custom_style.regular_font) + initial_project = self.project_combo.currentText() + if initial_project: + self.project_changed(initial_project) + self.settings_button = QPushButton("Settings") self.view_log_button = QPushButton("Timesheet") @@ -110,8 +114,6 @@ def __init__(self): self.settings_button.clicked.connect(self.open_settings) self.view_log_button.clicked.connect(self.view_log) - self.refresh_ui() - def toggle_timer(self): if self.timer.start_time is None: diff --git a/src/project_manager.py b/src/project_manager.py index 7b369d0..ba3fa31 100644 --- a/src/project_manager.py +++ b/src/project_manager.py @@ -1,17 +1,29 @@ import json import os +import sys + + +if getattr(sys, 'frozen', False): + script_dir = sys._MEIPASS + settings_dir = os.path.join(script_dir, 'src/default/settings.json') + timesheet_dir = os.path.join(script_dir, 'src/default/timesheet.csv') +else: + script_dir = os.path.dirname(os.path.abspath(__file__)) + settings_dir = os.path.join(script_dir, 'default/settings.json') + timesheet_dir = os.path.join(script_dir, 'default/timesheet.csv') + class ProjectManager: """ Class to manage projects and settings """ - def __init__(self, settings_file='default/settings.json'): + def __init__(self, settings_file=settings_dir): self.settings_file = settings_file self.settings = self.load_settings() self.version = self.settings.get('version', '1.0.0') self.projects = self.settings.get('projects', []) - self.csv_file_path = self.settings.get('csv_file_path', 'default/timesheet.csv') + self.csv_file_path = self.settings.get('csv_file_path', timesheet_dir) def load_settings(self): @@ -21,7 +33,7 @@ def load_settings(self): return { "version": "1.0.0", "projects": [], - "csv_file_path": "default/timesheet.csv" + "csv_file_path": timesheet_dir } diff --git a/src/style.py b/src/style.py index 58ea603..b1243f3 100644 --- a/src/style.py +++ b/src/style.py @@ -1,6 +1,6 @@ from PyQt6.QtGui import QFont, QFontDatabase import os - +import sys class Style: """ @@ -14,8 +14,15 @@ class Style: def __init__(self): super().__init__() - script_dir = os.path.dirname(os.path.abspath(__file__)) - font_dir = os.path.join(script_dir, '../resources/fonts') + # Determine if the application is running as a bundled executable + if getattr(sys, 'frozen', False): + script_dir = sys._MEIPASS + font_dir = os.path.join(script_dir, 'resources/fonts') + dropdown_icon = os.path.join(script_dir, 'resources/dropdown.svg') + else: + script_dir = os.path.dirname(os.path.abspath(__file__)) + font_dir = os.path.join(script_dir, '../resources/fonts') + dropdown_icon = os.path.join(script_dir, '../resources/dropdown.svg') self.regular_font_id = QFontDatabase.addApplicationFont(os.path.join(font_dir, "satoshi_regular.otf")) self.medium_font_id = QFontDatabase.addApplicationFont(os.path.join(font_dir, "satoshi_medium.otf")) @@ -23,7 +30,6 @@ def __init__(self): if self.regular_font_id == -1: print("Failed to load font.") - exit() font_family = QFontDatabase.applicationFontFamilies(self.regular_font_id)[0] self.regular_font = QFont(font_family) @@ -81,31 +87,31 @@ def __init__(self): text-align: right; } """ - self.combo_box = """ - QComboBox { + self.combo_box = f""" + QComboBox {{ background-color: #383838; color: #CACACA; border: none; padding: 5px 8px; border-radius: 4px; font-size: 14px; - } - QComboBox QAbstractItemView { + }} + QComboBox QAbstractItemView {{ background-color: #383838; color: #ffffff; padding: 5px 1px; border: 1px solid #4F4F4F; border-radius: 4px; margin: 0px; - } - QComboBox::drop-down { + }} + QComboBox::drop-down {{ padding-right: 8px; border: none; border-radius: 4px; - } - QComboBox::down-arrow { - image: url(../resources/dropdown.svg); - } + }} + QComboBox::down-arrow {{ + image: url({dropdown_icon}); + }} """ self.widget = """ QWidget { diff --git a/src/title_bar.py b/src/title_bar.py index 0db8ad0..2f1c299 100644 --- a/src/title_bar.py +++ b/src/title_bar.py @@ -2,6 +2,8 @@ from PyQt6.QtCore import Qt, QSize, QPoint from PyQt6.QtGui import QIcon from style import Style +import sys +import os class CustomTitleBar(QWidget): @@ -10,6 +12,17 @@ def __init__(self, parent=None, allow_fullscreen=True): self.parent = parent self.custom_style = Style() + if getattr(sys, 'frozen', False): + script_dir = sys._MEIPASS + close_icon = os.path.join(script_dir, 'resources/close.svg') + minimize_icon = os.path.join(script_dir, 'resources/minimize.svg') + fullscreen_icon = os.path.join(script_dir, 'resources/fullscreen.svg') + else: + script_dir = os.path.dirname(os.path.abspath(__file__)) + close_icon = os.path.join(script_dir, '../resources/close.svg') + minimize_icon = os.path.join(script_dir, '../resources/minimize.svg') + fullscreen_icon = os.path.join(script_dir, '../resources/fullscreen.svg') + # Variables to track dragging self.dragging = False self.drag_start_position = QPoint() @@ -32,14 +45,14 @@ def __init__(self, parent=None, allow_fullscreen=True): # Add close button to the title bar close_button = QPushButton() - close_button.setIcon(QIcon("../resources/close.svg")) + close_button.setIcon(QIcon(close_icon)) close_button.setIconSize(QSize(10, 10)) close_button.setStyleSheet(self.custom_style.button_title_bar + "background-color:#BF616A;}") close_button.setFont(self.custom_style.bold_font) # Add minimize button to the title bar minimize_button = QPushButton() - minimize_button.setIcon(QIcon("../resources/minimize.svg")) + minimize_button.setIcon(QIcon(minimize_icon)) minimize_button.setIconSize(QSize(10, 10)) minimize_button.setStyleSheet(self.custom_style.button_title_bar + "background-color:#EBCB8B;}") minimize_button.setFont(self.custom_style.bold_font) @@ -57,7 +70,7 @@ def __init__(self, parent=None, allow_fullscreen=True): # Add fullscreen button to the title bar if allow_fullscreen: fullscreen_button = QPushButton() - fullscreen_button.setIcon(QIcon("../resources/fullscreen.svg")) + fullscreen_button.setIcon(QIcon(fullscreen_icon)) fullscreen_button.setIconSize(QSize(10, 10)) fullscreen_button.setStyleSheet(self.custom_style.button_title_bar + "background-color:#A3BE8C;}") fullscreen_button.setFont(self.custom_style.bold_font)