Esempio n. 1
0
    def __init__(self, dokument=None, parent=None):
        super(BASE_DIJALOG_KOMPONENTE, self).__init__(parent)
        self.setupUi(self)
        tegla = pickle.loads(dokument)
        self.doc = tegla

        self.aktivnaKomponenta = None

        self.model = ListModelKomponente(dokument=tegla)
        self.listViewKomponente.setModel(self.model)

        ### Setup signala i slotova ###
        self.setup_signal_connections()
Esempio n. 2
0
class DijalogKomponenta(BASE_DIJALOG_KOMPONENTE, FORM_DIJALOG_KOMPONENTE):
    """
    Dijalog za pregled i dodavanje novih komponenti
    """
    def __init__(self, dokument=None, parent=None):
        super(BASE_DIJALOG_KOMPONENTE, self).__init__(parent)
        self.setupUi(self)
        tegla = pickle.loads(dokument)
        self.doc = tegla

        self.aktivnaKomponenta = None

        self.model = ListModelKomponente(dokument=tegla)
        self.listViewKomponente.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.listViewKomponente.clicked.connect(self.select_aktivnu_komponentu)
        self.pushButtonDodaj.clicked.connect(self.dodaj_komponentu_u_dokument)
        self.lineEditNaziv.textChanged.connect(self.edit_naziv)
        self.lineEditJedinica.textChanged.connect(self.edit_jedinica)
        self.doubleSpinBoxKv.valueChanged.connect(self.edit_kv)

    def edit_kv(self, x):
        """Callback za promjenu konverzijskog volumena komponente"""
        try:
            value = float(x)
            komponenta = self.doc.get_komponentu(self.aktivnaKomponenta)
            komponenta.set_kv(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_naziv(self, x):
        """Callback za promjenu naziva komponente."""
        try:
            value = str(x)
            komponenta = self.doc.get_komponentu(self.aktivnaKomponenta)
            komponenta.set_naziv(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_jedinica(self, x):
        """Callback za promjenu mjerne_jedinice komponente."""
        try:
            value = str(x)
            komponenta = self.doc.get_komponentu(self.aktivnaKomponenta)
            komponenta.set_jedinica(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def set_podatke_komponente(self):
        """
        Setter stanja dilucijske jedinice u gui za izabranu analiticku metodu.
        """
        #block signale za editiranje postavki
        self.block_edit_signals(check=True)
        try:
            komponenta = self.doc.get_komponentu(self.aktivnaKomponenta)
            self.labelFormula.setText(komponenta.get_formula())
            self.lineEditNaziv.setText(komponenta.get_naziv())
            self.lineEditJedinica.setText(komponenta.get_jedinica())
            self.doubleSpinBoxKv.setValue(komponenta.get_kv())
        except Exception as err:
            logging.error(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))
            self.lineEditNaziv.setText('n/a')
            self.lineEditFormula.setText('n/a')
            self.lineEditJedinica.setText('n/a')
            self.doubleSpinBoxKv.setValue(1.0)
        #unblock signale za editiranje postavki
        self.block_edit_signals(check=False)

    def select_aktivnu_komponentu(self, x):
        """callback za izbor metode iz liste"""
        key = self.model.vrati_kljuc_indeksa(x)
        self.aktivnaKomponenta = key
        self.enable_edit_widgets(check=True)
        self.set_podatke_komponente()
        self.model.layoutChanged.emit()

    def dodaj_komponentu_u_dokument(self):
        """dodavanje nove komponente"""
        formula, ok = QtGui.QInputDialog.getText(self,
                                                 'Izbor formule komponente',
                                                 'Formula : ')
        if ok:
            formula = str(formula)
            if formula in self.doc.get_listu_komponenti():
                QtGui.QMessageBox.warning(self, 'Upozorenje', 'Komponenta sa istom formulom vec postoji.')
                return None
            elif len(formula) == 0:
                QtGui.QMessageBox.warning(self, 'Upozorenje', 'Formula nije zadana.')
            else:
                komp = Komponenta(formula=formula)
                self.doc.set_novu_komponentu(formula, komp)
                self.model.layoutChanged.emit()

    def enable_edit_widgets(self, check=True):
        """
        Metoda sluzi za enable ili disable edit widgeta za postavke metode.
        """
        x = bool(check)
        self.lineEditNaziv.setEnabled(x)
        self.lineEditJedinica.setEnabled(x)
        self.doubleSpinBoxKv.setEnabled(x)

    def block_edit_signals(self, check=True):
        """
        Metoda sluzi za block ili unblock edit signala za postavke metode.
        """
        x = bool(check)
        self.lineEditNaziv.blockSignals(x)
        self.lineEditJedinica.blockSignals(x)
        self.doubleSpinBoxKv.blockSignals(x)