Advertisement
psicalrf

Roteiro RPC - py

Jan 24th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.89 KB | None | 0 0
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. import sys
  5.  
  6. from PyQt5.QtCore import QFile, QTextStream
  7. from PyQt5.QtGui import QBrush,  QColor
  8. from PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QHBoxLayout,
  9.                              QHeaderView, QMainWindow, QMenu, QMenuBar,
  10.                              QStatusBar, QTableWidget, QTableWidgetItem,
  11.                              QWidget)
  12.  
  13.  
  14. class planilhaRoteiro(QTableWidget):
  15.     def __init__(self):
  16.         QTableWidget.__init__(self)
  17.  
  18.         self.setColumnCount(9)
  19.         self.setHorizontalHeaderLabels(
  20.             ["R/L", "CM/ID", "TITULO", "DUR", "PT", "CLIENTE", "", "PT",
  21.                     "POSICAO"])
  22.  
  23.         self.items = 0
  24.  
  25.     # Popular tabela com arquivo TXT
  26.     def inserir(self, r, cm, titulo, dur, pt, cliente, ptposicao, posicao):
  27.         self.insertRow(self.items)
  28.         self.setItem(self.items, 0, QTableWidgetItem(r))
  29.         self.setItem(self.items, 1, QTableWidgetItem(cm))
  30.         self.setItem(self.items, 2, QTableWidgetItem(titulo))
  31.         self.setItem(self.items, 3, QTableWidgetItem(dur))
  32.         self.setItem(self.items, 4, QTableWidgetItem(pt))
  33.         self.setItem(self.items, 5, QTableWidgetItem(cliente))
  34.         self.setItem(self.items, 7, QTableWidgetItem(ptposicao))
  35.         self.setItem(self.items, 8, QTableWidgetItem(posicao))
  36.         self.items += 1
  37.  
  38.     # Ajustar tabela ao conteúdo do TXT
  39.     def ajustarTamanhoColuna(self):
  40.         self.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
  41.  
  42.     # Pular 2 linhas entre intervalos distintos
  43.     def inserirLinhasVazias(self):
  44.         self.continuarLoop = True
  45.         self.itemPtIpAnterior = QTableWidgetItem()
  46.         self.itemPtIp = QTableWidgetItem()
  47.         self.itemPGMPosAnterior = QTableWidgetItem()
  48.         self.itemPGMPos = QTableWidgetItem()
  49.         self.linha = 1
  50.         while (self.continuarLoop):
  51.             # Dados PT/IP
  52.             self.itemPtIpAnterior = self.item(self.linha-1, 7)
  53.             self.itemPtIp = self.item(self.linha, 7)
  54.             self.PtIpAnterior = self.itemPtIpAnterior.text()
  55.             self.PtIp = self.itemPtIp.text()
  56.  
  57.             # Dados PGMPos
  58.             self.itemPGMPosAnterior = self.item(self.linha-1, 8)
  59.             self.itemPGMPos = self.item(self.linha, 8)
  60.             self.PGMPosAnterior = self.itemPGMPosAnterior.text()
  61.             self.PGMPos = self.itemPGMPos.text()
  62.  
  63.             if (self.PGMPos != self.PGMPosAnterior or self.PtIp != self.PtIpAnterior):
  64.                 self.insertRow(self.linha)
  65.                 self.setItem(self.linha, 0, QTableWidgetItem(""))
  66.                 self.setItem(self.linha, 1, QTableWidgetItem(""))
  67.                 self.setItem(self.linha, 2, QTableWidgetItem(""))
  68.                 self.setItem(self.linha, 3, QTableWidgetItem(""))
  69.                 self.setItem(self.linha, 4, QTableWidgetItem(""))
  70.                 self.setItem(self.linha, 5, QTableWidgetItem(""))
  71.                 self.setItem(self.linha, 7, QTableWidgetItem(""))
  72.                 self.setItem(self.linha, 8, QTableWidgetItem(""))
  73.                 self.insertRow(self.linha+1)
  74.                 self.setItem(self.linha+1, 0, QTableWidgetItem(""))
  75.                 self.setItem(self.linha+1, 1, QTableWidgetItem(""))
  76.                 self.setItem(self.linha+1, 2, QTableWidgetItem(""))
  77.                 self.setItem(self.linha+1, 3, QTableWidgetItem(""))
  78.                 self.setItem(self.linha+1, 4, QTableWidgetItem(""))
  79.                 self.setItem(self.linha+1, 5, QTableWidgetItem(""))
  80.                 self.setItem(self.linha+1, 7, QTableWidgetItem(""))
  81.                 self.setItem(self.linha+1, 8, QTableWidgetItem(""))
  82.                 self.linha += 2
  83.  
  84.             self.totalLinha = self.rowCount()
  85.             self.linha += 1
  86.             if (self.totalLinha == self.linha):
  87.                 self.continuarLoop = False
  88.  
  89.     def colorirLinhas(self):
  90.         self.itemRML = QTableWidgetItem()
  91.         self.linha = 0
  92.         self.totalLinha = self.rowCount()
  93.         self.continuarLoop = True
  94.         while (self.continuarLoop):
  95.             self.itemRML = self.item(self.linha, 0)
  96.             self.rml = self.itemRML.text()
  97.             if (self.rml == "R"):
  98. '          self.itemRML.setForeground(QBrush.setColor(QColor.setBlue))
  99.            self.linha += 1
  100.            if (self.totalLinha == self.linha):
  101.                self.continuarLoop = False
  102.  
  103.  
  104. class BarraMenu(QMenuBar):
  105.    def __init__(self, roteiro):
  106.        QMenuBar.__init__(self)
  107.  
  108.        # Menu ARQUIVO
  109.        self.menuArquivo = QMenu('ARQUIVO', self)
  110.  
  111.        # SubMenu ARQUIVO
  112.        self.newAcaoAbrirRoteiro = QAction('Novo Roteiro', self)
  113.        self.newAcaoAbrirRoteiro.setStatusTip("Carrega novo Roteiro, TXT")
  114.        self.newAcaoAbrirRoteiro.setShortcut("Ctrl+A")
  115.        self.newAcaoAbrirRoteiro.triggered.connect(self.abrirRoteiroTXT)
  116.        self.menuArquivo.addAction(self.newAcaoAbrirRoteiro)
  117.        self.addMenu(self.menuArquivo)
  118.  
  119.        # Menu AJUDA
  120.        self.menuAjuda = QMenu('AJUDA', self)
  121.  
  122.        # SubMenu AJUDA
  123.        self.newAcaoSobre = QAction('Sobre', self)
  124.        self.menuAjuda.addAction(self.newAcaoSobre)
  125.        self.addMenu(self.menuAjuda)
  126.  
  127.    # Funcao Abrir TXT - Roteiro enviado pela OPEC
  128.    def abrirRoteiroTXT(self):
  129.        dialogAbrirRoteiro = QFileDialog.getOpenFileName(
  130.            self, "ABRIR ROTEIRO", "C:\\roteiro\\", "Roteiro RPC (*.txt)")
  131.        if dialogAbrirRoteiro:
  132.            if dialogAbrirRoteiro[0] != "":
  133.                dadosArquivo = QFile(dialogAbrirRoteiro[0])
  134.                dadosArquivo.open(QFile.ReadOnly)
  135.                ts = QTextStream(dadosArquivo)
  136.                self.continuar = True
  137.                while self.continuar:
  138.                    dados_extraidos = ts.readLine()
  139.                    if dados_extraidos == "":
  140.                        self.continuar = False
  141.                        break
  142.                    self.r = dados_extraidos[321:322].strip()
  143.                    self.cmid = dados_extraidos[2:8].strip()
  144.                    self.titulo = dados_extraidos[68:97].strip()
  145.                    self.duracao = dados_extraidos[99:102].strip()
  146.                    self.ptcp = dados_extraidos[102:104].strip()
  147.                    self.cliente = dados_extraidos[104:255].strip()
  148.                    self.pt = dados_extraidos[330:332].strip()
  149.                    self.posicao = dados_extraidos[332:364].strip()
  150.                    roteiro.inserir(self.r, self.cmid, self.titulo, self.duracao,
  151.                                    self.ptcp, self.cliente, self.pt, self.posicao)
  152.                roteiro.ajustarTamanhoColuna()
  153.                roteiro.inserirLinhasVazias()
  154.                roteiro.colorirLinhas()
  155.  
  156.  
  157. class TelaCentral(QWidget):
  158.    def __init__(self, roteiro):
  159.        QWidget.__init__(self)
  160.  
  161.        self.layout = QHBoxLayout()
  162.        self.layout.addWidget(roteiro)
  163.        self.setLayout(self.layout)
  164.  
  165.  
  166. class BarraStatus(QStatusBar):
  167.    def __init__(self):
  168.        QStatusBar.__init__(self)
  169.        self.showMessage('PRONTO')
  170.  
  171.  
  172. class JanelaPrincipal(QMainWindow):
  173.    def __init__(self, menu, telacentral, status):
  174.        QMainWindow.__init__(self)
  175.        self.setWindowTitle("PROGRAMACAO - ROTEIRO RPC")
  176.        self.setMenuBar(menu)
  177.        self.setCentralWidget(telacentral)
  178.        self.setStatusBar(status)
  179.        self.resize(800, 600)
  180.        self.show()
  181.  
  182.  
  183. if __name__ == "__main__":
  184.    # Qt Application
  185.    app = QApplication(sys.argv)
  186.    # app.setStyle('windowsvista')
  187.    # app.setStyle('Windows')
  188.    app.setStyle('Fusion')
  189.  
  190.    # Planilha Roteiro
  191.    roteiro = planilhaRoteiro()
  192.  
  193.    # Barra de Menu
  194.    menu = BarraMenu(roteiro)
  195.  
  196.    # Tela Central
  197.    telacentral = TelaCentral(roteiro)
  198.  
  199.    # Barra de Status
  200.    status = BarraStatus()
  201.  
  202.    # Janela Principal
  203.    janela = JanelaPrincipal(menu, telacentral, status)
  204.  
  205.    # Execute application
  206.    sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement