From acbbc33fdb6c05956bfdd5798921926c4872598c Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 25 Dec 2024 11:56:17 +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=D0=B0=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=81=D0=BE=D1=81=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/controller.cpython-310.pyc | Bin 1584 -> 1945 bytes .../__pycache__/mediator.cpython-310.pyc | Bin 1311 -> 1617 bytes src/controller/controller.py | 8 +++++ src/controller/mediator.py | 8 +++++ src/gui/__pycache__/mainGui.cpython-310.pyc | Bin 9304 -> 10238 bytes src/gui/__pycache__/plotter.cpython-310.pyc | Bin 10962 -> 11534 bytes src/gui/mainGui.py | 30 ++++++++++++++++-- src/gui/plotter.py | 27 ++++++++++++++-- src/main.py | 2 ++ .../base/__pycache__/base.cpython-310.pyc | Bin 19688 -> 20016 bytes src/utils/base/base.py | 6 ++++ 11 files changed, 77 insertions(+), 4 deletions(-) diff --git a/src/controller/__pycache__/controller.cpython-310.pyc b/src/controller/__pycache__/controller.cpython-310.pyc index dfd93469db209967fa3f7db7ed6e211b9cecb87e..88d82876a3fc9bf66381de78b86e8d8bb14a1242 100644 GIT binary patch literal 1945 zcmb7FO>f&a7$zmzk{y4=ah#9tBkk4>zW6X;m!TMjq`+=L18*oG7!Wj*cGc*sB#kXW zZs`w6kNFe*A-wLi^KLuseJRUUy%g9)=;cH5CH1_|OHx_8-6ZggKU^*z)d=|m8`Z~w z#*gsI7ho7+G$sl4DMf6>R$}|M!FKELGm(Vpj8CPQ zO=s(LRNy$j(k;nTR(@*_nIX*{y*}8)HLm(-PjaQ;GxC$ci3ThoaEAiz?kb#emS~xN z(MF#>8jPhdT|m0K%vq>-P)-=)@Gh9^;|irMrx^u@@*xO|e4*oVobI(ut%_$6q%At4UXYl{LT zYvcAAIv|m)RBb%8H;-bThwAlzOI2@0Cd+vm;M9+DWxlsXsIhka64{t64Jvx9hyR}% ztK{Z!rljHUuo_jjCl9Jo_0V=A7yl9hZ%W)J@;MkqZs;vl^wN^86}B!dF@*hN-#N;{ z(ekiDU+vD>9Nr?Mb?vCDoa@>=&O)W_C{?;67W%h+9GMb{WRS zh`{SfJ8>kH*a0Z;LeMs}#OK)j8V!D1JVRqn<}o6ZeLQjk?=|hPXr{yf+lOc#q4@&M z2^!Q~e1+y4G@D2b!b?D4Y)D+57~okRElQnY8CpZT38fG3iEX^kM-AP5d3B+_8(*m6 z7bOK!(yg-hEEBv4u?|Us<7Sw^g`=Waj(>%}mN5cI#o%}BiETBJpx HSOfbXsIR?I literal 1584 zcmb7EJ#X7E5G5tql5P1Tw(B(M*X+eZfdWNQ6h%^?n~}gn0KtHunslmEmK2gkksw?0 z3;F|!X3S6N-brhx&e=Nkj<#jhNPw1tPRHXT`R*OXq+YKQXg|K59Dg?n`H7ukv!L@9 zUilIXBaB95MmYTVs@4+}#1r%$!=9q2<+C8KR9mYBT4`@|vv8Dy#}#3%nY0!P{bWZZGFH zSQ8>`7;CXD@H)(d3_DqM%|5d~>nvqf7F^9mJe(MXWY7n#$v(WdEif14gnXkH^jhmW zA~$r{H?oG*;`pnzEItbr#4X9AsVKv|8zSoP`Mt+pjo*cVFL)})!SnGEk60KVkJ3aP za4}89EQlw3EX8Cz$t5nhgY+zOC6C!^FC=w~G+Xq1d!5&yh{+tum4a>Ly~zm&mJk&% zK)bn2XEjUIbX>TI*+PT4EKCEutT|6vpt!%9(7|D3cD`Gnv;mq>0IVANn1vP^*IWpF zP4LK$a%Sx%GZCbTQ2s1oT$8(@3vwI0Y6V;m7S%#E=y|WessOo{k?6wYl{%eV9sUV4 zU6T;F#ile+tTk*00T01!lxmI0oM{;GG*BP^tyHZgnIz@0k5m7u)uTHIRdVQK9Mx6o z7WBx6|4)r&anmSKQggUljUw#XooW;jeM8s)8uq)HW3>@@o$6%@CoAWXIjOX`=uD diff --git a/src/controller/__pycache__/mediator.cpython-310.pyc b/src/controller/__pycache__/mediator.cpython-310.pyc index 8d1ef3df9b878e6c7af2a846bf4fc8501f001437..3b167e261d0296189ac2a703705813752116cdc7 100644 GIT binary patch delta 764 zcmZ9Jzi-n(6vywEUE8ruS}Ll9G)h|$ktIVB8v>z9z|t%cs5*p@)pMc*JE`n*hbU5! z+JTYEYbDIc%nVEa0#;9~mG~P9@2=%Xu;lN%yZ7<;y?6fLd~^M&=Q#+T^Dl3PpN&($ zv9||1fdq~a$2t;DAd-m2j5DlqG%{k7n|jTnrP$(DY;!wyxD!`+C3d-s(NiQ0VV)pi zhSo9V-s$WN%X|&LY=$(n!|H(4kg$a_V4@=26ULW?(?=aIKg8Qd@1Y5a=6H-HIVQ>S z92HdHj~Jsl8neQf6Scl3OdvKjp-+KWDy#*<2I8J3=(UGaR2B#qh$ot0Ks-}ryu!ai z1nR@o(3{bl)pq(XT7zje5gVK z$nbS41DU1yeew?1^RHxg%LgW{gSgDWE_TVHRx!KG+w?j8gnRj0+Prg9d6J|CAz4?V zzP*y$YSjYS%+G1tFKL_(OEU>&mP~s2V_F|qAqi8V0?+kDs)>>&9D?H-ghTOPEdE|O>#_P;Z~*?BDcX%8*;%5f}$>+89F{=f!qsa8Wz5CH+R+!^CAcsV#Lc1eEYwCT4+k@LD;Bp;Km`^-Y zK0@W@0$X%Q58BY7eHz(4(pD1Iqb~pxt|BiW*Ajh(8_2hin~62UbI2>m?Zo-zg7`SH zPhO$wxvABPNSCOPlv>Kgp@L$3>b)045ogD7iMKK7a zF3`~iwZ50~Q5N%@RJ*QUih3MvqANdCfA_EPv`%X5g;$~*H1{DZmi?+hvgefOqWS}f C* None: self.signal_update_plots.emit() + def update_status(self, msg: Union[str, float, int]) -> None: + if type(msg) == float or type(msg) == int: + self.signal_statusBar.emit(int(msg)) + else: + self.signal_statusText.emit(msg) \ No newline at end of file diff --git a/src/controller/mediator.py b/src/controller/mediator.py index 8587b17..51477eb 100644 --- a/src/controller/mediator.py +++ b/src/controller/mediator.py @@ -1,4 +1,5 @@ import pandas as pd +import time from typing import Union from PyQt5.QtWidgets import QWidget @@ -15,19 +16,26 @@ class Mediator(BaseMediator): data: Union[list[str], list[pd.DataFrame], list[list], list[QWidget]]): if issubclass(source.__class__, BaseDirectoryMonitor): + self.update_status("CSV found! Calculating...") self._converter.convert_data(data) if issubclass(source.__class__, BaseDataConverter): + self.update_status(0.5) self._passportFormer.form_passports(data) if issubclass(source.__class__, BasePointPassportFormer): + self.update_status(1) self._plot.build(data) if issubclass(source.__class__, BasePlotWidget): + self.update_status(100) self._controller.send_widgets(data) def update_settings(self, settings: list[dict]): self._monitor.update_settings(settings) self._passportFormer.update_settings(settings) + + def update_status(self, msg: Union[str, float]) -> None: + self._controller.update_status(msg) diff --git a/src/gui/__pycache__/mainGui.cpython-310.pyc b/src/gui/__pycache__/mainGui.cpython-310.pyc index 74baf8ef47105fc49d881f8f15b57fc302aa6478..543b3966934ba5d1d86252063d12978b0c0acdef 100644 GIT binary patch delta 2481 zcmZWqYls_F6ux&dGf5_onIxOdW3$<0x3|%?y)#d(BQEV1bR0M_nRVbpUAR<`&B@sdJmmnevq9WqClWd$xq=?3hzvw2NF$0spB=?evE_|H2KtfjL5nO5Ad0(N%|U+N zXZFINo#-YVf)%JuV$vJzRF_)`t1x34eQz|Ofa*SkH^FK|8Myh9>n*SbnSRu*g>{Is z;KACYQe;ws^>8aP18^JMK2OXX+H8P3kjbAUGBF4Dkiy+dr==vN`qJB;K}wVSOL>I; z#dT$UladB$`9J|>QKH20w=_@}=^Sm)Rsg(<6!o+eY=s)66c#Jj!iN@8L%L)kbuIL+ zg|SHHJPl7P0)97wrxk6`OGxTk#n5V0Zpf{khR0QsQhZLq1iheP0=1#G5)g1TN-5e< zon$Em!85qchJpd*j!!GSNW_5QuMF|1x`TuIH|^t3dPn#L@3%%^;=OG)Sy1<^KiqzQr2itTDr@>Akhbxz6wlAbSqyU&eK`GCp;J3iPp?O zQIOcEz?)H-2(U54$HjUVm-Q{zn{B&n_DsjDq3=?JSCe1Vf2RldXT}aboJlv|LCzs9 zidCWbmPEzoBt)J??9qgb9gtfJP>@8Y+?5J$Rnf-l+W3(5wfwMLPWdXVLAPWWCxHDH zy~WN6A1735hCy{}+o5EnmKoC07fH+Lw9u`zcZ}gtB|n1@{|F)Og%P$2Wg)_3e6c%G zv;({MZLS^NX&tN0IPKu>aaNmRb{+e`+QI4WV&VXb@mnO#RFxV-68g( zh(P|~a&fA<)1Gup|MEC6Gim{h+pN;Gs&>`Es8hC6@UR4Wm;pES5tr*O%I;5LX%W>G zeFAMn@dAG9g7Q%fpD+!g40fL=70>bXs8y^!TC76t$eOF?lJRilJO%z`WIz$~^&0;r z@(ms47ovNSjl}L&wjeVe<2}so@wi zg|F!Kab-)bYUc|EZ=|fzDP-CT6a8WX0!L=1!NNX?!rD7UvkC#Xh|EE?8JI5DoQX~) zSrHjFBgCu_M|dKAulha0dX7Jq&P!p5&!wIF$B`*`+nz)Au}%Zk9rm$_kqxY0c!?b_ z_ehES1=&s3maKK`IiWeh^DAO{2z|%Jz&$jJ&Hat6QE8+}PWomDnwP|=`356KJ<8(xc~gh%v>lOT<;$Iu3Eg(pPFi4GRi!(J3y*b?m) zW_j9i^#4U|U7V31UO&hCub7GJZQGtoeTp~x;ZVU0Luw+nCnBU)iA>PJ$%zp?}i(+0qw?Kz1OSxHLqqQ`?Ppa zjjBDeCTnU`);v+!=Z*SU2we(sCc4O;=Fbm3tjJEWV)L(uW|KWg262+aBmT?`$w1U2 F{|^uSUX1_% delta 1568 zcmZWoOKcle6n%F*9@}GkJh2`Boy18Tey&!g|qYr1|asLBXu)U1JfwTXb`f7Y(?SMaiS z3krBKurFhUoJOs&|6xff;u{16iIyiXNXvQZfLzo0rMI4ZPHyJYeL852m@(@;Id;ael zyXSiCu4^?m>6b|^{u}!nrtw#E0>=}dln;|;>2uEX={aZa=)5g*((gfDGP&mktR%mN zU3fG392~|2y^s3GNxh60d*6pitfZcS_c~`&M?l*tGoHk5x)0i&Tj?dBjTW=V;3fP% zyL0GnR9cQocwnP#q+Q2tIR`$)4|7+up{7n#W4PX}o|=+}?_EF;Pv&<=ev@Cepihxi zWB6IV_LxPq>ld{Xv$p7$a#*CLWtPASpPXN8OrM$Kvvxxqk@9f~a}w$(3Xf}F5_JZ# zQz)tG9To70LW5eHC>94~VId@VWmT_iSE+3gOHw?I=Zht{fme&yv#&}aBf;yU1)R(q`o^hI>kT>8@YyFW|eSG_>$qDINZYe2zk30)ADx zq}fDoGCVr?v-T#@+YBd$J{Y~P2@r-eWG#rZo6ZoiRUppTPWaR z6DNn$py2HAM{pj~taXt_B0~ppe;zs!1VFO)TPYWj~&(ET!VK QjIapEKYe+MNzbJE9}3rP&Hw-a diff --git a/src/gui/__pycache__/plotter.cpython-310.pyc b/src/gui/__pycache__/plotter.cpython-310.pyc index df953b5e54208da6a0551c88a1880300933a0400..e1b172540784cec2530ea5f5b80e9406dd1a8110 100644 GIT binary patch delta 2261 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 diff --git a/src/gui/mainGui.py b/src/gui/mainGui.py index 9421ec1..eef844d 100644 --- a/src/gui/mainGui.py +++ b/src/gui/mainGui.py @@ -3,6 +3,7 @@ from typing import Optional from PyQt5 import QtWidgets from PyQt5.QtCore import Qt from PyQt5.QtGui import QPixmap, QIcon +import time from utils.base.base import BaseMainWindow, BaseController from gui.settings_window import SystemSettings, OperatorSettings @@ -30,7 +31,7 @@ class MainWindow(BaseMainWindow): self.operSettings = OperatorSettings("params/operator_params.json", 'Operator', self._upd_settings) self.sysSettings = SystemSettings("params/system_params.json", 'System', self._upd_settings) self.repSettings = ReportSettings() - self.statusBar().showMessage("Ready") + self._clear() self.resize(800,800) @@ -61,6 +62,8 @@ class MainWindow(BaseMainWindow): mainLayout.addWidget(label, alignment=Qt.AlignCenter) mainLayout.addWidget(button_widget) + self._init_statusBar() + def _init_dock_widgets(self) -> None: """ Инициализация док-виджетов для настроек. @@ -132,7 +135,20 @@ class MainWindow(BaseMainWindow): settings_menu.addAction(operator_settings) settings_menu.addAction(view_settings) - + def _init_statusBar(self) -> None: + note_widget = QtWidgets.QWidget() + note_layout = QtWidgets.QVBoxLayout(note_widget) + self.progress_bar = QtWidgets.QProgressBar() + self.progress_bar.setRange(0, 100) + self.progress_bar.setValue(0) + self.note_label = QtWidgets.QLabel() + self.note_label.setMinimumWidth(250) + self.progress_bar.setMinimumWidth(250) + self.progress_bar.setMaximumHeight(10) + self.progress_bar.setTextVisible(False) + note_layout.addWidget(self.note_label, alignment=Qt.AlignLeft) + note_layout.addWidget(self.progress_bar, alignment=Qt.AlignLeft) + self.statusBar().addPermanentWidget(note_widget) def _toggle_visibility(self, body:QtWidgets.QDockWidget = None) -> None: """ @@ -219,6 +235,8 @@ class MainWindow(BaseMainWindow): for i in range(0, tab_count-10): self._close_tab(i) + self.update_stateLabel("Done!") + def keyPressEvent(self, a0) -> None: if a0.key() == Qt.Key_F5: tab_count = self.tabWidget.count() @@ -231,6 +249,14 @@ class MainWindow(BaseMainWindow): self.repSettings.close() super().closeEvent(a0) + def update_progressBar(self, percent:int) -> None: + if percent > 100: percent = 100 + self.progress_bar.setValue(percent) + + def update_stateLabel(self, msg: str = None) -> None: + self.note_label.setText(msg) + + def _transfer_settings(self) -> None: self.tabWidget.clear() operator_params = self.operSettings.getParams() diff --git a/src/gui/plotter.py b/src/gui/plotter.py index b709a29..f855d4e 100644 --- a/src/gui/plotter.py +++ b/src/gui/plotter.py @@ -199,7 +199,12 @@ class PlotWidget(BasePlotWidget): dat_is_none = dataframe is None - if not dat_is_none: dataframe_headers = dataframe.columns.tolist() + widget_steps = len(self._plt_channels) + + if not dat_is_none: + dataframe_headers = dataframe.columns.tolist() + point_steps = len(points_pocket) + else: point_steps = 1 for widget_num, (channel, description) in enumerate(self._plt_channels.items()): plot_item, legend = self._init_plot_item(title=channel) @@ -299,6 +304,9 @@ class PlotWidget(BasePlotWidget): worst_perf = curr_perf worst_timeframe = point_timeframe + # Считаем прогресс + self._update_status(widget_steps, point_steps, widget_num, cur_point) + # Добавляем реальные сигналы if not dat_is_none: self._add_real_signals(plot_item, dataframe, description["Real_signals"], legend, curve_items) @@ -333,7 +341,8 @@ class PlotWidget(BasePlotWidget): ] """ try: - widgets_datapack = [self._build_widget(data_sample) for data_sample in data] + self._datalen = len(data) + widgets_datapack = [self._build_widget(data_sample) for self._datastep, data_sample in enumerate(data)] except: tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] @@ -343,5 +352,19 @@ class PlotWidget(BasePlotWidget): finally: self._mediator.notify(self, widgets_datapack) + def _update_status(self, widgsteps:int, pointsteps:int, cur_widg:int, cur_point:int): + if self._datalen != 0: + sycle_start = self._datastep/self._datalen*100 + 1 + period1 = 100/self._datalen + else: + sycle_start = 1 + period1 = 100 + + period2 = period1/widgsteps if widgsteps != 0 else period1 + period3 = period2/pointsteps if pointsteps != 0 else period2 + + progress = sycle_start + period2*cur_widg + period3*cur_point + self._mediator.update_status(progress) + \ No newline at end of file diff --git a/src/main.py b/src/main.py index 018ac49..9172ba4 100644 --- a/src/main.py +++ b/src/main.py @@ -24,6 +24,8 @@ def main(): window.show() controller.signal_widgets.connect(window.show_plot_tabs) + controller.signal_statusBar.connect(window.update_progressBar) + controller.signal_statusText.connect(window.update_stateLabel) controller.signal_settings.connect(mediator.update_settings) controller.signal_open_file.connect(monitor.custom_csv_extract_only) controller.signal_raport_mode.connect(monitor.start_raport) diff --git a/src/utils/base/__pycache__/base.cpython-310.pyc b/src/utils/base/__pycache__/base.cpython-310.pyc index e19bdbaaddd517a135509baf85e04084ae535d85..5475de8b452e59b969ccc614c396142d0b2121f7 100644 GIT binary patch delta 4743 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 LX1lZNa*O{D!IvU$ delta 4454 zcmaJ^dvw$F74J7qe$Asz)220jK%1s%A+(gf2oxx#6p#X`mRF^sB{ZQ8D@pk#AmXH( zM~9Cw!HZ7MoR4ju10K(rp8D7sYOR}_GWXEo)SrqD=L0uAn@%^+nC^bQX_JDu{_*Mk z-TS%s`?~l0y?O9X@%|mc9?QwGX7JyMyS5J;Ui*;!4N*UfKf@WlB9zf<2)RPGQ1-RP z-po)@C@+-Hk}*^qDhL&_WC~rdF2h$cT4lI5llrwDgHNLuwPrdMa8g;8)o$iM<_xQ_ z=Gl!hmp<@MAKj33K!`c?wz(-s*JL=cOGfp~ctX<7#$sx*I7K4`EI!dfS6I687qP!A zVekpr1i6)7wv=nF5ZmaCWtD#_W3FNV%2VKGNjGha429$EP_{AbEg@koq(fG3dVr%s z`eARS@oJZCd5St+QNOU7HQm@1i-u|Es$%lm3bkdR%mZ6=Qjcw2P9qeU!cl`Pql(%h z`n@e%1n6~JOf=J)>|)yzFea8UUhOmm_`92~&%U&%o+V$VYzAQsgKmr`V#8`OPE!{v zHjpz%+BU&n!?4%O)0##PPk(aW}b61>P$VOSp|0Lw37Te-8N-q>M&(co%DTY(l!Z;gH2QXs^YGJa1CEYwM zW5Z#YxKb{LK^;s7B#ftP@o*v$mU1;T*dwXjk(BZxz{T{<-08XVA-Vy13^jBl_g<>Y;#dJS@yo|IJc3O=N8MUJ*VL7!nz#W z!MqTlmavrBwPF<=Vb3T%mshvC8@9E8bqu_JNgfnxB5Kdf=k6J1D>netA#8+n37rhM zH0fk{EA{1niuI00oLfZ4W>)!(r@sZ(mK02AJ*+r=6SP4;0~9<^V`TJq@OqQ8pk=$_)~ z;+@eai}wldF*tm~8WQ(3(aHX--m zpHbI#2Zwfr<9gPP*zVxgp|Eb+DtE;Pn!^vd{uz6$8X})kiVk4yp4`ugK`|8D9_Ma-a@Sg z_TP^F$6F%ue$F=C!nM0LJP?UR<>ORcJzMx`ef4GMFR>+XZljac{`1wVOIrr}h15Qy zsdEv=Enzq+bYov^I3d*&pk|Vqv7X6>l`1GR_vSAR#={p6#S%S{&_Fm*2d@*8rR+-I z5HBJuU)dPq1mEXQ>j@UuBnP+8jEalt>Y3h=ZdP*bUI*HD0O{Hl@S7(k=Tm@jz|$EcjA}%sOx-4v_wEbKVi_}+kSA~H zKS81VUWPXBytm8^ARPic0=OISJm7bLKL9rPf$5t_4fG0hJpgqE3evZ-3kG`07Z_a0 zQmUP}AY=+@s-19!EFr6ECyFLo3=_8)IUzgiG;T4H%|;gMoS_2NnL~wWHe@k})3dHn zry7@7*Th-y;nvXDEVFoxo}J|u8>wz~F&S!Bi#KqrCOjaUXj@G;zmq?!Dd#uym6`y{ z)wOQXr?^{cU0k2ZDAQ=H)+)Br@!HkQfj{1!F!QQLx_EnE!?;rh=TFwY0qxmOqgagg4d+dOg#bHNF5y{gG!?a3Lw4=Gh- z{04nR{x|$4^zif9&pkkFy8H*=W56eXe*!)Qe3ntq_%Dc`1I_??024>cQo4dr$b)p; zUoKu4{lH%$L<5=T_f?@>xz^RW7Qt6}r~qz!VhXp?4fC7D0(x@3=d2!gItVJAt#JK` z;LkS7Z7EN8IgRP7(Fk)UAU!=dBEa_u^s4WKi;cwuhs(cL6Q-B3Dt!`OXC zPtwQ?pIPQ(15~?~!;-E=qH*q(bz@{G)~{=c*ieLjF8vMBR0^7tnV@1i;i?99K+2;d z?SAp$=$q}EgbPD(&S$}329yGBqKi6QTGEe(I;LsG(3a5mI_4P82pa3SMx3Ih%k~w9 zG2k|U+Ll2`5qfEvXTb@Ge*~mc{xf{4yjRJt@*EjIc^_3`lvC8Oyh%7Iy!gPIhv^(>gx5(Z-lSZO{yQ9 z(i*tgOSdc<2uH(vhUMaVI~C-6txMH`3i}D#TA|d`+iV zNwz>!nW{p|@Rd6g12Q-~D1Xc`b!|8p4F%)!L)sj;A`6MY_Xz2M3v-L@^X!g{5l6qH Jz)_oD`acec-p2p{ diff --git a/src/utils/base/base.py b/src/utils/base/base.py index ccc18f0..d9bc10d 100644 --- a/src/utils/base/base.py +++ b/src/utils/base/base.py @@ -40,6 +40,9 @@ class BaseMediator: def update_settings (self, data: list[dict]): ... + def update_status(self, msg: Union[str, float]) -> None: + ... + class BaseDirectoryMonitor: update_timer = QTimer() @@ -356,6 +359,9 @@ class BaseController(QObject): def update_plots(self) -> None: ... + + def update_status(self, msg: Union[str, float]) -> None: + ... class BaseIdealDataBuilder(OptAlgorithm):