コード例 #1
0
ファイル: dijalog_uredjaj.py プロジェクト: vmilic/umjeravanje
    def __init__(self, dokument=None, parent=None):
        super(BASE_DIJALOG_UREDJAJ, self).__init__(parent)
        self.setupUi(self)
        tegla = pickle.loads(dokument)
        self.doc = tegla

        self.listaMetoda = self.doc.get_listu_analitickih_metoda()
        self.comboBoxMetoda.addItems(self.listaMetoda)

        self.aktivniUredjaj = None
        self.pushButtonIzbrisiUredjaj.setEnabled(False)
        self.enable_edit_widgets(check=False)

        self.model = ListModelUredjaj(dokument=tegla)
        self.listViewUredjaj.setModel(self.model)

        self.modelKomponenti = TableModelKomponente(dokument=tegla, uredjaj=self.aktivniUredjaj)
        self.tableViewKomponente.setModel(self.modelKomponenti)

        ### Setup signala i slotova ###
        self.setup_signal_connections()
コード例 #2
0
ファイル: dijalog_uredjaj.py プロジェクト: vmilic/umjeravanje
class DijalogUredjaj(BASE_DIJALOG_UREDJAJ, FORM_DIJALOG_UREDJAJ):
    """
    Dijalog za editiranje uredjaja...
    """
    def __init__(self, dokument=None, parent=None):
        super(BASE_DIJALOG_UREDJAJ, self).__init__(parent)
        self.setupUi(self)
        tegla = pickle.loads(dokument)
        self.doc = tegla

        self.listaMetoda = self.doc.get_listu_analitickih_metoda()
        self.comboBoxMetoda.addItems(self.listaMetoda)

        self.aktivniUredjaj = None
        self.pushButtonIzbrisiUredjaj.setEnabled(False)
        self.enable_edit_widgets(check=False)

        self.model = ListModelUredjaj(dokument=tegla)
        self.listViewUredjaj.setModel(self.model)

        self.modelKomponenti = TableModelKomponente(dokument=tegla, uredjaj=self.aktivniUredjaj)
        self.tableViewKomponente.setModel(self.modelKomponenti)

        ### 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.listViewUredjaj.clicked.connect(self.select_aktivni_uredjaj)
        self.pushButtonDodajUredjaj.clicked.connect(self.add_uredjaj)
        self.pushButtonIzbrisiUredjaj.clicked.connect(self.remove_uredjaj)
        self.lineEditProizvodjac.textChanged.connect(self.edit_proizvodjac_uredjaj)
        self.lineEditOznakaModela.textChanged.connect(self.edit_oznakaModela_uredjaj)
        self.lineEditLokacija.textChanged.connect(self.edit_lokacija_uredjaj)
        self.comboBoxMetoda.currentIndexChanged.connect(self.promjena_metode)
        self.pushButtonDodajKomponentu.clicked.connect(self.dodaj_komponentu_uredjaju)
        self.pushButtonIzbrisiKomponentu.clicked.connect(self.remove_komponentu_uredjaju)

    def dodaj_komponentu_uredjaju(self):
        """Dodavanje komponente uredjaju."""
        lista = self.doc.get_listu_komponenti()
        formula, ok = QtGui.QInputDialog.getItem(self,
                                                 'Izbor komponente',
                                                 'Formula :',
                                                 lista,
                                                 editable=False)
        if ok:
            komponenta = self.doc.get_komponentu(formula)
            self.doc.get_uredjaj(self.aktivniUredjaj).dodaj_komponentu(komponenta)
            self.modelKomponenti.set_uredjaj(self.aktivniUredjaj)

    def remove_komponentu_uredjaju(self):
        """Brisanje komponente iz uredjaja."""
        selected = self.tableViewKomponente.selectedIndexes()
        if selected:
            red = selected[0].row()
            formula = self.modelKomponenti.get_formula(red)
            self.doc.get_uredjaj(self.aktivniUredjaj).izbrisi_komponentu(formula)
            self.modelKomponenti.set_uredjaj(self.aktivniUredjaj)

    def update_info_metode(self, idmetode):
        """Funkcija updatea prikaz vrijednosti parametara (Srz...) za izabranu
        metodu. Ulazni parametar je 'id' analiticke metode."""
        metoda = self.doc.get_analiticku_metodu(idmetode)
        self.labelID.setText(metoda.get_ID())
        self.labelMjernaJedinica.setText(metoda.get_jedinica())
        self.labelNaziv.setText(metoda.get_naziv())
        self.labelNorma.setText(metoda.get_norma())
        self.labelSrs.setText(str(metoda.get_Srs()))
        self.labelSrz.setText(str(metoda.get_Srz()))
        self.labelO.setText(str(metoda.get_o()))
        self.labelRmax.setText(str(metoda.get_rmax()))
        self.labelRz.setText(str(metoda.get_rz()))
        self.labelTr.setText(str(metoda.get_tr()))
        self.labelTf.setText(str(metoda.get_tf()))
        self.labelEcmin.setText(str(metoda.get_Ec_min()))
        self.labelEcmax.setText(str(metoda.get_Ec_max()))

    def promjena_metode(self, i):
        """Callback za promjenu vrijednosti comboboxa za izbor metode"""
        idmetode = self.comboBoxMetoda.currentText()
        self.update_info_metode(idmetode)
        #update uredjaj sa novom metodom
        ure = self.doc.get_uredjaj(self.aktivniUredjaj)
        met = self.doc.get_analiticku_metodu(idmetode)
        ure.set_analitickaMetoda(met)

    def edit_proizvodjac_uredjaj(self, value):
        """callback za edit proizvodjaca uredjaja"""
        try:
            value = str(value)
            ure = self.doc.get_uredjaj(self.aktivniUredjaj)
            ure.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_oznakaModela_uredjaj(self, value):
        """callback za edit oznake modela uredjaja"""
        try:
            value = str(value)
            ure = self.doc.get_uredjaj(self.aktivniUredjaj)
            ure.set_oznakaModela(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def edit_lokacija_uredjaj(self, value):
        """callback za edit lokacije uredjaja"""
        try:
            value = str(value)
            ure = self.doc.get_uredjaj(self.aktivniUredjaj)
            ure.set_lokacija(value)
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def add_uredjaj(self):
        """Metoda dodaje novi uredjaj u dokument."""
        naziv, ok = QtGui.QInputDialog.getText(self,
                                               'Izbor naziva uredjaja',
                                               'Naziv : ')
        if ok:
            naziv = str(naziv)
            if len(naziv) == 0:
                msg = 'Naziv uredjaja nije zadan.'
                QtGui.QMessageBox.information(self, 'Problem', msg)
            elif naziv in self.doc.get_listu_dilucijskih_jedinica():
                msg = 'Uredjaj istog naziva vec postoji.'
                QtGui.QMessageBox.information(self, 'Problem', msg)
            else:
                ure = Uredjaj(serial=naziv)
                try:
                    popis = self.doc.get_listu_analitickih_metoda()
                    met = self.doc.get_analiticku_metodu(popis[0])
                    ure.set_analitickaMetoda(met)
                except Exception as err:
                    logging.warning(str(err), exc_info=True)
                self.doc.dodaj_uredjaj(naziv, ure)
                self.listViewUredjaj.clearSelection()
                self.aktivniUredjaj = None
                self.pushButtonIzbrisiUredjaj.setEnabled(False)
                self.enable_edit_widgets(check=False)
                self.model.refresh_model()

    def remove_uredjaj(self):
        """Metoda brise selektirani uredjaj iz dokumenta."""
        if self.aktivniUredjaj != None:
            self.doc.remove_uredjaj(self.aktivniUredjaj)
            self.listViewUredjaj.clearSelection()
            self.aktivniUredjaj = None
            self.pushButtonIzbrisiUredjaj.setEnabled(False)
            self.enable_edit_widgets(check=False)
            self.model.refresh_model()

    def select_aktivni_uredjaj(self, x):
        """
        Callback za izbor uredjaja sa liste
        """

        value = self.model.data(x, QtCore.Qt.DisplayRole)
        self.aktivniUredjaj = value
        self.pushButtonIzbrisiUredjaj.setEnabled(True)
        self.enable_edit_widgets(check=True)
        try:
            #komponente
            self.tableViewKomponente.clearSelection()
            self.modelKomponenti.set_uredjaj(self.aktivniUredjaj)
            self.tableViewKomponente.update()
            #postavke
            ure = self.doc.get_uredjaj(self.aktivniUredjaj)
            self.block_edit_signals(check=True)
            self.labelSerijskiBroj.setText(ure.get_serial())
            self.lineEditProizvodjac.setText(ure.get_proizvodjac())
            self.lineEditOznakaModela.setText(ure.get_oznakaModela())
            self.lineEditLokacija.setText(ure.get_lokacija())
            self.block_edit_signals(check=False)
            #metoda
            metoda = ure.get_analitickaMetoda()
            idmetode = metoda.get_ID()
            self.comboBoxMetoda.setCurrentIndex(self.comboBoxMetoda.findText(idmetode))
        except Exception as err:
            logging.warning(str(err), exc_info=True)
            QtGui.QMessageBox.warning(self, 'Pogreska pri radu', str(err))

    def enable_edit_widgets(self, check=True):
        """
        Metoda sluzi za enable ili disable edit widgeta za postavke uredjaja
        """
        x = bool(check)
        self.lineEditProizvodjac.setEnabled(x)
        self.lineEditOznakaModela.setEnabled(x)
        self.lineEditLokacija.setEnabled(x)
        self.pushButtonDodajKomponentu.setEnabled(x)
        self.pushButtonIzbrisiKomponentu.setEnabled(x)
        self.tableViewKomponente.setEnabled(x)
        self.comboBoxMetoda.setEnabled(x)

    def block_edit_signals(self, check=True):
        """
        Metoda sluzi za block ili unblock edit signala za postavke uredjaja.
        """
        x = bool(check)
        self.lineEditProizvodjac.blockSignals(x)
        self.lineEditOznakaModela.blockSignals(x)
        self.lineEditLokacija.blockSignals(x)
        self.pushButtonDodajKomponentu.blockSignals(x)
        self.pushButtonIzbrisiKomponentu.blockSignals(x)