示例#1
0
    def definePropriedades(self):
        self.log.adiciona("Definindo Propriedades")

        self.mapper = Mapper()

        self.setWindowIcon(QtGui.QIcon('img/icone.png'))

        self.optMySql.setIcon(QtGui.QIcon('img/mysql-icon.png'))
        self.optPostgres.setIcon(QtGui.QIcon('img/postgres-icon.png'))

        #Define a janela como não-redimensionnável
        #self.setFixedSize(self.width(), self.height())

        # self.txtLog.setEnabled(False)

        #define parametros de conexao
        self.txtServidor.setText('127.0.0.1')
        self.txtUsuario.setText('root')
        self.txtSenha.setText('ericktm')
        self.txtBanco.setText('imovel_banco')

        #Força a exibição da primeira aba ao abrir
        self.tabs.setCurrentIndex(0)
        self.tblAtributes.setRowCount(100)
        self.showMaximized()
示例#2
0
class JanelaPrincipal(QMainWindow, Ui_pydatagenMain):
    '''
    Instancia a Janela Principal(e por enquanto única da aplicação)
    If isn't work, it's because something wrong is not right
    '''

    def __init__(self):
        self.log = Log()
        self.log.adiciona("Inicializando Aplicação")

        QMainWindow.__init__(self)
        self.move(QtGui.QApplication.desktop().screen().rect().center() - self.rect().center())
        self.setupUi(self)

        self.definePropriedades()
        self.defineEventos()


    def definePropriedades(self):
        self.log.adiciona("Definindo Propriedades")

        self.mapper = Mapper()

        self.setWindowIcon(QtGui.QIcon('img/icone.png'))

        self.optMySql.setIcon(QtGui.QIcon('img/mysql-icon.png'))
        self.optPostgres.setIcon(QtGui.QIcon('img/postgres-icon.png'))

        #Define a janela como não-redimensionnável
        #self.setFixedSize(self.width(), self.height())

        # self.txtLog.setEnabled(False)

        #define parametros de conexao
        self.txtServidor.setText('127.0.0.1')
        self.txtUsuario.setText('root')
        self.txtSenha.setText('ericktm')
        self.txtBanco.setText('imovel_banco')

        #Força a exibição da primeira aba ao abrir
        self.tabs.setCurrentIndex(0)
        self.tblAtributes.setRowCount(100)
        self.showMaximized()

    def defineEventos(self):
        '''
        Associa os enventos de interface à metodos
        '''
        self.log.adiciona("Definindo Eventos")
        self.connect(self.btnConfig, SIGNAL('clicked()'), self.validaConfig)
        self.connect(self.btnPassAll, SIGNAL('clicked()'), self.validaConfig)
        self.connect(self.optMySql, SIGNAL('clicked()'), self.defineEngine)
        self.connect(self.optPostgres, SIGNAL('clicked()'), self.defineEngine)
        self.connect(self.btnPassOne, SIGNAL('clicked()'), self.addTabela)
        self.connect(self.btnPassAll, SIGNAL('clicked()'), self.addAllTables)
        self.connect(self.btnRetOne, SIGNAL('clicked()'), self.removeTable)
        self.connect(self.btnRetAll, SIGNAL('clicked()'), self.removeAllTables)
        self.connect(self.btnTables, SIGNAL('clicked()'), self.updateTables)
        self.connect(self.cboTable, SIGNAL('currentIndexChanged(QString)'), self.updateProperties)
        # self.connect(self.cboField,SIGNAL('currentIndexChanged(QString)'),self.updateProperties)

    def teste(self):
        QMessageBox.about(self, "Campo Obrigatório!", "teste!")
        print 'teste'

    def validaConfig(self):
        '''
        Valida as configurações de Conexão ao banco de dados inseridas na primeira aba.
        '''
        self.addLog('Validando parâmetros de conexão')
        servidor = str(self.txtServidor.text())
        usuario = str(self.txtUsuario.text())
        senha = str(self.txtSenha.text())
        banco = str(self.txtBanco.text())
        sgbd = self.defineEngine()

        if servidor != "":
            if usuario != "":
                if senha != '':
                    if banco != '':
                        self.addLog('Tentando Autenticar ao banco de dados')
                        self.mapper.conecta(sgbd, servidor, usuario, senha, banco)
                        self.updatelstTables()
                    else:
                        QMessageBox.about(self, "Campo Obrigatório!", "Preencha o banco de dados!")
                        self.txtBanco.setFocus()
                else:
                    QMessageBox.about(self, "Campo Obrigatório!", "Preencha o campo senha!")
                    self.txtSenha.setFocus()
            else:
                QMessageBox.about(self, "Campo Obrigatório!", "Preencha o campo usuário!")
                self.txtUsuario.setFocus()
        else:
            QMessageBox.about(self, "Campo Obrigatório!", "O campo servidor é obrigatório!")
            self.txtServidor.setFocus()

    def defineEngine(self):
        if self.optMySql.isChecked():
            self.addLog('Banco de Dados: Mysql')
            engine = 'mysql+mysqldb'
        else:
            self.addLog('Banco de Dados: PostgreSQL')
            engine = 'postgresql'
        return str(engine)

    def updateTitle(self, texto=None):
        self.addLog('Atualizando Título da página')
        self.setWindowTitle(texto)

    def addLog(self, text):
        self.log.adiciona(str(text))
        self.txtLog.setHtml(self.log.trace)

    def updatelstTables(self):
        self.lstDipTables.clear()
        for tabela in self.mapper.map['tabelas']:
            self.lstDipTables.addItem(tabela)

    def addTabela(self):
        item = self.lstDipTables.takeItem(self.lstDipTables.currentRow())
        self.lstTabsSelec.addItem(item)
        item = None

    def removeTable(self):
        item = self.lstTabsSelec.takeItem(self.lstTabsSelec.currentRow())
        self.lstDipTables.addItem(item)
        item = None

    def removeAllTables(self):
        self.addLog('Removendo todas as tabelas selecionadas')
        for index in xrange(self.lstTabsSelec.count()):
            self.lstDipTables.addItem(self.lstTabsSelec.item(index).text())
        self.lstTabsSelec.clear()
        self.addLog('Lista de tabelas selecionadas limpa')

    def addAllTables(self):
        self.addLog('Adicionando todas as tabelas disponíveis para inserção')
        for index in xrange(self.lstDipTables.count()):
            self.lstTabsSelec.addItem(self.lstDipTables.item(index).text())
        self.lstDipTables.clear()
        self.addLog('Lista de tabelas disponíveis limpa')

    def updateTables(self):
        self.addLog('Limpando combo de tabelas selecionadas')
        self.cboTable.clear()
        if self.lstTabsSelec.count() > 0:
            self.addLog('Atualizando combo de tabelas selecionadas')
            for i in xrange(self.lstTabsSelec.count()):
                self.cboTable.addItem(self.lstTabsSelec.item(i).text())
        else:
            self.addLog('Nenhuma tabela selecionada')
            QMessageBox.about(self, "Campo Obrigatório!", "Nenhuma tabela selecionada!")
            self.tabs.setCurrentIndex(1)

    def updateFields(self):
        self.addLog('Atualizando propriedades')
        #--- Implementar

    def cleanTable(self):
        '''
        Método responsável por limpar a tabela de propriedades
        '''
        self.addLog(u"Atualizando propriedades de tabela")
        #Altera  quantidade de colunas
        self.tblAtributes.setRowCount(1)

        #Altera a Quantidade de linhas
        self.tblAtributes.setColumnCount(5)
        #Define nome das colunas da tabela
        self.tblAtributes.setHorizontalHeaderItem(0,QTableWidgetItem(u"Nome do Campo"))
        self.tblAtributes.setHorizontalHeaderItem(1,QTableWidgetItem(u"Primário?"))
        self.tblAtributes.setHorizontalHeaderItem(2,QTableWidgetItem(u"Nulo?"))
        self.tblAtributes.setHorizontalHeaderItem(3,QTableWidgetItem(u"Tipo de Dado"))
        self.tblAtributes.setHorizontalHeaderItem(4,QTableWidgetItem(u"Opções"))

    def updateProperties(self):

        '''
        Método responsável por atualizar a tabela de propriedades(Conforme as propriedades
        mapeadas) com a tabela selecionada no
        momento no campo cboTables.

        '''

        #Limpa a tabela
        self.cleanTable()
        #Captura a tabela selecionada
        texto = str(self.cboTable.currentText())
        #Recupera as informações mapeadas referente à tabela selecionada
        tabela = self.mapper.map['tabelas'][texto]
        self.tblAtributes.setRowCount(len(tabela))
        i = 0
        for chave, valor in tabela.items():

            #Atualiza Tabela
            self.tblAtributes.setItem(i, 0, QTableWidgetItem(chave))
            self.tblAtributes.setItem(i, 1, QTableWidgetItem(valor['primario']))
            self.tblAtributes.setItem(i, 2, QTableWidgetItem(valor['nulo']))
            self.tblAtributes.setItem(i, 3, QTableWidgetItem(valor['tipo']))
            self.tblAtributes.setItem(i, 4, QTableWidgetItem("Customizar--"))
            i+=1

        item = QTableWidgetItem()