feature: добавлена кнопка для открытия любой папки для единовременной загрузки всех находящихся там файлов

This commit is contained in:
Andrew 2024-12-16 15:49:01 +03:00
parent 2294869130
commit d8f7b865b9
10 changed files with 27 additions and 2 deletions

View File

@ -8,9 +8,13 @@ class Controller(BaseController):
signal_widgets = pyqtSignal(list) signal_widgets = pyqtSignal(list)
signal_settings = pyqtSignal(list) signal_settings = pyqtSignal(list)
signal_monitor = pyqtSignal(str)
def send_widgets(self, widgets: list[QWidget]) -> None: def send_widgets(self, widgets: list[QWidget]) -> None:
self.signal_widgets.emit(widgets) self.signal_widgets.emit(widgets)
def push_settings(self, settings: list[dict]) -> None: def push_settings(self, settings: list[dict]) -> None:
self.signal_settings.emit(settings) self.signal_settings.emit(settings)
def open_custom_file (self, filepath: str) -> None:
self.signal_monitor.emit(filepath)

View File

@ -47,5 +47,9 @@ class DirectoryMonitor(BaseDirectoryMonitor):
else: else:
logger.info(f"Failed pushing {str(all_files)}") 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)

View File

@ -14,6 +14,7 @@ class MainWindow(BaseMainWindow):
self.initUI() self.initUI()
self.set_style(self) self.set_style(self)
self.settings_button.clicked.connect(self._show_settings) 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.operSettings = settingsWindow("params/operator_params.json", 'Operator', self._updater_trigger)
self.sysSettings = settingsWindow("params/system_params.json", 'System', 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) self.tabWidget.tabCloseRequested.connect(self._close_tab)
layout = QtWidgets.QVBoxLayout() layout = QtWidgets.QVBoxLayout()
layout.addWidget(self.tabWidget) layout.addWidget(self.tabWidget)
self.settings_button = QtWidgets.QPushButton("Show settings") self.settings_button = QtWidgets.QPushButton("Show settings")
self.settings_button.setFixedWidth(160) 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) self.setLayout(layout)
def show_plot_tabs(self, plot_widgets: list[QtWidgets.QWidget]) -> None: 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: def _close_tab(self, index:int) -> None:
self.tabWidget.removeTab(index) 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)

View File

@ -25,6 +25,7 @@ def main():
controller.signal_widgets.connect(window.show_plot_tabs) controller.signal_widgets.connect(window.show_plot_tabs)
controller.signal_settings.connect(mediator.push_settings) controller.signal_settings.connect(mediator.push_settings)
controller.signal_monitor.connect(monitor.custom_dir_extract)
window.push_settings() window.push_settings()

View File

@ -255,6 +255,9 @@ class BaseController(QObject):
def push_settings(self, settings: list[dict]) -> None: def push_settings(self, settings: list[dict]) -> None:
... ...
def open_custom_file (self, filepath: str) -> None:
...
class BaseIdealDataBuilder(OptAlgorithm): class BaseIdealDataBuilder(OptAlgorithm):