From b71f4a16e68bfbd864ef7357e3146fd4c12e8a01 Mon Sep 17 00:00:00 2001
From: s224361 <s224361@dtu.dk>
Date: Mon, 20 Jan 2025 13:37:27 +0100
Subject: [PATCH] Fixed module referencing

---
 .../advancedSettingsWidget.cpython-310.pyc    | Bin 5054 -> 5610 bytes
 .../circle_edge_kernel.cpython-310.pyc        | Bin 1017 -> 1054 bytes
 .../compute_cost_image.cpython-310.pyc        | Bin 872 -> 1398 bytes
 .../compute_disk_size.cpython-310.pyc         | Bin 411 -> 763 bytes
 .../__pycache__/load_image.cpython-310.pyc    | Bin 331 -> 624 bytes
 .../__pycache__/mainWindow.cpython-310.pyc    | Bin 6552 -> 8075 bytes
 .../preprocess_image.cpython-310.pyc          | Bin 529 -> 1051 bytes
 modules/advancedSettingsWidget.py             |   3 +-
 modules/circleEditorGraphicsView.py           |   3 +-
 modules/export_path.py                        |   0
 modules/find_path.py                          |  23 +++-------
 modules/imageGraphicsView.py                  |  42 +++++++++---------
 modules/mainWindow.py                         |   3 +-
 modules/panZoomGraphicsView.py                |  14 +++---
 14 files changed, 36 insertions(+), 52 deletions(-)
 delete mode 100644 modules/export_path.py

