Source code for pyleecan.GUI.Dialog.DMachineSetup.SLamParam.DAVDuct.WVent.WVent

# -*- coding: utf-8 -*-


from PySide2.QtCore import Signal
from PySide2.QtWidgets import QMessageBox, QWidget

from .......Classes.VentilationCirc import VentilationCirc
from .......Classes.VentilationPolar import VentilationPolar
from .......Classes.VentilationTrap import VentilationTrap
from .......GUI.Dialog.DMachineSetup.SLamParam.DAVDuct.PVentCirc.PVentCirc import (
    PVentCirc,
)
from .......GUI.Dialog.DMachineSetup.SLamParam.DAVDuct.PVentPolar.PVentPolar import (
    PVentPolar,
)
from .......GUI.Dialog.DMachineSetup.SLamParam.DAVDuct.PVentTrap.PVentTrap import (
    PVentTrap,
)
from .......GUI.Dialog.DMachineSetup.SLamParam.DAVDuct.WVent.Ui_WVent import Ui_WVent

# List to convert index of combobox to slot type
INIT_INDEX = [VentilationCirc, VentilationTrap, VentilationPolar]
PAGE_INDEX = [PVentCirc, PVentTrap, PVentPolar]


[docs]class WVent(Ui_WVent, QWidget): """Widget to setup a Ventilation in the list""" # Signal to DMachineSetup to know that the save popup is needed saveNeeded = Signal() def __init__(self, lam, index): """Initialize the widget according the current lamination Parameters ---------- self : WVent A WVent widget lam : Lamination current lamination to edit index : int Index of the ventilation in the list to update """ # Build the interface according to the .ui file QWidget.__init__(self) self.setupUi(self) self.obj = lam self.index = index # Avoid erase all the parameters when navigating though the vents self.previous_vent = dict() for vent_type in INIT_INDEX: self.previous_vent[vent_type] = None self.c_vent_type.setCurrentIndex(INIT_INDEX.index(type(lam.axial_vent[index]))) # Regenerate the pages with the new values self.w_vent.setParent(None) self.w_vent = PAGE_INDEX[self.c_vent_type.currentIndex()]( lam=lam, vent=lam.axial_vent[index] ) # Refresh the GUI self.main_layout.removeWidget(self.w_vent) self.main_layout.insertWidget(1, self.w_vent) # Connect the slot/signel self.c_vent_type.currentIndexChanged.connect(self.set_vent_type)
[docs] def set_vent_type(self, c_index): """Initialize self.obj with the vent corresponding to index Parameters ---------- self : WVent A WVent object c_index : index Index of the selected vent type in the combobox """ # Save the vent vent = self.obj.axial_vent[self.index] self.previous_vent[type(vent)] = vent # Call the corresponding constructor if self.previous_vent[INIT_INDEX[c_index]] is None: # No previous vent of this type self.obj.axial_vent[self.index] = INIT_INDEX[c_index]() self.obj.axial_vent[self.index]._set_None() # No default value else: # Load the previous vent of this type self.obj.axial_vent[self.index] = self.previous_vent[INIT_INDEX[c_index]] # Update the GUI self.w_vent.setParent(None) self.w_vent = PAGE_INDEX[c_index]( lam=self.obj, vent=self.obj.axial_vent[self.index] ) # Refresh the GUI self.main_layout.removeWidget(self.w_vent) self.main_layout.insertWidget(1, self.w_vent) # Notify the machine GUI that the machine has changed self.saveNeeded.emit()
[docs] def check(self): """Check that the current machine have all the needed field set Parameters ---------- self : WVent A WVent object Returns ------- error : str Error message (return None if no error) """ return self.w_vent.check()