Example #1
0
    def __init__(self, parent=None):
        '''
        Constructor
        '''

        super(QfrmPrincipalIMP, self).__init__(parent)
        self.setupUi(self)

        self.connect(self.action_sair, QtCore.SIGNAL('triggered()'),
                     QtCore.SLOT('close()'))
        self.connect(self.action_mega_Sena, QtCore.SIGNAL('triggered()'),
                     self.setMegaSena)
        self.connect(self.action_loto_facil, QtCore.SIGNAL('triggered()'),
                     self.setLotoFacil)
        self.connect(self.action_quina, QtCore.SIGNAL('triggered()'),
                     self.setQuina)
        self.connect(self.action_loto_mania, QtCore.SIGNAL('triggered()'),
                     self.setLotoMania)
        self.connect(self.action_dupla_sena, QtCore.SIGNAL('triggered()'),
                     self.setDuplaSena)
        self.connect(self.action_time_mania, QtCore.SIGNAL('triggered()'),
                     self.setTimeMania)
        self.connect(self.action_sorteio_Por_Dezenas,
                     QtCore.SIGNAL('triggered()'),
                     self.__listarSorteioPorDezenas)
        self.connect(self.action_atualizar, QtCore.SIGNAL('triggered()'),
                     self.__atualizarLoterica)
        self.connect(self.action_resultado_Sorteios,
                     QtCore.SIGNAL('triggered()'), self.__listarSorteios)
        self.connect(self.action_sortear_Dezenas, QtCore.SIGNAL('triggered()'),
                     self.__sortearDezenas)
        self.connect(self.tableWidget, QtCore.SIGNAL('cellClicked(int, int)'),
                     self.__cellClick)
        self.connect(self.action_ajustar_colunas, QtCore.SIGNAL('triggered()'),
                     self.__ajustaColunasTabela)
        self.connect(self.action_ajustar_linhas, QtCore.SIGNAL('triggered()'),
                     self.__ajustaColunasLinhas)
        self.connect(self.tableWidget, QtCore.SIGNAL('itemSelectionChanged()'),
                     self.__itemSelectionChanged)
        self.connect(self.btnAdicionar, QtCore.SIGNAL('clicked()'),
                     self.__addSelecao)
        self.connect(self.btnRemover, QtCore.SIGNAL('clicked()'),
                     self.__removeItemLista)
        self.connect(self.btnCopiar, QtCore.SIGNAL('clicked()'),
                     self.__copiarLista)
        self.connect(self.tableWidget.horizontalHeader(),
                     QtCore.SIGNAL('sectionClicked(int)'),
                     self.__tableColumnClicked)  #clicar na coluna da tabela

        rootDir = sys.path[0]
        self._Loterica = Loterias()
        self._Loterica.setLoteria('MegaSena')
        self.dirArquivos = os.path.join(rootDir, 'Arquivo')
        self.MatrizConcursos = MatrizConcursos(self._Loterica)
        self._selecao = {}
        #self.tableWidget.setStyleSheet("show-decoration-selected: 1;selection-color: #CCC;selection-background-color: white;");
        self.__centralizar()
