Changeset: 206 fdbozzo - 12/03/2014 23:52:40:

- Arreglo bug mnx: Al usar comentarios multilínea en las opciones, se corrompe el MN2 y el MNX regenerado desde él (Ryan Harris)
- Arreglo bug mnx: Algunos procedimientos no se generan correctamente (Ryan Harris)
- Correcciones al archivo de traducción al Inglés foxbin2prg_en.h (Ryan Harris)
This commit is contained in:
fdbozzo
2014-03-15 19:32:23 +01:00
parent 2f6c994ed7
commit 25cc682af6
5 changed files with 134 additions and 48 deletions

View File

@@ -2074,15 +2074,15 @@ DEFINE CLASS c_conversor_base AS SESSION
LPARAMETERS tcLine, tcComment
LOCAL ln_AT_Cmt
tcComment = ''
ln_AT_Cmt = AT( '&'+'&', tcLine)
IF '&'+'&' $ tcLine
ln_AT_Cmt = AT( '&'+'&', tcLine)
IF ln_AT_Cmt > 0
tcComment = LTRIM( SUBSTR( tcLine, ln_AT_Cmt + 2 ) )
*tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, ' ', CHR(9) ) && Quito espacios y TABS
tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, CHR(9) ) && Quito TABS
ENDIF
RETURN
RETURN (ln_AT_Cmt > 0)
ENDPROC
@@ -10305,9 +10305,11 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM
+ [<memberdata name="set_line" display="set_Line"/>] ;
+ [<memberdata name="analizarbloque" display="analizarBloque"/>] ;
+ [<memberdata name="filetypedescription" display="fileTypeDescription"/>] ;
+ [<memberdata name="get_separatedlineandcomment" display="get_SeparatedLineAndComment"/>] ;
+ [<memberdata name="totext" display="toText"/>] ;
+ [</VFPData>]
l_Debug = .F.
@@ -10339,6 +10341,27 @@ DEFINE CLASS CL_CUS_BASE AS CUSTOM
ENDPROC
PROCEDURE get_SeparatedLineAndComment
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT)
* tcLine (@! IN/OUT) L<>nea a separar del comentario
* tcComment (@? OUT) Comentario
*---------------------------------------------------------------------------------------------------
LPARAMETERS tcLine, tcComment
LOCAL ln_AT_Cmt
tcComment = ''
ln_AT_Cmt = AT( '&'+'&', tcLine)
IF ln_AT_Cmt > 0
tcComment = LTRIM( SUBSTR( tcLine, ln_AT_Cmt + 2 ) )
*tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, ' ', CHR(9) ) && Quito espacios y TABS
tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, CHR(9) ) && Quito TABS
ENDIF
RETURN (ln_AT_Cmt > 0)
ENDPROC
ENDDEFINE
@@ -10355,6 +10378,7 @@ DEFINE CLASS CL_COL_BASE AS COLLECTION
_MEMBERDATA = [<VFPData>] ;
+ [<memberdata name="l_debug" display="l_Debug"/>] ;
+ [<memberdata name="analizarbloque" display="analizarBloque"/>] ;
+ [<memberdata name="get_separatedlineandcomment" display="get_SeparatedLineAndComment"/>] ;
+ [<memberdata name="set_line" display="set_Line"/>] ;
+ [<memberdata name="totext" display="toText"/>] ;
+ [</VFPData>]
@@ -10390,6 +10414,27 @@ DEFINE CLASS CL_COL_BASE AS COLLECTION
ENDPROC
PROCEDURE get_SeparatedLineAndComment
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT)
* tcLine (@! IN/OUT) L<>nea a separar del comentario
* tcComment (@? OUT) Comentario
*---------------------------------------------------------------------------------------------------
LPARAMETERS tcLine, tcComment
LOCAL ln_AT_Cmt
tcComment = ''
ln_AT_Cmt = AT( '&'+'&', tcLine)
IF ln_AT_Cmt > 0
tcComment = LTRIM( SUBSTR( tcLine, ln_AT_Cmt + 2 ) )
*tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, ' ', CHR(9) ) && Quito espacios y TABS
tcLine = RTRIM( LEFT( tcLine, ln_AT_Cmt - 1 ), 0, CHR(9) ) && Quito TABS
ENDIF
RETURN (ln_AT_Cmt > 0)
ENDPROC
PROCEDURE toText
*---------------------------------------------------------------------------------------------------
* PAR<41>METROS: (!=Obligatorio | ?=Opcional) (@=Pasar por referencia | v=Pasar por valor) (IN/OUT)
@@ -16672,9 +16717,14 @@ DEFINE CLASS CL_MENU_BARPOP AS CL_MENU_COL_BASE
lcExpr = loReg.PROCEDURE
THIS.AnalizarSiExpresionEsComandoOProcedimiento( lcExpr, @lcProcName, @lcProcCode, '', 1, .T. )
IF EMPTY(lcProcName)
IF EMPTY(lcProcCode)
*-- Comando
lcText = lcText + lcTab + 'ON SELECTION POPUP ' + IIF( loReg.OBJCODE = 0, loReg.NAME, 'ALL' ) + ' ' + lcExpr + CR_LF
ELSE
*-- Procedure
IF EMPTY(lcProcName)
lcProcName = CHRTRAN( ALLTRIM( IIF( loReg.OBJCODE = 0, loReg.NAME, 'ALL' ) ), ' ', '_' ) + '_FB2P'
ENDIF
lcText = lcText + lcTab + 'ON SELECTION POPUP ' + IIF( loReg.OBJCODE = 0, loReg.NAME, 'ALL' ) + ' DO ' + lcProcName + CR_LF
tcEndProcedures = tcEndProcedures + STRTRAN( lcProcCode, '<<ProcName>>', lcProcName ) + CR_LF
ENDIF
@@ -16876,17 +16926,15 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
loReg.PROMPT = CHRTRAN( ALLTRIM( STREXTRACT( tcLine, ' PROMPT ', ' COLOR ' ) ), '"', '' )
*-- ANALISIS DEL "DEFINE PAD"
IF ';' $ tcLine
DO CASE
CASE ';' $ tcLine
FOR I = I + 1 TO tnCodeLines
.set_Line( @tcLine, @taCodeLines, I )
IF EMPTY(loReg.COMMENT) && No volver a buscar el comentario si ya existe
lnPos = AT( '&'+'&', tcLine )
IF lnPos > 0
*-- Busco si tiene comentario
loReg.COMMENT = SUBSTR( tcLine, lnPos + 3 )
tcLine = LEFT( tcLine, lnPos - 1 )
lnPos = 0
*-- Busco si tiene comentario
IF .get_SeparatedLineAndComment( @tcLine, @lcComment )
loReg.COMMENT = STRTRAN( STRTRAN( lcComment, '<CR>', CHR(13) ), '<LF>', CHR(10) )
ENDIF
ENDIF
@@ -16926,7 +16974,12 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
EXIT
ENDIF
ENDFOR
ENDIF && ';' $ tcLine
CASE .set_Line( @tcLine, @taCodeLines, I ) AND .get_SeparatedLineAndComment( @tcLine, @lcComment )
*-- Es un Bar de una sola l<>nea y con comentarios
loReg.COMMENT = STRTRAN( STRTRAN( lcComment, '<CR>', CHR(13) ), '<LF>', CHR(10) )
ENDCASE
* Estructuras ejemplo a analizar:
@@ -17063,17 +17116,15 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
loReg.PROMPT = CHRTRAN( ALLTRIM( STREXTRACT( tcLine, ' PROMPT ', ';', 1, 2 ) ), '"', '' )
*-- ANALISIS DEL "DEFINE BAR"
IF ';' $ tcLine
DO CASE
CASE ';' $ tcLine
FOR I = I + 1 TO tnCodeLines
.set_Line( @tcLine, @taCodeLines, I )
IF EMPTY(loReg.COMMENT) && No volver a buscar el comentario si ya existe
lnPos = AT( '&'+'&', tcLine )
IF lnPos > 0
*-- Busco si tiene comentario
loReg.COMMENT = SUBSTR( tcLine, lnPos + 3 )
tcLine = LEFT( tcLine, lnPos - 1 )
lnPos = 0
*-- Busco si tiene comentario
IF .get_SeparatedLineAndComment( @tcLine, @lcComment )
loReg.COMMENT = STRTRAN( STRTRAN( lcComment, '<CR>', CHR(13) ), '<LF>', CHR(10) )
ENDIF
ENDIF
@@ -17113,7 +17164,12 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
EXIT
ENDIF
ENDFOR
ENDIF && ';' $ tcLine
CASE .set_Line( @tcLine, @taCodeLines, I ) AND .get_SeparatedLineAndComment( @tcLine, @lcComment )
*-- Es un Bar de una sola l<>nea y con comentarios
loReg.COMMENT = STRTRAN( STRTRAN( lcComment, '<CR>', CHR(13) ), '<LF>', CHR(10) )
ENDCASE
IF LEFT(lcBarName,1) == '_'
*-- Es un BAR del Sistema, as<61> que no tiene ON BAR ni nada m<>s.
@@ -17240,12 +17296,23 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
lcExpr = loReg.PROCEDURE
.AnalizarSiExpresionEsComandoOProcedimiento( lcExpr, @lcProcName, @lcProcCode, '', 1, .T. )
IF EMPTY(lcProcName)
lcProcName = CHRTRAN( ALLTRIM( STREXTRACT( lcText, 'DEFINE ', 'PROMPT ' ) ), ' ', '_' ) + '_FB2P'
ENDIF
IF EMPTY(lcProcCode)
*-- Comando
IF EMPTY(lcExpr)
lcText = STRTRAN( lcText, 'DO <<ProcName>>', '' )
ELSE
lcText = STRTRAN( lcText, 'DO <<ProcName>>', lcExpr )
ENDIF
ELSE
lcText = STRTRAN( lcText, '<<ProcName>>', lcProcName )
tcEndProcedures = tcEndProcedures + STRTRAN( lcProcCode, '<<ProcName>>', lcProcName ) + CR_LF
*-- Procedure
IF EMPTY(lcProcName)
lcProcName = CHRTRAN( ALLTRIM( STREXTRACT( lcText, 'DEFINE ', 'PROMPT ' ) ), ' ', '_' ) + '_FB2P'
ENDIF
lcProcCode = STRTRAN( lcProcCode, '<<ProcName>>', lcProcName )
lcText = STRTRAN( lcText, '<<ProcName>>', lcProcName )
tcEndProcedures = tcEndProcedures + lcProcCode + CR_LF
ENDIF
ENDIF
@@ -17319,7 +17386,7 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
ENDIF
IF NOT EMPTY(toReg.COMMENT)
lcText = lcText + ' &' + '& ' + toReg.COMMENT
lcText = lcText + ' &' + '& ' + STRTRAN( STRTRAN( toReg.COMMENT, CHR(13), '<CR>' ), CHR(10), '<LF>' )
ENDIF
*-- ON BAR
@@ -17412,7 +17479,7 @@ DEFINE CLASS CL_MENU_OPTION AS CL_MENU_COL_BASE
ENDIF
IF NOT EMPTY(toReg.COMMENT)
lcText = lcText + ' &' + '& ' + toReg.COMMENT
lcText = lcText + ' &' + '& ' + STRTRAN( STRTRAN( toReg.COMMENT, CHR(13), '<CR>' ), CHR(10), '<LF>' )
ENDIF
lcText = lcText + CR_LF