From 9faa35f514058f2414297ff97a9d3c82ea99548c Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 23 Dec 2024 14:18:54 +0300 Subject: [PATCH] =?UTF-8?q?dev:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D1=87=D0=B8=D0=BA=D0=B8=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D0=B8=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20+=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=B0=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B5=20=D0=BE=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- pixmap.png | Bin 66212 -> 0 bytes .../OptTimeCalculator.cpython-310.pyc | Bin 8927 -> 9747 bytes .../__pycache__/converter.cpython-310.pyc | Bin 1256 -> 1586 bytes .../__pycache__/monitor.cpython-310.pyc | Bin 2992 -> 2791 bytes src/controller/converter.py | 18 ++++++-- src/controller/monitor.py | 42 +++++++++--------- src/gui/__pycache__/mainGui.cpython-310.pyc | Bin 6954 -> 7199 bytes .../settings_window.cpython-310.pyc | Bin 5549 -> 6139 bytes src/gui/mainGui.py | 12 +++-- src/gui/settings_window.py | 11 ++++- .../base/__pycache__/base.cpython-310.pyc | Bin 20374 -> 20436 bytes src/utils/base/base.py | 2 + 13 files changed, 59 insertions(+), 29 deletions(-) delete mode 100644 pixmap.png diff --git a/.gitignore b/.gitignore index c744e78..256d4bb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ /venv *.txt *.svg -/test.py \ No newline at end of file +/test.py +/output diff --git a/pixmap.png b/pixmap.png deleted file mode 100644 index 847987a8e3d170bed6c234711d2c65983a307d82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66212 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%0Dpw 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

