Пример #1
0
class withWidgets():
    '''
    Todos Metodos aqui sao para o auxilio caso queria trabalhar com model com Mappers
    '''
          
    def setMapper(self, model=None, fldToMap=None):
            """
            Metodo para configurar o mapper ao modelo
            
            modelo = Modelo
            fldToMap = Campos para mappear
            """
            self.mapper = QDataWidgetMapper()# cria objecto Mapper
            self.mapper.setModel(model) #Define modelo ao mapper
            for cidx, field in enumerate(fldToMap):#Para cada campo
                if field is not None: #Verdicacao
                    self.mapper.addMapping(field, cidx)#Atribuimos ao mapping
            self.mapper.toFirst()#e movemos para o primeiro(obrigatorio)
           
    def mapperToNext(self):
        self.mapper.toNext()#Proxima linha 
    
    
    def mapperToPerv(self):
        self.mapper.toPrevious()#Linha previa
    
    
    def getCurrentIndex(self):
        cIdx = self.mapper.currentIndex()#Get Current Index
        return cIdx
    
    
    def getValueFromMapper(self, pos=0):
        try:
            val = self.mapper.model().record(self.mapper.currentIndex()).value(0) #Get the value from the mapper
            row = self.mapper.currentIndex() #Get the current row or index
        except Exception:
            row = None
            val = None 
        return val, row
    
    
    def sychClickWithMap(self,indexModel=None):
            self.mapper.setCurrentModelIndex(indexModel) #Scncy clicked object with mapper
    
    
    def setMapperToIdx(self, idx):      
        self.mapper.setCurrentIndex(idx)#Set Current index to row or index
Пример #2
0
class ServerConfigurationEditor(QWidget):
    currentConfigChanged = pyqtSignal(object)
    saved = pyqtSignal()

    def __init__(self, connectionFactory, parent=None) -> None:
        super().__init__(parent)
        self._srv_list = ServerListWidget()
        self._srv_form = ServerConfigForm(connectionFactory)
        self._workflow = ServerFormWorkflow(self._srv_form)
        self._model = None
        layout = QVBoxLayout(self)
        layout.addWidget(self._srv_list)
        layout.addWidget(self._srv_form)

    def selectServer(self, serverId):
        self._srv_list.selectServer(serverId)

    def _selectedServer(self, idx):
        data = self._model.index(idx).data(role=Qt.EditRole)
        self.currentConfigChanged.emit(data)

    def currentServerId(self):
        return self._srv_list.currentServerId()

    def setModel(self, model):
        self._model = model
        self._srv_list.setModel(model)

        self._mapper = QDataWidgetMapper(self)
        self._mapper.setModel(model)
        self._mapper.setItemDelegate(ServerFormItemDelegate(self))
        self._mapper.addMapping(self._srv_form, 1)
        self._mapper.currentIndexChanged.connect(self._workflow.restart)
        self._mapper.setCurrentIndex(self._srv_list.currentIndex())

        self._mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)
        self._srv_form.saveBtn.clicked.connect(self._mapper.submit)
        self._srv_form.saveBtn.clicked.connect(self.saved)

        self._srv_list.currentIndexChanged.connect(
            self._mapper.setCurrentIndex)
        self._srv_list.currentIndexChanged.connect(self._selectedServer)
Пример #3
0
class withWidgets():
    def setMapper(self, model=None, fldToMap=None):
        """
            Metodo para configurar o mapper.
            """
        self.mapper = QDataWidgetMapper()
        self.mapper.setModel(model)
        for cidx, field in enumerate(fldToMap):
            if field is not None:
                self.mapper.addMapping(field, cidx)
        self.mapper.toFirst()

    def mapperToNext(self):
        self.mapper.toNext()

    def mapperToPerv(self):
        self.mapper.toPrevious()

    def getCurrentIndex(self):
        cIdx = self.mapper.currentIndex()
        return cIdx

    def getValueFromMapper(self, pos=0):
        try:
            val = self.mapper.model().record(
                self.mapper.currentIndex()).value(0)
            row = self.mapper.currentIndex()
        except Exception:
            row = None
            val = None
        return val, row

    def sychClickWithMap(self, indexModel=None):
        self.mapper.setCurrentModelIndex(indexModel)

    def setMapperToIdx(self, idx):
        self.mapper.setCurrentIndex(idx)
