Exemplo n.º 1
0
 def __init__(self, dokument=None, parent=None):
     super(BASE_DIJALOG_DILUCIJA, self).__init__(parent)
     self.setupUi(self)
     #instanca dokumenta
     tegla = pickle.loads(dokument)
     self.doc = tegla
     self.aktivnaDilucija = None #string kljuca
     self.pushButtonIzbrisi.setEnabled(False)
     self.enable_edit_widgets(check=False)
     #popunjavanje dijaloga za dodavanje dilucijskih jedinica
     self.model = ListModelDilucija(dokument=tegla)
     self.listViewDilucija.setModel(self.model)
     ### Setup signala i slotova ###
     self.setup_signal_connections()
Exemplo n.º 2
0
class DijalogDilucija(BASE_DIJALOG_DILUCIJA, FORM_DIJALOG_DILUCIJA):
    """
    Gui element glavnog prozora
    """
    def __init__(self, dokument=None, parent=None):
        super(BASE_DIJALOG_DILUCIJA, self).__init__(parent)
        self.setupUi(self)
        #instanca dokumenta
        tegla = pickle.loads(dokument)
        self.doc = tegla
        self.aktivnaDilucija = None #string kljuca
        self.pushButtonIzbrisi.setEnabled(False)
        self.enable_edit_widgets(check=False)
        #popunjavanje dijaloga za dodavanje dilucijskih jedinica
        self.model = ListModelDilucija(dokument=tegla)
        self.listViewDilucija.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):
        """Definiranje interakcije widgeta (spajanje signala i slotova."""
        self.listViewDilucija.clicked.connect(self.select_aktivnu_diluciju)
        self.lineEditModel.textChanged.connect(self.edit_model_dilucije)
        self.lineEditProizvodjac.textChanged.connect(self.edit_proizvodjac_dilucije)
        self.doubleSpinBoxSljedivost.valueChanged.connect(self.edit_sljedivost_dilucije)
        self.doubleSpinBoxNul.valueChanged.connect(self.edit_uNul_dilucije)
        self.doubleSpinBoxKal.valueChanged.connect(self.edit_uKal_dilucije)
        self.doubleSpinBoxOzon.valueChanged.connect(self.edit_uO3_dilucije)
        self.pushButtonDodaj.clicked.connect(self.add_diluciju)
        self.pushButtonIzbrisi.clicked.connect(self.remove_diluciju)

    def add_diluciju(self):
        """Metoda dodaje novu dilucijsku jedinicu u dokument."""
        naziv, ok = QtGui.QInputDialog.getText(self,
                                               'Izbor naziva kalibracijske jedinice',
                                               'Naziv : ')
        if ok:
            naziv = str(naziv)
            if len(naziv) == 0:
                msg = 'Naziv kalibracijske jedinice nije zadan.'
                QtGui.QMessageBox.information(self, 'Problem', msg)
            elif naziv in self.doc.get_listu_dilucijskih_jedinica():
                msg = 'Kalibracijska jedinica istog naziva vec postoji.'
                QtGui.QMessageBox.information(self, 'Problem', msg)
            else:
                jedinica = DilucijskaJedinica(model=naziv)
                self.doc.set_diluciju(naziv, jedinica)
                self.listViewDilucija.clearSelection()
                self.aktivnaDilucija = None
                self.pushButtonIzbrisi.setEnabled(False)
                self.enable_edit_widgets(check=False)
                self.model.refresh_model()

    def remove_diluciju(self):
        """Metoda brise selektiranu dilucijsku jedinicu iz dokumenta."""
        if self.aktivnaDilucija != None:
            self.doc.remove_diluciju(self.aktivnaDilucija)
            self.listViewDilucija.clearSelection()
            self.aktivnaDilucija = None
            self.pushButtonIzbrisi.setEnabled(False)
            self.enable_edit_widgets(check=False)
            self.model.refresh_model()

    def edit_sljedivost_dilucije(self, value):
        """Callback za promjenu sljedivosti dilucijske jedinice."""
        try:
            value = float(value)
            dilucija = self.doc.get_diluciju(self.aktivnaDilucija)
            dilucija.set_sljedivost(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_model_dilucije(self, value):
        """Callback za promjenu naziva modela dilucijske jedinice."""
        try:
            value = str(value)
            dilucija = self.doc.get_diluciju(self.aktivnaDilucija)
            dilucija.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_dilucije(self, value):
        """Callback za promjenu proizvodjaca dilucijske jedinice."""
        try:
            value = str(value)
            dilucija = self.doc.get_diluciju(self.aktivnaDilucija)
            dilucija.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_uNul_dilucije(self, value):
        """Callback za promjenu U Nul plina dilucijske jedinice."""
        try:
            value = float(value)
            dilucija = self.doc.get_diluciju(self.aktivnaDilucija)
            dilucija.set_uNul(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_uKal_dilucije(self, value):
        """Callback za promjenu U Kal plina dilucijske jedinice."""
        try:
            value = float(value)
            dilucija = self.doc.get_diluciju(self.aktivnaDilucija)
            dilucija.set_uKal(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_uO3_dilucije(self, value):
        """Callback za promjenu U ozona dilucijske jedinice."""
        try:
            value = float(value)
            dilucija = self.doc.get_diluciju(self.aktivnaDilucija)
            dilucija.set_uO3(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def select_aktivnu_diluciju(self, x):
        """
        Callback za izbor dilucijske jedinice sa liste
        """
        value = self.model.data(x, QtCore.Qt.DisplayRole)
        self.aktivnaDilucija = value
        self.pushButtonIzbrisi.setEnabled(True)
        self.enable_edit_widgets(check=True)
        self.set_podatke_dilucije()
        self.model.layoutChanged.emit()

    def set_podatke_dilucije(self):
        """
        Setter stanja dilucijske jedinice u gui za izabranu dilucijsku jedinicu.
        """
        #block signale za editiranje postavki
        self.block_edit_signals(check=True)
        try:
            dilucija = self.doc.get_diluciju(self.aktivnaDilucija)
            self.lineEditModel.setText(dilucija.get_model())
            self.lineEditProizvodjac.setText(dilucija.get_proizvodjac())
            self.doubleSpinBoxNul.setValue(dilucija.get_uNul())
            self.doubleSpinBoxKal.setValue(dilucija.get_uKal())
            self.doubleSpinBoxOzon.setValue(dilucija.get_uO3())
            self.doubleSpinBoxSljedivost.setValue(dilucija.get_sljedivost())
        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.doubleSpinBoxNul.setValue(0.0)
            self.doubleSpinBoxKal.setValue(0.0)
            self.doubleSpinBoxOzon.setValue(0.0)
            self.doubleSpinBoxSljedivost.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 jedinice
        """
        x = bool(check)
        self.lineEditModel.setEnabled(x)
        self.lineEditProizvodjac.setEnabled(x)
        self.doubleSpinBoxNul.setEnabled(x)
        self.doubleSpinBoxKal.setEnabled(x)
        self.doubleSpinBoxOzon.setEnabled(x)
        self.doubleSpinBoxSljedivost.setEnabled(x)

    def block_edit_signals(self, check=True):
        """
        Metoda sluzi za block ili unblock edit signala za postavke jedinice.
        """
        x = bool(check)
        self.lineEditModel.blockSignals(x)
        self.lineEditProizvodjac.blockSignals(x)
        self.doubleSpinBoxNul.blockSignals(x)
        self.doubleSpinBoxKal.blockSignals(x)
        self.doubleSpinBoxOzon.blockSignals(x)
        self.doubleSpinBoxSljedivost.blockSignals(x)