Example #2
0
    def __listarSorteios(self):
        '''Lista os sorteios da loterica'''
        self.MatrizConcursos = MatrizConcursos(
            os.path.join(self.dirArquivos,
                         self._Loterica.Parametros.arqMatriz))
        self.MatrizConcursos.updateMatriz()

        self.__adicionarColunas(self._Loterica.getNumeroBolas())
        self.tableWidget.setRowCount(self.MatrizConcursos.count())
        row = 0

        for i in self.MatrizConcursos.getMatriz():
            col = 0
            self.__AddColunaTabelaVerticalHeaderItem(row, i[:1][0])
            for num in i[1:]:
                self.__AddItemLinhaTabela(row, col, num)
                col = col + 1
            row = row + 1
        self.__calculaTotalRow()
    def __listarSorteios(self):
        '''Lista os sorteios da loterica'''
        self.MatrizConcursos = MatrizConcursos(os.path.join(self.dirArquivos, self._Loterica.Parametros.arqMatriz))
        self.MatrizConcursos.updateMatriz()

        self.__adicionarColunas(self._Loterica.getNumeroBolas())
        self.tableWidget.setRowCount(self.MatrizConcursos.count())
        row = 0

        for i in self.MatrizConcursos.getMatriz():           
            col = 0            
            self.__AddColunaTabelaVerticalHeaderItem(row, i[:1][0])
            for num in i[1:]:
                self.__AddItemLinhaTabela(row, col, num)
                col = col + 1
            row = row + 1
        self.__calculaTotalRow()
    def __init__(self, parent=None):
        '''
        Constructor
        '''

        super(QfrmPrincipalIMP, self).__init__(parent)
        self.setupUi(self)

        self.connect(self.action_sair, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
        self.connect(self.action_mega_Sena, QtCore.SIGNAL('triggered()'), self.setMegaSena)
        self.connect(self.action_loto_facil, QtCore.SIGNAL('triggered()'), self.setLotoFacil)
        self.connect(self.action_quina, QtCore.SIGNAL('triggered()'), self.setQuina)
        self.connect(self.action_loto_mania, QtCore.SIGNAL('triggered()'), self.setLotoMania)
        self.connect(self.action_dupla_sena, QtCore.SIGNAL('triggered()'), self.setDuplaSena)
        self.connect(self.action_time_mania, QtCore.SIGNAL('triggered()'), self.setTimeMania)
        self.connect(self.action_sorteio_Por_Dezenas, QtCore.SIGNAL('triggered()'), self.__listarSorteioPorDezenas)
        self.connect(self.action_atualizar, QtCore.SIGNAL('triggered()'), self.__atualizarLoterica)
        self.connect(self.action_resultado_Sorteios, QtCore.SIGNAL('triggered()'), self.__listarSorteios)
        self.connect(self.action_sortear_Dezenas, QtCore.SIGNAL('triggered()'), self.__sortearDezenas)
        self.connect(self.tableWidget, QtCore.SIGNAL('cellClicked(int, int)'), self.__cellClick)
        self.connect(self.action_ajustar_colunas, QtCore.SIGNAL('triggered()'), self.__ajustaColunasTabela)
        self.connect(self.action_ajustar_linhas, QtCore.SIGNAL('triggered()'), self.__ajustaColunasLinhas)
        self.connect(self.tableWidget, QtCore.SIGNAL('itemSelectionChanged()'), self.__itemSelectionChanged)
        self.connect(self.btnAdicionar, QtCore.SIGNAL('clicked()'), self.__addSelecao)
        self.connect(self.btnRemover, QtCore.SIGNAL('clicked()'), self.__removeItemLista)
        self.connect(self.btnCopiar, QtCore.SIGNAL('clicked()'), self.__copiarLista)
        self.connect(self.tableWidget.horizontalHeader(), QtCore.SIGNAL('sectionClicked(int)'), self.__tableColumnClicked) #clicar na coluna da tabela
          
        rootDir = sys.path[0]
        self._Loterica = Loterias()
        self._Loterica.setLoteria('MegaSena')
        self.dirArquivos = os.path.join(rootDir, 'Arquivo')
        self.MatrizConcursos = MatrizConcursos(self._Loterica)
        self._selecao = {}
        #self.tableWidget.setStyleSheet("show-decoration-selected: 1;selection-color: #CCC;selection-background-color: white;");
        self.__centralizar()
class QfrmPrincipalIMP(QtGui.QMainWindow, Ui_MainWindow):

    '''        
    classdocs
    '''

    def __init__(self, parent=None):
        '''
        Constructor
        '''

        super(QfrmPrincipalIMP, self).__init__(parent)
        self.setupUi(self)

        self.connect(self.action_sair, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
        self.connect(self.action_mega_Sena, QtCore.SIGNAL('triggered()'), self.setMegaSena)
        self.connect(self.action_loto_facil, QtCore.SIGNAL('triggered()'), self.setLotoFacil)
        self.connect(self.action_quina, QtCore.SIGNAL('triggered()'), self.setQuina)
        self.connect(self.action_loto_mania, QtCore.SIGNAL('triggered()'), self.setLotoMania)
        self.connect(self.action_dupla_sena, QtCore.SIGNAL('triggered()'), self.setDuplaSena)
        self.connect(self.action_time_mania, QtCore.SIGNAL('triggered()'), self.setTimeMania)
        self.connect(self.action_sorteio_Por_Dezenas, QtCore.SIGNAL('triggered()'), self.__listarSorteioPorDezenas)
        self.connect(self.action_atualizar, QtCore.SIGNAL('triggered()'), self.__atualizarLoterica)
        self.connect(self.action_resultado_Sorteios, QtCore.SIGNAL('triggered()'), self.__listarSorteios)
        self.connect(self.action_sortear_Dezenas, QtCore.SIGNAL('triggered()'), self.__sortearDezenas)
        self.connect(self.tableWidget, QtCore.SIGNAL('cellClicked(int, int)'), self.__cellClick)
        self.connect(self.action_ajustar_colunas, QtCore.SIGNAL('triggered()'), self.__ajustaColunasTabela)
        self.connect(self.action_ajustar_linhas, QtCore.SIGNAL('triggered()'), self.__ajustaColunasLinhas)
        self.connect(self.tableWidget, QtCore.SIGNAL('itemSelectionChanged()'), self.__itemSelectionChanged)
        self.connect(self.btnAdicionar, QtCore.SIGNAL('clicked()'), self.__addSelecao)
        self.connect(self.btnRemover, QtCore.SIGNAL('clicked()'), self.__removeItemLista)
        self.connect(self.btnCopiar, QtCore.SIGNAL('clicked()'), self.__copiarLista)
        self.connect(self.tableWidget.horizontalHeader(), QtCore.SIGNAL('sectionClicked(int)'), self.__tableColumnClicked) #clicar na coluna da tabela
          
        rootDir = sys.path[0]
        self._Loterica = Loterias()
        self._Loterica.setLoteria('MegaSena')
        self.dirArquivos = os.path.join(rootDir, 'Arquivo')
        self.MatrizConcursos = MatrizConcursos(self._Loterica)
        self._selecao = {}
        #self.tableWidget.setStyleSheet("show-decoration-selected: 1;selection-color: #CCC;selection-background-color: white;");
        self.__centralizar()
        
    def __centralizar(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        size =  self.geometry()
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)        
        
    def __tableColumnClicked(self,pos):
        self.tableWidget.sortByColumn(pos)
    
    def __copiarLista(self):
        if self.listSelecionados.count():
            items = []
            for index in xrange(self.listSelecionados.count()):
                item = self.listSelecionados.item(index)
                items.append(str(item.text()))
            
            QtGui.QApplication.clipboard().setText( '\n'.join(items))
            print  'Seleção Copiado para clipboard'
    
    def __removeItemLista(self):
        if self.listSelecionados.count():
            reply = QtGui.QMessageBox.question(self, 'Pergunta',"Remover a Seleção?", QtGui.QMessageBox.Yes |QtGui.QMessageBox.No, QtGui.QMessageBox.No)
            if reply == QtGui.QMessageBox.Yes:            
                self.listSelecionados.removeItemWidget(self.listSelecionados.takeItem(self.listSelecionados.currentRow()))
        
    def __addSelecao(self):  
        if not self.tableWidget.isSortingEnabled():      
            if self._selecao:
                if len(self._selecao) <> self._Loterica.getNumeroBolas():
                    msg = "A aposta esta incorreta! Numero de bolas sorteadas para esta loteria: %s" % self._Loterica.getNumeroBolas()
                    QtGui.QMessageBox.warning(self, 'Aviso',msg)
                else:                
                    msg = '%s: %s' % (self._Loterica.getLotericaDescricao(), ''.join(', '.join([x for x in self._selecao.values()])).rjust(5,' '))
                    item = QtGui.QListWidgetItem()
                    item.setText(QtGui.QApplication.translate("MainWindow", msg  , None, QtGui.QApplication.UnicodeUTF8))        
                    self.listSelecionados.addItem(item)       
                    print msg 
                    self.__resetCellColor()
                    self._selecao.clear()
                    self.statusBar().showMessage(QtCore.QString('')) 
                    
    def __resetCellColor(self):
        color = QtGui.QColor(255,255,255)
        brush = QtGui.QBrush(color)
        
        for i,j in  self._selecao.keys():
            self.tableWidget.item(i,j).setBackground(brush)
                 
    
    def __itemSelectionChanged (self):
             
        #self.__resetCellColor()
        '''        
        color = QtGui.QColor(247,241, 45)
        brush = QtGui.QBrush(color)
        
        lst = self.tableWidget.selectedIndexes()
        self._selecao = []
        for i in lst:                        
            if  self._selecao:
                self._selecao.append(', ')
            self._selecao.append(str(i.data().toString()))            
            self.tableWidget.itemFromIndex(i).setBackground(brush)
            
        msg = ' %d Selecionado(s) : %s' % (len(lst), ''.join(self._selecao))
        self.lblStatus.clear()
        #self.lblStatus.setText( '%d Selecionado(s) : %s' %( len(lst), ''.join( self._selecao) )  )
        self.statusBar().showMessage(QtCore.QString(msg)) 
        '''
        
    def __cellClick(self, row, col):
        
        item = self.tableWidget.item(row, col)
        valor = str(item.data(0).toString())
        key = (row,col)        
        
        '''Chave ja existe, remove a selecao'''
        if  self._selecao.has_key(key):
            color = QtGui.QColor(255,255, 255)
            brush = QtGui.QBrush(color)
            item.setBackground(brush)
            self._selecao.pop(key)
        elif valor in self._selecao.values() :
            '''Valor ja existe'''
            pass      
        else:        
            self._selecao[key] = valor            
            color = QtGui.QColor(247,241, 45)
            brush = QtGui.QBrush(color)
            item.setBackground(brush)
        sorted(self._selecao.items())         
        msg = ' %d Selecionado(s) : %s' % (len( self._selecao), ', '.join([x for x in self._selecao.values()]))
        self.lblStatus.clear()        
        self.statusBar().showMessage(QtCore.QString(msg)) 
        

    def __ajustaColunasTabela(self):
        self.tableWidget.resizeColumnsToContents()
        
    
    def __ajustaColunasLinhas(self):
        self.tableWidget.resizeRowsToContents()
        
        
    def setMegaSena(self):
        self.__setLoterica('MegaSena')
        

    def setLotoFacil(self):
        self.__setLoterica('LotoFacil')


    def setQuina(self):
        self.__setLoterica('Quina')


    def setLotoMania(self):
        self.__setLoterica('LotoMania')


    def setDuplaSena(self):
        self.__setLoterica('DuplaSena')


    def setTimeMania(self):
        self.__setLoterica('TimeMania')        
        
    
    def __setLoterica(self, loterica):
        self._Loterica.setLoteria(loterica)
        self.__showMessageStatus(self._Loterica.getLotericaDescricao())
        titulo = 'Loteria: %s - %s Bolas e %s Dezenas' % ( self._Loterica.getLotericaDescricao(), self._Loterica.getNumeroBolas(),self._Loterica.getNumeroDezenas())
        self.label.setText(QtCore.QString(titulo ) )
        self.__listarSorteios()
        self._selecao.clear()
        
    
    def __showMessageStatus(self, msg):
        self.statusBar().showMessage(QtCore.QString(msg))            
        print msg

    def __atualizarLoterica(self):
        try:
            self.__showMessageStatus('Baixando...')
            
            d = Downloads()
            d.FileFromUrl(self._Loterica.Parametros.url, os.path.join(self.dirArquivos, self._Loterica.Parametros.arqZip))
            self.__showMessageStatus('Concluido.')            
            

            self.__showMessageStatus('Descompactando arquivo...')
            
            z = ZipLib()
            z.Descompactar(os.path.join(self.dirArquivos, self._Loterica.Parametros.arqZip), self.dirArquivos)
            
            self.__showMessageStatus('Concluido')
            
            self.__showMessageStatus('Processando arquivo...')
            
            h = HtmlTotxt(self._Loterica)
            h.ProcessarArquivo(os.path.join(self.dirArquivos, self._Loterica.Parametros.arqHtml), os.path.join(self.dirArquivos, self._Loterica.Parametros.arqMatriz))

            self.__showMessageStatus('Atualizacao Concluida')
            
            self.MatrizConcursos.updateMatriz()
            
            self.__listarSorteios()
            
            QtGui.QMessageBox.warning(self, 'Application', QtCore.QString('Atualizacao Concluida!'))
            self.statusBar().showMessage(QtCore.QString(self._Loterica.getLoteria()))                                  
            
        except Exception as e:
            print e
            QtGui.QMessageBox.critical(self, 'Erro encontrado', QtCore.QString(str(e)))


    def __AddItemLinhaTabela(self, row, col, valor):
        item = QtGui.QTableWidgetItem()
        item.setText(QtGui.QApplication.translate("MainWindow", valor, None, QtGui.QApplication.UnicodeUTF8))
        item.setTextAlignment(QtCore.Qt.Alignment(QtCore.Qt.AlignCenter))
        self.tableWidget.setItem(row, col, item)


    def  __AddColunaTabelaHorizontalHeader(self, col, valor):
        item = QtGui.QTableWidgetItem()
        item.setText(QtGui.QApplication.translate("MainWindow", valor , None, QtGui.QApplication.UnicodeUTF8))
        self.tableWidget.setHorizontalHeaderItem(col, item)


    def __AddColunaTabelaVerticalHeaderItem(self, row, valor):
        item = QtGui.QTableWidgetItem()
        item.setText(QtGui.QApplication.translate("MainWindow", valor, None, QtGui.QApplication.UnicodeUTF8))
        self.tableWidget.setVerticalHeaderItem(row, item)


    def __adicionarColunas(self, tam):
        self.tableWidget.clear()
        self.tableWidget.setColumnCount(tam)    #uma coluna a mais para o total

        for x in range(0, tam):
            self.__AddColunaTabelaHorizontalHeader(x, 'Bola {0}'.format(x + 1))
       

    def __listarSorteios(self):
        '''Lista os sorteios da loterica'''
        self.MatrizConcursos = MatrizConcursos(os.path.join(self.dirArquivos, self._Loterica.Parametros.arqMatriz))
        self.MatrizConcursos.updateMatriz()

        self.__adicionarColunas(self._Loterica.getNumeroBolas())
        self.tableWidget.setRowCount(self.MatrizConcursos.count())
        row = 0

        for i in self.MatrizConcursos.getMatriz():           
            col = 0            
            self.__AddColunaTabelaVerticalHeaderItem(row, i[:1][0])
            for num in i[1:]:
                self.__AddItemLinhaTabela(row, col, num)
                col = col + 1
            row = row + 1
        self.__calculaTotalRow()


    def __listarSorteioPorDezenas(self):
        '''Exibe sorteios agrupados por dezenas'''
        concurso = ConcursoCalculos()
        TotaisSorteios = concurso.getTotaisPorDezena(self.MatrizConcursos.getMatriz(), self._Loterica, self.__IformaQuantidade(0))

        self.__adicionarColunas(self._Loterica.getNumeroBolas())
        self.tableWidget.setRowCount(self._Loterica.getNumeroDezenas()) #Adicionar coluna a mais para o zero
       
    #    for r,v in enumerate(range(0,self._Loterica.getNumeroDezenas()),self._Loterica.getDezenaInicial()):
    #        self.__AddColunaTabelaVerticalHeaderItem(r,v)  
       
        for k, i in  TotaisSorteios.items():     
            if k == (60,5):
                pass                 
            self.__AddItemLinhaTabela(k[1]-1, k[0]-1, str(i))            
        
        self.__calculaTotalRow()
        
    
    def __sortearDezenas(self):
        '''Exibe a Lista de Dezenas Sorteadas '''
        
        numSorteio = self.__IformaQuantidade(10)
        self.__adicionarColunas(self._Loterica.getNumeroBolas() + 1)
        self.tableWidget.setRowCount(numSorteio)

        concurso = ConcursoCalculos()
        dezenasSoteadas = concurso.SortearDezenas(self._Loterica, numSorteio)

        for row , x in enumerate(dezenasSoteadas):
            total = 0
            for col, num in enumerate(x):
                self.__AddItemLinhaTabela(row, col, str(num))
                total = total + int(num)
        
        self.__calculaTotalRow()
        self.tableWidget.resizeColumnsToContents()

    
    def __calculaTotalRow(self):
        #Total
        col = self.tableWidget.columnCount() 
        self.tableWidget.setColumnCount(col + 1)
        self.__AddColunaTabelaHorizontalHeader(col, 'Total')
        
        for i in range(0, self.tableWidget.rowCount()):
            total = 0
            for j in range(0, self.tableWidget.columnCount() - 1):
                total += int(self.tableWidget.item(i, j).text())
            self.__AddItemLinhaTabela(i, col, str(total))
             

    def __IformaQuantidade(self, qtdedefault):
        ''' 
        Criar o dialogo e aguardar o seu retorno 
        '''        
        window = QNumSorteioIMP(self) 
        window.numeroSpinBox.setValue(qtdedefault)
        window.setWindowModality(QtCore.Qt.WindowModal)  
        window.exec_()
        
        return window.numeroSpinBox.value()
Example #6
0
class FrmPrincipal():
    '''
    classdocs
    '''
    def __adicionarColunas(self):
        bolas = ['Dezenas']
        for x in range(1, self._Loteria.getNumeroBolas() + 1):
            bolas.append('Bola{0}'.format(x))
        bolas.append('Total')

        self.Scrolledtreeview1[
            'columns'] = bolas  #('Dezena','Dezena1', 'Dezena2', 'Dezena3', 'Dezena4', 'Dezena5', 'Dezena6','Total')

        for x in bolas:
            self.Scrolledtreeview1.column(x, width=45, anchor='center')
            self.Scrolledtreeview1.heading(x, text=x)

        self.Scrolledtreeview1.column('#0', width=45, anchor='center')

    def _deleteWidgets(self):
        try:
            self.Scrolledtreeview1.delete('widgets')
        except:
            pass

        try:
            self.Scrolledtreeview1.delete('Totais')
        except:
            pass

    def _atualizar(self):
        print 'Baixando...'
        d = Downloads()
        d.FileFromUrl(self._Loteria.Parametros.url,
                      self._path + self._Loteria.Parametros.arqZip)
        print 'Concluido'

        print('Descompactando arquivo...')
        z = ZipLib()
        z.Descompactar(self._path + self._Loteria.Parametros.arqZip,
                       self._path)
        print 'Concluido'

        print 'Processando arquivo...'
        h = HtmlTotxt(self._Loteria)
        h.ProcessarArquivo(self._path + self._Loteria.Parametros.arqHtml,
                           self._path + self._Loteria.Parametros.arqMatriz)
        print 'Concluido'

        self.MatrizConcursos.updateMatriz()

    def __listarSorteioPorDezenas(self):
        self._deleteWidgets()

        id = self.Scrolledtreeview1.insert('',
                                           'end',
                                           'widgets',
                                           text='Sorteio Por Dezenas')

        self.__adicionarColunas()

        self.Scrolledtreeview1.column('#0', width=80, anchor='center')

        concurso = ConcursoCalculos()

        TotaisSorteios = concurso.getTotaisPorDezena(
            self.MatrizConcursos.getMatriz(), self._Loteria)

        for i in range(0, self._Loteria.getNumeroDezenas() + 1):
            total = 0
            l = []
            l.append(i)
            for j in range(1, self._Loteria.getNumeroBolas() + 1):
                total = total + TotaisSorteios[(i, j)]
                l.append(TotaisSorteios[(i, j)])
            l.append(total)
            self.Scrolledtreeview1.insert(id, 'end', text='', values=l)

        self.Scrolledtreeview1.item('widgets', open=TRUE)
        self._TotaisTotaisPorDezenas(TotaisSorteios)

    def __listarSorteios(self):
        self._deleteWidgets()
        # Inserted at the root, program chooses id:
        id = self.Scrolledtreeview1.insert('',
                                           'end',
                                           'widgets',
                                           text='Sorteios')

        self.__adicionarColunas()

        for i in self.MatrizConcursos.getMatriz():
            total = 0
            l = []
            l.append(i[:1][0])

            for num in i[1:]:
                l.append(num)
                total = total + int(num)
            l.append(total)

            self.Scrolledtreeview1.insert(id, 'end', text='', values=l)

        self.Scrolledtreeview1.item('widgets', open=TRUE)
        self._TotaisTotaisPorDezenas(self.MatrizConcursos.getMatriz())

    def _TotaisTotaisPorDezenas(self, matriz):
        id = self.Scrolledtreeview1.insert('',
                                           'end',
                                           'Totais',
                                           text='Totais por dezenas')

        self.__adicionarColunas()

        concurso = ConcursoCalculos()

        TotaisSorteios = concurso.getTotaisSorteios(matriz, self._Loteria)

        l = []

        for i, j in TotaisSorteios.items():
            l.append(i)
            l.append(j)
            self.Scrolledtreeview1.insert(id, 'end', text='', values=l)
            l = []

    def sortearDezenas(self):
        self._deleteWidgets()
        # Inserted at the root, program chooses id:
        id = self.Scrolledtreeview1.insert('',
                                           'end',
                                           'widgets',
                                           text='Sorteios')

        self.__adicionarColunas()

        concurso = ConcursoCalculos()

        dezenasSoteadas = concurso.SortearDezenas(self._Loteria, 10)
        for x in dezenasSoteadas:
            total = 0
            l = []

            for num in x:
                l.append(num)
                total = total + int(num)
            l.append(total)

            self.Scrolledtreeview1.insert(id, 'end', text='', values=l)

        self._TotaisTotaisPorDezenas(dezenasSoteadas)

    def listarSorteiosMegaSena(self):
        self._setLoteria('MegaSena')
        self.__listarSorteios()

    def listarSorteiosLotoFacil(self):
        self._setLoteria('LotoFacil')
        self.__listarSorteios()

    def listarSorteiosQuina(self):
        self._setLoteria('Quina')
        self.__listarSorteios()

    def listarSorteiosLotoMania(self):
        self._setLoteria('LotoMania')
        self.__listarSorteios()

    def listarSorteiosDuplaSena(self):
        self._setLoteria('DuplaSena')
        self.__listarSorteios()

    def listarSorteiosTimeMania(self):
        self._setLoteria('TimeMania')
        self.__listarSorteios()

    def sortearDezenasMegaSena(self):
        self._setLoteria('MegaSena')
        self.sortearDezenas()

    def sortearDezenasLotoFacil(self):
        self._setLoteria('LotoFacil')
        self.sortearDezenas()

    def sortearDezenasQuina(self):
        self._setLoteria('Quina')
        self.sortearDezenas()

    def sortearDezenasLotoMania(self):
        self._setLoteria('LotoMania')
        self.sortearDezenas()

    def sortearDezenasDuplaSena(self):
        self._setLoteria('DuplaSena')
        self.sortearDezenas()

    def sortearDezenasTimeMania(self):
        self._setLoteria('TimeMania')
        self.sortearDezenas()

    def listarSorteioPorDezenasMegaSena(self):
        self._setLoteria('MegaSena')
        self.__listarSorteioPorDezenas()

    def listarSorteioPorDezenasLotoFacil(self):
        self._setLoteria('LotoFacil')
        self.__listarSorteioPorDezenas()

    def listarSorteioPorDezenasQuina(self):
        self._setLoteria('Quina')
        self.__listarSorteioPorDezenas()

    def listarSorteioPorDezenasLotoMania(self):
        self._setLoteria('LotoMania')
        self.__listarSorteioPorDezenas()

    def listarSorteioPorDezenasDuplaSena(self):
        self._setLoteria('DuplaSena')
        self.__listarSorteioPorDezenas()

    def listarSorteioPorDezenasTimeMania(self):
        self._setLoteria('TimeMania')
        self.__listarSorteioPorDezenas()

    def atualizaMegaSena(self):
        self._setLoteria('MegaSena')
        self._atualizar()

    def atualizaLotoFacil(self):
        self._setLoteria('LotoFacil')
        self._atualizar()

    def atualizaQuina(self):
        self._setLoteria('Quina')
        self._atualizar()

    def atualizaLotoMania(self):
        self._setLoteria('LotoMania')
        self._atualizar()

    def atualizaDuplaSena(self):
        self._setLoteria('DuplaSena')
        self._atualizar()

    def atualizaTimeMania(self):
        self._setLoteria('TimeMania')
        self._atualizar()

    def _setLoteria(self, loteria):
        self._Loteria.setLoteria(loteria)
        self.MatrizConcursos = MatrizConcursos(
            os.path.join(self._path, self._Loteria.Parametros.arqMatriz))
        self.MatrizConcursos.updateMatriz()

    def __init__(self, master):
        '''
        Constructor
        '''
        self._path = sys.path[0] + os.sep + 'Arquivo' + os.sep
        #self._path = os.path.join(sys.path[0],'Arquivo',os.sep)
        self._Loteria = Loterias()

        self._setLoteria('MegaSena')
        self._master = master

        # Set background of toplevel window to match
        # current style
        style = ttk.Style()
        theme = style.theme_use()
        default = style.lookup(theme, 'background')
        master.configure(background=default)

        menubar = Menu(master)
        menuMegaSena = Menu(menubar, tearoff=0)
        menuMegaSena.add_command(label="Atualizar",
                                 command=self.atualizaMegaSena)
        menuMegaSena.add_command(label="Resultado Sorteios",
                                 command=self.listarSorteiosMegaSena)
        menuMegaSena.add_command(label="Sorteio Por Dezenas",
                                 command=self.listarSorteioPorDezenasMegaSena)
        menuMegaSena.add_command(label="Sortear Dezenas",
                                 command=self.sortearDezenasMegaSena)
        menubar.add_cascade(label="Mega Sena", menu=menuMegaSena)

        menuLotoFacil = Menu(menubar, tearoff=0)
        menuLotoFacil.add_command(label="Atualizar",
                                  command=self.atualizaLotoFacil)
        menuLotoFacil.add_command(label="Resultado Sorteios",
                                  command=self.listarSorteiosLotoFacil)
        menuLotoFacil.add_command(
            label="Sorteio Por Dezenas",
            command=self.listarSorteioPorDezenasLotoFacil)
        menuLotoFacil.add_command(label="Sortear Dezenas",
                                  command=self.sortearDezenasLotoFacil)
        menubar.add_cascade(label="Loto Facil", menu=menuLotoFacil)

        menuQuina = Menu(menubar, tearoff=0)
        menuQuina.add_command(label="Atualizar", command=self.atualizaQuina)
        menuQuina.add_command(label="Resultado Sorteios",
                              command=self.listarSorteiosQuina)
        menuQuina.add_command(label="Sorteio Por Dezenas",
                              command=self.listarSorteioPorDezenasQuina)
        menuQuina.add_command(label="Sortear Dezenas",
                              command=self.sortearDezenasQuina)
        menubar.add_cascade(label="Quina", menu=menuQuina)

        menuLotoMania = Menu(menubar, tearoff=0)
        menuLotoMania.add_command(label="Atualizar",
                                  command=self.atualizaLotoMania)
        menuLotoMania.add_command(label="Resultado Sorteios",
                                  command=self.listarSorteiosLotoMania)
        menuLotoMania.add_command(
            label="Sorteio Por Dezenas",
            command=self.listarSorteioPorDezenasLotoMania)
        menuLotoMania.add_command(label="Sortear Dezenas",
                                  command=self.sortearDezenasLotoMania)
        menubar.add_cascade(label="Loto Mania", menu=menuLotoMania)

        menuDuplaSena = Menu(menubar, tearoff=0)
        menuDuplaSena.add_command(label="Atualizar",
                                  command=self.atualizaDuplaSena)
        menuDuplaSena.add_command(label="Resultado Sorteios",
                                  command=self.listarSorteiosDuplaSena)
        menuDuplaSena.add_command(
            label="Sorteio Por Dezenas",
            command=self.listarSorteioPorDezenasDuplaSena)
        menuDuplaSena.add_command(label="Sortear Dezenas",
                                  command=self.sortearDezenasDuplaSena)
        menubar.add_cascade(label="Dupla Sena", menu=menuDuplaSena)

        menuTimeMania = Menu(menubar, tearoff=0)
        menuTimeMania.add_command(label="Atualizar",
                                  command=self.atualizaTimeMania)
        menuTimeMania.add_command(label="Resultado Sorteios",
                                  command=self.listarSorteiosTimeMania)
        menuTimeMania.add_command(
            label="Sorteio Por Dezenas",
            command=self.listarSorteioPorDezenasTimeMania)
        menuTimeMania.add_command(label="Sortear Dezenas",
                                  command=self.sortearDezenasTimeMania)
        menubar.add_cascade(label="Time Mania", menu=menuTimeMania)

        master.config(menu=menubar)

        self.Scrolledtreeview1 = ScrolledTreeView(master)
        self.Scrolledtreeview1.place(relx=0.01,
                                     rely=0.06,
                                     relheight=0.87,
                                     relwidth=0.97)
Example #7
0
 def _setLoteria(self, loteria):
     self._Loteria.setLoteria(loteria)
     self.MatrizConcursos = MatrizConcursos(
         os.path.join(self._path, self._Loteria.Parametros.arqMatriz))
     self.MatrizConcursos.updateMatriz()
Example #8
0
class FrmPrincipal():
    '''
    classdocs
    '''
    def __adicionarColunas(self):
        bolas = ['Dezenas']
        for x in range(1, self._Loteria.getNumeroBolas() + 1):  
            bolas.append('Bola{0}'.format(x))
        bolas.append('Total')        
        
        self.Scrolledtreeview1['columns'] = bolas#('Dezena','Dezena1', 'Dezena2', 'Dezena3', 'Dezena4', 'Dezena5', 'Dezena6','Total')    
        
        for x in bolas:
            self.Scrolledtreeview1.column(x, width=45 , anchor='center')
            self.Scrolledtreeview1.heading(x, text=x)  
        
        self.Scrolledtreeview1.column('#0', width=45 , anchor='center')
    
    def _deleteWidgets(self):
        try:
            self.Scrolledtreeview1.delete('widgets')
        except:
            pass
        
        try:
            self.Scrolledtreeview1.delete('Totais')
        except:
            pass
            
    def _atualizar(self): 
        print 'Baixando...' 
        d = Downloads()
        d.FileFromUrl(self._Loteria.Parametros.url, self._path + self._Loteria.Parametros.arqZip)
        print 'Concluido'

        print ('Descompactando arquivo...')
        z = ZipLib()
        z.Descompactar(self._path + self._Loteria.Parametros.arqZip, self._path)
        print 'Concluido'
    
        print 'Processando arquivo...'
        h = HtmlTotxt(self._Loteria)        
        h.ProcessarArquivo(self._path + self._Loteria.Parametros.arqHtml, self._path + self._Loteria.Parametros.arqMatriz)
        print 'Concluido'
        
        self.MatrizConcursos.updateMatriz()
        
    def __listarSorteioPorDezenas(self):
        self._deleteWidgets()
        
        id = self.Scrolledtreeview1.insert('', 'end', 'widgets', text='Sorteio Por Dezenas')
        
        self.__adicionarColunas()
        
        self.Scrolledtreeview1.column('#0', width=80 , anchor='center') 
               
        concurso = ConcursoCalculos()
               
        TotaisSorteios =  concurso.getTotaisPorDezena(self.MatrizConcursos.getMatriz(), self._Loteria)
              
        for i in range(0, self._Loteria.getNumeroDezenas() + 1): 
            total = 0
            l = []
            l.append(i)
            for j in range(1, self._Loteria.getNumeroBolas() + 1):
                total = total + TotaisSorteios[(i, j)]
                l.append(TotaisSorteios[(i, j)])
            l.append(total)            
            self.Scrolledtreeview1.insert(id, 'end', text='', values=l)
        
        self.Scrolledtreeview1.item('widgets', open=TRUE)
        self._TotaisTotaisPorDezenas(TotaisSorteios)
    
    def __listarSorteios(self):      
        self._deleteWidgets()            
        # Inserted at the root, program chooses id:
        id = self.Scrolledtreeview1.insert('', 'end', 'widgets', text='Sorteios')
        
        self.__adicionarColunas()               
              
        for i in self.MatrizConcursos.getMatriz():
            total = 0
            l = []    
            l.append(i[:1][0])
                     
            for num in i[1:]:
                l.append(num)
                total = total + int(num)
            l.append(total)         
            
            self.Scrolledtreeview1.insert(id, 'end', text='', values=l)
        
        self.Scrolledtreeview1.item('widgets', open=TRUE)
        self._TotaisTotaisPorDezenas(self.MatrizConcursos.getMatriz())
        
    def _TotaisTotaisPorDezenas(self,matriz):
        id = self.Scrolledtreeview1.insert('', 'end', 'Totais', text='Totais por dezenas')
        
        self.__adicionarColunas()
        
        concurso = ConcursoCalculos()
               
        TotaisSorteios =  concurso.getTotaisSorteios(matriz, self._Loteria)
            
        l = []
         
        for i,j in TotaisSorteios.items():
            l.append(i)
            l.append(j) 
            self.Scrolledtreeview1.insert(id, 'end', text='', values=l)
            l = []
    
    def sortearDezenas(self):
        self._deleteWidgets()            
        # Inserted at the root, program chooses id:
        id = self.Scrolledtreeview1.insert('', 'end', 'widgets', text='Sorteios')
        
        self.__adicionarColunas()
        
        concurso = ConcursoCalculos()
        
        dezenasSoteadas =  concurso.SortearDezenas(self._Loteria,10)
        for x in dezenasSoteadas:
            total = 0
            l = [] 
             
            for num in x:
                l.append(num)
                total = total + int(num)
            l.append(total)         
            
            self.Scrolledtreeview1.insert(id, 'end', text='', values=l)
                        
        self._TotaisTotaisPorDezenas(dezenasSoteadas)
          
    
    def listarSorteiosMegaSena(self):
        self._setLoteria('MegaSena')
        self.__listarSorteios()
        
    def listarSorteiosLotoFacil(self):
        self._setLoteria('LotoFacil')
        self.__listarSorteios()
        
    def listarSorteiosQuina(self):
        self._setLoteria('Quina')
        self.__listarSorteios()
        
    def listarSorteiosLotoMania(self):
        self._setLoteria('LotoMania')
        self.__listarSorteios()
    
    def listarSorteiosDuplaSena(self):
        self._setLoteria('DuplaSena')
        self.__listarSorteios()
    
    def listarSorteiosTimeMania(self):
        self._setLoteria('TimeMania')
        self.__listarSorteios()  
        
    def sortearDezenasMegaSena(self):
        self._setLoteria('MegaSena')
        self.sortearDezenas()
        
    def sortearDezenasLotoFacil(self):
        self._setLoteria('LotoFacil')
        self.sortearDezenas()
        
    def sortearDezenasQuina(self):
        self._setLoteria('Quina')
        self.sortearDezenas()
        
    def sortearDezenasLotoMania(self):
        self._setLoteria('LotoMania')
        self.sortearDezenas()
        
    def sortearDezenasDuplaSena(self):
        self._setLoteria('DuplaSena')
        self.sortearDezenas()
        
    def sortearDezenasTimeMania(self):
        self._setLoteria('TimeMania')
        self.sortearDezenas()
            
    def listarSorteioPorDezenasMegaSena(self):
        self._setLoteria('MegaSena')
        self.__listarSorteioPorDezenas()
        
    def listarSorteioPorDezenasLotoFacil(self):
        self._setLoteria('LotoFacil')
        self.__listarSorteioPorDezenas()
        
    def listarSorteioPorDezenasQuina(self):
        self._setLoteria('Quina')
        self.__listarSorteioPorDezenas()
    
    def listarSorteioPorDezenasLotoMania(self):
        self._setLoteria('LotoMania')
        self.__listarSorteioPorDezenas()
        
    def listarSorteioPorDezenasDuplaSena(self):
        self._setLoteria('DuplaSena')
        self.__listarSorteioPorDezenas()
        
    def listarSorteioPorDezenasTimeMania(self):
        self._setLoteria('TimeMania')
        self.__listarSorteioPorDezenas()    
    
    def atualizaMegaSena(self):
        self._setLoteria('MegaSena')
        self._atualizar()
    
    def atualizaLotoFacil(self):
        self._setLoteria('LotoFacil')
        self._atualizar() 
        
    def atualizaQuina(self):
        self._setLoteria('Quina')
        self._atualizar() 
        
    def atualizaLotoMania(self):
        self._setLoteria('LotoMania')
        self._atualizar() 
        
    def atualizaDuplaSena(self):
        self._setLoteria('DuplaSena')
        self._atualizar() 
        
    def atualizaTimeMania(self):
        self._setLoteria('TimeMania')
        self._atualizar()         
    
     
    def _setLoteria(self, loteria):        
        self._Loteria.setLoteria(loteria) 
        self.MatrizConcursos = MatrizConcursos(os.path.join(self._path , self._Loteria.Parametros.arqMatriz))
        self.MatrizConcursos.updateMatriz()  
         
    def __init__(self, master):
        '''
        Constructor
        '''        
        self._path = sys.path[0] + os.sep + 'Arquivo' + os.sep
        #self._path = os.path.join(sys.path[0],'Arquivo',os.sep)
        self._Loteria = Loterias()
        
        self._setLoteria('MegaSena')
        self._master = master 
        
        # Set background of toplevel window to match
        # current style
        style = ttk.Style()
        theme = style.theme_use()
        default = style.lookup(theme, 'background')
        master.configure(background=default)
      
       
        menubar = Menu(master)
        menuMegaSena = Menu(menubar, tearoff=0)
        menuMegaSena.add_command(label="Atualizar", command=self.atualizaMegaSena)
        menuMegaSena.add_command(label="Resultado Sorteios", command=self.listarSorteiosMegaSena)
        menuMegaSena.add_command(label="Sorteio Por Dezenas", command=self.listarSorteioPorDezenasMegaSena)
        menuMegaSena.add_command(label="Sortear Dezenas", command=self.sortearDezenasMegaSena)
        menubar.add_cascade(label="Mega Sena", menu=menuMegaSena)
        
        menuLotoFacil = Menu(menubar, tearoff=0)
        menuLotoFacil.add_command(label="Atualizar", command=self.atualizaLotoFacil)
        menuLotoFacil.add_command(label="Resultado Sorteios", command=self.listarSorteiosLotoFacil)
        menuLotoFacil.add_command(label="Sorteio Por Dezenas", command=self.listarSorteioPorDezenasLotoFacil)
        menuLotoFacil.add_command(label="Sortear Dezenas", command=self.sortearDezenasLotoFacil)
        menubar.add_cascade(label="Loto Facil", menu=menuLotoFacil)
        
        menuQuina = Menu(menubar, tearoff=0)
        menuQuina.add_command(label="Atualizar", command=self.atualizaQuina)
        menuQuina.add_command(label="Resultado Sorteios", command=self.listarSorteiosQuina)
        menuQuina.add_command(label="Sorteio Por Dezenas", command=self.listarSorteioPorDezenasQuina)
        menuQuina.add_command(label="Sortear Dezenas", command=self.sortearDezenasQuina)
        menubar.add_cascade(label="Quina", menu=menuQuina)
        
        menuLotoMania = Menu(menubar, tearoff=0)
        menuLotoMania.add_command(label="Atualizar", command=self.atualizaLotoMania)
        menuLotoMania.add_command(label="Resultado Sorteios", command=self.listarSorteiosLotoMania)
        menuLotoMania.add_command(label="Sorteio Por Dezenas", command=self.listarSorteioPorDezenasLotoMania)
        menuLotoMania.add_command(label="Sortear Dezenas", command=self.sortearDezenasLotoMania)
        menubar.add_cascade(label="Loto Mania", menu=menuLotoMania)
        
        
        menuDuplaSena = Menu(menubar, tearoff=0)
        menuDuplaSena.add_command(label="Atualizar", command=self.atualizaDuplaSena)
        menuDuplaSena.add_command(label="Resultado Sorteios", command=self.listarSorteiosDuplaSena)
        menuDuplaSena.add_command(label="Sorteio Por Dezenas", command=self.listarSorteioPorDezenasDuplaSena)
        menuDuplaSena.add_command(label="Sortear Dezenas", command=self.sortearDezenasDuplaSena)
        menubar.add_cascade(label="Dupla Sena", menu=menuDuplaSena)
        
        menuTimeMania = Menu(menubar, tearoff=0)
        menuTimeMania.add_command(label="Atualizar", command=self.atualizaTimeMania)
        menuTimeMania.add_command(label="Resultado Sorteios", command=self.listarSorteiosTimeMania)
        menuTimeMania.add_command(label="Sorteio Por Dezenas", command=self.listarSorteioPorDezenasTimeMania)
        menuTimeMania.add_command(label="Sortear Dezenas", command=self.sortearDezenasTimeMania)
        menubar.add_cascade(label="Time Mania", menu=menuTimeMania)
        
        
        master.config(menu=menubar)



        self.Scrolledtreeview1 = ScrolledTreeView (master)
        self.Scrolledtreeview1.place(relx=0.01, rely=0.06, relheight=0.87
                , relwidth=0.97)
Example #9
0
 def _setLoteria(self, loteria):        
     self._Loteria.setLoteria(loteria) 
     self.MatrizConcursos = MatrizConcursos(os.path.join(self._path , self._Loteria.Parametros.arqMatriz))
     self.MatrizConcursos.updateMatriz()  
Example #10
0
class QfrmPrincipalIMP(QtGui.QMainWindow, Ui_MainWindow):
    '''        
    classdocs
    '''
    def __init__(self, parent=None):
        '''
        Constructor
        '''

        super(QfrmPrincipalIMP, self).__init__(parent)
        self.setupUi(self)

        self.connect(self.action_sair, QtCore.SIGNAL('triggered()'),
                     QtCore.SLOT('close()'))
        self.connect(self.action_mega_Sena, QtCore.SIGNAL('triggered()'),
                     self.setMegaSena)
        self.connect(self.action_loto_facil, QtCore.SIGNAL('triggered()'),
                     self.setLotoFacil)
        self.connect(self.action_quina, QtCore.SIGNAL('triggered()'),
                     self.setQuina)
        self.connect(self.action_loto_mania, QtCore.SIGNAL('triggered()'),
                     self.setLotoMania)
        self.connect(self.action_dupla_sena, QtCore.SIGNAL('triggered()'),
                     self.setDuplaSena)
        self.connect(self.action_time_mania, QtCore.SIGNAL('triggered()'),
                     self.setTimeMania)
        self.connect(self.action_sorteio_Por_Dezenas,
                     QtCore.SIGNAL('triggered()'),
                     self.__listarSorteioPorDezenas)
        self.connect(self.action_atualizar, QtCore.SIGNAL('triggered()'),
                     self.__atualizarLoterica)
        self.connect(self.action_resultado_Sorteios,
                     QtCore.SIGNAL('triggered()'), self.__listarSorteios)
        self.connect(self.action_sortear_Dezenas, QtCore.SIGNAL('triggered()'),
                     self.__sortearDezenas)
        self.connect(self.tableWidget, QtCore.SIGNAL('cellClicked(int, int)'),
                     self.__cellClick)
        self.connect(self.action_ajustar_colunas, QtCore.SIGNAL('triggered()'),
                     self.__ajustaColunasTabela)
        self.connect(self.action_ajustar_linhas, QtCore.SIGNAL('triggered()'),
                     self.__ajustaColunasLinhas)
        self.connect(self.tableWidget, QtCore.SIGNAL('itemSelectionChanged()'),
                     self.__itemSelectionChanged)
        self.connect(self.btnAdicionar, QtCore.SIGNAL('clicked()'),
                     self.__addSelecao)
        self.connect(self.btnRemover, QtCore.SIGNAL('clicked()'),
                     self.__removeItemLista)
        self.connect(self.btnCopiar, QtCore.SIGNAL('clicked()'),
                     self.__copiarLista)
        self.connect(self.tableWidget.horizontalHeader(),
                     QtCore.SIGNAL('sectionClicked(int)'),
                     self.__tableColumnClicked)  #clicar na coluna da tabela

        rootDir = sys.path[0]
        self._Loterica = Loterias()
        self._Loterica.setLoteria('MegaSena')
        self.dirArquivos = os.path.join(rootDir, 'Arquivo')
        self.MatrizConcursos = MatrizConcursos(self._Loterica)
        self._selecao = {}
        #self.tableWidget.setStyleSheet("show-decoration-selected: 1;selection-color: #CCC;selection-background-color: white;");
        self.__centralizar()

    def __centralizar(self):
        screen = QtGui.QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

    def __tableColumnClicked(self, pos):
        self.tableWidget.sortByColumn(pos)

    def __copiarLista(self):
        if self.listSelecionados.count():
            items = []
            for index in xrange(self.listSelecionados.count()):
                item = self.listSelecionados.item(index)
                items.append(str(item.text()))

            QtGui.QApplication.clipboard().setText('\n'.join(items))
            print 'Seleção Copiado para clipboard'

    def __removeItemLista(self):
        if self.listSelecionados.count():
            reply = QtGui.QMessageBox.question(
                self, 'Pergunta', "Remover a Seleção?",
                QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
                QtGui.QMessageBox.No)
            if reply == QtGui.QMessageBox.Yes:
                self.listSelecionados.removeItemWidget(
                    self.listSelecionados.takeItem(
                        self.listSelecionados.currentRow()))

    def __addSelecao(self):
        if not self.tableWidget.isSortingEnabled():
            if self._selecao:
                if len(self._selecao) <> self._Loterica.getNumeroBolas():
                    msg = "A aposta esta incorreta! Numero de bolas sorteadas para esta loteria: %s" % self._Loterica.getNumeroBolas(
                    )
                    QtGui.QMessageBox.warning(self, 'Aviso', msg)
                else:
                    msg = '%s: %s' % (self._Loterica.getLotericaDescricao(),
                                      ''.join(', '.join([
                                          x for x in self._selecao.values()
                                      ])).rjust(5, ' '))
                    item = QtGui.QListWidgetItem()
                    item.setText(
                        QtGui.QApplication.translate(
                            "MainWindow", msg, None,
                            QtGui.QApplication.UnicodeUTF8))
                    self.listSelecionados.addItem(item)
                    print msg
                    self.__resetCellColor()
                    self._selecao.clear()
                    self.statusBar().showMessage(QtCore.QString(''))

    def __resetCellColor(self):
        color = QtGui.QColor(255, 255, 255)
        brush = QtGui.QBrush(color)

        for i, j in self._selecao.keys():
            self.tableWidget.item(i, j).setBackground(brush)

    def __itemSelectionChanged(self):

        #self.__resetCellColor()
        '''        
        color = QtGui.QColor(247,241, 45)
        brush = QtGui.QBrush(color)
        
        lst = self.tableWidget.selectedIndexes()
        self._selecao = []
        for i in lst:                        
            if  self._selecao:
                self._selecao.append(', ')
            self._selecao.append(str(i.data().toString()))            
            self.tableWidget.itemFromIndex(i).setBackground(brush)
            
        msg = ' %d Selecionado(s) : %s' % (len(lst), ''.join(self._selecao))
        self.lblStatus.clear()
        #self.lblStatus.setText( '%d Selecionado(s) : %s' %( len(lst), ''.join( self._selecao) )  )
        self.statusBar().showMessage(QtCore.QString(msg)) 
        '''

    def __cellClick(self, row, col):

        item = self.tableWidget.item(row, col)
        valor = str(item.data(0).toString())
        key = (row, col)
        '''Chave ja existe, remove a selecao'''
        if self._selecao.has_key(key):
            color = QtGui.QColor(255, 255, 255)
            brush = QtGui.QBrush(color)
            item.setBackground(brush)
            self._selecao.pop(key)
        elif valor in self._selecao.values():
            '''Valor ja existe'''
            pass
        else:
            self._selecao[key] = valor
            color = QtGui.QColor(247, 241, 45)
            brush = QtGui.QBrush(color)
            item.setBackground(brush)
        sorted(self._selecao.items())
        msg = ' %d Selecionado(s) : %s' % (len(self._selecao), ', '.join(
            [x for x in self._selecao.values()]))
        self.lblStatus.clear()
        self.statusBar().showMessage(QtCore.QString(msg))

    def __ajustaColunasTabela(self):
        self.tableWidget.resizeColumnsToContents()

    def __ajustaColunasLinhas(self):
        self.tableWidget.resizeRowsToContents()

    def setMegaSena(self):
        self.__setLoterica('MegaSena')

    def setLotoFacil(self):
        self.__setLoterica('LotoFacil')

    def setQuina(self):
        self.__setLoterica('Quina')

    def setLotoMania(self):
        self.__setLoterica('LotoMania')

    def setDuplaSena(self):
        self.__setLoterica('DuplaSena')

    def setTimeMania(self):
        self.__setLoterica('TimeMania')

    def __setLoterica(self, loterica):
        self._Loterica.setLoteria(loterica)
        self.__showMessageStatus(self._Loterica.getLotericaDescricao())
        titulo = 'Loteria: %s - %s Bolas e %s Dezenas' % (
            self._Loterica.getLotericaDescricao(),
            self._Loterica.getNumeroBolas(), self._Loterica.getNumeroDezenas())
        self.label.setText(QtCore.QString(titulo))
        self.__listarSorteios()
        self._selecao.clear()

    def __showMessageStatus(self, msg):
        self.statusBar().showMessage(QtCore.QString(msg))
        print msg

    def __atualizarLoterica(self):
        try:
            self.__showMessageStatus('Baixando...')

            d = Downloads()
            d.FileFromUrl(
                self._Loterica.Parametros.url,
                os.path.join(self.dirArquivos,
                             self._Loterica.Parametros.arqZip))
            self.__showMessageStatus('Concluido.')

            self.__showMessageStatus('Descompactando arquivo...')

            z = ZipLib()
            z.Descompactar(
                os.path.join(self.dirArquivos,
                             self._Loterica.Parametros.arqZip),
                self.dirArquivos)

            self.__showMessageStatus('Concluido')

            self.__showMessageStatus('Processando arquivo...')

            h = HtmlTotxt(self._Loterica)
            h.ProcessarArquivo(
                os.path.join(self.dirArquivos,
                             self._Loterica.Parametros.arqHtml),
                os.path.join(self.dirArquivos,
                             self._Loterica.Parametros.arqMatriz))

            self.__showMessageStatus('Atualizacao Concluida')

            self.MatrizConcursos.updateMatriz()

            self.__listarSorteios()

            QtGui.QMessageBox.warning(self, 'Application',
                                      QtCore.QString('Atualizacao Concluida!'))
            self.statusBar().showMessage(
                QtCore.QString(self._Loterica.getLoteria()))

        except Exception as e:
            print e
            QtGui.QMessageBox.critical(self, 'Erro encontrado',
                                       QtCore.QString(str(e)))

    def __AddItemLinhaTabela(self, row, col, valor):
        item = QtGui.QTableWidgetItem()
        item.setText(
            QtGui.QApplication.translate("MainWindow", valor, None,
                                         QtGui.QApplication.UnicodeUTF8))
        item.setTextAlignment(QtCore.Qt.Alignment(QtCore.Qt.AlignCenter))
        self.tableWidget.setItem(row, col, item)

    def __AddColunaTabelaHorizontalHeader(self, col, valor):
        item = QtGui.QTableWidgetItem()
        item.setText(
            QtGui.QApplication.translate("MainWindow", valor, None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.tableWidget.setHorizontalHeaderItem(col, item)

    def __AddColunaTabelaVerticalHeaderItem(self, row, valor):
        item = QtGui.QTableWidgetItem()
        item.setText(
            QtGui.QApplication.translate("MainWindow", valor, None,
                                         QtGui.QApplication.UnicodeUTF8))
        self.tableWidget.setVerticalHeaderItem(row, item)

    def __adicionarColunas(self, tam):
        self.tableWidget.clear()
        self.tableWidget.setColumnCount(tam)  #uma coluna a mais para o total

        for x in range(0, tam):
            self.__AddColunaTabelaHorizontalHeader(x, 'Bola {0}'.format(x + 1))

    def __listarSorteios(self):
        '''Lista os sorteios da loterica'''
        self.MatrizConcursos = MatrizConcursos(
            os.path.join(self.dirArquivos,
                         self._Loterica.Parametros.arqMatriz))
        self.MatrizConcursos.updateMatriz()

        self.__adicionarColunas(self._Loterica.getNumeroBolas())
        self.tableWidget.setRowCount(self.MatrizConcursos.count())
        row = 0

        for i in self.MatrizConcursos.getMatriz():
            col = 0
            self.__AddColunaTabelaVerticalHeaderItem(row, i[:1][0])
            for num in i[1:]:
                self.__AddItemLinhaTabela(row, col, num)
                col = col + 1
            row = row + 1
        self.__calculaTotalRow()

    def __listarSorteioPorDezenas(self):
        '''Exibe sorteios agrupados por dezenas'''
        concurso = ConcursoCalculos()
        TotaisSorteios = concurso.getTotaisPorDezena(
            self.MatrizConcursos.getMatriz(), self._Loterica,
            self.__IformaQuantidade(0))

        self.__adicionarColunas(self._Loterica.getNumeroBolas())
        self.tableWidget.setRowCount(self._Loterica.getNumeroDezenas()
                                     )  #Adicionar coluna a mais para o zero

        #    for r,v in enumerate(range(0,self._Loterica.getNumeroDezenas()),self._Loterica.getDezenaInicial()):
        #        self.__AddColunaTabelaVerticalHeaderItem(r,v)

        for k, i in TotaisSorteios.items():
            if k == (60, 5):
                pass
            self.__AddItemLinhaTabela(k[1] - 1, k[0] - 1, str(i))

        self.__calculaTotalRow()

    def __sortearDezenas(self):
        '''Exibe a Lista de Dezenas Sorteadas '''

        numSorteio = self.__IformaQuantidade(10)
        self.__adicionarColunas(self._Loterica.getNumeroBolas() + 1)
        self.tableWidget.setRowCount(numSorteio)

        concurso = ConcursoCalculos()
        dezenasSoteadas = concurso.SortearDezenas(self._Loterica, numSorteio)

        for row, x in enumerate(dezenasSoteadas):
            total = 0
            for col, num in enumerate(x):
                self.__AddItemLinhaTabela(row, col, str(num))
                total = total + int(num)

        self.__calculaTotalRow()
        self.tableWidget.resizeColumnsToContents()

    def __calculaTotalRow(self):
        #Total
        col = self.tableWidget.columnCount()
        self.tableWidget.setColumnCount(col + 1)
        self.__AddColunaTabelaHorizontalHeader(col, 'Total')

        for i in range(0, self.tableWidget.rowCount()):
            total = 0
            for j in range(0, self.tableWidget.columnCount() - 1):
                total += int(self.tableWidget.item(i, j).text())
            self.__AddItemLinhaTabela(i, col, str(total))

    def __IformaQuantidade(self, qtdedefault):
        ''' 
        Criar o dialogo e aguardar o seu retorno 
        '''
        window = QNumSorteioIMP(self)
        window.numeroSpinBox.setValue(qtdedefault)
        window.setWindowModality(QtCore.Qt.WindowModal)
        window.exec_()

        return window.numeroSpinBox.value()