Advertisement
phiron

formJogo

Nov 13th, 2012
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.25 KB | None | 0 0
  1. '''
  2. Created on 13/11/2012
  3.  
  4. @author: phiron
  5. '''
  6. from PyQt4.QtCore import SIGNAL, Qt
  7. from PyQt4.QtGui import QMainWindow, QTableWidgetItem, QFileDialog, QTextDocument, QPrintPreviewDialog, QProgressDialog
  8. from interfaces.ui_formJogos import Ui_JanelaPrincipal
  9. from classes.Jogo import Jogo
  10.  
  11. class FormJogos(QMainWindow, Ui_JanelaPrincipal):
  12.     def __init__(self, parent = None):
  13.         super(FormJogos, self).__init__(parent)
  14.         self.setupUi(self)
  15.         self.conectar()
  16.         self.jogo = None
  17.         self.tipo_jogo = "Genérico"
  18.    
  19.     def conectar(self):
  20.         acoes = (self.actionDupla_Sena, self.actionLotomania, self.actionMega_Sena,
  21.                self.actionQuina)
  22.         for acao in acoes:
  23.             self.connect(acao, SIGNAL("triggered()"), self.acaoClick)
  24.         self.connect(self.btnJogar, SIGNAL("clicked()"), self.gerarJogos)
  25.         self.connect(self.actionSalvar, SIGNAL('triggered()'), self.salvarJogoEmTexto)
  26.         self.connect(self.actionImprimir, SIGNAL('triggered()'), self.imprimir)
  27.    
  28.     def gerarJogos(self):
  29.         jg = Jogo(self.txtDezenas.text(), self.txtQtdEscolhas.text(), self.txtQtdJogos.text())
  30.         self.jogo = jg
  31.         self.popularTabela(self.jogo.jogos)
  32.    
  33.     def popularTabela(self, jgs):
  34.         '''
  35.        popula a tabela com o jogo dado
  36.        '''
  37.         self.tblJogos.setColumnCount(int(self.txtDezenas.text()))
  38.         self.tblJogos.setRowCount(len(jgs))
  39.         progresso = QProgressDialog("Preenchendo a Tabela...", "Cancelar", 0, len(jgs), self)
  40.         progresso.setWindowTitle('Adicionando {0} registros à Tabela'.format(len(jgs)))
  41.         progresso.setWindowModality(Qt.WindowModal)
  42.         x = 0
  43.         for jogo in jgs:
  44.             y = 0
  45.             for dezena in jogo:
  46.                 numero = QTableWidgetItem('%s' % dezena)
  47.                 self.tblJogos.setItem(x, y, numero)
  48.                 y += 1
  49.             x += 1
  50.             progresso.setValue(x)
  51.            
  52.     def acaoClick(self):
  53.         '''
  54.        Quando aciono alguma action de jogos no menu arquivos eu as conecto com essa funcao
  55.        '''
  56.         self.limparForm()
  57.         dic_acao = {
  58.         self.actionDupla_Sena:(6, 50, "Dupla Sena"),
  59.         self.actionLotomania:(15, 80, "Lotomania"),
  60.         self.actionMega_Sena:(6, 60, "Mega Sena"),
  61.         self.actionQuina:(5, 90, "Quina"),
  62.                   }
  63.         acao = dic_acao[self.sender()]
  64.         self.popularTextos(acao[0], acao[1], acao[2])
  65.         self.txtQtdJogos.setFocus()
  66.         self.txtQtdJogos.setCursorPosition(0)
  67.         return None
  68.    
  69.     def popularTextos(self, dezenas, qtd_escolhas, tipo_jogo = "Genérico"):
  70.         '''
  71.        popula os textos com os valores dados
  72.        '''
  73.         self.txtDezenas.setText(str(dezenas))
  74.         self.txtQtdEscolhas.setText(str(qtd_escolhas))
  75.         self.tipo_jogo = tipo_jogo
  76.         return None
  77.    
  78.     def salvarJogoEmTexto(self):
  79.         '''
  80.        pego o jogo e salvo em formato texto no sistema de arquivos...
  81.        '''
  82.         if self.jogo == None:
  83.             return None
  84.         import os
  85.         path = os.path.abspath(__file__)
  86.         dir_path = os.path.dirname(path)#defino o caminho do arquivo
  87.         dialogo = QFileDialog.getSaveFileName(self, "Selecione o arquivo para salvar o jogo...", dir_path, "Arquivos TXT (*.txt *.TXT *.Txt)")  
  88.         self.jogo.get_texto(dialogo)
  89.         self.statusbar.showMessage("Arquivo salvo com sucesso...", 5000)
  90.         return None
  91.    
  92.     def imprimir(self):
  93.         '''
  94.        Imprime a tabela do jogo
  95.        '''
  96.        
  97.         if self.jogo == None:
  98.             return None  
  99.         texto = QTextDocument()
  100.         texto.setDocumentMargin(0.8)
  101.         texto.setPlainText(self.jogo.retornaHtml(self.tipo_jogo))
  102.         texto.setHtml(texto.toPlainText())
  103.         dialogo = QPrintPreviewDialog()
  104.         self.connect(dialogo, SIGNAL("paintRequested (QPrinter *)"), texto.print_)
  105.         dialogo.exec_()
  106.         return None
  107.        
  108.     def limparForm(self):
  109.         '''
  110.        limpo os itens do formulario
  111.        '''
  112.         self.jogo = None
  113.         self.tipo_jogo = "Genérico"
  114.         ls = [self.txtDezenas, self.txtQtdEscolhas, self.txtQtdJogos, self.tblJogos]
  115.         for wdg in ls:
  116.             wdg.clear()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement