コード例 #1
0
ファイル: dlgEditPAR.py プロジェクト: mlabru/sipar
    def accept(self):

        #/ nome do metodo (logger)
        #/ ----------------------------------------------------------------------------------------
        l_szMetodo = "dlgEditPAR::accept"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  obtem os dados do sítio PAR
        #*/
        l_szKey = self.qleKey.text().toUpper()
        l_szDescr = self.qleDescr.text().toUpper()

        #** ---------------------------------------------------------------------------------------
        #*  obtem os valores de performance do sítio PAR
        #*/
        l_iCab = int(self.qsbCab.value())

        l_fHAnt0 = float(self.qsbHAnt0.value())
        l_fHAnt1 = float(self.qsbHAnt1.value())

        l_fDstAntEixo = float(self.qsbDstAntEixo.value())
        l_fDstAntPT0 = float(self.qsbDstAntPT0.value())
        l_fDstAntPT1 = float(self.qsbDstAntPT1.value())

        l_fAngRampa = float(self.qsbAngRampa.value())
        l_iRetardo = int(self.qsbRetardo.value())
        l_iDecl = int(self.qsbDecl.value())

        #** ---------------------------------------------------------------------------------------
        #*  PAR inexistente ?
        #*/
        if (None == self._oPAR):

            #** -----------------------------------------------------------------------------------
            #*  cria um novo sítio PAR
            #*/
            self._oPAR = clsPAR.clsPAR([
                l_szKey, l_szDescr, l_iCab, l_fHAnt0, l_fHAnt1, l_fDstAntEixo,
                l_fDstAntPT0, l_fDstAntPT1, l_fAngRampa, l_iRetardo, l_iDecl
            ])
            #assert ( self._oPAR )

            #** -----------------------------------------------------------------------------------
            #*  cria uma nova entrada na tabela de sítios PAR com o PAR criado
            #*/
            self._oSitPAR.add(self._oPAR, l_szKey)

        #** ---------------------------------------------------------------------------------------
        #*  se existe, atualiza a informação
        #*/
        else:

            #** -----------------------------------------------------------------------------------
            #*  atualiza os dados do sítio PAR
            #*/
            self._oSitPAR.updateTabela(self._oPAR, [
                l_szKey, l_szDescr, l_iCab, l_fHAnt0, l_fHAnt1, l_fDstAntEixo,
                l_fDstAntPT0, l_fDstAntPT1, l_fAngRampa, l_iRetardo, l_iDecl
            ])

        #** ---------------------------------------------------------------------------------------
        #*  faz o "accept"
        #*/
        QtGui.QDialog.accept(self)
