diff --git a/README.md b/README.md
index c712cde..6582573 100644
--- a/README.md
+++ b/README.md
@@ -1,58 +1,36 @@
-TOTVS - Microsiga Protheus Include (Header) Files
-=================================================
+Descompactador de Header Files (Include) do Microsiga Protheus da TOTVS
+=======================================================================
-Arquivos de cabeçalhos disponibilizados pela TOTVS em 5 de Junho de 2016.
+## Descrição e instruções
-Geralmente estes são disponibilizados compactados via [deflate](https://en.wikipedia.org/wiki/DEFLATE) em um formato de especÃfico.
+Script python que descompacta arquivos de extensão ".ch".
-Estou aqui disponibilizando-os em um formato legÃvel e de fácil acesso. Os arquivos se encontram dentro da pasta `include`.
+Para o correto funcionamento:
+1) Os arquivos de extensão ".ch" devem estar dentro da pasta "./include/" relativa ao local se executa o script.
+2) A pasta "./decompressed/", relativa ao local se executa o script, deve estar criada.
+3) A pasta "./decompressed/" deve estar vazia.
-## Mais informações
+Para cada arquivo, seu correspondente descompactado será criado na pasta "./decompressed/".
+A versão original será mantida.
-Os arquivos descompactados em linguagem AdvPL já estão disponibilizados na pasta `include`, os procedimentos seguintes não são necessários.
+## Motivação
-A maneira que usei para descompactar os arquivos cabeçalhos foi através do seguinte script python:
+O uso de arquivos de cabeçalhos é pouco difundido no ADVPL e existem poucos exemplos instrutivos na internet.
+Em um esforço para ajudar de forma educativa muitos programadores que trabalham com o Protheus, entendo que os arquivos de cabeçalhos da própria TOTVS garantem a qualidade da fonte de informação para o estudante autodidata.
-decompress.py:
-
- #!/usr/bin/python
-
- import zlib
- import sys
-
- with open(sys.argv[1]) as f:
- content = f.readlines()
-
- compressed = ''.join(content)
-
- decompress = zlib.decompressobj(-zlib.MAX_WBITS)
- inflated = decompress.decompress(compressed[14:])
- inflated += decompress.flush()
-
- print (inflated[:-1])
-
-Modo de uso:
-
- ./decompress.py script_compactado.ch > script_descompactado.ch
-
-O entendimento e análise da compactação ocorreram na seguinte discussão:
+## Origem
+O entendimento e análise da compactação ocorreram da seguinte discussão:
+## Exemplos de arquivos já descompactados
-## Licença
-
-Os arquivos de cabeçalhos foram descompactados e deixados intactos. Uma boa parte informa o copyright no topo do arquivo.
+Os arquivos de cabeçalhos disponibilizados pela TOTVS em 20 de junho de 2024 através do link: https://suporte.totvs.com/portal/p/10098/download?e=491499 de modo compactado via [deflate](https://en.wikipedia.org/wiki/DEFLATE) foram descompactados e estão na pasta "decompressed" disponÃveis em formato legÃvel e de fácil acesso.
-Deixo estes arquivos disponÃvel como um esforço para que este possa ajudar de forma educativa muitos programadores que trabalham com o Protheus.
+## Licença
O material aqui é disponibilizado sem nenhum lucro para aqueles que tem demonstrado um interesse prévio em receber essas informações para pesquisas e propósitos educativos.
+Acredito que a disponibilização destes arquivos caiam num [Uso Justo](https://pt.wikipedia.org/wiki/Fair_use) e não ofenda o copyright, sendo que é apresentada na [Lei 9.609/98](http://www.planalto.gov.br/ccivil_03/Leis/L9609.htm) Artigo 6º II:
-Acredito que a disponibilização destes arquivos caiam dentro de um [Uso Justo](https://pt.wikipedia.org/wiki/Fair_use) e não ofenda o copyright, sendo que é apresentada na [Lei 9.609/98](http://www.planalto.gov.br/ccivil_03/Leis/L9609.htm) Artigo 6º II:
-
- Art. 6º Não constituem ofensa aos direitos do titular de programa de computador:
- II - a citação parcial do programa, para fins didáticos, desde que identificados o programa e o titular dos direitos respectivos;
-
-Estes arquivos de cabeçalhos não são significativos do sistema e não o colocam em risco. Sua disponibilização para estudo só traz o progresso e benefÃcios para a sociedade, já que torna possÃvel um entendimento muito mais amplo de funções usadas no Protheus e facilita no desenvolvimento daqueles que usam esta plataforma.
-
-
+ Art. 6º Não constituem ofensa aos direitos do titular de programa de computador:
+ II - a citação parcial do programa, para fins didáticos, desde que identificados o programa e o titular dos direitos respectivos;
\ No newline at end of file
diff --git a/decompress.py b/decompress.py
index 4efc38e..4aa476a 100755
--- a/decompress.py
+++ b/decompress.py
@@ -1,18 +1,41 @@
-#!/usr/bin/python
-
-# This script is free of copyright restrictions.
-
import zlib
import sys
+from os import listdir
+from os.path import isfile, join
-with open(sys.argv[1]) as f:
- content = f.readlines()
-
-compressed = ''.join(content)
+def descompactaUmArquivo(arq):
+ # Abre o arquivo e coloca o conteudo na string "content"
+ with open(arq, 'rb') as f:
+ content = f.read()
+ # descompacta
+ decompress = zlib.decompressobj(-zlib.MAX_WBITS)
+ inflated = decompress.decompress(content[14:])
+ inflated += decompress.flush()
+ # O texto descompactado é o valor retornado como string
+ return inflated[:-1].decode('utf-8', errors='ignore')
-decompress = zlib.decompressobj(-zlib.MAX_WBITS)
-inflated = decompress.decompress(compressed[14:])
-inflated += decompress.flush()
+def nomeValido(arq):
+ # Verifica se o nome do arquivo termina com '.ch' ou se é nome de um arquivo que já foi descompactado
+ return arq[len(arq) - 3:len(arq) - 0] == '.ch' or arq[len(arq) - 3:len(arq) - 0] == '.CH' or arq[len(arq) - 3:len(arq) - 0] == '.th' or arq[len(arq) - 3:len(arq) - 0] == '.TH'
-print (inflated[:-1])
+# Puxa a lista de nomes de arquivos no diretório atual
+onlyfiles = [f for f in listdir('./include/') if isfile(join('./include/', f))]
+print(onlyfiles)
+for i in onlyfiles:
+ if nomeValido(i):
+ try:
+ print('Descompactando: ' + './include/' + i)
+ # descompacta
+ descompactado = descompactaUmArquivo('./include/' + i)
+ # Monta o nome do arquivo de destino
+ arqDestino = './decompressed/' + i
+ print(arqDestino)
+ # Cria o arquivo de destino. Grava o arquivo. Fecha o arquivo
+ f = open(arqDestino, 'x')
+ f.write(descompactado)
+ f.close()
+ except Exception as erro:
+ print('')
+ print(erro)
+ print('Não foi possÃvel descompactar o arquivo ' + './include/' + i + '\n')
\ No newline at end of file
diff --git a/decompressed/FWAdvplExpression.ch b/decompressed/FWAdvplExpression.ch
new file mode 100644
index 0000000..df628e3
--- /dev/null
+++ b/decompressed/FWAdvplExpression.ch
@@ -0,0 +1,57 @@
+//Tipos de expressao
+#define TOKEN_BLOCK 1
+#define TOKEN_LITERAL 2
+#define TOKEN_IDENTIFIER 3
+#define TOKEN_PARENTS_EXP 4
+#define TOKEN_BINARY_EXP 5
+#define TOKEN_UNARY 6
+#define TOKEN_LIST_EXP 7
+#define TOKEN_EMPTY_EXP 8
+
+//Tipos de literais
+#define TOKEN_STRINGDOUBLE 1
+#define TOKEN_STRINGSIMPLE 2
+#define TOKEN_NUMBER 3
+#define TOKEN_LOGICAL 4
+#define TOKEN_NIL_VALUE 5
+
+
+//Tipos de expressoes binarias
+#define TOKEN_ASSIGNMENT 1
+#define TOKEN_PLUS 2
+#define TOKEN_MINUS 3
+#define TOKEN_MULT 4
+#define TOKEN_DIV 5
+#define TOKEN_POW 6
+#define TOKEN_ALIAS_ACCESS 7
+#define TOKEN_AND 8
+#define TOKEN_OR 9
+
+#define TOKEN_MINOR 10
+#define TOKEN_MINOREQUALS 11
+#define TOKEN_MAJOR 12
+#define TOKEN_MAJOREQUALS 13
+#define TOKEN_EQUALS 14
+#define TOKEN_DOUBLEEQUAL 15
+#define TOKEN_NOT_EQUAL 16
+#define TOKEN_CONTAINED 17
+
+//Tipos de Unary
+#define TOKEN_PLUS_PLUS 1
+#define TOKEN_MINUS_MINUS 2
+#define TOKEN_EXCLAMATION 3
+#define TOKEN_NEGATIVE 4
+#define TOKEN_MACRO 5
+
+//Tipos de IDENTIFIER
+#define TOKEN_ID_NAME 1
+#define TOKEN_ID_ATT 2
+#define TOKEN_CALL_FUNCTION 3
+#define TOKEN_CALL_METHOD 4
+#define TOKEN_ID_ALIAS 5
+#define TOKEN_ID_FIELD 6
+
+//Tipos de Expression List
+#define TOKEN_ARRAY_ACCESS 1
+#define TOKEN_ARGUMENTS 2
+#define TOKEN_ROOT_EXPRESSIONS 3
diff --git a/decompressed/IdxDefException.ch b/decompressed/IdxDefException.ch
new file mode 100644
index 0000000..760a5a5
--- /dev/null
+++ b/decompressed/IdxDefException.ch
@@ -0,0 +1,36 @@
+/*
+ Header : IdxDefException.ch
+ Copyright (c) 1997-2006, Microsiga Software SA
+ All rights reserved.
+*/
+
+#define EIS_NFCfgIdxName 1 //"Nao foi encontrado configuracao para esse IndexName"
+#define EIS_NCFIdxCache 2 //"Nao foi possivel criar o arquivo IDXCACHE.DTC"
+#define EIS_OSIdxName 3 //"E Obrigatorio enviar o IndexName"
+#define EIS_TabOrig 4 //"O nome da tabela obrigatorio."
+#define EIS_VNAaFields 5 //"A Variavel aFields nao e uma Array"
+#define EIS_VNAaUser 6 //"A Variavel aUser nao e uma Array"
+#define EIS_OIOperation 7 //"E obrigatorio informar a Operacao"
+#define EIS_ISOperation 8 //"A Operacao enviada esta incorreta"
+#define EIS_OIUIFieldsUsers 9 //"Operacoes Inclusao/Alteracao sao necessarios informar Arrays de Fields e Users"
+#define EIS_NFWsIdxServer 10 //"Nao foi encontrado o WebService do IndexServer"
+#define EIS_WSCError 11 //"Erro de Comunicacao do WebService"
+#define EIS_OILIdxSearch 12 //"E obrigatorio informar uma lista com os Indices para pesquisa"
+#define EIS_NIISearch 13 //"Nao foi informado o item para pesquisa"
+#define EIS_NFFXmlCfg 14 //"Arquivo XML de configuracao nao encontrado"
+#define EIS_NFFCtreeCache 15 //"Arquivo de CTREE de Cache nao encontrado"
+#define EIS_NCCDirIdxSrv 16 //"Diretorio do INDEXSERVER nao pode ser criado"
+#define EIS_NCCDirIdxName 17 //"Diretorio do INDEXNAME nao pode ser criado"
+#define EIS_NCCDirData 18 //"Diretorio do DATA nao pode ser criado"
+#define EIS_NCCDirCache 19 //"Diretorio do CACHE nao pode ser criado"
+#define EIS_NCAFSTAscdDscd 20 //"As flags de Ascending e Descendig nao podem ser habilitadas ao mesmo tempo"
+#define EIS_OIIndexName 21 //"E Obrigatorio informar o nome do Indice"
+#define EIS_NEKSIdxSrvWSLoc 22 //"Nao foi encontrada a Chave INDEXSRVWSLOCATION no .INI do Server"
+#define EIS_NPFTransaction 23 //"Nao foi possivel finalizar a Transacao"
+#define EIS_NOpenExclusive 24 //"Nao foi possivel abrir arquivo para criacao de indice (exclusivo)"
+#define EIS_VNAFolders 25 //"A variavel aFolders no uma array."
+#define EIS_VNAIncFilters 26 //"A variavel aIncludeFilters no uma array."
+#define EIS_VNAExcFilters 27 //"A variavel aExcludeFilters no uma array."
+#define EIS_CTREECREATE 28 //"Arquivo do CTree em criao."
+#define EIS_INDEXSERVER 29 //"Arquivo do CTree em criao."
+#define EIS_INDEXPORT 30 //"Arquivo do CTree em criao."
diff --git a/decompressed/IdxSrvException.ch b/decompressed/IdxSrvException.ch
new file mode 100644
index 0000000..f5a7910
--- /dev/null
+++ b/decompressed/IdxSrvException.ch
@@ -0,0 +1,28 @@
+/*
+ Header : IdxSrvException.ch
+ Copyright (c) 1997-2006, Microsiga Software SA
+ All rights reserved.
+*/
+
+#define IDXEX_UNKNOWN 1
+#define IDXEX_INDEXSERVERNAME_INVALID 2
+#define IDXEX_INDEXSERVERPORT_INVALID 3
+#define IDXEX_INDEXNAME_INVALID 4
+#define IDXEX_TABLENAME_INVALID 5
+#define IDXEX_ARRAY_INVALID 6
+#define IDXEX_OPERATION_INVALID 7
+#define IDXEX_INCORRECT_OPERATION 8
+#define IDXEX_OIUIFieldsUsers 9
+#define IDXEX_WEBSERVICE_NOTFOUND 10
+#define IDXEX_WEBSERVICE_CONNECTION_ERROR 11
+#define IDXEX_WEBSERVICE_TRANSACTION_ERROR 12
+#define IDXEX_INDEX_LIST_ERROR 13 //" obrigatrio informar uma lista com os indices para pesquisa."
+#define IDXEX_INDEX_ITEM_ERROR 14 //"No foi informado o item para pesquisa."
+#define IDXEX_INDEX_ORDER_ERROR 15 //"As flags de Ascending e Descendig no podem ser habilitadas ao mesmo tempo."
+#define IDXEX_DIRECTORY_ERROR 16 //"Diretorio do [%1] nao pode ser criado."
+#define IDXEX_OPEN_FILE_ERROR 17 //"Arquivo [%1] nao encontrado."
+#define IDXEX_CREATE_FILE_ERROR 18 //"No foi possivel criar o arquivo: [%1]."
+#define IDXEX_OPEN_FILE_EXCLUSIVE_ERROR 19 //"Nao foi possivel abrir arquivo para criacao de indice (exclusivo)"
+#define IDXEX_CONFIGURATION_ERROR 20 //"Nao foi encontrado configurao para esse Index Name"
+#define IDXEX_SetFaultSoap_ERROR 21 //"Erro enviado pelo SetFaultSoap"
+
diff --git a/decompressed/OfficeEvents.ch b/decompressed/OfficeEvents.ch
new file mode 100644
index 0000000..38ed677
--- /dev/null
+++ b/decompressed/OfficeEvents.ch
@@ -0,0 +1,19 @@
+#DEFINE OFFICE_START "1001"
+#DEFINE OFFICE_SHUTDOWN "1000"
+#define OFFICE_BEGINXMLDATA "2001"
+#define OFFICE_SENDXMLDATA "2002"
+#define OFFICE_ENDXMLDATA "2003"
+#define OFFICE_ENDXMLTABLE "2004"
+#define OFFICE_DOSEARCH "2005"
+#define OFFICE_PANELSEARCH "2006"
+#DEFINE OFFICE_SMARTCLIENTEXCEPTION "9000"
+#DEFINE OFFICE_SMARTCLIENTKILLPROCESS "9001"
+#define OFFICE_SENDMENULOTUS "5001"
+#define OFFICE_SENDACTIONLOTUS "5002"
+#define OFFICE_SENDFIELDSLOTUS "5003"
+#define OFFICE_SENDFIELDSVALUELOTUS "5004"
+#define OFFICE_CFGMALADIRETA "5005"
+#define OFFICE_SKIP "5006"
+#define OFFICE_GETALIASRECNO "5007"
+#define OFFICE_VERIFYRELATION "5008"
+#define OFFICE_ENDLOADPANEL "5009"
diff --git a/decompressed/OfficeInfo.ch b/decompressed/OfficeInfo.ch
new file mode 100644
index 0000000..23da045
--- /dev/null
+++ b/decompressed/OfficeInfo.ch
@@ -0,0 +1,34 @@
+
+#define TAB_DATA_VIEW_NONE 0
+#define TAB_DATA_VIEW_FORM 1
+#define TAB_DATA_VIEW_GRID 2
+
+#DEFINE OT_NOMEPASTA 1
+#DEFINE OT_DESCPOR 2
+#DEFINE OT_DESCENG 3
+#DEFINE OT_DESCSPA 4
+#DEFINE OT_TIPOOBJ 5
+#DEFINE OT_PASTAAF 6
+#DEFINE OT_ALTURA 7
+#DEFINE OT_RELATION 8
+#DEFINE OT_TABRELATION 9
+#DEFINE OT_REALTABLE 10
+#DEFINE OT_AUTOSIZE 11
+#DEFINE OT_PRGINIC 12
+#DEFINE OT_TABELA 13
+#DEFINE OT_CAMPOS 14
+#DEFINE OT_ORDER 15
+#DEFINE OT_TABDESC 16
+#DEFINE OT_FORMULAS 17
+#DEFINE OT_FILTROS 18
+#DEFINE OT_DUMMY1 19
+#DEFINE OT_DUMMY2 20
+
+#DEFINE OT_CDESPOR 5
+#DEFINE OT_CDESENG 6
+#DEFINE OT_CDESSPA 7
+#DEFINE OT_OWNTABLE 8
+#DEFINE OT_OWNDESTAB 9
+
+#DEFINE TIT_IDIOMA OfficeInfoTitleDes():getTitleIdiomOfficeInfo()
+#DEFINE DES_IDIOMA OfficeInfoTitleDes():getDescIdiomOfficeInfo()
\ No newline at end of file
diff --git a/decompressed/OfficeTheme.ch b/decompressed/OfficeTheme.ch
new file mode 100644
index 0000000..0d511e1
--- /dev/null
+++ b/decompressed/OfficeTheme.ch
@@ -0,0 +1,108 @@
+/*
+ Header : OfficeTheme.ch
+ Copyright (c) 1997-2006, Microsiga Software SA
+ All rights reserved.
+
+ Metodo de abreviacao adotado: TH_XYZZZ
+ TH_: Identificador de Thema
+ X: Tipo Objeto (B-Botao, T-TextBox, C-Combo
+ Y: Funcao (A-Arrow, F-Filter, S-Section, H-Search, I-Imagem
+ ZZZ: UltimaDescricao
+*/
+
+#define TH_BADOWN 'QPushButton {background-image: url(rpo:OfficeBtnArrowDown.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnArrowDownHover.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnArrowDownClicked.png); border-style: transparent ;background-repeat: stretch stretch}'
+
+#define TH_BAUP 'QPushButton {background-image: url(rpo:OfficeBtnArrowUp.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnArrowUpHover.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnArrowUpClicked.png); border-style: transparent ;background-repeat: stretch stretch}'
+
+#define TH_T_SEARC 'QLineEdit {background-color: white; border-style: transparent ; color: #b6b6b6; font: "Arial";' + ;
+ 'border-style: solid; border-width: 1px; border-style: transparent ; border-color: #7f9db9}' + ;
+ 'QLineEdit:hover {border-color: #ffbd69}'
+
+#define TH_BF 'QPushButton {background-image: url(rpo:OfficeBtnTabFilter.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnTabFilterHover.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnTabFilterClicked.png); border-style: transparent;background-repeat: stretch stretch}'
+
+#define TH_BFACTIV 'QPushButton {background-image: url(rpo:OfficeBtnTabFilterActive.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnTabFilterActiveHover.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnTabFilterActiveClicked.png); border-style: transparent;background-repeat: stretch stretch}'
+
+#define TH_BSOPEN 'QPushButton {background-image: url(rpo:OfficeBtnSectionOpen.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnSectionOpenHover.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnSectionOpenClicked.png); border-style: transparent ;background-repeat: stretch stretch}'
+
+#define TH_BSCLOSE 'QPushButton {background-image: url(rpo:OfficeBtnSectionClose.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnSectionCloseHover.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnSectionCloseClicked.png); border-style: transparent ;background-repeat: stretch stretch}'
+
+#define TH_CF 'QComboBox {color: #808080; background-color: white; selection-color: black; selection-background-color: #88c3ff}' + ;
+ 'QComboBox {border-style: solid; border-width: 1px; border-color: #7f9db9}' + ;
+ 'QComboBox {background-image: url(rpo:OfficeBtnCmbFilter.png)}' + ;
+ 'QComboBox {background-repeat: no-repeat; background-position: right}' + ;
+ 'QComboBox:hover {background-color: white}' + ;
+ 'QComboBox:hover {border-style: solid; border-width: 1px; border-color: #ffbd69}' + ;
+ 'QComboBox:hover {background-image: url(rpo:OfficeBtnCmbFilterHover.png)}' + ;
+ 'QComboBox:on {background-color: white}' + ;
+ 'QComboBox:on {border-style: solid; border-width: 1px; border-color: #fb8c3c}' + ;
+ 'QComboBox:on {background-image: url(rpo:OfficeBtnCmbFilterClicked.png)}'
+
+#define TH_C_EMPRE 'QComboBox {color: #808080; background-color: white; selection-color: black; selection-background-color: #88c3ff}' + ;
+ 'QComboBox {border-style: solid; border-width: 1px; border-color: white}' + ;
+ 'QComboBox {background-image: url(rpo:OfficeBtnCmbEmp.png)}' + ;
+ 'QComboBox {background-repeat: no-repeat; background-position: right}' + ;
+ 'QComboBox:hover {background-color: white}' + ;
+ 'QComboBox:hover {border-style: solid; border-width: 1px; border-color: #ffbd69}' + ;
+ 'QComboBox:hover {background-image: url(rpo:OfficeBtnCmbEmpHover.png)}' + ;
+ 'QComboBox:on {background-color: white}' + ;
+ 'QComboBox:on {border-style: solid; border-width: 1px; border-color: #fb8c3c}' + ;
+ 'QComboBox:on {background-image: url(rpo:OfficeBtnCmbEmpClicked.png)}'
+
+#define TH_B_GENER 'QPushButton {border-style: none; border-style: transparent; border-width: 1px}' + ;
+ 'QPushButton:hover {border-style: solid; border-width: 1px; border-style: transparent; border-color: #fb8c3c}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnGeneralHover.png)}' + ;
+ 'QPushButton:pressed {border-style: solid; border-style: transparent; border-width: 1px; border-color: #fb8c3c}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnGeneralClicked.png); border-style: transparent}'
+
+#define TH_T_EDIT 'QTextEdit {background: white}' + ;
+ 'QTextEdit {border-style: solid; border-width: 1px; border-color: #7f9db9}' + ;
+ 'QTextEdit:hover {border-color: #ffbd69}'
+
+#define TH_BH 'QPushButton {background-image: url(rpo:OfficeBtnSearch.png); border-style: transparent ; background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnSearchHover.png); border-style: transparent ;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnSearchClicked.png); border-style: transparent ;background-repeat: stretch stretch}'
+
+#define TH_BHCLEAR 'QPushButton {background-image: url(rpo:OfficeBtnSearchClear.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnSearchClearHover.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnSearchClearClicked.png); border-style: transparent;background-repeat: stretch stretch}'
+
+#define TH_BHOPEN 'QPushButton {background-image: url(rpo:OfficeBtnSearchOpen.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnSearchOpenHover.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnSearchOpenClicked.png); border-style: transparent;background-repeat: stretch stretch}'
+
+#define TH_B_WINDO 'QPushButton {background-image: url(rpo:OfficeBtnWindows.png); border-style: transparent; background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnWindowsHover.png); border-style: transparent; background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnWindowsClicked.png); border-style: transparent; background-repeat: stretch stretch}'
+
+#define TH_BIMOVUP 'QPushButton {background-image: url(rpo:OfficeBtnImgMoverAcima.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnImgMoverAcimaHover.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnImgMoverAcimaClicked.png); border-style: transparent;background-repeat: stretch stretch}'
+
+#define TH_BIMOVDO 'QPushButton {background-image: url(rpo:OfficeBtnImgMoverAbaixo.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnImgMoverAbaixoHover.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnImgMoverAbaixoClicked.png); border-style: transparent;background-repeat: stretch stretch}'
+
+#define TH_BIMARK 'QPushButton {background-image: url(rpo:OfficeBtnImgMarcarTodos.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnImgMarcarTodosHover.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnImgMarcarTodosClicked.png); border-style: transparent;background-repeat: stretch stretch}'
+
+#define TH_BIUNMAR 'QPushButton {background-image: url(rpo:OfficeBtnImgDesMarcarTodos.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:hover {background-image: url(rpo:OfficeBtnImgDesMarcarTodosHover.png); border-style: transparent;background-repeat: stretch stretch}' + ;
+ 'QPushButton:pressed {background-image: url(rpo:OfficeBtnImgDesMarcarTodosClicked.png); border-style: transparent;background-repeat: stretch stretch}'
+
+#define TH_FOLDER "QTab{background-image:url(rpo:DarkBorderWhite.png);}"+;
+ "QTabBarWidget{background-image:url(rpo:DarkBorderWhite.png);}"+;
+ "QTabBar{background-color:#FFFFFF;}"+;
+ "QWidget{background-color:#FFFFFF;}"
diff --git a/decompressed/ap5mail.ch b/decompressed/ap5mail.ch
new file mode 100644
index 0000000..440af26
--- /dev/null
+++ b/decompressed/ap5mail.ch
@@ -0,0 +1,128 @@
+/*
+ Header : ap5mail.ch
+ Copyright (c) 1997-2003, Microsiga Software SA
+ All rights reserved.
+*/
+
+#ifndef _AP5MAIL_CH_
+#define _AP5MAIL_CH_
+
+#xcommand CONNECT SMTP SERVER ;
+ ACCOUNT ;
+ PASSWORD ;
+ [ TIMEOUT ] ;
+ [ IN ] ;
+ [ RESULT ] ;
+ [ ] ;
+ [ ] ;
+ => ;
+ If ( <.lRemote.> ) ; ;
+ [:=][:]CallProc( 'MailSmtpOn', , , , , [<.lUseTLSMail.>], [<.lUseSSLMail.>] ) ; ;
+ Else ; ;
+ [:=]MailSmtpOn( , , , , [<.lUseTLSMail.>], [<.lUseSSLMail.>] ) ; ;
+ EndIf ; ;
+
+#xcommand CONNECT POP SERVER ;
+ ACCOUNT ;
+ PASSWORD ;
+ [ TIMEOUT ] ;
+ [ IN ] ;
+ [ RESULT ] ;
+ [ ] ;
+ [ ] ;
+ => ;
+ If ( <.lRemote.> ) ; ;
+ [:=][:]CallProc( 'MailPopOn', , , , , [<.lUseTLSMail.>], [<.lUseSSLMail.>] ) ; ;
+ Else ; ;
+ [:=]MailPopOn( , , , , [<.lUseTLSMail.>], [<.lUseSSLMail.>] ) ; ;
+ EndIf ; ;
+
+#xcommand DISCONNECT SMTP SERVER ;
+ [ IN ] ;
+ [ RESULT ] ;
+ => ;
+ If ( <.lRemote.> ) ; ;
+ [:=][:]CallProc( 'MailSmtpOff' ) ; ;
+ Else ; ;
+ [:=]MailSmtpOff() ; ;
+ EndIf ; ;
+
+#xcommand DISCONNECT POP SERVER ;
+ [ IN ] ;
+ [ RESULT ] ;
+ => ;
+ If ( <.lRemote.> ) ; ;
+ [:=][:]CallProc( 'MailPopOff' ) ; ;
+ Else ; ;
+ [:=]MailPopOff() ; ;
+ EndIf ; ;
+
+#xcommand POP MESSAGE COUNT ;
+ [ IN ];
+ [ RESULT ];
+ => ;
+ If ( <.lRemote.> );;
+ _aRet := [:]CallProc( '_PopMsgCount');;
+ := _aRet\[1\];;
+ [ := ]_aRet\[2\];;
+ Else;;
+ [ := ]PopMsgCount(@);;
+ EndIf;;
+
+#xcommand SEND MAIL FROM ;
+ TO ;
+ [ CC ] ;
+ [ BCC ] ;
+ SUBJECT ;
+ BODY ;
+ [ FORMAT ] ;
+ [ ATTACHMENT ] ;
+ [ IN ] ;
+ [ RESULT ] ;
+ [ ] ;
+ [ ] ;
+ => ;
+ If ( <.lRemote.> ) ; ;
+ [:=][:]CallProc( 'MailSend', , \{ \}, \{ \}, \{ \}, , , \{ \}, <.lText.>, [<.lUseTLSMail.>], [<.lUseSSLMail.>] ) ; ;
+ Else ; ;
+ [:=]MailSend( , \{ \}, \{ \}, \{ \}, , , \{ \}, <.lText.>, [<.lUseTLSMail.>], [<.lUseSSLMail.>] ) ; ;
+ EndIf ; ;
+
+#xcommand GET MAIL ERROR ;
+ [ IN ] ;
+ => ;
+ If ( <.lRemote.> ) ; ;
+ :=[:]CallProc( 'MailGetErr' ) ; ;
+ Else ; ;
+ :=MailGetErr( ) ; ;
+ EndIf ; ;
+
+#xcommand RECEIVE MAIL MESSAGE ;
+ [FROM ] ;
+ [TO ] ;
+ [CC ] ;
+ [BCC ] ;
+ [SUBJECT ] ;
+ [BODY ] ;
+ [ATTACHMENT [SAVE IN ] ] ;
+ [] ;
+ [IN ] ;
+ [RESULT ] ;
+ [ ] ;
+ [ ] ;
+ => ;
+ If ( <.lRemote.> ) ; ;
+ _aResult := [:]CallProc('_MailReceive', , [], [<.lDelete.>], [<.lUseTLSMail.>], [<.lUseSSLMail.>] ) ; ;
+ [ :=] _aResult\[1\];;
+ [ :=] _aResult\[2\];;
+ [ :=] _aResult\[3\];;
+ [ :=] _aResult\[4\];;
+ [] := _aResult\[5\];;
+ [ :=] _aResult\[6\];;
+ [ :=] aClone(_aResult\[7\]);;
+ [:=] _aResult\[8\];;
+ Else ; ;
+ [:=]MailReceive(, [@], [@], [@], [@], [@], [@], [], [], [<.lDelete.>], [<.lUseTLSMail.>], [<.lUseSSLMail.>] ) ; ;
+ EndIf ; ;
+
+#endif
diff --git a/decompressed/ap5sdu.ch b/decompressed/ap5sdu.ch
new file mode 100644
index 0000000..f9652c6
--- /dev/null
+++ b/decompressed/ap5sdu.ch
@@ -0,0 +1,215 @@
+#define STR0001 'Protheus Database Utility'
+#define STR0002 "Select Driver"
+#define STR0003 "Driver:"
+#define STR0004 "Database|*.DBF|All Files|*.*"
+#define STR0005 "Open File"
+#define STR0006 "The file is already open."
+#define STR0007 "Shared"
+#define STR0008 "Read only"
+#define STR0009 "Error openning file"
+#define STR0010 "Normal End"
+#define STR0011 "DAT|*.DAT|IDX|*.IDX|All Files|*.*"
+#define STR0012 "REGISTER"
+#define STR0013 "STATUS"
+#define STR0014 "Deleted"
+#define STR0015 "Active"
+#define STR0016 " Memo "
+#define STR0017 "File Structure "
+#define STR0018 "Field Name"
+#define STR0019 "Type"
+#define STR0020 "Size"
+#define STR0021 "Decimal"
+#define STR0022 "Copy "
+#define STR0023 " To"
+#define STR0024 "(Path)\File"
+#define STR0025 "The index is already open."
+#define STR0026 "For:"
+#define STR0027 "While:"
+#define STR0028 "SDF"
+#define STR0029 "Delimiter"
+#define STR0030 "Driver"
+#define STR0031 "True"
+#define STR0032 "False"
+#define STR0033 "Overwrite"
+#define STR0034 "Copying File"
+#define STR0035 "Wait"
+#define STR0036 "Confirm"
+#define STR0037 "May I Execute Recall ?"
+#define STR0038 "Close table "
+#define STR0039 "May I Execute Pack ?"
+#define STR0040 "Finished"
+#define STR0041 "Pack"
+#define STR0042 "May I Execute Zap ?"
+#define STR0043 "Zap"
+#define STR0044 "Append From"
+#define STR0045 "Executing Append"
+#define STR0046 "Path not found"
+#define STR0047 "File not found"
+#define STR0048 "Error found in formula "
+#define STR0049 "Connection to TopConnect"
+#define STR0050 "Server"
+#define STR0051 "DBMS/Data Base"
+#define STR0052 "Connection failed"
+#define STR0053 "Open table failed"
+#define STR0054 "Table"
+#define STR0055 "Go To Recno"
+#define STR0056 "Recno:"
+#define STR0057 "Dbseek"
+#define STR0058 "Expression:"
+#define STR0059 "Key:"
+#define STR0060 "Locate For"
+#define STR0061 "Delete For"
+#define STR0062 "Set Filter"
+#define STR0063 "Replace "
+#define STR0064 "Field:"
+#define STR0065 "With:"
+#define STR0066 "Index:"
+#define STR0067 "Index Name:"
+#define STR0068 "Condition:"
+#define STR0069 "Indexed"
+#define STR0070 "CDX|*.CDX|IDX|*.IDX|All Files|*.*"
+#define STR0071 "Open Index"
+#define STR0072 "Order"
+#define STR0073 " in exclusive mode"
+#define STR0074 "There is no register to be modified"
+#define STR0075 "Include - "
+#define STR0076 "Change - "
+#define STR0077 "Copy"
+#define STR0078 "Cut"
+#define STR0079 "Paste"
+#define STR0080 "Confirm - "
+#define STR0081 "Cancel - "
+#define STR0082 "May I Delete register ?"
+#define STR0083 "File"
+#define STR0084 "Close"
+#define STR0085 "Structure"
+#define STR0086 "Util"
+#define STR0087 "Copy To"
+#define STR0088 "Recall "
+#define STR0089 "Delete "
+#define STR0090 "Filter "
+#define STR0091 "Open"
+#define STR0092 "Create"
+#define STR0093 "Edit"
+#define STR0094 "Include"
+#define STR0095 "Change"
+#define STR0096 "Exclude"
+#define STR0097 "Find"
+#define STR0098 "Locate"
+#define STR0099 "Go To"
+#define STR0100 "Protheus - Login"
+#define STR0101 "User:"
+#define STR0102 "Password:"
+#define STR0103 "User is not authorized"
+#define STR0104 "It was Aborted by operator"
+#define STR0105 "Index"
+#define STR0106 "Exit"
+#define STR0107 "Drop Table"
+#define STR0108 "Confirm table exclusion "
+#define STR0109 "Reading table list"
+#define STR0110 "Search"
+#define STR0111 "Not found"
+#define STR0112 "Index not found"
+#define STR0113 "Erase All"
+#define STR0114 "Index erased"
+#define STR0115 "Error openning index file"
+#define STR0116 "This command Works only in Btrieve or Ctree tables"
+#define STR0117 "Executing Locate"
+#define STR0118 "Executing Delete"
+#define STR0119 "Attention"
+#define STR0120 "Count "
+#define STR0121 "Recall For"
+#define STR0122 "Execuing Recall"
+#define STR0123 "Set Deleted"
+#define STR0124 "Set Deleted On"
+#define STR0125 "Sum "
+#define STR0126 "Set Delete On"
+#define STR0127 "Set Delete Off"
+#define STR0128 "Executing Count"
+#define STR0129 "Executing Replace"
+#define STR0130 "Expression constructor"
+#define STR0131 "Field is not numeric"
+#define STR0132 " registers processed"
+#define STR0133 " Sum"
+#define STR0134 "Executing Sum"
+#define STR0135 "Empty"
+#define STR0136 "All"
+#define STR0137 "Fields:"
+#define STR0138 "Operators:"
+#define STR0139 "Expression:"
+#define STR0140 "Filter:"
+#define STR0141 "&Add"
+#define STR0142 "&Clear Filter"
+#define STR0143 "&Expression"
+#define STR0144 "and"
+#define STR0145 "or"
+#define STR0146 "Equal to"
+#define STR0147 "Different from"
+#define STR0148 "Less than"
+#define STR0149 "Less than or equal to"
+#define STR0150 "Greater than"
+#define STR0151 "Greater than or equal to"
+#define STR0152 "Contain the expression"
+#define STR0153 "Do not contain"
+#define STR0154 "Is contained in"
+#define STR0155 "Not contained into"
+#define STR0156 "Expression"
+#define STR0157 "&Cancel"
+#define STR0158 "Quit program ?"
+#define STR0159 "Line: "
+#define STR0160 "Seek"
+#define STR0161 "NEXT"
+#define STR0162 "REST"
+#define STR0163 "Options"
+#define STR0164 "Register Deleted"
+#define STR0165 "New Structure"
+#define STR0166 "Field"
+#define STR0167 "Caractere"
+#define STR0168 "Numeric"
+#define STR0169 "Date"
+#define STR0170 "Logic"
+#define STR0171 "Memo"
+#define STR0172 "Field already exist"
+#define STR0173 "Invalid size"
+#define STR0174 "Invalid field name"
+#define STR0175 "No table open"
+#define STR0176 "This command can only be executed in TopConnect"
+#define STR0177 "The file is already exist"
+#define STR0178 "Fields position"
+#define STR0179 "Disable"
+#define STR0180 "Set Softseek"
+#define STR0181 "Set Softseek On"
+#define STR0182 "Set Softseek Off"
+#define STR0183 "Add >"
+#define STR0184 "Add all >>"
+#define STR0185 "< Remove"
+#define STR0186 "<< Remove all"
+#define STR0187 "Ok"
+#define STR0188 "Up"
+#define STR0189 "Down"
+#define STR0190 "None"
+#define STR0191 "No Status"
+#define STR0192 "Status"
+#define STR0193 "Index Key Constructor"
+#define STR0194 "Code Base"
+#define STR0195 "ADS"
+#define STR0196 "Top Connect"
+#define STR0197 "Ctree"
+#define STR0198 "BTrieve"
+#define STR0199 "Formulas "
+#define STR0200 "Information"
+#define STR0201 "Import"
+#define STR0202 "List of tables"
+#define STR0203 "Source"
+#define STR0204 "Chose Directory"
+#define STR0205 "Target"
+#define STR0206 "Skip"
+#define STR0207 "For all"
+#define STR0208 "Skiping File"
+#define STR0209 "Erase all index"
+#define STR0210 "Database|*.DTC|All Files|*.*"
+#define STR0211 "Temporary"
+#define STR0212 "Permanent"
+#define STR0213 "CDX|*.CDX|IDX|*.IDX|All Files|*.*"
+#define STR0214 "Database|*.DAT|All Files|*.*"
+#define STR0215 "Close all index ?"
\ No newline at end of file
diff --git a/decompressed/apevent.ch b/decompressed/apevent.ch
new file mode 100644
index 0000000..3714481
--- /dev/null
+++ b/decompressed/apevent.ch
@@ -0,0 +1,168 @@
+/*
+Defines das Tarefas
+*/
+
+#xtranslate UPD_VERSION_NUMBER => '11.1.1.101'
+#xtranslate UPD_NAME_FILE_LOG => 'mpupdlog.log'
+#xtranslate UPD_NEWTABS_RL3X => If( Subs( UPD_VERSION_NUMBER, 1, 6) > '8.11.2' .Or. Subs(UPD_VERSION_NUMBER,1,2)=="11" , 0, 4)
+
+#xtranslate Tsk_ALL => 48
+#xtranslate Tsk_INT => 1
+#xtranslate Tsk_SIX => 2
+#xtranslate Tsk_SX1 => 3
+#xtranslate Tsk_SX2 => 4
+#xtranslate Tsk_SX3 => 5
+#xtranslate Tsk_SX4 => 6
+#xtranslate Tsk_SX5 => 7
+#xtranslate Tsk_SX6 => 8
+#xtranslate Tsk_SX7 => 9
+#xtranslate Tsk_SX9 => 10
+#xtranslate Tsk_SXA => 11
+#xtranslate Tsk_SXB => 12
+#xtranslate Tsk_SXD => 13
+#xtranslate Tsk_SXG => 14
+#xtranslate Tsk_SXQ => 15
+#xtranslate Tsk_SXR => 16
+#xtranslate Tsk_SXS => 17
+#xtranslate Tsk_SXK => 18
+#xtranslate Tsk_DAT => 19 - UPD_NEWTABS_RL3X
+#xtranslate Tsk_HLP => 20 - UPD_NEWTABS_RL3X
+#xtranslate Tsk_HLS => 21 - UPD_NEWTABS_RL3X
+#xtranslate Tsk_FUN => 22 - UPD_NEWTABS_RL3X
+#xtranslate Tsk_END => 23 - UPD_NEWTABS_RL3X
+#xtranslate Tsk_XB3 => 24 - UPD_NEWTABS_RL3X
+#xtranslate Tsk_XXA => 25 - UPD_NEWTABS_RL3X
+#xtranslate Tsk_XAC => 26 - UPD_NEWTABS_RL3X
+#xtranslate Tsk_XXU => 27
+#xtranslate Tsk_XXG => 28
+#xtranslate Tsk_XXI => 29
+#xtranslate Tsk_XXK => 30
+#xtranslate Tsk_XXL => 31
+#xtranslate Tsk_XXM => 32
+#xtranslate Tsk_XXN => 33
+#xtranslate Tsk_XXO => 34
+#xtranslate Tsk_XXQ => 35
+#xtranslate Tsk_XXR => 36
+#xtranslate Tsk_XXS => 37
+#xtranslate Tsk_MNU => 38
+#xtranslate Tsk_MNUPACK => 39
+#xtranslate Tsk_XAL => 40
+#xtranslate Tsk_XAM => 41
+#xtranslate Tsk_XAN => 42
+#xtranslate Tsk_XAO => 43
+#xtranslate Tsk_XAP => 44
+#xtranslate Tsk_XAS => 45
+#xtranslate Tsk_XAT => 46
+#xtranslate Tsk_XAU => 47
+#xtranslate Tsk_RBE => 48
+/*
+Defines de eventos
+*/
+#xtranslate e_StartProcess => 1
+#xtranslate e_EndProcess => 2
+#xtranslate e_OpenFile => 3
+#xtranslate e_CloseFile => 4
+#xtranslate e_DeleteFile => 5
+#xtranslate e_CreateFile => 6
+#xtranslate e_CopyFile => 7
+#xtranslate e_CreateIndex => 8
+#xtranslate e_NoCreatedFile => 9
+#xtranslate e_RepNoStructInSx3 => 10
+#xtranslate e_RepUnlikeType => 11
+#xtranslate e_RepUnlikeSize => 12
+#xtranslate e_RepUnlikeDecimal => 13
+#xtranslate e_RepOnlyInSX3 => 14
+#xtranslate e_RestoreBkp => 15
+#xtranslate e_RestoreBkpOk => 16
+#xtranslate e_StructureCheck => 17
+#xtranslate e_StructureNoUpdate => 18
+#xtranslate e_StructureNeedUpdate => 19
+#xtranslate e_FieldNeedTruncateSize => 20
+#xtranslate e_FieldNeedTruncateDeci => 21
+#xtranslate e_FieldNew => 22
+#xtranslate e_FieldKill => 23
+#xtranslate e_ExecuteFunction => 24
+
+/*
+Defines de Atualizacao
+*/
+
+#xtranslate e_UpdateField => 70
+#xtranslate e_NewRecord => 71
+#xtranslate e_UpdateFieldKey => 72
+#xtranslate e_NewRecordKey => 73
+#xtranslate e_RemoveTrigger => 74
+#xtranslate e_IncludeTrigger => 75
+#xtranslate e_UpdateTrigger => 76
+#xtranslate e_UpdateSXB => 77
+#xtranslate e_RemoveSXB => 78
+#xtranslate e_UserFieldInNewSx3Ok => 79
+#xtranslate e_RemoveSXBSuite => 81
+#xtranslate e_FldGrpUnexis => 82
+#xtranslate e_FldGrpInvalidSize => 83
+#xtranslate e_RemoveSIXKey => 84
+
+#xtranslate e_IncludeFilter => 85
+#xtranslate e_UpdateFilter => 86
+#xtranslate e_RemoveFilter => 87
+
+#xtranslate e_IncludeSXR => 88
+#xtranslate e_UpdateSXR => 89
+#xtranslate e_RemoveSXR => 90
+#xtranslate e_RemoveParam => 93
+#xtranslate e_RemoveSXA => 95
+#xtranslate e_RemoveSX1 => 96
+#xtranslate e_RemoveXAU => 98
+
+/*
+Defines de erros
+*/
+
+#xtranslate e_FileNoExist => 31
+#xtranslate e_NoOpenFile => 32
+#xtranslate e_NoStructInSx3 => 33
+#xtranslate e_UnlikeType => 34
+#xtranslate e_UnlikeSize => 35
+#xtranslate e_UnlikeDecimal => 36
+#xtranslate e_OnlyInSX3 => 37
+#xtranslate e_OnlyInTable => 38
+#xtranslate e_NeedTruncate => 39
+#xtranslate e_Sx3UnlikeSXGSize => 40
+#xtranslate e_Sx3UnlikeSXGMax => 41
+#xtranslate e_Sx3UnlikeSXGMin => 42
+#xtranslate e_Sx1UnlikeSXGSize => 43
+#xtranslate e_Sx1UnlikeSXGMax => 44
+#xtranslate e_Sx1UnlikeSXGMin => 45
+#xtranslate e_NoCopyFile => 46
+#xtranslate e_NoRestoreBkp => 47
+#xtranslate e_SizeFieldMemo => 48
+#xtranslate e_SIXDoubleKey => 49
+#xtranslate e_SIXDescError => 50
+#xtranslate e_SIXFileNoInSX2 => 51
+#xtranslate e_SIXNoFieldInSX3 => 52
+#xtranslate e_SIXInvalidPropri => 53
+#xtranslate e_NoOpenIndex => 54
+#xtranslate e_NoCreateFile => 55
+#xtranslate e_DupTrigger => 56
+#xtranslate e_NoDeleteFile => 57
+#xtranslate e_UserFieldInNewSx3 => 58
+#xtranslate e_HelpFileNotFound => 59
+#xtranslate e_MenuFileNotFound => 60
+#xtranslate e_NoExecuteFunction => 61
+#xtranslate e_SX2DoubleKey => 62
+#xtranslate e_SX3DoubleKey => 63
+#xtranslate e_SIXDoubleKeyUser => 64
+#xtranslate e_InExecFunctions => 65
+#xtranslate e_UpdateTcAlter => 66
+#xtranslate e_UNIQUEKEY => 67
+#xtranslate e_UniqueKeyHelpDesk => 68
+#xtranslate e_DropProcedure => 69
+#xtranslate e_InvalidTxtFile => 80
+#xtranslate e_WriteLog => 91
+#xtranslate e_SX2NoModeChange => 92
+#xtranslate e_RemoveSX5 => 94
+#xtranslate e_ReviewNumGroup => 97
+#xtranslate e_FieldChangeGrpNum => 99
+#xtranslate e_FieldChangeSX2 => 100
+#xtranslate e_FieldChangeProperty => 101
+#xtranslate e_TemplateProperties => 102
\ No newline at end of file
diff --git a/decompressed/aplrd.ch b/decompressed/aplrd.ch
new file mode 100644
index 0000000..6ed0b4f
--- /dev/null
+++ b/decompressed/aplrd.ch
@@ -0,0 +1,50 @@
+#define IMP_DISCO 1
+#define IMP_SPOOL 2
+#define IMP_PORTA 3
+#define IMP_EMAIL 4
+
+#DEFINE INIFIELD Chr(27)+Chr(02)+Chr(01)
+#DEFINE FIMFIELD Chr(27)+Chr(02)+Chr(02)
+#DEFINE INIRODA Chr(27)+Chr(03)+Chr(01)
+#DEFINE FIMRODA Chr(27)+Chr(03)+Chr(02)
+
+#define FLD_TABLE 1
+#define FLD_FIELD 2
+#define FLD_TYPE 3
+#define FLD_SIZE 4
+#define FLD_DECIMAL 5
+#define FLD_PICTURE 6
+#define FLD_HEADER 7
+#define FLD_TOTAL 8
+#define FLD_PRTCOL 9
+#define FLD_PRTSIZE 10
+
+#define IDX_KEY 1
+#define IDX_TEMP 2
+#define IDX_SELECT 3
+#define IDX_FULLKEY 4
+
+#define REL_TABLE 1
+#define REL_DESC 2
+#define REL_EXPDOM 3
+#define REL_EXPCDOM 4
+
+#define GRP_EXP 1
+#define GRP_CABEC 2
+#define GRP_EJECT 3
+
+#define PAR_PERGUNT 1
+#define PAR_TIPO 2
+#define PAR_TAMANHO 3
+#define PAR_DECIMAL 4
+#define PAR_HELP 5
+#define PAR_GSC 6
+#define PAR_F3 7
+#define PAR_CNT01 8
+#define PAR_PRESEL 9
+#define PAR_DEF01 10
+#define PAR_DEF02 11
+#define PAR_DEF03 12
+#define PAR_DEF04 13
+#define PAR_DEF05 14
+#define PAR_PICTURE 15
\ No newline at end of file
diff --git a/decompressed/aprpm.ch b/decompressed/aprpm.ch
new file mode 100644
index 0000000..3645228
--- /dev/null
+++ b/decompressed/aprpm.ch
@@ -0,0 +1,56 @@
+#define IMP_DISCO 1
+#define IMP_SPOOL 2
+#define IMP_PORTA 3
+#define IMP_EMAIL 4
+
+#DEFINE INIFIELD Chr(27)+Chr(02)+Chr(01)
+#DEFINE FIMFIELD Chr(27)+Chr(02)+Chr(02)
+#DEFINE INIRODA Chr(27)+Chr(03)+Chr(01)
+#DEFINE FIMRODA Chr(27)+Chr(03)+Chr(02)
+
+#define FLD_TABLE 1
+#define FLD_FIELD 2
+#define FLD_TYPE 3
+#define FLD_SIZE 4
+#define FLD_DECIMAL 5
+#define FLD_PICTURE 6
+#define FLD_HEADER 7
+#define FLD_TOTAL 8
+#define FLD_PRTCOL 9
+#define FLD_PRTSIZE 10
+#define FLD_PROTECTED 11
+#define FLD_PD_VALUE 12
+
+
+#define IDX_KEY 1
+#define IDX_TEMP 2
+#define IDX_SELECT 3
+#define IDX_FULLKEY 4
+
+#define REL_TABLE 1
+#define REL_DESC 2
+#define REL_EXPDOM 3
+#define REL_EXPCDOM 4
+#define REL_EXPIDX 5
+#define REL_EXPSEEK 6
+
+#define GRP_EXP 1
+#define GRP_CABEC 2
+#define GRP_EJECT 3
+#define GRP_RESUMO 4
+
+#define PAR_PERGUNT 1
+#define PAR_TIPO 2
+#define PAR_TAMANHO 3
+#define PAR_DECIMAL 4
+#define PAR_HELP 5
+#define PAR_GSC 6
+#define PAR_F3 7
+#define PAR_CNT01 8
+#define PAR_PRESEL 9
+#define PAR_DEF01 10
+#define PAR_DEF02 11
+#define PAR_DEF03 12
+#define PAR_DEF04 13
+#define PAR_DEF05 14
+#define PAR_PICTURE 15
\ No newline at end of file
diff --git a/decompressed/apvisio.ch b/decompressed/apvisio.ch
new file mode 100644
index 0000000..3170b54
--- /dev/null
+++ b/decompressed/apvisio.ch
@@ -0,0 +1,503 @@
+/*
+ Header : apvisio.ch
+ Copyright (c) 1997-2003, Microsiga Software SA
+ All rights reserved.
+*/
+
+#ifndef _APVISIO_CH_
+#define _APVISIO_CH_
+
+// VisioApplication
+
+#xtranslate :Documents => :GetDocuments()
+#xtranslate :Documents := => :GetDocuments()
+#xtranslate :Documents = => :GetDocuments()
+
+// VisioDocuments
+
+#xtranslate :Count => :GetCount()
+#xtranslate :Count := => :GetCount()
+#xtranslate :Count = => :GetCount()
+
+#xtranslate :AlternateNames => :GetAlternateNames()
+#xtranslate :AlternateNames := => :SetAlternateNames()
+#xtranslate :AlternateNames = => :SetAlternateNames()
+
+#xtranslate :AutoRecover => :GetAutoRecover()
+#xtranslate :AutoRecover := => :SetAutoRecover()
+#xtranslate :AutoRecover = => :SetAutoRecover()
+
+#xtranslate :Name => :GetName()
+#xtranslate :Name := => :SetName()
+#xtranslate :Name = => :SetName()
+
+#xtranslate :Masters => :GetMasters()
+#xtranslate :Masters := => :GetMasters()
+#xtranslate :Masters = => :GetMasters()
+
+#xtranslate :Pages => :GetPages()
+#xtranslate :Pages := => :GetPages()
+#xtranslate :Pages = => :GetPages()
+
+// ------------------------------------------------------
+
+// VisioPages
+
+#xtranslate :Shapes => :GetShapes()
+#xtranslate :Shapes := => :GetShapes()
+#xtranslate :Shapes = => :GetShapes()
+
+// ------------------------------------------------------
+
+// VisioPage
+
+#xtranslate :Background => :GetBackground()
+#xtranslate :Background := => :SetBackground()
+#xtranslate :Background = => :SetBackground()
+
+#xtranslate :PgIndex => :GetPgIndex()
+#xtranslate :PgIndex := => :SetPgIndex()
+#xtranslate :PgIndex = => :SetPgIndex()
+
+#xtranslate :BackPage => :GetBackPage()
+#xtranslate :BackPage := => :SetBackPage()
+#xtranslate :BackPage = => :SetBackPage()
+
+#xtranslate :NameU => :GetNameU()
+#xtranslate :NameU := => :SetNameU()
+#xtranslate :NameU = => :SetNameU()
+
+
+// ------------------------------------------------------
+//VisioCell
+
+#xtranslate :Formula => :GetFormula()
+#xtranslate :Formula := => :SetFormula()
+#xtranslate :Formula = => :SetFormula()
+
+#xtranslate :ResultIU => :GetResultIU()
+#xtranslate :ResultIU := => :SetResultIU()
+#xtranslate :ResultIU = => :SetResultIU()
+
+#xtranslate :RowName => :GetRowName()
+#xtranslate :RowName := => :SetRowName()
+#xtranslate :RowName = => :SetRowName()
+
+#xtranslate :VsoFormulaU => :GetVsoFormulaU()
+#xtranslate :VsoFormulaU := => :SetVsoFormulaU()
+#xtranslate :VsoFormulaU = => :SetVsoFormulaU()
+
+// ------------------------------------------------------
+//VisioShape
+
+#xtranslate :Text => :GetText()
+#xtranslate :Text := => :SetText()
+#xtranslate :Text = => :SetText()
+
+#xtranslate :Data1 => :GetData1()
+#xtranslate :Data1 := => :SetData1()
+#xtranslate :Data1 = => :SetData1()
+
+#xtranslate :Data2 => :GetData2()
+#xtranslate :Data2 := => :SetData2()
+#xtranslate :Data2 = => :SetData2()
+
+#xtranslate :Data3 => :GetData3()
+#xtranslate :Data3 := => :SetData3()
+#xtranslate :Data3 = => :SetData3()
+
+#xtranslate :Help => :GetHelp()
+#xtranslate :Help := => :SetHelp()
+#xtranslate :Help = => :SetHelp()
+
+#xtranslate :OneD => :GetOneD()
+#xtranslate :OneD := => :SetOneD()
+#xtranslate :OneD = => :SetOneD()
+
+#xtranslate :Style => :GetStyle()
+#xtranslate :Style := => :SetStyle()
+#xtranslate :Style = => :SetStyle()
+
+#xtranslate :LineStyle => :GetLineStyle()
+#xtranslate :LineStyle := => :SetLineStyle()
+#xtranslate :LineStyle = => :SetLineStyle()
+
+#xtranslate :FillStyle => :GetFillStyle()
+#xtranslate :FillStyle := => :SetFillStyle()
+#xtranslate :FillStyle = => :SetFillStyle()
+
+#xtranslate :TextStyle => :GetTextStyle()
+#xtranslate :TextStyle := => :SetTextStyle()
+#xtranslate :TextStyle = => :SetTextStyle()
+
+#xtranslate :ID => :GetID()
+#xtranslate :ID := => :GetID()
+#xtranslate :ID = => :GetID()
+
+
+// ------------------------------------------------------
+//VisioMaster
+
+#xtranslate :Prompt => :GetPrompt()
+#xtranslate :Prompt := => :SetPrompt()
+#xtranslate :Prompt = => :SetPrompt()
+
+#xtranslate :AlignName => :GetAlignName()
+#xtranslate :AlignName := => :SetAlignName()
+#xtranslate :AlignName = => :SetAlignName()
+
+#xtranslate :IconSize => :GetIconSize()
+#xtranslate :IconSize := => :SetIconSize()
+#xtranslate :IconSize = => :SetIconSize()
+
+#xtranslate :IconUpdate => :GetIconUpdate()
+#xtranslate :IconUpdate := => :SetIconUpdate()
+#xtranslate :IconUpdate = => :SetIconUpdate()
+
+#xtranslate :PatternFlags => :GetPatternFlags()
+#xtranslate :PatternFlags := => :SetPatternFlags()
+#xtranslate :PatternFlags = => :SetPatternFlags()
+
+#xtranslate :MatchByName => :GetMatchByName()
+#xtranslate :MatchByName := => :SetMatchByName()
+#xtranslate :MatchByName = => :SetMatchByName()
+
+#xtranslate :Hidden => :GetHidden()
+#xtranslate :Hidden := => :SetHidden()
+#xtranslate :Hidden = => :SetHidden()
+
+#xtranslate :IndexInStencil => :GetIndexInStencil()
+#xtranslate :IndexInStencil := => :SetIndexInStencil()
+#xtranslate :IndexInStencil = => :SetIndexInStencil(