Пример #4
0
class SimpleModel():
    def __init__(self, dbcon=None, tblName=None, dictField=None):
        super(SimpleModel, self).__init__()
        self.tblName = tblName
        self.dicFields = dictField

    def setModel(self):
        '''
        Metodo para Configurar o SQLTABLEMODEL, para uma determina tabela na base de dados
        caso se a configuracao seja bem feita e devolvido um true e caso contrario e devolvido um 
        False e a mensagem de erro.
        '''
        bOK = False
        self.model = QSqlTableModel()
        self.model.setTable(self.tblName)
        self.model.sort(0, Qt.AscendingOrder)
        bOK = self.model.select()
        if bOK:
            return bOK
        else:
            msg.error(txt='Error Nao Foi possivel Configurar o model',
                      verbTxt=self.model.lastError().text())
            return bOK

    def setModelInView(self, tblView=None):
        '''
        Metodo para atribuir um Modelo a table View
        '''
        tblView.setModel(self.model)

    def setMapper(self):
        '''
        Metodo para configuara o mappper, onde iremos atribuir ao mapper um model e widgets para 
        podermos mapper a informacao no modelo,  mudaremos o tipo de submitPocalicy para manual para
        que so se atualize os campos com clickar do um botao atualizar
        '''
        self.mapper = QDataWidgetMapper()
        self.mapper.setModel(self.model)
        for idx, val in enumerate(self.dicFields['fldWidget']):
            self.mapper.addMapping(
                val, self.model.fieldIndex(self.dicFields['fldName'][idx]))
        self.mapper.setSubmitPolicy(self.mapper.ManualSubmit)
        self.mapper.toFirst()

    def setTblMapper(self, indexModel=None):
        '''
        Metodo para scronizar o click do TableView com os dados do mapper isto e
        para quando se selecionar um elemento na tabela, ser esse que ira aparecer no 
        widgets mapeados.
        '''
        currentModel = indexModel.model()
        clickedRow = indexModel.row()
        self.mapper.setCurrentModelIndex(indexModel)
        for i in range(len(self.dicFields['fldName'])):
            currentModel.index(clickedRow, i)

    def addData(self):
        '''
        Metodo para prepara a modelo e mapper para inserir um novo 
        elemento.
        '''
        row = self.model.rowCount()
        bOK = self.model.insertRow(row)
        self.mapper.setCurrentIndex(row)
        if bOK:
            return bOK
        else:
            msg.error(
                txt=
                'Error Nao Foi possivel Configurar o model para a insercao de um novo elemento.',
                verbTxt=self.model.lastError().text())
            return bOK

    def insertData(self, lstVal):
        '''
        Metodo para inserir novos dados na base de dados, 
        primeiro configura os tipos de compos depois leva os valores 
        da lista de valores e por fim executa e se a insercao for bem succedida 
        e envida retorna verdade caso contrario retorn falso e menssagem com erro
        '''
        insertRecord = QSqlRecord()
        for idx, val in enumerate(self.dicFields['fldName']):
            insertRecord.append(QSqlField(val, self.dicFields['fldType'][idx]))
        for indx, val in enumerate(lstVal):
            insertRecord.setValue(indx, val)
        bOK = self.model.insertRowIntoTable(insertRecord)
        if bOK:
            msg.inserted()
            self.model.select()
            return bOK
        else:
            msg.error(txt='Error Nao Foi possivel Inserir o novo elemento.',
                      verbTxt=self.model.lastError().text())
            return bOK

    def saveChange(self):
        '''
        Metodo para Atulizar os dados editados, caso or bem succedida 
        e envida retorna verdade caso contrario retorn falso e menssagem com erro
        '''
        bOK = self.mapper.submit()
        if bOK:
            msg.updated(txt='Dados Atulizados Com sucessos')
            self.model.select()
            return bOK
        else:
            msg.error(txt='Error Nao Foi possivel Atualizar o elemento .',
                      verbTxt=self.model.lastError().text())
            return bOK