コード例 #2
0
ファイル: clsTabelaPAR.py プロジェクト: mlabru/sipar
    def populateFromData(self, f_lstData):

        #/ globals
        #/ ----------------------------------------------------------------------------------------
        #global locDefs.xMAX_PAR

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "clsTabelaPAR::populateFromData"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  zera índices
        #*/
        l_iD = 0

        #** ---------------------------------------------------------------------------------------
        #*  calcula o número de PARs na tabela
        #*/
        locDefs.xMAX_PAR = (len(f_lstData) // 11)
        ##l_log.info ( "locDefs.xMAX_PAR: " + str ( locDefs.xMAX_PAR ))

        #** ---------------------------------------------------------------------------------------
        #*  cria a tabela de PARs
        #*/
        self._tabItens = [None for _ in xrange(locDefs.xMAX_PAR)]
        #assert ( self._tabItens )

        ##l_log.info ( "self._tabItens: " + str ( self._tabItens ))

        #** ---------------------------------------------------------------------------------------
        #*  carrega os dados da tabela de PARs
        #*/
        for _ in xrange(locDefs.xMAX_PAR):

            ##l_log.info ( "l_btPAR: " + str ( l_btPAR ))

            #** -----------------------------------------------------------------------------------
            #*  chave do PAR
            #*/
            l_szKey = str(f_lstData[l_iD]).upper()
            l_iD += 1

            ##l_log.info ( "_szKey: " + str ( l_szKey ))

            #** -----------------------------------------------------------------------------------
            #*  descrição do PAR
            #*/
            l_szDescr = str(f_lstData[l_iD]).upper().replace('_', ' ')
            l_iD += 1

            ##l_log.info ( "_szDescr: " + str ( l_szDescr ))

            #** -----------------------------------------------------------------------------------
            #*  carrega as pistas
            #*/
            l_iCab0 = int(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_iCab0: " + str ( l_iCab0 ))

            #** -----------------------------------------------------------------------------------
            #*  altura da antena relativo ao ponto toque principal
            #*/
            l_fHAnt0 = float(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_fHAnt0: " + str ( l_fHAnt0 ))

            #** -----------------------------------------------------------------------------------
            #*  altura da antena relativo ao ponto toque secundário
            #*/
            l_fHAnt1 = float(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_fHAnt1: " + str ( l_fHAnt1 ))

            #** -----------------------------------------------------------------------------------
            #*  afastamento da antena ao eixo da pista
            #*/
            l_fDstAntEixo = float(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_fDstAntEixo: " + str ( l_fDstAntEixo ))

            #** -----------------------------------------------------------------------------------
            #*  distância da antena ao ponto toque principal
            #*/
            l_fDstAntPT0 = float(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_fDstAntPT0: " + str ( l_fDstAntPT0 ))

            #** -----------------------------------------------------------------------------------
            #*  distância da antena ao ponto toque secundário
            #*/
            l_fDstAntPT1 = float(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_fDstAntPT1: " + str ( l_fDstAntPT1 ))

            #** -----------------------------------------------------------------------------------
            #*  angulo da rampa de aproximacao
            #*/
            l_fAngRampa = float(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_fAngRampa: " + str ( l_fAngRampa ))

            #** -----------------------------------------------------------------------------------
            #*  carrega os retardos
            #*/
            l_iRetardo = int(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_iRetardo: " + str ( l_iRetardo ))

            #** -----------------------------------------------------------------------------------
            #*  declinação magnética do PAR
            #*/
            l_iDecl = int(f_lstData[l_iD])
            l_iD += 1

            ##l_log.info ( "_iDecl: " + str ( l_iDecl ))

            #** -----------------------------------------------------------------------------------
            #*  cria a PAR
            #*/
            l_PAR = clsPAR.clsPAR([
                l_szKey, l_szDescr, l_iCab0, l_fHAnt0, l_fHAnt1, l_fDstAntEixo,
                l_fDstAntPT0, l_fDstAntPT1, l_fAngRampa, l_iRetardo, l_iDecl
            ])
            #assert ( l_PAR )

            #** -----------------------------------------------------------------------------------
            #*  coloca o PAR na tabela de PARs
            #*/
            self.add(l_PAR, l_szKey)

        #** ---------------------------------------------------------------------------------------
        #*  após a carga, reseta o flag dirty
        #*/
        self._bDirty = False
コード例 #3
0
ファイル: modelPiloto.py プロジェクト: mlabru/sipar
    def loadConfigExe(self, f_szCfg):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "modelPiloto::loadConfigExe"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  verifica condições de execução
        #*/
        #assert ( f_szCfg )
        #l_log.info ( u"Configuração de exercício a carregar: " + f_szCfg )

        #** ---------------------------------------------------------------------------------------
        #*  abre o arquivo de configuração
        #*/
        l_fdCfg = open(f_szCfg, "r")
        #assert ( l_fdCfg )

        #** ---------------------------------------------------------------------------------------
        #*  cria a área de dados
        #*/
        l_data = []

        #** ---------------------------------------------------------------------------------------
        #*  percorre todas as linhas do arquivo de configuração
        #*/
        for l_line in l_fdCfg.readlines():

            #** -----------------------------------------------------------------------------------
            #*  checa se é uma linha de comentário ou vazia
            #*/
            if ((not l_line.startswith("#"))
                    and (not l_line.startswith("\n"))):

                #** -------------------------------------------------------------------------------
                #*  checa end-of-line
                #*/
                if (l_line.endswith("\n") or l_line.endswith("\x1a")):

                    #** ---------------------------------------------------------------------------
                    #*  aceita o valor sem o end-of-line
                    #*/
                    l_data.extend(l_line[:-1].split())

                #** -------------------------------------------------------------------------------
                #*/
                else:

                    #** ---------------------------------------------------------------------------
                    #*  aceita o valor
                    #*/
                    l_data.extend(l_line.split())

        #** ---------------------------------------------------------------------------------------
        #*  fecha o arquivo
        #*/
        l_fdCfg.close()

        #** ---------------------------------------------------------------------------------------
        #*  carrega a parte do exercício
        #*/
        self._oExe = clsExe.clsExe(l_data[0:10])
        #assert ( self._oExe )

        #** ---------------------------------------------------------------------------------------
        #*  carrega a parte do PAR
        #*/
        l_oPAR = clsPAR.clsPAR(l_data[10:21])
        #assert ( l_oPAR )

        #** ---------------------------------------------------------------------------------------
        #*  salva o PAR no exercício
        #*/
        self._oExe.setPAR(l_oPAR)

        #** ---------------------------------------------------------------------------------------
        #*  carrega a parte da aeronave
        #*/
        l_oAnv = clsAnv.clsAnv(l_data[21:28])
        #assert ( l_oAnv )

        #** ---------------------------------------------------------------------------------------
        #*  salva a aeronave no exercício
        #*/
        self._oExe.setAnv(l_oAnv)

        #** ---------------------------------------------------------------------------------------
        #*  carrega a parte de comunicação
        #*/
        self._iCanal = int(l_data[28])
コード例 #4
0
ファイル: clsTabelaPAR.py プロジェクト: mlabru/sipar
    def loadQDataStream(self):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "clsTabelaPAR::loadQDataStream"

        #/ file descriptor
        #/ ----------------------------------------------------------------------------------------
        l_fdIn = None

        #/ mensagem de erro
        #/ ----------------------------------------------------------------------------------------
        l_szErro = None

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  tenta carregar o arquivo...
        #*/
        try:

            #** -----------------------------------------------------------------------------------
            #*  abre o arquivo
            #*/
            l_fdIn = QtCore.QFile(self._szFName)
            #assert ( l_fdIn )

            #** -----------------------------------------------------------------------------------
            #*  erro na abertura ?
            #*/
            if (not l_fdIn.open(QtCore.QIODevice.ReadOnly)):

                #** -------------------------------------------------------------------------------
                #*  gera exception
                #*/
                raise IOError, unicode(l_fdIn.errorString())

            #** -----------------------------------------------------------------------------------
            #*  acessa o arquivo como uma stream de dados
            #*/
            l_stream = QtCore.QDataStream(l_fdIn)
            #assert ( l_stream )

            #** -----------------------------------------------------------------------------------
            #*  le o magic number
            #*/
            l_iMagic = l_stream.readInt32()

            #** -----------------------------------------------------------------------------------
            #*  tipo de arquivo valido ?
            #*/
            if (clsTabelaModel.c_xxMAGIC_NUMBER != l_iMagic):

                #** -------------------------------------------------------------------------------
                #*  gera exception
                #*/
                raise IOError, u"tipo de arquivo não reconhecido !"

            #** -----------------------------------------------------------------------------------
            #*  le a versao do arquivo
            #*/
            l_iVersion = l_stream.readInt32()

            #** -----------------------------------------------------------------------------------
            #*  versao muito antiga ?
            #*/
            if (l_iVersion < clsTabelaModel.c_xxOLD_FILE_VERSION):

                #** -------------------------------------------------------------------------------
                #*  gera exception
                #*/
                raise IOError, u"formato do arquivo é antigo e não legível !"

            #** -----------------------------------------------------------------------------------
            #*  versao nova ?
            #*/
            elif (l_iVersion > clsTabelaModel.c_xxFILE_VERSION):

                #** -------------------------------------------------------------------------------
                #*  gera exception
                #*/
                raise IOError, u"formato do arquivo é novo e não legível !"

            #** -----------------------------------------------------------------------------------
            #*/
            l_stream.setVersion(QtCore.QDataStream.Qt_4_2)

            #** -----------------------------------------------------------------------------------
            #*/
            self.clear(False)

            #** -----------------------------------------------------------------------------------
            #*  enquanto nao termina de ler a stream...
            #*/
            while (not l_stream.atEnd()):

                #** -------------------------------------------------------------------------------
                #*  cria a área para chave do PAR
                #*/
                l_szKey = QtCore.QString()

                #** -------------------------------------------------------------------------------
                #*  lê a chave do PAR
                #*/
                l_stream >> l_szKey

                #** -------------------------------------------------------------------------------
                #*  cria a área para descrição do PAR
                #*/
                l_szDescr = QtCore.QString()

                #** -------------------------------------------------------------------------------
                #*  lê a descrição do PAR
                #*/
                l_stream >> l_szDescr
                l_szDescr = l_szDescr.replace('_', ' ')

                #** -------------------------------------------------------------------------------
                #*  lê a cabeceira principal
                #*/
                l_iCab0 = l_stream.readInt()

                #** -------------------------------------------------------------------------------
                #*  lê a altura da antena relativo ao ponto toque principal
                #*/
                l_fHAnt0 = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê a altura da antena relativo ao ponto toque secundário
                #*/
                l_fHAnt1 = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê o afastamento da antena ao eixo da pista
                #*/
                l_fDstAntEixo = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê a distância da antena ao ponto toque principal
                #*/
                l_fDstAntPT0 = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê a distância da antena ao ponto toque secundário
                #*/
                l_fDstAntPT1 = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê o ângulo da rampa de aproximação
                #*/
                l_fAngRampa = l_stream.readFloat()

                #** -------------------------------------------------------------------------------
                #*  lê o retardo
                #*/
                l_iRetardo = l_stream.readInt()

                #** -------------------------------------------------------------------------------
                #*  lê a declinação magnética
                #*/
                l_iDecl = l_stream.readInt()

                #** -------------------------------------------------------------------------------
                #*  cria o PAR e coloca na tabela de PARs
                #*/
                self.add(
                    clsPAR.clsPAR([
                        l_szKey, l_szDescr, l_iCab0, l_fHAnt0, l_fHAnt1,
                        l_fDstAntEixo, l_fDstAntPT0, l_fDstAntPT1, l_fAngRampa,
                        l_iRetardo, l_iDecl
                    ]), l_szKey)

        #** ---------------------------------------------------------------------------------------
        #*/
        except (IOError, OSError), e:

            #** -----------------------------------------------------------------------------------
            #*  cria a mensagem de erro
            #*/
            l_szErro = "Erro na carga: {0}".format(e)
コード例 #5
0
ファイル: modelControle.py プロジェクト: mlabru/sipar
    def iniciaBaseDados(self, f_lstData):

        #/ nome do método (logger)
        #/ ----------------------------------------------------------------------------------------
        #l_szMetodo = "modelControle::iniciaBaseDados"

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log = logging.getLogger ( l_szMetodo )
        #l_log.setLevel ( w_logLvl )
        #l_log.debug ( ">> " )

        #** ---------------------------------------------------------------------------------------
        #*  verifica parâmetros de entrada
        #*/
        #assert ( f_lstData )

        #** ---------------------------------------------------------------------------------------
        #*  cria o exercício
        #*/
        self._oExe = clsExe.clsExe()
        #assert ( self._oExe )

        #l_log.info ( "f_lstData: " + str ( f_lstData ))

        #** ---------------------------------------------------------------------------------------
        #*  salva a chave do exercício
        #*/
        self._oExe.setKey(f_lstData[0])
        #l_log.info ( "Exe.setKey: " + str ( f_lstData [ 0 ] ))

        #** ---------------------------------------------------------------------------------------
        #*  salva a cabeceira atual em uso (0=principal/1=secundária)
        #*/
        self._oExe.setCabAtu(int(f_lstData[1]))
        #l_log.info ( "Exe.setCabAtu: " + str ( f_lstData [ 1 ] ))

        #** ---------------------------------------------------------------------------------------
        #*  salva os parâmetros de vento
        #*/
        self._oExe.setVento((float(f_lstData[2]), float(f_lstData[3])))
        #l_log.info ( "Exe.setVento_Vel: " + str ( f_lstData [ 2 ] ))
        #l_log.info ( "Exe.setVento_Dir: " + str ( f_lstData [ 3 ] ))

        #** ---------------------------------------------------------------------------------------
        #*  cria o PAR
        #*/
        l_oPAR = clsPAR.clsPAR(f_lstData[4:])
        #assert ( l_oPAR )

        #** ---------------------------------------------------------------------------------------
        #*  salva o PAR no exercício
        #*/
        self._oExe.setPAR(l_oPAR)

        #** ---------------------------------------------------------------------------------------
        #*  m.poirot logger
        #*/
        #l_log.debug ( "<< " )

        #** ---------------------------------------------------------------------------------------
        #*/
        return (True)