Changeset: 171 - Generación del BINARIO desde el nuevo header metadata <OBJECTDATA>

This commit is contained in:
fernando
2014-02-22 00:32:51 +01:00
parent f61fbfa3e2
commit 46d8e9ee5b
4 changed files with 108 additions and 92 deletions

View File

@@ -26,7 +26,7 @@ _LegalTrademark = "Open Source"
_ProductName = " FOXBIN2PRG"
_MajorVer = "1"
_MinorVer = "19"
_Revision = " 261"
_Revision = " 269"
_LanguageID = "1034"
_AutoIncrement = "1"
*</DevInfo>
@@ -50,8 +50,8 @@ MODIFY PROJECT 'foxbin2prg.pjx' NOWAIT NOSHOW NOPROJECTHOOK
loProject = _VFP.Projects('foxbin2prg.pjx')
WITH loProject.FILES
.ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="1132857145" ID="1131721714" ObjRev="0" />
.ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="1145939245" ID="1130644423" ObjRev="544" />
.ADD('config\config.fpw') && *< FileMetadata: Type="T" Cpid="1252" Timestamp="0" ID="1131721714" ObjRev="0" />
.ADD('foxbin2prg.prg') && *< FileMetadata: Type="P" Cpid="1252" Timestamp="0" ID="1130644423" ObjRev="544" />
*</BuildProj>
.ITEM('__newproject.f2b').Remove()

Binary file not shown.

Binary file not shown.

View File

