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()
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()