# -*- 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 ConfigureAddSolverWindow(ASubWindow): def __init__(self, data=None, title="Configuration : Add Solver", parent=None): super(ConfigureAddSolverWindow, 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.get_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( "Add solver", "A solver need a name", "Please give a name to your solver" ) else: self.data = GenericSolver(self.get_line_edit_text("lineEdit_name")) self.data.set_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)