# -*- coding: utf-8 -*- from View.ASubWindow import ASubWindow from Solver.Solvers import solver_type_list from Solver.GenericSolver import GenericSolver from PyQt5.QtWidgets import ( QPushButton, ) class ConfigureSolverWindow(ASubWindow): def __init__(self, data=None, title="Configuration : Add Solver", parent=None): super(ConfigureSolverWindow, self).__init__( name=title, ui="ConfigureAddSolverDialog", parent=parent ) self.ui.setWindowTitle(title) # Combo box item for solver in solver_type_list: self.combobox_add_item("comboBox_solver", solver) # Data to return self.data = data if not self.data is None: self.copy_data() self.connect() def copy_data(self): self.set_combobox_text("comboBox_solver", self.data.type) self.set_line_edit_text("lineEdit_name", self.data.name) self.set_line_edit_text("lineEdit_description", self.data.description) self.set_line_edit_text("lineEdit_input", self.data._path_input) self.set_line_edit_text("lineEdit_input_cmd", self.data._cmd_input) self.set_line_edit_text("lineEdit_solver", self.data._path_solver) self.set_line_edit_text("lineEdit_solver_cmd", self.data._cmd_solver) self.set_line_edit_text("lineEdit_output", self.data._path_output) self.set_line_edit_text("lineEdit_output_cmd", self.data._cmd_output) def connect(self): # File button buttons = { "pushButton_input": (lambda: self.file_dialog( select_file = True, callback = lambda f: self.set_line_edit_text("lineEdit_input", f[0]) )), "pushButton_solver": (lambda: self.file_dialog( select_file = True, callback = lambda f: self.set_line_edit_text("lineEdit_solver", f[0]) )), "pushButton_output": (lambda: self.file_dialog( select_file = True, callback = lambda f: self.set_line_edit_text("lineEdit_output", f[0]) )), } for button in buttons: self.find(QPushButton, button).clicked.connect(buttons[button]) def accept(self): if self.get_line_edit_text("lineEdit_name") == "": self.message_box( "A solver need a name", "Please give a name to your solver" ) else: # Build new solver from selected type stype = self.get_combobox_text("comboBox_solver") self.data = solver_type_list[stype](self.get_line_edit_text("lineEdit_name")) self.data.description = self.get_line_edit_text("lineEdit_description") self.data.set_input( self.get_line_edit_text("lineEdit_input"), self.get_line_edit_text("lineEdit_input_cmd") ) self.data.set_solver( self.get_line_edit_text("lineEdit_solver"), self.get_line_edit_text("lineEdit_solver_cmd") ) self.data.set_output( self.get_line_edit_text("lineEdit_output"), self.get_line_edit_text("lineEdit_output_cmd") ) self.done(True)