def __init__(self, usuario=None, parent=None): super().__init__(parent) self._usuario = usuario self._servicoEnviar = ServicoArquivoEnviar(40000,40001) self._servicoReceber = ServicoArquivoReceber(40001,40000) self._servicoReceber.pedidoReceberArquivo.connect(self._recebendoArquivo) self._servicoReceber.porcentagem.connect(self._alterarPorcentagem) self._servicoEnviar.porcentagem.connect(self._alterarPorcentagem) self._servicoReceber.cancelado.connect(self._estadoCancelado) self._servicoEnviar.cancelado.connect(self._estadoCancelado) self._servicoReceber.finalizado.connect(self._estadoFinalizado) self._servicoEnviar.finalizado.connect(self._estadoFinalizado) self._configurarGui() self._btnEnviar.enterPressed.connect(self._selecionarArquivoEnviar) self._btnReceber.enterPressed.connect(self._selecionarArquivoReceber) self._btnCancelar.enterPressed.connect(self.cancelar)
class TelaArquivo(PainelConsole): arquivoCancelado = pyqtSignal() arquivoFinalizado = pyqtSignal() def __init__(self, usuario=None, parent=None): super().__init__(parent) self._usuario = usuario self._servicoEnviar = ServicoArquivoEnviar(40000,40001) self._servicoReceber = ServicoArquivoReceber(40001,40000) self._servicoReceber.pedidoReceberArquivo.connect(self._recebendoArquivo) self._servicoReceber.porcentagem.connect(self._alterarPorcentagem) self._servicoEnviar.porcentagem.connect(self._alterarPorcentagem) self._servicoReceber.cancelado.connect(self._estadoCancelado) self._servicoEnviar.cancelado.connect(self._estadoCancelado) self._servicoReceber.finalizado.connect(self._estadoFinalizado) self._servicoEnviar.finalizado.connect(self._estadoFinalizado) self._configurarGui() self._btnEnviar.enterPressed.connect(self._selecionarArquivoEnviar) self._btnReceber.enterPressed.connect(self._selecionarArquivoReceber) self._btnCancelar.enterPressed.connect(self.cancelar) def _configurarGui(self): p = PainelBotoesConsole() self._btnEnviar = p.addButton("Enviar") self._btnEnviar.setEnabled(self._usuario != None) self._btnReceber = p.addButton("Receber") self._btnReceber.setEnabled(False) self._btnCancelar = p.addButton("Cancelar") self._btnCancelar.setVisible(False) layoutInformacao = VLayoutConsole() self._lblInformacao = LabelConsole() layoutInformacao.addTela(50, self._lblInformacao) layout = VLayoutConsole() self._barraPorcentagem = ProgressBarConsole() self._barraPorcentagem.setVisible(False) layout.addTela(50, self._barraPorcentagem, "^") self.addTela(p) self.addTela(layoutInformacao) self.addTela(layout) def _alterarInformacao(self, texto): self._lblInformacao.setTexto(texto) def _estadoCancelado(self): self.arquivoCancelado.emit() self._alterarInformacao("Cancelado") QTimer.singleShot(2000, lambda: self._estadoInicial()) def _estadoFinalizado(self): self.arquivoFinalizado.emit() self._alterarInformacao("Finalizado") QTimer.singleShot(2000, lambda: self._estadoInicial()) def _estadoInicial(self): self._alterarPorcentagem(0) self._lblInformacao.setTexto("") self._btnEnviar.setEnabled(True) self._btnReceber.setEnabled(False) self._btnCancelar.setVisible(False) self._barraPorcentagem.setVisible(False) def _recebendoArquivo(self, de, nomeArquivo): self._alterarInformacao("Receber -> {0} de {1}".format(nomeArquivo, de)) self._barraPorcentagem.setVisible(True) self._btnEnviar.setEnabled(False) self._btnReceber.setEnabled(True) self._btnCancelar.setVisible(True) def _alterarPorcentagem(self, valor): self._barraPorcentagem.setPorcentagem(valor) def trabalhando(self): return self._servicoEnviar.estaEnviandoArquivo() or self._servicoReceber.estaRecebendoArquivo() def setUsuario(self, usuario): temp = self._usuario self._usuario = usuario self._servicoEnviar.setPara(self._usuario.getIP()) if not temp: self._estadoInicial() def cancelar(self): if self._servicoEnviar.estaEnviandoArquivo(): self._servicoEnviar.cancelar() elif self._servicoReceber.estaRecebendoArquivo(): self._servicoReceber.cancelar() self._estadoCancelado() def _selecionarArquivoEnviar(self): m = MenuAbrirArquivoConsole() p = PopupConsole(m) m.arquivoSelecionado.connect(lambda arq: p.close()) m.arquivoSelecionado.connect(self.enviarArquivo) p.show() def enviarArquivo(self, path): self._servicoEnviar.enviarArquivo(path, self._usuario.getIP()) self._alterarInformacao('Enviando '+QFileInfo(path).fileName()) self._barraPorcentagem.setVisible(True) def _selecionarArquivoReceber(self): m = MenuSalvarArquivoConsole() p = PopupConsole(m) m.arquivoSelecionado.connect(lambda arq: p.close()) m.arquivoSelecionado.connect(self.receberArquivo) p.show() def receberArquivo(self, path): self._servicoReceber.aceitarArquivo(path)