From d8f7b865b9c6aee88fbac0578884103b989302ac Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 16 Dec 2024 15:49:01 +0300 Subject: [PATCH] =?UTF-8?q?feature:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BB=D1=8E=D0=B1=D0=BE=D0=B9=20=D0=BF=D0=B0=D0=BF?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B4=D0=BB=D1=8F=20=D0=B5=D0=B4=D0=B8=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B8=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D1=85=20=D0=BD=D0=B0=D1=85=D0=BE=D0=B4=D1=8F=D1=89=D0=B8?= =?UTF-8?q?=D1=85=D1=81=D1=8F=20=D1=82=D0=B0=D0=BC=20=D1=84=D0=B0=D0=B9?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/controller.cpython-310.pyc | Bin 890 -> 1086 bytes .../__pycache__/monitor.cpython-310.pyc | Bin 2141 -> 2591 bytes src/controller/controller.py | 4 ++++ src/controller/monitor.py | 6 +++++- src/gui/__pycache__/mainGui.cpython-310.pyc | Bin 2972 -> 3434 bytes src/gui/__pycache__/plotter.cpython-310.pyc | Bin 12144 -> 12144 bytes src/gui/mainGui.py | 15 ++++++++++++++- src/main.py | 1 + .../base/__pycache__/base.cpython-310.pyc | Bin 16413 -> 16594 bytes src/utils/base/base.py | 3 +++ 10 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/controller/__pycache__/controller.cpython-310.pyc b/src/controller/__pycache__/controller.cpython-310.pyc index eebbf406fbed4460198fdcbe1f55cb439fcaa3b9..c93d105a1a245ce979100541e7d9585eff997a86 100644 GIT binary patch delta 339 zcmZ9GJ5Iwu5Qg{R$NDKtfF&zZBxWLajH;wK%*n|1p^w3K>7z?C?X(T~TDEFh zxvj^Ind9O~Gx$RXASJQs(5(Bq<(=xAQE46hVI5DF(@Bz}q%he`ZDr5zABItNe2P7p z?itAA>{|7sR&6Ww<$qV1TE=-_caob|a^+h(j9QGN-aMGe)sOX|@!`RF+hB zNrn`r6y`LR6qXd$7M3WE6gHqJCtQ?0g##$cmBJj%pvgH|it#KX&*T@3lNk9YS2HOw zX>w0CW4073Vgg!I#1ABHv7}@smlO$4p1`aq4sr_z0|yfaqZpGEa}g_$>!-;cHTev4 F5diooBnJQh diff --git a/src/controller/__pycache__/monitor.cpython-310.pyc b/src/controller/__pycache__/monitor.cpython-310.pyc index 731d0e7cacc0fe1c4cdcb9d23a580b91e88699cd..b2d9573144d137b14abeb693031be8b451b94352 100644 GIT binary patch delta 528 zcmZuuJxc>Y5S`gOyi4N6cu@;2RICm)_<;yPw6UNL+$MSwy|}l6%Ec54+J^i9 zlTHf@d+~=H_!ImEf;bbk5eMFzx3fF*2KFs?Kavd{Ck+%2Q~L)stDSwqt@cYXKUhuG zgmh%~#@tOys|4QA^T+T2CLPBLTS-a=zAiT^`p_5L{Szi-hCzsmL>jty2R&?xSV%ZS zHE|0ylqkiG9g9u4#-z(H5to1ZtSBJwx$(HOe%`1(ArtLSoi}di4=if$RKGxkO2NtsX?$504w`D|C+7 zZyYXHHv?7mb*L`3!;^q=!9R;yIy^4RK$WZKT2*{qSgVJAr5>%5_#NVz-}V+eOfpRo zQFVxQ-#o`^j;X)KBCGx`E_wX1Sfa~_KPrtj&b#QM`FT0>-*SH%y-erI+Q`iF@L8ti X&Z{+@8zgCiEo^HnW81FNdAAy0ZE1Ek delta 76 zcmbO)a#w&apO=@50SLmI1JeuGCi1Oiw3@ibij_T>L6c`QC!-)6W7K46_IxHy&dDa6 d_KZ4{>o^tpKsq=WIG8xt#khGmCa>o#004yM4-)_Y diff --git a/src/controller/controller.py b/src/controller/controller.py index bdb6207..651fdaf 100644 --- a/src/controller/controller.py +++ b/src/controller/controller.py @@ -8,9 +8,13 @@ class Controller(BaseController): signal_widgets = pyqtSignal(list) signal_settings = pyqtSignal(list) + signal_monitor = pyqtSignal(str) def send_widgets(self, widgets: list[QWidget]) -> None: self.signal_widgets.emit(widgets) def push_settings(self, settings: list[dict]) -> None: self.signal_settings.emit(settings) + + def open_custom_file (self, filepath: str) -> None: + self.signal_monitor.emit(filepath) \ No newline at end of file diff --git a/src/controller/monitor.py b/src/controller/monitor.py index 533ed45..c30c446 100644 --- a/src/controller/monitor.py +++ b/src/controller/monitor.py @@ -47,5 +47,9 @@ class DirectoryMonitor(BaseDirectoryMonitor): else: logger.info(f"Failed pushing {str(all_files)}") - + def custom_dir_extract(self, dict_path:str ): + files = os.listdir(dict_path) + if files is not None: + all_files = [os.path.join(dict_path, file) for file in files] + self._mediator.notify(self, all_files) diff --git a/src/gui/__pycache__/mainGui.cpython-310.pyc b/src/gui/__pycache__/mainGui.cpython-310.pyc index bdf71953ab73225b7f3a6baa2aa60a0421c902cc..aa8edb5b0e75e216c2c16b5032f02e69e63b3407 100644 GIT binary patch delta 1333 zcmZWoTW{P%6rLG-y}qw=X>N!ltx~m%MB6}1gd(UE5>(NWUQ&eQ7vt#1sDlegF^t2ciD}q=qxI+oma&&ha_?w?6|DN$P z&$AIc|IU52{oLvMICuuD1cjKQkXV>biCH{}r^N?&acP>?Xz)}IJvvQC=qMncjwLl( zp?FKD%_0bXOlESBki~urUwmQVFisPcz zB?_S;=wgW|g0oiFA0B!eJK2+Yp5%G6wat$UAU^c(wv*O8bPfloW$fVi7lFz!Zgl1mt^X@(k+PV#!c@czNh@CxN7d-P zk0pb~rr=fTvKX5N_$wZ8o@Ha>@M&52=7Xy$4YNrIuvO{K?kv4_hwp$~27l$I_`&Sl zP&rk$0Ncw-BTZs9ptZJ>{9erBJ+8Q!FYB#=lM@#oS_|W6i!0U@@wL@hQYDEh8Copa z%N{2W*Mmygs&1x)GoGJqWI;sUOUyfA(32zN0X1#N1D zeyTsEL2dmo*ictxC^*ntiRu-mLluzNr_D53ZN_P~9gf36*Y=xSDs{D|)Crr_dCMRJ z$wrM1&$GQ~3vz~s2%W7gr3s7LalZ4$l-UGO+y>(&xB%-QGX3Om;`6xK`m))g*^?`; z-B>mp)*S3zuaAjkd$qR+n0+MOigfb-s>!Pnms+!xtAQz^(u<--8gt%A(lm-*>*Xz( zHY=S4P8ydIG!Y^CiGlqS+nE|OYo>1Nwl-=6n%cKs_p40Kon03%?A_q>Co427_ML_Q E0OOM^p#T5? delta 857 zcmZ8e&ubGw6yBNLCcBf}O;Xz?)@oBMY7|;qZL1*WQWZf;=`SRgWt&;k)@@T}x0Omj zP(dho@m)NKq(=|_1O5$y;BilaB2@efywo?7_#@qAzj^QNd*AoX%#Xo01-IciOvC3x zvQmF-9k?X-6th6960TLLMfd=mAq7%^X)-Zh;8~t~Zd4s!;CbGQk;_j6S>D6R1B3VR zeyrqPXognJFKXo?yd_u23VbG0rP$(x)26n;p6N}^%V4f^<8N-m3|$}&>{AY|{wm|5 z2S!uGBn;l`6R^)562eb?`D&B2OgVNyh}P6vc9Y16Yp7?;Ej@M?*BXyXQ4q)LTlMI$ zg*;^kJ{kLW5(}&M{Jq9bT&ALkKay0aQgI5CHVnxqi_nK()QiA~O>*eN?!54==NCPs z@Fg{pIV-!*NhpDxt~etYmeYz`T!8!Oi^JW_i5sCiZ#!(nUhJ<%!*Gy(d0tte{^esf z66ayCH!p%Hy0sf@#bdB+dXv|rf-VMdNeoFQ3K+g4ZOv{qA@?u|-_3<_HAX}~7Q{^n z-JOZEy%Vi@e@<;0>ekMbnn{ZiwkJKcFz`iN)~W~byf6ICNNEdsRic7`zKW1%qkY}v zO7%M2WwjYaNfl+)62WF;H(2slJGUWbCDE~2d7>5g%0{xHGkh8=bLC#3_Uw~Oa$-ip z4GD6;%88Op^!2S+NP@)iyjti-Q7s5V&-+i~q?}N9Zeb+9sEA-{lp04V;vO+p%$Qlz fUf?Tr2gH-oQ{ diff --git a/src/gui/__pycache__/plotter.cpython-310.pyc b/src/gui/__pycache__/plotter.cpython-310.pyc index 47c95e85e0984d67a8ccfad8d3d2ac8f0ef5f600..863a1d81bae573dde17803359a8842c47db7ac47 100644 GIT binary patch delta 109 zcmewm_aTlipO=@50SLk+64IYJZsdzmVN{%)t@4u5ZgZ&WB_>T~5k?_q9wshE4rUHU zK1MZ01ttMz9!5DJUjQt|!w7KPfGH($_TK5k?_q9wshE4kivp zK1MZ01ttMz9!5Dv4rT$c7!M-|@-c1>(5Po*wBLL|Gn$Dpc(RU8A*1K!c{&nIj46}1 H>+J*py7d-7 diff --git a/src/gui/mainGui.py b/src/gui/mainGui.py index 4949ca5..804986e 100644 --- a/src/gui/mainGui.py +++ b/src/gui/mainGui.py @@ -14,6 +14,7 @@ class MainWindow(BaseMainWindow): self.initUI() self.set_style(self) self.settings_button.clicked.connect(self._show_settings) + self.select_dir_button.clicked.connect(self._select_dir) self.operSettings = settingsWindow("params/operator_params.json", 'Operator', self._updater_trigger) self.sysSettings = settingsWindow("params/system_params.json", 'System', self._updater_trigger) @@ -23,9 +24,17 @@ class MainWindow(BaseMainWindow): self.tabWidget.tabCloseRequested.connect(self._close_tab) layout = QtWidgets.QVBoxLayout() layout.addWidget(self.tabWidget) + self.settings_button = QtWidgets.QPushButton("Show settings") self.settings_button.setFixedWidth(160) - layout.addWidget(self.settings_button) + self.select_dir_button = QtWidgets.QPushButton("Open directory") + self.select_dir_button.setFixedWidth(175) + button_layout = QtWidgets.QHBoxLayout() + button_layout.setSpacing(2) + button_layout.addWidget(self.settings_button) + button_layout.addWidget(self.select_dir_button) + + layout.addLayout(button_layout) self.setLayout(layout) def show_plot_tabs(self, plot_widgets: list[QtWidgets.QWidget]) -> None: @@ -63,6 +72,10 @@ class MainWindow(BaseMainWindow): def _close_tab(self, index:int) -> None: self.tabWidget.removeTab(index) + def _select_dir(self): + folder_path = QtWidgets.QFileDialog.getExistingDirectory(self, 'Select directory', "") + if folder_path: + self._controller.open_custom_file(folder_path) diff --git a/src/main.py b/src/main.py index 25919ae..06e1ba2 100644 --- a/src/main.py +++ b/src/main.py @@ -25,6 +25,7 @@ def main(): controller.signal_widgets.connect(window.show_plot_tabs) controller.signal_settings.connect(mediator.push_settings) + controller.signal_monitor.connect(monitor.custom_dir_extract) window.push_settings() diff --git a/src/utils/base/__pycache__/base.cpython-310.pyc b/src/utils/base/__pycache__/base.cpython-310.pyc index 579ebe5a9a34aad62c9e21d3b286ff735ca6d9f7..b6502bab018aede3efa3f9f953eacec18dc8cd5b 100644 GIT binary patch delta 1243 zcmZ{kYix^Q6vumddDE43vyE=mt=l@4muBtk(o(jtnGlx`=9;)H-WScbww~1olemO0 zB7~d|3>zc%#e`~%C2n(B;vRP?X6_<{M8pRPp7Yc#L_hrcf6nC5$Fc^e zLI1dMaiCre*G85yFD`Rt;I|YD&L3>VO}_Ne@zhXQ4K7%;yfG4LSU^TCXf$jXKd;F? zuC`IF3#-ugr%sQ5d zHwrRhQJV{(8GEz6V2lmQaRcnaYI}Zq3l-Q+aB##S!1m!vy9ZLR!@e3U=*nFQR`fU= zcsX}AWb?HHC*;k9Tx`u-0S>YD=g$BqZq086nLF#?2<~zefeWuWN~Sea>7g95#Kc*x z6c7jQAthd*jq=)mb@Y!o?UT(|YaNK;f~?d-wD~aM2;nGhv1S`Ka4E&21w#Oe@ZOLJ zcyY3GveZS6;hC0rz2!UM%+urKzscn*|MHQuiilsHMaL%7Zn*EIx!aYL8|f)P0> zQ7%ylL!~z97Wr=D)>1dWgznOH{Km(Zo%S4{a0fxO?I0=9yQ8G2fwDeP>k$Q-vBX;p z7jdb#tKa=!v+2Y>PbOCRCi0@2eHM5SYxi{loW_Nt-0%{&j0)GhqTN|kPMa9dGZc7D z7)i(>*a>er-cadxT*%sZ(qa~BQiF|ZByI>q)P_d>`l46QvBn>OUOeUB2=8&y=(?nj zw5^J7!>^WV(`Q=w`Kk%W>NC+fW)ghCWn%`e?&h(?Lx?7~(NYZCIj;CE{mzU2U8VeA z&THh9*njhPDX*P6m3u_rda1^bfgk(xxW~ejIQj``eZumL%;JH>&sWc$Q{cs~=u50F zFSOGvC2s#AsXoF}!W6;>#BvX)c)olUv}0w(Jm|r;ihPMinq~060t@z4_zeA1hozN% E2dTqI#Q*>R delta 1145 zcmZ{ieMnPb6vlVC&ppp`-uLe83^u^=dI+ry z2?>(1Pkvb0=FZ&9q2s!EBYUinl>jd*k@H$!#dEurB?>--*YH71Df!?+nI%*-MTZ0S z%t;Pc3G-QpkVr@(9L8i$kC}Rnnq!Y@S&&>T(B}bo5o6LoB@V<`0gmF7AvWR|<&P6g z41RD5C(&lKffmb+yI>ZM80#PsOXt>sj%gGAoLdyE2Ns{l;ycWE&>V#|u|;5%+{xIr z8q;qV_nV{9X{v*G)^9?!IUhQ3wK)YW*l4yd_tK>a3>Hq1-lCZb(yN>xFaKA! z|5a~Bh|_UrDc**WaeA(Uq=*M}det5#72>A2IDll_7w-W(Lc$8}8YQk`d3J;pyX$1!AUq*FWbiAtI^BL%mEd%HESkV^ zGbj1Eikb?yr@ADxs*?E|wrwwWdz_wH;W4!j;xdO7+Ofvb$kyeDqubU-<#U9Kg!6<; z1d%|qwkQKv3{%026KM;e5B2F?@D!h=yU;Tyf)iFU@42`>qYL0B&d#*L7%t7MvX4_s z6rCX#(n#MTydz`~Vh9Gp2Zr~wS|4#D(*UEW$#TLlR%h*nPdJ_Bf=P5ODuAzeeUWR| zcM9fF8=WnzVqlY!CMwHZUR+SXLee;1 zP`{Tzs~))Sr4$P2*QAw!#K=q{H&7j=!q`mpElw>?Hqhb({%Sv|SA;hN8nN&h^RsQR e5o@z|!fE`TT?)NeloJb`Sevs(r3srCzVH{ek0jUt diff --git a/src/utils/base/base.py b/src/utils/base/base.py index fdb3c5a..1029b54 100644 --- a/src/utils/base/base.py +++ b/src/utils/base/base.py @@ -254,6 +254,9 @@ class BaseController(QObject): def push_settings(self, settings: list[dict]) -> None: ... + + def open_custom_file (self, filepath: str) -> None: + ... class BaseIdealDataBuilder(OptAlgorithm):