ConfigureAddSolverWindow.py 2.87 KiB
# -*- coding: utf-8 -*-

from view.ASubWindow import ASubWindow
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
        self.combobox_add_item("comboBox_solver", "Generic")
        self.combobox_add_item("comboBox_solver", "Mage")
        self.combobox_add_item("comboBox_solver", "Rubarbe")

        # 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):
        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)