diff --git a/foxbin2prg.pj2 b/foxbin2prg.pj2
index f8338fa..a12d939 100644
--- a/foxbin2prg.pj2
+++ b/foxbin2prg.pj2
@@ -26,7 +26,7 @@ _LegalTrademark = "Open Source"
_ProductName = " FOXBIN2PRG"
_MajorVer = "1"
_MinorVer = "19"
-_Revision = " 261"
+_Revision = " 269"
_LanguageID = "1034"
_AutoIncrement = "1"
*
@@ -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" />
*
.ITEM('__newproject.f2b').Remove()
diff --git a/foxbin2prg.pjt b/foxbin2prg.pjt
index db66c09..40a7272 100644
Binary files a/foxbin2prg.pjt and b/foxbin2prg.pjt differ
diff --git a/foxbin2prg.pjx b/foxbin2prg.pjx
index d554483..d85b075 100644
Binary files a/foxbin2prg.pjx and b/foxbin2prg.pjx differ
diff --git a/foxbin2prg.prg b/foxbin2prg.prg
index 15cdd0a..8336652 100644
--- a/foxbin2prg.prg
+++ b/foxbin2prg.prg
@@ -115,7 +115,7 @@
* se hace desde el directorio del archivo, con lo que las referencias relativas pueden
* generar errores de compilación, típicamente los #include.
* NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usará como base para recompilar
-* tcNoTimestamps (v? IN ) '1' para mantener los timestamps vacíos. Útil para minimizar diferencias en Diff/Merge por este motivo.
+* tcNoTimestamps ( ) Sin uso. Utilizar el archivo de configuració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ón, típicamente los #include.
* NOTA: Si en vez de '1' se indica un Path (p.ej, el del proyecto, se usará 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ó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
+ [] ;
+ [] ;
+ [] ;
- + [] ;
+ + [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -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 ú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 )
- *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é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'>> <>
- * <<.IndentarMemo( taCode(taMethods(I,2)) )>>
- * <<'ENDPROC'>>
- *ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aquí 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="<>" UniqueID="<>"
- * Timestamp="<>" ZOrder="<>" <<>>
- *ENDTEXT
TEXT TO C_FB2PRG_CODE ADDITIVE TEXTMERGE NOSHOW FLAGS 1 PRETEXT 1+2+4+8
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
- * <<>> <>PROCEDURE <>
- * <<.IndentarMemo( laCode(laMethods(I,2)), CHR(9) + CHR(9) )>>
- * <<>> ENDPROC
-
- *ENDTEXT
*-- Sustituyo el TEXT/ENDTEXT aquí 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í 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
- * <>
- *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
<<>> <>
- ObjName="<>" <<>>
+ ObjPath="<>"
UniqueID="<>"
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é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Ó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ético (del SCAN original)
+ ASORT(laObjs, 3, -1, 0, 0) && Orden Alfabé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
+ [] ;
+ [] ;
+ [] ;
+ + [] ;
+ [] ;
+ [] ;
+ [] ;
@@ -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
+ [] ;
+ []
- *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