Example #1
0
    def __init__(self, dokument=None, parent=None):
        super(BASE_DIJALOG_CISTIZRAK, self).__init__(parent)
        self.setupUi(self)
        #instanca dokumenta
        tegla = pickle.loads(dokument)
        self.doc = tegla #TODO!
        self.aktivniZrak = None #string kljuca
        self.pushButtonIzbrisi.setEnabled(False)
        self.enable_edit_widgets(check=False)
        #popunjavanje dijaloga za dodavanje dilucijskih jedinica
        self.model = ListModelCistiZrak(dokument=tegla)
        self.listViewCistiZrak.setModel(self.model)

        ### Setup signala i slotova ###
        self.setup_signal_connections()
Example #2
0
class DijalogCistiZrak(BASE_DIJALOG_CISTIZRAK, FORM_DIJALOG_CISTIZRAK):
    """
    Gui element glavnog prozora
    """
    def __init__(self, dokument=None, parent=None):
        super(BASE_DIJALOG_CISTIZRAK, self).__init__(parent)
        self.setupUi(self)
        #instanca dokumenta
        tegla = pickle.loads(dokument)
        self.doc = tegla #TODO!
        self.aktivniZrak = None #string kljuca
        self.pushButtonIzbrisi.setEnabled(False)
        self.enable_edit_widgets(check=False)
        #popunjavanje dijaloga za dodavanje dilucijskih jedinica
        self.model = ListModelCistiZrak(dokument=tegla)
        self.listViewCistiZrak.setModel(self.model)

        ### Setup signala i slotova ###
        self.setup_signal_connections()

    def get_dokument(self):
        tegla = pickle.dumps(self.doc)
        return tegla

    def setup_signal_connections(self):
        self.listViewCistiZrak.clicked.connect(self.select_aktivni_zrak)
        self.pushButtonDodaj.clicked.connect(self.add_zrak)
        self.pushButtonIzbrisi.clicked.connect(self.remove_zrak)
        self.lineEditModel.textChanged.connect(self.edit_model_zrak)
        self.lineEditProizvodjac.textChanged.connect(self.edit_proizvodjac_zrak)
        self.doubleSpinBoxSO2.valueChanged.connect(self.edit_SO2_zrak)
        self.doubleSpinBoxNOx.valueChanged.connect(self.edit_NOx_zrak)
        self.doubleSpinBoxCO.valueChanged.connect(self.edit_CO_zrak)
        self.doubleSpinBoxO3.valueChanged.connect(self.edit_O3_zrak)
        self.doubleSpinBoxBTX.valueChanged.connect(self.edit_BTX_zrak)

    def add_zrak(self):
        """Metoda dodaje novi generator cistog zraka u dokument."""
        naziv, ok = QtGui.QInputDialog.getText(self,
                                               'Izbor naziva generatora cistog zraka',
                                               'Naziv : ')
        if ok:
            naziv = str(naziv)
            if len(naziv) == 0:
                msg = 'Naziv generatora cistog zraka nije zadan.'
                QtGui.QMessageBox.information(self, 'Problem', msg)
            elif naziv in self.doc.get_listu_dilucijskih_jedinica():
                msg = 'Generator cistog zraka istog naziva vec postoji.'
                QtGui.QMessageBox.information(self, 'Problem', msg)
            else:
                zrak = GeneratorCistogZraka(model=naziv)
                self.doc.set_cistiZrak(naziv, zrak)
                self.listViewCistiZrak.clearSelection()
                self.aktivniZrak = None
                self.pushButtonIzbrisi.setEnabled(False)
                self.enable_edit_widgets(check=False)
                self.model.refresh_model()

    def remove_zrak(self):
        """Metoda brise selektirani generator cistog zraka iz dokumenta."""
        if self.aktivniZrak != None:
            self.doc.remove_cistiZrak(self.aktivniZrak)
            self.listViewCistiZrak.clearSelection()
            self.aktivniZrak = None
            self.pushButtonIzbrisi.setEnabled(False)
            self.enable_edit_widgets(check=False)
            self.model.refresh_model()

    def edit_model_zrak(self, x):
        """Callback za promjenu naziva modela generatora cistog zraka."""
        try:
            value = str(x)
            zrak = self.doc.get_cistiZrak(self.aktivniZrak)
            zrak.set_model(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_proizvodjac_zrak(self, x):
        """Callback za promjenu naziva proizvodjaca generatora cistog zraka."""
        try:
            value = str(x)
            zrak = self.doc.get_cistiZrak(self.aktivniZrak)
            zrak.set_proizvodjac(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_SO2_zrak(self, x):
        """Callback za promjenu naziva maxSO2 generatora cistog zraka."""
        try:
            value = float(x)
            zrak = self.doc.get_cistiZrak(self.aktivniZrak)
            zrak.set_maxSO2(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_NOx_zrak(self, x):
        """Callback za promjenu naziva maxNOx generatora cistog zraka."""
        try:
            value = float(x)
            zrak = self.doc.get_cistiZrak(self.aktivniZrak)
            zrak.set_maxNOx(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_CO_zrak(self, x):
        """Callback za promjenu naziva maxCO generatora cistog zraka."""
        try:
            value = float(x)
            zrak = self.doc.get_cistiZrak(self.aktivniZrak)
            zrak.set_maxCO(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_O3_zrak(self, x):
        """Callback za promjenu naziva maxO3 generatora cistog zraka."""
        try:
            value = float(x)
            zrak = self.doc.get_cistiZrak(self.aktivniZrak)
            zrak.set_maxO3(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_BTX_zrak(self, x):
        """Callback za promjenu naziva maxBTX generatora cistog zraka."""
        try:
            value = float(x)
            zrak = self.doc.get_cistiZrak(self.aktivniZrak)
            zrak.set_maxBTX(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))


    def select_aktivni_zrak(self, x):
        """
        Callback za izbor generatora cistog zraka sa liste
        """
        value = self.model.data(x, QtCore.Qt.DisplayRole)
        self.aktivniZrak = value
        self.pushButtonIzbrisi.setEnabled(True)
        self.enable_edit_widgets(check=True)
        self.set_podatke_zraka()

    def set_podatke_zraka(self):
        """
        setter stanja izabranog generatora cistog zraka.
        """
        #block signale za editiranje postavki
        self.block_edit_signals(check=True)
        try:
            zrak = self.doc.get_cistiZrak(self.aktivniZrak)
            self.lineEditModel.setText(zrak.get_model())
            self.lineEditProizvodjac.setText(zrak.get_proizvodjac())
            self.doubleSpinBoxSO2.setValue(zrak.get_maxSO2())
            self.doubleSpinBoxNOx.setValue(zrak.get_maxNOx())
            self.doubleSpinBoxCO.setValue(zrak.get_maxCO())
            self.doubleSpinBoxO3.setValue(zrak.get_maxO3())
            self.doubleSpinBoxBTX.setValue(zrak.get_maxBTX())
        except Exception as err:
            logging.error(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))
            self.lineEditModel.setText('n/a')
            self.lineEditProizvodjac.setText('n/a')
            self.doubleSpinBoxSO2.setValue(0.0)
            self.doubleSpinBoxNOx.setValue(0.0)
            self.doubleSpinBoxCO.setValue(0.0)
            self.doubleSpinBoxO3.setValue(0.0)
            self.doubleSpinBoxBTX.setValue(0.0)
        #unblock signale za editiranje postavki
        self.block_edit_signals(check=False)

    def enable_edit_widgets(self, check=True):
        """
        Metoda sluzi za enable ili disable edit widgeta za postavke generatora cistog zraka.
        """
        x = bool(check)
        self.lineEditModel.setEnabled(x)
        self.lineEditProizvodjac.setEnabled(x)
        self.doubleSpinBoxSO2.setEnabled(x)
        self.doubleSpinBoxNOx.setEnabled(x)
        self.doubleSpinBoxCO.setEnabled(x)
        self.doubleSpinBoxO3.setEnabled(x)
        self.doubleSpinBoxBTX.setEnabled(x)

    def block_edit_signals(self, check=True):
        """
        Metoda sluzi za block ili unblock edit signala za postavke generatora cistog zraka.
        """
        x = bool(check)
        self.lineEditModel.blockSignals(x)
        self.lineEditProizvodjac.blockSignals(x)
        self.doubleSpinBoxSO2.blockSignals(x)
        self.doubleSpinBoxNOx.blockSignals(x)
        self.doubleSpinBoxCO.blockSignals(x)
        self.doubleSpinBoxO3.blockSignals(x)
        self.doubleSpinBoxBTX.blockSignals(x)