%OqPQLenF0SC7hG}qFO0(h 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 diff --git a/src/OptAlgorithm/__pycache__/OptTimeCalculator.cpython-310.pyc b/src/OptAlgorithm/__pycache__/OptTimeCalculator.cpython-310.pyc index 9996c23ef87efcd834cf206f5b13ee0e437e2573..02077f14f6810ec58564e9e300343bde9bdca47f 100644 GIT binary patch delta 1527 zcmcIjO=uHA6y7)4Y__q9Y1*d7CYw#t)}$s@i%2P25wUvEf)l>vMJdFC6fb%ZQSa)T)IZR+AiB%@cr)MIxBGqb_SH7F z(|OwAuuFKwTe~{z){Z%!!{M>lw=+tjG~q}%I*3>5AheqLF3N|Tw1N7mhS_o&NGMdt z5OqpIDb^`8NJGfF7GT4)2HCO&*jieLtb3kq`mOaU8bP|8MvS3*xnttd_{Z6^Em4)_Nt3-$(tbSAe)347hkYP@ zZU-75Tu7=SAuB*({gw_(6x!HZ%RVT}wa8%tE_O^g4i&i>Wk$xuwPjZ!#^R*`fZVRq ztl0YOdK#dj&jth+u|o|B5hp}I{t_W7s9$8lUX|ssa@^evmvS%Ma|A}&WMvpg?qy}4 z6`6z8PrNrpk39$~xbb#@LRzthN?6=C0C!l{chr}*rscGBf>cY0YL#?SHa4Y7sC)qi zfCc>x8Ec!NV+$iF01$eI5cqX-ROk22QFE9-Lm#ccLJ7 zcO_Fsk7&?|z@7!Stg>N})DToj1`l!DJeJ4`dsAJ|qu498by|sL(`+FdYYyE4%U6rN BJp}*& delta 788 zcmZ{i&ubGw6vy|?Zl>Eb*=#m#Oieo3B%3B}(?)t~da9tFB-9^x=%q*|txD0diIm&2q+|5ro%(FIu~*+G{L_QcjTL!0Zz8FmIrxW!7Qc23)Y>PQd1XH%Ha z+qOm5=%v-*gdj`cw!RSXL)2izI1iDoG;$20xWO-h)BVL?8`M1SyPFwRLuUyNIFN-9 zSYR;+1lZ8eELz=0=!r6W(N{-m$~-}^Sr9yyWz#SP24L8EMvj-xG^};?*cS#H_-!Bu zdbc;;36Qd$d@=Aq%~lB}9pq5_EHeS;Q)_S^cT*Sbrq&L$jkb1$CAC|u6TtbQa?Ggu zE{*sZ1t5%=I4+7fFDmw1Y8&c?N5KUTYeF>Ju$j-kf)-2 zU*!dSrfT&W{GviZVFW#QGWLPWJ(EzP7aj%^T4{VLl6c1*D)=4cyFu9bH)2ff?njhV zwSuc67CuGgC)M60;A4?MH|yDd0{m5_?OV5UM&Is%vz4LK;^gJsv0MV+2cGaQzyRL! z@}UTsJ{t0Jt?66%#>++hWi_^_wgb)U%S(0S`QrukH#7vn)C?8}hsX6|B3Kzt2YE0q QjtNt6!LuB%<{tw44Q)uFr2qf` diff --git a/src/controller/__pycache__/converter.cpython-310.pyc b/src/controller/__pycache__/converter.cpython-310.pyc index 24aaabf16cd61d8d7e22e65ef4ac367e6d5f52dc..5575d0e00b3496c0611bdde70638a6ddfdbc1521 100644 GIT binary patch delta 802 zcmZuvO>fgM81`%D!wG3&FxHh7Hi1Cuk?S<|z{k)IAf|yPa;efdtvZsra@;|uRy~Y6 zLOF43Zy<4jf5Bhyi6i?3T(MKwE{m1Ne&0NP-uJQd+xrnzd8Ohb{oHue?=|dC)kgQF zju>K)q7cd%hq#{eYO8&{Gn63=U9} zo|z&qnxLGN_j-x=ezXT`w$6n?hx4=@^K_IA@~=n)#ZPz*)nXIx-gGs=wD(xQ`8N$G z&rep0V|-_Jhz1Vs{l{|a=oD&b>PR~G zCe8v(?>(53H|P*e(2+mCGC>ov^mK4(u4GltY45bT;tP&90^Ob{p`usH-%0zqjCnR} z)r$vYdv=Bm0gQ=juS66lohW|0)gN^EwtrIbp9;an)?OJ3Eyyr5c9!tB4nFIGOB6yd|iVDRagZF0$ha#_2kV%jF5N-I)DaBv6+Iyi`wBB&J|1QC}EmY7SWlH|%=DhS0zKY((B zYaJc+Q@Fe36X@jVCf-G{4j#M@&pq$M?|rggOD=PqGEnd1Gd#V-x9;4=s`^ntVGMj2 z!4aZ};(G*jMq->0pFpq!s6owZK+T9;Vc($e5O@=B8npj-vkRw*a=v}SSlkI&JV;XU z0C+{d!y{Oc+o(OM3wk!yh!rJrgyw5QaE3=@2!=lw6&1@p9L`o$gBM~emzSGyPh=rW z`mMTr#_P+TkrN%|I0^dP(VbE!iD)m#7|+d=Wxei&M{**fxXWF6M;4d9d1I&@vh+OS zS%(H$P*VtDDsf>IPC@Ay2glU{yQQ{m9wbq5hSzn7MaFqUxj)QbFvn_9QX?!S7C>kQ pHmoA`%-rk;DGda#$`@l{4QYn%{|CygX2R$oj#_X`v$2h8_zN+rVKx8& diff --git a/src/controller/__pycache__/monitor.cpython-310.pyc b/src/controller/__pycache__/monitor.cpython-310.pyc index 7075f6b9dac1eb9b621d29c3994fb8fa4745f0c5..d64290e6ac34c8de8211e566e756b65bbfd1a567 100644 GIT binary patch delta 1176 zcmZ8gO>7%g5PtLa$LqD%Zho3nAvA%ifGLU^l^+R8)$&uR93s@*A|c~uH(@Q?Yv#Re zN-?T%kN~Nd=$%l7un`i<1p!izy>SKEH?$I0khpSg!_2y>t9tdmo%hYm=Xo>xeqQ|N zc#s5vFX;Ef`FQu@LGTS+J^1mB<*2wL!yv4DVQ=~2Ojr$%kyQ!{o1!*rT=??Jimd$8u8~!cBW^TU|eNGpCj8MVNU}Cscc} z{>c0SufU=C7d944r1@W&z!g%KLEf)`dvx=x39Mz)kY}n~XI5y%N{2CGVD89E>odgR z97Ar+b4aNkcVb;vx}l>Y5sDLi=}YgyG1nBWKTlR3CFH4`g~tha;et7`K0I}T%o=2H zVPn-Mp;(K|vg|ozO1=}fN)Y0{wxD~0b zVkg?0m`~J=%M{I}s09KaeCa+|a?Dld%A7;Q+wA$CpeLFF-!wltFJ07j(;2u#$RVh6 zx-jrUn|F6a=zMDp0fa6-&g?@UdSc)Y1(3|3Wd3&6!8Iq`^;;=-YV_TBf7~D6UQM5( z-RkJx=DU`f%BE$r8M@r zHn7oFlip3IQhoTpD$+Xc?5bxeODz$&;L%gzN6y16c+&jtzSCwuH!>6{V3jNw$X?D2 zB@nxrFI=IpnuR=0Jk9VN!}Oz@7EpdzK)01>^)f{%m%xX4u#e0^VMSuetQU7)&lMd! z!#XURxs7g@F2hv5CMO5y#yx&a^GEUaGkLnq`-EpX;K^Fdr~X@o7s#_wE1Tc^)3>;# z`KN`a$ja<6-qv`INv<-pltz4&x34ke2bw~DGi-7cXequnp75ksTBvxl6}wVI_SM{c v(pzpT*-bH>47r->xTV&vnWQwgHWkb*R;7E?PQtVmT>zH$a_KUZ<-GMjHP{O} delta 1343 zcmZWo&2Jk;6rY*>@a}rob`qyR2&rk(q7_wz`ynJiNTm@{RS{K+#KBVKZar&vBY$;v zOq*yeBeen!T%tJvLaa}yoVar0%!M=BV=w#x+#}wbq;b@)wQqlZ@6DUvy!V@bSATya z7zKex;5nkack3|tfwm5R{dkK9&q&MVmDuYtUgfoCW~a>ap8Z2Vha^ zC#mF#5M}izyIHG(4;K)j(UPhes}BBOr!}UU#y=bWX;7yv;ooI2H3Tc_J@fwND!`By z^vQ9N)4am@q#q3)@aWSe^_zLOj08j-O<7si`7hT17H)eG^CXfZQP{(gOuG9**E0m} zP*~lhAEzyM7(Z@nc$O`edJ7D4Pm$CbU8Cw7>-GvB`xbhKU^22t#HM;-UG_7Qn{z_J zm0N1ZZc2mdPL%Z==gfWh7*1YI@=# zx@fxy(*0D%gZ4NQ(I7qMxadRmq)Hk~nGAa=a!#=kHg(`vv1kQ8>c`Ud>@s+fFDDZ! z>XIUUN|Ep$%Z*IO=8QsoSHA*v0c@~mg*6t*P>KtH#U`4?co$^+6EfreNT!z{E5*5Z z)T4E3(j#@pIX~-AaJ_si0Ql;D9srOeM_z1Br!)i9HhN^rz+-Had)27{@-%Y`Gcse& zre?-+J2U5Sibs`dV69suTts*?3OgE);~^I)6@gM*^lerc zsT84gJmW2hwOrWiM1b#LuCAk-y69}s9f?ld#!R?j??aj%vQKSjtVe6qhi{E8(>K|{ z#&#m&4ybO0*J^>i%};+8mK(L{4P;E)|te3gyz-S6MkYnfK9 zCi9va)F19=B~-vp7%1jloT0$=g%S-wg~^kS6j#vs0h()QuA;e)<_4NY3r_nWObC?V uP4Nah#9@wo&T|6Csst5RM?+f=r)Bp?y@{CU85C9Zi?>#LwV?XT+xQ>imk;9r diff --git a/src/controller/converter.py b/src/controller/converter.py index d87acb3..5136841 100644 --- a/src/controller/converter.py +++ b/src/controller/converter.py @@ -1,4 +1,7 @@ import pandas as pd +import traceback +import sys +from loguru import logger # FIXME: костыль для выключения предупреждения "replace deprecated" pd.set_option('future.no_silent_downcasting', True) @@ -18,6 +21,15 @@ class DataConverter(BaseDataConverter): return None def convert_data(self, files: list[str]) -> None: - dataframes = [pd.read_csv(file) if file != '' else None for file in files] - converted_dataframes = list(map(self._replace_bool, dataframes)) - self._mediator.notify(self, converted_dataframes) + try: + dataframes = [pd.read_csv(file) if file != '' else None for file in files] + converted_dataframes = list(map(self._replace_bool, dataframes)) + except: + # Get the traceback object + tb = sys.exc_info()[2] + tbinfo = traceback.format_tb(tb)[0] + pymsg = "Traceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1]) + logger.error(pymsg) + converted_dataframes = [None] + finally: + self._mediator.notify(self, converted_dataframes) diff --git a/src/controller/monitor.py b/src/controller/monitor.py index c6603d7..ee1bed6 100644 --- a/src/controller/monitor.py +++ b/src/controller/monitor.py @@ -7,19 +7,28 @@ from utils.base.base import BaseDirectoryMonitor class DirectoryMonitor(BaseDirectoryMonitor): def _init_state(self): - self._files = [os.path.join(self._directory_path, file) for file in os.listdir(self._directory_path)] + + self._files = [ + os.path.join(self._directory_path, file) + for file in os.listdir(self._directory_path) + if file.lower().endswith('.csv') + ] self.update_timer.timeout.connect(self._monitor) logger.info("Monitor initiated!") def _monitor(self): - files = [os.path.join(self._directory_path, file) for file in os.listdir(self._directory_path)] - new_files = sorted(list(filter(lambda x: x not in self._files, files))) + current_files = [ + os.path.join(self._directory_path, file) + for file in os.listdir(self._directory_path) + if file.lower().endswith('.csv') + ] + new_files = sorted(list(filter(lambda x: x not in self._files, current_files))) if new_files: logger.info(f"New files detected: {new_files}") self._mediator.notify(self, new_files) - self._files = files - if not files: + self._files = current_files + if not current_files: self._files = [] def update_settings(self, data: list[dict]) -> None: @@ -28,8 +37,13 @@ class DirectoryMonitor(BaseDirectoryMonitor): _, system_params = data self._directory_path = system_params['trace_storage_path'][0] self._update_time = system_params['monitor_update_period'][0] - self._init_state() - self.start() + + if not os.path.exists(self._directory_path): + logger.error(f"Путь {self._directory_path} не существует.") + raise FileNotFoundError(f"Путь {self._directory_path} не существует.") + else: + self._init_state() + self.start() else: _, system_params = data self._directory_path = system_params['trace_storage_path'][0] @@ -37,22 +51,8 @@ class DirectoryMonitor(BaseDirectoryMonitor): def update_plots(self): if self._files is not None: - print(self._files) self._mediator.notify(self, self._files) - def force_all_dir(self): - files = os.listdir(self._directory_path) - self._files = files - all_files = [] - for x in self._files: - path = os.path.join(self._directory_path, x) - all_files.append(path) - if all_files: - logger.info(f"Plotting all files: {all_files}") - self._mediator.notify(self, all_files) - else: - logger.info(f"Failed pushing {str(all_files)}") - def custom_csv_extract_only(self, path: str): self.stop() self._files.append(path) diff --git a/src/gui/__pycache__/mainGui.cpython-310.pyc b/src/gui/__pycache__/mainGui.cpython-310.pyc index 941766e83b1c4184abb60b2679c97d76e61181e2..daadeb43af0d19fff1136eabe667a2309d506a3b 100644 GIT binary patch delta 2445 zcmaJ?OKcoP5S^aSerCM?UGMrA{~b>p$BB}VD1ajJg(Nl!4oy^4 z$Vj%73lU2C6e$vGI3NQ;0dwHS0U>ci;y9NmM@~qb5aK{p&-#M}thLY8Rj;bLs=InW zf92!T(P|{3OYr&qVsR$c^*Gv2YLAER^ps=y7?G$%L#22*kxvlmvP8pFUzezE8*55F z`S=ssD|^xL700#9IH4e|z3$mRn`p8lEMGuXvEamhyy3c{xmIAC+yzR$C;h zP%^DPl%@$)skR=;YqXyRXmDN42S5tZFi1g=bZUSUqW%04>0a%p37Uj;RCuOndOehn z0V_kBK^q4tOLHJ4Xp5cnbI?}W2AUMu+Gz(!X{x{;GA+`yOb^gb&@_Xsi*|#Q1*wPj zf|PqGsZzdWTrvkdebg#eZWSw(cgr7=2>(hRB?&D1~cMUEh$11R8^C8{`40k$MviY!D*V$Xuiz1@9QH1S1FxxhC&0ZC6QyiJ*P z3c52}T@t)aA_6p$@{sPVz5xu@U>`vFJc5XKVMh}Cy9moGsJevE3UJ@3R!YT+-Bqqq zo3(-F*Dghp%pB`QN(TZK!MYK80KAxEyEm;#=X|N^Sd%52|EZ_j528gcOo7fWxYi`= zLw-NP03R`OhG@r8T#xWkqoX;A4o!}2--7`vV0JUe()TXl9bQ_JA_|fPw^)iUu(p&eqzWINyv%c$>(V+>y zZOodlGIzIa>@8rJZU5OeCi;FA!(gx2HH5uQ8jhW~aR`+|2!|1d5%x3=mm0z-!We>R zqv3DH@1pMCkLzf?!M}-}>f7ljdk2;O)=hIO690%qurxE~ANVleOdK%8KExJ!_%DfL zCr<;z)0kD6u|)}HBi(J#=Z*PN)h#R)>5T2NGnnfRLY|*ab{OI){PW;Y7y7{Fj4DZ5cKjle{CPSH&(%-qzVx0ZVlJHSFP>!VQzDiuV&%ikE>{}vRgoDgz(gP%bndHV*&`@^5e}v z4B(TP51k*MC?L-xh5gh8AbiK$v$ebajl$5HUwdR~fiXCjTjJVzp?Ow?-(q(~oSvsm zF2D=hxKeBi{2F%>rF}Ks1l{-ikL;&pi9gF7Y+r`87lU?=TZ{IkV#yw}%C<<#-sdlJ zohNbIUT7LDqP+VU6H|DB`Qmcfn%|$`U9kPgkGBj(8x4(U#*(*`-op zZYF1Pgr;-rbB<-Y+&z6Qqt delta 2202 zcmaJ@OKcle6rDFS9@{hV-%0HJe{EyZq!ik;WdZ%rmQs>_(x$B!Sd+Y$WD>^?Zzi8s zu8P!FWdo>s3zj&l02L$zWYrZ&Y*?X6te8#3vMY9c7O33&#w2M}VadmL?mhS3_s*U7 zl1~qRIU29VVx|J0>Oa%7=eqC5JILDop=(`4p$d(Z6N|}Wk|?JY8l~nPg__K|trb)E zKc^|;$6e-mPG#1;;#6pLRSc88$)BMVQ;LKtMKwxjpKwTfcRw{~_>NvQXg`h6C|F^z zOlpA@q5a|k>AlrYQ#1|FafoDS7OVtV&9nuqByD9Ws!=kd(;Ur%Ck?SS+74ERYD{C< zyfUNG4%!KxW{7psZm?Rw>Y=@0wcb;7rI?#g3Io15W;>N&$>Y8`U9EV$S{CQj_eqm@ ztd5bS=+Y){DbP=^Df8sER#Qrvr{7lKH{==h@H$$Nno^IhD?|a0Nki-8CaICSMU8br zlp2|Ds>dKZj!%*i28LQwHyLV!k!UcI>&i{7rqxq4f}Tk*(={TCp`|ux8KCJky`HUU zGN#m!HsGi<9qn{;O8;^=lLc0>aSQ1eyoW09l5}^jx+-}O3C9AB4q~6_E*!<@2D=mO4>2lR&CC{GX{TLfS z*o9CK7p&ZoeQ1s#gaCZ=SlOAaTy$pVJm28Vb#5@8!a$SD*a94d60V>S<{9yYRoMLs zCccXCkmq=1#t)!FY9#k0x3g#C4=be_uS4kRBk?5KF~W}`4YlCM5VjJw@VzDT~ojRVP#NeuTfD;}r1 ztRc)8M(7oPr}iH_1g0P2c4d~y^%ffKu7JO2EtRWYY1N^#%;QHe=_ILoe=P95aEn1g+|jex2Ybh#;CwO{5GopNZ~E8fW*7awFt zU&DD9G`{uj|J=sPFpC2#bK`Q-s`>u<>vTMg=dRQ(2PGp(cT$b{qu%q)fw-;S` z2m{#@%S+Vu*k%dnn-SkO4`iS3Bu~y~;%PHGB+IL^d@;(|Vs(XGvZo4aFtYb>sXKCU z_g{&-Emz+NcII2quFR&r(zLrGm%%52(kS8UOSU(+v&Lm0d@VX!f834NMKN+>VzPuh zpOkh|IS{@Rp!!^~I2cH60W5#IhSo;L{9*N&_4~Qr3 z=J#|gV}S%HIbpA`Q%;$U+lwq1_nP=A-+d65=SOBBBDb-MHL-95r^|Ir7jdvWKGYInt3kZ16`I-ZN&ro}g z;`tgRaMXt5o;ddPVO#Jl2R`^rnj*zB@1!WmvLrVx2KBI{=k*xYJ0*Kot diff --git a/src/gui/__pycache__/settings_window.cpython-310.pyc b/src/gui/__pycache__/settings_window.cpython-310.pyc index 7599bd5f53c715e2d84ad9ed59aa5408703462cb..4157ffd565f6ff8ca45f4fc6db6d8a4c96600684 100644 GIT binary patch delta 1291 zcmZuv-Afcv6u)<7)Nwz@*3~rA4OeX3u#9{N#JfL-li>xSOfe{uh_E^2V zw|0QVwyD*}lPu1RO~pFM`)d8$gn~y-ZnNX%=bB2N)Hk&2v?~Qc1C8aqych&=2h#qR zmJbFV?J>S>eQlUc#`?Xs#|lmP$3kbq4FvT{D2e6=k)i%`a3!G2f#!I8wUH31#_OLV zA1R&iAH}BWCI4G&BszljUH~&9QvP5(JunT5rLXV}TT)z*swm&KW!@M4#rPqkAvoS2 z^B=~4^p2z0oHE*u*Pj~iXmtYQufJi5%OIJCIDm&)fS}EBnX}}0f$Eez(TDac2$KkB z5qc1?IB_1~D#8>(1R!YT>mDyLF$0Pj7Ag2y@zSkTd#wzFuI<6O|9#()Fcv4UByrA9 zCx)8~IpNPGa&*Xlk;u%+I10LUAsj@I-5N$IgV2v4%N|4NIKl~lAZpu%V%~KNyjZmD zhA|vMm$X0LIZ`cvxM!(TxCqHb4JN-AVosi}-^Q+Tli2$k%#sfi@` z?i7s^3PLXTW*ygAC~`4?N3w`PlrU52`3eLV0~*wzce?jxHEP>V$?>2k6g>VeKhzeh z;td&?W_OzOzvqJ;eGS{iVQBPDS2H_bU(1)6*(&D1LChoEK#+68+u|mI%vi$C6bPvj zVZ%usw%ZDzlL$35X)A!bXJP86VY~R?cBjKAHZ3q_*0{)fWwASltf@99^DnxTWakoj z;Ch3k*a#hp6M28WGfM~jXPx(wC&4H>5HL%D&SK6#l^mV=4_Tm3td`lWBA>)eU3{9I ZnBh5|(?q-vOku4_6C!55+0uRr&<{rLa@ delta 709 zcmeyZzgC+spO=@50SKy|C#O5gPUMqeTrp9*+$>crg(I7(C@6&?g)>JyN+MNafn*BT zLdGbmRM8af6rN_LDCtzG1u_d67=bE+!B~@bzUnTKDCR}&;I1tc_iisUCd^Q*|a0y$9}*{PNB zU?beX+@k#Qc(A+OC%5q{3Lsey(r++%JO5896A%;K$sjSq&8Gy8FxFcG*)RVCL6Ikr zr72J(4U+T)61Uhhi&HYwGfQqUXXcd@$$-SYL4+-ca0C&OAOhsMA{P+h10tM31P_q7 z#gH^_5EATJd;O?DAhNB4;F z_Ar5zih&4O5CIM?H4sY+M96^%u(u6BEJF}s3?y#x#>Xe;Bo-GZ zr{?6u$0J390!WGS None: - self.operSettings = settingsWindow("params/operator_params.json", 'Operator', self._transfer_settings) - self.sysSettings = settingsWindow("params/system_params.json", 'System', self._transfer_settings) + self.operSettings = OperatorSettings("params/operator_params.json", 'Operator', self._transfer_settings) + self.sysSettings = SystemSettings("params/system_params.json", 'System', self._transfer_settings) self.repSettings = ReportSettings() self.tabWidget = QtWidgets.QTabWidget() @@ -157,6 +157,12 @@ class MainWindow(BaseMainWindow): tab_count = self.tabWidget.count() for i in range(0, tab_count): self._close_tab(i) + + def closeEvent(self, a0): + self.operSettings.close() + self.sysSettings.close() + self.repSettings.close() + super().closeEvent(a0) def _show_settings(self) -> None: self.operSettings.show() diff --git a/src/gui/settings_window.py b/src/gui/settings_window.py index d81e302..f89a6e7 100644 --- a/src/gui/settings_window.py +++ b/src/gui/settings_window.py @@ -176,7 +176,16 @@ class settingsWindow(QWidget): self._data[key].extend([float(last_value) if key != "trace_storage_path" else last_value] * additional_count) - +class SystemSettings(settingsWindow): + def __init__(self, path, name, upd_func): + super().__init__(path, name, upd_func) + self._num_points.setVisible(False) + + def _expand(self): + pass + +class OperatorSettings(settingsWindow): + pass if __name__ == '__main__': diff --git a/src/utils/base/__pycache__/base.cpython-310.pyc b/src/utils/base/__pycache__/base.cpython-310.pyc index 9ed5de3083d9dc712a2e79149b70d1aa441cba32..88d1fa977ea1ca51ff871ae4ce3b97a7d6658cc7 100644 GIT binary patch delta 313 zcmXwwPbhad(`>Y5o44(?n%bl|IO(;bD6#i_QKjp* zgA`8smE|mV%1JrN!AZ%1n>XcCPkrj?*{|ZM3iE==#A(#Mro`F7{I&Vbg-iN!i8fg) zql_toQm51_4T@3WWZkJw28G>SH0`c6ThvOA4sfudSH(%4o_Q?Mu1CT$HF+hhs^3mm z-a?}cjb_oQ2BmI_1=`5rD`4%&Ks(v|5;oM{PBniCo8%9Cf@6;U2(V2v z!4>S$b5O(~ON1s2IHse>87eFuZPDYN6=HGVhaJQppoNyrjl2LB#wX8#9{Nb#B19LX zWrUfFe+LrOnmz$fH|ZTjDVf>A7(Hf+$kC9HMV=}`5tHm&7zgfHCd)(DXC3$jr_Ww- delta 268 zcmcaIpK;oJM!tMrUM>b8(Egj8UJ$a8@2M_h!Q?NxnUkmMZRh0yO0Y1>Fmf>pF=|bY z*Uw`toP18dnz3ZEmq9gSIgqV9`K3V^W7T8_!%D_lF#oP$D0c%R14EGpP;-^?E; zlf#Xw7@L85lqY`$vf3sW7=L2q*qm%)&B)k2dA?}{l8TS=W6hqsipw?#+zm zo3lM$GBP?%4)vPH=r;L_S0AI*F2@7tR-X)08*-2p8x;= diff --git a/src/utils/base/base.py b/src/utils/base/base.py index 0b489fd..4d865d3 100644 --- a/src/utils/base/base.py +++ b/src/utils/base/base.py @@ -364,6 +364,8 @@ class BaseIdealDataBuilder(OptAlgorithm): time = i/self.mul X1, X2, V1, V2, F = func(time) data.append({"time":time, "Position FE":X1*1000,"Position ME":X2*1000, "Rotor Speed FE":V1*1000, "Rotor Speed ME":V2*1000, "Force":F}) + X1, X2, V1, V2, F = func(end_timestamp) + data.append({"time":end_timestamp, "Position FE":X1*1000,"Position ME":X2*1000, "Rotor Speed FE":V1*1000, "Rotor Speed ME":V2*1000, "Force":F}) return pd.DataFrame(data) def get_closingDF(self) -> pd.DataFrame: