From e70e8d7d13bda38d212c46a7c0cc108a22d25606 Mon Sep 17 00:00:00 2001 From: fdbozzo Date: Tue, 11 Apr 2017 22:59:33 +0200 Subject: [PATCH] Feature: When in objet-mode, allow the use of a CFG-object for the tcCFG parameter (Lutz Scheffler) --- foxbin2prg.prg | 51 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 8 deletions(-) diff --git a/foxbin2prg.prg b/foxbin2prg.prg index ee34fe1..904062a 100644 --- a/foxbin2prg.prg +++ b/foxbin2prg.prg @@ -197,6 +197,7 @@ * 26/03/2017 FDBOZZO v1.19.49 Mejora cfg: Se permite indicar un archivo CFG por parámetro de cualquier directorio para anular los CFG predeterminados de los subdirectorios, para casos especiales donde sea necesario * 28/03/2017 FDBOZZO v1.19.49 Mejora vcx: Implementada sintaxis para importar o exportar clases individuales usando "classlibrary.vcx::classname::import" y "classlibrary.vcx::classname::export" * 11/04/2017 FDBOZZO v1.19.49 Bug Fix frx: Cuando dentro de una expresión se usa "&&", se corrompe el registro del FRX generado (Alejandro A Sosa) +* 11/04/2017 FDBOZZO v1.19.49 Mejora cfg : En modo objeto permitir indicar un objeto CFG en lugar de un archivo CFG (Lutz Scheffler) * * *--------------------------------------------------------------------------------------------------- @@ -308,6 +309,7 @@ * 23/03/2017 Lutz Scheffler Reporte bug vcx v1.19.48: No funciona la generación de una clase individual con "classlib.vcx::classname" (Arreglado en v1.19.49) * 23/03/2017 Lutz Scheffler Mejora vcx v1.19.48: Poder importar una clase (VC2 generado con ClassPerFile) en un VCX existente (Agragado en v1.19.49) * 30/03/2017 Alejandro A Sosa Reporte bug frx v1.19.48: Cuando dentro de una expresión se usa "&&", se corrompe el registro del FRX generado (Arreglado en v1.19.49) +* 28/03/2017 Lutz Scheffler Mejora cfg v1.19.48: En modo objeto permitir indicar un objeto CFG en lugar de un archivo CFG (Agragado en v1.19.49) * * *--------------------------------------------------------------------------------------------------- @@ -1834,6 +1836,7 @@ DEFINE CLASS c_foxbin2prg AS Session LOCAL lcConfigFile, llExiste_CFG_EnDisco, laConfig(1), I, lcConfData, lcExt, lcValue, lc_CFG_Path, lcConfigLine, laDirInfo(1,5) ; , lnDirs, laDirs(1), llMasterEval, lcProp ; , lo_CFG AS CL_CFG OF 'FOXBIN2PRG.PRG' ; + , loCFG_Manual AS CL_CFG OF 'FOXBIN2PRG.PRG' ; , lo_Configuration AS Collection ; , loLang as CL_LANG OF 'FOXBIN2PRG.PRG' ; , loEx as Exception @@ -1848,6 +1851,15 @@ DEFINE CLASS c_foxbin2prg AS Session tcInputFile_Type = EVL(tcInputFile_Type,'') lo_Configuration = .o_Configuration + IF VARTYPE(lcConfigFile) = "O" + loCFG_Manual = lcConfigFile && lcConfigFile is an object CFG generated by get_DirSettings() + toParentCFG = loCFG_Manual + lcConfigFile = FULLPATH('Personalized-CFG-Object', tc_InputFile) + loCFG_Manual.c_Foxbin2prg_ConfigFile = 'Personalized-CFG-Object' + ELSE + loCFG_Manual = NULL + ENDIF + IF VARTYPE(toParentCFG) <> 'O' THEN toParentCFG = NULL ENDIF @@ -1878,12 +1890,16 @@ DEFINE CLASS c_foxbin2prg AS Session ELSE IF tcInputFile_Type == C_FILETYPE_DIRECTORY THEN * INDICÓ DIRECTORIO - *lcConfigFile = FULLPATH( 'foxbin2prg.cfg', ADDBS(tc_InputFile) ) - lcConfigFile = FULLPATH( JUSTFNAME(lcConfigFile), ADDBS(tc_InputFile) ) + IF ISNULL(loCFG_Manual) + *lcConfigFile = FULLPATH( 'foxbin2prg.cfg', ADDBS(tc_InputFile) ) + lcConfigFile = FULLPATH( JUSTFNAME(lcConfigFile), ADDBS(tc_InputFile) ) + ENDIF ELSE * INDICÓ ARCHIVO - *lcConfigFile = FULLPATH( 'foxbin2prg.cfg', tc_InputFile ) - lcConfigFile = FULLPATH( JUSTFNAME(lcConfigFile), tc_InputFile ) + IF ISNULL(loCFG_Manual) + *lcConfigFile = FULLPATH( 'foxbin2prg.cfg', tc_InputFile ) + lcConfigFile = FULLPATH( JUSTFNAME(lcConfigFile), tc_InputFile ) + ENDIF ENDIF ENDIF ENDIF @@ -1909,6 +1925,11 @@ DEFINE CLASS c_foxbin2prg AS Session IF .n_CFG_Actual > 0 THEN lo_CFG = lo_Configuration.Item(.n_CFG_Actual) .l_CFG_CachedAccess = .T. + + IF NOT ISNULL(loCFG_Manual) + * Si le paso un objeto CFG, prevalece sobre el guardado + lo_CFG.CopyFrom(@loCFG_Manual) + ENDIF ENDIF ENDIF @@ -2687,6 +2708,7 @@ DEFINE CLASS c_foxbin2prg AS Session , lnFileCount, lcErrorInfo, lcErrorFile, lnPCount, laParams(1), lnConversionOption, lnErrorIcon, llError ; , lcOldSetEscape, lcOldOnEscape, llEscKeyRestored ; , loEx AS EXCEPTION ; + , loCFG AS CL_CFG OF 'FOXBIN2PRG.PRG' ; , loFSO AS Scripting.FileSystemObject ; , loLang AS CL_LANG OF 'FOXBIN2PRG.PRG' ; , loFrm_Interactive AS frm_interactive OF 'FOXBIN2PRG.PRG' ; @@ -2701,6 +2723,7 @@ DEFINE CLASS c_foxbin2prg AS Session loLang = _SCREEN.o_FoxBin2Prg_Lang loFSO = .o_FSO loWSH = .o_WSH + loCFG = NULL lnPCount = 0 lcInputFile_Type = '' .l_Error = .F. @@ -2764,8 +2787,20 @@ DEFINE CLASS c_foxbin2prg AS Session .c_ClassOperationType = '' ENDIF - .c_Foxbin2prg_ConfigFile = EVL( tcCFG_File, .c_Foxbin2prg_ConfigFile ) - .n_CFG_EvaluateFromParam = (IIF(EMPTY(tcCFG_File), 0, 1)) + IF VARTYPE(tcCFG_File) = "O" + * Validar el objeto + loCFG = tcCFG_File + IF NOT (loCFG.Class == PROPER('CL_CFG')) + ERROR 'CFG object: Invalid class. Please, generate it with get_DirSettings()' + ENDIF + + .c_Foxbin2prg_ConfigFile = loCFG + .n_CFG_EvaluateFromParam = 1 + + ELSE + .c_Foxbin2prg_ConfigFile = EVL( tcCFG_File, .c_Foxbin2prg_ConfigFile ) + .n_CFG_EvaluateFromParam = (IIF(EMPTY(tcCFG_File), 0, 1)) + ENDIF *-- Ajusto la ruta si no es absoluta tc_InputFile = .get_AbsolutePath( tc_InputFile, .c_CurDir ) @@ -4035,8 +4070,8 @@ DEFINE CLASS c_foxbin2prg AS Session ENDIF IF ISNULL(loCFG) THEN - lo_CFG = CREATEOBJECT('CL_CFG') - lo_CFG.CopyFrom(THIS) + loCFG = CREATEOBJECT('CL_CFG') + loCFG.CopyFrom(THIS) ENDIF RETURN loCFG