diff --git a/modules/__pycache__/advancedSettingsWidget.cpython-310.pyc b/modules/__pycache__/advancedSettingsWidget.cpython-310.pyc
index 7236b63a0e28e1ce6261fd142586150be4764839..4f03c691e60160520c3edbe98a564f1e6e0c39f7 100644
GIT binary patch
delta 2326
zcmZ`*>u=js6!-Njj`L32^pP&}#>N)9b}tn+*sJTFJld7+A(@KE&An~iI(E2r+BM2H
z!3q-y4Q*EfA%WEV2T0=+f=R$vzVOu&65`{;UjP!~TsP}V(IWY0pNG%+-E+@9&f|Sg
zhSFXtr3>)O9=$)mHt--lh;BX@8og9Ym<c3c0ZUG@mNHY(v+ShJ4CoXmTg#cbNT)ja
zT9?^{go^@>VQo#o8j<cwW;d3ng>wACr`PXDVQlJ(eY0lOLv`wM&6+2nJ~h4It(;#b
zZcs*{I2BC5O@GU>-5a)xy%mtO$$DUWuH{rYy{*4kNASOa2O^jV3#N#XDdC-1A~KeV
zLezd?PQEA1A*|fN>RQT-;TX~8#7L##_*&A8Z_(&D0U8}AacWI46F7}Ca8KeaNzI8k
zhx2Q)neIqkxErJl?jhO594>I2lW{NZ18p7~cp%ajNf#a@-E%7L+JQ@JirI5dkOi{<
zMcEY=SUX-2n?JKQ`ih+s_xFT}8mzst5-mPd>lTH|Fh@K*iCRKM!W`v5xhvd~TEe>8
zlG+FfK@4O$(6D%y+v6=^F}|p;C*Yps_LjV!;yNs0sV#xOhGq7rxNBU(N+f5o8oin8
zc;>Lu@yrKZi`|i}2O{*W7x><`MTp6zUL0drq#cvWW}JBBJJ5+Ufc5{yDZ-mYh@;>{
zCr%OKC=pL?8N>?vUfQu&--y|g)=MpU!@9l`N9&2!uLN0~V*f}tP?}wrD|-<XG}A2U
zM&~!~xqd(!)xe`8o61Mu$+r<oK02;WBb{cUZD<aFwPPo5+^@bmbIm8zpQ+g^joFz=
zmz<;aGBJjYbCz4P=#p<-B}=aDFA?LK3l{3z0SRWNm$=)kNAb+)h~bkO@dH9<rt73?
zTh2r6c%~0>@I3wuKvHIxwBtx*A82Dzs1Wu;yu^Of=1?y?7auB>!G(@+c!|RS4#OM{
z0=&aMi!Y&N_ILauyPzM1SDN~+{=?k7&HD)GEcUHFjS$lk2LX>Ih6bTXm={WHj&0WD
zZ8GdvEr+o4`jMhe2jIm}jWn3<<AUtlO+u6G<HXCUB2Tp+pe)fc`z0}0iU>Yqc@%6m
zTz&~amzkP$CO0yUZ)O~~9EV_IWr4Uxus{q7EkEn67=brG?+|0Q5d@xV*uGJ9?CKK1
z&-QPkEYf~<J6YHpm1$e<osjYt&n*I^<z|_U<@@?Px3Uqq(#aDl%a+q1?2qKw9SMpd
zZz;xhYL4v^!>@T>uwc9MhVR&zP)@DpEpH{(%)a?w&;5U)@<dsoyMam=^GR@(+ze<x
zmvoztzRI#qR#+vq<3O~OSHQBd+0SbE0_g6-<;wuwavn7g@fES3Qr1}oh^x)lo?FwZ
z=LXdBgXdFb<#h4gV-R_wEYm%3r^h)&6f=!FwgOUl8insRH*%Jt4%<?%ICjkrwlm%f
z_D|sQRRB$9?erlOvUqkU`!zk)b7qt6wJ3bF`7A3IV@6aGpZ%CQGRGT`Mt#P62}&4c
zKFPJG08F(yTdCVOO|9zr0e{*?B7907+kV}#R{e+Yme0R!x|~L;sG=llz6gW2mwlAY
z=0nM%l%582s8SL%sLMXj?uwy?Kvj&`<LuC=xFpa$SZcxe#ppxvgy3o|sU`ObErnwd
zhH)UTD`1zf+?HT8!(e5l+~{SsIl8%K7)UTO0>d)gMy<YTKw4`RdL9&=ui}<IpU*uR
ze*eoa-aAPVFr#@!a`i-1h_hTi&3@07w;#PTVEGy@pH~oyzb}7YD<k-zUMTmn<^0H<
z6zFN118*qGrxHzY;G>1|i9vbEDL+S{WJ3e-4y1fj>1D2qxj14?$G9ZVdY(h$+<Jz~
zsY<2lSiWB+j#H^@*_CKC4GS>EXa*d4O1}W02{IZ~@~`JrP1Cy5YC2ZXb|)gAat|wY
zz0r#3naL}wQ^DxSR50#Q7(_gm64fwbW$OHsx$$>_@+F39uv&-Hy0KKAaSNBt(-mqb
aY94Ml<P@*4&&#q04p|au&>u<EE&dCWSS1$#

delta 1745
zcmZ8h&2JM&6rb5IuXopu?KmGKBw1(**(QXKlD1G%5v2vCsv;r^h?R@kc$Rp>de@y@
z6JnV{MG%KdmBJjVN<BEIQuT;>LmYbSpRh<=D<QQ~uT`b?&Bg_kk>)pVX5Ra~nfKnz
z%jsu_^I<NhA!uKWe!KR3cssuzSGK3;W-ua%h`!!1Y$KH=KWFF9BO()J3lYT??~8UH
zkuD-Dv;Fw;h>&DfE_k;aPBT$fmKx5QYvDv#iI;2J#qwS5Ao2lRWMhJCfnZxCgAdUS
zOhh7WWo;>yIk{@fshlAy$O_34Z422Mq7wr~mE=es#w_V01sF9_BqbPiGDON`U<=#E
zLnI+P2L~HY1{cUJC#bO>^@7m;jU5(#P@;O+@(KG@upWuWGpK{AB0=l}aSUU2S)9-X
zBJ7A5#VQfmJ@LSpK%{hDAo6_-+Qp94&2`Xvkw`>f&%~i6g=BUF3{2|--65jv;9Yrr
zxU0k3zI488GXOUKv#BZDNRMp<t|_o_X=qd;T90iM*rXoYXm>x6*ad0q?d&c?N9>Mw
zdb`~TqI11izK`z6ae)}@k#q&;*h{G@BM3zPNg#iPvHs)_<su%i^@igG)eSEo;YOk~
z9qI-#`&6Ajc(r!Aaw&3YR9UQ3FN!@UsC?{3H{-BbS$Be#L)i=UR9`<NvdA-90WdH-
zls$zdc0Iem9%t|260@{va}u@^*}VnS^bp8&ii5@B9RQnA?Iv!s7utC-Y*BX2I3bF(
z#IEWG_RVmmJvOtjcAYW(B1Y_Y{V3p&F?|T`Mxg(Mmo1GBfJ&l7HOF@eJ;*0g<h5O@
zv!9Lka)X@oEdWcTlk87p|9E<!*QYuPdv)m1IDm%PRL(yS-1Hc?5oj5PBp-)sYrb2h
z5Wm%M!@`tbbN6bmnMPo36M7^7<Z;_#+l5hfDxYV|`Gq4qAL4Sm@R=95X4DA7xb6jO
z=G5QVvSd02CP^l8<ImmOF)g!y^E0!%p}ghzEqAXge%20mB>|Li3Ac}>&S>AYcex{Z
zc?~w8T|L{@7DLE|6UF9KTbw;{gPw$SOQI7n&^ZoecD68dGQHCKFi*6a?=`Ew*YM)K
zj!oFV2R%{%RLs699AnQ5D|a7jX0I(eJ|x0i-8A2*HZu-Q>fWGkR5#<gYsMR)>G97Z
zGQA*Oanc71hD|4M{n=M^SKPzCZ$@!Q!K&^yOeZpXA5JvGR|1oSW=cWbBWV?I%4(}g
zoY<}U&Z_H2Qx>ZgPYm)(p=m+zq(jvCm2LL4Ffnf{wbg3VyKSqrFp9af=jKUYkCAv$
z(|0zb2VfiVA5@dsU&Z6>Wa&T#wGdU{SE-by=kQHLCyCI3UxuIu!Wk5(9kC+~qmImR
z6x|VHsVl?2K*SyKjtG*(o|fiHki6o{BVT|2-Iwzeg9Dmlr~8{aKWrj8l+x4emwsz+
z9e)Vh+t4FkhLD+m`ajWjix{7?@@%O*dzZi8^c7P6tSAox<=T{&6E!)^bKq1-u3D}6
zP88K#->+8Rh(`KC(+6#Uo(?_YF;$U-^RlsID5|O!RZ*2xxnxkTV-=FV3!5u!YT(=@
z+W;w^n_Y<)A*Ga?CvwngG&kuY$f^Dt&R)H)L_O08Ny~RX;vq=`KZy#GfmK|V{sVj|
Bl{EkW

diff --git a/modules/__pycache__/circle_edge_kernel.cpython-310.pyc b/modules/__pycache__/circle_edge_kernel.cpython-310.pyc
index ee86e4ef66d3ce22af22a0a8c402d0374cd819a3..c67506850ab1a7de874c025489ddea0b3ce36235 100644
GIT binary patch
delta 478
zcmYjOJxe4(5bcloavVYB6fZf4%QnzN++aA4J5(@IWEEi<IYzr&+L`HHs%Jd*5-%_^
z5Onf``vv}=NsWw+P6V%84Yr`)t5@}k>Zbqse}aqQ%uGm3%&uJzN{5hpD<;D?;+r|T
zYd{b|3(}{CS;0!)=ah&k;eaDt;NW~D!UKBdo_fL;!KK^x1nrSd_+VzqPKUO^?x>PO
zl@$-JskGi={zJ=O(0Z5&S!=^k)u?Xv{?fyn$E$_!IM7KLzsH+7Y3^uu+LqpilE!5l
za}zE=1x3=_vZD~qlL*>f%?n#jKbYj{>Lf`IG@wpP`LjMwcNJ`+JcoEC-po{)VXotS
z$d%MN#0ScBP|FIcw3l1k@eoD2z8Y&NL05ojZv-bYE1E67ePP$>B?Cbev3c(Bh)47j
z4d^UmzuB|n;i74F7;-~99lv!|U5>_R|Dg4%@kpuxGAp=LRqHE}A!g&(DYUnrfCXy{
VzLY~z7x0xDr9;nPKqC5?{Ra|_c0B+9

delta 448
zcmYjOze@u#6i)8i^Qctt2UfR?9@M3SLJ<+#K?)W{>QGK3G^ss%O^)OaJZC2dp&Tv_
zqND$Ye}qF;r~U~#`FaPX5AwZy@4b94FL`r+S1x3=T0vmb-RIla5<)+7vTQbx6Igm1
zfFXuM)W@vMY*u>2eT(5s<T*3Qq3)~<IDPrRU)dpkYMfI=Cp_j#R|wet!g4yk(ZK^J
zO%jMW4?s!wjSq;TEJ!pYhM}Z!oyaH-q@dxVsAjb~%Zh~@SAvIds?jDQnM5g}O3{?a
zA<-imak5u5tdqif3%Rj%ePx^?YMi1w@LbP011?|!gHwa=O^F3M{zPg6=KSjonto5i
zbbf23ARbWRx49n2GV<@JNT|xr?9<ix`{^A3cRhQzYn?6FdX}=lbv@gZ^UEp+sG6s8
Z?IqZRm~oFLk|iNO#=tcE5^~X+^$(#Pafbi^

diff --git a/modules/__pycache__/compute_cost_image.cpython-310.pyc b/modules/__pycache__/compute_cost_image.cpython-310.pyc
index e755561615f0c50661393a5a4e40992dd71e5376..95190d238dbe08bed73ccd6573db4a551e4bc73c 100644
GIT binary patch
literal 1398
zcmZWpOOGQp5bk$(I>}6ScpiO1inQc_#ASqdXjj_Xf|wl%wIW5Hwv#dOqh-4TSvn{7
zgf#pHIC9|!^$l@A^A|W#c4x>49JyS!%UxApeHAsGmH~`w^z)`ogWylMc|69j`5dO%
zfgk}1c_6|n44oeFNW@j_^_V9jsS>XzJQZn`dOhWt$g0fi8P7#t<zCNuQH{tGQqq!)
z>6lDlPU(c4(b2clbxF?2>`hvok^Cx{U)+Q5U>^2qjiua!Qr1fD6yMR02<)EJN;Ivd
zE5ginW!P)#Ot`{i#RT5C-K^2H(W<7#{Cjp$GhK7KqGUr?TdF1HFYjaU^w$q>|Ni2S
z*Ka=SlLp({e%u<WR~i%6nm#pbBQQk3S+n9yFxzLE+E&XtabX_E1lA1ZGnnQZ5H{$-
zAHzdp!!Cd|wNaOLQ5Tc&E<R*7?lL&dyZlhtq)SM27am47?TT(hVv>;bE;*E4`Aha|
z(3S58Bzr43jJq+QlVcqQL5W~I8*o7OmZDl2i+uWMtu(@D!**02Ph470kxL5=X+1?)
z5~Lc-l*Al0SYtsg)n?&8?8O&)V=lese7R3tqF3O_X~-(?_2`gsIy`iikI)+)3@(vc
z`zNkwCu5K9U}h}Dgf&5g?ihBF`AlBm))<B*GD0bP%jD+t`c#zR6TUwF6%fX1Y%G|c
z0$r3oov(fQ9_8k;dW0V~0N=}2e6>edYrG%)%_HrKtfwI6VU-Qcs}cjq^~suXK9BlD
zC_?+<Mzt=L{k@~eJlAf~&~AZt9MO>zxf70leJt?z^NDtisa^k_{6Nb*P`pY#*41Qy
zfjX{ls*&#yua-AVf=jPw1HIw;*f*pvT!QZMw?MxGPX7L>zFb}dBg|5;@7kN?my$l$
zz!~%*dXA;QdTY=tx|I+BMb{E;v|*Oo<<-`i-6&0#A1{!hf*N4X@~WXV!+hIn)0!oK
zUjz0l(?Y9I@S#Y{VSQ-bV>HmMi)P<n{Qr0aF`5ey#k7de;v!DsGMt68IEnOoa17-r
zVA0NQeqNoMt;c7vrr3G(7z0=}YxWBu8L-@g{ohi!D)gyr1w;|arjL!)eaxio(>45~
n*gkiK1QK|s9=S*2UH7{9WJvB)Xv@INKum&3`0y*j52Akngkgx(

delta 343
zcmeyy^@2@1pO=@50SJ~!^`)<5W?*;>;vfT{7=r^47l%#M_TlGA;Y{IbVT|HP;SOfd
z<ej)IlkX)+#q(;Bb?y(VTI?tLFjg@8X);YVWEAGsWQ=0VjxWxvO1(8Xh}l!~7E3{5
zNk$ZRX>n>%d{JUbW@&K|$o3*`AQ8oxl35H>y_;E^@z&($%<}4DK&fA$$yPC;KuyIl
z&KX6S#U+`Ec`+`j#n~nK1u<EPd8LU(lap9H+&F-0i-mv$2NMS~A2SCt3o{p^0HXji
z3saE<P#Ea0B9NLQP9UMl8O2|motc}Mo~oCYnpjd=lv>0D6u&k3J&T$ZSbY)5awI|=
dB+X%yo1apelWNBZ<Q4M)2_6O>Mi}H{0ssd{Pt^bb

diff --git a/modules/__pycache__/compute_disk_size.cpython-310.pyc b/modules/__pycache__/compute_disk_size.cpython-310.pyc
index 3383772746e94d58575ed8f6aec432708e812f0e..74bb861cd1ee382b9360c0e67aaeb9ed7d1c8fde 100644
GIT binary patch
literal 763
zcmZWmO>Yx15cTe6(=;Inq)JGLgAb@u4&+jCiBM_Po<Sn*rCMp_*ptM{u6N}RLaN^2
z!iC=eM}7u>W3L=g&fGX4#@<Q|Fp|d}dpz^rn`$`h6SN0MpBCRDLcaT8*Y+?t!DXJJ
z6GTJ>xr#(jBoK=ZBqD`)-W6T3_aVLNh-gYi`&-N;uYMc_`}wjNI0HJ@Oh{*%`>r;e
z6_C#vx0P<X8m!Zb$Ntl;`E!cv43{}XXNiqI$2XCP4#*8TAR>N5zF_ni@wCx<-#NMd
z-KS`0RarX=)GmP<c@4ChhqI7oMQufAKoOFlQiW??8B1l!7C?FU$*io@xF2er>V=tv
zldrtPWI`{ne9OvLs^vQ<%=j+#FP?37%bCtLbiI^(c?T+>T+5;e*xH}s7Qve!&<+US
z_g`9V->p|}i(^DBnnWtw#HwyO9Aq(yb%OW0gYGNQ1KfUn<df_YXJfKbuH7tqt>9eC
zw?LoKbEZnBSB74|N}+5(FBQIMBQ4l$y7FnWN{j6Im>MX-SkT$D1}<5#a@shPS<Sdq
zi`+OIFkp{LxB~Z9W61q9a?fL2Z<>ey-Fmdf^En*oA#S5c`)HIlsd8n#(fb(b9=ax-
c7ZtN1D-hdp_xyYBMcez>D`UI@J@O>}1I>NYbN~PV

delta 232
zcmey(I-5B(pO=@50SInM^rg=P(vLwLWWWsMH~?|67?4O|NMX!jh+<4(O<_)9X<>|F
zN?{CU&}4fFlw<IFZVU#W?I(7)G5SqD$0+N5i@UTqwJ5$QF(tFKIEt^dpg1`(CpA7T
zF}WnaXeC1tCs5z7kYuZvP@uBn80U<l%;J*F#Jm`n)Z*-t{DPRQ#JtkPqRAml0fvl4
n+(6Zuj73Z!iuo36UTJPYWf2>Y2bKXFhD2~pe#j)j#K!~x=F>RW

diff --git a/modules/__pycache__/load_image.cpython-310.pyc b/modules/__pycache__/load_image.cpython-310.pyc
index 4e867587aa08a678807752452ad7df52ecea128e..5c6ee3dd5ebe526caf9fb5f8b9be6b2cd426e502 100644
GIT binary patch
literal 624
zcmY*W&2AGx44(aITCJ3d6Gt>h_CO8@E)haRO^c8UNJ)DjS}B_DINM=&XCr&IC>1Bf
znP-3_&jC-dS5CYFCp?>q1WRL&$M*Nx<7PNa1j~;nUy8Fph+p2>mzbRweCPoyEp$+c
zh0q}cI@0kf)(3j<IbMW1n2YrAH|K~qUA$KAx*H(47VYiOw)J{5vRWakP0l3$#NR!^
z2_HIU<;2(EBkT9!w~zsY+n<SKId7CEsjM`$DnPEVsinIHNo&Z>%7B(DQ-Sof(pXtA
z59Nwq>PEvT=`ki)(73;O#6I;QIZVg$f{}LhuIZtBrn}NvKgeG7e-mv1DsGYc*iqjB
zc(OF=qWtFZVqj_nr5E>Jy`G&;rpuSJ$-DW<<oq-ZFy!gK3p`-+=Tkn;E(wsb+I(oQ
zvbPqdXl_70l2c`Cg(b-gD6OFq<fY{Zl5ya&dFj)x8r0d-ktC>r9AGy0-=wOtMQSN?
zsB&YACAGXBV2(z&6<a^Sa@+NK(<M7M^4szK9Vd9mCXLW9t&8~k`iH*jJvH#rqi0*-
N=YGlL3y#G7@GsNzsl@;Q

delta 170
zcmeysa+=92pO=@50SLZG^reRZ>Bk@rGGGF79Dul31W2SXq%h_%L@}f=r7*WJL@}l?
z1~X`~yadWH_)RR-<Mh*HzQvqeW^`+EE~B);EtZ1Bl8luMMXW&iU%ts!F`>n&Ma41B
y8AX}JC7FqNF)pda*(Lb}F<FUurHMt8-!MAyG8VA|RckU8fh?Zvz@*2-!vp}$LMO%m

diff --git a/modules/__pycache__/mainWindow.cpython-310.pyc b/modules/__pycache__/mainWindow.cpython-310.pyc
index f202a4a0c3b8081acdb334f6de92fcb4b3009718..77bebf01c39d59ee355b75213eb3c29101613278 100644
GIT binary patch
literal 8075
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

delta 3039
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

diff --git a/modules/__pycache__/preprocess_image.cpython-310.pyc b/modules/__pycache__/preprocess_image.cpython-310.pyc
index 32055ff7fcd436221cc6f7f3293f35ea7f856c72..942e404cc02a826f3db27aa44723851cb69d573d 100644
GIT binary patch
literal 1051
zcmZuw&2AGh5cd8hX-G<iI3pj41W^$np$PG#R;suFBCU|3NRhLiY|QR@7u#D%2)7<M
z0Pn$tm*6e-hB%<U0v8zXrcFUuvOWHpneY2N&br+;!S?OW=jf$J$Pc@?*tT%-2)n+A
z11H=`Na~Cn$J%b<rryXyyUPRK;7#y(3j)5y8?zQ~^GheesKGl!(%U{oZ_;zhR>TUe
z1(Vi>w|S-u1*e#p{Cs!y>%sTs$-^=bDT`p)mU&-trW9M0ffiB9%66EDe3FP%n6jb3
z6iSBH_pAkI_}KTb>uWd|^2%9}mCKz^?t9O;D{tj+7j1v#BP@@7bO>ovY|j<sDhokt
zYUV(N%nL&+AauH*EYFjLkP)2=ZL&zQl)~$RC1S~p$RuTw(}OiLs?#hpbG+SeSD_!P
zNDnH@CaPi%==C+V-he*2kjrFr3UrMGc>mn35&+$1Nyf|#n&mbxOVE92FgsJ6ayS+>
zoLQzeaAHsrl0Mys87mSbrRnWW+>N6D4Zeqh=azUSI<<krOd7?sp&;i>hLD0Ze?{Nz
z@7}5tyr`aNO@2*yKo3#h{9JC}wIsDi&rvOWH=LSw@|1nv^2%Clm@v+A)K(ki+Vem)
zaH{TBexsdA-pLt8;AN+N4&W1!Mqh~Ppu?{Z;b45ELFsWS-W1dEGYR`j90R>c_nAzY
ziZwliSPC5jJ(75$v@l@C!`NP%W{QvR_Nhkl+JG7la|i`X;zH>{k5QfwHJj)HD-<wC
z#)|~!4Qa%JCEm{$<<7sGwuZI+lYYl{8oxWf@2YKFKJB^6*0!=2dd<;g9oIo-B0&hc
q5~OUdcWd1|Ax#-nB~!(y$X^(`7^-aDukk&=uRyfbvqL%#_5J|SC^4@9

delta 235
zcmbQuF_A?(pO=@50SE*o`_hvb85kaeILLq*$Z-JTVzr6dGW;AVtSM|Qj8QBp?7<A0
zoD(y&Cmytu@Y7_x#g&|sSrDI-nVVSx<gpfKrspP3p2wubcZ)SMH!(f6h#hE15!>W5
zOls=fK<2ODWUH9a;?$zz80U<l%;J*F#Jm`n)Z*-t{DPRQ#JtkPqRD>DF3Kz*yV-yQ
u9}^EV3sVs<km;w%R0I+)Vg(YKtdn;#tB8Rmia;hK5j>OsGfOe?F#!O(STjxl

diff --git a/modules/advancedSettingsWidget.py b/modules/advancedSettingsWidget.py
index 8983d37..065a8e2 100644
--- a/modules/advancedSettingsWidget.py
+++ b/modules/advancedSettingsWidget.py
@@ -5,7 +5,6 @@ from PyQt5.QtWidgets import (
 from PyQt5.QtGui import QPixmap, QImage, QShowEvent
 from PyQt5.QtCore import Qt
 import numpy as np
-from mainWindow import MainWindow
 from typing import Optional
 
 class AdvancedSettingsWidget(QWidget):
@@ -14,7 +13,7 @@ class AdvancedSettingsWidget(QWidget):
     plus two image previews (contrasted-blurred and cost).
     The images maintain aspect ratio upon resize.
     """
-    def __init__(self, main_window: MainWindow, parent: Optional[QWidget] = None):
+    def __init__(self, main_window, parent: Optional[QWidget] = None):
         """
         Constructor.
         """
diff --git a/modules/circleEditorGraphicsView.py b/modules/circleEditorGraphicsView.py
index 5134f53..efa7448 100644
--- a/modules/circleEditorGraphicsView.py
+++ b/modules/circleEditorGraphicsView.py
@@ -3,12 +3,11 @@ from panZoomGraphicsView import PanZoomGraphicsView
 from PyQt5.QtCore import Qt
 from PyQt5.QtGui import QMouseEvent, QWheelEvent
 from draggableCircleItem import DraggableCircleItem
-from circleEditorWidget import CircleEditorWidget
 from typing import Optional
 
 # A specialized PanZoomGraphicsView for the circle editor (disk size calibration)
 class CircleEditorGraphicsView(PanZoomGraphicsView):
-    def __init__(self, circle_editor_widget: CircleEditorWidget, parent: Optional[QWidget] = None):
+    def __init__(self, circle_editor_widget, parent: Optional[QWidget] = None):
         """
         Constructor.
         """
diff --git a/modules/export_path.py b/modules/export_path.py
deleted file mode 100644
index e69de29..0000000
diff --git a/modules/find_path.py b/modules/find_path.py
index 4ae9c7f..426563d 100644
--- a/modules/find_path.py
+++ b/modules/find_path.py
@@ -1,30 +1,17 @@
 from skimage.graph import route_through_array
 
-def find_path(cost_image: "numpy.ndarray", points: list) -> list:
-    """
-    Find the optimal path through a cost image between two points.
+def find_path(cost_image, points):
 
-    Parameters:
-    cost_image (numpy.ndarray): A 2D array representing the cost of traversing each pixel.
-    points (list): A list containing two tuples, each representing the 
-    (row, column) coordinates of the seed and target points.
-
-    Returns:
-    list: A list of (row, column) tuples representing the path from the seed to the target point.
-    
-    Raises:
-    ValueError: If the points list does not contain exactly two points.
-    """
     if len(points) != 2:
         raise ValueError("Points should be a list of 2 points: seed and target.")
     
     seed_rc, target_rc = points
 
     path_rc, cost = route_through_array(
-        cost_image,
-        start=seed_rc,
-        end=target_rc,
+        cost_image, 
+        start=seed_rc, 
+        end=target_rc, 
         fully_connected=True
     )
 
-    return path_rc
+    return path_rc
\ No newline at end of file
diff --git a/modules/imageGraphicsView.py b/modules/imageGraphicsView.py
index 1855d71..1fe7394 100644
--- a/modules/imageGraphicsView.py
+++ b/modules/imageGraphicsView.py
@@ -1,8 +1,8 @@
-import math
 from scipy.signal import savgol_filter
 from PyQt5.QtWidgets import QGraphicsScene, QGraphicsPixmapItem
 from PyQt5.QtGui import QPixmap, QColor
 from PyQt5.QtCore import Qt, QRectF, QPoint
+import math
 import numpy as np
 from panZoomGraphicsView import PanZoomGraphicsView
 from labeledPointItem import LabeledPointItem
@@ -27,10 +27,10 @@ class ImageGraphicsView(PanZoomGraphicsView):
         self.image_item = QGraphicsPixmapItem()
         self.scene.addItem(self.image_item)
 
-        self.anchor_points = []
-        self.point_items = []
-        self.full_path_points = []
-        self._full_path_xy = []
+        self.anchor_points = []    
+        self.point_items = []      
+        self.full_path_points = [] 
+        self._full_path_xy = []    
 
         self.dot_radius = 4
         self.path_radius = 1
@@ -139,7 +139,7 @@ class ImageGraphicsView(PanZoomGraphicsView):
         self._rebuild_full_path()
 
     def _insert_anchor_between_subpath(self, x_new: float, y_new: float ):
-        """Insert an anchor point between existing anchor points."""
+        """Insert an anchor point between existing anchor points."""        # If somehow we have no path yet
         # If somehow we have no path yet
         if not self._full_path_xy:
             self._insert_anchor_point(-1, x_new, y_new)
@@ -174,23 +174,23 @@ class ImageGraphicsView(PanZoomGraphicsView):
 
         # Walk left
         left_anchor_pt = None
-        i_l = best_idx
-        while i_l >= 0:
-            px, py = self._full_path_xy[i_l]
+        iL = best_idx
+        while iL >= 0:
+            px, py = self._full_path_xy[iL]
             if is_anchor((px, py)):
                 left_anchor_pt = (px, py)
                 break
-            i_l -= 1
+            iL -= 1
 
         # Walk right
         right_anchor_pt = None
-        i_r = best_idx
-        while i_r < len(self._full_path_xy):
-            px, py = self._full_path_xy[i_r]
+        iR = best_idx
+        while iR < len(self._full_path_xy):
+            px, py = self._full_path_xy[iR]
             if is_anchor((px, py)):
                 right_anchor_pt = (px, py)
                 break
-            i_r += 1
+            iR += 1
 
         # If we can't find distinct anchors on left & right,
         # just insert before E.
@@ -342,7 +342,7 @@ class ImageGraphicsView(PanZoomGraphicsView):
     # --------------------------------------------------------------------
     # MOUSE EVENTS
     # --------------------------------------------------------------------
-    def mouse_press_event(self, event):
+    def mousePressEvent(self, event):
         """Handle mouse press events for dragging a point or adding a point."""
         if event.button() == Qt.LeftButton:
             self._mouse_pressed = True
@@ -362,9 +362,9 @@ class ImageGraphicsView(PanZoomGraphicsView):
         elif event.button() == Qt.RightButton:
             self._remove_point_by_click(event.pos())
 
-        super().mouse_press_event(event)
+        super().mousePressEvent(event)
 
-    def mouse_move_event(self, event):
+    def mouseMoveEvent(self, event):
         """Handle mouse move events for dragging a point or dragging the view"""
         if self._dragging_idx is not None:
             scene_pos = self.mapToScene(event.pos())
@@ -390,11 +390,11 @@ class ImageGraphicsView(PanZoomGraphicsView):
                 if dist > self._drag_threshold:
                     self._was_dragging = True
 
-        super().mouse_move_event(event)
+        super().mouseMoveEvent(event)
 
-    def mouse_release_event(self, event):
+    def mouseReleaseEvent(self, event):
         """Handle mouse release events for dragging a point or adding a point."""
-        super().mouse_release_event(event)
+        super().mouseReleaseEvent(event)
         if event.button() == Qt.LeftButton and self._mouse_pressed:
             self._mouse_pressed = False
             self.setCursor(Qt.ArrowCursor)
@@ -489,4 +489,4 @@ class ImageGraphicsView(PanZoomGraphicsView):
 
     def get_full_path_xy(self):
         """Returns the entire path as a list of (x, y) coordinates."""
-        return self._full_path_xy
+        return self._full_path_xy
\ No newline at end of file
diff --git a/modules/mainWindow.py b/modules/mainWindow.py
index cf5039e..1612778 100644
--- a/modules/mainWindow.py
+++ b/modules/mainWindow.py
@@ -4,8 +4,7 @@ from PyQt5.QtWidgets import (
     QMainWindow, QPushButton, QHBoxLayout, 
     QVBoxLayout, QWidget, QFileDialog
 )
-from PyQt5.QtGui import QPixmap, QImage
-from PyQt5.QtCore import QCloseEvent
+from PyQt5.QtGui import QPixmap, QImage, QCloseEvent
 from compute_cost_image import compute_cost_image
 from preprocess_image import preprocess_image
 from advancedSettingsWidget import AdvancedSettingsWidget
diff --git a/modules/panZoomGraphicsView.py b/modules/panZoomGraphicsView.py
index dc86430..5adb46f 100644
--- a/modules/panZoomGraphicsView.py
+++ b/modules/panZoomGraphicsView.py
@@ -15,7 +15,7 @@ class PanZoomGraphicsView(QGraphicsView):
         # Expands layout
         self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
 
-    def wheel_event(self, event):
+    def wheelEvent(self, event):
         """ Zoom in/out with mouse wheel. """
         zoom_in_factor = 1.25
         zoom_out_factor = 1 / zoom_in_factor
@@ -25,25 +25,25 @@ class PanZoomGraphicsView(QGraphicsView):
             self.scale(zoom_out_factor, zoom_out_factor)
         event.accept()
 
-    def mouse_press_event(self, event):
+    def mousePressEvent(self, event):
         """ If left button: Start panning (unless overridden). """
         if event.button() == Qt.LeftButton:
             self._panning = True
             self._pan_start = event.pos()
             self.setCursor(Qt.ClosedHandCursor)
-        super().mouse_press_event(event)
+        super().mousePressEvent(event)
 
-    def mouse_move_event(self, event):
+    def mouseMoveEvent(self, event):
         """ If panning, translate the scene. """
         if self._panning and self._pan_start is not None:
             delta = event.pos() - self._pan_start
             self._pan_start = event.pos()
             self.translate(delta.x(), delta.y())
-        super().mouse_move_event(event)
+        super().mouseMoveEvent(event)
 
-    def mouse_release_event(self, event):
+    def mouseReleaseEvent(self, event):
         """ End panning. """
         if event.button() == Qt.LeftButton:
             self._panning = False
             self.setCursor(Qt.ArrowCursor)
-        super().mouse_release_event(event)
+        super().mouseReleaseEvent(event)
-- 
GitLab