@@ -115,7 +115,7 @@
* se hace desde el directorio del archivo, con lo que las referencias relativas pueden
* generar errores de compilaci<63>n, t<>picamente los #include.
* NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usar<61> como base para recompilar
* tcNoTimestamps (v? IN ) '1' para mantener los timestamps vac<61>os. <EFBFBD>til para minimizar diferencias en Diff/Merge por este motivo.
* tcNoTimestamps ( ) Sin uso. Utilizar el archivo de configuraci<63>n.
*
* Ej: DO FOXBIN2PRG.PRG WITH "C:\DESA\INTEGRACION\LIBRERIA.VCX"
*---------------------------------------------------------------------------------------------------
@@ -126,9 +126,10 @@ LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDeb
#DEFINE C_CMT_F '--*'
#DEFINE C_CLASSDATA_I '*< CLASSDATA:'
#DEFINE C_CLASSDATA_F '/>'
#DEFINE C_LEN_CLASSDATA_I LEN(C_CLASSDATA_I)
#DEFINE C_OBJECTDATA_I '*< OBJECTDATA:'
#DEFINE C_OBJECTDATA_F '/>'
#DEFINE C_LEN_CLASSDATA_I LEN(C_CLASSDATA_I)
#DEFINE C_LEN_OBJECTDATA_I LEN(C_OBJECTDATA_I)
#DEFINE C_OLE_I '*< OLE:'
#DEFINE C_OLE_F '/>'
#DEFINE C_LEN_OLE_I LEN(C_OLE_I)
@@ -784,7 +785,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
.l_ShowProgress = NOT (TRANSFORM(tcDontShowProgress)=='1')
.l_ShowErrors = NOT (TRANSFORM(tcDontShowErrors) == '1')
.l_Recompile = (EMPTY(tcRecompile) OR TRANSFORM(tcRecompile) == '1' OR DIRECTORY(tcRecompile))
.l_UseTimestamps = (TRANSFORM(tcNoTimestamps) == '0')
.l_UseTimestamps = (TRANSFORM(tcNoTimestamps) == '1')
.l_Debug = (TRANSFORM(tcDebug)=='1' OR FILE(FORCEEXT(.c_Foxbin2prg_FullPath,'LOG')))
.n_ExtraBackupLevels = INT(VAL(TRANSFORM(tcExtraBackupLevels)))
@@ -822,7 +823,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
* se hace desde el directorio del archivo, con lo que las referencias relativas pueden
* generar errores de compilaci<63>n, t<>picamente los #include.
* NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usar<61> como base para recompilar
* tcNoTimestamps (v? IN ) Indica si se deben vacar ('1') o no ['0'] los timestamps de registro
* tcNoTimestamps ( ) Sin uso. Utilizar el archivo de configuraci<63>n.
* tcBackupLevels (v? IN ) Indica la cantidad de niveles de backup a realizar (por defecto '1')
*--------------------------------------------------------------------------------------------------------------
LPARAMETERS tc_InputFile, tcType, tcTextName, tlGenText, tcDontShowErrors, tcDebug, tcDontShowProgress ;
@@ -854,7 +855,7 @@ DEFINE CLASS c_foxbin2prg AS CUSTOM
+ C_TAB + 'tcNoTimestamps: ' + TRANSFORM(tcNoTimestamps) )
tcRecompile = EVL(tcRecompile,'1')
tcNoTimestamps = EVL(tcNoTimestamps,'0')
tcNoTimestamps = '0' &&EVL(tcNoTimestamps,'0')
IF _VFP.STARTMODE > 0
SET ESCAPE OFF
@@ -2642,7 +2643,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
+ [<memberdata name="analizarbloque_foxbin2prg" display="analizarBloque_FoxBin2Prg"/>] ;
+ [<memberdata name="analizarbloque_hidden" display="analizarBloque_HIDDEN"/>] ;
+ [<memberdata name="analizarbloque_include" display="analizarBloque_INCLUDE"/>] ;
+ [<memberdata name="analizarbloque_metadata" display="analizarBloque_METADATA"/>] ;
+ [<memberdata name="analizarbloque_classmetadata" display="analizarBloque_CLASSMETADATA"/>] ;
+ [<memberdata name="analizarbloque_objectmetadata" display="analizarBloque_OBJECTMETADATA"/>] ;
+ [<memberdata name="analizarbloque_ole_def" display="analizarBloque_OLE_DEF"/>] ;
+ [<memberdata name="analizarbloque_procedure" display="analizarBloque_PROCEDURE"/>] ;
+ [<memberdata name="analizarbloque_protected" display="analizarBloque_PROTECTED"/>] ;
@@ -2751,9 +2753,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
LPARAMETERS tcLineWithMetadata, taPropsAndValues, tnPropsAndValues_Count, tcLeftTag, tcRightTag
EXTERNAL ARRAY taPropsAndValues
LOCAL lcMetadatos, I, X, lnEqualSigns, lcNextVar, lcStr, lcVirtualMeta, lnPos1, lnPos2, lnLastPos, lnCantComillas
LOCAL lcMetadatos, I, lnEqualSigns, lcNextVar, lcStr, lcVirtualMeta, lnPos1, lnPos2, lnLastPos, lnCantComillas
STORE '' TO lcVirtualMeta
STORE 0 TO lnPos1, lnPos2, lnLastPos, tnPropsAndValues_Count, I, X
STORE 0 TO lnPos1, lnPos2, lnLastPos, tnPropsAndValues_Count, I
lcMetadatos = ALLTRIM( STREXTRACT( tcLineWithMetadata, tcLeftTag, tcRightTag, 1, 1) )
lnCantComillas = OCCURS( '"', lcMetadatos )
@@ -2773,7 +2775,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
* TENER EN CUENTA AL GENERAR EL TEXTO O AL MODIFICARLO MANUALMENTE AL MERGEAR
*-------------------------------------------------------------------------------------
FOR I = 1 TO lnCantComillas STEP 2
X = X + 1
tnPropsAndValues_Count = tnPropsAndValues_Count + 1
* Type="V" Cpid="1252"
* ^ ^ => Posiciones del par de comillas dobles
@@ -2782,8 +2784,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
* Type="V" Cpid="1252"
* ^ ^ ^ => LastPos, lnPos1 y lnPos2
taPropsAndValues(X,1) = ALLTRIM( GETWORDNUM( SUBSTR( lcMetadatos, lnLastPos, lnPos1 - lnLastPos ), 1, '=' ) )
taPropsAndValues(X,2) = SUBSTR( lcMetadatos, lnPos1 + 1, lnPos2 - lnPos1 - 1 )
taPropsAndValues(tnPropsAndValues_Count,1) = ALLTRIM( GETWORDNUM( SUBSTR( lcMetadatos, lnLastPos, lnPos1 - lnLastPos ), 1, '=' ) )
taPropsAndValues(tnPropsAndValues_Count,2) = SUBSTR( lcMetadatos, lnPos1 + 1, lnPos2 - lnPos1 - 1 )
lnLastPos = lnPos2 + 1
ENDFOR
@@ -3836,7 +3838,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
IF LEFT( tcLine, 11 ) == 'ADD OBJECT '
*-- Estructura a reconocer: ADD OBJECT 'frm_a.Check1' AS check [WITH]
llBloqueEncontrado = .T.
LOCAL laPropsAndValues(1,2), lnPropsAndValues_Count, Z, lcProp, lcValue
LOCAL laPropsAndValues(1,2), lnPropsAndValues_Count, Z, lcProp, lcValue, lcNombre, lcObjName
tcLine = CHRTRAN( tcLine, ['], ["] )
IF EMPTY(toClase._Fin_Cab)
@@ -3844,22 +3846,42 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
toClase._Ini_Cuerpo = I
ENDIF
toObjeto = NULL
toObjeto = CREATEOBJECT('CL_OBJETO')
toClase.add_Object( toObjeto )
toObjeto._Nombre = ALLTRIM( CHRTRAN( STREXTRACT(tcLine, 'ADD OBJECT ', ' AS ', 1, 1), ['"], [] ) )
toObjeto = NULL
lcNombre = ALLTRIM( CHRTRAN( STREXTRACT(tcLine, 'ADD OBJECT ', ' AS ', 1, 1), ['"], [] ) )
lcObjName = JUSTEXT( '.' + lcNombre )
IF toClase.l_ObjectMetadataInHeader
FOR Z = 1 TO toClase._AddObject_Count
IF LOWER(toClase._AddObjects(Z)._Nombre) == LOWER(lcNombre) THEN
toObjeto = toClase._AddObjects(Z)
EXIT
ENDIF
ENDFOR
ENDIF
IF ISNULL(toObjeto)
toObjeto = CREATEOBJECT('CL_OBJETO')
*-- Luego se reasigna el ZOrder, pero si no lo hace, se pone <20>ltimo como si se acabara de agregar.
*-- Puede pasar si se agrega manualmente al TX2 y se olvida agregar la metadata OBJECTDATA.
toObjeto._ZOrder = 9999
toObjeto._Nombre = lcNombre
ENDIF
toObjeto._ObjName = lcObjName
IF '.' $ toObjeto._Nombre
toObjeto._ObjName = JUSTEXT( toObjeto._Nombre )
toObjeto._Parent = toClase._ObjName + '.' + JUSTSTEM( toObjeto._Nombre )
ELSE
toObjeto._ObjName = toObjeto._Nombre
toObjeto._Parent = toClase._ObjName
ENDIF
toObjeto._Nombre = toObjeto._Parent + '.' + toObjeto._ObjName
toObjeto._Class = ALLTRIM( STREXTRACT(tcLine + ' WITH', ' AS ', ' WITH', 1, 1) )
IF NOT toClase.l_ObjectMetadataInHeader
toClase.add_Object( toObjeto )
ENDIF
*-- Propiedades del ADD OBJECT
WITH THIS
@@ -3874,10 +3896,14 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
toObjeto._ClassLib = .get_ValueByName_FromListNamesWithValues( 'ClassLib', 'C', @laPropsAndValues )
toObjeto._BaseClass = .get_ValueByName_FromListNamesWithValues( 'BaseClass', 'C', @laPropsAndValues )
toObjeto._UniqueID = .get_ValueByName_FromListNamesWithValues( 'UniqueID', 'C', @laPropsAndValues )
IF NOT toClase.l_ObjectMetadataInHeader
toObjeto._UniqueID = .get_ValueByName_FromListNamesWithValues( 'UniqueID', 'C', @laPropsAndValues )
toObjeto._TimeStamp = INT( .RowTimeStamp( .get_ValueByName_FromListNamesWithValues( 'TimeStamp', 'T', @laPropsAndValues ) ) )
toObjeto._ZOrder = .get_ValueByName_FromListNamesWithValues( 'ZOrder', 'I', @laPropsAndValues )
ENDIF
toObjeto._Ole2 = .get_ValueByName_FromListNamesWithValues( 'OLEObject', 'C', @laPropsAndValues )
toObjeto._ZOrder = .get_ValueByName_FromListNamesWithValues( 'ZOrder', 'I', @laPropsAndValues )
toObjeto._TimeStamp = INT( .RowTimeStamp( .get_ValueByName_FromListNamesWithValues( 'TimeStamp', 'T', @laPropsAndValues ) ) )
toObjeto._Ole = STRCONV( .get_ValueByName_FromListNamesWithValues( 'Value', 'C', @laPropsAndValues ), 14 )
IF NOT EMPTY( toObjeto._Ole2 ) && Le agrego "OLEObject = " delante
@@ -3895,11 +3921,9 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDIF
IF RIGHT(tcLine, 3) == ', ;' && VALOR INTERMEDIO CON ", ;"
*toObjeto.add_Property( .desnormalizarAsignacion( LEFT(tcLine, LEN(tcLine) - 3) ) )
.get_SeparatedPropAndValue( LEFT(tcLine, LEN(tcLine) - 3), @lcProp, @lcValue )
toObjeto.add_Property( @lcProp, @lcValue )
ELSE && VALOR FINAL SIN ", ;" (JUSTO ANTES DEL <END OBJECT>)
*toObjeto.add_Property( .desnormalizarAsignacion( RTRIM(tcLine) ) )
.get_SeparatedPropAndValue( RTRIM(tcLine), @lcProp, @lcValue )
toObjeto.add_Property( @lcProp, @lcValue )
ENDIF
@@ -4035,8 +4059,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
TRY
llBloqueEncontrado = .T.
LOCAL Z, lcProp, lcValue, loEx AS EXCEPTION ;
, llMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ;
, llINCLUDE_Completed, llCLASS_PROPERTY_Completed ;
, llCLASSMETADATA_Completed, llPROTECTED_Completed, llHIDDEN_Completed, llDEFINED_PAM_Completed ;
, llINCLUDE_Completed, llCLASS_PROPERTY_Completed, llOBJECTMETADATA_Completed ;
, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
STORE '' TO tcProcedureAbierto
@@ -4079,7 +4103,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
llPROTECTED_Completed = .T.
llHIDDEN_Completed = .T.
llINCLUDE_Completed = .T.
llMETADATA_Completed = .T.
llCLASSMETADATA_Completed = .T.
llOBJECTMETADATA_Completed = .T.
llDEFINED_PAM_Completed = .T.
@@ -4096,8 +4121,12 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
llINCLUDE_Completed = .T.
CASE NOT llMETADATA_Completed AND .analizarBloque_METADATA( @toClase, @tcLine )
llMETADATA_Completed = .T.
CASE NOT llCLASSMETADATA_Completed AND .analizarBloque_CLASSMETADATA( @toClase, @tcLine )
llCLASSMETADATA_Completed = .T.
CASE NOT llOBJECTMETADATA_Completed AND .analizarBloque_OBJECTMETADATA( @toClase, @tcLine )
*llOBJECTMETADATA_Completed = .T.
CASE NOT llDEFINED_PAM_Completed AND .analizarBloque_DEFINED_PAM( @toClase, @tcLine, @taCodeLines, tnCodeLines, @I )
@@ -4109,7 +4138,8 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
llPROTECTED_Completed = .T.
llHIDDEN_Completed = .T.
llINCLUDE_Completed = .T.
llMETADATA_Completed = .T.
llCLASSMETADATA_Completed = .T.
llOBJECTMETADATA_Completed = .T.
llDEFINED_PAM_Completed = .T.
@@ -4123,7 +4153,6 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*-- NOTA: Las propiedades se agregan tal cual, incluso aunque est<73>n separadas en
*-- varias l<>neas (memberdata y fb2p_value), ya que luego se ensamblan en classProps2Memo().
*
*toClase.add_Property( THIS.desnormalizarAsignacion( RTRIM(tcLine) ), RTRIM(tc_Comentario) )
.get_SeparatedPropAndValue( RTRIM(tcLine), @lcProp, @lcValue, @toClase, @taCodeLines, tnCodeLines, @I )
toClase.add_Property( @lcProp, @lcValue, RTRIM(tc_Comentario) )
@@ -4245,7 +4274,7 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
*******************************************************************************************************************
PROCEDURE analizarBloque_METADATA
PROCEDURE analizarBloque_CLASSMETADATA
LPARAMETERS toClase, tcLine
#IF .F.
@@ -4280,6 +4309,36 @@ DEFINE CLASS c_conversor_prg_a_bin AS c_conversor_base
ENDPROC
PROCEDURE analizarBloque_OBJECTMETADATA
LPARAMETERS toClase, tcLine
#IF .F.
LOCAL toClase AS CL_CLASE OF 'FOXBIN2PRG.PRG'
#ENDIF
LOCAL llBloqueEncontrado
IF LEFT(tcLine, C_LEN_OBJECTDATA_I) == C_OBJECTDATA_I && METADATA del ADD OBJECT
*< OBJECTDATA: ObjName="txtValor" Timestamp="2013/11/19 11:51:04" Uniqueid="_3WF0VSTN1" />
LOCAL laPropsAndValues(1,2), lnPropsAndValues_Count, loObjeto AS CL_OBJETO OF 'FOXBIN2PRG.PRG'
llBloqueEncontrado = .T.
toClase.l_ObjectMetadataInHeader = .T.
loObjeto = CREATEOBJECT('CL_OBJETO')
toClase.add_Object( loObjeto )
WITH THIS
.get_ListNamesWithValuesFrom_InLine_MetadataTag( @tcLine, @laPropsAndValues, @lnPropsAndValues_Count, C_OBJECTDATA_I, C_OBJECTDATA_F )
loObjeto._Nombre = .get_ValueByName_FromListNamesWithValues( 'ObjPath', 'C', @laPropsAndValues )
loObjeto._TimeStamp = INT( .RowTimeStamp( .get_ValueByName_FromListNamesWithValues( 'TimeStamp', 'T', @laPropsAndValues ) ) )
loObjeto._UniqueID = .get_ValueByName_FromListNamesWithValues( 'UniqueID', 'C', @laPropsAndValues )
ENDWITH && THIS
ENDIF
RETURN llBloqueEncontrado
ENDPROC
*******************************************************************************************************************
PROCEDURE analizarBloque_OLE_DEF
LPARAMETERS toModulo, tcLine, taCodeLines, I, tnCodeLines, tcProcedureAbierto
@@ -7007,12 +7066,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ENDIF
*-- Genero el m<>todo SIN indentar, ya que se hace luego
*tcMethods2 = tcMethods
*TEXT TO tcMethods2 ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
* <<'PROCEDURE'>> <<tcMethodName>>
* <<.IndentarMemo( taCode(taMethods(I,2)) )>>
* <<'ENDPROC'>>
*ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
tcMethods = tcMethods + CR_LF + 'PROCEDURE ' + tcMethodName
tcMethods = tcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)) )
@@ -7516,7 +7569,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*-- Defino los objetos a cargar
THIS.get_PropsAndValuesFrom_PROPERTIES( toRegObj.PROPERTIES, 1, @laPropsAndValues, @lnPropsAndValues_Count, @lcMemo )
*lcMemo = THIS.set_MultilineMemoWithAddObjectProperties( lcMemo, C_TAB + C_TAB, .T. )
lcMemo = THIS.set_MultilineMemoWithAddObjectProperties( @laPropsAndValues, @lnPropsAndValues_Count, C_TAB + C_TAB, .T. )
IF '.' $ toRegObj.PARENT
@@ -7548,10 +7600,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ENDTEXT
ENDIF
*TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8
* BaseClass="<<toRegObj.Baseclass>>" UniqueID="<<toRegObj.Uniqueid>>"
* Timestamp="<<THIS.getTimeStamp(toRegObj.Timestamp)>>" ZOrder="<<TRANSFORM(toRegObj._ZOrder)>>" <<>>
*ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8
BaseClass="<<toRegObj.Baseclass>>" <<>>
ENDTEXT
@@ -7600,12 +7648,6 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
FOR I = 1 TO lnMethodCount
*-- Genero los m<>todos indentados
*TEXT TO lcMethods2 ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
* <<>> <<laMethods(I,3)>>PROCEDURE <<laMethods(I,1)>>
* <<.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )>>
* <<>> ENDPROC
*ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
lcMethods = lcMethods + CR_LF + C_TAB + laMethods(I,3) + C_PROCEDURE + ' ' + laMethods(I,1)
lcMethods = lcMethods + CR_LF + .IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )
@@ -7667,21 +7709,12 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
ENDIF
*-- C<>digo del m<>todo
*TEXT TO lcMethods2 ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
* <<.IndentarMemo( taCode(taMethods(I,2)), CHR(9) + CHR(9) )>>
* <<>> ENDPROC
*ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aqu<71> porque a veces quita espacios de la derecha, y eso es peligroso
lcMethods = lcMethods + CR_LF + .IndentarMemo( taCode(taMethods(I,2)), C_TAB + C_TAB )
lcMethods = lcMethods + CR_LF + C_TAB + 'ENDPROC'
lcMethods = lcMethods + CR_LF
ENDFOR
*TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
* <<lcMethods>>
*ENDTEXT
ENDWITH && THIS
C_FB2PRG_CODE = C_FB2PRG_CODE + C_TAB + lcMethods &&+ CR_LF
@@ -7939,15 +7972,24 @@ DEFINE CLASS c_conversor_bin_a_prg AS c_conversor_base
*******************************************************************************************************************
PROCEDURE write_OBJECTMETADATA
LPARAMETERS toRegObj
LOCAL lcNombre
*-- Agrego Metadatos de los objetos (Timestamp, UniqueID)
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1+2 PRETEXT 1+2
<<>>
ENDTEXT
IF '.' $ toRegObj.PARENT
*-- Este caso: clase.objeto.objeto ==> se quita clase
lcNombre = SUBSTR(toRegObj.Parent, AT('.', toRegObj.Parent)+1) + '.' + toRegObj.objName
ELSE
*-- Este caso: objeto
lcNombre = toRegObj.objName
ENDIF
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8
<<>> <<C_OBJECTDATA_I>>
ObjName="<<toRegObj.objname>>" <<>>
ObjPath="<<lcNombre>>"
UniqueID="<<toRegObj.Uniqueid>>"
Timestamp="<<ALLTRIM(THIS.getTimeStamp(toRegObj.Timestamp))>>"
ENDTEXT
@@ -8702,9 +8744,6 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
INDEX ON PADR(LOWER(PLATFORM + IIF(EMPTY(PARENT),'',ALLTRIM(PARENT)+'.')+OBJNAME),240) TAG PARENT_OBJ OF TABLABIN ADDITIVE
SET ORDER TO 0 IN TABLABIN
*toModulo = NULL
*toModulo = CREATEOBJECT('CL_MODULO')
C_FB2PRG_CODE = C_FB2PRG_CODE + toFoxBin2Prg.get_PROGRAM_HEADER()
.get_NombresObjetosOLEPublic( @la_NombresObjsOle )
@@ -8736,7 +8775,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
AND (EMPTY(TABLABIN.PARENT) ;
AND (TABLABIN.BASECLASS == 'dataenvironment' OR TABLABIN.BASECLASS == 'form' OR TABLABIN.BASECLASS == 'formset' ) )
*loRegClass = NULL
loRegClass = NULL
SCATTER MEMO NAME loRegClass
IF NOT toFoxBin2Prg.l_UseTimestamps
@@ -8770,7 +8809,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
SCATTER MEMO NAME loRegObj
laObjs(lnObjCount,1) = loRegObj
laObjs(lnObjCount,2) = RECNO() && ZOrder
laObjs(lnObjCount,3) = lnObjCount && Alphabetic order
laObjs(lnObjCount,3) = lnObjCount && Orden alfab<EFBFBD>tico
IF NOT toFoxBin2Prg.l_UseTimestamps
loRegObj.TIMESTAMP = 0
@@ -8796,28 +8835,7 @@ DEFINE CLASS c_conversor_scx_a_prg AS c_conversor_bin_a_prg
.write_CLASS_PROPERTIES( @loRegClass, @laPropsAndValues, @laPropsAndComments, @laProtected )
*-------------------------------------------------------------------------------
*-- RECORRO LOS OBJETOS DENTRO DE LA CLASE ACTUAL PARA EXPORTAR SU DEFINICI<43>N
*-------------------------------------------------------------------------------
*lnRecno = RECNO()
*LOCATE FOR TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
*SCAN REST WHILE TABLABIN.PLATFORM = "WINDOWS" AND ALLTRIM(GETWORDNUM(TABLABIN.PARENT, 1, '.')) == lcObjName
* SCATTER MEMO NAME loRegObj
* IF NOT toFoxBin2Prg.l_UseTimestamps
* loRegObj.TIMESTAMP = 0
* ENDIF
* IF toFoxBin2Prg.l_ClearUniqueID
* loRegObj.UNIQUEID = ''
* ENDIF
* ADDPROPERTY( loRegObj, '_ZOrder', RECNO()*100 ) && Para permitir insertar objetos manualmente entre medias al integrar cambios
* .write_ADD_OBJECTS_WithProperties( @loRegObj )
*ENDSCAN
*GOTO RECORD (lnRecno)
ASORT(laObjs, 3, -1, 0, 0) && Orden Alfab<61>tico (del SCAN original)
ASORT(laObjs, 3, -1, 0, 0) && Orden Alfab<61>tico de objetos (del SCAN original)
FOR I = 1 TO lnObjCount
.write_ADD_OBJECTS_WithProperties( laObjs(I,1) )
@@ -10263,6 +10281,7 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE
+ [<memberdata name="add_procedure" display="add_Procedure"/>] ;
+ [<memberdata name="add_property" display="add_Property"/>] ;
+ [<memberdata name="add_object" display="add_Object"/>] ;
+ [<memberdata name="l_objectmetadatainheader" display="l_ObjectMetadataInHeader"/>] ;
+ [<memberdata name="_addobject_count" display="_AddObject_Count"/>] ;
+ [<memberdata name="_addobjects" display="_AddObjects"/>] ;
+ [<memberdata name="_baseclass" display="_BaseClass"/>] ;
@@ -10314,6 +10333,7 @@ DEFINE CLASS CL_CLASE AS CL_CUS_BASE
DIMENSION _Props[1,2], _AddObjects[1], _Procedures[1]
l_ObjectMetadataInHeader = .F.
_Nombre = ''
_ObjName = ''
_Parent = ''
@@ -10831,7 +10851,6 @@ DEFINE CLASS CL_DBC_COL_BASE AS CL_COL_BASE
+ [<memberdata name="updatedbc" display="updateDBC"/>] ;
+ [</VFPData>]
*PROTECTED __ObjectID, __ObjectType
__ObjectID = 0
_Name = ''
@@ -11584,7 +11603,6 @@ DEFINE CLASS CL_DBC_BASE AS CL_CUS_BASE
LOCAL lcBinRecord, lnLen, lcDataType
lcBinRecord = ''
*lcDataType = IIF( tnPropertyID = 2, 'B', VARTYPE(teData) )
lcDataType = THIS.getDBCPropertyValueTypeByPropertyID( tnPropertyID )
DO CASE
@@ -16024,11 +16042,9 @@ DEFINE CLASS CL_MENU AS CL_MENU_COL_BASE
DO CASE
CASE loHeader.ObjType = 1 && Menu Bar (Sistema)
*lcText = lcText + CR_LF + 'DEFINE MENU _MSYSMENU BAR'
lcText = lcText + CR_LF + 'DEFINE MENU ' + loBarPop.NAME + ' BAR'
CASE loHeader.ObjType = 5 && Menu Bar (On top)
*lcText = lcText + CR_LF + 'DEFINE MENU _ONTOP BAR'
lcText = lcText + CR_LF + 'DEFINE MENU ' + loBarPop.NAME + ' BAR'
CASE loHeader.ObjType = 4 && Shortcut