10859 lines (10216 with data), 538.6 kB
/*
* $Id$
*/
/*
* QPM - QAC based Project Manager
*
* Copyright 2011-2019 Fernando Yurisich <fernando.yurisich@gmail.com>
* https://qpm.sourceforge.io/
*
* Based on QAC - Project Manager for (x)Harbour
* Copyright 2006-2011 Carozo de Quilmes <CarozoDeQuilmes@gmail.com>
* http://www.CarozoDeQuilmes.com.ar
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "minigui.ch"
#include "QPM.ch"
#define SCRIPT_FILE ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'script.ld' )
#define TEMP_LOG ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'temp.log' )
#define END_FILE ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'end.txt' )
#define BUILD_BAT ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'build.bat' )
#define MAKE_FILE ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'temp.bc' )
#define PROGRESS_LOG ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'progress.log' )
#define RUN_FILE ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'runshell.bat' )
#define QPM_GET_DEF ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'qpm_gt.prg' )
#define QPM_TMP_RC ( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'temp.rc' )
FUNCTION Main( PAR_cP01, PAR_cP02, PAR_cP03, PAR_cP04, PAR_cP05, PAR_cP06, PAR_cP07, PAR_cP08, PAR_cP09, PAR_cP10, ;
PAR_cP11, PAR_cP12, PAR_cP13, PAR_cP14, PAR_cP15, PAR_cP16, PAR_cP17, PAR_cP18, PAR_cP19, PAR_cP20 )
LOCAL Folder, FileName, i, nPos, LogIni, LOC_cParam, nRow, nCol, nWidth, nHeight
REQUEST DBFCDX, DBFFPT
rddSetDefault( 'DBFCDX' )
// Load parameters (do not change = to := because it brokes the pp rule)
PAR_cP01 = iif( PAR_cP01 = NIL, '', PAR_cP01 )
PAR_cP02 = iif( PAR_cP02 = NIL, '', PAR_cP02 )
PAR_cP03 = iif( PAR_cP03 = NIL, '', PAR_cP03 )
PAR_cP04 = iif( PAR_cP04 = NIL, '', PAR_cP04 )
PAR_cP05 = iif( PAR_cP05 = NIL, '', PAR_cP05 )
PAR_cP06 = iif( PAR_cP06 = NIL, '', PAR_cP06 )
PAR_cP07 = iif( PAR_cP07 = NIL, '', PAR_cP07 )
PAR_cP08 = iif( PAR_cP08 = NIL, '', PAR_cP08 )
PAR_cP09 = iif( PAR_cP09 = NIL, '', PAR_cP09 )
PAR_cP10 = iif( PAR_cP10 = NIL, '', PAR_cP10 )
PAR_cP11 = iif( PAR_cP11 = NIL, '', PAR_cP11 )
PAR_cP12 = iif( PAR_cP12 = NIL, '', PAR_cP12 )
PAR_cP13 = iif( PAR_cP13 = NIL, '', PAR_cP13 )
PAR_cP14 = iif( PAR_cP14 = NIL, '', PAR_cP14 )
PAR_cP15 = iif( PAR_cP15 = NIL, '', PAR_cP15 )
PAR_cP16 = iif( PAR_cP16 = NIL, '', PAR_cP16 )
PAR_cP17 = iif( PAR_cP17 = NIL, '', PAR_cP17 )
PAR_cP18 = iif( PAR_cP18 = NIL, '', PAR_cP18 )
PAR_cP19 = iif( PAR_cP19 = NIL, '', PAR_cP19 )
PAR_cP20 = iif( PAR_cP20 = NIL, '', PAR_cP20 )
LOC_cParam := AllTrim( PAR_cP01 + ' ' + PAR_cP02 + ' ' + PAR_cP03 + ' ' + PAR_cP04 + ' ' + PAR_cP05 + ' ' + ;
PAR_cP06 + ' ' + PAR_cP07 + ' ' + PAR_cP08 + ' ' + PAR_cP09 + ' ' + PAR_cP10 + ' ' + ;
PAR_cP11 + ' ' + PAR_cP12 + ' ' + PAR_cP13 + ' ' + PAR_cP14 + ' ' + PAR_cP15 + ' ' + ;
PAR_cP16 + ' ' + PAR_cP17 + ' ' + PAR_cP18 + ' ' + PAR_cP19 + ' ' + PAR_cP20 )
// PRIORITY
PUBLIC PUB_QPM_bHigh := .F.
QPM_SetProcessPriority( 'HIGH' )
// create other public vars
QPM_CreatePublicVars()
// configuration
SET LANGUAGE TO ENGLISH
SET DELETED ON
SET NAVIGATION EXTENDED
SET MENUSTYLE EXTENDED
SET EXACT ON
SET TOOLTIPSTYLE BALLOON
// check screen size
IF GetDesktopRealWidth() < 800
MsgStop( 'Sorry, QPM needs a minimun screen configuration of 800x600.' + CRLF + 'QPM is optimized for 1024x768 resolution.' )
RETURN .F.
ENDIF
IF Empty( LOC_cParam )
IF PUB_bW800
MsgInfo( 'QPM has been optimized for 1024x768 screen size' + CRLF + 'but your configuration is also supported with reduced workplace.' )
ENDIF
ENDIF
// check file existence
FOR i := 1 TO Len( vExeList )
IF ! File( vExeList[i] )
AAdd( vExeNotFound, vExeList[i] )
ENDIF
NEXT
IF Len( vExeNotFound ) > 0
cExeNotFoundMsg := 'This product is incomplete:' + CRLF + CRLF
FOR i := 1 TO Len( vExeNotFound )
cExeNotFoundMsg := cExeNotFoundMsg + vExeNotFound[i] + ' not found.' + CRLF
NEXT
cExeNotFoundMsg := cExeNotFoundMsg + CRLF + 'Full package is: ' + CRLF + CRLF
FOR i := 1 TO Len( vExeList )
cExeNotFoundMsg := cExeNotFoundMsg + vExeList[i] + CRLF
NEXT
MsgStop( cExeNotFoundMsg )
RETURN .F.
ENDIF
IF ! File( PUB_cQPM_Folder + DEF_SLASH + 'filler' )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'filler', Chr( 13 ) + Chr( 10 ) )
ENDIF
// analize parameters
IF ! Empty( LOC_cParam )
IF ( nPos := US_WordPos( '--BUILD', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--LITE', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--DEBUG', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--RUN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--BUTTONRUN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--CLEAR', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--OPEN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--IGNOREVERSIONPROJECT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--FORCEFULL', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordStrPos( '--LOG(', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--LOGONLYERROR', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '--EXIT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
DO CASE
CASE US_Upper( US_Word( LOC_cParam, 1 ) ) == '-VER' .OR. US_Upper( US_Word( LOC_cParam, 1 ) ) == '-VERSION'
QPM_MemoWrit( US_FileNameOnlyPathAndName( GetModuleFileName( GetInstance() ) ) + '.version', QPM_VERSION_NUMBER_LONG )
RETURN .T.
CASE ( nPos := US_WordPos( '-BUILD', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'QPM_OpenProject(PUB_cProjectFile)' )
IF ( nPos := US_WordPos( '-LITE', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bLite := .T.
ENDIF
IF ( nPos := US_WordPos( '-FORCEFULL', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'EraseObj()' )
ENDIF
IF ( nPos := US_WordPos( '-DEBUG', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'SwitchDebug()' )
ENDIF
AAdd( PUB_vAutoRun, 'QPM_Build()' )
IF ( nPos := US_WordPos( '-BUTTONRUN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'EnableButtonRun()' )
bWaitForBuild := .T.
ENDIF
IF ( nPos := US_WordPos( '-RUN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'QPM_Run( bRunParm )' )
bWaitForBuild := .T.
ENDIF
IF ( nPos := US_WordPos( '-CLEAR', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'EraseAll()' )
bWaitForBuild := .T.
ENDIF
IF ( nPos := US_WordPos( '-EXIT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'QPM_Exit()' )
bWaitForBuild := .T.
bAutoExit := .T.
IF ( nPos := US_WordStrPos( '-LOG(', US_Upper( LOC_cParam ) ) ) > 0
LogIni := US_WordInd( LOC_cParam, nPos )
PUB_cAutoLog := US_WordSubStr( LOC_cParam, nPos )
PUB_cAutoLog := SubStr( PUB_cAutoLog, 6, at( ')', PUB_cAutoLog ) - 6 )
IF Empty( PUB_cAutoLog )
MsgInfo( 'Error detecting Log Archive: ' + LOC_cParam )
ELSE
LOC_cParam := SubStr( LOC_cParam, 1, LogIni - 1 ) + SubStr( LOC_cParam, LogIni + Len( PUB_cAutoLog ) + 6 )
IF ( nPos := US_WordPos( '-LOGONLYERROR', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bLogOnlyError := .T.
ENDIF
ENDIF
ENDIF
ENDIF
IF ( nPos := US_WordPos( '-OPEN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '-IGNOREVERSIONPROJECT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bIgnoreVersionProject := .T.
ENDIF
PUB_cProjectFile := AllTrim( LOC_cParam )
CASE ( nPos := US_WordPos( '-RUN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'QPM_OpenProject(PUB_cProjectFile)' )
AAdd( PUB_vAutoRun, 'QPM_Run( bRunParm )' )
bWaitForBuild := .F.
IF ( nPos := US_WordPos( '-LITE', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bLite := .T.
ENDIF
IF ( nPos := US_WordPos( '-CLEAR', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'EraseAll()' )
bWaitForBuild := .T.
ENDIF
IF ( nPos := US_WordPos( '-EXIT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'QPM_Exit()' )
bWaitForBuild := .F.
bAutoExit := .T.
IF ( nPos := US_WordStrPos( '-LOG(', US_Upper( LOC_cParam ) ) ) > 0
LogIni := US_WordInd( LOC_cParam, nPos )
PUB_cAutoLog := US_WordSubStr( LOC_cParam, nPos )
PUB_cAutoLog := SubStr( PUB_cAutoLog, 6, At( ')', PUB_cAutoLog ) - 6 )
IF Empty( PUB_cAutoLog )
MsgInfo( 'Error detecting Log Archive: ' + LOC_cParam )
ELSE
LOC_cParam := SubStr( LOC_cParam, 1, LogIni - 1 ) + SubStr( LOC_cParam, LogIni + Len( PUB_cAutoLog ) + 6 )
IF ( nPos := US_WordPos( '-LOGONLYERROR', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bLogOnlyError := .T.
ENDIF
ENDIF
ENDIF
ENDIF
IF ( nPos := US_WordPos( '-OPEN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
ENDIF
IF ( nPos := US_WordPos( '-IGNOREVERSIONPROJECT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bIgnoreVersionProject := .T.
ENDIF
PUB_cProjectFile := AllTrim( LOC_cParam )
CASE ( nPos := US_WordPos( '-CLEAR', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'QPM_OpenProject(PUB_cProjectFile)' )
IF ( nPos := US_WordPos( '-LITE', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bLite := .T.
ENDIF
IF ( nPos := US_WordPos( '-FORCEFULL', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'EraseObj()' )
ENDIF
AAdd( PUB_vAutoRun, 'EraseALL()' )
IF ( nPos := US_WordPos( '-EXIT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'QPM_Exit()' )
bWaitForBuild := .F.
bAutoExit := .T.
IF ( nPos := US_WordStrPos( '-LOG(', US_Upper( LOC_cParam ) ) ) > 0
LogIni := US_WordInd( LOC_cParam, nPos )
PUB_cAutoLog := US_WordSubStr( LOC_cParam, nPos )
PUB_cAutoLog := SubStr( PUB_cAutoLog, 6, At( ')', PUB_cAutoLog ) - 6 )
IF Empty( PUB_cAutoLog )
MsgInfo( 'Error detecting Log Archive: ' + LOC_cParam )
ELSE
LOC_cParam := SubStr( LOC_cParam, 1, LogIni - 1 ) + SubStr( LOC_cParam, LogIni + Len( PUB_cAutoLog ) + 6 )
IF ( nPos := US_WordPos( '-LOGONLYERROR', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bLogOnlyError := .T.
ENDIF
ENDIF
ENDIF
ENDIF
IF ( nPos := US_WordPos( '-IGNOREVERSIONPROJECT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bIgnoreVersionProject := .T.
ENDIF
PUB_cProjectFile := AllTrim( LOC_cParam )
CASE ( nPos := US_WordPos( '-OPEN', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'QPM_OpenProject(PUB_cProjectFile)' )
IF ( nPos := US_WordPos( '-FORCEFULL', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
AAdd( PUB_vAutoRun, 'EraseObj()' )
ENDIF
IF ( nPos := US_WordPos( '-IGNOREVERSIONPROJECT', US_Upper( LOC_cParam ) ) ) > 0
LOC_cParam := US_WordDel( LOC_cParam, nPos )
PUB_bIgnoreVersionProject := .T.
ENDIF
PUB_cProjectFile := AllTrim( LOC_cParam )
OTHERWISE
PUB_cProjectFile := LOC_cParam
AAdd( PUB_vAutoRun, 'QPM_OpenProject(PUB_cProjectFile)' )
ENDCASE
IF ! Empty( PUB_cProjectFile )
PUB_bOpenProjectFromParm := .T.
IF Empty( US_FileNameOnlyPath( PUB_cProjectFile ) )
PUB_cProjectFile := GetCurrentFolder() + DEF_SLASH + PUB_cProjectFile
ENDIF
ENDIF
ENDIF
// create log
IF bAutoExit .AND. ! Empty( PUB_cAutoLog )
IF RAt( DEF_SLASH, PUB_cAutoLog ) == 0
PUB_cAutoLog := GetCurrentFolder() + DEF_SLASH + PUB_cAutoLog
ENDIF
PUB_cAutoLogTmp := MemoRead( PUB_cAutoLog )
IF ( i := RAt( Replicate( '=', 80 ) + CRLF, PUB_cAutoLogTmp ) ) > 0
IF i # Len( PUB_cAutoLogTmp ) - 80 - Len( CRLF ) + 1
i := 0
ENDIF
ENDIF
IF i == 0
PUB_cAutoLogTmp += CRLF + Replicate( '=', 80 ) + CRLF
ENDIF
PUB_cAutoLogTmp += 'Project file: ' + PUB_cProjectFile + CRLF
PUB_cAutoLogTmp += US_VarToStr( Date() ) + ' ' + US_VarToStr( Time() ) + CRLF
QPM_MemoWrit( PUB_cAutoLog, PUB_cAutoLogTmp )
ENDIF
SET FONT TO 'Arial', 9
QPM_Wait( 'LoadEnvironment()', 'Loading environment ...' )
DEFINE WINDOW VentanaMain ;
AT GetDesktopRealTop(), GetDesktopRealLeft() ;
WIDTH GetDesktopRealWidth() HEIGHT GetDesktopRealHeight() ;
TITLE PUB_cQPM_Title + ' [ Project not opened! ]' ;
ICON 'QPM' ;
MAIN ;
ON INIT MainInitAutoRun() ;
ON RELEASE iif( PUB_bLite, NIL, SaveEnvironment( .T. ) ) ;
ON INTERACTIVECLOSE QPM_Exit( .T. )
DEFINE TOOLBAR ToolBar_1 OF VentanaMain
END TOOLBAR
QPM_DefinoMainMenu()
DEFINE CONTEXT MENU
#ifdef QPM_SHG
ITEM '&Move Item' ACTION SHG_Move_Item() IMAGE 'US_EditCopy' NAME ItC_Move
SEPARATOR
ITEM '&Copy' ACTION SHG_Send_Copy() IMAGE 'US_EditCopy' NAME ItC_Copy
ITEM 'C&ut' ACTION SHG_Send_Cut() IMAGE 'US_EditCut' NAME ItC_Cut
ITEM '&Paste' ACTION SHG_Send_Paste() IMAGE 'US_EditPaste' NAME ItC_Paste
SEPARATOR
ITEM '&Select all' ACTION QPM_Send_SelectAll() NAME ItC_SelectAll
SEPARATOR
ITEM '&Add to Key List' ACTION SHG_AddHlpKey() IMAGE 'add' NAME ItC_AddHlpKey
SEPARATOR
ITEM 'Add Character &&' ACTION SHG_AddHlpHTML('Ampersand') NAME ItC_AddHlpHTMLAmpersand
ITEM 'Add Character <' ACTION SHG_AddHlpHTML('Menor') NAME ItC_AddHlpHTMLMenor
ITEM 'Add Character >' ACTION SHG_AddHlpHTML('Mayor') NAME ItC_AddHlpHTMLMayor
ITEM 'Add Character SPACE' ACTION SHG_AddHlpHTML('Space') NAME ItC_AddHlpHTMLSpace
SEPARATOR
ITEM 'Add Image from File' ACTION SHG_AddHlpHTML('Image') NAME ItC_AddHlpHTMLImage
ITEM 'Add eMail' ACTION SHG_AddHlpHTML('eMail') NAME ItC_AddHlpHTMLeMail
ITEM 'Add Link to Internet' ACTION SHG_AddHlpHTML('Link') NAME ItC_AddHlpHTMLLink
ITEM 'Add Link to Topic' ACTION SHG_AddHlpHTML('LinkTopic') NAME ItC_AddHlpHTMLLinkTopic
ITEM 'Add Ancora' ACTION SHG_AddHlpHTML('Ancora') NAME ItC_AddHlpHTMLAncora
#else
ITEM '&Copy' ACTION ( US_Send_Copy(), DoEvents() ) IMAGE 'US_EditCopy' NAME ItC_Copy
ITEM 'C&ut' ACTION ( US_Send_Cut(), DoEvents() ) IMAGE 'US_EditCut' NAME ItC_Cut
ITEM '&Paste' ACTION ( US_Send_Paste(), DoEvents() ) IMAGE 'US_EditPaste' NAME ItC_Paste
SEPARATOR
ITEM '&Select all' ACTION QPM_Send_SelectAll(), DoEvents() ) NAME ItC_SelectAll
#endif
END MENU
VentanaMain.ItC_Cut.Enabled := .F.
VentanaMain.ItC_Paste.Enabled := .F.
VentanaMain.ItC_CutM.Enabled := .F.
VentanaMain.ItC_PasteM.Enabled := .F.
#ifdef QPM_SHG
VentanaMain.ItC_Move.Enabled := .F.
VentanaMain.ItC_AddHlpKey.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLAmpersand.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLMenor.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLMayor.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLSpace.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLImage.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLeMail.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLLink.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLLinkTopic.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLAncora.Enabled := .F.
#endif
@ iif( IsXPThemeActive(), 54, 47 ), 1 FRAME FFrame ;
WIDTH ( GetDesktopRealWidth() - 9 ) ;
HEIGHT ( GetDesktopRealHeight() - 105 )
#ifndef QPM_SYNCRECOVERY
DEFINE BUTTONEX EraseALL
ROW 63
COL 10
WIDTH 135
HEIGHT 25
PICTURE 'clearall'
TOOLTIP 'Delete ALL existing object folders'
ONCLICK EraseALL()
END BUTTONEX
#else
DEFINE BUTTONEX BTakeSyncRecovery
ROW 63
COL 10
WIDTH 65
HEIGHT 25
PICTURE 'SyncRec'
TOOLTIP 'Force the taking of a Sync Recovery Point for this project'
ONCLICK QPM_ForceSyncRecovery()
END BUTTONEX
DEFINE BUTTONEX EraseALL
ROW 63
COL 80
WIDTH 65
HEIGHT 25
PICTURE 'clearall'
TOOLTIP 'Delete ALL existing object folders'
ONCLICK EraseALL()
END BUTTONEX
#endif
DEFINE BUTTONEX EraseOBJ
ROW 63
COL 150
WIDTH 170
HEIGHT 25
PICTURE 'force'
TOOLTIP 'Force recompilation of all programs in the project'
ONCLICK EraseOBJ()
END BUTTONEX
DEFINE TAB TabGrids ;
OF VentanaMain ;
AT 95, 10 ;
WIDTH 310 ;
HEIGHT ( GetDesktopRealHeight() - 165 ) ;
ON CHANGE TabChange( 'GRIDS' )
DEFINE PAGE PagePRG
DEFINE LABEL LProjectFolder
ROW 40
COL 12
WIDTH 89
VALUE 'Project Folder:'
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
END LABEL
DEFINE TEXTBOX TProjectFolder
ROW 40
COL 102
WIDTH 160
ON CHANGE iif( Right( PUB_cProjectFolder := AllTrim( US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'TProjectFolder', 'Value' ) ) ), 1 ) == DEF_SLASH, ;
PUB_cProjectFolder := Left( PUB_cProjectFolder, Len( PUB_cProjectFolder ) - 1 ), ;
NIL )
END TEXTBOX
DEFINE BUTTONEX BProjectFolder
ROW 40
COL 270
WIDTH 25
HEIGHT 25
PICTURE 'folderselect'
TOOLTIP "Select project's folder"
ONCLICK ( iif( ! Empty( Folder := GetFolder( 'Select Folder', VentanaMain.TProjectFolder.Value ) ), ;
VentanaMain.TProjectFolder.Value := Folder, ;
NIL), ;
QPM_CheckFiles() )
END BUTTONEX
DEFINE LABEL LRunProjectFolder
ROW 70
COL 12
WIDTH 89
VALUE 'Run Folder:'
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
END LABEL
DEFINE TEXTBOX TRunProjectFolder
ROW 70
COL 102
WIDTH 160
END TEXTBOX
DEFINE BUTTONEX BRunProjectFolder
ROW 70
COL 270
WIDTH 25
HEIGHT 25
PICTURE 'folderselect'
TOOLTIP "Select project's run folder"
ONCLICK iif( ! Empty( Folder := GetFolder( 'Select Folder', VentanaMain.TRunProjectFolder.Value ) ), ;
VentanaMain.TRunProjectFolder.Value := Folder, ;
NIL )
END BUTTONEX
DEFINE BUTTONEX BPrgAdd
ROW 100
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'add'
TOOLTIP 'Add file to project'
ONCLICK QPM_AddFilesPRG()
END BUTTONEX
#ifndef QPM_HOTRECOVERYWINDOW
DEFINE BUTTONEX BPrgRemove
ROW 100
COL 85
WIDTH 65
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove file from project'
ONCLICK QPM_RemoveFilePRG()
END BUTTONEX
#else
DEFINE BUTTONEX BPrgRemove
ROW 100
COL 85
WIDTH 30
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove file from project'
ONCLICK QPM_RemoveFilePRG()
END BUTTONEX
DEFINE BUTTONEX BPrgHotRecovery
ROW 100
COL 120
WIDTH 30
HEIGHT 25
PICTURE 'hotrec'
TOOLTIP 'Force the saving of a Hot Recovery Version for the selected source'
ONCLICK QPM_ForceHotRecovery( 'PRG' )
END BUTTONEX
#endif
DEFINE BUTTONEX BPrgEdit
ROW 100
COL 158
WIDTH 65
HEIGHT 25
PICTURE 'Edit'
TOOLTIP 'Edit selected file'
ONCLICK QPM_EditPRG()
END BUTTONEX
DEFINE BUTTONEX SetTopPRG
ROW 100
COL 230
WIDTH 30
HEIGHT 25
PICTURE 'SetTop'
TOOLTIP "Set the selected file as project's " + DBLQT + "Top File" + DBLQT
ONCLICK QPM_SetTopPRG()
END BUTTONEX
DEFINE BUTTONEX ForceRecompPRG
ROW 100
COL 265
WIDTH 30
HEIGHT 25
PICTURE 'ForceRecomp'
TOOLTIP 'Toggle the "Forced Recompilation" switch of the selected file'
ONCLICK QPM_ForceRecompPRG()
END BUTTONEX
DEFINE BUTTONEX BSortPRG
ROW 130
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'Sort'
TOOLTIP "Sort sources in alphabetical order (except " + DBLQT + "Top File" + DBLQT + ")"
ONCLICK SortPRG( 'VentanaMain', 'GPrgFiles', NCOLPRGNAME )
END BUTTONEX
DEFINE BUTTONEX BVerChange
ROW 130
COL 85
WIDTH 55
HEIGHT 25
PICTURE 'ChangeVersion'
TOOLTIP "Change project's version, release and/or build numbers"
ONCLICK QPM_ChangePrj_Version()
END BUTTONEX
DEFINE LABEL LVerTitle
ROW 135
COL 145
VALUE 'Version'
WIDTH 45
HEIGHT 25
FONTCOLOR DEF_COLORGREEN
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
END LABEL
DEFINE LABEL LVerVerNum
ROW 135
COL 193
VALUE Replicate( '0', DEF_LEN_VER_VERSION )
WIDTH 15
HEIGHT 25
FONTBOLD .T.
FONTCOLOR DEF_COLORGREEN
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
END LABEL
DEFINE LABEL LVerPoint
ROW 135
COL 208
VALUE '.'
WIDTH 5
HEIGHT 25
FONTCOLOR DEF_COLORGREEN
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
END LABEL
DEFINE LABEL LVerRelNum
ROW 135
COL 212
VALUE Replicate( '0', DEF_LEN_VER_RELEASE )
WIDTH 15
HEIGHT 25
FONTBOLD .T.
FONTCOLOR DEF_COLORGREEN
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
END LABEL
DEFINE LABEL LVerBui
ROW 135
COL 230
VALUE 'Build'
WIDTH 30
HEIGHT 25
FONTCOLOR DEF_COLORBLUE
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
END LABEL
DEFINE LABEL LVerBuiNum
ROW 135
COL 265
VALUE Replicate( '0', DEF_LEN_VER_BUILD )
WIDTH 30
HEIGHT 25
FONTBOLD .T.
FONTCOLOR DEF_COLORBLUE
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
END LABEL
DEFINE BUTTONEX BSyncPrg
ROW 312
COL 296
WIDTH 11
HEIGHT 21
PICTURE 'SYNC'
TOOLTIP 'Syncronize tabs'
ONCLICK TabSync()
END BUTTONEX
DEFINE BUTTONEX BUpPrg
ROW 160
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected file up in the list'
ONCLICK UpPrg()
END BUTTONEX
DEFINE BUTTONEX BDownPrg
ROW 190
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected file down in the list'
ONCLICK DownPrg()
END BUTTONEX
DEFINE BUTTONEX BUpPrg2
ROW GetDesktopRealHeight() - 237
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected file up in the list'
ONCLICK UpPrg()
END BUTTONEX
DEFINE BUTTONEX BDownPrg2
ROW GetDesktopRealHeight() - 207
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected file down in the list'
ONCLICK DownPrg()
END BUTTONEX
// OJO, la altura de este grid se controla tembien desde la funcion ActLibReimp()
@ 160, 25 GRID GPrgFiles ;
WIDTH 270 ;
HEIGHT GetDesktopRealHeight() - 345 ;
HEADERS { 'S', 'R', 'Src Name', 'Src Full Name', 'Offset', 'Control Edit', 'Hot Recovery' } ;
WIDTHS { 25, 0, 100, 1000, 20, 20, 20 };
ITEMS aGridPRG ;
VALUE 1 ;
IMAGE vImagesGrid ;
BACKCOLOR DEF_COLORBACKPRG ;
ON HEADCLICK { { || SortPRG( 'VentanaMain', 'GPrgFiles', 1 ) }, ;
{ || SortPRG( 'VentanaMain', 'GPrgFiles', 2 ) }, ;
{ || SortPRG( 'VentanaMain', 'GPrgFiles', 3 ) }, ;
{ || SortPRG( 'VentanaMain', 'GPrgFiles', 4 ) } } ;
ON DBLCLICK { || QPM_EditPRG() } ;
ON CHANGE { || iif( ! bPrgSorting .AND. ! PUB_bLite, ;
iif( bNumberOnPrg, ;
QPM_Wait( "RichEditDisplay('PRG')", 'Reloading' ), ;
RichEditDisplay('PRG') ), ;
NIL ) } ;
JUSTIFY { BROWSE_JTFY_LEFT }
DEFINE CHECKBOX Check_Reimp
CAPTION 'ReImport from .Lib library (MinGW only)'
ROW iif( PUB_bW800, 280, 320 )
COL 30
WIDTH 250
HEIGHT 20
VALUE .F.
TOOLTIP 'Make ".a" interface library from ".lib" interface library'
TRANSPARENT iif( IsXPThemeActive(), .T., .F. )
ON CHANGE ( SetProperty( 'VentanaMain', 'LReImportLib', 'enabled', GetProperty( 'VentanaMain', 'Check_Reimp', 'Value' ) ), ;
SetProperty( 'VentanaMain', 'TReImportLib', 'enabled', GetProperty( 'VentanaMain', 'Check_Reimp', 'Value' ) ), ;
SetProperty( 'VentanaMain', 'BReImportLib', 'enabled', GetProperty( 'VentanaMain', 'Check_Reimp', 'Value' ) ) )
END CHECKBOX
DEFINE LABEL LReImportLib
ROW iif( PUB_bW800, 320, 360 )
COL 30
VALUE "Input interface '.lib':"
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE TEXTBOX TReImportLib
ROW iif( PUB_bW800, 350, 390 )
COL 30
WIDTH 220
END TEXTBOX
DEFINE BUTTONEX BReImportLib
ROW iif( PUB_bW800, 350, 390 )
COL 270
WIDTH 25
HEIGHT 25
PICTURE 'folderselect'
TOOLTIP 'Select library'
ONCLICK iif( Empty( FileName := BugGetFile( { {'Library (*.lib)','*.lib'} }, ;
'Select Library for ReImport', ;
US_FileNameOnlyPath( ChgPathToReal( VentanaMain.TReImportLib.Value ) ), ;
.T., .F. ) ), ;
NIL, ;
VentanaMain.TReImportLib.Value := ChgPathToRelative( FileName ) )
END BUTTONEX
DEFINE CHECKBOX Check_GuionA
CAPTION "Add '_' alias (except MinGW)"
ROW iif( PUB_bW800, 420, 460 )
COL 30
WIDTH 250
HEIGHT 20
VALUE .F.
TOOLTIP 'Add "_" alias for MS flavor cdecl functions (BCC32 or Pelles)'
TRANSPARENT IsXPThemeActive()
END CHECKBOX
ActLibReimp()
END PAGE
DEFINE PAGE PageHEA
DEFINE BUTTONEX BHeAAdd
ROW 40
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'add'
TOOLTIP 'Add header'
ONCLICK QPM_AddFilesHEA()
END BUTTONEX
#ifndef QPM_HOTRECOVERYWINDOW
DEFINE BUTTONEX BHeaRemove
ROW 40
COL 85
WIDTH 65
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove header'
ONCLICK QPM_RemoveFileHEA()
END BUTTONEX
#else
DEFINE BUTTONEX BHeaRemove
ROW 40
COL 85
WIDTH 30
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove header'
ONCLICK QPM_RemoveFileHEA()
END BUTTONEX
DEFINE BUTTONEX BHeaHotRecovery
ROW 40
COL 120
WIDTH 30
HEIGHT 25
PICTURE 'hotrec'
TOOLTIP 'Force the saving of a Hot Recovery Version for the selected header'
ONCLICK QPM_ForceHotRecovery( 'HEA' )
END BUTTONEX
#endif
DEFINE BUTTONEX BHeaEdit
ROW 40
COL 158
WIDTH 65
HEIGHT 25
PICTURE 'Edit'
TOOLTIP 'Modify header'
ONCLICK QPM_EditHEA ()
END BUTTONEX
DEFINE BUTTONEX BSortHea
ROW 70
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'Sort'
TOOLTIP 'Sort headers in alphabetical order'
ONCLICK SortHEA( 'VentanaMain', 'GHeaFiles', NCOLHEANAME )
END BUTTONEX
DEFINE BUTTONEX BSyncHea
ROW 312
COL 296
WIDTH 11
HEIGHT 21
PICTURE 'SYNC'
TOOLTIP 'Syncronize tabs'
ONCLICK TabSync()
END BUTTONEX
DEFINE BUTTONEX BUpHea
ROW 100
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected header up in the list'
ONCLICK UpHea()
END BUTTONEX
DEFINE BUTTONEX BDownHea
ROW 130
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected header down in the list'
ONCLICK DownHea()
END BUTTONEX
DEFINE BUTTONEX BUpHea2
ROW GetDesktopRealHeight() - 237
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected header up in the list'
ONCLICK UpHea()
END BUTTONEX
DEFINE BUTTONEX BDownHea2
ROW GetDesktopRealHeight() - 207
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected header down in the list'
ONCLICK DownHea()
END BUTTONEX
@ 100, 25 GRID GHeaFiles ;
WIDTH 270 ;
HEIGHT GetDesktopRealHeight() - 285 ;
HEADERS { 'S', 'Header Name', 'Header Full Name', 'Offset', 'Control Edit', 'Hot Recovery' } ;
WIDTHS { 25, 100, 1000, 20, 20, 20 };
ITEMS aGridHea ;
IMAGE vImagesGrid ;
VALUE 1 ;
BACKCOLOR DEF_COLORBACKHEA ;
ON HEADCLICK { { || SortHEA( 'VentanaMain', 'GHeaFiles', 1 ) }, ;
{ || SortHEA( 'VentanaMain', 'GHeaFiles', 2 ) }, ;
{ || SortHEA( 'VentanaMain', 'GHeaFiles', 3 ) }, ;
{ || SortHEA( 'VentanaMain', 'GHeaFiles', 4 ) } } ;
ON DBLCLICK { QPM_EditHEA() } ;
ON CHANGE { || iif( ! bHeaSorting .AND. ! PUB_bLite, ;
iif( bNumberOnHea, QPM_Wait( "RichEditDisplay('HEA')", 'Reloading' ), RichEditDisplay('HEA') ), ;
NIL ) } ;
JUSTIFY { BROWSE_JTFY_LEFT }
END PAGE
DEFINE PAGE PagePAN
DEFINE BUTTONEX BPanAdd
ROW 40
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'add'
TOOLTIP 'Add form'
ONCLICK QPM_AddFilesPAN()
END BUTTONEX
#ifndef QPM_HOTRECOVERYWINDOW
DEFINE BUTTONEX BPanRemove
ROW 40
COL 85
WIDTH 65
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove form'
ONCLICK QPM_RemoveFilePAN()
END BUTTONEX
#else
DEFINE BUTTONEX BPanRemove
ROW 40
COL 85
WIDTH 30
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove form'
ONCLICK QPM_RemoveFilePAN()
END BUTTONEX
DEFINE BUTTONEX BPanHotRecovery
ROW 40
COL 120
WIDTH 30
HEIGHT 25
PICTURE 'hotrec'
TOOLTIP 'Force the saving of a Hot Recovery Version for the selected form'
ONCLICK QPM_ForceHotRecovery( 'PAN' )
END BUTTONEX
#endif
DEFINE BUTTONEX BPanEditTool
ROW 40
COL 158
WIDTH 65
HEIGHT 25
CAPTION 'With Tool'
TOOLTIP 'Modify form with associated tool'
ONCLICK QPM_EditPAN()
END BUTTONEX
DEFINE BUTTONEX BPanEditEditor
ROW 40
COL 230
WIDTH 65
HEIGHT 25
CAPTION 'With Edit'
TOOLTIP 'Open form with associated editor'
ONCLICK QPM_EditPAN( .T. )
END BUTTONEX
DEFINE BUTTONEX BSortPan
ROW 70
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'Sort'
TOOLTIP 'Sort forms in alphabetical order'
ONCLICK SortPAN( 'VentanaMain', 'GPanFiles', NCOLPANNAME )
END BUTTONEX
DEFINE BUTTONEX BEditRC
ROW 70
COL 85
WIDTH 209
HEIGHT 25
CAPTION 'Edit Main .RC'
TOOLTIP "Edit the project's main resource file"
ONCLICK QPM_EditRES()
END BUTTONEX
DEFINE CHECKBOX Check_Place
CAPTION 'Place Main .RC First'
ROW 100
COL 12
WIDTH 282
HEIGHT 25
VALUE .T.
TOOLTIP "The Main .RC content will be placed before the MINIGUI's .RC content."
TRANSPARENT IsXPThemeActive()
ON CHANGE Prj_Check_PlaceRCFirst := VentanaMain.Check_Place.Value
END CHECKBOX
DEFINE CHECKBOX Check_NoMainRC
CAPTION "Don't compile Main .RC"
ROW 130
COL 12
WIDTH 282
HEIGHT 25
VALUE .T.
TOOLTIP "Check this to ignore the Main .RC when building the project."
TRANSPARENT IsXPThemeActive()
ON CHANGE Prj_Check_IgnoreMainRC := VentanaMain.Check_NoMainRC.Value
END CHECKBOX
DEFINE CHECKBOX Check_NoLibRCs
CAPTION "Don't compile MINIGUI's .RC files"
ROW 160
COL 12
WIDTH 282
HEIGHT 25
VALUE .T.
TOOLTIP "Check this to ignore the MINIGUI's .RC files when building the project."
TRANSPARENT IsXPThemeActive()
ON CHANGE Prj_Check_IgnoreLibRCs := VentanaMain.Check_NoLibRCs.Value
END CHECKBOX
DEFINE BUTTONEX BSyncPan
ROW 312
COL 296
WIDTH 11
HEIGHT 21
PICTURE 'SYNC'
TOOLTIP 'Syncronize tabs'
ONCLICK TabSync()
END BUTTONEX
DEFINE BUTTONEX BUpPan
ROW 100
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected form up in the list'
ONCLICK UpPan()
END BUTTONEX
DEFINE BUTTONEX BDownPan
ROW 130
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected form down in the list'
ONCLICK DownPan()
END BUTTONEX
DEFINE BUTTONEX BUpPan2
ROW GetDesktopRealHeight() - 237
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected form up in the list'
ONCLICK UpPan()
END BUTTONEX
DEFINE BUTTONEX BDownPan2
ROW GetDesktopRealHeight() - 207
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected form down in the list'
ONCLICK DownPan()
END BUTTONEX
@ 220, 25 GRID GPanFiles ;
WIDTH 270 ;
HEIGHT GetDesktopRealHeight() - 405 ;
HEADERS { 'S', 'Form Name', 'Form Full Name', 'Offset', 'Control Edit', 'Hot Recovery' } ;
WIDTHS { 25, 100, 1000, 20, 20, 20 };
ITEMS aGridPan ;
VALUE 1 ;
IMAGE vImagesGrid ;
BACKCOLOR DEF_COLORBACKPAN ;
ON HEADCLICK { { || SortPAN( 'VentanaMain', 'GPanFiles', 1 ) }, ;
{ || SortPAN( 'VentanaMain', 'GPanFiles', 2 ) }, ;
{ || SortPAN( 'VentanaMain', 'GPanFiles', 3 ) }, ;
{ || SortPAN( 'VentanaMain', 'GPanFiles', 4 ) } } ;
ON DBLCLICK { QPM_EditPAN() } ;
ON CHANGE { || iif( ! bPanSorting .AND. ! PUB_bLite, ;
iif( bNumberOnPan, QPM_Wait( "RichEditDisplay('PAN')", 'Reloading' ), RichEditDisplay('PAN') ), ;
NIL ) } ;
JUSTIFY { BROWSE_JTFY_LEFT }
END PAGE
DEFINE PAGE PageDBF
DEFINE BUTTONEX BDbfAdd
ROW 40
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'add'
TOOLTIP 'Add DBF file'
ONCLICK QPM_AddFilesDBF()
END BUTTONEX
DEFINE BUTTONEX BDbfRemove
ROW 40
COL 85
WIDTH 65
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove DBF file'
ONCLICK QPM_RemoveFileDBF()
END BUTTONEX
DEFINE BUTTONEX BDbfEditTool
ROW 40
COL 158
WIDTH 65
HEIGHT 25
PICTURE 'Edit'
TOOLTIP 'Modify DBF file with associated tool'
ONCLICK QPM_EditDBF()
END BUTTONEX
DEFINE BUTTONEX BSortDbf
ROW 70
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'Sort'
TOOLTIP 'Sort DBF files in alphabetical order'
ONCLICK SortDBF( 'VentanaMain', 'GDbfFiles', NCOLDBFNAME )
END BUTTONEX
DEFINE BUTTONEX BSyncDbf
ROW 312
COL 296
WIDTH 11
HEIGHT 21
PICTURE 'SYNC'
TOOLTIP 'Syncronize tabs'
ONCLICK TabSync()
END BUTTONEX
DEFINE BUTTONEX BUpDbf
ROW 100
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected DBF file up in the list'
ONCLICK UpDbf()
END BUTTONEX
DEFINE BUTTONEX BDownDbf
ROW 130
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected DBF file down in the list'
ONCLICK DownDbf()
END BUTTONEX
DEFINE BUTTONEX BUpDbf2
ROW GetDesktopRealHeight() - 237
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected DBF file up in the list'
ONCLICK UpDbf()
END BUTTONEX
DEFINE BUTTONEX BDownDbf2
ROW GetDesktopRealHeight() - 207
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected DBF file down in the list'
ONCLICK DownDbf()
END BUTTONEX
@ 100, 25 GRID GDbfFiles ;
WIDTH 270 ;
HEIGHT GetDesktopRealHeight() - 285 ;
HEADERS { 'S', 'Dbf Name', 'Dbf Full Name', 'Offset', 'Control Edit', 'Search' } ;
WIDTHS { 25, 100, 1000, 20, 20, 20 };
ITEMS aGridDbf ;
VALUE 1 ;
IMAGE vImagesGrid ;
BACKCOLOR DEF_COLORBACKDBF ;
ON HEADCLICK { { || SortDBF( 'VentanaMain', 'GDbfFiles', 1 ) }, ;
{ || SortDBF( 'VentanaMain', 'GDbfFiles', 2 ) }, ;
{ || SortDBF( 'VentanaMain', 'GDbfFiles', 3 ) }, ;
{ || SortDBF( 'VentanaMain', 'GDbfFiles', 4 ) } } ;
ON DBLCLICK { QPM_EditDBF() } ;
ON CHANGE { || iif( ! bDbfSorting .AND. ! PUB_bLite, QPM_Wait( "RichEditDisplay( 'DBF', .T. )", 'Loading ...' ), NIL ) } ;
JUSTIFY { BROWSE_JTFY_LEFT }
END PAGE
DEFINE PAGE PageLIB
@ 43, 12 LABEL LLibLabel ;
VALUE 'Include:' ;
WIDTH 155 ;
FONT 'arial' SIZE 10 BOLD ;
TRANSPARENT ;
FONTCOLOR DEF_COLORBLUE
DEFINE BUTTONEX BLibAdd
ROW 70
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'add'
TOOLTIP 'Add file'
ONCLICK QPM_AddFilesLIB()
END BUTTONEX
DEFINE BUTTONEX BLibRemove
ROW 70
COL 85
WIDTH 65
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove file'
ONCLICK QPM_RemoveFileLIB()
END BUTTONEX
DEFINE BUTTONEX BFirst
ROW 70
COL 158
WIDTH 65
HEIGHT 25
CAPTION 'First'
TOOLTIP 'Move selected item to first position of concatenation order'
ONCLICK LibPos( VentanaMain.GIncFiles.Value, '*First*' )
END BUTTONEX
DEFINE BUTTONEX BLast
ROW 70
COL 231
WIDTH 65
HEIGHT 25
CAPTION 'Last'
TOOLTIP 'Move selected item to last position on concatenation order (default)'
ONCLICK LibPos( VentanaMain.GIncFiles.Value, '*Last*' )
END BUTTONEX
DEFINE BUTTONEX BSortInc
ROW 100
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'Sort'
TOOLTIP 'Sorts included items in alphabetical order'
ONCLICK SortINC( 'VentanaMain', 'GIncFiles', NCOLINCNAME )
END BUTTONEX
DEFINE BUTTONEX BSyncLib
ROW 312
COL 296
WIDTH 11
HEIGHT 21
PICTURE 'SYNC'
TOOLTIP 'Syncronize tabs'
ONCLICK TabSync()
END BUTTONEX
DEFINE BUTTONEX BUpLibInclude
ROW 130
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected item up in the list'
ONCLICK UpLibInclude()
END BUTTONEX
DEFINE BUTTONEX BDownLibInclude
ROW 160
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected item down in the list'
ONCLICK DownLibInclude()
END BUTTONEX
@ 130, 25 GRID GIncFiles ;
WIDTH 270 ;
HEIGHT 170 ;
HEADERS { 'S', 'Include Name', 'Include Full Name'} ;
WIDTHS { 25, 100, 1000 };
ITEMS aGridInc ;
VALUE 1 ;
IMAGE vImagesGrid ;
BACKCOLOR DEF_COLORBACKINC ;
ON HEADCLICK { { || SortINC( 'VentanaMain', 'GIncFiles', 1 ) }, ;
{ || SortINC( 'VentanaMain', 'GIncFiles', 2 ) }, ;
{ || SortINC( 'VentanaMain', 'GIncFiles', 3 ) } } ;
ON DBLCLICK { LibInfo() } ;
ON CHANGE { || iif( ! bIncSorting .AND. ! PUB_bLite, RichEditDisplay('INC'), NIL ) } ;
JUSTIFY { BROWSE_JTFY_LEFT }
@ 313, 12 LABEL LLibLabel_e ;
VALUE 'Exclude:' ;
WIDTH 155 ;
FONT 'arial' SIZE 10 BOLD ;
TRANSPARENT ;
FONTCOLOR DEF_COLORBLUE
DEFINE BUTTONEX BLibAdd_E
ROW 340
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'add'
TOOLTIP 'Add file'
ONCLICK QPM_AddExcludeFilesLIB()
END BUTTONEX
DEFINE BUTTONEX BLibRemove_E
ROW 340
COL 85
WIDTH 65
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove file'
ONCLICK QPM_RemoveExcludeFileLIB()
END BUTTONEX
DEFINE BUTTONEX BSortExc
ROW 370
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'Sort'
TOOLTIP 'Sort excluded libs in alphabetical order'
ONCLICK SortEXC( 'VentanaMain', 'GExcFiles', NCOLEXCNAME )
END BUTTONEX
DEFINE BUTTONEX BUpLibExclude
ROW 400
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected lib up in the list'
ONCLICK UpLibExclude()
END BUTTONEX
DEFINE BUTTONEX BDownLibExclude
ROW 430
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected lib down in the list'
ONCLICK DownLibExclude()
END BUTTONEX
@ 400, 25 GRID GExcFiles ;
WIDTH 270 ;
HEIGHT GetDesktopRealHeight() - 585 ;
HEADERS { 'S', 'Library Name' } ;
WIDTHS { 25, 200 };
ITEMS aGridExc ;
VALUE 1 ;
IMAGE vImagesGrid ;
BACKCOLOR DEF_COLORBACKEXC ;
ON HEADCLICK { { || SortEXC( 'VentanaMain', 'GExcFiles', 1) }, { || SortEXC( 'VentanaMain', 'GExcFiles', 2) } } ;
ON DBLCLICK { LibExcludeInfo() } ;
JUSTIFY { BROWSE_JTFY_LEFT }
END PAGE
#ifdef QPM_SHG
DEFINE PAGE PageHlp
DEFINE LABEL LHlpDataBase
ROW 40
COL 12
VALUE 'SHG Database:'
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE TEXTBOX THlpDataBase
ROW 40
COL 132
WIDTH 130
END TEXTBOX
DEFINE BUTTONEX BHlpDataBase
ROW 40
COL 270
WIDTH 25
HEIGHT 25
PICTURE 'folderselect'
TOOLTIP 'Select SHG database'
ONCLICK ( SHG_GetDatabase(), iif( SHG_BaseOK, SetProperty( 'VentanaMain', 'RichEditHlp', 'readonly', .F. ), NIL ) )
END BUTTONEX
DEFINE LABEL LWWWHlp
ROW 70
COL 12
VALUE 'Your Link for Foot:'
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE TEXTBOX TWWWHlp
ROW 70
COL 132
WIDTH 163
END TEXTBOX
DEFINE BUTTONEX BHlpAdd
ROW 100
COL 12
WIDTH 65
HEIGHT 25
PICTURE 'add'
TOOLTIP 'Add topic'
ONCLICK QPM_AddFilesHLP()
END BUTTONEX
DEFINE BUTTONEX BHlpRemove
ROW 100
COL 85
WIDTH 65
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove topic'
ONCLICK QPM_RemoveFileHLP()
END BUTTONEX
DEFINE BUTTONEX BHlpEdit
ROW 100
COL 158
WIDTH 65
HEIGHT 25
PICTURE 'Edit'
TOOLTIP "Edit topic's name"
ONCLICK QPM_EditHLP ()
END BUTTONEX
DEFINE BUTTONEX SetTestHlp
ROW 100
COL 230
WIDTH 65
HEIGHT 25
PICTURE 'TEST'
TOOLTIP 'Test CHM file'
ONCLICK SHG_DisplayHelp( SHG_GetOutputName() )
BACKCOLOR WHITE
END BUTTONEX
DEFINE BUTTONEX BToggle
ROW 130
COL 12
WIDTH 65
HEIGHT 25
CAPTION 'Toggle'
TOOLTIP "Toggle topic's type (Book or Page)"
ONCLICK SHG_Toggle()
END BUTTONEX
DEFINE BUTTONEX HlpCheckSave
ROW 130
COL 85
WIDTH 65
HEIGHT 25
CAPTION 'Save all?'
TOOLTIP 'Save all unsaved topics'
ONCLICK QPM_WAIT( 'SHG_CheckSave()', 'Checking for save ...' )
END BUTTONEX
DEFINE BUTTONEX HlpClose
ROW 130
COL 158
WIDTH 65
HEIGHT 25
CAPTION 'Close'
TOOLTIP 'Close SHG database'
ONCLICK SHG_Close()
END BUTTONEX
DEFINE BUTTONEX HlpGenerate
ROW 130
COL 230
WIDTH 65
HEIGHT 25
CAPTION 'Generate'
TOOLTIP 'Generate help file in CHM format'
ONCLICK QPM_Wait( "SHG_Generate( SHG_Database, SHG_CheckTypeOutput, PUB_cSecu, GetProperty( 'VentanaMain', 'TWWWHlp', 'Value' ) )", 'Generating Help ...' )
END BUTTONEX
DEFINE BUTTONEX BSyncHlp
ROW 312
COL 296
WIDTH 11
HEIGHT 21
PICTURE 'SYNC'
TOOLTIP 'Syncronize tabs'
ONCLICK TabSync()
END BUTTONEX
DEFINE BUTTONEX BUpHlp
ROW 160
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected topic up in the list'
ONCLICK UpHlp()
END BUTTONEX
DEFINE BUTTONEX BDownHlp
ROW 190
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected topic down in the list'
ONCLICK DownHlp()
END BUTTONEX
DEFINE BUTTONEX BUpHlp2
ROW GetDesktopRealHeight() - 237
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'UP'
TOOLTIP 'Move the selected topic up in the list'
ONCLICK UpHlp()
END BUTTONEX
DEFINE BUTTONEX BDownHlp2
ROW GetDesktopRealHeight() - 207
COL 12
WIDTH 11
HEIGHT 21
PICTURE 'DOWN'
TOOLTIP 'Move the selected topic down in the list'
ONCLICK DownHlp()
END BUTTONEX
@ 160, 25 GRID GHlpFiles ;
WIDTH 270 ;
HEIGHT GetDesktopRealHeight() - 345 ;
HEADERS { 'I', 'Topic', 'Nick Name', 'Offset', 'Control Edit' } ;
WIDTHS { 25, 1000, 0, 20, 20 };
ITEMS aGridHlp ;
VALUE 0 ;
IMAGE vImagesGrid ;
BACKCOLOR DEF_COLORBACKHLP ;
ON DBLCLICK { QPM_EditHLP() } ;
ON CHANGE { || SetProperty( 'VentanaMain', 'GHlpFilesItem', 'value', 'Current item: ' + LTrim( Str( VentanaMain.GHlpFiles.Value ) ) ), ;
iif( ! bHlpSorting .AND. ! PUB_bLite, ( RichEditDisplay( 'HLP' ), OcultaHlpKeys() ), NIL ) } ;
JUSTIFY { BROWSE_JTFY_LEFT }
@ 160 + GetDesktopRealHeight() - 345 + 2, 25 LABEL GHlpFilesItem ;
WIDTH 270 ;
HEIGHT 20 ;
VALUE '' ;
FONT 'arial' SIZE 8 ;
FONTCOLOR DEF_COLORBLUE
END PAGE
#endif
END TAB
ProjectButtons( .F. )
DEFINE LABEL LStatusLabel
ROW 15
COL iif( IsXPThemeActive(), 363, 335 )
WIDTH iif( IsXPThemeActive(), 70, 80 )
HEIGHT 18
VALUE PUB_cStatusLabel
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE LABEL LResumen
ROW 09
COL 433
HEIGHT 18
WIDTH 600
VALUE ''
FONTNAME 'arial'
FONTSIZE 10
FONTBOLD .T.
FONTCOLOR DEF_COLORBLUE
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE LABEL LFull
ROW 28
COL 433
HEIGHT 18
WIDTH 160
VALUE ''
FONTNAME 'arial'
FONTSIZE 10
FONTBOLD .T.
FONTCOLOR DEF_COLORGREEN
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE LABEL LExtra
ROW 28
COL 600
WIDTH 200
HEIGHT 18
VALUE ''
FONTNAME 'arial'
FONTSIZE 10
FONTBOLD .T.
FONTCOLOR DEF_COLORBLACK
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE TAB TabFiles ;
OF VentanaMain ;
AT 60, 328 ;
WIDTH ( GetDesktopRealWidth() - 344 ) ;
HEIGHT ( GetDesktopRealHeight() - 190 ) ;
VALUE nPagePRG ;
ON CHANGE TabChange( 'FILES' )
DEFINE PAGE PagePRG
DEFINE CHECKBOX Check_AutoSyncPrg
CAPTION 'Auto Sync'
ROW 00
COL ( GetDesktopRealWidth() - 420 )
WIDTH 70
HEIGHT 20
VALUE .T.
TOOLTIP 'Toggle automatic tab syncronization'
ON CHANGE TabAutoSync('PRG')
END CHECKBOX
@ 25, 00 IMAGE IBorde1PRG ;
PICTURE 'YELLOW' ;
WIDTH GetDesktopRealWidth() - 348 ;
HEIGHT GetDesktopRealHeight() - 217 ;
STRETCH
@ 35, 10 RICHEDITBOX RichEditPRG ;
WIDTH GetDesktopRealWidth() - 364 ;
HEIGHT GetDesktopRealHeight() - 272 ;
READONLY ;
FONT 'Courier New' ;
SIZE 9 ;
BACKCOLOR DEF_COLORBACKPRG
DEFINE CHECKBOX Check_NumberOnPrg
CAPTION 'Line Number'
ROW GetDesktopRealHeight() - 224
COL 10
WIDTH 95
HEIGHT 20
VALUE .F.
TOOLTIP "Show line numbers (file's loading is slower)"
ON CHANGE ( bNumberOnPrg := GetProperty( 'VentanaMain', 'Check_NumberOnPrg', 'value' ), ;
iif( bPpoDisplayado, QPM_Wait( 'PpoDisplay(.T.)', 'Reloading ...' ), QPM_Wait( "RichEditDisplay( 'PRG', .T. )", 'Reloading ...' ) ) )
END CHECKBOX
DEFINE BUTTONEX bReLoadPpo
ROW GetDesktopRealHeight() - 227
COL 110
WIDTH 95
HEIGHT 25
CAPTION 'Browse PPO'
TOOLTIP "Browse the selected file's preprocessor output"
ONCLICK QPM_Wait( 'PpoDisplay()', 'Reloading ...' )
END BUTTONEX
DEFINE BUTTONEX bReLoadPrg
ROW GetDesktopRealHeight() - 227
COL 210
WIDTH GetDesktopRealWidth() - 630
HEIGHT 25
CAPTION 'Reload Source'
TOOLTIP 'Reload source from disk'
ONCLICK QPM_Wait( "RichEditDisplay( 'PRG', .T. )", 'Reloading ...' )
END BUTTONEX
DEFINE BUTTONEX BLOCALSearchPrg
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 415
WIDTH 60
HEIGHT 25
CAPTION 'Search'
TOOLTIP 'Search in displayed text'
ONCLICK LOCALSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )
END BUTTONEX
END PAGE
DEFINE PAGE iif( PUB_bW800, 'Hea', PageHEA )
DEFINE CHECKBOX Check_AutoSyncHea
CAPTION 'Auto Sync'
ROW 00
COL ( GetDesktopRealWidth() - 420 )
WIDTH 70
HEIGHT 20
VALUE .T.
TOOLTIP 'Toggle automatic tab syncronization'
ON CHANGE TabAutoSync('HEA')
END CHECKBOX
@ 25, 00 IMAGE IBorde1HEA ;
PICTURE 'YELLOW' ;
WIDTH GetDesktopRealWidth() - 348 ;
HEIGHT GetDesktopRealHeight() - 217 ;
STRETCH
@ 35, 10 RICHEDITBOX RichEditHEA ;
WIDTH GetDesktopRealWidth() - 364 ;
HEIGHT GetDesktopRealHeight() - 272 ;
READONLY ;
FONT 'Courier New' ;
SIZE 9 ;
BACKCOLOR DEF_COLORBACKHEA
DEFINE CHECKBOX Check_NumberOnHea
CAPTION 'Line Number'
ROW GetDesktopRealHeight() - 224
COL 10
WIDTH 95
HEIGHT 20
VALUE .F.
TOOLTIP "Show line numbers (file's loading is slower)"
ON CHANGE ( bNumberOnHea := GetProperty( 'VentanaMain', 'Check_NumberOnHea', 'value' ), QPM_Wait( "RichEditDisplay( 'HEA', .T. )", 'Reloading ...' ) )
END CHECKBOX
DEFINE BUTTONEX bReLoadHea
ROW GetDesktopRealHeight() - 227
COL 110
WIDTH GetDesktopRealWidth() - 530
HEIGHT 25
CAPTION 'Reload Header'
TOOLTIP 'Reload header file from disk'
ONCLICK { || QPM_Wait( "RichEditDisplay( 'HEA', .T. )", 'Reloading ...' ) }
END BUTTONEX
DEFINE BUTTONEX BLOCALSearchHea
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 415
WIDTH 60
HEIGHT 25
CAPTION 'Search'
TOOLTIP 'Search in displayed text'
ONCLICK LOCALSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )
END BUTTONEX
END PAGE
DEFINE PAGE iif( PUB_bW800, 'FMG', PagePAN )
DEFINE CHECKBOX Check_AutoSyncPan
CAPTION 'Auto Sync'
ROW 00
COL ( GetDesktopRealWidth() - 420 )
WIDTH 70
HEIGHT 20
VALUE .T.
TOOLTIP 'Toggle automatic tab syncronization'
ON CHANGE TabAutoSync('PAN')
END CHECKBOX
@ 25, 00 IMAGE IBorde1PAN ;
PICTURE 'YELLOW' ;
WIDTH GetDesktopRealWidth() - 348 ;
HEIGHT GetDesktopRealHeight() - 217 ;
STRETCH
@ 35, 10 RICHEDITBOX RichEditPAN ;
WIDTH GetDesktopRealWidth() - 364 ;
HEIGHT GetDesktopRealHeight() - 272 ;
READONLY ;
FONT 'Courier New' ;
SIZE 9 ;
BACKCOLOR DEF_COLORBACKPAN
DEFINE CHECKBOX Check_NumberOnPan
CAPTION 'Line Number'
ROW GetDesktopRealHeight() - 224
COL 10
WIDTH 95
HEIGHT 20
VALUE .F.
TOOLTIP "Show line numbers (file's loading is slower)"
ON CHANGE ( bNumberOnPan := GetProperty( 'VentanaMain', 'Check_NumberOnPan', 'value' ), QPM_Wait( "RichEditDisplay( 'PAN', .T. )", 'Reloading ...' ) )
END CHECKBOX
DEFINE BUTTONEX bReLoadPan
ROW GetDesktopRealHeight() - 227
COL 110
WIDTH GetDesktopRealWidth() - 530
HEIGHT 25
CAPTION 'Reload Form'
TOOLTIP 'Reload form file from disk'
ONCLICK { || QPM_Wait( "RichEditDisplay( 'PAN', .T. )", 'Reloading ...' ) }
END BUTTONEX
DEFINE BUTTONEX BLOCALSearchPan
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 415
WIDTH 60
HEIGHT 25
CAPTION 'Search'
TOOLTIP 'Search in displayed text'
ONCLICK LOCALSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )
END BUTTONEX
END PAGE
DEFINE PAGE PageDBF
DEFINE CHECKBOX Check_AutoSyncDbf
CAPTION 'Auto Sync'
ROW 00
COL ( GetDesktopRealWidth() - 420 )
WIDTH 70
HEIGHT 20
VALUE .T.
TOOLTIP 'Toggle automatic tab syncronization'
ON CHANGE TabAutoSync('DBF')
END CHECKBOX
@ 25, 00 IMAGE IBorde1DBF ;
PICTURE 'YELLOW' ;
WIDTH GetDesktopRealWidth() - 348 ;
HEIGHT GetDesktopRealHeight() - 217 ;
STRETCH
@ 35, 10 RICHEDITBOX RichEditDBF ;
WIDTH GetDesktopRealWidth() - 364 ;
HEIGHT GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 78 ) / 100 ) ;
READONLY ;
FONT 'Courier New' ;
SIZE 9 ;
BACKCOLOR DEF_COLORBACKDBF
@ GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 72 ) / 100 ), 10 BROWSE DbfBrowse ;
OF VentanaMain ;
WIDTH GetDesktopRealWidth() - 364 ;
HEIGHT ( GetDesktopRealHeight() - 237 ) - ( GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 72 ) / 100 ) ) ;
HEADERS ( vDbfHeaders ) ;
WIDTHS ( vDbfWidths ) ;
WORKAREA Alias() ;
FIELDS ( vDbfHeaders ) ;
VALUE RECNO() ;
FONT 'Courier New' SIZE 9 ;
BACKCOLOR DEF_COLORBACKDBF
DEFINE CHECKBOX Check_DbfAutoView
CAPTION 'Auto View'
ROW GetDesktopRealHeight() - 223
COL 10
WIDTH 80
HEIGHT 20
VALUE bDbfAutoView
TOOLTIP 'Toggle automatic browsing of DBF file in Quick View'
ON CHANGE ( bDbfAutoView := GetProperty( 'VentanaMain', 'Check_DbfAutoView', 'Value' ), QPM_Wait( "RichEditDisplay( 'DBF', .T.,, .F. )", 'Reloading ...' ) )
END CHECKBOX
DEFINE BUTTONEX bReLoadDbf
ROW GetDesktopRealHeight() - 227
COL 90
WIDTH GetDesktopRealWidth() - 675
HEIGHT 25
CAPTION iif( PUB_bW800, '(Re)Display DBF', 'Force (re)display of DBF information or data' )
TOOLTIP 'Display DBF information from disk'
ONCLICK { || QPM_Wait( "RichEditDisplay( 'DBF', .T., NIL, .T. )", 'Reloading ...' ) }
END BUTTONEX
DEFINE BUTTONEX BLOCALSearchStructure
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 580
WIDTH 110
HEIGHT 25
CAPTION 'Search Struc.'
TOOLTIP "Search text in DBF's structure"
ONCLICK LOCALSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )
END BUTTONEX
DEFINE BUTTONEX BLOCALSearchDbf
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 465
WIDTH 110
HEIGHT 25
CAPTION 'Dbf Search'
TOOLTIP "Search text in DBF's data"
ONCLICK QPM_Wait( "DbfDataSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )", 'Searching ...' )
END BUTTONEX
END PAGE
DEFINE PAGE PageLIB
DEFINE CHECKBOX Check_AutoSyncLib
CAPTION 'Auto Sync'
ROW 00
COL ( GetDesktopRealWidth() - 420 )
WIDTH 70
HEIGHT 20
VALUE .T.
TOOLTIP 'Toggle automatic tab syncronization'
ON CHANGE TabAutoSync('LIB')
END CHECKBOX
@ 25, 00 IMAGE IBorde1LIB ;
PICTURE 'YELLOW' ;
WIDTH GetDesktopRealWidth() - 348 ;
HEIGHT GetDesktopRealHeight() - 217 ;
STRETCH
@ 35, 10 RICHEDITBOX RichEditLIB ;
WIDTH GetDesktopRealWidth() - 364 ;
HEIGHT GetDesktopRealHeight() - 272 ;
READONLY ;
FONT 'Courier New' ;
SIZE 9 ;
BACKCOLOR DEF_COLORBACKINC
DEFINE BUTTONEX bReLoadLib
ROW GetDesktopRealHeight() - 227
COL 10
WIDTH GetDesktopRealWidth() - 430
HEIGHT 25
CAPTION 'List Library/Object (or Re-List)'
TOOLTIP 'List Library/Object content'
ONCLICK SetProperty( 'VentanaMain', 'RichEditLib', 'Value', QPM_Wait( "ListModule( '" + ChgPathToReal( US_WordSubStr( GetProperty( "VentanaMain", "GIncFiles", "Cell", VentanaMain.GIncFiles.Value, NCOLINCFULLNAME ), 3 ) ) + "' )", 'Listing ...', NIL, .T. ) )
END BUTTONEX
DEFINE BUTTONEX BLOCALSearchLib
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 415
WIDTH 60
HEIGHT 25
CAPTION 'Search'
TOOLTIP 'Search in displayed text'
ONCLICK LOCALSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )
END BUTTONEX
END PAGE
#ifdef QPM_SHG
DEFINE PAGE PageHlp
DEFINE CHECKBOX Check_AutoSyncHlp
CAPTION 'Auto Sync'
ROW 00
COL ( GetDesktopRealWidth() - 420 )
WIDTH 70
HEIGHT 20
VALUE .T.
TOOLTIP 'Toggle automatic tab syncronization'
ON CHANGE TabAutoSync('HLP')
END CHECKBOX
@ 25, 00 IMAGE IBorde1Hlp ;
PICTURE 'YELLOW' ;
WIDTH GetDesktopRealWidth() - 348 ;
HEIGHT GetDesktopRealHeight() - 217 ;
STRETCH
// these instructions must come before the definition of BAddHlpKey and BRemoveHlpKey
oHlpRichEdit:cWindowName := 'VentanaMain'
oHlpRichEdit:cRichControlName := 'RichEditHlp'
oHlpRichEdit:cLanguage := 'EN'
oHlpRichEdit:cFunctionPostPaste := 'SHG_Post_Paste()'
IF PUB_bW800
oHlpRichEdit:nPorcentajeAncho := 49.0
oHlpRichEdit:nPorcentajeAlto := 72
ELSE
oHlpRichEdit:nPorcentajeAncho := 60.0
IF US_InitialBarIsOculta()
oHlpRichEdit:nPorcentajeAlto := 81
ELSE
oHlpRichEdit:nPorcentajeAlto := 78
ENDIF
ENDIF
oHlpRichEdit:bEdit := .T.
oHlpRichEdit:bRTF := .T.
oHlpRichEdit:bButtonFind := .F.
oHlpRichEdit:Init( '' )
SetProperty( 'VentanaMain', 'RichEditHlp', 'readonly', .T. )
DEFINE BUTTONEX BAddHlpKey
ROW GetProperty( 'VentanaMain', 'CB_Vinetas', 'row' )
COL GetDesktopRealWidth() - 416
WIDTH 28
HEIGHT 25
PICTURE 'add'
TOOLTIP 'Add key to index'
ONCLICK SHG_AddHlpKey()
END BUTTONEX
DEFINE BUTTONEX BRemoveHlpKey
ROW GetProperty( 'VentanaMain', 'CB_Vinetas', 'row' )
COL GetDesktopRealWidth() - 384
WIDTH 28
HEIGHT 25
PICTURE 'remove'
TOOLTIP 'Remove key from index'
ONCLICK QPM_RemoveKeyHLP()
END BUTTONEX
nRow := GetProperty( 'VentanaMain', 'RichEditHlp', 'row' )
nCol := GetProperty( 'VentanaMain', 'RichEditHlp', 'col' ) + GetProperty( 'VentanaMain', 'RichEditHlp', 'width' ) + 20
nWidth := ( GetDesktopRealWidth() - 480 ) + 124 - nCol
nHeight := GetProperty( 'VentanaMain', 'RichEditHlp', 'Height' )
@ nRow, nCol GRID GHlpKeys ;
WIDTH nWidth ;
HEIGHT nHeight ;
HEADERS { 'Keys' } ;
WIDTHS { 100 };
ITEMS {} ;
VALUE 0 ;
TOOLTIP "Index keys associated with this topic" ;
BACKCOLOR DEF_COLORBACKHLP ;
ON DBLCLICK { QPM_EditKeyHLP() } ;
PAINTDOUBLEBUFFER ;
JUSTIFY { BROWSE_JTFY_LEFT }
DEFINE BUTTONEX bReLoadHlp
ROW GetDesktopRealHeight() - 227
COL 10
WIDTH 124
HEIGHT 25
CAPTION 'Cancel changes?'
TOOLTIP 'Select "Yes" to discard changes'
ONCLICK { || QPM_Wait( 'SHG_CancelChangesTopic()', 'Checking for restore ...' ) }
END BUTTONEX
DEFINE CHECKBOX CH_SHG_TypeOutput
CAPTION 'Add HTML Output'
ROW GetDesktopRealHeight() - 224
COL iif( PUB_bW800, 140, 230 )
WIDTH iif( PUB_bW800, 120, 120 )
HEIGHT 20
VALUE SHG_CheckTypeOutput
TOOLTIP 'Toggles generation of HTML files'
ON CHANGE ( SHG_CheckTypeOutput := GetProperty( 'VentanaMain', 'CH_SHG_TypeOutput', 'value' ) )
END CHECKBOX
DEFINE BUTTONEX BLOCALSearchHlp
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 480
WIDTH 124
HEIGHT 25
CAPTION 'Search'
TOOLTIP 'Search in displayed text'
ONCLICK LOCALSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )
END BUTTONEX
END PAGE
#endif
DEFINE PAGE PageSysout
DEFINE LABEL L_OverrideCompile
ROW 40
COL 10
WIDTH 150
VALUE 'Extra Compile Params'
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE TEXTBOX OverrideCompile
ROW 37
COL 155
WIDTH ( GetDesktopRealWidth() - 670 ) / 2
HEIGHT 25
END TEXTBOX
DEFINE LABEL L_OverrideLink
ROW 40
COL 145 + ( ( GetDesktopRealWidth() - 620 ) / 2 )
WIDTH 150
VALUE 'Extra Link Params:'
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE TEXTBOX OverrideLink
ROW 37
COL 263 + ( ( GetDesktopRealWidth() - 620 ) / 2 )
WIDTH ( GetDesktopRealWidth() - 620 ) / 2
HEIGHT 25
END TEXTBOX
@ 75, 10 RICHEDITBOX RichEditSysout ;
WIDTH GetDesktopRealWidth() - 364 ;
HEIGHT GetDesktopRealHeight() - 312 ;
READONLY ;
FONT 'Courier New' ;
SIZE 9
DEFINE BUTTONEX BLOCALSearchSysOut
ROW GetDesktopRealHeight() - 227
COL 10
WIDTH GetDesktopRealWidth() - 364
HEIGHT 25
CAPTION 'Search'
TOOLTIP 'Search in displayed text'
ONCLICK LOCALSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )
END BUTTONEX
END PAGE
DEFINE PAGE PageOUT
@ 35, 10 RICHEDITBOX RichEditOUT ;
WIDTH GetDesktopRealWidth() - 364 ;
HEIGHT GetDesktopRealHeight() - 272 ;
READONLY ;
BACKCOLOR DEF_COLORBACKOUT ;
FONT 'Courier New' ;
SIZE 9
DEFINE BUTTONEX bDeleteErrorLog
ROW GetDesktopRealHeight() - 227
COL 10
WIDTH 120
HEIGHT 25
CAPTION 'Delete Error Log'
TOOLTIP "Delete content of MiniGui's error log"
ONCLICK QPM_DeleteErrorLog()
END BUTTONEX
DEFINE BUTTONEX bReLoadErrorLog
ROW GetDesktopRealHeight() - 227
COL 140
WIDTH GetDesktopRealWidth() - 780
HEIGHT 25
CAPTION 'Reload Error Log'
TOOLTIP "Reload content of MiniGui's error log"
ONCLICK MuestroErrorLog()
END BUTTONEX
DEFINE BUTTONEX bReLoadOut
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 620
WIDTH 184
HEIGHT 25
CAPTION '(Re)List Output File'
TOOLTIP "List content of project's output file"
ONCLICK ( SetProperty( 'VentanaMain', 'RichEditOut', 'Value', QPM_Wait( "ListModuleMoved( '" + GetOutputModuleName() + "' )", 'Listing ...' ) ), SetProperty( 'VentanaMain', 'RichEditOut', 'caretpos', 1 ) )
END BUTTONEX
DEFINE BUTTONEX BLOCALSearchOut
ROW GetDesktopRealHeight() - 227
COL GetDesktopRealWidth() - 415
WIDTH 60
HEIGHT 25
CAPTION 'Search'
TOOLTIP 'Search in displayed text'
ONCLICK LOCALSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )
END BUTTONEX
END PAGE
END TAB
DEFINE BUTTONEX BStop
ROW GetDesktopRealHeight() - 118
COL 328
WIDTH 85
HEIGHT 25
PICTURE 'STOP'
TOOLTIP 'Stop BUILD process'
ONCLICK QPM_Wait( 'BuildStop()', 'Stopping, please wait ...' )
END BUTTONEX
#ifdef QPM_KILLER
DEFINE BUTTONEX BKill
ROW GetDesktopRealHeight() - 118
COL 418
WIDTH 85
HEIGHT 25
PICTURE 'KILL'
TOOLTIP 'Use "Process Manager" to kill a process'
ONCLICK ( SetProperty( 'VentanaMain', 'bKill', 'Enabled', .F. ), DoMethod( 'WinKiller', 'restore' ), QPM_bKiller := .T., iif( PUB_QPM_bHigh, NIL, QPM_SetProcessPriority( 'HIGH' ) ), SetProperty( 'WinKiller', 'TimerRefresh', 'Enabled', GetProperty( 'WinKiller', 'Check_AutoRefresh', 'value' ) ), DoMethod( 'VentanaMain', 'minimize' ) )
END BUTTONEX
#endif
@ GetDesktopRealHeight() - 118, 508 COMBOBOX CSearch ;
ITEMS {} ;
VALUE 1 ;
DISPLAYEDIT ;
WIDTH GetDesktopRealWidth() - iif( PUB_bW800, 735, 810 ) ;
TOOLTIP 'Text to search for' ;
ON ENTER ( AddSearchTxt(), QPM_Wait( "GlobalSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )", 'Searching ...' ) )
ON LOSTFOCUS AddSearchTxt()
DEFINE BUTTONEX BGlobalSearch
ROW GetDesktopRealHeight() - 118
COL GetDesktopRealWidth() - iif( PUB_bW800, 223, 293 )
WIDTH 90
HEIGHT 25
CAPTION 'Global Search'
TOOLTIP "Search in all project's files"
ONCLICK ( AddSearchTxt(), QPM_Wait( "GlobalSearch( GetProperty( 'VentanaMain', 'CSearch', 'DisplayValue' ) )", 'Searching ...' ) )
END BUTTONEX
DEFINE BUTTONEX BGlobalReset
ROW GetDesktopRealHeight() - 118
COL GetDesktopRealWidth() - iif( PUB_bW800, 129, 194 )
WIDTH iif( PUB_bW800, 15, 50 )
HEIGHT 25
CAPTION iif( PUB_bW800, 'R', 'Reset' )
TOOLTIP 'Reset Global Search indicators and counts'
ONCLICK QPM_Wait( "ResetImgGrid( '*' )", 'Reseting Search Indicators ...' )
END BUTTONEX
VentanaMain.BGlobalReset.Enabled := .F.
DEFINE CHECKBOX Check_SearchFun
CAPTION iif( PUB_bW800, 'Func/Proc', 'Func/Proc/Method' )
ROW GetDesktopRealHeight() - 125
COL GetDesktopRealWidth() - iif( PUB_bW800, 105, 135 )
WIDTH iif( PUB_bW800, 80, 120 )
HEIGHT 20
VALUE .F.
TOOLTIP 'Global Search: only find Function, Procedure and/or Method name'
TRANSPARENT IsXPThemeActive()
END CHECKBOX
DEFINE CHECKBOX Check_SearchDbf
CAPTION iif( PUB_bW800, 'DBF Data', 'DBF Data Search' )
ROW GetDesktopRealHeight() - 104
COL GetDesktopRealWidth() - iif( PUB_bW800, 105, 135 )
WIDTH iif( PUB_bW800, 80, 120 )
HEIGHT 20
VALUE .F.
TOOLTIP "Global Search: include DBF's data in search process"
TRANSPARENT IsXPThemeActive()
END CHECKBOX
DEFINE CHECKBOX Check_SearchCas
CAPTION iif( PUB_bW800, 'Case Sens', 'Case Sensitive' )
ROW GetDesktopRealHeight() - 83
COL GetDesktopRealWidth() - iif( PUB_bW800, 105, 135 )
WIDTH iif( PUB_bW800, 80, 120 )
HEIGHT 20
VALUE .F.
TOOLTIP "Global Search: include DBF's data in search process"
TRANSPARENT IsXPThemeActive()
END CHECKBOX
DEFINE LABEL Label_2
ROW GetDesktopRealHeight() - 85
COL 328
VALUE 'F1 Help F2 Open/New F3 Save F4 Build F5 Run F10 Exit'
AUTOSIZE .T.
FONTNAME 'Arial'
FONTSIZE 9
TRANSPARENT IsXPThemeActive()
END LABEL
DEFINE LABEL LGlobal
ROW GetDesktopRealHeight() - 85
COL GetDesktopRealWidth() - iif( PUB_bW800, 205, 330 )
WIDTH iif( PUB_bW800, 80, 180 )
VALUE iif( PUB_bW800, 'Global Is On', 'Global Search Is Active' )
FONTNAME 'arial'
FONTSIZE 10
FONTBOLD .T.
FONTCOLOR DEF_COLORRED
TOOLTIP 'Global Search is active, use "Reset" button to disable'
TRANSPARENT IsXPThemeActive()
END LABEL
VentanaMain.LGlobal.visible := .F.
DEFINE TIMER Timer_Refresh ;
INTERVAL 500 ;
ACTION QPM_Timer_StatusRefresh()
DEFINE TIMER Timer_Edit ;
INTERVAL 500 ;
ACTION QPM_Timer_Edit()
DEFINE TIMER Timer_Run ;
INTERVAL 500 ;
ACTION QPM_Timer_Run()
IF PUB_bHotKeys
DefinoWindowsHotKeys()
ENDIF
END WINDOW
#ifdef QPM_KILLER
QPM_DefinoKillerWindow()
DoMethod( 'WinKiller', 'hide' )
#endif
IF ! PUB_bLite
TabChange( 'FILES' )
ENDIF
CargoSearch()
IF PUB_bLite
DEFINE WINDOW VentanaLite ;
AT 0,0 ;
WIDTH ( ( GetDesktopRealWidth() * 70 ) / 100 ) HEIGHT ( ( GetDesktopRealHeight() * 95 ) / 100 ) ;
TITLE PUB_cQPM_Title + ' [ New Project ]' ;
CHILD ;
ICON 'QPM' ;
ON INIT HideInitAutoRun()
@ 47, 2 FRAME FFrame ;
WIDTH ( ( GetDesktopRealWidth() * 68.7 ) / 100 ) ;
HEIGHT ( ( GetDesktopRealHeight() * 85 ) / 100 )
DEFINE LABEL LStatusLabel
ROW 15
COL 28
WIDTH 100
HEIGHT 18
VALUE PUB_cStatusLabel
END LABEL
@ 07, 153 LABEL LResumen ;
VALUE '' ;
WIDTH 600 ;
HEIGHT 18 ;
FONT 'arial' SIZE 10 BOLD ;
FONTCOLOR DEF_COLORBLUE
@ 26, 153 LABEL LFull ;
VALUE '' ;
WIDTH 160 ;
HEIGHT 18 ;
FONT 'arial' SIZE 10 BOLD ;
FONTCOLOR DEF_COLORGREEN
@ 26, 320 LABEL LExtra ;
VALUE '' ;
WIDTH 200 ;
HEIGHT 18 ;
FONT 'arial' SIZE 10 BOLD ;
FONTCOLOR DEF_COLORBLACK
@ 60, 10 RICHEDITBOX RichEditSysout ;
WIDTH ( ( GetDesktopRealWidth() * 67 ) / 100 ) ;
HEIGHT ( ( GetDesktopRealHeight() * 74 ) / 100 ) ;
READONLY ;
FONT 'Arial' ;
SIZE 9 ;
BACKCOLOR DEF_COLORBACKSYSOUT
DEFINE LABEL Label_3
ROW ( ( GetDesktopRealHeight() * 86 ) / 100 )
COL 50
VALUE 'F5: Run'
AUTOSIZE .T.
FONTNAME 'Arial'
FONTSIZE 9
END LABEL
VentanaLite.Label_3.enabled := .F.
DEFINE BUTTONEX BStop
ROW ( ( GetDesktopRealHeight() * 85 ) / 100 )
COL ( ( GetDesktopRealWidth() * 18 ) / 100 )
WIDTH 75
HEIGHT 25
PICTURE 'STOP'
TOOLTIP 'Stop BUILD process'
ONCLICK QPM_Wait( 'BuildStop()', 'Stopping, please wait ...' )
END BUTTONEX
DEFINE BUTTONEX BAbout
ROW ( ( GetDesktopRealHeight() * 85 ) / 100 )
COL ( ( GetDesktopRealWidth() * 28 ) / 100 )
WIDTH 75
HEIGHT 25
CAPTION 'About'
TOOLTIP "QPM's info and credits"
ONCLICK QPM_About()
END BUTTONEX
DEFINE BUTTONEX BRunP
ROW ( ( GetDesktopRealHeight() * 85 ) / 100 )
COL ( ( GetDesktopRealWidth() * 38 ) / 100 )
WIDTH 75
HEIGHT 25
CAPTION 'Run Parm'
TOOLTIP 'Run program using command line parameters'
ONCLICK ( bRunParm := .T., QPM_Run( bRunParm ) )
END BUTTONEX
VentanaLite.BRunP.enabled := .F.
DEFINE BUTTONEX BRun
ROW ( ( GetDesktopRealHeight() * 85 ) / 100 )
COL ( ( GetDesktopRealWidth() * 48 ) / 100 )
WIDTH 75
HEIGHT 25
CAPTION 'Run'
TOOLTIP 'Run program without command line parameters'
ONCLICK ( bRunParm := .F., QPM_Run( bRunParm ) )
END BUTTONEX
VentanaLite.BRun.enabled := .F.
DEFINE BUTTONEX BExit
ROW ( ( GetDesktopRealHeight() * 85 ) / 100 )
COL ( ( GetDesktopRealWidth() * 58 ) / 100 )
WIDTH 75
HEIGHT 25
CAPTION 'Exit'
TOOLTIP 'Exit QPM and return to caller'
ONCLICK iif( PUB_bIsProcessing, NIL, DoMethod( 'VentanaLite', 'release' ) )
END BUTTONEX
END WINDOW
CENTER WINDOW VentanaLite
VentanaMain.Minimize()
ENDIF
QPM_SetProcessPriority( 'NORMAL' )
SetProperty( 'VentanaMain', 'OverrideCompile', 'enabled', .F. )
SetProperty( 'VentanaMain', 'OverrideLink', 'enabled', .F. )
#ifdef QPM_KILLER
ACTIVATE WINDOW WinKiller, VentanaMain
#else
ACTIVATE WINDOW VentanaMain
#endif
RETURN NIL
FUNCTION QPM_AddFilesPRG
RETURN QPM_Wait( 'QPM_AddFilesPRG2()', 'Loading file ...' )
FUNCTION QPM_AddFilesPRG2()
LOCAL Files, x, i, Exists
LOCAL bTop := iif( GetProperty( 'VentanaMain', 'GPrgFiles', 'itemcount' ) == 0, .T., .F. )
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
// SetMGWaitHide()
Files := QPM_GetFilesPRG()
x := 1
DO WHILE x <= Len( Files )
IF " " $ US_FileNameOnlyNameAndExt( Files[ x ] )
MsgStop( "QPM can't handle filenames with spaces." + CRLF + DBLQT + Files[ x ] + DBLQT + ' will be deleted.' )
ADel( Files, x )
ASize( Files, Len( Files ) - 1 )
ELSE
x ++
ENDIF
ENDDO
// SetMGWaitShow()
IF Len( Files ) == 1
IF ! ( US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'PRG' ) .AND. ;
! ( US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'C' ) .AND. ;
! ( US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'CPP' )
Files[1] := Files[1] + '.PRG'
ENDIF
IF ! File( Files[1] )
IF ! MyMsgYesNo( 'File not found: ' + DBLQT + Files[1] + DBLQT + CRLF + 'Do you want to create an empty file?' )
RETURN .F.
ENDIF
IF US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'PRG'
QPM_CreateNewFile( 'PRG', Files[1] )
ELSE
QPM_MemoWrit( Files[1], ' ' )
ENDIF
ENDIF
ENDIF
FOR x := 1 TO Len( Files )
Exists := .F.
IF SubStr( US_FileNameOnlyPath( Files[x] ), 2, 2 ) == ':' + DEF_SLASH .AND. Len( US_FileNameOnlyPath( Files[x] ) ) == 3
MsgStop( 'Components located in a root folder will not work correctly in QPM: ' + Files[ x ] )
EXIT
ENDIF
Files[x] := ChgPathToRelative( Files[x] )
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF US_Upper( AllTrim( Files[x] ) ) == US_Upper( AllTrim( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) ) )
Exists := .T.
EXIT
ENDIF
NEXT i
IF ! Exists
VentanaMain.GPrgFiles.AddItem( { PUB_nGridImgNone, ' ', US_FileNameOnlyNameAndExt( Files[x] ), Files[x], '0', '', '' } )
IF ! Empty( cLastGlobalSearch )
IF GlobalSearch2( 'PRG', cLastGlobalSearch, VentanaMain.GPrgFiles.ItemCount, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( 'PRG', +1 )
ENDIF
ENDIF
IF US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'PRG'
IF AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) ) } ) == 0
AAdd( vExtraFoldersForSearchHB, US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) )
ENDIF
ELSEIF US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'CPP' .OR. US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'C'
IF AScan( vExtraFoldersForSearchC, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) ) } ) == 0
AAdd( vExtraFoldersForSearchC, US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) )
ENDIF
ENDIF
ENDIF
NEXT x
IF VentanaMain.GPrgFiles.Value == 0
VentanaMain.GPrgFiles.Value := 1
ENDIF
DoMethod( 'VentanaMain', 'GPrgFiles', 'ColumnsAutoFitH' )
QPM_CheckFiles()
// QPM_ForceRecompCheck( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', GetProperty( 'VentanaMain', 'GPrgFiles', 'ItemCount' ), NCOLPRGFULLNAME ) ), GetProperty( 'VentanaMain', 'GPrgFiles', 'ItemCount' ) )
IF bTop .AND. VentanaMain.GPrgFiles.ItemCount > 0
CambioTitulo()
MsgInfo( DBLQT + ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) + DBLQT + CRLF + 'is the new project´s "Top File".' )
ENDIF
RETURN .T.
FUNCTION QPM_AddFilesHEA
RETURN QPM_Wait( 'QPM_AddFilesHEA2()', 'Loading ...' )
FUNCTION QPM_AddFilesHEA2()
LOCAL Files, x, i, Exists
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
SetMGWaitHide()
Files := QPM_GetFilesHEA()
SetMGWaitShow()
IF Len( Files ) == 1
IF ! ( US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'H' ) .AND. ;
! ( US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'CH' )
Files[1] := Files[1] + '.H'
ENDIF
IF ! File( Files[1] )
IF MyMsgYesNo( 'File not found: ' + DBLQT + Files[1] + DBLQT + CRLF + 'Do you want to create an empty file?' )
QPM_CreateNewFile( 'HEA', Files[1] )
ELSE
RETURN .F.
ENDIF
ENDIF
ENDIF
FOR x := 1 TO Len ( Files )
Exists := .F.
Files[x] := ChgPathToRelative( Files[x] )
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF US_Upper( AllTrim( Files[x] ) ) == US_Upper( AllTrim( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) ) )
Exists := .T.
EXIT
ENDIF
NEXT i
IF ! Exists
VentanaMain.GHeaFiles.AddItem( { PUB_nGridImgNone, US_FileNameOnlyNameAndExt( Files[x] ), Files[x], '0', '', '' } )
IF ! Empty( cLastGlobalSearch )
IF GlobalSearch2( 'HEA', cLastGlobalSearch, VentanaMain.GHeaFiles.ItemCount, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( 'HEA', +1 )
ENDIF
ENDIF
IF AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) ) } ) == 0
AAdd( vExtraFoldersForSearchHB, US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) )
ENDIF
IF AScan( vExtraFoldersForSearchC, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) ) } ) == 0
AAdd( vExtraFoldersForSearchC, US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) )
ENDIF
ENDIF
NEXT x
IF VentanaMain.GHeaFiles.Value == 0
VentanaMain.GHeaFiles.Value := 1
ENDIF
DoMethod( 'VentanaMain', 'GHeaFiles', 'ColumnsAutoFitH' )
QPM_CheckFiles()
RETURN .T.
FUNCTION QPM_AddFilesPAN
RETURN QPM_Wait( 'QPM_AddFilesPAN2()', 'Loading ...' )
FUNCTION QPM_AddFilesPAN2()
LOCAL Files, x, i, Exists
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
// SetMGWaitHide()
Files := QPM_GetFilesPAN()
IF Len( Files ) == 1
IF ! ( US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'FMG' )
Files[1] := Files[1] + '.FMG'
ENDIF
IF ! File( Files[1] )
IF MyMsgYesNo( 'File not found: ' + DBLQT + Files[1] + DBLQT + CRLF + 'Do you want to create an empty file?' )
IF ! QPM_CreateNewFile( 'PAN', Files[1] )
RETURN .F.
ENDIF
ELSE
RETURN .F.
ENDIF
ENDIF
ENDIF
// SetMGWaitShow()
FOR x := 1 TO Len ( Files )
Exists := .F.
IF SubStr( US_FileNameOnlyPath( Files[x] ), 2, 2 ) == ':' + DEF_SLASH .AND. Len( US_FileNameOnlyPath( Files[x] ) ) == 3
MsgStop( 'Components located in a root folder will not work correctly in QPM: ' + Files[ x ] )
EXIT
ENDIF
Files[x] := ChgPathToRelative( Files[x] )
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
IF US_Upper( AllTrim( Files[x] ) ) == US_Upper( AllTrim( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) ) )
Exists := .T.
EXIT
ENDIF
NEXT i
IF ! Exists
VentanaMain.GPanFiles.AddItem( { PUB_nGridImgNone, US_FileNameOnlyNameAndExt( Files[x] ), Files[x], '0', '', '' } )
IF ! Empty( cLastGlobalSearch )
IF GlobalSearch2( 'PAN', cLastGlobalSearch, VentanaMain.GPanFiles.ItemCount, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( 'PAN', +1 )
ENDIF
ENDIF
IF AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) ) } ) == 0
AAdd( vExtraFoldersForSearchHB, US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) )
ENDIF
ENDIF
NEXT x
IF VentanaMain.GPanFiles.Value == 0
VentanaMain.GPanFiles.Value := 1
ENDIF
DoMethod( 'VentanaMain', 'GPanFiles', 'ColumnsAutoFitH' )
QPM_CheckFiles()
RETURN .T.
FUNCTION QPM_AddFilesDBF
RETURN QPM_Wait( 'QPM_AddFilesDBF2()', 'Loading ...' )
FUNCTION QPM_AddFilesDBF2()
LOCAL Files, x, i, Exists
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
// SetMGWaitHide()
Files := QPM_GetFilesDBF()
// SetMGWaitShow()
IF Len( Files ) == 1
IF ! ( US_Upper( US_FileNameOnlyExt( Files[1] ) ) == 'DBF' )
Files[1] := Files[1] + '.dbf'
ENDIF
IF ! File( Files[1] )
IF MyMsgYesNo( 'File not found: ' + DBLQT + Files[1] + DBLQT + CRLF + 'Do you want to create an empty file?' )
IF ! QPM_CreateNewFile( 'DBF', Files[1] )
RETURN .F.
ENDIF
ELSE
RETURN .F.
ENDIF
ENDIF
ENDIF
FOR x := 1 TO Len ( Files )
Exists := .F.
Files[x] := ChgPathToRelative( Files[x] )
FOR i := 1 TO VentanaMain.GDbfFiles.ItemCount
IF US_Upper( AllTrim( Files[x] ) ) == US_Upper( AllTrim( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFFULLNAME ) ) )
Exists := .T.
EXIT
ENDIF
NEXT i
IF ! Exists
VentanaMain.GDbfFiles.AddItem( { PUB_nGridImgNone, US_FileNameOnlyNameAndExt( Files[x] ), Files[x], '0 0', '', '0 ** 0' } )
IF ! Empty( cLastGlobalSearch )
IF GlobalSearch2( 'DBF', cLastGlobalSearch, VentanaMain.GDbfFiles.ItemCount, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( 'DBF', +1 )
ENDIF
ENDIF
ENDIF
NEXT x
IF VentanaMain.GDbfFiles.Value == 0
VentanaMain.GDbfFiles.Value := 1
ENDIF
DoMethod( 'VentanaMain', 'GDbfFiles', 'ColumnsAutoFitH' )
QPM_CheckFiles()
RETURN .T.
FUNCTION QPM_AddFilesLIB
RETURN QPM_Wait( 'QPM_AddFilesLIB2()', 'Loading ...' )
FUNCTION QPM_AddFilesLIB2()
LOCAL Files, x, i, Exists
SetMGWaitHide()
Files := QPM_GetFilesLIB()
SetMGWaitShow()
FOR x := 1 TO Len( Files )
Exists := .F.
Files[x] := ChgPathToRelative( Files[x] )
FOR i := 1 TO VentanaMain.GIncFiles.ItemCount
IF US_Upper( AllTrim( Files[x] ) ) == US_Upper( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 3 ) )
Exists := .T.
EXIT
ENDIF
NEXT i
IF ! Exists
VentanaMain.GIncFiles.AddItem( { PUB_nGridImgNone, US_FileNameOnlyNameAndExt( Files[x] ), '* * ' + Files[x] } )
LibPos( VentanaMain.GIncFiles.ItemCount, '*Last*' )
IF ! Empty( cLastGlobalSearch )
IF GlobalSearch2( 'LIB', cLastGlobalSearch, VentanaMain.GIncFiles.ItemCount, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( 'LIB', +1 )
ENDIF
ENDIF
IF AScan( &('vExtraFoldersForLibs' + GetSuffix() ), { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) ) } ) == 0
AAdd( &('vExtraFoldersForLibs' + GetSuffix() ), US_Upper( US_FileNameOnlyPath( ChgPathToReal( Files[x] ) ) ) )
ENDIF
ENDIF
NEXT x
IF VentanaMain.GIncFiles.ItemCount == 1
VentanaMain.GIncFiles.Value := 1
ENDIF
DoMethod( 'VentanaMain', 'GIncFiles', 'ColumnsAutoFitH' )
QPM_CheckFiles()
RETURN .T.
FUNCTION QPM_AddExcludeFilesLIB
LOCAL Files, x, i, Exists
Files := QPM_GetExcludeFilesLIB( )
FOR x := 1 TO Len ( Files )
Exists := .F.
FOR i := 1 TO VentanaMain.GExcFiles.ItemCount
IF US_Upper( Files[x] ) == US_Upper( GetProperty( 'VentanaMain', 'GExcFiles', 'Cell', i, NCOLEXCNAME ) )
Exists := .T.
EXIT
ENDIF
NEXT
IF ! Exists
VentanaMain.GExcFiles.AddItem( { PUB_nGridImgNone, Files[x] } )
ENDIF
NEXT
DoMethod( 'VentanaMain', 'GExcFiles', 'ColumnsAutoFitH' )
RETURN .T.
#ifdef QPM_SHG
FUNCTION QPM_AddFilesHLP()
LOCAL cAuxTopic := '', cAuxNick := ''
IF SHG_BaseOK
// SetMGWaitHide()
IF SHG_InputTopic( @cAuxTopic, @cAuxNick )
// SetMGWaitShow()
VentanaMain.GHlpFiles.AddItem( { 0, cAuxTopic, cAuxNick, '0', 'E' } )
GridImage( 'VentanaMain', 'GHlpFiles', VentanaMain.GHlpFiles.ItemCount, NCOLHLPSTATUS, '+', PUB_nGridImgHlpPage )
SHG_AddRecord( 'P', VentanaMain.GHlpFiles.ItemCount, cAuxTopic, cAuxNick, 'New Topic!' )
VentanaMain.GHlpFiles.Value := VentanaMain.GHlpFiles.ItemCount
DoMethod( 'VentanaMain', 'GHlpFiles', 'ColumnsAutoFitH' )
// ELSE
// SetMGWaitShow()
ENDIF
ELSE
MsgInfo( "Help Database hasn't been selected." + CRLF + "Use Open button to open or create a Help Database." )
ENDIF
RETURN .T.
#endif
FUNCTION QPM_EditPRG
LOCAL Editor, Rs, i, vAux := {}
LOCAL EditControlFile, RunParms, cLineCmd, cLineFile
#ifdef QPM_HOTRECOVERY
LOCAL HotRecoveryControlFile
#endif
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF VentanaMain.GPrgFiles.Value < 1
MsgStop( 'No file has been selected.' )
RETURN .F.
ENDIF
IF ! File( i := ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) ) )
MsgStop( 'File not found: ' + i )
RETURN .F.
ENDIF
IF Empty( Gbl_Text_Editor )
MyMsg( 'Operation Aborted', 'Editor is not defined.' + CRLF + ' Look at ' + PUB_MenuGblOptions + ' of Settings menu.', 'E', bAutoEXIT )
RETURN .F.
ENDIF
IF ! File( Editor := ChgPathToReal( AllTrim( Gbl_Text_Editor ) ) )
MsgStop( 'Editor not found: ' + AllTrim( Gbl_Text_Editor ) + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
RETURN .F.
ENDIF
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'Edit PRG ' + i + CRLF )
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
IF GridImage( 'VentanaMain', 'GPrgFiles', VentanaMain.GPrgFiles.Value, NCOLPRGSTATUS, '?', PUB_nGridImgEdited )
MsgInfo( 'The file is already open.' )
RETURN .F.
ENDIF
GridImage( 'VentanaMain', 'GPrgFiles', VentanaMain.GPrgFiles.Value, NCOLPRGSTATUS, '+', PUB_nGridImgEdited )
VentanaMain.RichEditPrg.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditPrg.FontColor := DEF_COLORFONTEXTERNALEDIT
EditControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'ECF' + US_DateTimeCen() + '.cnt'
#ifdef QPM_HOTRECOVERY
HotRecoveryControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'SrcHOTRecovery' + US_DateTimeCen() + '.hot'
US_FileCopy( i, HotRecoveryControlFile )
SetFDaTi( HotRecoveryControlFile, US_FileDate( i ), US_FileTime( i ) )
SetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGRECOVERY, HotRecoveryControlFile )
IF _IsControlDefined( 'HR_GridItemTargetPRG', 'WinHotRecovery' )
GridImage( 'WinHotRecovery', 'HR_GridItemTargetPRG', GetProperty( 'VentanaMain', 'GPrgFiles', 'Value' ), DEF_N_ITEM_COLIMAGE, '+', PUB_nGridImgEdited )
ENDIF
#endif
SetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGEDIT, EditControlFile )
RunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RP' + US_DateTimeCen() + '.cng'
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_MemoWrit( RunParms, 'Run Parms For ' + i + CRLF + ;
"COMMAND " + cLineCmd + " " + cLineFile + CRLF + ;
'CONTROL ' + EditControlFile + CRLF )
QPM_MemoWrit( EditControlFile, 'Edit Control File For ' + i )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + RunParms )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( RunParms ) + CRLF )
ENDIF
ENDIF
IF ( Rs := AScan( vSinLoadWindow, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) ) ) } ) ) > 0 // Para Forzar Scan de PRG en busca de xREF con FMG
ADel( vSinLoadWindow, Rs ) // Para Forzar Scan de PRG en busca de xREF con FMG
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder+DEF_SLASH + 'QPM.log' ) + 'xRefPrgFmg Delete ' + GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) + ' from vSinLoadWindow by Edit' + CRLF )
ENDIF
ENDIF
IF ( Rs := AScan( vSinInclude, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) ) ) } ) ) > 0 // Para Forzar Scan de PRG en busca de xREF con Header
ADel( vSinInclude, Rs ) // Para Forzar Scan de PRG en busca de xREF con HEA
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgHea Delete ' + GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) + ' from vSinInclude by Edit' + CRLF )
ENDIF
ENDIF
/* limpio las ocurrencias del prg dentro de xref con header */
FOR i := 1 TO Len( vXRefPrgHea )
IF ! ( US_Word( vXRefPrgHea[i], 1 ) == US_Upper( US_FileNameOnlyNameAndExt( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) ) ) )
AAdd( vAux, vXRefPrgHea[i] )
ENDIF
NEXT
vXRefPrgHea := {}
FOR i := 1 TO Len( vAux )
AAdd( vXRefPrgHea, vAux[i] )
NEXT
/* fin limpio las ocurrencias del prg */
vAux := {}
/* limpio las ocurrencias del prg dentro de xref con form */
FOR i := 1 TO Len( vXRefPrgFmg )
IF ! ( US_Word( vXRefPrgFmg[i], 1 ) == US_Upper( US_FileNameOnlyNameAndExt( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) ) ) )
AAdd( vAux, vXRefPrgFmg[i] )
ENDIF
NEXT
vXRefPrgFmg := {}
FOR i := 1 TO Len( vAux )
AAdd( vXRefPrgFmg, vAux[i] )
NEXT
/* fin limpio las ocurrencias del prg */
RETURN .T.
FUNCTION QPM_EditPPO
LOCAL Editor, i, cLineCmd, cLineFile
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF VentanaMain.GPrgFiles.Value < 1
MsgStop( 'No file has been selected.' )
RETURN .F.
ENDIF
IF ! File( i := ChgPathToReal( GetObjFolder() + DEF_SLASH + US_FileNameOnlyName( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGNAME ) ) + '.ppo' ) )
MsgStop( 'File not found: ' + i )
RETURN .F.
ENDIF
IF Empty( Gbl_Text_Editor )
MyMsg( 'Operation Aborted', 'Editor is not defined.' + CRLF + ' Look at ' + PUB_MenuGblOptions + ' of Settings menu.', 'E', bAutoEXIT )
RETURN .F.
ENDIF
IF ! File( Editor := ChgPathToReal( AllTrim( Gbl_Text_Editor ) ) )
MsgStop( 'Editor not found: ' + AllTrim( Gbl_Text_Editor ) + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
RETURN .F.
ENDIF
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'Edit PPO ' + i + CRLF )
ENDIF
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
RETURN .T.
FUNCTION QPM_EditHEA
LOCAL Editor, i
LOCAL EditControlFile, RunParms, cLineCmd, cLineFile
#ifdef QPM_HOTRECOVERY
LOCAL HotRecoveryControlFile
#endif
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF VentanaMain.GHeaFiles.Value < 1
MsgStop( 'No file has been selected.' )
RETURN .F.
ENDIF
IF ! File( i := ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.Value, NCOLHEAFULLNAME ) ) )
MsgStop( 'File not found: ' + i )
RETURN .F.
ENDIF
IF Empty( Gbl_Text_Editor )
MyMsg( 'Operation Aborted', 'Editor is not defined.' + CRLF + ' Look at ' + PUB_MenuGblOptions + ' of Settings menu.', 'E', bAutoEXIT )
RETURN .F.
ENDIF
IF ! File( Editor := ChgPathToReal( AllTrim( Gbl_Text_Editor ) ) )
MsgStop( 'Editor not found: ' + AllTrim( Gbl_Text_Editor ) + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
RETURN .F.
ENDIF
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'Edit Header ' + i + CRLF )
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
IF GridImage( 'VentanaMain', 'GHeaFiles', VentanaMain.GHeaFiles.Value, NCOLHEASTATUS, '?', PUB_nGridImgEdited )
MsgInfo( 'The file is already open.' )
RETURN .F.
ENDIF
GridImage( 'VentanaMain', 'GHeaFiles', VentanaMain.GHeaFiles.Value, NCOLHEASTATUS, '+', PUB_nGridImgEdited )
VentanaMain.RichEditHea.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditHea.FontColor := DEF_COLORFONTEXTERNALEDIT
EditControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'ECF' + US_DateTimeCen() + '.cnt'
#ifdef QPM_HOTRECOVERY
HotRecoveryControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'HeaHOTRecovery' + US_DateTimeCen() + '.hot'
US_FileCopy( i, HotRecoveryControlFile )
SetFDaTi( HotRecoveryControlFile, US_FileDate( i ), US_FileTime( i ) )
SetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.Value, NCOLHEARECOVERY, HotRecoveryControlFile )
IF _IsControlDefined( 'HR_GridItemTargetHea', 'WinHotRecovery' )
GridImage( 'WinHotRecovery', 'HR_GridItemTargetHea', GetProperty( 'VentanaMain', 'GHeaFiles', 'Value' ), DEF_N_ITEM_COLIMAGE, '+', PUB_nGridImgEdited )
ENDIF
#endif
SetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.Value, NCOLHEAEDIT, EditControlFile )
RunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RP' + US_DateTimeCen() + '.cng'
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_MemoWrit( RunParms, 'Run Parms For ' + i + CRLF + ;
"COMMAND " + cLineCmd + " " + cLineFile + CRLF + ;
'CONTROL ' + EditControlFile )
QPM_MemoWrit( EditControlFile, 'Edit Control File For ' + i )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + RunParms )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( RunParms ) + CRLF )
ENDIF
ENDIF
RETURN .T.
FUNCTION QPM_EditPAN( bForceEditor )
LOCAL Editor, toolMake, ToolAux, i
LOCAL EditControlFile, RunParms, cLineCmd, cLineFile
#ifdef QPM_HOTRECOVERY
LOCAL HotRecoveryControlFile
#endif
IF Empty( bForceEditor )
bForceEditor := .F.
ENDIF
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF VentanaMain.GPanFiles.Value < 1
MsgStop( 'No file has been selected.' )
RETURN .F.
ENDIF
IF ! File( i := ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANFULLNAME ) ) )
MsgStop( 'File not found: ' + i )
RETURN .F.
ENDIF
IF bForceEditor
ToolAux := 'EDITOR'
ELSE
IF Prj_Radio_FormTool == DEF_RG_EDITOR
IF US_Word( toolMake := CheckMakeForm( US_ShortName( i ) ), 1 ) == 'UNKNOWN'
ToolAux := 'EDITOR'
ELSE
ToolAux := US_Word( toolMake, 1 )
IF ToolAux == 'IDE' /* Todavia no soportada */
ToolAux := 'HMGSIDE' /* Todavia no soportada */
ENDIF
ENDIF
ELSE
ToolAux := cFormTool()
ENDIF
ENDIF
DO CASE
CASE ToolAux == 'EDITOR'
IF Empty( Gbl_Text_Editor )
MyMsg( 'Operation Aborted', 'Editor is not defined.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.', 'E', bAutoEXIT )
RETURN .F.
ENDIF
IF ! File( Editor := ChgPathToReal( AllTrim( Gbl_Text_Editor ) ) )
MsgStop( 'Editor not found: ' + AllTrim( Gbl_Text_Editor ) + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
RETURN .F.
ENDIF
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'Edit PAN ' + i + CRLF )
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
IF GridImage( 'VentanaMain', 'GPanFiles', VentanaMain.GPanFiles.Value, NCOLPANSTATUS, '?', PUB_nGridImgEdited )
MsgInfo( 'The file is already open.' )
RETURN .F.
ENDIF
GridImage( 'VentanaMain', 'GPanFiles', VentanaMain.GPanFiles.Value, NCOLPANSTATUS, '+', PUB_nGridImgEdited )
VentanaMain.RichEditPan.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditPan.FontColor := DEF_COLORFONTEXTERNALEDIT
EditControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'ECF' + US_DateTimeCen() + '.cnt'
#ifdef QPM_HOTRECOVERY
HotRecoveryControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'PanHOTRecovery' + US_DateTimeCen() + '.hot'
US_FileCopy( i, HotRecoveryControlFile )
SetFDaTi( HotRecoveryControlFile, US_FileDate( i ), US_FileTime( i ) )
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANRECOVERY, HotRecoveryControlFile )
IF _IsControlDefined( 'HR_GridItemTargetPan', 'WinHotRecovery' )
GridImage( 'WinHotRecovery', 'HR_GridItemTargetPan', GetProperty( 'VentanaMain', 'GPanFiles', 'Value' ), DEF_N_ITEM_COLIMAGE, '+', PUB_nGridImgEdited )
ENDIF
#endif
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANEDIT, EditControlFile )
RunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RP' + US_DateTimeCen() + '.cng'
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_MemoWrit( RunParms, 'Run Parms For ' + i + CRLF + ;
"COMMAND " + cLineCmd + " " + cLineFile + CRLF + ;
'CONTROL ' + EditControlFile )
QPM_MemoWrit( EditControlFile, 'Edit Control File For ' + i )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + RunParms )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( RunParms ) + CRLF )
ENDIF
ENDIF
CASE ToolAux == 'HMI' .OR. ToolAux == "OOHG"
IF Empty( Gbl_Text_HMI )
MyMsg( 'Operation Aborted', 'Form tool is not defined.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.', 'E', bAutoEXIT )
RETURN .F.
ENDIF
IF ! File( Editor := ChgPathToReal( AllTrim( Gbl_Text_HMI ) ) )
MsgStop( 'Form tool not found: ' + AllTrim( Gbl_Text_HMI ) + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
RETURN .F.
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
IF GridImage( 'VentanaMain', 'GPanFiles', VentanaMain.GPanFiles.Value, NCOLPANSTATUS, '?', PUB_nGridImgEdited )
MsgInfo( 'The file is already open.' )
RETURN .F.
ENDIF
IF ! ( US_Word( toolMake := CheckMakeForm( US_ShortName( i ) ), 1 ) == 'HMI' .OR. US_Word( toolMake, 1 ) == "OOHG" )
IF US_Upper( US_Word( toolMake, 1 ) ) == 'UNKNOWN'
IF ! MyMsgYesNo( 'Form was built with tool: ' + DBLQT + toolMake + DBLQT + '.' + CRLF + 'Do you want to edit with ' + DBLQT + 'OOHG IDE+' + DBLQT + '?' )
RETURN .F.
ENDIF
ELSE
MsgStop( 'Form was built with tool ' + DBLQT + toolMake + DBLQT + '.' + CRLF + 'The selected tool, ' + DBLQT + 'OOHG IDE+' + DBLQT + ', is not compatible.' )
RETURN .F.
ENDIF
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
GridImage( 'VentanaMain', 'GPanFiles', VentanaMain.GPanFiles.Value, NCOLPANSTATUS, '+', PUB_nGridImgEdited )
VentanaMain.RichEditPan.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditPan.FontColor := DEF_COLORFONTEXTERNALEDIT
EditControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'ECF' + US_DateTimeCen() + '.cnt'
#ifdef QPM_HOTRECOVERY
HotRecoveryControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'PanHOTRecovery' + US_DateTimeCen() + '.hot'
US_FileCopy( i, HotRecoveryControlFile )
SetFDaTi( HotRecoveryControlFile, US_FileDate( i ), US_FileTime( i ) )
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANRECOVERY, HotRecoveryControlFile )
IF _IsControlDefined( 'HR_GridItemTargetPan', 'WinHotRecovery' )
GridImage( 'WinHotRecovery', 'HR_GridItemTargetPan', GetProperty( 'VentanaMain', 'GPanFiles', 'Value' ), DEF_N_ITEM_COLIMAGE, '+', PUB_nGridImgEdited )
ENDIF
#endif
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANEDIT, EditControlFile )
RunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RP' + US_DateTimeCen() + '.cng'
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_MemoWrit( RunParms, 'Run Parms For ' + i + CRLF + ;
"COMMAND " + cLineCmd + " " + cLineFile + CRLF + ;
'CONTROL ' + EditControlFile )
QPM_MemoWrit( EditControlFile, 'Edit Control File For ' + i )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + RunParms )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( RunParms ) + CRLF )
ENDIF
ENDIF
ENDIF
CASE ToolAux == 'HMGSIDE'
IF Empty( Gbl_Text_HMGSIDE )
MyMsg( 'Operation Aborted', 'Form tool is not defined.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.', 'E', bAutoEXIT )
RETURN .F.
ENDIF
IF ! File( Editor := ChgPathToReal( AllTrim( Gbl_Text_HMGSIDE ) ) )
MsgStop( 'Form tool not found: ' + AllTrim( Gbl_Text_HMGSIDE ) + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
RETURN .F.
ENDIF
IF GridImage( 'VentanaMain', 'GPanFiles', VentanaMain.GPanFiles.Value, NCOLPANSTATUS, '?', PUB_nGridImgEdited )
MsgInfo( 'The file is already open.' )
RETURN .F.
ENDIF
IF ! ( US_Word( toolMake := CheckMakeForm( US_ShortName( i ) ), 1 ) == 'HMGSIDE' )
IF ! ( US_Upper( US_Word( toolMake, 1 ) ) == 'HMI' .OR. US_Upper( US_Word( toolMake, 1 ) ) == 'OOHG' )
IF ! MyMsgYesNo( 'Form was built with tool: ' + DBLQT + toolMake + DBLQT + '.' + CRLF + 'Do you want to edit with ' + DBLQT + 'HMGSIDE' + DBLQT + '?' )
RETURN .F.
ENDIF
ELSE
MsgStop( 'Form was built with tool: ' + DBLQT + toolMake + DBLQT + '.' + CRLF + 'The selected tool, ' + DBLQT + 'HMGSIDE' + DBLQT + ', is not compatible.' )
RETURN .F.
ENDIF
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
GridImage( 'VentanaMain', 'GPanFiles', VentanaMain.GPanFiles.Value, NCOLPANSTATUS, '+', PUB_nGridImgEdited )
VentanaMain.RichEditPan.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditPan.FontColor := DEF_COLORFONTEXTERNALEDIT
EditControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'ECF' + US_DateTimeCen() + '.cnt'
#ifdef QPM_HOTRECOVERY
HotRecoveryControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'PanHOTRecovery' + US_DateTimeCen() + '.hot'
US_FileCopy( i, HotRecoveryControlFile )
SetFDaTi( HotRecoveryControlFile, US_FileDate( i ), US_FileTime( i ) )
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANRECOVERY, HotRecoveryControlFile )
IF _IsControlDefined( 'HR_GridItemTargetPan', 'WinHotRecovery' )
GridImage( 'WinHotRecovery', 'HR_GridItemTargetPan', GetProperty( 'VentanaMain', 'GPanFiles', 'Value' ), DEF_N_ITEM_COLIMAGE, '+', PUB_nGridImgEdited )
ENDIF
#endif
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANEDIT, EditControlFile )
RunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RP' + US_DateTimeCen() + '.cng'
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_MemoWrit( RunParms, 'Run Parms For ' + i + CRLF + ;
"COMMAND " + cLineCmd + " " + cLineFile + CRLF + ;
'CONTROL ' + EditControlFile )
QPM_MemoWrit( EditControlFile, 'Edit Control File For ' + i )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + RunParms )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( RunParms ) + CRLF )
ENDIF
ENDIF
OTHERWISE
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'Edit PAN ' + i + CRLF + 'Form tool is not supported: ' + ToolAux + CRLF )
ENDIF
MsgInfo( 'Form tool is not supported: ' + ToolAux )
ENDCASE
RETURN .T.
FUNCTION QPM_EditDBF()
LOCAL EditControlFile, RunParms, cLineCmd, Editor, i, cLineFile
IF GridImage( 'VentanaMain', 'GDbfFiles', VentanaMain.GDbfFiles.Value, NCOLDBFSTATUS, '?', PUB_nGridImgEdited )
MsgInfo( 'The file is already open.' )
RETURN .F.
ENDIF
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF VentanaMain.GDbfFiles.Value < 1
MsgStop( 'No file has been selected.' )
RETURN .F.
ENDIF
IF ! File( i := ChgPathToReal( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFFULLNAME ) ) )
MsgStop( 'File not found: ' + i )
RETURN .F.
ENDIF
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'Edit DBF ' + i + CRLF )
ENDIF
IF Prj_Radio_DbfTool == DEF_RG_DBFTOOL
IF ! File( Editor := ChgPathToReal( AllTrim( PUB_cQPM_Folder ) + DEF_SLASH + 'US_DBFVIEW.exe' ) )
MsgStop( 'Editor not found: ' + Editor + CRLF + 'Reinstall QPM.' )
RETURN .F.
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
GridImage( 'VentanaMain', 'GDbfFiles', VentanaMain.GDbfFiles.Value, NCOLDBFSTATUS, '+', PUB_nGridImgEdited )
VentanaMain.RichEditDbf.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditDbf.FontColor := DEF_COLORFONTEXTERNALEDIT
CloseDbfAutoView()
DefineRichEditForNotDbfView( 'DBF Open with QPM tool!' )
EditControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'ECF' + US_DateTimeCen() + '.cnt'
SetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFEDIT, EditControlFile )
RunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RP' + US_DateTimeCen() + '.cng'
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_MemoWrit( RunParms, 'Run Parms For ' + i + CRLF + ;
"COMMAND " + cLineCmd + " " + cLineFile + CRLF + ;
'CONTROL ' + EditControlFile )
QPM_MemoWrit( EditControlFile, 'Edit Control File For ' + i )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + RunParms )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( RunParms ) + CRLF )
ENDIF
ENDIF
ELSE // 'OTHER'
IF Empty( Gbl_Text_DBF )
MyMsg( 'Operation Aborted', 'DBF tool is not defined.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.', 'E', bAutoEXIT )
RETURN .F.
ENDIF
IF ! File( Editor := ChgPathToReal( AllTrim( Gbl_Text_DBF ) ) )
MsgStop( 'DBF tool not found: ' + AllTrim( Gbl_Text_DBF ) + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
RETURN .F.
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := i
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( i )
ENDIF
QPM_Execute( cLineCmd, cLineFile )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
GridImage( 'VentanaMain', 'GDbfFiles', VentanaMain.GDbfFiles.Value, NCOLDBFSTATUS, '+', PUB_nGridImgEdited )
VentanaMain.RichEditDbf.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditDbf.FontColor := DEF_COLORFONTEXTERNALEDIT
CloseDbfAutoView()
DefineRichEditForNotDbfView( 'DBF Open with external tool!' )
EditControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'ECF' + US_DateTimeCen() + '.cnt'
SetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFEDIT, EditControlFile )
RunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RP' + US_DateTimeCen() + '.cng'
IF bEditorLongName
cLineCmd := Editor
cLineFile := Gbl_Comillas_DBF + i + Gbl_Comillas_DBF
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := Gbl_Comillas_DBF + US_ShortName( i ) + Gbl_Comillas_DBF
ENDIF
QPM_MemoWrit( RunParms, 'Run Parms For ' + i + CRLF + ;
"COMMAND " + cLineCmd + " " + cLineFile + CRLF + ;
'CONTROL ' + EditControlFile )
QPM_MemoWrit( EditControlFile, 'Edit Control File For ' + i )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + RunParms )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( RunParms ) + CRLF )
ENDIF
ENDIF
ENDIF
RETURN .T.
#ifdef QPM_SHG
FUNCTION QPM_EditHLP()
LOCAL cAuxTopic := '', cAuxNick
IF VentanaMain.GHlpFiles.Value == 1
MsgInfo( "Global foot can't be edited, it's a System's topic!" )
RETURN .T.
ENDIF
IF VentanaMain.GHlpFiles.Value > 1
cAuxTopic := AllTrim( GetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', VentanaMain.GHlpFiles.Value, NCOLHLPTOPIC ) )
cAuxNick := AllTrim( GetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', VentanaMain.GHlpFiles.Value, NCOLHLPNICK ) )
IF SHG_InputTopic( @cAuxTopic, @cAuxNick )
SetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', VentanaMain.GHlpFiles.Value, NCOLHLPTOPIC, cAuxTopic )
SetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', VentanaMain.GHlpFiles.Value, NCOLHLPNICK, cAuxNick )
DoMethod( 'VentanaMain', 'GHlpFiles', 'ColumnsAutoFitH' )
SHG_SetField( 'SHG_TOPICT', VentanaMain.GHlpFiles.Value, cAuxTopic )
SHG_SetField( 'SHG_NICKT', VentanaMain.GHlpFiles.Value, cAuxNick )
IF ! ( AllTrim( cAuxTopic ) == SHG_GetField( 'SHG_TOPIC', VentanaMain.GHlpFiles.Value ) ) .OR. ;
! ( AllTrim( cAuxTopic ) == SHG_GetField( 'SHG_TOPIC', VentanaMain.GHlpFiles.Value ) )
SetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', VentanaMain.GHlpFiles.Value, NCOLHLPEDIT, 'D' )
ENDIF
ENDIF
ENDIF
RETURN .T.
#endif
#ifdef QPM_SHG
FUNCTION QPM_EditKeyHLP()
LOCAL cAux, MemoAux := '', i
IF VentanaMain.GHlpKeys.Value > 0
cAux := InputBox( 'Key:', 'Keys For Help', AllTrim( VentanaMain.GHlpKeys.Cell( VentanaMain.GHlpKeys.Value, 1 ) ) )
IF ! Empty( cAux )
VentanaMain.GHlpKeys.Cell( VentanaMain.GHlpKeys.Value, 1 ) := cAux
DoMethod( 'VentanaMain', 'GHlpKeys', 'ColumnsAutoFitH' )
FOR i := 1 TO VentanaMain.GHlpKeys.ItemCount
MemoAux := MemoAux + iif( i > 1, CRLF, '' ) + VentanaMain.GHlpKeys.Cell( i, 1 )
NEXT
SHG_SetField( 'SHG_KEYST', VentanaMain.GHlpFiles.Value, MemoAux )
ENDIF
ENDIF
RETURN .T.
#endif
FUNCTION QPM_EditRES
LOCAL Editor, FileRC, Alt_RC
LOCAL EditControlFile, RunParms, cLineCmd, cLineFile
#ifdef QPM_HOTRECOVERY
LOCAL HotRecoveryControlFile
#endif
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF VentanaMain.GPrgFiles.ItemCount < 1
MsgStop( DBLQT + 'Top File' + DBLQT + ' is not defined.' + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF Empty( Gbl_Text_Editor )
MyMsg( 'Operation Aborted', 'Editor is not defined.' + CRLF + ' Look at ' + PUB_MenuGblOptions + ' of Settings menu.', 'E', bAutoEXIT )
RETURN .F.
ENDIF
IF ! File( Editor := ChgPathToReal( AllTrim( Gbl_Text_Editor ) ) )
MsgStop( 'Editor not found: ' + AllTrim( Gbl_Text_Editor ) + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
RETURN .F.
ENDIF
FileRC := US_FileNameOnlyPathAndName( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) ) + '.RC'
IF ! File( FileRC )
Alt_RC := PUB_cProjectFolder + DEF_SLASH + US_FileNameOnlyName( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) ) + '.RC'
IF File( Alt_RC )
FileRC := Alt_RC
ELSE
IF ! MyMsgYesNo( 'Main resources file not found' + CRLF + ;
'at: ' + DBLQT + FileRC + DBLQT + CRLF + ;
'nor at: ' + DBLQT + Alt_RC + DBLQT + CRLF + ;
'Do you want to create an empty file?' )
RETURN .F.
ENDIF
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'New RC ' + FileRC + CRLF )
ENDIF
QPM_MemoWrit( FileRC, 'MAIN ICON .' + DEF_SLASH + 'RESOURCES' + DEF_SLASH + 'MAIN.ICO' )
MsgInfo( "Main resource file was created:" + CRLF + DBLQT + FileRC + DBLQT )
ENDIF
ENDIF
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'Edit RC ' + FileRC + CRLF )
ENDIF
IF bSuspendControlEdit
IF bEditorLongName
cLineCmd := Editor
cLineFile := FileRC
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( FileRC )
ENDIF
VentanaMain.BEditRC.Enabled := .F.
QPM_Execute( cLineCmd, cLineFile )
VentanaMain.BEditRC.Enabled := .T.
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "COMMAND " + cLineCmd + CRLF + "FILE " + cLineFile + CRLF )
ENDIF
ELSE
IF ! Empty( cEditControlFileRC )
MsgInfo( 'The file is already open.' )
RETURN .F.
ENDIF
VentanaMain.RichEditPAN.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditPAN.FontColor := DEF_COLORFONTEXTERNALEDIT
EditControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'ECF' + US_DateTimeCen() + '.cnt'
#ifdef QPM_HOTRECOVERY
HotRecoveryControlFile := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'SrcHOTRecovery' + US_DateTimeCen() + '.hot'
US_FileCopy( FileRC, HotRecoveryControlFile )
SetFDaTi( HotRecoveryControlFile, US_FileDate( FileRC ), US_FileTime( FileRC ) )
HR_ControlFileRC := HotRecoveryControlFile
#endif
cEditControlFileRC := EditControlFile
RunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RP' + US_DateTimeCen() + '.cng'
IF bEditorLongName
cLineCmd := Editor
cLineFile := FileRC
ELSE
cLineCmd := US_ShortName( Editor )
cLineFile := US_ShortName( FileRC )
ENDIF
QPM_MemoWrit( RunParms, 'Run Parms For ' + FileRC + CRLF + ;
"COMMAND " + cLineCmd + " " + cLineFile + CRLF + ;
'CONTROL ' + EditControlFile )
QPM_MemoWrit( EditControlFile, 'Edit Control File For ' + FileRC )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + RunParms )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( RunParms ) + CRLF )
ENDIF
ENDIF
RETURN .T.
FUNCTION QPM_SetTopPRG
LOCAL i, vTop, vLine
i := VentanaMain.GPrgFiles.Value
IF i == 1 .OR. i == 0
RETURN .T.
ENDIF
vTop := VentanaMain.GPrgFiles.item( 1 )
vLine := VentanaMain.GPrgFiles.item( VentanaMain.GPrgFiles.Value )
VentanaMain.GPrgFiles.item( VentanaMain.GPrgFiles.Value ) := vTop
VentanaMain.GPrgFiles.item( 1 ) := vLine
VentanaMain.GPrgFiles.Value := 1
VentanaMain.GPrgFiles.SetFocus
MsgInfo( DBLQT + ChgPathToReal( vLine[NCOLPRGFULLNAME] ) + DBLQT + CRLF + "is the new project's " + DBLQT + "Top File" + DBLQT + "." )
CambioTitulo()
RETURN .T.
FUNCTION QPM_GetFilesPRG()
LOCAL RetVal := {}, BaseFolder, cAux
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN ( {} )
ENDIF
IF Prj_Radio_OutputType == DEF_RG_IMPORT .AND. GetProperty( 'VentanaMain', 'GPrgFiles', 'itemcount' ) > 0
MsgStop( 'The process to make an Interface Library allows only one source.' )
RETURN ( {} )
ENDIF
IF GetProperty( 'VentanaMain', 'GPrgFiles', 'Value' ) == 0
BaseFolder := PUB_cProjectFolder
ELSE
BaseFolder := US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', GetProperty( 'VentanaMain', 'GPrgFiles', 'Value' ), NCOLPRGFULLNAME ) ) )
ENDIF
IF Right( Basefolder, 1) != DEF_SLASH
BaseFolder := BaseFolder + DEF_SLASH
ENDIF
IF Prj_Radio_OutputType == DEF_RG_IMPORT
cAux := BugGetFile( { {'DLL file','*.DLL'} }, 'Select Input Files', BaseFolder, .F., .T. )
IF ! Empty( cAux )
AAdd( RetVal, cAux )
ENDIF
ELSE
RetVal := US_GetFile( { {'Source files (prg,c,cpp)','*.prg;*.c;*.cpp'}, {'Only PRG files','*.prg'}, {'Only C files','*.C'}, {'Only C++ files','*.CPP'}, {'Only C and C++ files','*.C;*.CPP'} }, 'Select Source or Input Files', BaseFolder, .T., .T. )
ENDIF
RETURN RetVal
FUNCTION QPM_GetFilesHEA()
LOCAL BaseFolder
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN ( {} )
ENDIF
IF GetProperty( 'VentanaMain', 'GHeaFiles', 'Value' ) == 0
BaseFolder := PUB_cProjectFolder
ELSE
BaseFolder := US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', GetProperty( 'VentanaMain', 'GHeaFiles', 'Value' ), NCOLHEAFULLNAME ) ) )
ENDIF
IF Right( Basefolder, 1 ) != DEF_SLASH
BaseFolder := BaseFolder + DEF_SLASH
ENDIF
RETURN US_GetFile( { {'Headers files (*.h and *.ch)','*.h;*.ch'} }, 'Select Headers Files', BaseFolder, .T., .T. )
FUNCTION QPM_GetFilesPAN()
LOCAL BaseFolder
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN ( {} )
ENDIF
IF GetProperty( 'VentanaMain', 'GPanFiles', 'Value' ) == 0
BaseFolder := PUB_cProjectFolder
ELSE
BaseFolder := US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', GetProperty( 'VentanaMain', 'GPanFiles', 'Value' ), NCOLPANFULLNAME ) ) )
ENDIF
IF Right( Basefolder, 1 ) != DEF_SLASH
BaseFolder := BaseFolder + DEF_SLASH
ENDIF
RETURN US_GetFile( { {'Forms files (*.FMG)','*.fmg'} }, 'Select Forms Files', BaseFolder, .T., .T. )
FUNCTION QPM_GetFilesDBF()
LOCAL BaseFolder
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN ( {} )
ENDIF
IF GetProperty( 'VentanaMain', 'GDbfFiles', 'Value' ) == 0
BaseFolder := PUB_cProjectFolder
ELSE
BaseFolder := US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', GetProperty( 'VentanaMain', 'GDbfFiles', 'Value' ), NCOLDBFFULLNAME ) ) )
ENDIF
IF Right( Basefolder, 1 ) != DEF_SLASH
BaseFolder := BaseFolder + DEF_SLASH
ENDIF
RETURN US_GetFile( { {'DBF files (*.DBF)', '*.dbf'} }, 'Select DBF files', BaseFolder, .T., .T. )
FUNCTION QPM_GetExcludeFilesLIB()
LOCAL RetVal := {}, i, vAux
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN ( {} )
ENDIF
QPM_CargoLibraries()
vAux := Array( Len( &( 'vLibDefault'+GetSuffix() ) ) )
ACopy( &( 'vLibDefault'+GetSuffix() ), vAux )
IF Prj_Check_Console
AAdd( vAux, GetMiniGuiName() )
ENDIF
ASort( vAux, NIL, NIL, { |x, y| US_Upper(x) < US_Upper( y ) } )
FOR i := Len( vAux ) TO 1 STEP -1
IF ! File( GetCppLibFolder() + DEF_SLASH + vAux[i] ) .AND. ! File( GetHarbourLibFolder() + DEF_SLASH + vAux[i] )
ADel( vAux, i )
ASize( vAux, Len( vAux ) - 1 )
ENDIF
NEXT i
DEFINE WINDOW GetExcludeLibFiles ;
AT 0,0 ;
WIDTH 310 HEIGHT 390 ;
TITLE 'Select library for exclude' ;
MODAL FONT 'Arial' SIZE 9
DEFINE LISTBOX List_1
ITEMS vAux
ROW 10
COL 10
WIDTH 280
HEIGHT 300
MULTISELECT .T.
END LISTBOX
DEFINE BUTTONEX OK
ROW 320
COL 45
CAPTION 'Ok'
ONCLICK ( RetVal := QPM_GetExcludeFilesOkLIB( vAux, GetExcludeLibFiles.List_1.Value ), DoMethod( 'GetExcludeLibFiles', 'Release' ) )
END BUTTONEX
DEFINE BUTTONEX CANCEL
ROW 320
COL 160
CAPTION 'Cancel'
ONCLICK ( RetVal := {}, DoMethod( 'GetExcludeLibFiles', 'Release' ) )
END BUTTONEX
END WINDOW
CENTER WINDOW GetExcludeLibFiles
ACTIVATE WINDOW GetExcludeLibFiles
RETURN ( RetVal )
FUNCTION QPM_GetExcludeFilesOkLIB( aFiles, aSelected )
LOCAL aNew := {}, i
FOR i := 1 TO Len( aSelected )
AAdd( aNew, aFiles[ aSelected[ i ] ] )
NEXT i
RETURN aNew
FUNCTION QPM_GetFilesLIB()
LOCAL RetVal := {}, cFolderAux
IF ! Empty( &( 'cLastLibFolder'+GetSuffix() ) ) .AND. US_IsDirectory( &( 'cLastLibFolder'+GetSuffix() ) )
cFolderAux := &( 'cLastLibFolder'+GetSuffix() )
ELSEIF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN ""
ELSE
cFolderAux := PUB_cProjectFolder
ENDIF
IF Prj_Radio_Cpp == DEF_RG_BORLAND .OR. Prj_Radio_Cpp == DEF_RG_PELLES
RetVal := BugGetFile( { {'Libs, objects and resources to include on concatenation (*.lib,*.obj,*.res)','*.lib;*obj;*res'}, {'Libs to include on concatenation (*.lib)','*.lib'}, {'Objects to include on concatenation (*.obj)','*.obj'}, {'Resources to include on concatenation (*.res)','*.res'} }, 'Libs, objects and resources to include on concatenation', cFolderAux, .T., .T. )
IF Len( RetVal ) > 0
&( 'cLastLibFolder'+GetSuffix() ) := US_FileNameOnlyPath( RetVal[ Len( RetVal ) ] )
ENDIF
ELSEIF Prj_Radio_Cpp == DEF_RG_MINGW
RetVal := BugGetFile( { {'Libs and objects to include on concatenation (lib*.a,*.o)','lib*.a;*.o'}, {'Libs to include on concatenation (lib*.a)','lib*.a'}, {'Objects to include on concatenation (*.o)','*.o'} }, 'Libs and objects to include on concatenation', cFolderAux, .T., .T. )
IF Len( RetVal ) > 0
&( 'cLastLibFolder'+GetSuffix() ) := US_FileNameOnlyPath( RetVal[ Len( RetVal ) ] )
ENDIF
ENDIF
RETURN ( RetVal )
FUNCTION QPM_OpenProject( cParmProjectFileName )
LOCAL Temp_SHG_Database
LOCAL Open_TmpCreateFile
LOCAL vProjectFileNameAux
LOCAL Open_FromFileType
LOCAL cFile
LOCAL Open_ProjectExt := '*.qac;*.qpm'
LOCAL Open_FilesExt := '*.prg;*.c;*.cpp;*.dll'
Prj_IsNew := .F.
// Save previous project
#ifdef QPM_SHG
IF ! QPM_WAIT( 'SHG_CheckSave()', 'Checking for save ...' )
RETURN .F.
ENDIF
IF SHG_BaseOk
IF US_FileSize( US_FileNameOnlyPathAndName( SHG_Database ) + '.dbt' ) > SHG_DbSize
QPM_Wait( 'SHG_PackDatabase()' )
ENDIF
ENDIF
#endif
QPM_Wait( 'QPM_SaveProject( .T. )', 'Checking for save ...' )
// Open or create
IF Empty( cParmProjectFileName )
CloseDbfAutoView()
// MultiSelect parameter is set to .T. because, sometimes, the function returned the filename even when the file didn't exists
vProjectFileNameAux := US_GetFile( { { 'Open/Create Project (' + Open_ProjectExt + ';' + Open_FilesExt + ')', Open_ProjectExt + ';' + Open_FilesExt }, { 'Open/Create Project Files (' + Open_ProjectExt + ')', Open_ProjectExt }, { 'Create Project For File (' + Open_FilesExt + ')', Open_FilesExt } }, 'Open or Create Project', cLastProjectFolder, .T., .T. )
cProjectFileName := iif( Len( vProjectFileNameAux ) == 0, '', vProjectFileNameAux[1] )
IF Empty( cProjectFileName )
QPM_Wait( "RichEditDisplay( 'DBF', .T., NIL, .F. )", 'DBF reloading ...' )
RETURN .F.
ENDIF
// Avoid projects with spaces in their names
IF " " $ ( cFile := US_FileNameOnlyNameAndExt( cProjectFileName ) )
MsgStop( "QPM can't handle filenames with spaces." + CRLF + DBLQT + cFile + DBLQT + ' will be renamed as: ' + DBLQT + ( cFile := StrTran( cFile, " ", "_" ) ) + DBLQT )
cProjectFileName := US_FileNameOnlyPath( cProjectFileName ) + DEF_SLASH + cFile
ENDIF
// Rename .qac to .qpm
IF US_Upper( US_FileNameOnlyExt( cProjectFileName ) ) == 'QAC'
frename( cProjectFileName, US_FileNameOnlyPathAndName( cProjectFileName ) + '.qpm' )
cProjectFileName := US_FileNameOnlyPathAndName( cProjectFileName ) + '.qpm'
ENDIF
// Process non project files
IF Empty( US_FileNameOnlyExt( cProjectFileName ) )
Open_FromFileType := 'QPM'
ELSE
Open_FromFileType := US_Upper( US_FileNameOnlyExt( cProjectFileName ) )
ENDIF
// Force .qpm extension
cProjectFileName := US_FileNameOnlyPathAndName( cProjectFileName ) + '.qpm'
// Use current folder IF none is already set
IF Empty( US_FileNameOnlyPath( cProjectFileName ) )
cProjectFileName := GetCurrentFolder() + DEF_SLASH + cProjectFileName
ENDIF
// Create new project
IF ! File( cProjectFileName )
IF ! MyMsgYesNo( 'Create new project ' + DBLQT + cProjectFileName + DBLQT + '?', 'Create Project' )
QPM_Wait( "RichEditDisplay( 'DBF', .T., NIL, .F. )", 'DBF reloading ...' )
RETURN .F.
ENDIF
Prj_IsNew := .T.
#ifdef QPM_SHG
Temp_SHG_Database := SHG_StrTran( SHG_GetDatabaseName( US_FileNameOnlyPathAndName( cProjectFileName ) ) + '_SHG.dbf' )
IF MyMsgYesNo( 'Create Simple Help Generator (SHG) database ' + DBLQT + Temp_SHG_Database + DBLQT + "?", 'Create Project' )
SHG_CreateDatabase( Temp_SHG_Database )
ELSE
Temp_SHG_Database := '*NONE*'
ENDIF
#else
Temp_SHG_Database := '*NONE*'
#endif
Open_TmpCreateFile := 'VERSION ' + QPM_VERSION_NUMBER + ' ' + CRLF
Open_TmpCreateFile += 'SHGDATABASE ' + Temp_SHG_Database + ' ' + CRLF
IF Open_FromFileType == 'DLL'
Open_TmpCreateFile += Open_TmpCreateFile + 'OUTPUTTYPE DLLLIB ' + CRLF
ENDIF
IF Open_FromFileType == 'PRG' .OR. Open_FromFileType == 'C' .OR. Open_FromFileType == 'CPP'
Open_TmpCreateFile += Open_TmpCreateFile + 'SOURCE ' + US_FileNameOnlyPathAndName( cProjectFileName ) + '.' + lower( Open_FromFileType ) + ' ' + CRLF
IF ! File( US_FileNameOnlyPathAndName( cProjectFileName ) + '.' + lower( Open_FromFileType ) )
QPM_CreateNewFile( Open_FromFileType, US_FileNameOnlyPathAndName( cProjectFileName ) + '.' + lower( Open_FromFileType ) )
ENDIF
ENDIF
IF QPM_MemoWrit( cProjectFileName, Open_TmpCreateFile )
MsgInfo( 'Project successfully created: ' + DBLQT + cProjectFileName + DBLQT )
ELSE
MsgInfo( 'Error creating project: ' + DBLQT + cProjectFileName + DBLQT )
ENDIF
ENDIF
ELSE
cProjectFileName := cParmProjectFileName
IF Empty( US_FileNameOnlyExt( cProjectFileName ) )
cProjectFileName += ".qpm"
ENDIF
IF ! File( cProjectFileName )
MsgStop( 'File not found: ' + AllTrim( cProjectFileName ) )
RETURN .F.
ENDIF
IF Empty( US_FileNameOnlyPath( cProjectFileName ) )
cProjectFileName := GetCurrentFolder() + DEF_SLASH + cProjectFileName
ENDIF
ENDIF
RETURN QPM_Wait( 'QPM_OpenProject2()', 'Opening ...' )
FUNCTION QPM_OpenProject2()
LOCAL cForceRecomp
LOCAL LOC_nOpenError
LOCAL i
LOCAL cFile
LOCAL cMemoProjectFile
LOCAL cMemoProjectFileAux := ""
LOCAL cCfgVrsn := '010001'
LOCAL cCfgVrsnEdtd := '01.00.01'
LOCAL ConfigVersion
LOCAL LOC_cLine
DoMethod( 'VentanaMain', 'GPrgFiles', 'DisableUpdate' )
DoMethod( 'VentanaMain', 'GPanFiles', 'DisableUpdate' )
DoMethod( 'VentanaMain', 'GDbfFiles', 'DisableUpdate' )
DoMethod( 'VentanaMain', 'GHeaFiles', 'DisableUpdate' )
DoMethod( 'VentanaMain', 'GIncFiles', 'DisableUpdate' )
DoMethod( 'VentanaMain', 'GExcFiles', 'DisableUpdate' )
#ifdef QPM_SHG
DoMethod( 'VentanaMain', 'GHlpFiles', 'DisableUpdate' )
#endif
IF ! Empty( cProjectFileName )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'QPM_OpenProject ' + cProjectFileName + CRLF )
ENDIF
cLastProjectFolder := US_FileNameOnlyPath( cProjectFileName )
PUB_cThisFolder := cLastProjectFolder
PUB_cProjectFile := US_FileNameOnlyPathAndName( cProjectFileName ) + '.qpm'
IF PUB_bLite
VentanaLite.Title := 'QPM (' + QPM_VERSION_DISPLAY_LONG + ') [ ' + AllTrim ( cProjectFileName ) + ' ]'
ELSE
VentanaMain.Title := 'QPM (QAC based Project Manager) - Project Manager For MiniGui (' + QPM_VERSION_DISPLAY_LONG + ') [ ' + AllTrim ( cProjectFileName ) + ' ]'
ENDIF
VentanaMain.TProjectFolder.Value := cLastProjectFolder
VentanaMain.TRunProjectFolder.Value := ''
bWarningCpp := .T.
Prj_Check_PlaceRCFirst := .F.
Prj_Check_IgnoreMainRC := .F.
Prj_Check_IgnoreLibRCs := .F.
// Ini: Project Options default values
Prj_Radio_Harbour := DEF_RG_HARBOUR
Prj_Check_HarbourIs31 := .T.
Prj_Check_64bits := .F.
Prj_Radio_Cpp := DEF_RG_MINGW
Prj_Radio_MiniGui := DEF_RG_OOHG3
Prj_Check_Console := .F.
Prj_Check_MT := .F.
Prj_Radio_OutputType := DEF_RG_EXE
Prj_Radio_OutputCopyMove := DEF_RG_NONE
Prj_Text_OutputCopyMoveFolder := ''
Prj_Radio_OutputRename := DEF_RG_NONE
Prj_Text_OutputRenameNewName := ''
Prj_Check_OutputSuffix := .F.
Prj_Check_OutputPrefix := .T.
Prj_Check_Upx := .F.
Prj_Radio_FormTool := DEF_RG_EDITOR
Prj_Radio_DbfTool := DEF_RG_DBFTOOL
// End: Project Options default values
bGlobalSearch := .F.
bLastGlobalSearchFun := .F.
bLastGlobalSearchDbf := .F.
bLastGlobalSearchCas := .F.
VentanaMain.LGlobal.visible := .F.
bPpoDisplayado := .F.
SHG_Database := ''
SHG_DbSize := 0
SHG_LastFolderImg := ''
SHG_CheckTypeOutput := .F.
SHG_HtmlFolder := ''
SHG_WWW := ''
SHG_BaseOK := .F.
cPrj_VersionAnt := '00000000'
VentanaMain.LVerVerNum.VALUE := Replicate( '0', DEF_LEN_VER_VERSION )
VentanaMain.LVerRelNum.VALUE := Replicate( '0', DEF_LEN_VER_RELEASE )
VentanaMain.LVerBuiNum.VALUE := Replicate( '0', DEF_LEN_VER_BUILD )
VentanaMain.OverrideCompile.Enabled := .T.
VentanaMain.OverrideLink.Enabled := .T.
VentanaMain.OverrideCompile.Value := ''
VentanaMain.OverrideLink.VALUE := ''
Prj_ExtraRunCmdFINAL := ''
Prj_ExtraRunProjQPM := ''
Prj_ExtraRunCmdEXE := ''
Prj_ExtraRunCmdFREE := ''
Prj_ExtraRunCmdQPMParm := ''
Prj_ExtraRunCmdEXEParm := ''
Prj_ExtraRunCmdFREEParm := ''
Prj_ExtraRunType := 'NONE'
Prj_ExtraRunQPMRadio := 'BUILD'
Prj_ExtraRunQPMLite := .T.
Prj_ExtraRunQPMForceFull := .F.
Prj_ExtraRunQPMRun := .F.
Prj_ExtraRunQPMButtonRun := .F.
Prj_ExtraRunQPMClear := .F.
Prj_ExtraRunQPMLog := .F.
Prj_ExtraRunQPMLogOnlyError := .F.
Prj_ExtraRunQPMAutoEXIT := .T.
Prj_ExtraRunExeWait := .T.
Prj_ExtraRunExePause := .T.
Prj_ExtraRunFreeWait := .T.
Prj_ExtraRunFreePause := .T.
TotCaption( 'PRG', 0 )
TotCaption( 'HEA', 0 )
TotCaption( 'PAN', 0 )
TotCaption( 'DBF', 0 )
TotCaption( 'LIB', 0 )
TotCaption( 'HEA', 0 )
#ifdef QPM_SHG
TotCaption( 'HLP', 0 )
#endif
VentanaMain.GPrgFiles.DeleteAllItems
VentanaMain.GHeaFiles.DeleteAllItems
VentanaMain.GPanFiles.DeleteAllItems
VentanaMain.GDbfFiles.DeleteAllItems
#ifdef QPM_SHG
VentanaMain.GHlpFiles.DeleteAllItems
#endif
VentanaMain.RichEditPrg.VALUE := ''
VentanaMain.RichEditHea.VALUE := ''
VentanaMain.RichEditPan.VALUE := ''
VentanaMain.RichEditDbf.VALUE := ''
VentanaMain.RichEditLib.VALUE := ''
#ifdef QPM_SHG
VentanaMain.RichEditHlp.VALUE := ''
oHlpRichEdit:lChanged := .F.
#endif
VentanaMain.RichEditSysout.Value := ''
VentanaMain.RichEditOut.VALUE := ''
VentanaMain.Check_Reimp.VALUE := .F.
VentanaMain.TReimportLib.VALUE := ''
VentanaMain.Check_NumberOnPrg.Enabled := .T.
VentanaMain.Check_GuionA.VALUE := .F.
VentanaMain.bReLoadPpo.Enabled := .T.
VentanaMain.bReLoadPrg.Enabled := .T.
bDbfAutoView := .T.
FOR i := 1 TO Len( vSuffix )
&( 'IncludeLibs'+vSuffix[i][1] ) := {}
&( 'ExcludeLibs'+vSuffix[i][1] ) := {}
&( 'vExtraFoldersForLibs'+vSuffix[i][1] ) := {}
NEXT
vExtraFoldersForSearchC := {}
vExtraFoldersForSearchHB := {}
vSinLoadWindow := {}
vSinInclude := {}
vXRefPrgHea := {}
vXRefPrgFmg := {}
PUB_bDebugActive := .F.
PUB_bDebugActiveAnt := .F.
VentanaMain.Debug.Checked := .T.
PUB_cConvert := ''
bRunParm := .F.
GBL_cRunParm := ''
bBuildRun := .F.
bBuildRunBack := .F.
GBL_HR_cLastExternalFileName := ''
PUB_MI_bExeAssociation := .F.
PUB_MI_cExeAssociation := ''
PUB_MI_nExeAssociationIcon := 1
PUB_MI_bExeBackupOption := .F.
PUB_MI_bNewFile := .F.
PUB_MI_nNewFileSuggested := 1
PUB_MI_cNewFileLeyend := ''
PUB_MI_nNewFileEmpty := 1
PUB_MI_cNewFileUserFile := ''
PUB_MI_nDestinationPath := 1
PUB_MI_cDestinationPath := ''
PUB_MI_nLeyendSuggested := 1
PUB_MI_cLeyendUserText := ''
PUB_MI_bDesktopShortCut := .T.
PUB_MI_nDesktopShortCut := 1
PUB_MI_bStartMenuShortCut := .T.
PUB_MI_nStartMenuShortCut := 1
PUB_MI_bLaunchApplication := .T.
PUB_MI_nLaunchApplication := 1
PUB_MI_bLaunchBackupOption := .F.
PUB_MI_bReboot := .F.
PUB_MI_cDefaultLanguage := 'EN'
PUB_MI_nInstallerName := 1
PUB_MI_cInstallerName := ''
PUB_MI_cImage := ''
PUB_MI_vFiles := {}
PUB_MI_bSelectAllPRG := .F.
PUB_MI_bSelectAllHEA := .F.
PUB_MI_bSelectAllPAN := .F.
PUB_MI_bSelectAllDBF := .F.
PUB_MI_bSelectAllLIB := .F.
PUB_bAutoInc := .T.
VentanaMain.AutoInc.Checked := .T.
PUB_bHotKeys := .T.
VentanaMain.HotKeys.Checked := .T.
QPM_SetResumen()
// Lock project's file
QPM_ProjectFileUnLock()
IF ! ( ( LOC_nOpenError := QPM_ProjectFileLock( cProjectFileName ) ) == 0 )
IF LOC_nOpenError == 5 .OR. LOC_nOpenError == 32
MsgInfo( "Project already in use: " + DBLQT + cProjectFileName + DBLQT )
ELSE
MsgInfo( "Error #" + US_VarToStr( LOC_nOpenError ) + " opening project: " + DBLQT + cProjectFileName + DBLQT )
ENDIF
PUB_cProjectFile := ''
PUB_cProjectFolder := ''
RETURN .F.
ENDIF
// Get project's version
cMemoProjectFile := MemoRead( cProjectFileName )
IF MLCount ( cMemoProjectFile, 254 ) > 0
LOC_cLine := AllTrim ( MEMOLINE( cMemoProjectFile, 254, 1 ) )
IF US_Word( LOC_cLine, 1 ) == 'VERSION'
cCfgVrsn := US_Word( LOC_cLine, 2 ) + US_Word( LOC_cLine, 3 ) + US_Word( LOC_cLine, 4 )
cCfgVrsnEdtd := US_Word( LOC_cLine, 2 ) + "." + US_Word( LOC_cLine, 3 ) + "." + US_Word( LOC_cLine, 4 )
ENDIF
ELSE
Prj_IsNew := .T.
ENDIF
configversion := Val( cCfgVrsn )
IF configVersion > Val( QPM_VERSION_NUMBER_SHORT ) .AND. ! PUB_bIgnoreVersionProject
IF ! MyMsgYesNo( "The project's version (" + cCfgVrsnEdtd + ") is newer than QPM's version (" + QPM_VERSION_DISPLAY_SHORT + ').' + CRLF + 'If you go on some information might be discarded.' + CRLF + 'Continue?' )
PUB_cProjectFile := ''
PUB_cProjectFolder := ''
RETURN .F.
ENDIF
ENDIF
// Update older versions
PRIVATE PRI_COMPATIBILITY_THISFOLDER := PUB_cThisFolder
PRIVATE PRI_COMPATIBILITY_CONFIGVERSION := ConfigVersion
PRIVATE PRI_COMPATIBILITY_MEMOPROJECTFILE := cMemoProjectFile
PRIVATE PRI_COMPATIBILITY_MEMOPROJECTFILEAUX := cMemoProjectFileAux
PRIVATE PRI_COMPATIBILITY_PROJECTFOLDER := PUB_cProjectFolder
PRIVATE PRI_COMPATIBILITY_PROJECTFOLDERIDENT := cProjectFolderIdent
#include "QPM_CompatibilityOpenProject.CH"
PUB_cThisFolder := PRI_COMPATIBILITY_THISFOLDER
// ConfigVersion := PRI_COMPATIBILITY_CONFIGVERSION
cMemoProjectFile := PRI_COMPATIBILITY_MEMOPROJECTFILE
// cMemoProjectFileAux := PRI_COMPATIBILITY_MEMOPROJECTFILEAUX
PUB_cProjectFolder := PRI_COMPATIBILITY_PROJECTFOLDER
cProjectFolderIdent := PRI_COMPATIBILITY_PROJECTFOLDERIDENT
RELEASE PRI_COMPATIBILITY_THISFOLDER
RELEASE PRI_COMPATIBILITY_CONFIGVERSION
RELEASE PRI_COMPATIBILITY_MEMOPROJECTFILE
RELEASE PRI_COMPATIBILITY_MEMOPROJECTFILEAUX
RELEASE PRI_COMPATIBILITY_PROJECTFOLDER
RELEASE PRI_COMPATIBILITY_PROJECTFOLDERIDENT
// TODO: format from here
// Process project's file
FOR i := 1 TO MLCount ( cMemoProjectFile, 254 )
LOC_cLine := AllTrim ( MEMOLINE( cMemoProjectFile, 254, i ) )
IF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'PROJECTFOLDER'
VentanaMain.TProjectFolder.Value := US_StrTran( US_WordSubStr( LOC_cLine, 2 ), '<ThisFolder>', PUB_cThisFolder )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'PRJ_VERSION'
SetProperty( 'VentanaMain', 'LVerVerNum', 'value', PadL( US_Word( LOC_cLine, 2 ), DEF_LEN_VER_VERSION, '0' ) )
SetProperty( 'VentanaMain', 'LVerRelNum', 'value', PadL( US_Word( LOC_cLine, 3 ), DEF_LEN_VER_RELEASE, '0' ) )
SetProperty( 'VentanaMain', 'LVerBuiNum', 'value', PadL( US_Word( LOC_cLine, 4 ), DEF_LEN_VER_BUILD, '0' ) )
cPrj_VersionAnt := GetPrj_Version()
ELSEIF At( 'LASTLIBFOLDER', US_Upper( LOC_cLine ) ) == 1
IF US_IsVar( 'cLastLibFolder'+SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 14 ) )
&( 'cLastLibFolder'+SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 14 ) ) := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_IsVar( 'cLastLibFolder'+SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 14 )+Define32bits )
&( 'cLastLibFolder'+SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 14 )+Define32bits ) := US_WordSubStr( LOC_cLine, 2 )
ENDIF
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'RUNFOLDER'
VentanaMain.TRunProjectFolder.Value := ChgPathToReal( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'RUNPARAM'
GBL_cRunParm := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'OVERRIDECOMPILEPARM'
SetProperty( 'VentanaMain', 'OverrideCompile', 'Value', US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'OVERRIDELINKPARM'
SetProperty( 'VentanaMain', 'OverrideLink', 'Value', US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKHARBOUR'
Prj_Radio_Harbour := iif( US_Word( LOC_cLine, 2 ) == DefineXHarbour, DEF_RG_XHARBOUR, DEF_RG_HARBOUR )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKHARBOURIS31'
Prj_Check_HarbourIs31 := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKPLACERCFIRST'
Prj_Check_PlaceRCFirst := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
VentanaMain.Check_Place.Value := Prj_Check_PlaceRCFirst
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKNOMAINRC'
Prj_Check_IgnoreMainRC := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
VentanaMain.Check_NoMainRC.Value := Prj_Check_IgnoreMainRC
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKNOLIBRCS'
Prj_Check_IgnoreLibRCs := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
VentanaMain.Check_NoLibRCs.Value := Prj_Check_IgnoreLibRCs
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECK64BITS'
Prj_Check_64bits := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'AUTOINC'
PUB_bAutoInc := iif( US_Word( LOC_cLine, 2 ) == 'NO', .F., .T. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'HOTKEYS'
PUB_bHotKeys := iif( US_Word( LOC_cLine, 2 ) == 'NO', .F., .T. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKCPP'
DO CASE
CASE US_Word( LOC_cLine, 2 ) == DefineBorland
Prj_Radio_Cpp := DEF_RG_BORLAND
CASE US_Word( LOC_cLine, 2 ) == DefineMinGW
Prj_Radio_Cpp := DEF_RG_MINGW
CASE US_Word( LOC_cLine, 2 ) == DefinePelles
Prj_Radio_Cpp := DEF_RG_PELLES
ENDCASE
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKMINIGUI'
DO CASE
CASE US_Word( LOC_cLine, 2 ) == DefineMiniGui1
Prj_Radio_MiniGui := DEF_RG_MINIGUI1
CASE US_Word( LOC_cLine, 2 ) == DefineMiniGui3
Prj_Radio_MiniGui := DEF_RG_MINIGUI3
CASE US_Word( LOC_cLine, 2 ) == DefineExtended1
Prj_Radio_MiniGui := DEF_RG_EXTENDED1
CASE US_Word( LOC_cLine, 2 ) == DefineOohg3
Prj_Radio_MiniGui := DEF_RG_OOHG3
ENDCASE
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'DEBUGACTIVE'
PUB_bDebugActive := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
PUB_bDebugActiveAnt := PUB_bDebugActive
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKCONSOLE'
Prj_Check_Console := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKMT'
Prj_Check_MT := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'OUTPUTTYPE'
DO CASE
CASE US_Word( LOC_cLine, 2 ) == 'SRCEXE'
Prj_Radio_OutputType := DEF_RG_EXE
CASE US_Word( LOC_cLine, 2 ) == 'SRCLIB'
Prj_Radio_OutputType := DEF_RG_LIB
CASE US_Word( LOC_cLine, 2 ) == 'DLLLIB'
Prj_Radio_OutputType := DEF_RG_IMPORT
VentanaMain.Check_NumberOnPrg.enabled := .F.
VentanaMain.bReLoadPpo.enabled := .F.
ENDCASE
ActOutputTypeSet()
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKREIMPORT'
SetProperty( 'VentanaMain', 'Check_Reimp', 'Value', iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'LIBREIMPORT'
SetProperty( 'VentanaMain', 'TReimportLib', 'Value', US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'IMPORTGUIONA'
SetProperty( 'VentanaMain', 'Check_GuionA', 'Value', iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'OUTPUTCOPYMOVE'
DO CASE
CASE US_Word( LOC_cLine, 2 ) == 'NONE'
Prj_Radio_OutputCopyMove := DEF_RG_NONE
CASE US_Word( LOC_cLine, 2 ) == 'COPY'
Prj_Radio_OutputCopyMove := DEF_RG_COPY
CASE US_Word( LOC_cLine, 2 ) == 'MOVE'
Prj_Radio_OutputCopyMove := DEF_RG_MOVE
ENDCASE
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'OUTPUTCOPYMOVEFOLDER'
Prj_Text_OutputCopyMoveFolder := ChgPathToReal( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'DBFAUTOVIEW'
bDbfAutoView := iif( US_Word( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNCMDFINAL'
Prj_ExtraRunCmdFINAL := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNPROJQPM'
Prj_ExtraRunProjQPM := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNCMDEXE'
Prj_ExtraRunCmdEXE := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNCMDFREE'
Prj_ExtraRunCmdFREE := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMPARM'
Prj_ExtraRunCmdQPMParm := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNEXEPARM'
Prj_ExtraRunCmdEXEParm := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNFREEPARM'
Prj_ExtraRunCmdFREEParm := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNTYPE'
Prj_ExtraRunType := US_WordSubStr( LOC_cLine, 2 )
IF Empty( Prj_ExtraRunType )
Prj_ExtraRunType := 'NONE'
ENDIF
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMRADIO'
Prj_ExtraRunQPMRadio := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMLITE'
Prj_ExtraRunQPMLite := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMFORCEFULL'
Prj_ExtraRunQPMForceFull := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMRUN'
Prj_ExtraRunQPMRun := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMBUTTONRUN'
Prj_ExtraRunQPMButtonRun := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMCLEAR'
Prj_ExtraRunQPMClear := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMLOG'
Prj_ExtraRunQPMLog := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMLOGONLYERROR'
Prj_ExtraRunQPMLogOnlyError := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNQPMAUTOEXIT'
Prj_ExtraRunQPMAutoEXIT := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNEXEWAIT'
Prj_ExtraRunExeWait := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNEXEPAUSE'
Prj_ExtraRunExePause := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNFREEWAIT'
Prj_ExtraRunFreeWait := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'EXTRARUNFREEPAUSE'
Prj_ExtraRunFreePause := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'OUTPUTRENAME'
DO CASE
CASE US_Word( LOC_cLine, 2 ) == 'NONE'
Prj_Radio_OutputRename := DEF_RG_NONE
CASE US_Word( LOC_cLine, 2 ) == 'NEWNAME'
Prj_Radio_OutputRename := DEF_RG_NEWNAME
ENDCASE
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'OUTPUTRENAMENEWNAME'
Prj_Text_OutputRenameNewName := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKOUTPUTSUFFIX'
Prj_Check_OutputSuffix := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKOUTPUTPREFIX'
Prj_Check_OutputPrefix := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKUPX'
Prj_Check_Upx := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKFORMTOOL'
DO CASE
CASE US_Word( LOC_cLine, 2 ) == 'EDITOR'
Prj_Radio_FormTool := DEF_RG_EDITOR
CASE US_Word( LOC_cLine, 2 ) == 'HMI'
Prj_Radio_FormTool := DEF_RG_HMI
CASE US_Word( LOC_cLine, 2 ) == 'HMGSIDE'
Prj_Radio_FormTool := DEF_RG_HMGS
ENDCASE
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'CHECKDBFTOOL'
DO CASE
CASE US_Word( LOC_cLine, 2 ) == 'DBFVIEW'
Prj_Radio_DbfTool := DEF_RG_DBFTOOL
CASE US_Word( LOC_cLine, 2 ) == 'DBU'
Prj_Radio_DbfTool := DEF_RG_OTHER
CASE US_Word( LOC_cLine, 2 ) == 'OTHER'
Prj_Radio_DbfTool := DEF_RG_OTHER
ENDCASE
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BEXEASSOCIATION'
PUB_MI_bExeAssociation := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CEXEASSOCIATION'
PUB_MI_cExeAssociation := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NEXEASSOCIATIONICON'
PUB_MI_nExeAssociationIcon := Val( US_Word( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BEXEBACKUPOPTION'
PUB_MI_bExeBackupOption := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BNEWFILE'
PUB_MI_bNewFile := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NNEWFILESUGGESTED'
PUB_MI_nNewFileSuggested := Val( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CNEWFILELEYEND'
PUB_MI_cNewFileLeyend := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NNEWFILEEmpty'
PUB_MI_nNewFileEmpty := Val( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CNEWFILEUSERFILE'
PUB_MI_cNewFileUserFile := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NDESTINATIONPATH'
PUB_MI_nDestinationPath := Val( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CDESTINATIONPATH'
PUB_MI_cDestinationPath := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NLEYENDSUGGESTED'
PUB_MI_nLeyendSuggested := Val( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CLEYENDUSERTEXT'
PUB_MI_cLeyendUserText := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BDESKTOPSHORTCUT'
PUB_MI_bDesktopShortCut := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NDESKTOPSHORTCUT'
PUB_MI_nDesktopShortCut := Val( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BSTARTMENUSHORTCUT'
PUB_MI_bStartMenuShortCut := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NSTARTMENUSHORTCUT'
PUB_MI_nStartMenuShortCut := Val( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BLAUNCHAPPLICATION'
PUB_MI_bLaunchApplication := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NLAUNCHAPPLICATION'
PUB_MI_nLaunchApplication := Val( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BLAUNCHBACKUPOPTION'
PUB_MI_bLaunchBackupOption := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BREBOOT'
PUB_MI_bReboot := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CDEFAULTLANGUAGE'
PUB_MI_cDefaultLanguage := US_Word( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_NINSTALLERNAME'
PUB_MI_nInstallerName := Val( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CINSTALLERNAME'
PUB_MI_cInstallerName := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CIMAGE'
PUB_MI_cImage := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BSELECTALLPRG'
PUB_MI_bSelectAllPRG := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BSELECTALLHEA'
PUB_MI_bSelectAllHEA := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BSELECTALLPAN'
PUB_MI_bSelectAllPAN := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BSELECTALLDBF'
PUB_MI_bSelectAllDBF := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_BSELECTALLLIB'
PUB_MI_bSelectAllLIB := iif( US_WordSubStr( LOC_cLine, 2 ) == '.T.', .T., .F. )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'MI_CFILE'
AAdd( PUB_MI_vFiles, { Val( US_Word( LOC_cLine, 2 ) ), strtran( US_Word( LOC_cLine, 3 ), '|', ' ' ), strtran( US_Word( LOC_cLine, 4 ), '|', ' ' ), strtran( US_Word( LOC_cLine, 5 ), '|', ' ' ), strtran( US_Word( LOC_cLine, 6 ), '|', ' ' ), strtran( US_Word( LOC_cLine, 7 ), '|', ' ' ) } )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'SHGDATABASE'
SHG_Database := ChgPathToReal( US_WordSubStr( LOC_cLine, 2 ) )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'SHGLASTFOLDERIMG'
SHG_LastFolderImg := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'SHGOUTPUTTYPE'
SHG_CheckTypeOutput := iif( US_Word( LOC_cLine, 2 ) == 'YES', .T., .F. )
#ifdef QPM_SHG
SetProperty( 'VentanaMain', 'CH_SHG_TypeOutput', 'value', SHG_CheckTypeOutput )
#endif
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'SHGHTMLFOLDER'
SHG_HtmlFolder := US_WordSubStr( LOC_cLine, 2 )
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'SHGWWW'
SHG_WWW := US_WordSubStr( LOC_cLine, 2 )
#ifdef QPM_HOTRECOVERY
ELSEIF US_Upper( US_Word( LOC_cLine, 1 ) ) == 'HOTLASTEXTERNALFILE'
GBL_HR_cLastExternalFileName := US_WordSubStr( LOC_cLine, 2 )
#endif
ELSEIF US_Upper ( US_Word( LOC_cLine, 1 ) ) == 'SOURCE'
cForceRecomp := ' '
IF At( '<FR> ', LOC_cLine ) > 0
LOC_cLine := StrTran( LOC_cLine, '<FR> ', '' )
cForceRecomp := 'R'
ENDIF
cFile := US_WordSubStr( LOC_cLine, 2 )
VentanaMain.GPrgFiles.AddItem( { PUB_nGridImgNone, cForceRecomp, US_FileNameOnlyNameAndExt( US_WordSubStr( LOC_cLine, 2 ) ), ChgPathToRelative( cFile ), '0', '', '' } )
IF US_Upper( US_FileNameOnlyExt( cFile ) ) == 'PRG'
IF AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( cFile ) ) } ) == 0
AAdd( vExtraFoldersForSearchHB, US_FileNameOnlyPath( cFile ) )
ENDIF
ELSE
IF AScan( vExtraFoldersForSearchC, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( cFile ) ) } ) == 0
AAdd( vExtraFoldersForSearchC, US_FileNameOnlyPath( cFile ) )
ENDIF
ENDIF
ELSEIF US_Upper ( US_Word( LOC_cLine, 1 ) ) == 'HEAD'
VentanaMain.GHeaFiles.AddItem( { PUB_nGridImgNone, US_FileNameOnlyNameAndExt( US_WordSubStr( LOC_cLine, 2 ) ), ChgPathToRelative( US_WordSubStr( LOC_cLine, 2 ) ), '0', '', '' } )
IF AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.ItemCount, NCOLHEAFULLNAME ) ) ) ) } ) == 0
AAdd( vExtraFoldersForSearchHB, US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.ItemCount, NCOLHEAFULLNAME ) ) ) )
ENDIF
IF AScan( vExtraFoldersForSearchC, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.ItemCount, NCOLHEAFULLNAME ) ) ) ) } ) == 0
AAdd( vExtraFoldersForSearchC, US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.ItemCount, NCOLHEAFULLNAME ) ) ) )
ENDIF
ELSEIF US_Upper ( US_Word( LOC_cLine, 1 ) ) == 'FORM'
VentanaMain.GPanFiles.AddItem( { PUB_nGridImgNone, US_FileNameOnlyNameAndExt( US_WordSubStr( LOC_cLine, 2 ) ), ChgPathToRelative( US_WordSubStr( LOC_cLine, 2 ) ), '0', '', '' } )
IF AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.ItemCount, NCOLPANFULLNAME ) ) ) ) } ) == 0
AAdd( vExtraFoldersForSearchHB, US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.ItemCount, NCOLPANFULLNAME ) ) ) )
ENDIF
ELSEIF US_Upper ( US_Word( LOC_cLine, 1 ) ) == 'DBF'
VentanaMain.GDbfFiles.AddItem( { PUB_nGridImgNone, US_FileNameOnlyNameAndExt( US_WordSubStr( LOC_cLine, 2 ) ), ChgPathToRelative( US_WordSubStr( LOC_cLine, 2 ) ), '0 0', '', '0 ** 0' } )
ELSEIF SubStr( US_Word( US_Upper ( LOC_cLine ), 1 ), 1, 7 ) == 'INCLUDE'
IF US_IsVar( 'IncludeLibs' + SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 8 ) )
AAdd( &( 'IncludeLibs' + SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 8 ) ), US_Word( LOC_cLine, 2 ) + ' ' + SubStr( LOC_cLine, US_WordInd( LOC_cLine, 3 ) ) )
ELSE
IF US_IsVar( 'IncludeLibs' + SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 8 ) + Define32bits )
AAdd( &( 'IncludeLibs' + SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 8 ) + Define32bits ), US_Word( LOC_cLine, 2 ) + ' ' + SubStr( LOC_cLine, US_WordInd( LOC_cLine, 3 ) ) )
ENDIF
ENDIF
ELSEIF SubStr( US_Word( US_Upper ( LOC_cLine ), 1 ), 1, 7 ) == 'EXCLUDE'
IF US_IsVar( 'ExcludeLibs' + SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 8 ) )
AAdd( &( 'ExcludeLibs' + SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 8 ) ), AllTrim( US_Word( LOC_cLine, 2 ) + ' ' + SubStr( LOC_cLine, US_WordInd( LOC_cLine, 3 ) ) ) )
ELSE
IF US_IsVar( 'ExcludeLibs' + SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 8 ) + Define32bits )
AAdd( &( 'ExcludeLibs' + SubStr( US_Upper( US_Word( LOC_cLine, 1 ) ), 8 ) + Define32bits ), AllTrim( US_Word( LOC_cLine, 2 ) + ' ' + SubStr( LOC_cLine, US_WordInd( LOC_cLine, 3 ) ) ) )
ENDIF
ENDIF
ENDIF
NEXT i
ENDIF
IF ! PUB_bLite
#ifdef QPM_SHG
IF SHG_Database == '*NONE*'
SHG_Database := ''
ELSE
IF Empty( SHG_Database )
SHG_Database := SHG_StrTran( SHG_GetDatabaseName( US_FileNameOnlyPathAndName(cProjectFileName) ) + '_SHG.dbf' )
IF MyMsgYesNo( 'Create Simple Help Generator (SHG) database ' + DBLQT + SHG_Database + DBLQT + "?")
SHG_CreateDatabase( SHG_Database )
ELSE
SHG_Database := ''
ENDIF
ENDIF
ENDIF
VentanaMain.TWWWHlp.Value := SHG_WWW
SetProperty( 'VentanaMain', 'RichEditHlp', 'readonly', .T. )
IF ! Empty( SHG_Database )
IF File( SHG_Database )
SHG_LoadDatabase( SHG_Database )
SetProperty( 'VentanaMain', 'RichEditHlp', 'readonly', .F. )
ELSE
IF MyMsgYesNo( 'Simple Help Generator (SHG) database not found: ' + SHG_Database + CRLF + ;
'Erase setting?' + CRLF + ;
'Use tab ' + DBLQT + PageHlp + DBLQT + ' to select or create a new one.' )
SHG_Database := ""
ENDIF
ENDIF
ENDIF
VentanaMain.THlpDataBase.Value := SHG_Database
#endif
RichEditDisplay('OUT')
VentanaMain.LFull.FontColor := DEF_COLORGREEN
VentanaMain.LFull.Value := 'Incremental'
ELSE
VentanaLite.LFull.FontColor := DEF_COLORGREEN
VentanaLite.LFull.Value := 'Incremental'
ENDIF
CargoIncludeLibs( GetSuffix() )
CargoExcludeLibs( GetSuffix() )
QPM_SetColor()
SetMGWaitTxt( 'Columns Autofit ...' )
DoMethod( 'VentanaMain', 'GPrgFiles', 'ColumnsAutoFitH' )
DoMethod( 'VentanaMain', 'GPanFiles', 'ColumnsAutoFitH' )
DoMethod( 'VentanaMain', 'GDbfFiles', 'ColumnsAutoFitH' )
DoMethod( 'VentanaMain', 'GHeaFiles', 'ColumnsAutoFitH' )
DoMethod( 'VentanaMain', 'GIncFiles', 'ColumnsAutoFitH' )
DoMethod( 'VentanaMain', 'GExcFiles', 'ColumnsAutoFitH' )
#ifdef QPM_SHG
DoMethod( 'VentanaMain', 'GHlpFiles', 'ColumnsAutoFitH' )
#endif
QPM_CheckFiles()
VentanaMain.TabGrids.Value := 1
VentanaMain.GPrgFiles.Value := 1
VentanaMain.GHeaFiles.Value := 1
VentanaMain.GPanFiles.Value := 1
VentanaMain.GDbfFiles.Value := 1
VentanaMain.GIncFiles.Value := 1
VentanaMain.GExcFiles.Value := 1
#ifdef QPM_SHG
VentanaMain.GHlpFiles.Value := 1
#endif
TabSync()
DoMethod( 'VentanaMain', 'GPrgFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GPanFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GDbfFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GHeaFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GIncFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GExcFiles', 'EnableUpdate' )
#ifdef QPM_SHG
DoMethod( 'VentanaMain', 'GHlpFiles', 'EnableUpdate' )
#endif
ProjectButtons( .T. )
AddLastOpen( cProjectFileName )
QPM_DefinoMainMenu()
VentanaMain.Check_DbfAutoView.Value := bDbfAutoView
IF Prj_IsNew
SetMGWaitHide()
ProjectSettings()
GlobalSettings()
SetMGWaitShow()
ENDIF
SetProperty( 'VentanaMain', 'build', 'enabled', .T. )
ActOutputTypeSet()
ActLibReimp()
CambioTitulo()
QPM_SetResumen()
RETURN .T.
FUNCTION QPM_ClearLastOpenList()
vLastOpen := {}
QPM_DefinoMainMenu()
RETURN .T.
FUNCTION QPM_CheckFiles()
LOCAL i
SetMGWaitTxt( 'Checking files ...' )
DoMethod( 'VentanaMain', 'GPrgFiles', 'DisableUpdate' )
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF ! File( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) ) )
//GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGSTATUS ) := PUB_nGridImgEquis
GridImage( 'VentanaMain', 'GPrgFiles', i, NCOLPRGSTATUS, '+', PUB_nGridImgEquis )
ELSE
//GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGSTATUS ) := PUB_nGridImgNone
GridImage( 'VentanaMain', 'GPrgFiles', i, NCOLPRGSTATUS, '-', PUB_nGridImgEquis )
ENDIF
NEXT i
DoMethod( 'VentanaMain', 'GPrgFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GPanFiles', 'DisableUpdate' )
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
IF ! File( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) ) )
//GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANSTATUS ) := PUB_nGridImgEquis
GridImage( 'VentanaMain', 'GPanFiles', i, NCOLPANSTATUS, '+', PUB_nGridImgEquis )
ELSE
//GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANSTATUS ) := PUB_nGridImgNone
GridImage( 'VentanaMain', 'GPanFiles', i, NCOLPANSTATUS, '-', PUB_nGridImgEquis )
ENDIF
NEXT i
DoMethod( 'VentanaMain', 'GPanFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GDbfFiles', 'DisableUpdate' )
FOR i := 1 TO VentanaMain.GDbfFiles.ItemCount
IF ! File( ChgPathToReal( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFFULLNAME ) ) )
// GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFSTATUS ) := PUB_nGridImgEquis
GridImage( 'VentanaMain', 'GDbfFiles', i, NCOLDBFSTATUS, '+', PUB_nGridImgEquis )
ELSE
// GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFSTATUS ) := PUB_nGridImgNone
GridImage( 'VentanaMain', 'GDbfFiles', i, NCOLDBFSTATUS, '-', PUB_nGridImgEquis )
ENDIF
NEXT i
DoMethod( 'VentanaMain', 'GDbfFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GHeaFiles', 'DisableUpdate' )
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF ! File( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) ) )
//GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEASTATUS ) := PUB_nGridImgEquis
GridImage( 'VentanaMain', 'GHeaFiles', i, NCOLHEASTATUS, '+', PUB_nGridImgEquis )
ELSE
// GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEASTATUS ) := PUB_nGridImgNone
GridImage( 'VentanaMain', 'GHeaFiles', i, NCOLHEASTATUS, '-', PUB_nGridImgEquis )
ENDIF
NEXT i
DoMethod( 'VentanaMain', 'GHeaFiles', 'EnableUpdate' )
DoMethod( 'VentanaMain', 'GIncFiles', 'DisableUpdate' )
FOR i := 1 TO VentanaMain.GIncFiles.ItemCount
IF ! File( ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 3 ) ) )
// GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCSTATUS ) := PUB_nGridImgEquis
GridImage( 'VentanaMain', 'GIncFiles', i, NCOLINCSTATUS, '+', PUB_nGridImgEquis )
ELSE
//GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCSTATUS ) := PUB_nGridImgNone
GridImage( 'VentanaMain', 'GIncFiles', i, NCOLINCSTATUS, '-', PUB_nGridImgEquis )
ENDIF
NEXT i
DoMethod( 'VentanaMain', 'GIncFiles', 'EnableUpdate' )
RETURN .T.
FUNCTION QPM_SetResumen()
LOCAL Venta := iif( PUB_bLite, 'VentanaLite', 'VentanaMain' ), cAux
IF Prj_Radio_OutputType == DEF_RG_IMPORT
DO CASE
CASE GetCppSuffix() == DefineBorland
cAux := 'BCC32'
CASE GetCppSuffix() == DefineMinGW
cAux := 'MinGW'
CASE GetCppSuffix() == DefinePelles
cAux := 'Pelles'
OTHERWISE
MsgStop( 'Invalid CPP type: ' + GetCppSuffix() )
ENDCASE
SetProperty( Venta, 'LResumen', 'Value', 'Build Interface Library From DLL For ' + cAux )
SetProperty( Venta, 'LFull', 'visible', .F. )
SetProperty( Venta, 'LExtra', 'visible', .F. )
ELSE
SetProperty( Venta, 'LResumen', 'Value', vSuffix[ AScan( vSuffix, { |x| x[1] == GetSuffix() } ) ][ 2 ] )
SetProperty( Venta, 'LExtra', 'Value', LTrim( iif( Prj_Check_MT, ' MT Mode', '' ) + iif( Prj_Check_Console, ' Console Mode', '' ) + iif( PUB_bDebugActive, ' With DEBUG', '' ) + iif( VentanaMain.AutoInc.Checked, '', ' AutoInc OFF' ) + iif( VentanaMain.HotKeys.Checked, '', ' HotKeys OFF' ) ) )
SetProperty( Venta, 'LFull', 'visible', .T. )
SetProperty( Venta, 'LExtra', 'visible', .T. )
ENDIF
RETURN NIL
FUNCTION QPM_SaveProject( bCheck )
LOCAL i, j, bDiff, MemoAux, LineasC, LineasProject
LOCAL cForceRecomp, bWrite := .F., MI_cFilesAux
LOCAL cINI := ''
IF Empty( bCheck )
bCheck := .F.
ENDIF
IF PUB_bOpenProjectFromParm
PUB_bOpenProjectFromParm := .F.
RETURN .F.
ENDIF
IF Empty( PUB_cProjectFile ) .AND. Empty( PUB_cProjectFolder )
IF ! bCheck
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
MsgStop( 'No project is open.' )
ENDIF
RETURN .F.
ENDIF
cINI := cINI + 'VERSION ' + QPM_VERSION_NUMBER + CRLF
cINI := cINI + 'PRJ_VERSION ' + MakePrj_Version() + CRLF
cINI := cINI + 'PROJECTFOLDER ' + US_StrTran( PUB_cProjectFolder, PUB_cThisFolder, '<ThisFolder>' ) + CRLF
FOR i := 1 TO Len( vSuffix )
cINI := cINI + 'LASTLIBFOLDER' + vSuffix[i][1]+' ' + &( 'cLastLibFolder'+vSuffix[i][1] ) + CRLF
NEXT
cINI := cINI + 'RUNFOLDER ' + AllTrim(ChgPathToRelative(VentanaMain.TRunProjectFolder.Value)) + CRLF
cINI := cINI + 'RUNPARAM ' + AllTrim( GBL_cRunParm ) + CRLF
cINI := cINI + 'OVERRIDECOMPILEPARM ' + GetProperty( 'VentanaMain', 'OverrideCompile', 'value' ) + CRLF
cINI := cINI + 'OVERRIDELINKPARM ' + GetProperty( 'VentanaMain', 'OverrideLink', 'value' ) + CRLF
cINI := cINI + 'CHECKHARBOUR ' + IF ( Prj_Radio_Harbour == DEF_RG_XHARBOUR, DefineXHarbour, DefineHarbour ) + CRLF
cINI := cINI + 'CHECKHARBOURIS31 ' + IF ( Prj_Check_HarbourIs31, 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECKPLACERCFIRST ' + IF ( Prj_Check_PlaceRCFirst, 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECKNOMAINRC ' + IF ( Prj_Check_IgnoreMainRC, 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECKNOLIBRCS ' + IF ( Prj_Check_IgnoreLibRCs, 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECK64BITS ' + IF ( Prj_Check_64bits, 'YES', 'NO' ) + CRLF
cINI := cINI + 'AUTOINC ' + IF ( GetProperty( 'VentanaMain', 'AutoInc', 'checked' ), 'YES', 'NO' ) + CRLF
cINI := cINI + 'HOTKEYS ' + IF ( GetProperty( 'VentanaMain', 'HotKeys', 'checked' ), 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECKCPP ' + GetCppSuffix() + CRLF
cINI := cINI + 'CHECKMINIGUI ' + GetMiniGuiSuffix() + CRLF
cINI := cINI + 'CHECKCONSOLE ' + iif( Prj_Check_Console, 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECKMT ' + iif( Prj_Check_MT, 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECKUPX ' + iif( Prj_Check_Upx, 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECKFORMTOOL ' + cFormTool() + CRLF
cINI := cINI + 'CHECKDBFTOOL ' + cDbfTool() + CRLF
cINI := cINI + 'OUTPUTCOPYMOVE ' + cOutputCopyMove() + CRLF
cINI := cINI + 'OUTPUTCOPYMOVEFOLDER ' + ChgPathToRelative( Prj_Text_OutputCopyMoveFolder ) + CRLF
cINI := cINI + 'OUTPUTRENAME ' + cOutputRename() + CRLF
cINI := cINI + 'OUTPUTRENAMENEWNAME ' + Prj_Text_OutputRenameNewName + CRLF
cINI := cINI + 'CHECKOUTPUTSUFFIX ' + iif( Prj_Check_OutputSuffix, 'YES', 'NO' ) + CRLF
cINI := cINI + 'CHECKOUTPUTPREFIX ' + iif( Prj_Check_OutputPrefix, 'YES', 'NO' ) + CRLF
cINI := cINI + 'OUTPUTTYPE ' + cOutputType() + CRLF
cINI := cINI + 'CHECKREIMPORT ' + iif( GetProperty( 'VentanaMain', 'Check_Reimp', 'Value' ), 'YES', 'NO' ) + CRLF
cINI := cINI + 'LIBREIMPORT ' + GetProperty( 'VentanaMain', 'TReimportLib', 'Value' ) + CRLF
cINI := cINI + 'IMPORTGUIONA ' + iif( GetProperty( 'VentanaMain', 'Check_GuionA', 'Value' ), 'YES', 'NO' ) + CRLF
cINI := cINI + 'DBFAUTOVIEW ' + US_VarToStr( bDbfAutoView ) + CRLF
cINI := cINI + 'EXTRARUNCMDFINAL ' + Prj_ExtraRunCmdFINAL + CRLF
cINI := cINI + 'EXTRARUNPROJQPM ' + Prj_ExtraRunProjQPM + CRLF
cINI := cINI + 'EXTRARUNCMDEXE ' + Prj_ExtraRunCmdEXE + CRLF
cINI := cINI + 'EXTRARUNCMDFREE ' + Prj_ExtraRunCmdFREE + CRLF
cINI := cINI + 'EXTRARUNQPMPARM ' + Prj_ExtraRunCmdQPMParm + CRLF
cINI := cINI + 'EXTRARUNEXEPARM ' + Prj_ExtraRunCmdEXEParm + CRLF
cINI := cINI + 'EXTRARUNFREEPARM ' + Prj_ExtraRunCmdFREEParm + CRLF
cINI := cINI + 'EXTRARUNTYPE ' + Prj_ExtraRunType + CRLF
cINI := cINI + 'EXTRARUNQPMRADIO ' + US_VarToStr( Prj_ExtraRunQPMRadio ) + CRLF
cINI := cINI + 'EXTRARUNQPMLITE ' + US_VarToStr( Prj_ExtraRunQPMLite ) + CRLF
cINI := cINI + 'EXTRARUNQPMFORCEFULL ' + US_VarToStr( Prj_ExtraRunQPMForceFull ) + CRLF
cINI := cINI + 'EXTRARUNQPMRUN ' + US_VarToStr( Prj_ExtraRunQPMRun ) + CRLF
cINI := cINI + 'EXTRARUNQPMBUTTONRUN ' + US_VarToStr( Prj_ExtraRunQPMButtonRun ) + CRLF
cINI := cINI + 'EXTRARUNQPMCLEAR ' + US_VarToStr( Prj_ExtraRunQPMClear ) + CRLF
cINI := cINI + 'EXTRARUNQPMLOG ' + US_VarToStr( Prj_ExtraRunQPMLog ) + CRLF
cINI := cINI + 'EXTRARUNQPMLOGONLYERROR ' + US_VarToStr( Prj_ExtraRunQPMLogOnlyError ) + CRLF
cINI := cINI + 'EXTRARUNQPMAUTOEXIT ' + US_VarToStr( Prj_ExtraRunQPMAutoEXIT ) + CRLF
cINI := cINI + 'EXTRARUNEXEWAIT ' + US_VarToStr( Prj_ExtraRunExeWait ) + CRLF
cINI := cINI + 'EXTRARUNEXEPAUSE ' + US_VarToStr( Prj_ExtraRunExePause ) + CRLF
cINI := cINI + 'EXTRARUNFREEWAIT ' + US_VarToStr( Prj_ExtraRunFreeWait ) + CRLF
cINI := cINI + 'EXTRARUNFREEPAUSE ' + US_VarToStr( Prj_ExtraRunFreePause ) + CRLF
cINI := cINI + 'DEBUGACTIVE ' + iif( PUB_bDebugActive, 'YES', 'NO' ) + CRLF
cINI := cINI + 'MI_BEXEASSOCIATION ' + US_VarToStr( PUB_MI_bExeAssociation ) + CRLF
cINI := cINI + 'MI_CEXEASSOCIATION ' + US_VarToStr( PUB_MI_cExeAssociation ) + CRLF
cINI := cINI + 'MI_NEXEASSOCIATIONICON ' + US_VarToStr( PUB_MI_nExeAssociationIcon ) + CRLF
cINI := cINI + 'MI_BEXEBACKUPOPTION ' + US_VarToStr( PUB_MI_bExeBackupOption ) + CRLF
cINI := cINI + 'MI_BNEWFILE ' + US_VarToStr( PUB_MI_bNewFile ) + CRLF
cINI := cINI + 'MI_NNEWFILESUGGESTED ' + US_VarToStr( PUB_MI_nNewFileSuggested ) + CRLF
cINI := cINI + 'MI_CNEWFILELEYEND ' + US_VarToStr( PUB_MI_cNewFileLeyend ) + CRLF
cINI := cINI + 'MI_NNEWFILEEMPTY ' + US_VarToStr( PUB_MI_nNewFileEmpty ) + CRLF
cINI := cINI + 'MI_CNEWFILEUSERFILE ' + US_VarToStr( PUB_MI_cNewFileUserFile ) + CRLF
cINI := cINI + 'MI_NDESTINATIONPATH ' + US_VarToStr( PUB_MI_nDestinationPath ) + CRLF
cINI := cINI + 'MI_CDESTINATIONPATH ' + US_VarToStr( PUB_MI_cDestinationPath ) + CRLF
cINI := cINI + 'MI_NLEYENDSUGGESTED ' + US_VarToStr( PUB_MI_nLeyendSuggested ) + CRLF
cINI := cINI + 'MI_CLEYENDUSERTEXT ' + US_VarToStr( PUB_MI_cLeyendUserText ) + CRLF
cINI := cINI + 'MI_BDESKTOPSHORTCUT ' + US_VarToStr( PUB_MI_bDesktopShortCut ) + CRLF
cINI := cINI + 'MI_NDESKTOPSHORTCUT ' + US_VarToStr( PUB_MI_nDesktopShortCut ) + CRLF
cINI := cINI + 'MI_BSTARTMENUSHORTCUT ' + US_VarToStr( PUB_MI_bStartMenuShortCut ) + CRLF
cINI := cINI + 'MI_NSTARTMENUSHORTCUT ' + US_VarToStr( PUB_MI_nStartMenuShortCut ) + CRLF
cINI := cINI + 'MI_BLAUNCHAPPLICATION ' + US_VarToStr( PUB_MI_bLaunchApplication ) + CRLF
cINI := cINI + 'MI_NLAUNCHAPPLICATION ' + US_VarToStr( PUB_MI_nLaunchApplication ) + CRLF
cINI := cINI + 'MI_BLAUNCHBACKUPOPTION ' + US_VarToStr( PUB_MI_bLaunchBackupOption ) + CRLF
cINI := cINI + 'MI_BREBOOT ' + US_VarToStr( PUB_MI_bReboot ) + CRLF
cINI := cINI + 'MI_CDEFAULTLANGUAGE ' + US_VarToStr( PUB_MI_cDefaultLanguage ) + CRLF
cINI := cINI + 'MI_NINSTALLERNAME ' + US_VarToStr( PUB_MI_nInstallerName ) + CRLF
cINI := cINI + 'MI_CINSTALLERNAME ' + US_VarToStr( PUB_MI_cInstallerName ) + CRLF
cINI := cINI + 'MI_CIMAGE ' + US_VarToStr( PUB_MI_cImage ) + CRLF
cINI := cINI + 'MI_BSELECTALLPRG ' + US_VarToStr( PUB_MI_bSelectAllPRG ) + CRLF
cINI := cINI + 'MI_BSELECTALLHEA ' + US_VarToStr( PUB_MI_bSelectAllHEA ) + CRLF
cINI := cINI + 'MI_BSELECTALLPAN ' + US_VarToStr( PUB_MI_bSelectAllPAN ) + CRLF
cINI := cINI + 'MI_BSELECTALLDBF ' + US_VarToStr( PUB_MI_bSelectAllDBF ) + CRLF
cINI := cINI + 'MI_BSELECTALLLIB ' + US_VarToStr( PUB_MI_bSelectAllLIB ) + CRLF
FOR i := 1 TO Len( PUB_MI_vFiles )
MI_cFilesAux := US_VarToStr( PUB_MI_vFiles[ i ][ 1 ] )
FOR j := 2 TO Len( PUB_MI_vFiles[ i ] )
MI_cFilesAux := MI_cFilesAux + ' ' + strtran( PUB_MI_vFiles[ i ][ j ], ' ', '|' )
NEXT
cINI := cINI + 'MI_CFILE ' + MI_cFilesAux + CRLF
NEXT
cINI := cINI + 'SHGDATABASE ' + iif( Empty( SHG_Database ), '*NONE*', ChgPathToRelative( SHG_Database ) ) + CRLF
cINI := cINI + 'SHGLASTFOLDERIMG ' + SHG_LastFolderImg + CRLF
cINI := cINI + 'SHGOUTPUTTYPE ' + iif( SHG_CheckTypeOutput, 'YES', 'NO' ) + CRLF
cINI := cINI + 'SHGHTMLFOLDER ' + SHG_HtmlFolder + CRLF
#ifdef QPM_SHG
cINI := cINI + 'SHGWWW ' + VentanaMain.TWWWHlp.Value + CRLF
#endif
#ifdef QPM_HOTRECOVERY
cINI := cINI + 'HOTLASTEXTERNALFILE ' + GBL_HR_cLastExternalFileName + CRLF
#endif
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
cForceRecomp := ''
IF GetProperty( 'VentanaMain', 'GPRGFiles', 'Cell', i, NCOLPRGRECOMP ) == 'R'
cForceRecomp := '<FR> '
ENDIF
cINI := cINI + 'SOURCE ' + cForceRecomp + ChgPathToRelative( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) ) + CRLF
NEXT i
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
cINI := cINI + 'HEAD ' + ChgPathToRelative( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) ) + CRLF
NEXT i
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
cINI := cINI + 'FORM ' + ChgPathToRelative( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) ) + CRLF
NEXT i
FOR i := 1 TO VentanaMain.GDbfFiles.ItemCount
cINI := cINI + 'DBF ' + ChgPathToRelative( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFFULLNAME ) ) + CRLF
NEXT i
DesCargoIncludeLibs( GetSuffix() )
FOR i := 1 TO Len( vSuffix )
FOR j := 1 TO Len( &( 'IncludeLibs'+vSuffix[i][1] ) )
cINI := cINI + 'INCLUDE' + vSuffix[i][1] + ' ' + US_Word( &( 'IncludeLibs'+vSuffix[i][1]+'['+Str(j)+']' ), 1 ) + ' ' + US_Word( &( 'IncludeLibs'+vSuffix[i][1]+'['+Str(j)+']' ), 2 ) + ' ' + ChgPathToRelative( US_WordSubStr( &( 'IncludeLibs'+vSuffix[i][1]+'['+Str(j)+']' ), 3 ) ) + CRLF
NEXT
NEXT
DescargoExcludeLibs( GetSuffix() )
FOR i := 1 TO Len( vSuffix )
FOR j := 1 TO Len( &( 'ExcludeLibs'+vSuffix[i][1] ) )
cINI := cINI + 'EXCLUDE' + vSuffix[i][1] + ' ' + AllTrim( &( 'ExcludeLibs'+vSuffix[i][1]+'['+Str(j)+']' ) ) + CRLF
NEXT
NEXT
IF bCheck
MemoAux := MemoRead( PUB_cProjectFile )
LineasProject := MLCount( MemoAux, 254 )
LineasC := MLCount( cINI, 254 )
IF ! ( LineasC == LineasProject )
bDiff := .T.
ELSE
bDiff := .F.
FOR i := 1 TO LineasC
IF ! ( AllTrim( memoline( cINI, 254, i ) ) == AllTrim( memoline( MemoAux, 254, i ) ) ) .AND. ;
! ( US_Word( memoline( MemoAux, 254, i ), 1 ) == 'PRJ_VERSION' .AND. ;
US_Word( memoline( MemoAux, 254, i ), 1 ) == 'PRJ_VERSION' )
bDiff := .T.
ENDIF
NEXT
ENDIF
IF bDiff
IF ! bAutoEXIT
IF MyMsgYesNo( 'Save changes made to project ' + DBLQT + US_FileNameOnlyNameAndExt( PUB_cProjectFile) + DBLQT + "?" )
IF Empty( PUB_cProjectFile )
QPM_SaveAsProject( .T. )
ELSE
QPM_ProjectFileUnLock()
QPM_MemoWrit( PUB_cProjectFile, cINI )
bWrite := .T.
QPM_ProjectFileLock( PUB_cProjectFile )
ENDIF
cPrj_VersionAnt := GetPrj_Version()
PUB_bDebugActiveAnt := PUB_bDebugActive
ENDIF
ENDIF
ENDIF
IF ! bWrite
IF ! ( cPrj_VersionAnt == GetPrj_Version() )
QPM_ProjectFileUnLock()
ReplacePrj_Version( PUB_cProjectFile, MakePrj_Version() )
QPM_ProjectFileLock( PUB_cProjectFile )
cPrj_VersionAnt := GetPrj_Version()
bWrite := .T.
ENDIF
IF ! ( PUB_bDebugActiveAnt == PUB_bDebugActive )
QPM_ProjectFileUnLock()
ReplaceDebugActive( PUB_cProjectFile, PUB_bDebugActive )
QPM_ProjectFileLock( PUB_cProjectFile )
PUB_bDebugActiveAnt := PUB_bDebugActive
bWrite := .T.
ENDIF
ENDIF
ELSE
QPM_ProjectFileUnLock()
QPM_MemoWrit( PUB_cProjectFile, cINI )
QPM_ProjectFileLock( PUB_cProjectFile )
cPrj_VersionAnt := GetPrj_Version()
PUB_bDebugActiveAnt := PUB_bDebugActive
bWrite := .T.
ENDIF
IF bWrite
MsgInfo( "Project info saved!" )
ENDIF
RETURN .T.
FUNCTION MakePrj_Version()
RETURN SubStr( GetPrj_Version(), 1, 2 ) + ' ' + SubStr( GetPrj_Version(), 3, 2 ) + ' ' + SubStr( GetPrj_Version(), 5, 4 )
FUNCTION CargoIncludeLibs( tipo )
LOCAL i, Exists, cFile, k
VentanaMain.GIncFiles.DeleteAllItems
FOR i := 1 TO Len( &('IncludeLibs'+tipo) )
cFile := US_FileNameOnlyNameAndExt( &('IncludeLibs'+tipo+'['+Str(i)+']') )
Exists := .F.
FOR k := 1 TO VentanaMain.GIncFiles.ItemCount
IF US_Upper( cFile ) == US_Upper( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', k, NCOLEXCNAME ) )
Exists := .T.
EXIT
ENDIF
NEXT
IF ! Exists
VentanaMain.GIncFiles.AddItem( { PUB_nGridImgNone, cFile, '* ' + &('IncludeLibs'+tipo+'['+Str(i)+']') } )
LibPos( VentanaMain.GIncFiles.ItemCount )
IF AScan( &('vExtraFoldersForLibs'+GetSuffix()), US_Upper( US_FileNameOnlyPath( ChgPathToReal( US_WordSubStr( &('IncludeLibs'+tipo+'['+Str(i)+']'), 2 ) ) ) ) ) == 0
AAdd( &('vExtraFoldersForLibs'+GetSuffix()), US_Upper( US_FileNameOnlyPath( ChgPathToReal( US_WordSubStr( &('IncludeLibs'+tipo+'['+Str(i)+']'), 2 ) ) ) ) )
ENDIF
ENDIF
NEXT
LibsActiva := tipo
IF VentanaMain.GDbfFiles.Value == 0
VentanaMain.GDbfFiles.Value := 1
ENDIF
RETURN .T.
FUNCTION LibCheck( item )
LOCAL estado
IF File( ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', item, NCOLINCFULLNAME ), 3 ) ) )
estado := 'Ok'
SetProperty( 'VentanaMain', 'GIncFiles', 'Cell', item, NCOLINCSTATUS, PUB_nGridImgNone )
ELSE
estado := 'Error'
GridImage( 'VentanaMain', 'GIncFiles', item, NCOLINCSTATUS, '+', PUB_nGridImgEquis )
ENDIF
SetProperty( 'VentanaMain', 'GIncFiles', 'Cell', item, NCOLINCFULLNAME, estado + ' ' + US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', item, NCOLINCFULLNAME ), 2 ) )
RETURN estado
FUNCTION LibPos( item, pos )
IF item > 0
IF Empty( pos )
pos := US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', item, NCOLINCFULLNAME ), 2 )
ENDIF
SetProperty( 'VentanaMain', 'GIncFiles', 'Cell', item, NCOLINCFULLNAME, LibCheck( item ) + ' ' + Pos + ' ' + US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', item, NCOLINCFULLNAME ), 3 ) )
ENDIF
VentanaMain.GIncFiles.setfocus
RETURN .T.
FUNCTION DesCargoIncludeLibs( tipo )
LOCAL i
&('IncludeLibs'+tipo) := {}
FOR i := 1 TO VentanaMain.GIncFiles.ItemCount
AAdd( &('IncludeLibs'+tipo), US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) + ' ' + US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 3 ) )
NEXT
VentanaMain.RichEditLib.Value := ''
VentanaMain.GDbfFiles.Value := 0
RETURN .T.
FUNCTION CargoExcludeLibs( tipo )
LOCAL i, Exists, cFile, k
VentanaMain.GExcFiles.DeleteAllItems
FOR i := 1 TO Len( &('ExcludeLibs'+tipo) )
cFile := &('ExcludeLibs'+tipo+'['+Str(i)+']')
Exists := .F.
FOR k := 1 TO VentanaMain.GExcFiles.ItemCount
IF US_Upper( cFile ) == US_Upper( GetProperty( 'VentanaMain', 'GExcFiles', 'Cell', k, NCOLEXCNAME ) )
Exists := .T.
EXIT
ENDIF
NEXT
IF ! Exists
VentanaMain.GExcFiles.AddItem( { PUB_nGridImgNone, cFile } )
ENDIF
NEXT
LibsActiva := tipo
RETURN .T.
FUNCTION DescargoExcludeLibs( tipo )
LOCAL i
&('ExcludeLibs'+tipo) := {}
FOR i := 1 TO VentanaMain.GExcFiles.ItemCount
AAdd( &('ExcludeLibs'+tipo), GetProperty( 'VentanaMain', 'GExcFiles', 'Cell', i, NCOLEXCNAME ) )
NEXT
RETURN .T.
FUNCTION QPM_SaveAsProject( isNew )
LOCAL TmpName
IF Empty( PUB_cProjectFile ) .AND. Empty( isNew )
MsgStop( 'No project is open.' )
RETURN ''
ENDIF
TmpName := AllTrim ( PutFile( { {'QPM Project Files (*.qpm)','*.qpm'} }, iif( ! Empty( isNew ) .AND. isNew, 'Create New Project', 'Save Project' ), cLastProjectFolder, .T. ) )
IF ! Empty( TmpName )
IF ! ( US_Upper( US_FileNameOnlyExt(Tmpname) ) == US_Upper( 'QPM' ) )
TmpName := TmpName + '.qpm'
ENDIF
PUB_cProjectFile := TmpName
IF ! Empty( isNew ) .AND. isNew
VentanaMain.TProjectFolder.Value := US_FileNameOnlyPath( TmpName )
ENDIF
PUB_cThisFolder := US_FileNameOnlyPath( PUB_cProjectFile )
VentanaMain.Title := 'QPM (QAC based Project Manager) - Project Manager For MiniGui (' + QPM_VERSION_DISPLAY_LONG + ') [ ' + AllTrim ( PUB_cProjectFile ) + ' ]'
QPM_SaveProject()
cLastProjectFolder := US_FileNameOnlyPath( TmpName )
ENDIF
RETURN TmpName
FUNCTION QPM_EXIT( bWait )
LOCAL r
IF ! hb_IsLogical( bWait )
bWait := .F.
ENDIF
IF bWait .AND. BUILD_IN_PROGRESS
RETURN .F.
ENDIF
IF bWaitForBuild
DO WHILE BUILD_IN_PROGRESS
DO EVENTS
ENDDO
ENDIF
#ifdef QPM_SHG
IF QPM_Wait( 'SHG_CheckSave()', 'Checking changes in Hlp Topics ...' )
IF SHG_BaseOk
IF US_FileSize( US_FileNameOnlyPathAndName( SHG_Database ) + '.dbt' ) > SHG_DbSize
QPM_Wait( 'SHG_PackDatabase()' )
ENDIF
ENDIF
IF ! PUB_bLite .AND. ! bWaitForBuild .AND. ( ! Empty( PUB_cProjectFile ) .OR. ! Empty( PUB_cProjectFolder ) )
r := MyMsgYesNo( 'Are you sure?', 'EXIT QPM' )
ELSE
r := .T.
ENDIF
ELSE
r := .F.
ENDIF
#else
r := .T.
#endif
IF r == .T.
QPM_Wait( 'QPM_SaveProject( .T. )', 'Checking for save ...' )
CloseDbfAutoView()
DoMethod( 'VentanaMain', 'Release' )
ENDIF
QPM_ProjectFileUnLock()
// ferase( PUB_cQPM_Folder + DEF_SLASH + 'hha.dll' )
// ferase( PUB_cQPM_Folder + DEF_SLASH + 'dtoolbar.dbf' )
// ferase( PUB_cQPM_Folder + DEF_SLASH + 'hmi.ini' )
// ferase( PUB_cQPM_Folder + DEF_SLASH + 'dbfview.ini' )
// ferase( PUB_cQPM_Folder + DEF_SLASH + 'dbfview.lng' )
IF bAutoEXIT .AND. ! Empty( PUB_cAutoLog )
PUB_cAutoLogTmp := MemoRead( PUB_cAutoLog )
PUB_cAutoLogTmp += CRLF
PUB_cAutoLogTmp += Replicate( '=', 80 )
PUB_cAutoLogTmp += CRLF
QPM_MemoWrit( PUB_cAutoLog, PUB_cAutoLogTmp )
ENDIF
RETURN .F.
FUNCTION QPM_Build()
RETURN QPM_Wait( 'QPM_Build2()', 'Prepare for build ...' )
FUNCTION QPM_Build2()
LOCAL bExtraFolderSearchRoot
LOCAL bIsCpp := .F.
LOCAL bld_cmd
LOCAL cAux
LOCAL cB_CPP_BIN
LOCAL cB_DLLTOOL
LOCAL cB_DLL_ERR
LOCAL cB_EXE
LOCAL cB_FILLER
LOCAL cB_OUTPUT
LOCAL cB_RC1_PTH
LOCAL cB_RC1_SHR
LOCAL cB_RC2_SHR
LOCAL cB_RCC_ERR
LOCAL cB_RCF_ERR
LOCAL cB_RCM_ERR
LOCAL cB_RC_COMP
LOCAL cB_RC_CONF
LOCAL cB_RC_FOLD
LOCAL cB_RC_HBPR
LOCAL cB_RC_MAIN
LOCAL cB_RC_MA_S
LOCAL cB_RC_MINI
LOCAL cB_RC_MIPR
LOCAL cB_TMP_ERR
LOCAL cB_US_MAKE
LOCAL cB_US_RES
LOCAL cDebugPath := ''
LOCAL cExtraFoldersC := ''
LOCAL cExtraFoldersHB := ''
LOCAL cInputName := ''
LOCAL cInputNameDisplay := ''
LOCAL cInputNameLong := ''
LOCAL cInputReImpDef := ''
LOCAL cInputReImpName := ''
LOCAL cInputReImpNameDisplay := ''
LOCAL cOldFolder := GetCurrentFolder()
LOCAL cOutputName
LOCAL cOutputNameDisplay
LOCAL cRCFileName
LOCAL HeaFILES := {}
LOCAL i
LOCAL lIncludeMiniPrintRC
LOCAL MemoAux
LOCAL MemoObj
LOCAL nCant
LOCAL nLastExtraFolderSearchAdded := 0
LOCAL OBJFOLDER
LOCAL Out := ''
LOCAL PanFILES := {}
LOCAL PRGFILES := {}
LOCAL vConcatIncludeC := {}
LOCAL vConcatIncludeHB := {}
LOCAL vDebugPath := {}
LOCAL vLibExcludeFiles := {}
LOCAL vLibIncludeFiles := {}
LOCAL vTemp
LOCAL vTemp2
LOCAL vTemp3
LOCAL w_group
LOCAL w_hay
LOCAL w_LibFolders
BUILD_IN_PROGRESS := .T.
IF Empty( PUB_cProjectFile )
MsgStop( 'You must save the project before building it.' )
BUILD_IN_PROGRESS := .F.
RETURN .T.
ENDIF
QPM_CargoLibraries()
PUB_cConvert := ''
PUB_bForceRunFromMsgOk := .F.
IF bRunApp
MsgStop( 'Program running, you need to stop or kill the process before building it.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
Q_SCRIPT_FILE := AddDBLQT( SCRIPT_FILE )
Q_TEMP_LOG := AddDBLQT( TEMP_LOG )
Q_END_FILE := AddDBLQT( END_FILE )
Q_MAKE_FILE := AddDBLQT( MAKE_FILE )
Q_PROGRESS_LOG := AddDBLQT( PROGRESS_LOG )
Q_QPM_TMP_RC := AddDBLQT( QPM_TMP_RC )
VentanaMain.TabFiles.Value := nPageSysout
TabChange( 'FILES' )
vTemp := Array( ADIR( PUB_cProjectFolder + DEF_SLASH + '_'+replicate('?',13)+PUB_cCharFileNameTemp+'*.*' ) )
vTemp2 := Array( ADIR( GetCppFolder() + DEF_SLASH + 'BIN' + DEF_SLASH + '_'+replicate('?',13)+PUB_cCharFileNameTemp+'*.*' ) )
vTemp3 := Array( ADIR( SubStr( GetCppFolder(), 1, 2 ) + DEF_SLASH + '_'+replicate('?',13)+PUB_cCharFileNameTemp+'*.*' ) )
ADIR( PUB_cProjectFolder + DEF_SLASH + '_'+replicate('?',13)+PUB_cCharFileNameTemp+'*.*', vTemp )
ADIR( GetCppFolder() + DEF_SLASH + 'BIN' + DEF_SLASH + '_'+replicate('?',13)+PUB_cCharFileNameTemp+'*.*', vTemp2 )
ADIR( SubStr( GetCppFolder(), 1, 2 ) + DEF_SLASH + '_'+replicate('?',13)+PUB_cCharFileNameTemp+'*.*', vTemp3 )
FOR i := 1 TO Len( vTemp )
vTemp[i] := PUB_cProjectFolder + DEF_SLASH + vTemp[i]
NEXT
FOR i := 1 TO Len( vTemp2 )
AAdd( vTemp, GetCppFolder() + DEF_SLASH + 'BIN' + DEF_SLASH + vTemp2[i] )
NEXT
FOR i := 1 TO Len( vTemp3 )
AAdd( vTemp, SubStr( GetCppFolder(), 1, 2 ) + DEF_SLASH + vTemp3[i] )
NEXT
FOR i := 1 TO Len( vTemp )
IF Val( SubStr( US_FileNameOnlyName( vTemp[i] ), 2, 13 ) ) < ( Val( SubStr( PUB_cSecu, 1, 13 ) ) - 100000 )
ferase( vTemp[i] )
ENDIF
NEXT
IF Prj_Radio_OutputType == DEF_RG_IMPORT
PUB_cConvert := US_Upper( US_FileNameOnlyExt( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) ) ) + ' ' + OutputExt()
cInputName := US_ShortName( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) )
cInputNameDisplay := ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) )
cInputNameLong := US_FileNameOnlyPath( cInputName ) + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputNameDisplay )
IF GetProperty( 'VentanaMain', 'Check_Reimp', 'Value' )
IF ! File( ChgPathToReal( GetProperty( 'VentanaMain', 'TReimportLib', 'Value' ) ) )
MsgStop( 'Library For ReImport Not Found: ' + ChgPathToReal( GetProperty( 'VentanaMain', 'TReimportLib', 'Value' ) ) )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
cInputReImpNameDisplay := ChgPathToReal( GetProperty( 'VentanaMain', 'TReimportLib', 'Value' ) )
cInputReImpName := US_ShortName( cInputReImpNameDisplay )
cInputReImpDef := PUB_cQPM_Folder + DEF_SLASH + US_FileNameOnlyName( GetProperty( 'VentanaMain', 'TReimportLib', 'Value' ) ) + '.def'
ENDIF
ENDIF
IF OutputExt() == 'LIB' .AND. At( '-', US_ShortName( PUB_cProjectFolder ) ) > 0
MsgStop( "Utility TLIB.EXE doesn't work properly when a file's path contains hyphens [-]." + CRLF + "Please, change the name of the project's folder." )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
IF At( '(', US_ShortName( PUB_cProjectFolder ) ) > 0 .OR. At( ')', US_ShortName( PUB_cProjectFolder ) ) > 0
MsgStop( "Utility US_MAKE.EXE doesn't work properly when a file's path contains parentheses [()] characters." + CRLF + "Please, change the name of the project's folder." )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
DO EVENTS
FOR i := 1 TO VentanaMain.GIncFiles.itemcount
LibCheck( i )
NEXT
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + '****** BUILD START' + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "Content of " + cProjectFileName + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + MemoRead( cProjectFileName ) + CRLF + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + replicate( '>',80 ) + CRLF )
ENDIF
PUB_xHarbourMT := ''
DO CASE
CASE GetCppSuffix() == DefineMinGW
IsBorland := .F.
IsMinGW := .T.
IsPelles := .F.
CASE GetCppSuffix() == DefinePelles
IsBorland := .F.
IsMinGW := .F.
IsPelles := .T.
CASE GetCppSuffix() == DefineBorland
IsBorland := .T.
IsMinGW := .F.
IsPelles := .F.
OTHERWISE
US_Log( 'Error 5288' )
ENDCASE
cRCFileName := Get_RC_FileName()
DO CASE
CASE Prj_Radio_OutputRename == DEF_RG_NEWNAME .AND. Empty( Prj_Text_OutputRenameNewName )
MsgStop( 'Filename For Output Rename Operation is Empty.' + CRLF + 'Look at ' + PUB_MenuPrjOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE Prj_Radio_OutputCopyMove # DEF_RG_NONE .AND. Empty( Prj_Text_OutputCopyMoveFolder )
MsgStop ( 'Folder for Output Copy/Move operation is empty.' + CRLF + 'Look at ' + PUB_MenuPrjOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE Prj_Radio_OutputCopyMove # DEF_RG_NONE .AND. ! US_IsDirectory( Prj_Text_OutputCopyMoveFolder )
MsgStop ( 'Folder for Output Copy/Move operation is not valid.' + CRLF + 'Look at ' + PUB_MenuPrjOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE Empty( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) )
MsgStop ( 'PRG list is Empty.' + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE Empty( GetMiniGuiFolder() )
MsgStop ( 'Folder for Minigui in ' + vSuffix[ AScan( vSuffix, { |x| x[1] == GetSuffix() } ) ][2] + ' is Empty.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE Empty( GetCppFolder() )
MsgStop ( 'Folder for C++ Compiler in ' + vSuffix[ AScan( vSuffix, { |x| x[1] == GetSuffix() } ) ][2] + ' is Empty.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE ! QPM_IsXHarbour() .AND. Empty( GetHarbourFolder() )
MsgStop ( 'Folder for Harbour in ' + vSuffix[ AScan( vSuffix, { |x| x[1] == GetSuffix() } ) ][2] + ' is Empty.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE QPM_IsXHarbour() .AND. Empty( GetHarbourFolder() )
MsgStop ( 'Folder for xHarbour in ' + vSuffix[ AScan( vSuffix, { |x| x[1] == GetSuffix() } ) ][2] + ' is Empty.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE ! Empty( GetMiniGuiFolder() ) .AND. !QPM_DirValid( US_ShortName( GetMiniGuiFolder() ), US_ShortName( GetMiniGuiLibFolder() ), GetMiniGuiSuffix() + GetCppSuffix() )
MsgStop ( 'Minigui folder is not valid.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE ! Empty( GetCppFolder() ) .AND. !QPM_DirValid( US_ShortName( GetCppFolder() ), US_ShortName( GetCppLibFolder() ), 'C_'+GetMiniGuiSuffix() + GetCppSuffix() )
MsgStop ( 'C++ Compiler folder is not valid.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE ! Empty( GetHarbourFolder() ) .AND. !QPM_IsXHarbour() .AND. !QPM_DirValid( US_ShortName( GetHarbourFolder() ), US_ShortName( GetHarbourLibFolder() ), GetSuffix() )
MsgStop ( 'Harbour folder is not valid.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
CASE ! Empty( GetHarbourFolder() ) .AND. QPM_IsXHarbour() .AND. !QPM_DirValid( US_ShortName( GetHarbourFolder() ), US_ShortName( GetHarbourLibFolder() ), GetSuffix() )
MsgStop ( 'xHarbour folder is not valid.' + CRLF + 'Look at ' + PUB_MenuGblOptions + ' of Settings menu.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDCASE
DO EVENTS
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF US_Upper( US_FileNameOnlyExt( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) ) ) ) == 'CPP'
bIsCpp := .T.
ENDIF
IF AScan( PRGFILES, { |x| US_Upper( US_FileNameOnlyName( x ) ) == US_Upper( US_FileNameOnlyName( AllTrim(GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME )) ) ) } ) > 0
MsgStop( "Duplicate file name '"+US_FileNameOnlyName( AllTrim(GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME )) )+"' in diferent directories or with diferent extensions (.PRG and .C)."+CRLF+'The object generated for the second file will override the object of the previous file.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
AAdd( PRGFILES, ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) ) )
IF ! File( PRGFILES[ i ] )
MsgStop( "File '" + PRGFILES[ i ] + "' not found!" )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
IF PUB_bDebugActive
IF AScan( vDebugPath, { |x| US_Upper( x ) == US_Upper( AllTrim( US_FileNameOnlyPath( PRGFILES[ i ] ) ) ) } ) == 0
AAdd( vDebugPath, AllTrim( US_FileNameOnlyPath( PRGFILES[ i ] ) ) )
ENDIF
ENDIF
NEXT i
// This handles the lack of a default GT in HMG 3.x
IF IsMinGW .AND. GetMiniGuiSuffix() == DefineMiniGui3 .AND. Prj_Radio_OutputType != DEF_RG_IMPORT
IF Prj_Check_Console
QPM_Memowrit( QPM_GET_DEF, 'ANNOUNCE GT_SYS' + CRLF + 'REQUEST HB_GT_WIN_DEFAULT' + CRLF )
IF File( QPM_GET_DEF )
AAdd( PRGFILES, QPM_GET_DEF )
ELSE
MsgInfo( "Warning, QPM can't add QPM_GT.PRG auxiliary file to your project." + CRLF + ;
"In order for your app to work properly, you may need to add " + CRLF + ;
DBLQT + "REQUEST HB_GT_WIN_DEFAULT" + DBLQT + " before Main()." )
ENDIF
ELSE
QPM_Memowrit( QPM_GET_DEF, 'ANNOUNCE GT_SYS' + CRLF + 'REQUEST HB_GT_GUI_DEFAULT' + CRLF )
IF File( QPM_GET_DEF )
AAdd( PRGFILES, QPM_GET_DEF )
ELSE
MsgInfo( "Warning, QPM can't add QPM_GT.PRG auxiliary file to your project." + CRLF + ;
"In order for your app to work properly, you may need to add " + CRLF + ;
DBLQT + "REQUEST HB_GT_GUI_DEFAULT" + DBLQT + " before Main()." )
ENDIF
ENDIF
ENDIF
DO EVENTS
IF PUB_bDebugActive
AEval( vDebugPath, { |x| cDebugPath := cDebugPath + x + ';' } )
cDebugPath := cDebugPath + DEF_SLASH
ENDIF
IF !bAutoEXIT
IF bIsCpp .AND. GetCppSuffix() == DefinePelles
MsgStop( 'Error, your project includes C++ files and Pelles C does not support them.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
IF bIsCpp .AND. bWarningCpp .AND. GetCppSuffix() == DefineMinGW
MsgInfo( 'Warning, your project includes C++ files. You need to download a full version of MinGW.' )
bWarningCpp := .F.
ENDIF
ENDIF
DO EVENTS
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
IF AScan( PanFILES, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( US_FileNameOnlyNameAndExt( AllTrim(GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME )) ) ) } ) > 0
MsgStop( "Duplicate form name '"+US_FileNameOnlyNameAndExt( AllTrim(GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME )) )+"' in diferents directories"+CRLF+'Process canceled.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
AAdd( PANFILES, ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) ) )
IF ! File( PanFILES[ i ] )
MsgStop( "Form '"+PanFILES[ i ]+"' not found" )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
NEXT i
DO EVENTS
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF AScan( HeaFILES, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( US_FileNameOnlyNameAndExt( AllTrim(GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME )) ) ) } ) > 0
MsgStop( "Duplicate header name '"+US_FileNameOnlyNameAndExt( AllTrim(GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME )) )+"' in diferents directories"+CRLF+'Process canceled.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
AAdd( HeaFILES, ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) ) )
IF ! File( HeaFILES[ i ] )
MsgStop( "Header (include) '"+HeaFILES[ i ]+"' not found!" )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
NEXT i
DO EVENTS
FOR i := 1 TO VentanaMain.GIncFiles.ItemCount
vTemp := US_Upper( ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 3 ) ) )
IF AScan( vLibIncludeFiles, vTemp ) == 0
AAdd( vLibIncludeFiles, vTemp )
IF ! File( vTemp )
MsgStop( "File '" + vTemp + "' not found!" )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
ENDIF
NEXT i
FOR i := 1 TO VentanaMain.GExcFiles.ItemCount
vTemp := US_Upper( AllTrim( GetProperty( 'VentanaMain', 'GExcFiles', 'Cell', i, NCOLEXCNAME ) ) )
IF AScan( vLibExcludeFiles, vTemp ) == 0
AAdd( vLibExcludeFiles, vTemp )
ENDIF
NEXT i
AAdd( vConcatIncludeHB, US_ShortName( GetHarbourFolder() ) + DEF_SLASH + 'INCLUDE' )
AAdd( vConcatIncludeHB, US_ShortName( GetMiniGuiFolder() ) + DEF_SLASH + 'INCLUDE' )
AAdd( vConcatIncludeHB, US_ShortName( PUB_cProjectFolder ) )
AAdd( vConcatIncludeC, US_ShortName( GetCppFolder() ) + DEF_SLASH + 'INCLUDE' )
IF IsPelles
AAdd( vConcatIncludeC, US_ShortName( GetCppFolder() ) + DEF_SLASH + 'INCLUDE'+DEF_SLASH+'WIN' )
ENDIF
AAdd( vConcatIncludeC, US_ShortName( GetHarbourFolder() ) + DEF_SLASH + 'INCLUDE' )
AAdd( vConcatIncludeC, US_ShortName( GetMiniGuiFolder() ) + DEF_SLASH + 'INCLUDE' )
AAdd( vConcatIncludeC, US_ShortName( PUB_cProjectFolder ) )
FOR i := 1 TO Len( vConcatIncludeHB )
IF ! Empty( vConcatIncludeHB[ i ] )
IF US_IsRootFolder( vConcatIncludeHB[ i ] )
bExtraFolderSearchRoot := .T.
ELSE
bExtraFolderSearchRoot := .F.
ENDIF
DO CASE
CASE IsMinGW
cExtraFoldersHB := cExtraFoldersHB + ';' + vConcatIncludeHB[i] + iif( bExtraFolderSearchRoot, DEF_SLASH, '' )
CASE IsPelles
cExtraFoldersHB := cExtraFoldersHB + ';' + vConcatIncludeHB[i] + iif( bExtraFolderSearchRoot, DEF_SLASH, '' )
CASE IsBorland
cExtraFoldersHB := cExtraFoldersHB + ';' + vConcatIncludeHB[i] + iif( bExtraFolderSearchRoot, DEF_SLASH, '' )
OTHERWISE
US_Log( 'Error 5443')
ENDCASE
ENDIF
NEXT i
DO EVENTS
FOR i := 1 TO Len( vConcatIncludeC )
IF ! Empty( vConcatIncludeC[i] )
IF US_IsRootFolder( vConcatIncludeC[i] )
bExtraFolderSearchRoot := .T.
ELSE
bExtraFolderSearchRoot := .F.
ENDIF
DO CASE
CASE IsMinGW
cExtraFoldersC := cExtraFoldersC + ' -I ' + vConcatIncludeC[i] + iif( bExtraFolderSearchRoot, DEF_SLASH, '' )
CASE IsPelles
cExtraFoldersC := cExtraFoldersC + ' /I' + vConcatIncludeC[i] + iif( bExtraFolderSearchRoot, DEF_SLASH, '' )
CASE IsBorland
cExtraFoldersC := cExtraFoldersC + ';' + vConcatIncludeC[i] + iif( bExtraFolderSearchRoot, DEF_SLASH, '' )
OTHERWISE
US_Log( 'Error 5444')
ENDCASE
ENDIF
NEXT i
DO EVENTS
FOR i := 1 TO Len( vExtraFoldersForSearchHB )
IF ! Empty( vExtraFoldersForSearchHB[i] )
cAux := US_ShortName( vExtraFoldersForSearchHB[i] )
IF ! Empty( cAux )
nLastExtraFolderSearchAdded := i
IF US_IsRootFolder( vExtraFoldersForSearchHB[ i ] )
bExtraFolderSearchRoot := .T.
ELSE
bExtraFolderSearchRoot := .F.
ENDIF
AAdd( vConcatIncludeHB, cAux )
IF bExtraFolderSearchRoot
cAux += DEF_SLASH
ENDIF
IF ! cAux $ cExtraFoldersHB
DO CASE
CASE IsMinGW
cExtraFoldersHB := cExtraFoldersHB + ';' + cAux
CASE IsPelles
cExtraFoldersHB := cExtraFoldersHB + ';' + cAux
CASE IsBorland
cExtraFoldersHB := cExtraFoldersHB + ';' + cAux
OTHERWISE
US_Log( 'Error 5445' )
ENDCASE
ENDIF
ENDIF
ENDIF
NEXT i
// INI - El siguiente es un parche para cuando el ultimo folder a agregar en Search es del formato 'C:',
// ya que hay que agregarle algun folder del formato 'C:\something' para que no cancele
IF nLastExtraFolderSearchAdded > 0 .AND. nLastExtraFolderSearchAdded <= Len( vExtraFoldersForSearchHB ) .AND. ;
US_IsRootFolder( vExtraFoldersForSearchHB[ nLastExtraFolderSearchAdded ] )
DO CASE
CASE IsMinGW
cExtraFoldersHB := cExtraFoldersHB + ';' + US_ShortName( DiskName() + ':' + DEF_SLASH + '_' + PUB_cSecu + 'SearchBug' )
CASE IsPelles
cExtraFoldersHB := cExtraFoldersHB + ';' + US_ShortName( DiskName() + ':' + DEF_SLASH + '_' + PUB_cSecu + 'SearchBug' )
CASE IsBorland
cExtraFoldersHB := cExtraFoldersHB + ';' + US_ShortName( DiskName() + ':' + DEF_SLASH + '_' + PUB_cSecu + 'SearchBug' )
OTHERWISE
US_Log( 'Error 5446' )
ENDCASE
ENDIF
FOR i := 1 TO Len( vExtraFoldersForSearchC )
IF ! Empty( vExtraFoldersForSearchC[i] )
cAux := US_ShortName( vExtraFoldersForSearchC[i] )
IF ! Empty( cAux )
nLastExtraFolderSearchAdded := i
IF US_IsRootFolder( vExtraFoldersForSearchC[ i ] )
bExtraFolderSearchRoot := .T.
ELSE
bExtraFolderSearchRoot := .F.
ENDIF
AAdd( vConcatIncludeHB, cAux )
IF bExtraFolderSearchRoot
cAux += DEF_SLASH
ENDIF
IF ! cAux $ cExtraFoldersC
DO CASE
CASE IsMinGW
cExtraFoldersC := cExtraFoldersC + ' -I' + cAux
CASE IsPelles
cExtraFoldersC := cExtraFoldersC + ' /I' + cAux
CASE IsBorland
cExtraFoldersC := cExtraFoldersC + ';' + cAux
OTHERWISE
US_Log( 'Error 5447' )
ENDCASE
ENDIF
ENDIF
ENDIF
NEXT i
// INI - El siguiente es un parche para cuando el ultimo folder a agregar en Search es del formato 'C:',
// ya que hay que agregarle algun folder del formato 'C:\something' para que no cancele
IF nLastExtraFolderSearchAdded > 0 .AND. nLastExtraFolderSearchAdded <= Len( vExtraFoldersForSearchC ) .AND. ;
US_IsRootFolder( vExtraFoldersForSearchC[ nLastExtraFolderSearchAdded ] )
DO CASE
CASE IsMinGW
cExtraFoldersC := cExtraFoldersC + ' -I' + US_ShortName( DiskName() + ':' + DEF_SLASH + '_' + PUB_cSecu + 'SearchBug' )
CASE IsPelles
cExtraFoldersC := cExtraFoldersC + ' /I' + US_ShortName( DiskName() + ':' + DEF_SLASH + '_' + PUB_cSecu + 'SearchBug' )
CASE IsBorland
cExtraFoldersC := cExtraFoldersC + ';' + US_ShortName( DiskName() + ':' + DEF_SLASH + '_' + PUB_cSecu + 'SearchBug' )
OTHERWISE
US_Log( 'Error 5448' )
ENDCASE
ENDIF
DO CASE
CASE IsMinGW
cExtraFoldersHB := SubStr( cExtraFoldersHB, 2 ) // get rid of first ';'
cExtraFoldersC := SubStr( cExtraFoldersC, 2 ) // get rid of first ' '
CASE IsPelles
cExtraFoldersHB := SubStr( cExtraFoldersHB, 2 ) // get rid of first ';'
cExtraFoldersC := SubStr( cExtraFoldersC, 2 ) // get rid of first ' '
CASE IsBorland
cExtraFoldersHB := SubStr( cExtraFoldersHB, 2 ) // get rid of first ';'
cExtraFoldersC := SubStr( cExtraFoldersC, 2 ) // get rid of first ';'
OTHERWISE
US_Log( 'Error 5449')
ENDCASE
DO EVENTS
ferase( SCRIPT_FILE )
ferase( END_FILE )
ferase( TEMP_LOG )
ferase( PROGRESS_LOG )
ProgLength := 0
SetProperty( 'VentanaMain', 'EraseOBJ', 'enabled', .F. )
SetProperty( 'VentanaMain', 'EraseALL', 'enabled', .F. )
SetProperty( 'VentanaMain', 'open', 'enabled', .F. )
SetProperty( 'VentanaMain', 'build', 'enabled', .F. )
SetProperty( 'VentanaMain', 'BVerChange', 'enabled', .F. )
SetProperty( 'VentanaMain', 'OverrideCompile', 'enabled', .F. )
SetProperty( 'VentanaMain', 'OverrideLink', 'enabled', .F. )
IF Prj_Radio_OutputType == DEF_RG_EXE
SetProperty( 'VentanaMain', 'run', 'enabled', .F. )
ENDIF
PUB_bIsProcessing := .T.
VentanaMain.RichEditSysout.Value := ''
SetMGWaitHide()
DO EVENTS
ferase( PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'MSG.SYSIN' )
SetCurrentFolder( PUB_cProjectFolder )
IF ! US_CreateFolder( GetObjFolder() )
US_Log( 'Unable to create OBJ folder: ' + GetObjFolder() )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDIF
SetCurrentFolder( cOldFolder )
OBJFOLDER := US_ShortName( GetObjFolder() )
cOutputName := GetOutputModuleName( .F. )
cOutputNameDisplay := GetOutputModuleName( .T. )
/*
* Out contiene los comandos que luego se grabarán en
* Temp.Bc para ser ejecutados por MAKE.EXE desde Build.bat
*/
Out := Out + 'APP_NAME = ' + cOutputName + CRLF
IF Prj_Radio_OutputType == DEF_RG_EXE .OR. Prj_Radio_OutputType == DEF_RG_LIB
IF VentanaMain.GHeaFiles.itemcount > 0
xRefPrgHea( vConcatIncludeC )
ENDIF
IF VentanaMain.GPanFiles.itemcount > 0
xRefPrgFmg( vConcatIncludeHB )
ENDIF
ENDIF
MemoAux := MemoRead( PROGRESS_LOG )
QPM_MemoWrit( PROGRESS_LOG, MemoAux + US_TimeDis( Time() ) + ' - Checking libraries ...' + CRLF )
DO EVENTS
/*
* Variables y aplicaciones a utilizar en Temp.Bc
*/
DO CASE
CASE IsMinGW
Out := Out + 'IMPDEF_MGW_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_PEXPORTS.EXE' + DBLQT + CRLF
Out := Out + 'IMPLIB_MGW_EXE = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'DLLTOOL.EXE' + DBLQT + CRLF
Out := Out + 'LSTA_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_OBJDUMP.EXE' + DBLQT + CRLF
Out := Out + 'COMPILATOR_C = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_SLASH.EXE' + DBLQT + CRLF
Out := Out + 'ILINK_EXE = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'GCC.EXE' + DBLQT + CRLF
Out := Out + 'TLIB_EXE = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'AR.EXE' + DBLQT + CRLF
Out := Out + 'RESOURCE_COMP = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'WINDRES.EXE' + DBLQT + CRLF
Out := Out + 'REIMPORT_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_REIMP.EXE' + DBLQT + CRLF
Out := Out + 'DIR_COMPC = ' + DBLQT + US_ShortName( GetCppFolder() ) + DBLQT + CRLF
Out := Out + 'DIR_HARBOUR = ' + DBLQT + US_ShortName( GetHarbourFolder() ) + DBLQT + CRLF
CASE IsPelles
Out := Out + 'IMPDEF_PC_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_IMPDEF.EXE' + DBLQT + CRLF
Out := Out + 'IMPLIB_PC_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_POLIB.EXE' + DBLQT + CRLF
Out := Out + 'LSTLIB_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_POLIB.EXE' + DBLQT + CRLF
Out := Out + 'COMPILATOR_C = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'POCC.EXE' + DBLQT + CRLF
Out := Out + 'ILINK_EXE = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'POLINK.EXE' + DBLQT + CRLF
Out := Out + 'TLIB_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_POLIB.EXE' + DBLQT + CRLF
Out := Out + 'RESOURCE_COMP = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'PORC.EXE' + DBLQT + CRLF
CASE IsBorland
Out := Out + 'IMPDEF_BCC_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_IMPDEF.EXE' + DBLQT + CRLF
Out := Out + 'IMPLIB_BCC_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_IMPLIB.EXE' + DBLQT + CRLF
Out := Out + 'LSTLIB_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_TLIB.EXE' + DBLQT + CRLF
Out := Out + 'COMPILATOR_C = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'BCC32.EXE' + DBLQT + CRLF
Out := Out + 'ILINK_EXE = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'ILINK32.EXE' + DBLQT + CRLF
Out := Out + 'TLIB_EXE = ' + DBLQT + US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_TLIB.EXE' + DBLQT + CRLF
Out := Out + 'RESOURCE_COMP = ' + DBLQT + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'BRCC32.EXE' + DBLQT + CRLF
OTHERWISE
US_Log( 'Error 5549' )
ENDCASE
Out := Out + 'HARBOUR_EXE = ' + DBLQT + US_ShortName( GetHarbourFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'HARBOUR.EXE' + DBLQT + CRLF
Out := Out + 'US_MSG_EXE = ' + DBLQT + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_MSG.EXE' + DBLQT + CRLF
Out := Out + 'US_UPX_EXE = ' + DBLQT + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_UPX.EXE' + DBLQT + CRLF
Out := Out + 'US_SHELL_EXE = ' + DBLQT + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_SHELL.EXE' + DBLQT + CRLF
Out := Out + 'DIR_HB_INCLUDE = ' + cExtraFoldersHB + CRLF
Out := Out + 'DIR_C_INCLUDE = ' + cExtraFoldersC + CRLF
Out := Out + 'DIR_MINIGUI = ' + US_ShortName( GetMiniGuiFolder() ) + CRLF
Out := Out + 'DIR_MINIGUI_LIB = ' + GetMiniguiLibFolder() + CRLF
Out := Out + 'DIR_MINIGUI_RES = ' + US_ShortName( GetMiniGuiFolder() + DEF_SLASH + 'RESOURCES' ) + CRLF
Out := Out + 'DIR_COMPC_LIB = ' + GetCppLibFolder() + CRLF
Out := Out + 'DIR_HARBOUR_LIB = ' + GetHarbourLibFolder() + CRLF
IF IsBorland
Out := Out + 'DIR_COMPC_LIB2 = ' + GetCppLibFolder() + DEF_SLASH + 'PSDK' + CRLF
ENDIF
Out := Out + 'PAUSE_EXE = ' + 'PAUSE' + CRLF
Out := Out + 'DIR_OBJECTS = ' + OBJFOLDER + CRLF
Out := Out + 'C_DIR = ' + OBJFOLDER + CRLF
Out := Out + 'USER_FLAGS_HARB = ' + GetProperty( 'VentanaMain', 'OverrideCompile', 'value' ) + CRLF
Out := Out + 'USER_FLAGS_LINK = ' + GetProperty( 'VentanaMain', 'OverrideLink', 'value' ) + CRLF
IF Prj_Radio_OutputType != DEF_RG_IMPORT
cPrj_Version := GetPrj_Version()
IF Empty( GetProperty( 'VentanaMain', 'OverrideCompile', 'value' ) )
Out := Out + 'HARBOUR_FLAGS = /D__QPM_VERSION__="' + "'" + QPM_VERSION_NUMBER_SHORT + "'" + '" /D__PRJ_VERSION__="'+"'"+cPrj_Version+"'"+'" /D__PROJECT_FOLDER__="'+"'"+VentanaMain.TProjectFolder.Value+"'"+ '" /n' + iif(PUB_bDebugActive,' /b','') + ' /i$(DIR_HB_INCLUDE) ' + CRLF
ELSE
Out := Out + 'HARBOUR_FLAGS = /D__QPM_VERSION__="' + "'" + QPM_VERSION_NUMBER_SHORT + "'" + '" /D__PRJ_VERSION__="'+"'"+cPrj_Version+"'"+'" /D__PROJECT_FOLDER__="'+"'"+VentanaMain.TProjectFolder.Value+"'"+ '" /n' + iif(PUB_bDebugActive,' /b','') + ' $(USER_FLAGS_HARB) /i$(DIR_HB_INCLUDE) ' + CRLF
ENDIF
IF PUB_xHarbourMT == 'MT'
DO CASE
CASE IsMinGW
Out := Out + 'COBJFLAGS = $(DIR_C_INCLUDE) -Wall -c' + CRLF
CASE IsPelles
Out := Out + 'COBJFLAGS = -c -O2 -tWM -M $(DIR_C_INCLUDE) -L' + GetCppLibFolder() + CRLF
CASE IsBorland
Out := Out + 'COBJFLAGS = -c -O2 -tWM -M -I$(DIR_C_INCLUDE) -L' + GetCppLibFolder() + CRLF
OTHERWISE
US_Log( 'Error 5598' )
ENDCASE
ELSE
DO CASE
CASE IsMinGW
Out := Out + 'COBJFLAGS = $(DIR_C_INCLUDE) -Wall -c' + CRLF
CASE IsPelles
Out := Out + 'COBJFLAGS = ' + iif( ! Prj_Check_Console, ' /Ze /Zx /Go /Tx86-coff /D__WIN32__ ', ' /Ze /Zx /Go /Tx86-coff /D__WIN32__ ' ) + ' $(DIR_C_INCLUDE)' + CRLF
CASE IsBorland
// TODO: use this flags -6 -OS -Ov -Oi -Oc
Out := Out + 'COBJFLAGS = ' + iif( Prj_Check_Console, '-c -O2 -d -M', '-c -O2 -tW -M' ) + ' -I$(DIR_C_INCLUDE) -L' + GetCppLibFolder() + CRLF
OTHERWISE
US_Log( 'Error 5598' )
ENDCASE
ENDIF
Out := Out + CRLF
/*
* Objetos de los que depende el ejecutable
*/
nCant := Len( PRGFILES )
IF IsMinGW
Out := Out + '$(APP_NAME) : $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[1] ) + '.o ' + iif( nCant > 1, DEF_SLASH, '' ) + CRLF
ELSE
Out := Out + '$(APP_NAME) : $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[1] ) + '.obj ' + iif( nCant > 1, DEF_SLASH, '' ) + CRLF
ENDIF
FOR i := 2 TO nCant
IF i == nCant
IF IsMinGW
Out := Out + ' $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.o' + CRLF
ELSE
Out := Out + ' $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.obj' + CRLF
ENDIF
ELSE
IF IsMinGW
Out := Out + ' $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.o ' + DEF_SLASH + CRLF
ELSE
Out := Out + ' $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.obj ' + DEF_SLASH + CRLF
ENDIF
ENDIF
NEXT i
DO EVENTS
/*
* Comandos para generar el ejecutable.
* Esta lista NO debe estar separada de la anterior por renglones en blanco.
*/
/*
* Comandos para compilar el archivo de recursos
*/
IF ! Prj_Check_IgnoreLibRCs .OR. ( ! Prj_Check_IgnoreMainRC .AND. File( US_FileNameOnlyPathAndName( PRGFILES[1] ) + '.RC' ) )
DO CASE
CASE IsMinGW
IF Prj_Radio_OutputType != DEF_RG_IMPORT
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Compiling Resource File ' + US_FileNameOnlyPathAndName( PRGFILES[1] ) + '.rc' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(RESOURCE_COMP) -I$(DIR_MINIGUI_RES) $(DIR_C_INCLUDE) -i ' + QPM_TMP_RC + ' -o $(DIR_OBJECTS)' + DEF_SLASH + '_Temp.o' + CRLF
ENDIF
CASE IsPelles
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Compiling Resource File ' + US_FileNameOnlyPathAndName( PRGFILES[1] ) + '.rc' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(RESOURCE_COMP) /I$(DIR_MINIGUI_RES) $(DIR_C_INCLUDE) /Fo$(DIR_OBJECTS)' + DEF_SLASH + '_Temp.res ' + QPM_TMP_RC + CRLF
CASE IsBorland
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Compiling Resource File ...' + CRLF
Out := Out + PUB_cCharTab + '$(RESOURCE_COMP) -i$(DIR_MINIGUI_RES);$(DIR_C_INCLUDE) -r -fo$(DIR_OBJECTS)' + DEF_SLASH + '_Temp.res ' + QPM_TMP_RC + CRLF
OTHERWISE
US_Log( 'Error 5649' )
ENDCASE
ENDIF
/*
* Comandos para generar el ejecutable (van en Out) y para generar el
* script de linkedición (van en script.ld)
*/
DO CASE
CASE Prj_Radio_OutputType == DEF_RG_EXE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Making script for link process ...' + CRLF
IF ! PUB_DeleteAux
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:SCRIPT_FILE is ' + US_FileNameOnlyNameAndExt( SCRIPT_FILE ) + CRLF
ENDIF
IF QPM_IsXHarbour() .AND. IsMinGW
IF Prj_Check_Console
Out := Out + PUB_cCharTab + 'echo INPUT( ' + GetHarbourLibFolder() + DEF_SLASH + 'mainstd.o ) >> ' + Q_SCRIPT_FILE + CRLF
ELSE
Out := Out + PUB_cCharTab + 'echo INPUT( ' + GetHarbourLibFolder() + DEF_SLASH + 'mainwin.o ) >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
/*
* Grabo en script.ld los objetos listados en las Include Libraries que estén marcados *FIRST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) ) == '*FIRST*'
DO CASE
CASE IsMinGW
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'O'
IF ! QPM_IsXHarbour() .OR. ! ( US_Upper( US_FileNameOnlyName( vLibIncludeFiles[i] ) ) $ ( 'MAINSTD' + CRLF + 'MAINWIN' ) )
Out := Out + PUB_cCharTab + 'echo INPUT( ' + US_ShortName( vLibIncludeFiles[i] ) + ' ) >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
CASE IsPelles
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'OBJ'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
CASE IsBorland
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'OBJ'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
OTHERWISE
US_Log( 'Error 5671' )
ENDCASE
ENDIF
NEXT i
/*
* Grabo lista de objetos derivados de los .prg en script.ld
*/
FOR i := 1 TO Len ( PRGFILES )
DO CASE
CASE IsMinGW
Out := Out + PUB_cCharTab + 'echo INPUT( $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.o ) >> ' + Q_SCRIPT_FILE + CRLF
CASE IsPelles
Out := Out + PUB_cCharTab + 'echo $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.obj >> ' + Q_SCRIPT_FILE + CRLF
CASE IsBorland
Out := Out + PUB_cCharTab + 'echo $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.obj + >> ' + Q_SCRIPT_FILE + CRLF
OTHERWISE
US_Log( 'Error 5672' )
ENDCASE
NEXT i
DO EVENTS
DO CASE
CASE IsMinGW
/*
* Grabo objeto generado a partir del archivo de recursos en script.ld
*/
IF ! Prj_Check_IgnoreMainRC .OR. ! Prj_Check_IgnoreLibRCs
Out := Out + PUB_cCharTab + 'echo INPUT( $(DIR_OBJECTS)' + DEF_SLASH + '_Temp.o ) >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
/*
* Grabo en script.ld los objetos listados en las Default Libraries (estos objetos deben estar en la carpeta Resources) en script.ld
*/
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF AScan( vLibExcludeFiles, US_Upper( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ) ) == 0
IF File( GetMiniGuiFolder() + DEF_SLASH + 'RESOURCES' + DEF_SLASH + SubStr( US_FileNameOnlyName( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ), 4 ) + '.o' )
Out := Out + PUB_cCharTab + 'echo INPUT( $(DIR_MINIGUI_RES)' + DEF_SLASH + SubStr( US_FileNameOnlyName( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ), 4 ) + '.o ) >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
DO EVENTS
/*
* Grabo en script.ld los objetos listados en las Include Libraries que estén marcados *LAST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) ) == '*LAST*'
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'O'
IF ! QPM_IsXHarbour() .OR. ! ( US_Upper( US_FileNameOnlyName( vLibIncludeFiles[i] ) ) $ ( 'MAINSTD' + CRLF + 'MAINWIN' ) )
Out := Out + PUB_cCharTab + 'echo INPUT( ' + US_ShortName( vLibIncludeFiles[i] ) + ' ) >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
ENDIF
NEXT i
CASE IsPelles
/*
* Grabo en script.ld los objetos listados en las Include Libraries que estén marcados *LAST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'OBJ'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
NEXT i
Out := Out + PUB_cCharTab + 'echo /OUT:$(APP_NAME) >> ' + Q_SCRIPT_FILE + CRLF
Out := Out + PUB_cCharTab + 'echo /FORCE:MULTIPLE >> ' + Q_SCRIPT_FILE + CRLF
Out := Out + PUB_cCharTab + 'echo /LIBPATH:' + GetCppLibFolder() + ' >> ' + Q_SCRIPT_FILE + CRLF
Out := Out + PUB_cCharTab + 'echo /LIBPATH:' + GetCppLibFolder() + DEF_SLASH + 'WIN' + ' >> ' + Q_SCRIPT_FILE + CRLF
CASE IsBorland
/*
* Grabo en script.ld los objetos listados en las Include Libraries que estén marcados *LAST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'OBJ'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
NEXT i
DO CASE
CASE Prj_Check_Console
Out := Out + PUB_cCharTab + 'echo ' + GetCppLibFolder() + DEF_SLASH + 'c0x32.obj, + >> ' + Q_SCRIPT_FILE + CRLF
CASE Prj_Radio_OutputType == DEF_RG_EXE
Out := Out + PUB_cCharTab + 'echo ' + GetCppLibFolder() + DEF_SLASH + 'c0w32.obj, + >> ' + Q_SCRIPT_FILE + CRLF
ENDCASE
Out := Out + PUB_cCharTab + 'echo $(APP_NAME), ' + US_ShortName(PUB_cProjectFolder) + DEF_SLASH + US_FileNameOnlyName( GetOutputModuleName() ) + '.MAP' + ', + >> ' + Q_SCRIPT_FILE + CRLF
OTHERWISE
US_Log( 'Error 5746' )
ENDCASE
/*
* Grabo libraries en script.ld
*/
IF QPM_IsXHarbour() .AND. ! IsMinGW .AND. File( GetHarbourLibFolder() + DEF_SLASH + 'bcc640' + PUB_xHarbourMT + '.lib' )
Out := Out + PUB_cCharTab + 'echo $(DIR_HARBOUR_LIB)' + DEF_SLASH + 'bcc640' + PUB_xHarbourMT + '.lib + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
DO EVENTS
DO CASE
CASE IsMinGW
w_hay := .F.
w_group := 'GROUP( '
/*
* MINGW: add libraries marked *FIRST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) ) == '*FIRST*'
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'A'
w_hay := .T.
w_group += '-l' + SubStr( US_FileNameOnlyName( vLibIncludeFiles[i] ), 4 ) + ' '
ENDIF
ENDIF
NEXT
DO EVENTS
/*
* MINGW: add MiniGui main library
*/
IF Prj_Check_Console
IF AScan( vLibExcludeFiles, US_Upper( GetMiniGuiName() ) ) == 0
w_hay := .T.
w_group += '-l' + SubStr( US_FileNameOnlyName( GetMiniGuiName() ), 4 ) + ' '
IF AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'LIBGTGUI.A' } ) == 0
AAdd( &( 'vLibDefault'+GetSuffix() ), 'libgtgui.a' )
ENDIF
ENDIF
ELSE
w_hay := .T.
w_group += '-l' + SubStr( US_FileNameOnlyName( GetMiniGuiName() ), 4 ) + ' '
DO WHILE ( i := AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'LIBGTGUI.A' } ) ) > 1
ADel( &( 'vLibDefault'+GetSuffix() ), i )
ASize( &( 'vLibDefault'+GetSuffix() ), Len( &( 'vLibDefault'+GetSuffix() ) ) - 1 )
ENDDO
IF AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'LIBGTGUI.A' } ) == 0
ASize( &( 'vLibDefault'+GetSuffix() ), Len( &( 'vLibDefault'+GetSuffix() ) ) + 1 )
ains( &( 'vLibDefault'+GetSuffix() ), 1 )
&( 'vLibDefault'+GetSuffix()+'['+Str(1)+']' ) := 'libgtgui.a'
ENDIF
IF AScan( vLibExcludeFiles, US_Upper( GetMiniGuiName() ) ) > 0
MsgInfo( 'Warning: ' + GetMiniGuiName() + ' was excluded for Windows mode.' + CRLF + 'QPM added it automatically.' + CRLF + 'Look at tab ' + DBLQT + PageLIB + DBLQT )
ENDIF
IF AScan( vLibExcludeFiles, 'LIBGTGUI.A' ) > 0
MsgInfo( 'Warning: LIBGTGUI.A was excluded for Windows mode.' + CRLF + 'QPM added it automatically.' + CRLF + 'Look at tab ' + DBLQT + PageLIB + DBLQT )
ENDIF
ENDIF
DO EVENTS
/*
* MINGW: add other libraries
*/
// Algoritmo de búsqueda:
// Que no esté excluida
// La busco con o sin X (según sea xharbour o harbour) en el directorio lib de minigui
// Si no está y es xharbour y es Extended la busco sin X en el directorio xlib de minigui
// Si no está la busco con o sin X en el directorio de libs de (x)harbour
// Si no está y es xharbour la busco sin X en el directorio de libs de xharbour
// Si no está la busco en el directorio de libs de MINGW
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF AScan( vLibExcludeFiles, US_Upper( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ) ) == 0
DO CASE
CASE QPM_IsXHarbour() .AND. File( GetMiniGuiLibFolder() + DEF_SLASH + ( 'libx' + SubStr( &('vLibDefault'+GetSuffix()+'['+Str(i)+']'), 4 ) ) )
w_hay := .T.
w_group += '-lx' + SubStr( US_FileNameOnlyName( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ), 4 ) + ' '
CASE File( GetMiniGuiLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
w_hay := .T.
w_group += '-l' + SubStr( US_FileNameOnlyName( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ), 4 ) + ' '
CASE QPM_IsXHarbour() .AND. ( GetMiniGuiSuffix() == DefineExtended1 ) .AND. File( GetMiniGuiFolder() + DEF_SLASH + 'xlib' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
w_hay := .T.
w_group += '-l' + SubStr( US_FileNameOnlyName( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ), 4 ) + ' '
CASE QPM_IsXHarbour() .AND. File( GetHarbourLibFolder() + DEF_SLASH + ( 'libx' + SubStr( &('vLibDefault'+GetSuffix()+'['+Str(i)+']'), 4 ) ) )
w_hay := .T.
w_group += '-lx' + SubStr( US_FileNameOnlyName( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ), 4 ) + ' '
CASE File( GetHarbourLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
w_hay := .T.
w_group += '-l' + SubStr( US_FileNameOnlyName( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ), 4 ) + ' '
CASE File( GetCppLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
w_hay := .T.
w_group += '-l' + SubStr( US_FileNameOnlyName( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ), 4 ) + ' '
ENDCASE
ENDIF
NEXT
DO EVENTS
/*
* MINGW: add libraries marked *LAST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) ) == '*LAST*'
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'A'
w_hay := .T.
w_group += '-l' + SubStr( US_FileNameOnlyName( vLibIncludeFiles[i] ), 4 ) + ' '
ENDIF
ENDIF
NEXT
DO EVENTS
IF w_hay
w_group += ')'
Out := Out + PUB_cCharTab + 'echo ' + w_group + ' >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
/*
* Add search folders to script.ld
*/
Out := Out + PUB_cCharTab + 'echo SEARCH_DIR( $(DIR_MINIGUI_LIB) ) >> ' + Q_SCRIPT_FILE + CRLF
IF QPM_IsXHarbour() .AND. ( GetMiniGuiSuffix() == DefineExtended1 )
Out := Out + PUB_cCharTab + 'echo SEARCH_DIR( $(DIR_MINIGUI)' + DEF_SLASH + 'xlib ) >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
Out := Out + PUB_cCharTab + 'echo SEARCH_DIR( $(DIR_HARBOUR_LIB) ) >> ' + Q_SCRIPT_FILE + CRLF
Out := Out + PUB_cCharTab + 'echo SEARCH_DIR( $(DIR_COMPC_LIB) ) >> ' + Q_SCRIPT_FILE + CRLF
FOR i := 1 TO Len( &('vExtraFoldersForLibs'+GetSuffix()) )
IF ! Empty( &('vExtraFoldersForLibs'+GetSuffix()+'['+Str(i)+']') ) .AND. ;
&('vExtraFoldersForLibs'+GetSuffix()+'['+Str(i)+']') != US_Upper( GetCppLibFolder() ) .AND. ;
&('vExtraFoldersForLibs'+GetSuffix()+'['+Str(i)+']') != US_Upper( GetMiniguiLibFolder() ) .AND. ;
&('vExtraFoldersForLibs'+GetSuffix()+'['+Str(i)+']') != US_Upper( GetHarbourLibFolder() )
Out := Out + PUB_cCharTab + 'echo SEARCH_DIR( ' + US_ShortName( &('vExtraFoldersForLibs'+GetSuffix()+'['+Str(i)+']') ) + ' ) >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
NEXT
CASE IsPelles
/*
* PELLES: add libraries marked *FIRST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) ) == '*FIRST*'
IF US_Upper( US_FileNameOnlyExt( vLibIncludeFiles[i] ) ) == 'LIB'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
/*
* PELLES: add MiniGui main library
*/
IF Prj_Check_Console
IF AScan( vLibExcludeFiles, US_Upper( GetMiniGuiName() ) ) == 0
Out := Out + PUB_cCharTab + 'echo ' + GetMiniguiLibFolder() + DEF_SLASH + GetMiniGuiName() + ' >> ' + Q_SCRIPT_FILE + CRLF
IF AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'GTGUI.LIB' } ) == 0
AAdd( &( 'vLibDefault'+GetSuffix() ), 'gtgui.lib' )
ENDIF
ENDIF
ELSE
Out := Out + PUB_cCharTab + 'echo ' + GetMiniguiLibFolder() + DEF_SLASH + GetMiniGuiName() + ' >> ' + Q_SCRIPT_FILE + CRLF
DO WHILE ( i := AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'GTGUI.LIB' } ) ) > 1
ADel( &( 'vLibDefault'+GetSuffix() ), i )
ASize( &( 'vLibDefault'+GetSuffix() ), Len( &( 'vLibDefault'+GetSuffix() ) ) - 1 )
ENDDO
IF AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'GTGUI.LIB' } ) == 0
ASize( &( 'vLibDefault'+GetSuffix() ), Len( &( 'vLibDefault'+GetSuffix() ) ) + 1 )
ains( &( 'vLibDefault'+GetSuffix() ), 1 )
&( 'vLibDefault'+GetSuffix()+'['+Str(1)+']' ) := 'gtgui.lib'
ENDIF
IF AScan( vLibExcludeFiles, US_Upper( GetMiniGuiName() ) ) > 0
MsgInfo( 'Warning: ' + GetMiniGuiName() + ' was excluded for Windows mode.' + CRLF + 'QPM added it automatically.' + CRLF + 'Look at tab ' + DBLQT + PageLIB + DBLQT )
ENDIF
IF AScan( vLibExcludeFiles, 'GTGUI.LIB' ) > 0
MsgInfo( 'Warning: LIBGTGUI.A was excluded for Windows mode.' + CRLF + 'QPM added it automatically.' + CRLF + 'Look at tab ' + DBLQT + PageLIB + DBLQT )
ENDIF
ENDIF
DO EVENTS
/*
* PELLES: add other libraries
*/
// Algoritmo de búsqueda:
// Que no esté excluida
// La busco con o sin X (según sea xharbour o harbour) en el directorio lib de minigui
// Si no está y es xharbour y es Extended la busco sin X en el directorio xlib de minigui
// Si no está la busco con o sin X en el directorio de libs de (x)harbour
// Si no está y es xharbour la busco sin X en el directorio de libs de xharbour
// Si no está la busco en el directorio de libs de PELLES o en el subdirectorio WIN
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF AScan( vLibExcludeFiles, US_Upper( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ) ) == 0
DO CASE
CASE QPM_IsXHarbour() .AND. File( GetMiniguiLibFolder() + DEF_SLASH + 'x' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_MINIGUI_LIB)' + DEF_SLASH + 'x' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE File( GetMiniguiLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_MINIGUI_LIB)' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE QPM_IsXHarbour() .AND. ( GetMiniGuiSuffix() == DefineExtended1 ) .AND. File( GetMiniGuiFolder() + DEF_SLASH + 'xlib' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_MINIGUI)' + DEF_SLASH + 'xlib' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE QPM_IsXHarbour() .AND. File( GetHarbourLibFolder() + DEF_SLASH + 'x' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_HARBOUR_LIB)' + DEF_SLASH + 'x' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE File( GetHarbourLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_HARBOUR_LIB)' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE File( GetCppLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo ' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' >> ' + Q_SCRIPT_FILE + CRLF
CASE File( GetCppLibFolder() + DEF_SLASH + 'WIN' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo ' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' >> ' + Q_SCRIPT_FILE + CRLF
ENDCASE
ENDIF
NEXT
/*
* PELLES: add libraries marked *LAST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) ) == '*LAST*'
IF US_Upper( US_FileNameOnlyExt( vLibIncludeFiles[i] ) ) == 'LIB'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
DO EVENTS
/*
* PELLES: add resource files
*/
IF ! Prj_Check_IgnoreMainRC .OR. ! Prj_Check_IgnoreLibRCs
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain' , 'GIncFiles' , 'Cell' , i , NCOLINCFULLNAME ) , 2 ) ) == '*FIRST*' // for .res
IF US_Upper( US_FileNameOnlyExt( vLibIncludeFiles[i] ) ) == 'RES'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
IF File( US_FileNameOnlyPathAndName( PRGFILES[1] ) + '.RC' )
Out := Out + PUB_cCharTab + 'echo $(DIR_OBJECTS)' + DEF_SLASH + '_Temp.res' + ' >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain' , 'GIncFiles' , 'Cell' , i , NCOLINCFULLNAME ) , 2 ) ) == '*LAST*' // for .res
IF US_Upper( US_FileNameOnlyExt( vLibIncludeFiles[i] ) ) == 'RES'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
ENDIF
CASE IsBorland
/*
* BCC32: add libraries marked *FIRST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) ) == '*FIRST*'
IF US_Upper( US_FileNameOnlyExt( vLibIncludeFiles[i] ) ) == 'LIB'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
/*
* BCC32: add MiniGui main library
*/
IF Prj_Check_Console
IF AScan( vLibExcludeFiles, US_Upper( GetMiniGuiName() ) ) == 0
Out := Out + PUB_cCharTab + 'echo ' + GetMiniguiLibFolder() + DEF_SLASH + GetMiniGuiName() + ' + >> ' + Q_SCRIPT_FILE + CRLF
IF AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'GTGUI.LIB' } ) == 0
AAdd( &( 'vLibDefault'+GetSuffix() ), 'gtgui.lib' )
ENDIF
ENDIF
ELSE
Out := Out + PUB_cCharTab + 'echo ' + GetMiniguiLibFolder() + DEF_SLASH + GetMiniGuiName() + ' + >> ' + Q_SCRIPT_FILE + CRLF
DO WHILE ( i := AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'GTGUI.LIB' } ) ) > 1
ADel( &( 'vLibDefault'+GetSuffix() ), i )
ASize( &( 'vLibDefault'+GetSuffix() ), Len( &( 'vLibDefault'+GetSuffix() ) ) - 1 )
ENDDO
IF AScan( &( 'vLibDefault'+GetSuffix() ), { |y| US_Upper( y ) == 'GTGUI.LIB' } ) == 0
ASize( &( 'vLibDefault'+GetSuffix() ), Len( &( 'vLibDefault'+GetSuffix() ) ) + 1 )
ains( &( 'vLibDefault'+GetSuffix() ), 1 )
&( 'vLibDefault'+GetSuffix()+'['+Str(1)+']' ) := 'gtgui.lib'
ENDIF
IF AScan( vLibExcludeFiles, US_Upper( GetMiniGuiName() ) ) > 0
MsgInfo( 'Warning: ' + GetMiniGuiName() + ' was excluded for Windows mode.' + CRLF + 'QPM added it automatically.' + CRLF + 'Look at tab ' + DBLQT + PageLIB + DBLQT )
ENDIF
IF AScan( vLibExcludeFiles, 'GTGUI.LIB' ) > 0
MsgInfo( 'Warning: LIBGTGUI.A was excluded for Windows mode.' + CRLF + 'QPM added it automatically.' + CRLF + 'Look at tab ' + DBLQT + PageLIB + DBLQT )
ENDIF
ENDIF
DO EVENTS
/*
* BCC32: add other libraries
*/
// Algoritmo de búsqueda:
// Que no esté excluida
// La busco con o sin X (según sea xharbour o harbour) en el directorio lib de minigui
// Si no está y es xharbour y es Extended la busco sin X en el directorio xlib de minigui
// Si no está la busco con o sin X en el directorio de libs de (x)harbour
// Si no está y es xharbour la busco sin X en el directorio de libs de xharbour
// Si no está la busco en el directorio de libs de BCC32 o en el subdirectorio PSDK
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF AScan( vLibExcludeFiles, US_Upper( &( 'vLibDefault'+GetSuffix()+'['+Str(i)+']' ) ) ) == 0
DO CASE
CASE QPM_IsXHarbour() .AND. File( GetMiniguiLibFolder() + DEF_SLASH + 'x' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_MINIGUI_LIB)' + DEF_SLASH + 'x' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE File( GetMiniguiLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_MINIGUI_LIB)' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE QPM_IsXHarbour() .AND. ( GetMiniGuiSuffix() == DefineExtended1 ) .AND. File( GetMiniGuiFolder() + DEF_SLASH + 'xlib' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_MINIGUI)' + DEF_SLASH + 'xlib' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE QPM_IsXHarbour() .AND. File( GetHarbourLibFolder() + DEF_SLASH + 'x' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_HARBOUR_LIB)' + DEF_SLASH + 'x' + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE File( GetHarbourLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_HARBOUR_LIB)' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE File( GetCppLibFolder() + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_COMPC_LIB)' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
CASE File( GetCppLibFolder() + DEF_SLASH + 'PSDK' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') )
Out := Out + PUB_cCharTab + 'echo $(DIR_COMPC_LIB2)' + DEF_SLASH + &('vLibDefault'+GetSuffix()+'['+Str(i)+']') + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDCASE
ENDIF
NEXT
DO EVENTS
/*
* BCC32: add libraries marked *LAST*
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 2 ) ) == '*LAST*'
IF US_Upper( US_FileNameOnlyExt( vLibIncludeFiles[i] ) ) == 'LIB'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
DO EVENTS
/*
* BCC32: add resource files
*/
Out := Out + PUB_cCharTab + 'echo , , + >> ' + Q_SCRIPT_FILE + CRLF
IF ! Prj_Check_IgnoreMainRC .OR. ! Prj_Check_IgnoreLibRCs
IF ( ! Prj_Check_IgnoreMainRC .AND. File( US_FileNameOnlyPathAndName( PRGFILES[1] ) + '.RC' ) ) .OR. ! Prj_Check_IgnoreLibRCs
Out := Out + PUB_cCharTab + 'echo $(DIR_OBJECTS)' + DEF_SLASH + '_Temp.res + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain' , 'GIncFiles' , 'Cell' , i , NCOLINCFULLNAME ) , 2 ) ) == '*FIRST*' // for .res
IF US_Upper( US_FileNameOnlyExt( vLibIncludeFiles[i] ) ) == 'RES'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
DO EVENTS
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_Upper( US_Word( GetProperty( 'VentanaMain' , 'GIncFiles' , 'Cell' , i , NCOLINCFULLNAME ) , 2 ) ) == '*LAST*' // for .res
IF US_Upper( US_FileNameOnlyExt( vLibIncludeFiles[i] ) ) == 'RES'
Out := Out + PUB_cCharTab + 'echo ' + US_ShortName( vLibIncludeFiles[i] ) + ' + >> ' + Q_SCRIPT_FILE + CRLF
ENDIF
ENDIF
NEXT i
ENDIF
DO EVENTS
OTHERWISE
US_Log( 'Error 6127' )
ENDCASE
CASE Prj_Radio_OutputType == DEF_RG_LIB
FOR i := 1 TO Len ( PRGFILES )
DO CASE
CASE IsMinGW
CASE IsPelles
IF i==1
Out := Out + PUB_cCharTab + 'echo /out:$@ ' + '> ' + Q_SCRIPT_FILE + CRLF
ENDIF
Out := Out + PUB_cCharTab + 'echo $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.obj ' + '>> ' + Q_SCRIPT_FILE + CRLF
CASE IsBorland
// La siguiente linea tiene el string *AMPERSAND* porque en el sistema operativo Windows 2003 Server Enterprise Edition si codifico el & no funciona el PIPE (>)
Out := Out + PUB_cCharTab + 'echo +$(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.obj ' + iif(i<Len( PRGFILES ),'*AMPERSAND* ',' ') + iif(i>1,'>','') + '> ' + Q_SCRIPT_FILE + CRLF
OTHERWISE
US_Log( 'Error 6143' )
ENDCASE
NEXT i
OTHERWISE
MsgInfo( 'Invalid Output Type: ' + cOutputType() )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDCASE
DO EVENTS
/*
* Add command for linking to script.ld
*/
DO CASE
CASE IsMinGw
DO CASE
CASE Prj_Radio_OutputType == DEF_RG_EXE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Linking ' + cOutputNameDisplay + ' ...' + CRLF
IF Empty( GetProperty( 'VentanaMain', 'OverrideLink', 'value' ) )
Out := Out + PUB_cCharTab + '$(ILINK_EXE) -Wall -o $(APP_NAME) ' + SCRIPT_FILE + ;
iif( Prj_Check_64bits, ' -m64', ' -m32' ) + ;
iif( Prj_Check_Console, ' -mconsole', ' -mwindows' ) + CRLF
ELSE
Out := Out + PUB_cCharTab + '$(ILINK_EXE) -Wall $(USER_FLAGS_LINK) -o $(APP_NAME) ' + SCRIPT_FILE + ;
iif( Prj_Check_64bits, ' -m64', ' -m32' ) + ;
iif( Prj_Check_Console, ' -mconsole', ' -mwindows' ) + CRLF
ENDIF
IF Prj_Check_Upx
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Compressing ' + cOutputNameDisplay + ' with UPX ...' + CRLF
Out := Out + PUB_cCharTab + '$(US_UPX_EXE) ' + cUpxOpt + ' ' + cOutputName + ' ' + CRLF
ENDIF
CASE Prj_Radio_OutputType == DEF_RG_LIB
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Making Library ' + cOutputNameDisplay + ' ...' + CRLF
FOR i := 1 TO Len ( PRGFILES )
Out := Out + PUB_cCharTab + '$(TLIB_EXE) rc ' + cOutputName + ' $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.o' + CRLF
NEXT i
/*
* Grabo los objetos listados en las Default Libraries
*/
FOR i := 1 TO Len ( vLibIncludeFiles )
IF US_FileNameOnlyExt( vLibIncludeFiles[i] ) == 'O'
IF ! ( US_Upper( US_FileNameOnlyName( vLibIncludeFiles[i] ) ) $ ( 'MAINSTD' + CRLF + 'MAINWIN' ) )
IF File( vLibIncludeFiles[i] )
Out := Out + PUB_cCharTab + '$(TLIB_EXE) rc ' + cOutputName + ' ' + vLibIncludeFiles[i] + CRLF
ENDIF
ENDIF
ENDIF
NEXT i
OTHERWISE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Output Type Invalid: '+ US_VarToStr( Prj_Radio_OutputType ) + CRLF
ENDCASE
CASE IsPelles
DO CASE
CASE Prj_Radio_OutputType == DEF_RG_EXE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Linking ' + cOutputNameDisplay + ' ...' + CRLF
IF Empty( GetProperty( 'VentanaMain', 'OverrideLink', 'value' ) )
Out := Out + PUB_cCharTab + '$(ILINK_EXE) ' + iif( Prj_Check_Console, '/SUBSYSTEM:CONSOLE ', '/SUBSYSTEM:WINDOWS ' ) + '@' + SCRIPT_FILE + CRLF
ELSE
Out := Out + PUB_cCharTab + '$(ILINK_EXE) ' + iif( Prj_Check_Console, '/SUBSYSTEM:CONSOLE ', '/SUBSYSTEM:WINDOWS ' ) + '$(USER_FLAGS_LINK) ' + '@' + SCRIPT_FILE + CRLF
ENDIF
IF Prj_Check_Upx
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Compressing ' + cOutputNameDisplay + ' with UPX ...' + CRLF
Out := Out + PUB_cCharTab + '$(US_UPX_EXE) ' + cUpxOpt + ' ' + cOutputName + CRLF
ENDIF
CASE Prj_Radio_OutputType == DEF_RG_LIB
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Making Library ' + cOutputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(TLIB_EXE) @' + SCRIPT_FILE + CRLF
OTHERWISE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Output Type Invalid: '+ US_VarToStr( Prj_Radio_OutputType ) + CRLF
ENDCASE
CASE IsBorland
DO CASE
CASE Prj_Radio_OutputType == DEF_RG_EXE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Linking ' + cOutputNameDisplay + ' ...' + CRLF
w_LibFolders := GetCppLibFolder()
w_LibFolders += ";" + w_LibFolders + "\PSDK;"
IF Empty( GetProperty( 'VentanaMain', 'OverrideLink', 'value' ) )
Out := Out + PUB_cCharTab + '$(ILINK_EXE) -x -Gn -Tpe ' + iif( Prj_Check_Console, '-ap ', '-aa ' ) + '-L' + w_LibFolders + ' @' + SCRIPT_FILE + CRLF
ELSE
Out := Out + PUB_cCharTab + '$(ILINK_EXE) -x -Gn -Tpe ' + iif( Prj_Check_Console, '-ap ', '-aa ') + '$(USER_FLAGS_LINK) -L' + w_LibFolders + ' @' + SCRIPT_FILE + CRLF
ENDIF
IF Prj_Check_Upx
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Compressing ' + cOutputNameDisplay + ' with UPX ...' + CRLF
Out := Out + PUB_cCharTab + '$(US_UPX_EXE) ' + cUpxOpt + ' ' + cOutputName + CRLF
ENDIF
CASE Prj_Radio_OutputType == DEF_RG_LIB
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Making Library ' + cOutputNameDisplay + ' ...' + CRLF
// La siguiente linea tiene el string *AMPERSAND* porque en el sistema operativo Windows 2003 Server Enterprise Edition si codifico el & no funciona el PIPE (>)
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM CHANGE ' + SCRIPT_FILE + ' *AMPERSAND* & ' + CRLF
Out := Out + PUB_cCharTab + '$(TLIB_EXE) /P32 $@ @' + SCRIPT_FILE + CRLF
OTHERWISE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Output Type Invalid: '+ US_VarToStr( Prj_Radio_OutputType ) + CRLF
ENDCASE
OTHERWISE
US_Log( 'Error 6255' )
ENDCASE
// Copy or Move
IF Prj_Radio_OutputCopyMove # DEF_RG_NONE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:' + cOutputCopyMove() + ' ' + cOutputNameDisplay + ' to ' + Prj_Text_OutputCopyMoveFolder + DEF_SLASH + US_FileNameOnlyNameAndExt( cOutputNameDisplay ) + ' ...' + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ','') + cOutputCopyMove() + ' ' + cOutputName + ' ' + US_ShortName( Prj_Text_OutputCopyMoveFolder ) + DEF_SLASH + US_FileNameOnlyNameAndExt( cOutputName ) + CRLF
ENDIF
IF PUB_bDebugActive
IF Prj_Radio_OutputCopyMove == DEF_RG_MOVE
DebugOptions( US_ShortName( Prj_Text_OutputCopyMoveFolder ), cDebugPath )
ELSE
IF Prj_Radio_OutputCopyMove == DEF_RG_COPY
DebugOptions( US_ShortName( Prj_Text_OutputCopyMoveFolder ), cDebugPath )
ENDIF
DebugOptions( US_FileNameOnlyPath( cOutputName ), cDebugPath )
ENDIF
IF ! Empty( VentanaMain.TRunProjectFolder.Value )
DebugOptions( US_FileNameOnlyPath( VentanaMain.TRunProjectFolder.Value ), cDebugPath )
ENDIF
ENDIF
DO EVENTS
/*
* Add commands for compiling to script.ld
*/
FOR i := 1 TO Len ( PRGFILES )
Out := Out + CRLF
Out := Out + '$(C_DIR)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.' + iif( US_Upper( US_FileNameOnlyExt( PRGFILES[i] ) ) == 'CPP', 'cpp', 'c' ) + ' : ' + US_ShortName( US_FileNameOnlyPath( PRGFILES[i] ) ) + DEF_SLASH + US_FileNameOnlyNameAndExt( PRGFILES[i] ) + CRLF
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Processing ' + PRGFILES[i] + ' ...' + CRLF
IF US_Upper( US_FileNameOnlyExt( PRGFILES[i] ) ) == US_Upper( 'C' ) .OR. ;
US_Upper( US_FileNameOnlyExt( PRGFILES[i] ) ) == US_Upper( 'CPP' )
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ','') + 'COPYZAP $** $@' + CRLF
ELSE
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'DELETE $@' + CRLF
IF QPM_IsXHarbour()
Out := Out + PUB_cCharTab + '$(HARBOUR_EXE) $(HARBOUR_FLAGS) /q /po' + US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.ppo $** -o$@' + CRLF
ELSE
Out := Out + PUB_cCharTab + '$(HARBOUR_EXE) $(HARBOUR_FLAGS) /q /p' + US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.ppo $** -o$@' + CRLF
ENDIF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'MOVE ' + US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.ppo $(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.ppo' + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'DELETE ' + US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.ppo.MOVED.TXT' + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'CHECKRC NOTFILE $@' + CRLF
ENDIF
Out := Out + CRLF
IF IsMinGW
Out := Out + '$(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.o : $(C_DIR)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.' + iif( US_Upper( US_FileNameOnlyExt( PRGFILES[i] ) ) == 'CPP', 'cpp', 'c' ) + CRLF
ELSE
Out := Out + '$(DIR_OBJECTS)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.obj : $(C_DIR)' + DEF_SLASH + US_FileNameOnlyName( PRGFILES[i] ) + '.' + iif( US_Upper( US_FileNameOnlyExt( PRGFILES[i] ) ) == 'CPP', 'cpp', 'c' ) + CRLF
ENDIF
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Processing ' + US_FileNameOnlyName( PRGFILES[i] ) + '.' + iif( US_Upper( US_FileNameOnlyExt( PRGFILES[i] ) ) == 'CPP', 'cpp', 'c' ) + ' ...' + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '' ) + 'DELETE $@' + CRLF
DO CASE
CASE IsMinGW
Out := Out + PUB_cCharTab + '$(COMPILATOR_C) QPM' + iif( bLogActivity, ' -LIST' + US_ShortName(PUB_cQPM_Folder), '' ) + ' $(COBJFLAGS) $** -o$@' + CRLF
CASE IsPelles
Out := Out + PUB_cCharTab + '$(COMPILATOR_C) $(COBJFLAGS) /Fo$@ $**' + CRLF
CASE IsBorland
Out := Out + PUB_cCharTab + '$(COMPILATOR_C) $(COBJFLAGS) -o$@ $**' + CRLF
OTHERWISE
US_Log( 'Error 6324' )
ENDCASE
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'CHECKRC NOTFILE $@' + CRLF
NEXT i
ENDIF
IF Prj_Radio_OutputType == DEF_RG_IMPORT
Out := Out + '$(APP_NAME) : ' + US_ShortName( PRGFILES[1] ) + CRLF
DO CASE
CASE PUB_cConvert == 'DLL A'
IF GetProperty( 'VentanaMain', 'Check_Reimp', 'Value' )
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:ReImport from library ' + cInputReImpNameDisplay + CRLF
Out := Out + PUB_cCharTab + '$(REIMPORT_EXE) -d ' + cInputReImpName + CRLF
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:DLL functions list for ' + cInputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'ANALIZE_DLL ' + cInputReImpDef + CRLF
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Generating interface library (.' + US_Word( PUB_cConvert, 2 ) + ') FOR ' + cInputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPLIB_MGW_EXE) -k -d ' + US_USlash( cInputReImpDef ) + ' -D ' + US_FileNameOnlyNameAndExt( cInputNameDisplay ) + ' -l ' + US_USlash( cOutputName ) + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'DELETE ' + cInputReImpDef + CRLF
ELSE
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:DLL functions list for ' + cInputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPDEF_MGW_EXE) ' + cInputNameLong + ' > ' + cInputNameLong + '.def ' + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'ANALIZE_DLL ' + cInputNameLong + '.def ' + CRLF
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Generating interface library (.' + US_Word( PUB_cConvert, 2 ) + ') for ' + cInputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPLIB_MGW_EXE) -d ' + US_USlash( cInputNameLong ) + '.def -D ' + US_FileNameOnlyNameAndExt( cInputNameDisplay ) + ' -l ' + US_USlash( cOutputName ) + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'DELETE ' + cInputNameLong + '.def' + CRLF
ENDIF
CASE PUB_cConvert == 'DLL LIB'
DO CASE
CASE Prj_Radio_Cpp == DEF_RG_PELLES
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:DLL functions list for ' + cInputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPDEF_PC_EXE) ' + cInputNameLong + '.def ' + cInputNameLong + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'ANALIZE_DLL ' + cInputNameLong + '.def ' + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Generating interface library (.' + US_Word( PUB_cConvert, 2 ) + ') for ' + cInputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPLIB_PC_EXE) ' + iif( GetProperty( 'VentanaMain', 'Check_GuionA', 'Value' ), '', '-NOUND ' ) + cInputNameLong + ' -OUT:' + cOutputName + CRLF
//
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'DELETE ' + cInputNameLong + '.def' + CRLF
CASE Prj_Radio_Cpp == DEF_RG_BORLAND
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:DLL functions list for ' + cInputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPDEF_BCC_EXE) ' + cInputNameLong + '.def ' + cInputNameLong + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'ANALIZE_DLL ' + cInputNameLong + '.def ' + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Generating Interface Library (.' + US_Word( PUB_cConvert, 2 ) + ') for ' + cInputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPLIB_BCC_EXE) ' + iif( GetProperty( 'VentanaMain', 'Check_GuionA', 'Value' ), '-a ', '' ) + cOutputName + ' ' + cInputNameLong + CRLF
//
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'DELETE ' + cInputNameLong + '.def' + CRLF
OTHERWISE
US_Log( 'Error in Convert DLL to LIB, Invalid C Compiler: ' + US_VarToStr( Prj_Radio_Cpp ) )
ENDCASE
CASE PUB_cConvert == 'LIB DLL'
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Copying Library (.' + US_Word( PUB_cConvert, 1 ) + ') to Working Folder' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM COPY ' + cInputName + ' ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Listing Functions in Library (.' + US_Word( PUB_cConvert, 1 ) + ')' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(LSTLIB_EXE) ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + ', ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst ' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM ANALIZE_LIB_BORLAND ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst ' + CRLF
//
QPM_Execute( US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_TLIB.EXE', cInputName + ', ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst', DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
QPM_Execute( US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_SHELL.EXE', 'QPM ANALIZE_LIB_BORLAND ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst -OBJLST -EXPLST -OFF', DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
//
MemoObj := MemoRead( OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.Lst.ObjLst' )
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Extracting Modules from Library (.' + US_Word( PUB_cConvert, 1 ) + ')' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(TLIB_EXE) ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName )
FOR i := 1 TO MLCount( MemoObj, 254 )
Out := Out + PUB_cCharTab + '*' + OBJFOLDER + DEF_SLASH + AllTrim( memoline( MemoObj, 254, i ) )
NEXT
Out := Out + ' ' + CRLF
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Making DLL from Modules Object of Library (.' + US_Word( PUB_cConvert, 1 ) + ') in ' + cOutputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(ILINK_EXE) ' + iif( !Prj_Check_Console, '-Gn -Tpd '+iif(PUB_bDebugActive,'-ap ','-aa '), '-Gn -Tpd ' ) + '-L' + GetCppLibFolder()
FOR i := 1 TO MLCount( MemoObj, 254 )
Out := Out + ' ' + OBJFOLDER + DEF_SLASH + AllTrim( memoline( MemoObj, 254, i ) ) + '.obj'
NEXT
Out := Out + ' c0d32.obj, ' + cOutputName + ',, import32.lib msimg32.lib cw32.lib, '
Out := Out + ' ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.Lst.ExpLst' + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:DLL functions list for ' + cOutputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPDEF_BCC_EXE) ' + cOutputName + '.def ' + cOutputName + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'ANALIZE_DLL ' + cOutputName + '.def -DELETE' + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Cleaning temporary files' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + ' -OFF' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst -OFF' + CRLF
FOR i := 1 TO MLCount( MemoObj, 254 )
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + AllTrim( memoline( MemoObj, 254, i ) ) + '.obj -OFF' + CRLF
NEXT
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst.ObjLst -OFF' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst.ExpLst -OFF' + CRLF
CASE PUB_cConvert == 'A DLL'
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Copying Library (.' + US_Word( PUB_cConvert, 1 ) + ') to Working Folder' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM COPY ' + cInputName + ' ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Listing Functions in Library (.' + US_Word( PUB_cConvert, 1 ) + ')' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(LSTA_EXE) -x ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + ' > ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst ' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM ANALIZE_LIB_MINGW ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst ' + CRLF
//
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_OBJDUMP.EXE -t ' + cInputName + ' > ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
ferase( RUN_FILE )
QPM_Execute( US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_SHELL.EXE', 'QPM ANALIZE_LIB_MINGW ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst -OBJLST -EXPLST', DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
//
MemoObj := MemoRead( OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.Lst.ObjLst' )
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Extracting Modules from Library (.' + US_Word( PUB_cConvert, 1 ) + ')' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(TLIB_EXE) x ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName )
FOR i := 1 TO MLCount( MemoObj, 254 )
Out := Out + ' ' + AllTrim( memoline( MemoObj, 254, i ) ) + '.o'
NEXT
Out := Out + ' ' + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Making DLL from Modules Object of Library (.' + US_Word( PUB_cConvert, 1 ) + ') in ' + cOutputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(ILINK_EXE) -shared -o' + cOutputName + ' '
FOR i := 1 TO MLCount( MemoObj, 254 )
Out := Out + ' ' + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + AllTrim( memoline( MemoObj, 254, i ) ) + '.o '
NEXT
Out := Out + iif( Prj_Check_Console, ' -mconsole', ' -mwindows' ) + ;
' -L$(DIR_COMPC_LIB)' + ;
' -L$(DIR_MINIGUI_LIB)' + ;
' -L$(DIR_HARBOUR_LIB)' + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:DLL functions list for ' + cOutputNameDisplay + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(IMPDEF_MGW_EXE) ' + cOutputName + ' > ' + cOutputName + '.def ' + CRLF
Out := Out + PUB_cCharTab + iif(! bLogActivity, '@', '') + '$(US_SHELL_EXE) QPM ' + iif(! bLogActivity, '-OFF ', '') + 'ANALIZE_DLL ' + cOutputName + '.def -DELETE' + CRLF
//
Out := Out + PUB_cCharTab + '$(US_MSG_EXE) ' + Q_PROGRESS_LOG + ' -MSG:Cleaning Temporary Files' + ' ...' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + ' -OFF' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst -OFF' + CRLF
FOR i := 1 TO MLCount( MemoObj, 254 )
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + AllTrim( memoline( MemoObj, 254, i ) ) + '.o -OFF' + CRLF
NEXT
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst.ObjLst -OFF' + CRLF
Out := Out + PUB_cCharTab + '$(US_SHELL_EXE) QPM DELETE ' + OBJFOLDER + DEF_SLASH + US_FileNameOnlyNameAndExt( cInputName ) + '.lst.ExpLst -OFF' + CRLF
ENDCASE
ENDIF
// Out := Out + CRLF
DO EVENTS
QPM_MemoWrit( MAKE_FILE, Out )
ferase( cOutputName )
ferase( cOutputName + '.MOVED' )
ferase( cOutputName + '.MOVED.TXT' )
ferase( US_ShortName( Prj_Text_OutputCopyMoveFolder ) + DEF_SLASH + US_FileNameOnlyNameAndExt( cOutputName ) )
DO EVENTS
/*
* Create BUILD.BAT
*/
cB_TMP_ERR := ( DBLQT + PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'TEMP.ERR' + DBLQT )
cB_RC_FOLD := ( GetMiniGuiFolder() + DEF_SLASH + 'RESOURCES' )
cB_RC_MINI := ( DBLQT + cB_RC_FOLD+ DEF_SLASH + cRCFileName + DBLQT )
cB_RC_HBPR := ( DBLQT + cB_RC_FOLD + DEF_SLASH + 'HBPRINTER.RC' + DBLQT )
cB_RC_MIPR := ( DBLQT + cB_RC_FOLD + DEF_SLASH + 'MINIPRINT.RC' + DBLQT )
cB_RCM_ERR := ( "US_Res from Batch Error: Resource File Not Found: " + cB_RC_MINI )
cB_RC_CONF := ( DBLQT + PUB_cProjectFolder + DEF_SLASH + GetResConfigFileName() + DBLQT )
cB_RCF_ERR := ( "US_Res from Batch Error: Can't create ResConfig File: " + cB_RC_CONF )
cB_US_RES := ( DBLQT + PUB_cQPM_Folder + DEF_SLASH + 'US_Res.exe' + DBLQT + ' QPM' + iif( bLogActivity, ' -LIST' + US_ShortName(PUB_cQPM_Folder), '' ) )
IF File( US_FileNameOnlyPathAndName( PRGFILES[1] ) + '.RC' )
cB_RC_MAIN := ( US_FileNameOnlyPathAndName( PRGFILES[1] ) + '.RC' )
cB_RC1_PTH := ( DBLQT + US_FileNameOnlyPath( cB_RC_MAIN ) + "\" + DBLQT )
ELSE
cB_RC_MAIN := ( PUB_cProjectFolder + DEF_SLASH + US_FileNameOnlyName( PRGFILES[1] ) + '.RC' )
cB_RC1_PTH := ( DBLQT + PUB_cProjectFolder + "\" + DBLQT )
ENDIF
cB_RC1_SHR := ( DBLQT + US_ShortName( cB_RC_MAIN ) + '1' + DBLQT )
cB_RC2_SHR := ( DBLQT + US_ShortName( cB_RC_MAIN ) + '2' + DBLQT )
cB_RC_MA_S := ( DBLQT + US_ShortName( cB_RC_MAIN ) + DBLQT )
cB_RC_MAIN := ( DBLQT + cB_RC_MAIN + DBLQT )
cB_FILLER := ( DBLQT + PUB_cQPM_Folder + DEF_SLASH + 'FILLER' + DBLQT )
cB_CPP_BIN := ( US_ShortName( GetCppFolder() + DEF_SLASH + 'BIN' ) )
IF IsMinGW
cB_DLLTOOL := ( DBLQT + GetCppFolder() + DEF_SLASH + 'BIN' + DEF_SLASH + 'DLLTOOL.EXE' + DBLQT )
cB_DLL_ERR := ( "US_Res from Batch Error: DLLTOOL.EXE not found at MinGW's BIN folder" )
cB_RC_COMP := ( DBLQT + GetCppFolder() + DEF_SLASH + 'BIN' + DEF_SLASH + 'WINDRES.EXE' + DBLQT )
cB_RCC_ERR := ( "US_Res from Batch Error: WINDRES.EXE not found at MinGW's BIN folder" )
ELSE
cB_RC_COMP := ( DBLQT + GetCppFolder() + DEF_SLASH + 'BIN' + DEF_SLASH + 'BRCC32.EXE' + DBLQT )
cB_RCC_ERR := ( "US_Res from Batch Error: BRCC32.EXE not found at BCC's BIN folder" )
ENDIF
cB_US_MAKE := ( DBLQT + PUB_cQPM_Folder + DEF_SLASH + 'US_MAKE.EXE' + DBLQT )
cB_EXE := ( DBLQT + cOutputNameDisplay + DBLQT )
cB_OUTPUT := ( DBLQT + Prj_Text_OutputCopyMoveFolder + DEF_SLASH + US_FileNameOnlyNameAndExt( cOutputName ) + DBLQT )
DO CASE
CASE IsMinGW
bld_cmd := '@ECHO OFF' + CRLF
IF bLogActivity
bld_cmd += 'ECHO Writing Activity Log ...' + CRLF
ENDIF
// delete preexisting temp files
bld_cmd += 'IF EXIST ' + cB_TMP_ERR + ' DEL ' + cB_TMP_ERR + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + Q_TEMP_LOG + ' DEL ' + Q_TEMP_LOG + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + Q_SCRIPT_FILE + ' DEL ' + Q_SCRIPT_FILE + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + Q_QPM_TMP_RC + ' DEL ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + cB_RC_CONF + ' DEL ' + cB_RC_CONF + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + cB_RC1_SHR + ' DEL ' + cB_RC1_SHR + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + cB_RC2_SHR + ' DEL ' + cB_RC2_SHR + ' > NUL' + CRLF
// concatenate project's and MINIGUI's RC files into a temporary RC file
IF Prj_Radio_OutputType != DEF_RG_IMPORT .AND. ( ! Prj_Check_IgnoreMainRC .OR. ! Prj_Check_IgnoreLibRCs )
IF Prj_Check_IgnoreMainRC
IF ! Prj_Check_IgnoreLibRCs
bld_cmd += 'ECHO #define ' + GetResConfigVarName() + ' ' + cB_RC_FOLD + ' > ' + cB_RC_CONF + CRLF
bld_cmd += 'IF NOT EXIST ' + cB_RC_CONF + ' ECHO ' + cB_RCF_ERR + ' > ' + cB_TMP_ERR + CRLF
bld_cmd += 'IF NOT EXIST ' + cB_RC_MINI + ' ECHO ' + cB_RCM_ERR + ' > ' + cB_TMP_ERR + CRLF
bld_cmd += 'COPY /B ' + cB_RC_MINI + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
lIncludeMiniPrintRC := .F.
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF ! GetMiniGuiSuffix() == DefineOohg3
IF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'LIBHBPRINTER.A'
IF AScan( vLibExcludeFiles, 'LIBHBPRINTER.A' ) == 0
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_HBPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ELSEIF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'LIBMINIPRINT.A'
IF AScan( vLibExcludeFiles, 'LIBMINIPRINT.A' ) == 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
ENDIF
NEXT i
IF ! lIncludeMiniPrintRC
IF AScan( vLibIncludeFiles, { |y| US_FileNameOnlyNameAndExt( y ) == 'LIBMINIPRINT2.A' } ) # 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
IF lIncludeMiniPrintRC
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_MIPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ENDIF
ELSE
// check IF the project has an RC file
bld_cmd += 'ECHO #define ' + GetResConfigVarName() + ' ' + cB_RC_FOLD + ' > ' + cB_RC_CONF + CRLF
bld_cmd += 'IF NOT EXIST ' + cB_RC_CONF + ' ECHO ' + cB_RCF_ERR + ' > ' + cB_TMP_ERR + CRLF
bld_cmd += 'IF NOT EXIST ' + cB_RC_MAIN + ' GOTO NORC' + CRLF
// in project's RC file change .\ and ..\ to full path ("S" means use 8.3 path, "N" means use long path)
bld_cmd += cB_US_RES + ' -ONLYINCLUDE ' + cB_RC_MA_S + ' ' + cB_RC1_SHR + ' ' + cB_RC1_PTH + ' ' + "N" + CRLF
bld_cmd += 'IF ERRORLEVEL = 1 GOTO ERROR' + CRLF
bld_cmd += cB_US_RES + ' ' + cB_RC1_SHR + ' ' + cB_RC2_SHR + ' ' + cB_RC1_PTH + ' ' + "N" + CRLF
bld_cmd += 'IF ERRORLEVEL = 1 GOTO ERROR' + CRLF
// concatenate project's and MINIGUI's RC files into a temporary RC file
IF Prj_Check_IgnoreLibRCs
bld_cmd += 'COPY /B ' + cB_RC2_SHR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ELSE
bld_cmd += 'IF NOT EXIST ' + cB_RC_MINI + ' ECHO ' + cB_RCM_ERR + ' > ' + cB_TMP_ERR + CRLF
IF Prj_Check_PlaceRCFirst
bld_cmd += 'COPY /B ' + cB_RC2_SHR + ' + ' + cB_FILLER + ' + ' + cB_RC_MINI + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ELSE
bld_cmd += 'COPY /B ' + cB_RC_MINI + ' + ' + cB_FILLER + ' + ' + cB_RC2_SHR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
lIncludeMiniPrintRC := .F.
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF ! GetMiniGuiSuffix() == DefineOohg3
IF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'LIBHBPRINTER.A'
IF AScan( vLibExcludeFiles, 'LIBHBPRINTER.A' ) == 0
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_HBPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ELSEIF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'LIBMINIPRINT.A'
IF AScan( vLibExcludeFiles, 'LIBMINIPRINT.A' ) == 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
ENDIF
NEXT i
IF ! lIncludeMiniPrintRC
IF AScan( vLibIncludeFiles, { |y| US_FileNameOnlyNameAndExt( y ) == 'LIBMINIPRINT2.A' } ) # 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
IF lIncludeMiniPrintRC
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_MIPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ENDIF
bld_cmd += 'GOTO NEXT' + CRLF
// concatenate MINIGUI's RC files into a temporary RC file
bld_cmd += ':NORC' + CRLF
IF ! Prj_Check_IgnoreLibRCs
bld_cmd += 'IF NOT EXIST ' + cB_RC_MINI + ' ECHO ' + cB_RCM_ERR + ' > ' + cB_TMP_ERR + CRLF
bld_cmd += 'COPY /B ' + cB_RC_MINI + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
lIncludeMiniPrintRC := .F.
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF ! GetMiniGuiSuffix() == DefineOohg3
IF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'LIBHBPRINTER.A'
IF AScan( vLibExcludeFiles, 'LIBHBPRINTER.A' ) == 0
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_HBPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ELSEIF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'LIBMINIPRINT.A'
IF AScan( vLibExcludeFiles, 'LIBMINIPRINT.A' ) == 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
ENDIF
NEXT i
IF ! lIncludeMiniPrintRC
IF AScan( vLibIncludeFiles, { |y| US_FileNameOnlyNameAndExt( y ) == 'LIBMINIPRINT2.A' } ) # 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
IF lIncludeMiniPrintRC
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_MIPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ENDIF
ENDIF
ENDIF
// check IF the tool exists
bld_cmd += ':NEXT' + CRLF
IF Prj_Radio_OutputType == DEF_RG_IMPORT
bld_cmd += 'IF NOT EXIST ' + cB_DLLTOOL + ' ECHO ' + cB_DLL_ERR + ' > ' + cB_TMP_ERR + CRLF
ELSEIF ! Prj_Check_IgnoreMainRC .OR. ! Prj_Check_IgnoreLibRCs
bld_cmd += 'IF NOT EXIST ' + cB_RC_COMP + ' ECHO ' + cB_RCC_ERR + ' > ' + cB_TMP_ERR + CRLF
ENDIF
// build
bld_cmd += 'SET PATH=' + cB_CPP_BIN + CRLF
bld_cmd += ':MAKE' + CRLF
bld_cmd += cB_US_MAKE + ' ' + '-f' + Q_MAKE_FILE + ' >> ' + Q_TEMP_LOG + ' 2>&1' + CRLF
// check errors
DO CASE
CASE Prj_Radio_OutputCopyMove == DEF_RG_MOVE
bld_cmd += 'IF EXIST ' + cB_EXE + ' GOTO ERROR' + CRLF
bld_cmd += 'IF EXIST ' + cB_OUTPUT + ' GOTO OK' + CRLF
CASE Prj_Radio_OutputCopyMove == DEF_RG_COPY
bld_cmd += 'IF NOT EXIST ' + cB_EXE + ' GOTO ERROR' + CRLF
bld_cmd += 'IF EXIST ' + cB_OUTPUT + ' GOTO OK' + CRLF
OTHERWISE
bld_cmd += 'IF EXIST ' + cB_EXE + ' GOTO OK' + CRLF
ENDCASE
// report result
bld_cmd += ':ERROR' + CRLF
bld_cmd += 'IF EXIST ' + cB_TMP_ERR + ' COPY ' + cB_TMP_ERR + ' ' + Q_TEMP_LOG + ' > NUL' + CRLF
bld_cmd += 'ECHO ERROR > ' + Q_END_FILE + CRLF
bld_cmd += 'GOTO END' + CRLF
bld_cmd += ':OK' + CRLF
bld_cmd += 'ECHO OK > ' + Q_END_FILE + CRLF
bld_cmd += ':END' + CRLF
// clean temporary files
IF PUB_DeleteAux
bld_cmd += 'IF EXIST ' + cB_RC_CONF + ' DEL ' + cB_RC_CONF + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + cB_RC1_SHR + ' DEL ' + cB_RC1_SHR + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + cB_RC2_SHR + ' DEL ' + cB_RC2_SHR + ' > NUL' + CRLF
ENDIF
QPM_MemoWrit( BUILD_BAT, bld_cmd )
CASE ( IsBorland .OR. IsPelles )
bld_cmd := '@ECHO OFF' + CRLF
IF bLogActivity
bld_cmd += 'ECHO Writing Log Activity ...' + CRLF
ENDIF
// delete preexisting temp files
bld_cmd += 'IF EXIST ' + cB_TMP_ERR + ' DEL ' + cB_TMP_ERR + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + Q_TEMP_LOG + ' DEL ' + Q_TEMP_LOG + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + Q_SCRIPT_FILE + ' DEL ' + Q_SCRIPT_FILE + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + Q_QPM_TMP_RC + ' DEL ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
// concatenate project's and MINIGUI's RC files into a temporary RC file
// this is needed because BCC only allows icons and cursors in the first RC file
IF Prj_Radio_OutputType != DEF_RG_IMPORT .AND. ( ! Prj_Check_IgnoreMainRC .OR. ! Prj_Check_IgnoreLibRCs )
IF Prj_Check_IgnoreMainRC
IF ! Prj_Check_IgnoreLibRCs
bld_cmd += 'ECHO #define ' + GetResConfigVarName() + ' ' + cB_RC_FOLD + ' > ' + cB_RC_CONF + CRLF
bld_cmd += 'IF NOT EXIST ' + cB_RC_CONF + ' ECHO ' + cB_RCF_ERR + ' > ' + cB_TMP_ERR + CRLF
bld_cmd += 'IF NOT EXIST ' + cB_RC_MINI + ' ECHO ' + cB_RCM_ERR + ' > ' + cB_TMP_ERR + CRLF
bld_cmd += 'COPY /B ' + cB_RC_MINI + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
lIncludeMiniPrintRC := .F.
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF ! GetMiniGuiSuffix() == DefineOohg3
IF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'HBPRINTER.LIB'
IF AScan( vLibExcludeFiles, 'HBPRINTER.LIB' ) == 0
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_HBPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ELSEIF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'MINIPRINT.LIB'
IF AScan( vLibExcludeFiles, 'MINIPRINT.LIB' ) == 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
ENDIF
NEXT i
IF ! lIncludeMiniPrintRC
IF AScan( vLibIncludeFiles, { |y| US_FileNameOnlyNameAndExt( y ) == 'MINIPRINT2.LIB' } ) # 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
IF lIncludeMiniPrintRC
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_MIPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ENDIF
ELSE
// check IF the project has an RC file
bld_cmd += 'ECHO #define ' + GetResConfigVarName() + ' ' + cB_RC_FOLD + ' > ' + cB_RC_CONF + CRLF
bld_cmd += 'IF NOT EXIST ' + cB_RC_CONF + ' ECHO ' + cB_RCF_ERR + ' > ' + cB_TMP_ERR + CRLF
bld_cmd += 'IF NOT EXIST ' + cB_RC_MAIN + ' GOTO NORC' + CRLF
// in project's RC file change .\ and ..\ to full path ("S" means use 8.3 path, "N" means use long path)
bld_cmd += cB_US_RES + ' -ONLYINCLUDE ' + cB_RC_MA_S + ' ' + cB_RC1_SHR + ' ' + cB_RC1_PTH + ' ' + "N" + CRLF
bld_cmd += 'IF ERRORLEVEL = 1 GOTO ERROR' + CRLF
bld_cmd += cB_US_RES + ' ' + cB_RC1_SHR + ' ' + cB_RC2_SHR + ' ' + cB_RC1_PTH + ' ' + "N" + CRLF
bld_cmd += 'IF ERRORLEVEL = 1 GOTO ERROR' + CRLF
// concatenate project's and MINIGUI's RC files into a temporary RC file
IF Prj_Check_IgnoreLibRCs
bld_cmd += 'COPY /B ' + cB_RC2_SHR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ELSE
bld_cmd += 'IF NOT EXIST ' + cB_RC_MINI + ' ECHO ' + cB_RCM_ERR + ' > ' + cB_TMP_ERR + CRLF
IF Prj_Check_PlaceRCFirst
bld_cmd += 'COPY /B ' + cB_RC2_SHR + ' + ' + cB_FILLER + ' + ' + cB_RC_MINI + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ELSE
bld_cmd += 'COPY /B ' + cB_RC_MINI + ' + ' + cB_FILLER + ' + ' + cB_RC2_SHR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
lIncludeMiniPrintRC := .F.
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF ! GetMiniGuiSuffix() == DefineOohg3
IF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'HBPRINTER.LIB'
IF AScan( vLibExcludeFiles, 'HBPRINTER.LIB' ) == 0
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_HBPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ELSEIF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'MINIPRINT.LIB'
IF AScan( vLibExcludeFiles, 'MINIPRINT.LIB' ) == 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
ENDIF
NEXT i
IF ! lIncludeMiniPrintRC
IF AScan( vLibIncludeFiles, { |y| US_FileNameOnlyNameAndExt( y ) == 'MINIPRINT2.LIB' } ) # 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
IF lIncludeMiniPrintRC
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_MIPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ENDIF
bld_cmd += 'GOTO NEXT' + CRLF
// concatenate MINIGUI's RC files into a temporary RC file
bld_cmd += ':NORC' + CRLF
IF ! Prj_Check_IgnoreLibRCs
bld_cmd += 'IF NOT EXIST ' + cB_RC_MINI + ' ECHO ' + cB_RCM_ERR + ' > ' + cB_TMP_ERR + CRLF
bld_cmd += 'COPY /B ' + cB_RC_MINI + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
lIncludeMiniPrintRC := .F.
FOR i := 1 TO Len( &( 'vLibDefault'+GetSuffix() ) )
IF ! GetMiniGuiSuffix() == DefineOohg3
IF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'HBPRINTER.LIB'
IF AScan( vLibExcludeFiles, 'HBPRINTER.LIB' ) == 0
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_HBPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ELSEIF US_Upper( &('vLibDefault'+GetSuffix()+'['+Str(i)+']') ) == 'MINIPRINT.LIB'
IF AScan( vLibExcludeFiles, 'MINIPRINT.LIB' ) == 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
ENDIF
NEXT i
IF ! lIncludeMiniPrintRC
IF AScan( vLibIncludeFiles, { |y| US_FileNameOnlyNameAndExt( y ) == 'MINIPRINT2.LIB' } ) # 0
lIncludeMiniPrintRC := .T.
ENDIF
ENDIF
IF lIncludeMiniPrintRC
bld_cmd += 'COPY /B ' + Q_QPM_TMP_RC + ' + ' + cB_FILLER + ' + ' + cB_RC_MIPR + ' ' + Q_QPM_TMP_RC + ' > NUL' + CRLF
ENDIF
ENDIF
ENDIF
ENDIF
// build
bld_cmd += ':NEXT' + CRLF
bld_cmd += 'SET PATH=' + cB_CPP_BIN + CRLF
bld_cmd += cB_US_MAKE + ' ' + '-i -f' + Q_MAKE_FILE + ' >> ' + Q_TEMP_LOG + ' 2>&1' + CRLF
// check errors
DO CASE
CASE Prj_Radio_OutputCopyMove == DEF_RG_MOVE
bld_cmd += 'IF EXIST ' + cB_EXE + ' GOTO ERROR' + CRLF
bld_cmd += 'IF EXIST ' + cB_OUTPUT + ' GOTO OK' + CRLF
CASE Prj_Radio_OutputCopyMove == DEF_RG_COPY
bld_cmd += 'IF NOT EXIST ' + cB_EXE + ' GOTO ERROR' + CRLF
bld_cmd += 'IF EXIST ' + cB_OUTPUT + ' GOTO OK' + CRLF
OTHERWISE
bld_cmd += 'IF EXIST ' + cB_EXE + ' GOTO OK' + CRLF
ENDCASE
// report result
bld_cmd += ':ERROR' + CRLF
bld_cmd += 'IF EXIST ' + cB_TMP_ERR + ' COPY ' + cB_TMP_ERR + ' ' + Q_TEMP_LOG + ' > NUL' + CRLF
bld_cmd += 'ECHO ERROR > ' + Q_END_FILE + CRLF
bld_cmd += 'GOTO END' + CRLF
bld_cmd += ':OK' + CRLF
bld_cmd += 'ECHO OK > ' + Q_END_FILE + CRLF
// clean temporary files
bld_cmd += ':END' + CRLF
IF PUB_DeleteAux
bld_cmd += 'IF EXIST ' + cB_RC_CONF + ' DEL ' + cB_RC_CONF + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + cB_RC1_SHR + ' DEL ' + cB_RC1_SHR + ' > NUL' + CRLF
bld_cmd += 'IF EXIST ' + cB_RC2_SHR + ' DEL ' + cB_RC2_SHR + ' > NUL' + CRLF
ENDIF
QPM_MemoWrit( BUILD_BAT, bld_cmd )
OTHERWISE
US_Log( 'Unknown C compiler.' )
BUILD_IN_PROGRESS := .F.
RETURN .F.
ENDCASE
IF PUB_bLite
VentanaLite.bStop.Enabled := .T.
ELSE
VentanaMain.bStop.Enabled := .T.
ENDIF
DO EVENTS
MemoAux := MemoRead( PROGRESS_LOG )
QPM_MemoWrit( PROGRESS_LOG, MemoAux + US_TimeDis( Time() ) + ' - Checking Force Recomp Modules ...' + CRLF )
FOR i := 1 TO GetProperty( 'VentanaMain', 'GPRGFiles', 'itemcount' )
IF GetProperty( 'VentanaMain', 'GPRGFiles', 'cell', i, NCOLPRGRECOMP ) == 'R'
MemoAux := MemoRead( PROGRESS_LOG )
QPM_MemoWrit( PROGRESS_LOG, MemoAux + US_TimeDis( Time() ) + ' - Force Recomp by User for ' + ChgPathToReal( GetProperty( 'VentanaMain', 'GPRGFiles', 'cell', i, NCOLPRGFULLNAME ) ) + CRLF )
ferase( GetObjFolder() + DEF_SLASH + US_FileNameOnlyName( GetProperty( 'VentanaMain', 'GPRGFiles', 'cell', i, NCOLPRGNAME ) ) + iif( US_Upper( US_FileNameOnlyExt( GetProperty( 'VentanaMain', 'GPRGFiles', 'cell', i, NCOLPRGNAME ) ) ) == 'CPP', '.CPP', '.C' ) )
ENDIF
NEXT i
DO EVENTS
QPM_Execute( BUILD_BAT, "", DEF_QPM_EXEC_NOWAIT, DEF_QPM_EXEC_HIDE )
RETURN .T.
FUNCTION QPM_Run( bWithParm )
// QPM_Run2
LOCAL RUNFOLDER := AllTrim(US_FileNameOnlyPath(VentanaMain.TRunProjectFolder.Value))
LOCAL App
LOCAL cParm := ''
LOCAL cRunParms
LOCAL cOldFolder := GetCurrentFolder()
LOCAL oInput := US_InputBox():New()
IF bWaitForBuild
DO WHILE BUILD_IN_PROGRESS
DO EVENTS
ENDDO
ENDIF
IF Empty( PUB_cProjectFile )
MsgStop( 'You must save the project before running it.' )
RETURN .F.
ENDIF
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF Prj_Radio_OutputCopyMove == DEF_RG_MOVE
App := US_ShortName( Prj_Text_OutputCopyMoveFolder ) + DEF_SLASH + US_FileNameOnlyNameAndExt( GetOutputModuleName() )
ELSE
App := GetOutputModuleName()
ENDIF
IF ! File( App )
MsgStop ( 'Application ' + DBLQT + App + DBLQT + ' not found.' + CRLF + 'You must build the project before running it.' )
ELSE
IF bWithParm
//US_log( 'previo' )
oInput:cTitulo := 'Parameters for Run Program'
oInput:ValorInicial := GBL_cRunParm
oInput:cLeyenda := 'Parm:'
oInput:nPorAlto := iif( PUB_bW800, 30, 20 )
oInput:nPorAncho := 60
oInput:bButtonOk := .T.
oInput:bButtonCancel := .T.
oInput:bEscape := .T.
oInput:DefineWindow()
cParm := oInput:Show()
//US_log( cParm )
//US_log( ValType( cParm ))
// cParm := InputBox( 'Parm:', 'Parameters for Run Program', GBL_cRunParm )
//US_log( 'post' )
//US_log( Empty( cParm ) )
// US_log( ValType(cParm ) )
IF ! Empty( cParm )
// US_LOG( 'entro en no Empty' )
GBL_cRunParm := cParm
ELSE
cParm := ''
ENDIF
ENDIF
VentanaMain.GPrgFiles.SetFocus()
IF Empty( RUNFOLDER )
RUNFOLDER := PUB_cProjectFolder
IF PUB_bDebugActive
IF ! File( PUB_cProjectFolder + DEF_SLASH + 'Init.Cld' )
MsgInfo( 'Configuration file for debug is missing, rebuild the project with Debug option and try again.' )
RETURN .F.
ENDIF
ENDIF
ELSE
IF PUB_bDebugActive
IF ! File( RUNFOLDER + DEF_SLASH + 'Init.Cld' )
IF File( PUB_cProjectFolder + DEF_SLASH + 'Init.Cld' )
US_FileCopy( PUB_cProjectFolder + DEF_SLASH + 'Init.Cld', RUNFOLDER + DEF_SLASH + 'Init.Cld' )
ELSE
MsgInfo( 'Configuration file for debug is missing, rebuild the project with Debug option and try again.' )
RETURN .F.
ENDIF
ENDIF
ENDIF
ENDIF
IF !PUB_QPM_bHigh
QPM_SetProcessPriority( 'HIGH' )
IF File( ErrorLogName() )
PUB_ErrorLogTime := Val( DToS( US_FileDate( ErrorLogName() ) ) + US_StrCero( US_TimeSec( US_FileTime( ErrorLogName() ) ), 5 ) )
ELSE
PUB_ErrorLogTime := 0
ENDIF
ENDIF
QPM_KillerModule := App
SetCurrentFolder( RUNFOLDER )
CloseDbfAutoView()
IF VentanaMain.GDbfFiles.Value > 0
DefineRichEditForNotDbfView( 'DBF view is disable while running application!' )
ENDIF
cRunParms := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RUN' + US_DateTimeCen() + '.cng'
AAdd( RunControlFile, US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RCF' + US_DateTimeCen() + '.cnt' )
QPM_MemoWrit( cRunParms, 'Run Parms For ' + App + CRLF + ;
'COMMAND ' + App + ' ' + cParm + CRLF + ;
'CONTROL ' + RunControlFile[ Len( RunControlFile ) ] )
QPM_MemoWrit( RunControlFile[ Len( RunControlFile ) ], 'Run Control File for ' + App )
QPM_Execute( US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_Run.exe', 'QPM ' + cRunParms )
bRunApp := .T.
VentanaMain.Check_DbfAutoView.Enabled := .F.
SetCurrentFolder( cOldFolder )
ENDIF
RETURN .T.
FUNCTION QPM_Timer_Run()
LOCAL i, bLOCALRun := .F.
IF bRunApp
FOR i := 1 TO Len( RunControlFile )
IF File( RunControlFile[ i ] )
bLOCALRun := .T.
EXIT
ENDIF
NEXT
IF !bLOCALRun
bRunApp := .F.
IF !QPM_bKiller .AND. PUB_QPM_bHigh
QPM_SetProcessPriority( 'NORMAL' )
ENDIF
VentanaMain.Check_DbfAutoView.Enabled := .T.
QPM_Wait( "RichEditDisplay( 'DBF', .T. )", 'Loading ...' )
IF File( ErrorLogName() )
IF PUB_ErrorLogTime < Val( DToS( US_FileDate( ErrorLogName() ) ) + US_StrCero( US_TimeSec( US_FileTime( ErrorLogName() ) ), 5 ) )
// US_log( 'displayar errorlog' )
VentanaMain.TabFiles.Value := nPageOut
TabChange( 'FILES' )
MuestroErrorLog()
ENDIF
ENDIF
ENDIF
ENDIF
RETURN .T.
FUNCTION QPM_Timer_StatusRefresh()
LOCAL memotmp, lenAux
LOCAL Venta := iif( PUB_bLite, 'VentanaLite', 'VentanaMain' )
LOCAL TopName
LOCAL OutName, estado
LOCAL cBaseVerVer := Replicate( '0', DEF_LEN_VER_VERSION )
LOCAL cBaseVerRel := Replicate( '0', DEF_LEN_VER_RELEASE )
LOCAL cBaseVerBui := Replicate( '0', DEF_LEN_VER_BUILD )
LOCAL cTopVerVer := Replicate( '9', DEF_LEN_VER_VERSION )
LOCAL cTopVerRel := Replicate( '9', DEF_LEN_VER_RELEASE )
LOCAL cTopVerBui := Replicate( '9', DEF_LEN_VER_BUILD )
LOCAL cLog
IF PUB_bIsProcessing
IF Empty( GetProperty( Venta, 'LStatusLabel', 'value' ) )
SetProperty( Venta, 'LStatusLabel', 'value', 'Building ...' )
ELSE
SetProperty( Venta, 'LStatusLabel', 'value', '' )
ENDIF
IF File( END_FILE )
PUB_bIsProcessing := .F.
ferase( PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'MSG.SYSIN' ) /* por si estubiera activado el proceso de stop y la compilacion cancela por error */
IF PUB_bLite
VentanaLite.bStop.Enabled := .F.
ELSE
VentanaMain.bStop.Enabled := .F.
ENDIF
VentanaMain.TabFiles.Value := nPageSysout
TabChange( 'FILES' )
QPM_MemoWrit( TEMP_LOG, cLog := TranslateLog( MemoRead( TEMP_LOG ) ) )
TopName := US_FileNameOnlyName(GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGNAME ))
OutName := US_FileNameOnlyName( GetOutputModuleName() )
estado := US_Word( memoread( END_FILE ), 1 )
/*
La existencia del ejecutable se verifica en BUILD.BAT teniendo en cuenta el COPY/MOVE
IF estado == 'ERROR'
IF File( GetOutputModuleName()+'.MOVED.TXT' )
estado := 'OK'
ENDIF
ENDIF
*/
/* ini Parche para cuando el EXE esta corriendo y queremos hacer build sin modificar ningun prg */
IF mlcount( GetProperty( Venta, 'RichEditSysout', 'value' ) ) < 3 .AND. ;
US_Word( GetProperty( Venta, 'RichEditSysout', 'value' ), 1 ) == 'MAKE'
SetProperty( Venta, 'RichEditSysout', 'value', GetProperty( Venta, 'RichEditSysout', 'value' ) + CRLF + 'Fatal: Could not open ' + GetOutputModuleName() + ', (is program still running?)' )
estado := 'ERROR'
ENDIF
/* Fin Parche para cuando el EXE esta corriendo y queremos hacer build sin modificar ningun prg */
IF bAutoEXIT .AND. ! Empty( PUB_cAutoLog )
PUB_cAutoLogTmp := MemoRead( PUB_cAutoLog )
PUB_cAutoLogTmp += CRLF
PUB_cAutoLogTmp += 'Result: ' + estado
IF estado == 'ERROR' .OR. ( ! PUB_bLogOnlyError .AND. estado == 'WARNING' )
IF ! left(cLog, 1) == CRLF
PUB_cAutoLogTmp += CRLF
ENDIF
PUB_cAutoLogTmp += cLog
ENDIF
PUB_cAutoLogTmp += CRLF
PUB_cAutoLogTmp += Replicate( '=', 80 )
PUB_cAutoLogTmp += CRLF
QPM_MemoWrit( PUB_cAutoLog, PUB_cAutoLogTmp )
ENDIF
SetProperty( Venta, 'RichEditSysout', 'value', MemoRead( TEMP_LOG ) )
SetProperty( Venta, 'RichEditSysout', 'CaretPos', Len( GetProperty( Venta, 'RichEditSysout', 'value' ) ) )
IF bLogActivity
memoTMP := MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' )
memoTMP := memoTMP + '****** ' + PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'Progress.Log' + CRLF+ CRLF
memoTMP := memoTMP + MemoRead( PROGRESS_LOG ) + CRLF
memoTMP := memoTMP + '****** ' + PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'Build.Bat' + CRLF+ CRLF
memoTMP := memoTMP + MemoRead( BUILD_BAT ) + CRLF
memoTMP := memoTMP + '****** ' + PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'Temp.Log' + CRLF
memoTMP := memoTMP + MemoRead( TEMP_LOG ) + CRLF
memoTMP := memoTMP + '****** ' + PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'Temp.Bc' + CRLF + CRLF
memoTMP := memoTMP + MemoRead( MAKE_FILE ) + CRLF
memoTMP := memoTMP + '****** ' + PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'Script.ld' + CRLF+ CRLF
memoTMP := memoTMP + MemoRead( SCRIPT_FILE ) + CRLF
memoTMP := memoTMP + replicate( '>',80 ) + CRLF
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', memoTMP )
ENDIF
SetProperty( Venta, 'LStatusLabel', 'value', 'Status: Idle' )
DO CASE
CASE estado == 'OK'
MsgOk( 'QPM (QAC based Project Manager)', 'Build Finished'+CRLF+'OK', 'I', iif( bBuildRun .OR. ! Empty( Prj_ExtraRunCmdFINAL ), .T., bAutoEXIT ), iif( bBuildRun, 2, ), iif( !bBuildRun .AND. Empty( Prj_ExtraRunCmdFINAL ) .AND. US_Upper( OutputExt() ) == 'EXE', .T., .F. ) )
CASE estado == 'WARNING'
MsgOk( 'QPM (QAC based Project Manager)', 'Build Finished'+CRLF+'with Warnings', 'W', iif( bBuildRun .OR. ! Empty( Prj_ExtraRunCmdFINAL ), .T., bAutoEXIT ), iif( bBuildRun, 4, ), iif( !bBuildRun .AND. Empty( Prj_ExtraRunCmdFINAL ) .AND. US_Upper( OutputExt() ) == 'EXE', .T., .F. ) )
CASE estado == 'ERROR'
MsgOk( 'QPM (QAC based Project Manager)', 'Build Finished'+CRLF+'WITH ERRORS', 'E', bAutoEXIT )
OTHERWISE
MsgOK( 'QPM (QAC based Project Manager)', 'Invalid RETURN Code'+CRLF+'form Build Process: '+estado, 'E' )
ENDCASE
RichEditDisplay( 'OUT' )
SetProperty( Venta, 'LFull', 'FontColor', DEF_COLORGREEN )
SetProperty( Venta, 'LFull', 'value', 'Incremental' )
SetProperty( 'VentanaMain', 'EraseALL', 'enabled', .T. )
SetProperty( 'VentanaMain', 'EraseOBJ', 'enabled', .T. )
SetProperty( 'VentanaMain', 'open', 'enabled', .T. )
SetProperty( 'VentanaMain', 'build', 'enabled', .T. )
SetProperty( 'VentanaMain', 'BVerChange', 'enabled', .T. )
SetProperty( 'VentanaMain', 'OverrideCompile', 'enabled', .T. )
SetProperty( 'VentanaMain', 'OverrideLink', 'enabled', .T. )
IF Prj_Radio_OutputType == DEF_RG_EXE
SetProperty( 'VentanaMain', 'run', 'enabled', .T. )
ENDIF
DO EVENTS
IF estado == 'OK' .AND. ! Empty( Prj_ExtraRunCmdFINAL )
QPM_ExecuteExtraRun()
ENDIF
// ini BUG ======================================================================================
// No pone enable el boton build
IF !GetProperty( 'VentanaMain', 'build', 'enabled' )
SetProperty( 'VentanaMain', 'build', 'enabled', .F. )
SetProperty( 'VentanaMain', 'build', 'enabled', .T. )
US_Log( 'Boton Build sigue disable', .F. )
ENDIF
// fin BUG ======================================================================================
IF PUB_DeleteAux
FErase( QPM_GET_DEF )
FErase( GetObjFolder() + DEF_SLASH + '_' + PUB_cSecu + 'QPM_gt.c' )
FErase( GetObjFolder() + DEF_SLASH + '_' + PUB_cSecu + 'QPM_gt.cus' )
FErase( GetObjFolder() + DEF_SLASH + '_' + PUB_cSecu + 'QPM_gt.o' )
FErase( GetObjFolder() + DEF_SLASH + '_' + PUB_cSecu + 'QPM_gt.ppo' )
FErase( BUILD_BAT )
FErase( END_FILE )
FErase( MAKE_FILE )
FErase( PROGRESS_LOG )
FErase( SCRIPT_FILE )
FErase( TEMP_LOG )
FErase( QPM_TMP_RC )
FErase( US_FileNameOnlyPathAndName( TEMP_LOG ) + ".save" )
FErase( PUB_cProjectFolder + DEF_SLASH + OutName + '.exp' )
FErase( PUB_cProjectFolder + DEF_SLASH + OutName + '.TDS' )
FErase( PUB_cProjectFolder + DEF_SLASH + TopName + '.MAP' )
FErase( PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'TEMP.ERR' )
ENDIF
IF VentanaMain.AutoInc.Checked
IF estado == 'OK' .OR. estado == 'WARNING'
IF Val( GetProperty( 'VentanaMain', 'LVerBuiNum', 'value' ) ) == Val( cTopVerBui )
SetProperty( 'VentanaMain', 'LVerBuiNum', 'value', cBaseVerBui )
IF Val( GetProperty( 'VentanaMain', 'LVerRelNum', 'value' ) ) == Val( cTopVerRel )
SetProperty( 'VentanaMain', 'LVerRelNum', 'value', cBaseVerRel )
IF Val( GetProperty( 'VentanaMain', 'LVerVerNum', 'value' ) ) == Val( cTopVerVer )
SetProperty( 'VentanaMain', 'LVerVerNum', 'value', cBaseVerVer )
MsgWarn( 'Warning, Version counter limit reached ('+cTopVerVer+'.'+cTopVerRel+' build '+cTopVerBui+'). Counter reseted to '+cBaseVerVer+'.'+cBaseVerRel+' build '+cBaseVerBui )
ELSE
SetProperty( 'VentanaMain', 'LVerVerNum', 'value', US_StrCero( Val( GetProperty( 'VentanaMain', 'LVerVerNum', 'value' ) ) + 1, DEF_LEN_VER_VERSION ) )
MsgWarn( 'Warning, Release counter limit reached ('+cTopVerRel+'). Release counter reseted to '+cBaseVerRel+' and Version counter incremented by one digit.' )
ENDIF
ELSE
SetProperty( 'VentanaMain', 'LVerRelNum', 'value', US_StrCero( Val( GetProperty( 'VentanaMain', 'LVerRelNum', 'value' ) ) + 1, DEF_LEN_VER_RELEASE ) )
MsgWarn( 'Warning, Build counter limit reached ('+cTopVerBui+'). Build counter reseted to '+cBaseVerBui+' and Release counter incremented by one digit.' )
ENDIF
ELSE
SetProperty( 'VentanaMain', 'LVerBuiNum', 'value', US_StrCero( Val( GetProperty( 'VentanaMain', 'LVerBuiNum', 'value' ) ) + 1, DEF_LEN_VER_BUILD ) )
ENDIF
ENDIF
ENDIF
IF ( bBuildRun .OR. PUB_bForceRunFromMsgOk ) .AND. ( estado == 'OK' .OR. estado == 'WARNING' )
QPM_Run( bRunParm )
ENDIF
BUILD_IN_PROGRESS := .F.
ELSE
lenAux := US_FileSize( PROGRESS_LOG )
IF lenAux > ProgLength
ProgLength := lenAux
SetProperty( Venta, 'RichEditSysout', 'value', MemoRead( PROGRESS_LOG ) )
SetProperty( Venta, 'RichEditSysout', 'CaretPos', Len( GetProperty( Venta, 'RichEditSysout', 'value' ) ) )
ENDIF
ENDIF
ENDIF
RETURN .T.
FUNCTION QPM_RemoveFilePRG()
LOCAL Pos, dire, exte, i, bBorrar := .T.
LOCAL item := VentanaMain.GPrgFiles.Value
LOCAL bTop := iif( item == 1, .T., .F. )
IF VentanaMain.GPrgFiles.Value > 0
IF MyMsgYesNo( 'Remove file' + CRLF + DBLQT + ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) ) + DBLQT + CRLF + 'from project?', 'Confirm' )
// QPM_ForceRecompExclude( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) ), VentanaMain.GPrgFiles.Value )
dire := US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) )
exte := US_Upper( US_FileNameOnlyExt( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', VentanaMain.GPrgFiles.Value, NCOLPRGFULLNAME ) ) )
VentanaMain.GPrgFiles.DeleteItem( VentanaMain.GPrgFiles.Value )
SetProperty( 'VentanaMain', 'GPrgFiles', 'tooltip', '' )
IF item > VentanaMain.GPrgFiles.ItemCount
item := VentanaMain.GPrgFiles.ItemCount
ENDIF
IF GridImage( 'VentanaMain', 'GPrgFiles', item, NCOLPRGSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( 'PRG', -1 )
ENDIF
SetProperty( 'VentanaMain', 'GPrgFiles', 'value', item )
RichEditDisplay( 'PRG' )
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
FOR i := 1 TO VentanaMain.GDbfFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
IF bBorrar
IF exte == "PRG"
Pos := AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( ChgPathToReal( dire ) ) } )
IF Pos > 0
ADel( vExtraFoldersForSearchHB, Pos )
ENDIF
ELSE
Pos := AScan( vExtraFoldersForSearchC, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( ChgPathToReal( dire ) ) } )
IF Pos > 0
ADel( vExtraFoldersForSearchC, Pos )
ENDIF
ENDIF
ENDIF
IF bTop
CambioTitulo()
IF GetProperty( 'VentanaMain', 'GPrgFiles', 'itemcount' ) > 0
MsgInfo( DBLQT + ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) + DBLQT + CRLF + "is the new project's " + DBLQT + "Top File" + DBLQT + '.' )
ELSE
MsgInfo( "Project's " + DBLQT + "Top File" + DBLQT + " is not defined." )
ENDIF
ENDIF
ENDIF
ENDIF
DoMethod( 'VentanaMain', 'GPrgFiles', 'ColumnsAutoFitH' )
RETURN .T.
FUNCTION QPM_RemoveFileHEA()
LOCAL pos, dire, i, bBorrar := .T.
LOCAL item := VentanaMain.GHeaFiles.Value
IF VentanaMain.GHeaFiles.Value > 0
IF MyMsgYesNo( 'Remove file' + CRLF + DBLQT + ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.Value, NCOLHEAFULLNAME ) ) + DBLQT + CRLF + 'from project?', 'Confirm' )
dire := US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', VentanaMain.GHeaFiles.Value, NCOLHEAFULLNAME ) )
VentanaMain.GHeaFiles.DeleteItem( VentanaMain.GHeaFiles.Value )
SetProperty( 'VentanaMain', 'GHeaFiles', 'tooltip', '' )
IF item > VentanaMain.GHeaFiles.ItemCount
item := VentanaMain.GHeaFiles.ItemCount
ENDIF
IF GridImage( 'VentanaMain', 'GHeaFiles', item, NCOLHEASTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( 'HEA', -1 )
ENDIF
SetProperty( 'VentanaMain', 'GHeaFiles', 'value', item )
RichEditDisplay( 'HEA' )
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
FOR i:= 1 TO VentanaMain.GPanFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
FOR i := 1 TO VentanaMain.GDbfFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
Pos := AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( ChgPathToReal( dire ) ) } )
IF Pos > 0 .AND. bBorrar
ADel( vExtraFoldersForSearchHB, Pos )
ENDIF
Pos := AScan( vExtraFoldersForSearchC, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( ChgPathToReal( dire ) ) } )
IF Pos > 0 .AND. bBorrar
ADel( vExtraFoldersForSearchC, Pos )
ENDIF
ENDIF
ENDIF
DoMethod( 'VentanaMain', 'GHeaFiles', 'ColumnsAutoFitH' )
RETURN .T.
FUNCTION QPM_RemoveFilePAN()
LOCAL pos, dire, i, bBorrar := .T.
LOCAL item := VentanaMain.GPanFiles.Value
IF VentanaMain.GPanFiles.Value > 0
IF MyMsgYesNo( 'Remove file' + CRLF + DBLQT + ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANFULLNAME ) ) + DBLQT + CRLF + 'from project?', 'Confirm' )
dire := US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', VentanaMain.GPanFiles.Value, NCOLPANFULLNAME ) )
VentanaMain.GPanFiles.DeleteItem( VentanaMain.GPanFiles.Value )
SetProperty( 'VentanaMain', 'GPanFiles', 'tooltip', '' )
IF item > VentanaMain.GPanFiles.ItemCount
item := VentanaMain.GPanFiles.ItemCount
ENDIF
IF GridImage( 'VentanaMain', 'GPanFiles', item, NCOLPANSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( 'PAN', -1 )
ENDIF
SetProperty( 'VentanaMain', 'GPanFiles', 'value', item )
RichEditDisplay( 'PAN' )
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF dire == US_FileNameOnlyPath( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) )
bBorrar := .F.
ENDIF
NEXT
Pos := AScan( vExtraFoldersForSearchHB, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( ChgPathToReal( dire ) ) } )
IF Pos > 0 .AND. bBorrar
ADel( vExtraFoldersForSearchHB, Pos )
ENDIF
ENDIF
ENDIF
DoMethod( 'VentanaMain', 'GPanFiles', 'ColumnsAutoFitH' )
RETURN .T.
FUNCTION QPM_RemoveFileDBF()
LOCAL item := VentanaMain.GDbfFiles.Value
IF VentanaMain.GDbfFiles.Value > 0
IF MyMsgYesNo( 'Remove file' + CRLF + DBLQT + ChgPathToReal( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFFULLNAME ) ) + DBLQT + CRLF + 'from project?', 'Confirm' )
VentanaMain.GDbfFiles.DeleteItem( VentanaMain.GDbfFiles.Value )
SetProperty( 'VentanaMain', 'GDbfFiles', 'tooltip', '' )
IF item > VentanaMain.GDbfFiles.ItemCount
item := VentanaMain.GDbfFiles.ItemCount
ENDIF
IF GridImage( 'VentanaMain', 'GDbfFiles', item, NCOLDBFSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( 'DBF', -1 )
ENDIF
SetProperty( 'VentanaMain', 'GDbfFiles', 'value', item )
IF item == 0
CloseDbfAutoView()
VentanaMain.RichEditDbf.Value := ''
ELSE
RichEditDisplay( 'DBF' )
ENDIF
ENDIF
ENDIF
DoMethod( 'VentanaMain', 'GDbfFiles', 'ColumnsAutoFitH' )
RETURN .T.
FUNCTION QPM_RemoveFileLIB()
LOCAL pos, dire, i, bBorrar := .T.
LOCAL item := VentanaMain.GIncFiles.Value
IF VentanaMain.GIncFiles.Value > 0
IF MyMsgYesNo( 'Remove file' + CRLF + DBLQT + ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', VentanaMain.GIncFiles.Value, NCOLINCFULLNAME ), 3 ) ) + DBLQT + CRLF + 'from project?', 'Confirm' )
dire := US_Upper( US_FileNameOnlyPath( ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', VentanaMain.GIncFiles.Value, NCOLINCFULLNAME ), 3 ) ) ) )
VentanaMain.GIncFiles.DeleteItem( VentanaMain.GIncFiles.Value )
IF item > VentanaMain.GIncFiles.ItemCount
item := VentanaMain.GIncFiles.ItemCount
ENDIF
IF GridImage( 'VentanaMain', 'GIncFiles', item, NCOLINCSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( 'LIB', -1 )
ENDIF
SetProperty( 'VentanaMain', 'GIncFiles', 'value', item )
RichEditDisplay( 'INC' )
Pos := AScan( &('vExtraFoldersForLibs'+GetSuffix()), dire )
FOR i := 1 TO VentanaMain.GIncFiles.ItemCount
IF dire == US_Upper( US_FileNameOnlyPath( ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', i, NCOLINCFULLNAME ), 3 ) ) ) )
bBorrar := .F.
ENDIF
NEXT
IF Pos > 0 .AND. bBorrar
ADel( &('vExtraFoldersForLibs'+GetSuffix()), Pos )
ENDIF
ENDIF
ENDIF
DoMethod( 'VentanaMain', 'GIncFiles', 'ColumnsAutoFitH' )
RETURN .T.
FUNCTION QPM_RemoveExcludeFileLIB()
LOCAL item := VentanaMain.GExcFiles.Value
IF VentanaMain.GExcFiles.Value > 0
IF MyMsgYesNo( 'Remove file' + CRLF + DBLQT + GetProperty( 'VentanaMain', 'GExcFiles', 'Cell', VentanaMain.GExcFiles.Value, NCOLEXCNAME ) + DBLQT + CRLF + 'from exclude list?', 'Confirm' )
VentanaMain.GExcFiles.DeleteItem( VentanaMain.GExcFiles.Value )
IF item > VentanaMain.GExcFiles.ItemCount
item := VentanaMain.GExcFiles.ItemCount
ENDIF
SetProperty( 'VentanaMain', 'GExcFiles', 'value', item )
//RichEditDisplay( 'EXC' )
ENDIF
ENDIF
DoMethod( 'VentanaMain', 'GExcFiles', 'ColumnsAutoFitH' )
RETURN .T.
#ifdef QPM_SHG
FUNCTION QPM_RemoveFileHLP()
LOCAL nAuxRecord, item := VentanaMain.GHlpFiles.Value
IF VentanaMain.GHlpFiles.Value > 2
IF MyMsgYesNo('Remove topic ' + AllTrim( GetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', VentanaMain.GHlpFiles.Value, NCOLHLPTOPIC ) ) + ' From Help?','Confirm')
bHlpMoving := .T.
nAuxRecord := VentanaMain.GHlpFiles.Value
VentanaMain.GHlpFiles.DeleteItem( VentanaMain.GHlpFiles.Value )
SetProperty( 'VentanaMain', 'GHlpFiles', 'tooltip', '' )
IF item > VentanaMain.GHlpFiles.ItemCount
item := VentanaMain.GHlpFiles.ItemCount
ENDIF
IF GridImage( 'VentanaMain', 'GHlpFiles', item, NCOLHLPSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( 'HLP', -1 )
ENDIF
SetProperty( 'VentanaMain', 'GHlpFiles', 'value', item )
SHG_DeleteRecord( nAuxRecord )
// SHG_NewSecuence()
RichEditDisplay( 'HLP' )
bHlpMoving := .F.
ENDIF
ELSE
IF VentanaMain.GHlpFiles.Value == 1
MsgInfo( "Global foot can't be edited, it's a System topic!" )
RETURN .F.
ENDIF
IF VentanaMain.GHlpFiles.Value == 2
MsgInfo( "Welcome page can't be deleted, it's a System topic!" )
RETURN .F.
ENDIF
ENDIF
DoMethod( 'VentanaMain', 'GHlpFiles', 'ColumnsAutoFitH' )
RETURN .T.
#endif
#ifdef QPM_SHG
FUNCTION QPM_RemoveKeyHLP()
LOCAL item := VentanaMain.GHlpKeys.Value, MemoAux := '', i
IF VentanaMain.GHlpKeys.Value > 0
VentanaMain.GHlpKeys.DeleteItem( VentanaMain.GHlpKeys.Value )
IF item > VentanaMain.GHlpKeys.ItemCount
item := VentanaMain.GHlpKeys.ItemCount
ENDIF
SetProperty( 'VentanaMain', 'GHlpKeys', 'value', item )
FOR i := 1 TO VentanaMain.GHlpKeys.ItemCount
MemoAux := MemoAux + iif( i > 1, CRLF, '' ) + VentanaMain.GHlpKeys.Cell( i, 1 )
NEXT
SHG_SetField( 'SHG_KEYST', VentanaMain.GHlpFiles.Value, MemoAux )
ENDIF
DoMethod( 'VentanaMain', 'GHlpKeys', 'ColumnsAutoFitH' )
RETURN .T.
#endif
FUNCTION LibInfo()
LOCAL a, b, c
IF VentanaMain.GIncFiles.Value > 0
a:='Library name: ' + US_FileNameOnlyNameAndExt( ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', VentanaMain.GIncFiles.Value, NCOLINCFULLNAME ), 3 ) ) )
b:=' in Folder: ' + US_FileNameOnlyPath( ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', VentanaMain.GIncFiles.Value, NCOLINCFULLNAME ), 3 ) ) )
c:='Concatenated ' + iif( US_Upper( US_Word( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', VentanaMain.GIncFiles.Value, NCOLINCFULLNAME ), 2 ) ) == '*FIRST*', 'BEFORE MiniGui library', 'AFTER last significant library' )
MsgInfo( a + CRLF + ;
b + CRLF + ;
' ' + CRLF + ;
c + CRLF + ;
'Status: ' + LibCheck( VentanaMain.GIncFiles.Value ) )
ENDIF
RETURN .T.
FUNCTION LibExcludeInfo()
LOCAL a, c
IF VentanaMain.GExcFiles.Value > 0
a:='Library ' + GetProperty( 'VentanaMain', 'GExcFiles', 'Cell', VentanaMain.GExcFiles.Value, NCOLEXCNAME )
c:='will be excluded from the build process-'
MsgInfo( a + CRLF + ;
' ' + CRLF + ;
c )
ENDIF
RETURN .T.
FUNCTION DefinoWindowsHotKeys()
SET HELPFILE TO PUB_cQPM_Folder + DEF_SLASH + 'QPM.chm'
ON KEY F1 OF VentanaMain ACTION US_DisplayHelpTopic( GetActiveHelpFile(), 1 )
ON KEY F2 OF VentanaMain ACTION QPM_OpenProject()
ON KEY F3 OF VentanaMain ACTION QPM_SaveProject()
ON KEY F4 OF VentanaMain ACTION QPM_Build()
ON KEY F5 OF VentanaMain ACTION QPM_Run( bRunParm )
ON KEY F10 OF VentanaMain ACTION QPM_EXIT( .T. )
#ifdef QPM_SHG
ON KEY CONTROL+C OF VentanaMain ACTION SHG_Send_Copy()
ON KEY CONTROL+X OF VentanaMain ACTION SHG_Send_Cut()
ON KEY CONTROL+V OF VentanaMain ACTION SHG_Send_Paste()
#else
ON KEY CONTROL+C OF VentanaMain ACTION ( US_Send_Copy(), DoEvents() )
ON KEY CONTROL+X OF VentanaMain ACTION ( US_Send_Cut(), DoEvents() )
ON KEY CONTROL+V OF VentanaMain ACTION ( US_Send_Paste(), DoEvents() )
#endif
RETURN .T.
FUNCTION LiberoWindowsHotKeys()
_HMG_ActiveHelpFile := ""
RELEASE KEY F1 OF VentanaMain
RELEASE KEY F2 OF VentanaMain
RELEASE KEY F3 OF VentanaMain
RELEASE KEY F4 OF VentanaMain
RELEASE KEY F5 OF VentanaMain
RELEASE KEY F10 OF VentanaMain
RELEASE KEY CONTROL+C OF VentanaMain
RELEASE KEY CONTROL+X OF VentanaMain
RELEASE KEY CONTROL+V OF VentanaMain
RETURN .T.
FUNCTION TranslateLog( Log )
LOCAL NewLog, i, e, w, j, d, aLines, errorlevel
LOCAL qpmfolder := US_ShortName( PUB_cQPM_Folder )
LOCAL cppfolder := US_ShortName( GetCppFolder() ) + DEF_SLASH + 'BIN'
LOCAL msg := DBLQT + qpmfolder + DEF_SLASH + 'US_MSG.EXE'+ DBLQT + " " + Q_PROGRESS_LOG + ' -MSG:'
LOCAL slash := DBLQT + qpmfolder + DEF_SLASH + 'US_SLASH.EXE' + DBLQT + ' QPM'
LOCAL slashlist := DBLQT + qpmfolder + DEF_SLASH + 'US_SLASH.EXE' + DBLQT + ' QPM -LIST' + qpmfolder
LOCAL upx := DBLQT + qpmfolder + DEF_SLASH + 'US_UPX.EXE' + DBLQT
LOCAL shellCZ := DBLQT + qpmfolder + DEF_SLASH + 'US_SHELL.EXE' + DBLQT + ' QPM COPYZAP '
LOCAL shellMZ := DBLQT + qpmfolder + DEF_SLASH + 'US_SHELL.EXE' + DBLQT + ' QPM MOVEZAP '
LOCAL shell := DBLQT + qpmfolder + DEF_SLASH + 'US_SHELL.EXE' + DBLQT + ' QPM '
LOCAL implib := DBLQT + qpmfolder + DEF_SLASH + 'US_IMPLIB.EXE' + DBLQT
LOCAL implibPelles := DBLQT + qpmfolder + DEF_SLASH + 'US_POLIB.EXE' + DBLQT
LOCAL impdef := DBLQT + qpmfolder + DEF_SLASH + 'US_IMPDEF.EXE' + DBLQT
LOCAL PExports := DBLQT + qpmfolder + DEF_SLASH + 'US_PEXPORTS.EXE' + DBLQT
LOCAL reimp := DBLQT + qpmfolder + DEF_SLASH + 'US_REIMP.EXE' + DBLQT
LOCAL harbour := US_ShortName( GetHarbourFolder() ) + DEF_SLASH + 'BIN' + DEF_SLASH + 'HARBOUR.EXE'
LOCAL gcc := cppfolder + DEF_SLASH + 'GCC.EXE'
LOCAL pocc := cppfolder + DEF_SLASH + 'POCC.EXE'
LOCAL bcc32 := cppfolder + DEF_SLASH + 'BCC32.EXE'
LOCAL brc32 := cppfolder + DEF_SLASH + 'BRCC32.EXE'
LOCAL ilink32 := cppfolder + DEF_SLASH + 'ILINK32.EXE'
LOCAL windres := cppfolder + DEF_SLASH + 'WINDRES.EXE'
LOCAL dlltool := cppfolder + DEF_SLASH + 'DLLTOOL.EXE'
LOCAL Make := 'MAKE Version 5.2 Copyright (c) 1987, 2000 Borland' + Chr(10)
LOCAL ImpLibBor := Chr(10) + 'Borland Implib Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation' + Chr(10)
LOCAL ImpDefBor := Chr(10) + 'Borland Impdef Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation' + Chr(10)
LOCAL QPM_Ver := '/D__QPM_VERSION__="' + "'" + QPM_VERSION_NUMBER_SHORT + "'" + '" '
LOCAL PRJ_Ver := '/D__PRJ_VERSION__="' + "'" + cPrj_Version + "'" + '" '
LOCAL PRJ_Folder := '/D__PROJECT_FOLDER__="' + "'" + VentanaMain.TProjectFolder.Value + "'" + '" '
LOCAL cEcho2 := '>> ' + Q_SCRIPT_FILE
LOCAL cEcho := '> ' + Q_SCRIPT_FILE
LOCAL cDelete := '** error 1 ** '
/* Texto, Position ( 0=Cualquiera ), Producto */
LOCAL vWarnings := { { ') Warning W', 0, DefineXHarbour }, ; // Warning en Compilaciones
{ 'Warning W', 1, 'CBORLAND' }, ; // Warning en funcion C
{ ': warning: ', 0, 'CMINGW' }, ; // Warning en funcion C
{ ': No such file or directory', 0, 'RMINGW' }, ; // Warning en Resource Compiler (include not found)
{ 'Duplicate resource:', 1, 'RBORLAND' }, ; // Warning en Resource Compiler
{ 'warning: ', 1, 'LNKBORLAND' }, ; // Warning en Linkeditor de Borland (No recuerdo si aparecia en minuscula por eso lo agrego
{ 'Warning: ', 1, 'LNKBORLAND' }, ; // Warning en Linkeditor o TLIB de Borland
{ 'POLIB: warning: ', 1, 'LIBPELLES' }, ; // Warning en creacion de libreria Pelles C
{ 'POLINK: warning: ', 1, 'LNKPELLES' } ; // Warning en Linkeditor de Pelles C
}
LOCAL vErrors := { { '** error 1 **', 1, 'LNKMINGW' }, ; // Error en linkedicion MinGW
{ '** error 2 **', 1, 'LNKBORLAND' }, ; // Error en Linkeditor de Borland
{ 'Error: Unresolved external', 1, 'LNKBORLAND' }, ; // Error en Linkeditor de Borland
{ 'Fatal: Access violation. Link terminated.', 1, 'LNKBORLAND' }, ; // Error en Linkeditor de Borland
{ 'Fatal: Could not open', 1, 'LNKBORLAND' }, ; // Error en Linkeditor de Borland
{ 'POLIB: error: ', 1, 'LIBPELLES' }, ; // Error en Libreria de Pelles C
{ 'POLINK: error: ', 1, 'LNKPELLES' }, ; // Error en Linkeditor de Pelles C
{ 'POLINK: fatal error: ', 1, 'LNKPELLES' }, ; // Error en Linkeditor de Pelles C
{ 'Packed 0 files.', 1, 'UPX' }, ; // Error en UPX
{ 'Packed 1 file: 0 ok, 1 error.', 1, 'UPX' }, ; // Error en UPX
{ 'error:', 1, 'RC compiler' }, ;
{ 'No code generated.', 1, 'compiler' }, ;
{ "compilation terminated.", 1, 'compiler' }, ;
{ "preprocessing failed.", 1, 'compiler' } ;
}
VentanaMain.RichEditSysout.Value := VentanaMain.RichEditSysout.Value + CRLF + US_TimeDis( Time() ) + ' - >>>>>>> Reading Process Output ...'
VentanaMain.RichEditSysout.SetFocus()
VentanaMain.RichEditSysout.CaretPos := Len( VentanaMain.RichEditSysout.Value )
// Set build's errorlevel
errorlevel := US_Word( MemoRead( END_FILE ), 1 )
IF errorlevel == 'OK'
FOR i := 1 TO Len( vWarnings )
IF At( vWarnings[i][1], Log ) > 0
QPM_MemoWrit( END_FILE, ( errorlevel := 'WARNING' ) )
EXIT
ENDIF
NEXT
ENDIF
IF ! errorlevel == 'ERROR'
FOR i := 1 TO Len( vErrors )
IF At( vErrors[i][1], Log ) > 0
QPM_MemoWrit( END_FILE, ( errorlevel := 'ERROR' ) )
EXIT
ENDIF
NEXT
ENDIF
// Start of log beautification
IF ! PUB_DeleteAux
QPM_MemoWrit( US_FileNameOnlyPathAndName( TEMP_LOG ) + ".save", Log )
ENDIF
// This lines must come FIRST and its order IS significant
NewLog := Chr(10) + Log + Chr(10)
NewLog := StrTran( NewLog, CRLF, Chr(10) )
NewLog := StrTran( NewLog, Chr(13), Chr(10) )
NewLog := StrTran( NewLog, PUB_cCharTab, " " )
NewLog := StrTran( NewLog, DEF_SLASH + DEF_SLASH, DEF_SLASH )
DO WHILE At( Chr(10) + Chr(10), NewLog ) > 0
NewLog := StrTran( NewLog, Chr(10) + Chr(10), Chr(10) )
ENDDO
// This lines must come SECOND and it's order IS NOT significant
NewLog := StrTran( NewLog, msg, '==> ' )
NewLog := StrTran( NewLog, slash, 'GCC' )
NewLog := StrTran( NewLog, slashlist, 'GCC' )
NewLog := StrTran( NewLog, upx, 'UPX' )
NewLog := StrTran( NewLog, shellCZ, 'COPY -z' )
NewLog := StrTran( NewLog, shellMZ, 'MOVE -z' )
NewLog := StrTran( NewLog, shell, '' )
NewLog := StrTran( NewLog, implib, "GENERATE 'LIB'" )
NewLog := StrTran( NewLog, implibPelles, "GENERATE 'LIB'" )
NewLog := StrTran( NewLog, impdef, "LIST 'DLL'" )
NewLog := StrTran( NewLog, PExports, "LIST 'DLL'" )
NewLog := StrTran( NewLog, reimp, 'ReIMPORT ' )
NewLog := StrTran( NewLog, "WINDRES: ", '' )
NewLog := StrTran( NewLog, QPM_TMP_RC, ' QPM_TMP_RC ' )
NewLog := StrTran( NewLog, ' -o', ' -o ' )
NewLog := StrTran( NewLog, Make, '' )
NewLog := StrTran( NewLog, cEcho2, '' )
NewLog := StrTran( NewLog, cEcho, '' )
NewLog := StrTran( NewLog, ImpLibBor, '' )
NewLog := StrTran( NewLog, ImpDefBor, '' )
NewLog := StrTran( NewLog, QPM_Ver, '' )
NewLog := StrTran( NewLog, PRJ_Ver, '' )
NewLog := StrTran( NewLog, PRJ_Folder, '' )
NewLog := StrTran( NewLog, cDelete, '' )
NewLog := StrTran( NewLog, Chr(10) + "US_Shell ", Chr(10) )
NewLog := StrTran( NewLog, " US_Shell ", '' )
// This lines must come THIRD and it's order IS significant
NewLog := StrTran( NewLog, Chr(10) + '==> SCRIPT_FILE is ', 'SCRIPT_FILE is ' )
NewLog := StrTran( NewLog, SCRIPT_FILE, ' SCRIPT_FILE ' )
NewLog := StrTran( NewLog, DBLQT + harbour + DBLQT, 'HARBOUR' )
NewLog := StrTran( NewLog, harbour, 'HARBOUR' )
NewLog := StrTran( NewLog, DBLQT + gcc + DBLQT, 'GCC' )
NewLog := StrTran( NewLog, gcc, 'GCC' )
NewLog := StrTran( NewLog, DBLQT + pocc + DBLQT, 'POCC' )
NewLog := StrTran( NewLog, pocc, 'POCC' )
NewLog := StrTran( NewLog, DBLQT + bcc32 + DBLQT, 'BCC32' )
NewLog := StrTran( NewLog, bcc32, 'BCC32' )
NewLog := StrTran( NewLog, DBLQT + brc32 + DBLQT, 'BRCC32' )
NewLog := StrTran( NewLog, brc32, 'BRCC32' )
NewLog := StrTran( NewLog, DBLQT + ilink32 + DBLQT, 'ILINK32' )
NewLog := StrTran( NewLog, ilink32, 'ILINK32' )
NewLog := StrTran( NewLog, DBLQT + windres + DBLQT, 'WINDRES' )
NewLog := StrTran( NewLog, windres, 'WINDRES' )
NewLog := StrTran( NewLog, DBLQT + dlltool + DBLQT, "GENERATE 'A'" )
NewLog := StrTran( NewLog, dlltool, "GENERATE 'A'" )
NewLog := StrTran( NewLog, " QPM_TMP_RC :", 'QPM_TMP_RC line ' )
// Remove or translate obscure or uninformative messages
i := 1
DO WHILE ( e := At( "fatal error: when writing output to : Broken pipe", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
j := At( Chr(10), SubStr( NewLog, i + e ) )
NewLog := Left( NewLog, w ) + SubStr( NewLog, i + e + j - 1 )
i := w + 1
ENDDO
i := 1
DO WHILE ( e := At( " error" + Chr(10) + "No code generated.", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
j := At( Chr(10), SubStr( NewLog, i + e ) )
NewLog := Left( NewLog, w ) + SubStr( NewLog, i + e + j )
i := w + 1
ENDDO
i := 1
DO WHILE ( e := At( " errors" + Chr(10) + "No code generated.", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
j := At( Chr(10), SubStr( NewLog, i + e ) )
NewLog := Left( NewLog, w ) + SubStr( NewLog, i + e + j )
i := w + 1
ENDDO
i := 1
DO WHILE ( e := At( "No code generated.", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
j := At( Chr(10), SubStr( NewLog, i + e ) )
NewLog := Left( NewLog, w ) + SubStr( NewLog, i + e + j )
i := w + 1
ENDDO
i := 1
DO WHILE ( e := At( "compilation terminated.", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
j := At( Chr(10), SubStr( NewLog, i + e ) )
NewLog := Left( NewLog, w ) + SubStr( NewLog, i + e + j )
i := w + 1
ENDDO
i := 1
DO WHILE ( e := At( "preprocessing failed.", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
j := At( Chr(10), SubStr( NewLog, i + e ) )
NewLog := Left( NewLog, w ) + SubStr( NewLog, i + e + j )
i := w + 1
ENDDO
i := 1
DO WHILE ( e := At( "ld.exe: ", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
NewLog := Left( NewLog, w ) + "Error: " + SubStr( NewLog, e + 8 )
i := w + 1
ENDDO
i := 1
DO WHILE ( e := At( "collect2.exe: ", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
j := At( Chr(10), SubStr( NewLog, i + e ) )
NewLog := Left( NewLog, w ) + SubStr( NewLog, i + e + j - 1 )
i := w + 1
ENDDO
i := 1
DO WHILE ( e := At( "deleting ", SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
j := At( Chr(10), SubStr( NewLog, i + e ) )
NewLog := Left( NewLog, w ) + SubStr( NewLog, i + e + j )
i := w + 1
ENDDO
// From now on the order IS significant!
IF At( "WINDRES: QPM_TMP_RC line ", NewLog ) > 0
// Read RC file and build an array of lines
aLines := hb_ATokens( MemoRead( QPM_TMP_RC ), CRLF )
ENDIF
i := 1
DO WHILE ( e := At( "WINDRES: QPM_TMP_RC line ", SubStr( NewLog, i ) ) ) > 0
j := i + e + 24
w := "0"
DO WHILE IsDigit( d := SubStr( NewLog, j, 1 ) )
w += d
j ++
ENDDO
i := j
IF ( w := Val( w ) ) > 0
// Insert RC's offending line into the log
j := At( Chr(10), SubStr( NewLog, i ) )
NewLog := Left( NewLog, i + j - 2 ) + ": " + aLines[w] + SubStr( NewLog, i + j - 1 )
i := i + j + Len( aLines[w] )
ENDIF
ENDDO
// Cleanup leading and trailing spaces, replace multiple spaces with a single one
DO WHILE At( " ", NewLog ) > 0
NewLog := StrTran( NewLog, " ", " " )
ENDDO
NewLog := StrTran( NewLog, " " + Chr(10), Chr(10) )
NewLog := StrTran( NewLog, Chr(10) + " ", Chr(10) )
// Replace 2 or move empty line with a single one
DO WHILE At( Chr(10) + Chr(10), NewLog ) > 0
NewLog := StrTran( NewLog, Chr(10) + Chr(10), Chr(10) )
ENDDO
// Add empty lines to improve readability of compilers output
i := 1
DO WHILE ( e := At( ') Error E', SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
NewLog := Left( NewLog, w ) + Chr(10) + SubStr( NewLog, w + 1 )
i := i + e + 8
ENDDO
i := 1
DO WHILE ( e := At( ') Warning W', SubStr( NewLog, i ) ) ) > 0
w := RAt( Chr(10), Left( NewLog, i + e - 2 ) )
NewLog := Left( NewLog, w ) + Chr(10) + SubStr( NewLog, w + 1 )
i := i + e + 10
ENDDO
// Highlight message lines and indent others
NewLog := StrTran( NewLog, Chr(10), Chr(10) + PUB_cCharTab )
NewLog := StrTran( NewLog, PUB_cCharTab + '==> ', Chr(10) + '==> ' )
// Remove 'lonely' tab chars
NewLog := StrTran( NewLog, PUB_cCharTab + Chr(10), Chr(10) )
IF Right( NewLog, Len( PUB_cCharTab ) ) == PUB_cCharTab
NewLog := Left( NewLog, Len( NewLog ) - Len( PUB_cCharTab) )
ENDIF
// Remove empty lines at top leaving only one
DO WHILE Left( NewLog, 2 ) == Chr(10) + Chr(10)
NewLog := SubStr( NewLog, 2 )
ENDDO
// Remove empty lines at bottom leaving only one
DO WHILE Right( NewLog, 2 ) == Chr(10) + Chr(10)
NewLog := Left( NewLog, Len( NewLog ) - 1 )
ENDDO
// Replace tab char with 4 spaces
NewLog := StrTran( NewLog, PUB_cCharTab, ' ' )
// Make the log readable
NewLog := StrTran( NewLog, Chr(10), CRLF )
// Show build status
NewLog += CRLF + "==> Build status: " + errorlevel + CRLF
RETURN NewLog
FUNCTION SwitchAutoInc()
VentanaMain.AutoInc.Checked := ! VentanaMain.AutoInc.Checked
QPM_SetResumen()
RETURN .T.
FUNCTION SwitchHotKeys()
VentanaMain.HotKeys.Checked := ! VentanaMain.HotKeys.Checked
IF VentanaMain.HotKeys.Checked
DefinoWindowsHotKeys()
ELSE
LiberoWindowsHotKeys()
ENDIF
QPM_SetResumen()
RETURN .T.
FUNCTION SwitchDebug()
IF Empty( PUB_cProjectFolder ) .OR. ! US_IsDirectory( PUB_cProjectFolder )
MsgStop( DBLQT + "Project Folder" + DBLQT + " is not a valid folder:" + CRLF + PUB_cProjectFolder + CRLF + 'Look at tab ' + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF VentanaMain.GPrgFiles.ItemCount == 0
MsgInfo( "Can't switch debug flag when " + DBLQT + "Sources" + DBLQT + "list is Empty." + CRLF + "Look at tab " + DBLQT + PagePRG + DBLQT )
RETURN .F.
ENDIF
IF PUB_bDebugActive == .T.
PUB_bDebugActive := .F.
VentanaMain.Debug.Checked := .F.
ELSE
PUB_bDebugActive := .T.
VentanaMain.Debug.Checked := .T.
ENDIF
EraseOBJ()
IF PUB_bLite
VentanaLite.LFull.FontColor := DEF_COLORRED
VentanaLite.LFull.Value := 'Force non-incremental'
ELSE
VentanaMain.LFull.FontColor := DEF_COLORRED
VentanaMain.LFull.Value := 'Force non-incremental'
ENDIF
QPM_SetResumen()
RETURN .T.
FUNCTION ClearLog()
ferase( PUB_cQPM_Folder + DEF_SLASH + 'QPM.LOG' )
RETURN .T.
FUNCTION ActOutputTypeSet()
DO CASE
CASE Prj_Radio_OutputType == DEF_RG_EXE
bBuildRun := bBuildRunBack
SetProperty( 'VentanaMain', 'bDropDownBandR', 'enabled', .T. )
SetProperty( 'VentanaMain', 'run', 'enabled', .T. )
CASE Prj_Radio_OutputType == DEF_RG_LIB
bBuildRunBack := bBuildRun
bBuildRun := .F.
SetProperty( 'VentanaMain', 'bDropDownBandR', 'enabled', .F. )
SetProperty( 'VentanaMain', 'run', 'enabled', .F. )
CASE Prj_Radio_OutputType == DEF_RG_IMPORT
bBuildRunBack := bBuildRun
bBuildRun := .F.
SetProperty( 'VentanaMain', 'bDropDownBandR', 'enabled', .F. )
SetProperty( 'VentanaMain', 'run', 'enabled', .F. )
ENDCASE
RETURN .T.
FUNCTION MainInitAutoRun()
LOCAL i, bError := .F.
#ifdef QPM_HOTRECOVERY
QPM_HR_Database := PUB_cQPM_Folder + DEF_SLASH + 'QPM_HotRecovery_' + QPM_VERSION_NUMBER_LONG + '.dbf'
IF ! PUB_bLite
IF ! File( QPM_HR_Database )
QPM_Wait( 'QPM_HotRecovery_Migrate()', 'Creating or Migrating Hot Recovery Version database from previous releases ...' )
MsgInfo( 'Migration finished.' )
ELSE
QPM_Wait( 'HotRecoveryDatabaseCompatibility( QPM_HR_Database )', 'Checking Compatibility on Hot Recovery Versions Database' )
ENDIF
ENDIF
#endif
IF PUB_bLite
VentanaLite.bStop.Enabled := .F.
VentanaMain.Hide()
VentanaLite.Activate()
DoMethod( 'VentanaMain', 'Release' )
ELSE
VentanaMain.bStop.Enabled := .F.
IF Len( PUB_vAutoRun ) > 0
FOR i := 1 TO Len( PUB_vAutoRun )
IF ! EVal( {|| &( PUB_vAutoRun[ i ] ) } )
bError := .T.
EXIT
ENDIF
NEXT
IF bError .AND. bAutoEXIT
bWaitForBuild := .F.
QPM_EXIT()
ENDIF
ENDIF
ENDIF
RETURN .T.
FUNCTION HideInitAutoRun()
LOCAL i, bError := .F.
IF Len( PUB_vAutoRun ) > 0
FOR i := 1 TO Len( PUB_vAutoRun )
// eVal( {|| &( PUB_vAutoRun[ i ] ) } )
IF !eVal( {|| &( PUB_vAutoRun[ i ] ) } )
// RETURN .F.
bError := .T.
EXIT
ENDIF
NEXT
IF bError .AND. bAutoEXIT
bWaitForBuild := .F.
QPM_EXIT()
ENDIF
ENDIF
RETURN .T.
FUNCTION EnableButtonRun()
IF bWaitForBuild
DO WHILE BUILD_IN_PROGRESS
DO EVENTS
ENDDO
ENDIF
SetProperty( 'VentanaLite', 'Label_3', 'enabled', .T. )
SetProperty( 'VentanaLite', 'BRunP', 'enabled', .T. )
SetProperty( 'VentanaLite', 'BRun', 'enabled', .T. )
ON KEY ESCAPE OF VentanaLite ACTION DoMethod( 'VentanaLite', 'release' )
RETURN .T.
FUNCTION xRefPrgFmg( vConcatIncludeHB )
LOCAL f, p, Fol := PUB_cProjectFolder+DEF_SLASH, MemoAux, i
LOCAL vScanned := {}, vPRGFiles := {}, vPANFiles := {}
MemoAux := memoread( PROGRESS_LOG )
QPM_MemoWrit( PROGRESS_LOG, MemoAux + US_TimeDis( Time() ) + ' - Checking cross references between PRG files and FMG files ...' + CRLF )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgFmg Initialize' + CRLF )
ENDIF
FOR f := 1 TO VentanaMain.GPanFiles.itemcount
AAdd( vPANFiles, ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', f, NCOLPANFULLNAME ) ) )
NEXT f
FOR f := 1 TO Len( vPanFiles )
FOR i := 1 TO Len( vConcatIncludeHB )
IF File( vConcatIncludeHB[i]+DEF_SLASH+US_FileNameOnlyNameAndExt( vPanFiles[f] ) )
IF ! ( US_Upper( US_ShortName( vConcatIncludeHB[i]+DEF_SLASH+US_FileNameOnlyNameAndExt( vPanFiles[f] ) ) ) == US_Upper( US_ShortName( vPanFiles[f] ) ) )
MsgWarn( 'In Folder '+vConcatIncludeHB[i]+' exists the Form '+US_FileNameOnlyNameAndExt( vPanFiles[f] ) + CRLF + ;
"Harbour's search process will locate THIS Form first," + CRLF + ;
'then the form in '+US_FileNameOnlyPath( vPanFiles[f] ) +' will be ignored.' )
ELSE
EXIT
ENDIF
ENDIF
NEXT i
NEXT f
FOR f := 1 TO VentanaMain.GPrgFiles.itemcount
AAdd( vPRGFiles, ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', f, NCOLPRGFULLNAME ) ) )
NEXT f
/* Nota: Lo referido a vSinLoadWindow y vXRefPrgFmg puede ser eliminado, si eso ocurre, provocamos que en cada BUILD se */
/* scaneen los PRG que no tienen LOAD WINDOW, enlenteciendo el proceso */
/* Si se usa -BUILD como parametro no tiene ninguna implicancia ya que actúa despues de la primera pasada */
FOR f := 1 TO Len( vPANFiles )
FOR p := 1 TO Len( vPRGFiles )
IF AScan( vSinLoadWindow, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( vPRGFiles[ p ] ) } ) == 0 // a nivel programa
IF AScan( vScanned, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( vPRGFiles[ p ] ) } ) == 0 // a nivel funcion
IF US_FileDateTime( vPANFiles[ f ] ) > US_FileDateTime( Fol + GetObjName() + DEF_SLASH + US_FileNameOnlyName( vPRGFiles[ p ] ) + '.c' )
// el primer AScan hace una comparacion parcial ( = ) y se le añade un blanco al final para que solo encuentre palabras completas
// el segundo AScan hace una comparacion total ( == ) del string (son dos palabras)
// El vector contiene 'myPRG myFmg'
IF ( AScan( vXRefPrgFmg, { |x| US_Upper( US_VarToStr( x ) ) == US_Upper( US_FileNameOnlyNameAndExt( vPrgFiles[ p ] ) ) + ' ' } ) == 0 .OR. ;
AScan( vXRefPrgFmg, { |x| US_Upper( US_VarToStr( x ) ) == US_Upper( US_FileNameOnlyNameAndExt( vPrgFiles[ p ] ) ) + ' ' + US_Upper( US_FileNameOnlyNameAndExt( vPanFiles[ f ] ) ) } ) > 0 )
IF ! ( FMG_Scan( vPRGFiles[ p ], US_FileDateTime( Fol + GetObjName() + DEF_SLASH + US_FileNameOnlyName( vPRGFiles[ p ] ) + '.c' ), vScanned, vPanFiles ) )
AAdd( vSinLoadWindow, US_Upper( vPRGFiles[ p ] ) ) // Para Control de Programa desde segunda pasada hasta que se vuele a ingresar
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder+DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder+DEF_SLASH + 'QPM.log' ) + "xRefPrgFmg Add file '" + vPRGFiles[ p ] + "' to vSinLoadWindow" + CRLF )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
NEXT
NEXT
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgFmg Ended' + CRLF + CRLF )
ENDIF
RETURN .T.
FUNCTION FMG_Scan( cFileIn, DateTimeOfC, vScanned, vPanFiles )
LOCAL hFiIn, i, cLinea:='', vFines := { Chr(13) + Chr(10), Chr(10) }, bLoadWindow := .F.
LOCAL vAux := {}
LOCAL cFilePrgAux := US_Upper( US_FileNameOnlyNameAndExt( cFileIn ) )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "xRefPrgFmg Scan file '" + cFileIn + "'" + CRLF )
ENDIF
QPM_MemoWrit( PROGRESS_LOG, MemoRead( PROGRESS_LOG ) + US_TimeDis( Time() ) + ' - ' + 'Scanning: '+cFileIn + CRLF )
/* limpio las ocurrencias del prg */
FOR i := 1 TO Len( vXRefPrgFmg )
IF ! ( US_Word( vXRefPrgFmg[i], 1 ) == cFilePrgAux )
AAdd( vAux, vXRefPrgFmg[i] )
ENDIF
NEXT
vXRefPrgFmg := {}
FOR i := 1 TO Len( vAux )
AAdd( vXRefPrgFmg, vAux[i] )
NEXT
/* fin limpio las ocurrencias del prg */
AAdd( vScanned, cFileIn ) // Para Control de Funcion llamadora xRefPrgFmg()
hFiIn := fopen( cFileIn )
IF FError() == 0
DO WHILE US_FReadLine( hFiIn, @cLinea, vFines ) == 0
cLinea := AllTrim( strtran( cLinea, Chr(09), ' ' ) )
IF SubStr( cLinea, 1, 1 ) == '*' .OR. ;
SubStr( cLinea, 1, 2 ) == '//' .OR. ;
SubStr( cLinea, 1, 2 ) == '##' .OR. ;
SubStr( cLinea, 1, 2 ) == '&&' .OR. ;
US_Words( cLinea ) < 3
ELSE
IF US_Words( cLinea ) > 2 .AND. ;
US_Upper( US_Word( cLinea, 1 ) ) == 'LOAD' .AND. ;
US_Upper( US_Word( cLinea, 2 ) ) == 'WINDOW'
bLoadWindow := .T.
AAdd( vXRefPrgFmg, cFilePrgAux + ' ' + US_Upper( US_Word( cLinea, 3 ) + '.FMG' ) )
IF AScan( vPanFiles, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( US_Word( cLinea, 3 ) + '.FMG' ) } ) > 0 .AND. ;
DateTimeOfC < US_FileDateTime( vPanFiles[ AScan( vPanFiles, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( US_Word( cLinea, 3 ) + '.FMG' ) } ) ] )
QPM_MemoWrit( PROGRESS_LOG, MemoRead( PROGRESS_LOG ) + US_TimeDis( Time() ) + ' - ' + US_Word( cLinea, 3 ) + '.FMG' + ' forced compilation of ' + cFileIn + CRLF )
ferase( GetObjFolder() + DEF_SLASH + US_FileNameOnlyName( cFileIn ) + '.C' )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgFmg ' + US_Word( cLinea, 3 ) + '.FMG' + " forced erasure .C of file '" + cFileIn + "' in Scan" + CRLF )
ENDIF
EXIT
ENDIF
ENDIF
ENDIF
ENDDO
fclose( hFiIn )
ELSE
RETURN bLoadWindow
ENDIF
RETURN bLoadWindow
FUNCTION xRefPrgHea( vConcatIncludeC )
LOCAL i, f, p, Fol := PUB_cProjectFolder + DEF_SLASH
LOCAL vScanned := {}, vPRGFiles := {}, vHEAFiles := {}
QPM_MemoWrit( PROGRESS_LOG, US_TimeDis( Time() ) + ' - Checking cross references between PRG files and Header files ...' + CRLF )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgHea Initialize' + CRLF + CRLF )
ENDIF
FOR f := 1 TO VentanaMain.GHeaFiles.itemcount
AAdd( vHEAFiles, ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', f, NCOLHEAFULLNAME ) ) )
NEXT f
FOR f := 1 TO Len( vHeaFiles )
FOR i := 1 TO Len( vConcatIncludeC )
IF File( vConcatIncludeC[i]+DEF_SLASH+US_FileNameOnlyNameAndExt( vHeaFiles[f] ) )
IF ! ( US_Upper( US_ShortName( vConcatIncludeC[i]+DEF_SLASH+US_FileNameOnlyNameAndExt( vHeaFiles[f] ) ) ) == US_Upper( US_ShortName(vHeaFiles[f]) ) )
MsgWarn( 'Folder ' + vConcatIncludeC[i] + ' contains the header ' + US_FileNameOnlyNameAndExt( vHeaFiles[f] ) + "." + CRLF + ;
"If the #include is coded with characters '<' and '>', the search processes of Harbour and C compilers will locate THIS header first, and the header in " + ;
US_FileNameOnlyPath( vHeaFiles[f] ) + ' will be ignored.' )
ELSE
EXIT
ENDIF
ENDIF
NEXT i
NEXT f
FOR f := 1 TO VentanaMain.GPrgFiles.itemcount
AAdd( vPRGFiles, ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', f, NCOLPRGFULLNAME ) ) )
NEXT f
/* Nota: Lo referido a vSinInclude y vXRefPrgHea puede ser eliminado, si eso ocurre, provocamos que en cada BUILD se */
/* scaneen los PRG que no tienen #include, enlenteciendo el proceso */
/* Si se usa -BUILD como parametro no tiene ninguna implicancia ya que actúa despues de la primera pasada */
FOR f := 1 TO Len( vHEAFiles )
FOR p := 1 TO Len( vPRGFiles )
IF AScan( vScanned, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( vPrgFiles[ p ] ) } ) == 0 // a nivel funcion
// IF US_FileDateTime( vHeaFiles[ f ] ) > US_FileDateTime( Fol + GetObjName() + DEF_SLASH + US_FileNameOnlyName( vPrgFiles[ p ] ) + '.c' )
// IF US_FileDateTime( vHeaFiles[ f ] ) > US_FileDateTime( Fol + GetObjName() + DEF_SLASH + US_FileNameOnlyName( vPrgFiles[ p ] ) + iif( US_Upper( US_FileNameOnlyExt( vPrgFiles[ p ] ) ) == 'CPP', '.cpp', '.c' ) )
IF US_FileDateTime( vHeaFiles[ f ] ) > US_FileDateTime( Fol + GetObjName() + DEF_SLASH + US_FileNameOnlyName( vPrgFiles[ p ] ) + iif( US_Upper( US_FileNameOnlyExt( vPrgFiles[ p ] ) ) == 'PRG', '.c', '.'+GetObjExt() ) )
IF AScan( vSinInclude, { |y| US_Upper( US_VarToStr( y ) ) == US_Upper( vPrgFiles[ p ] ) } ) == 0 // a nivel programa
// el primer AScan hace una comparacion parcial ( = ) y se le añade un blanco al final para que solo encuentre palabras completas
// el segundo AScan hace una comparacion total ( == ) del string (son dos palabras)
// El vector contiene 'myPRG myHeader.h'
IF ( AScan( vXRefPrgHea, { |x| US_Upper( US_VarToStr( x ) ) == US_Upper( US_FileNameOnlyNameAndExt( vPrgFiles[ p ] ) ) + ' ' } ) == 0 .OR. ;
AScan( vXRefPrgHea, { |x| US_Upper( US_VarToStr( x ) ) == US_Upper( US_FileNameOnlyNameAndExt( vPrgFiles[ p ] ) ) + ' ' + US_Upper( US_FileNameOnlyNameAndExt( vHeaFiles[ f ] ) ) } ) > 0 )
IF ! ( HEA_Scan( vPrgFiles[ p ], US_FileDateTime( Fol + GetObjName() + DEF_SLASH + US_FileNameOnlyName( vPrgFiles[ p ] ) + iif( US_Upper( US_FileNameOnlyExt( vPrgFiles[ p ] ) ) == 'PRG', '.c', '.'+GetObjExt() ) ), vScanned, vHeaFiles ) )
AAdd( vSinInclude, US_Upper( vPrgFiles[ p ] ) ) // Para Control de Programa desde segunda pasada hasta que se vuele a ingresar
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "xRefPrgHea Add file '" + vPrgFiles[ p ] + "' to vSinInclude" + CRLF )
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
NEXT
NEXT
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgHea Ended' + CRLF + CRLF )
ENDIF
RETURN .T.
FUNCTION HEA_Scan( cFileIn, DateTimeOfC, vScanned, vHeaFiles )
LOCAL hFiIn, cLinea:='', vFines := { Chr(13) + Chr(10), Chr(10) }, bIncludeFound := .F., cName := '', i
LOCAL maxDateHeader := '00000000000000', incChars := { { '"', '"' }, { "'", "'" }, { '<', '>' } }
LOCAL vAux := {}
LOCAL cFilePrgAux := US_Upper( US_FileNameOnlyNameAndExt( cFileIn ) )
LOCAL vPreventLoop := {}
QPM_MemoWrit( PROGRESS_LOG, MemoRead( PROGRESS_LOG ) + US_TimeDis( Time() ) + ' - ' + 'Scanning: '+cFileIn + CRLF )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + "xRefPrgHea Scan file '" + cFileIn + "'" + CRLF )
ENDIF
AAdd( vScanned, cFileIn ) // Para Control de Funcion llamadora xRefPrgHea()
hFiIn := fopen( cFileIn )
IF ferror() == 0
DO WHILE US_FReadLine( hFiIn, @cLinea, vFines ) == 0
cLinea := AllTrim( strtran( cLinea, Chr(09), ' ' ) )
IF US_Words( cLinea ) > 1 .AND. ;
US_Upper( US_Word( cLinea, 1 ) ) == '#INCLUDE'
cName := ''
FOR i := 1 TO Len( incChars )
IF SubStr( US_Word( cLinea, 2 ), 1, 1 ) == incChars[i][1]
cName := SubStr( US_WordSubStr( cLinea, 2 ), 2, RAt( incChars[i][2], US_WordSubStr( cLinea, 2 ) ) - 2 )
ENDIF
NEXT
IF AScan( vHeaFiles, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( cName ) } ) > 0 .AND. ;
File( vHeaFiles[ AScan( vHeaFiles, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( cName ) } ) ] )
bIncludeFound := .T.
IF AScan( vPreventLoop, US_Upper( cName ) ) == 0
AAdd( vPreventLoop, US_Upper( cName ) )
/* limpio las ocurrencias del prg */
FOR i := 1 TO Len( vXRefPrgHea )
IF ! ( US_Word( vXRefPrgHea[i], 1 ) == cFilePrgAux )
AAdd( vAux, vXRefPrgHea[i] )
ENDIF
NEXT
vXRefPrgHea := {}
FOR i := 1 TO Len( vAux )
AAdd( vXRefPrgHea, vAux[i] )
NEXT
/* fin limpio las ocurrencias del prg */
AAdd( vXRefPrgHea, cFilePrgAux + ' ' + US_Upper( cName ) )
maxDateHeader := ScanIncRecursive( vHeaFiles[ AScan( vHeaFiles, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( cName ) } ) ], cFilePrgAux, vPreventLoop, vHeaFiles )
ENDIF
ENDIF
IF DateTimeOfC < maxDateHeader
QPM_MemoWrit( PROGRESS_LOG, MemoRead( PROGRESS_LOG ) + US_TimeDis( Time() ) + ' - ' + cName + ' or sub includes forced compilation of ' + cFileIn + CRLF )
ferase( GetObjFolder() + DEF_SLASH + US_FileNameOnlyName( cFileIn ) + iif( US_Upper( US_FileNameOnlyExt( cFileIn ) ) == 'PRG', '.c', '.'+GetObjExt() ) )
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgHea ' + cName + " or sub includes forced erasure .C of file '" + cFileIn + "' in Scan" + CRLF )
ENDIF
EXIT
ENDIF
ENDIF
ENDDO
fclose( hFiIn )
ELSE
RETURN bIncludeFound
ENDIF
RETURN bIncludeFound
FUNCTION ScanIncRecursive( cFileIn, cFilePrgAux, vPreventLoop, vHeaFiles )
LOCAL cName, i, hFiIn, cLinea:='', vFines := { Chr(13) + Chr(10), Chr(10) }
LOCAL maxDateHeader := US_FileDateTime( cFileIn ), incChars := { { '"', '"' }, { "'", "'" }, { '<', '>' } }
LOCAL callDateHeader
hFiIn := fopen( cFileIn )
IF ferror() == 0
DO WHILE US_FReadLine( hFiIn, @cLinea, vFines ) == 0
cLinea := AllTrim( strtran( cLinea, Chr(09), ' ' ) )
IF US_Words( cLinea ) > 1 .AND. ;
US_Upper( US_Word( cLinea, 1 ) ) == '#INCLUDE'
cName := ''
FOR i := 1 TO Len( incChars )
IF SubStr( US_Word( cLinea, 2 ), 1, 1 ) == incChars[i][1]
cName := SubStr( US_WordSubStr( cLinea, 2 ), 2, RAt( incChars[i][2], US_WordSubStr( cLinea, 2 ) ) - 2 )
ENDIF
NEXT
IF AScan( vHeaFiles, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( cName ) } ) > 0 .AND. ;
File( vHeaFiles[ AScan( vHeaFiles, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( cName ) } ) ] )
IF AScan( vPreventLoop, US_Upper( cName ) ) == 0
AAdd( vPreventLoop, US_Upper( cName ) )
AAdd( vXRefPrgHea, cFilePrgAux + ' ' + US_Upper( cName ) )
IF maxDateHeader < ( callDateHeader := ScanIncRecursive( vHeaFiles[ AScan( vHeaFiles, { |x| US_Upper( US_FileNameOnlyNameAndExt( x ) ) == US_Upper( cName ) } ) ], cFilePrgAux, vPreventLoop, vHeaFiles ) )
maxDateHeader := callDateHeader
ENDIF
ENDIF
ENDIF
ENDIF
ENDDO
fclose( hFiIn )
ELSE
RETURN maxDateHeader
ENDIF
RETURN maxDateHeader
FUNCTION CheckMakeForm( cForm )
LOCAL hFiIn, cLinea:='', vFines := { Chr(13) + Chr(10), Chr(10) }, reto := 'UNKNOWN'
hFiIn := fopen( cForm )
IF ferror() == 0
DO WHILE US_FReadLine( hFiIn, @cLinea, vFines ) == 0
cLinea := AllTrim( strtran( cLinea, Chr(09), ' ' ) )
DO CASE
CASE US_Upper( US_Word( cLinea, 1 ) ) == '*HMGS-MINIGUI-IDE'
reto := 'HMGSIDE (Open Source by Walter Formigoni)'
EXIT
CASE At( '* HARBOUR MINIGUI IDE HMI+', US_Upper( cLinea ) ) > 0
reto := 'HMI (by Ciro Vargas Clemow)'
EXIT
CASE At( "* GENERATED BY OOHG IDE PLUS", US_Upper( cLinea ) ) > 0
reto := 'OOHG IDE+ (by OOHG development team)'
EXIT
CASE At( '* OOHG IDE PLUS', US_Upper( cLinea ) ) > 0
reto := 'OOHG IDE+ (by OOHG development team)'
EXIT
CASE At( '* OOHG IDE', US_Upper( cLinea ) ) > 0
reto := 'HMI (by Ciro Vargas Clemow)'
EXIT
CASE At( '* HARBOUR MINIGUI IDE TWO-WAY', US_Upper( cLinea ) ) > 0
reto := 'IDE (by Roberto Lopez)'
EXIT
ENDCASE
ENDDO
fclose( hFiIn )
ENDIF
RETURN reto
FUNCTION QPM_SetColor()
IF PUB_bLite
DO CASE
CASE Prj_Radio_OutputType == DEF_RG_EXE
SetProperty( 'VentanaLite', 'RichEditSysout', 'backcolor', DEF_COLOREXE )
CASE Prj_Radio_OutputType == DEF_RG_LIB
SetProperty( 'VentanaLite', 'RichEditSysout', 'backcolor', DEF_COLORLIB )
CASE Prj_Radio_OutputType == DEF_RG_IMPORT
SetProperty( 'VentanaLite', 'RichEditSysout', 'backcolor', DEF_COLORDLL )
ENDCASE
ELSE
DO CASE
CASE Prj_Radio_OutputType == DEF_RG_EXE
SetProperty( 'VentanaMain', 'RichEditSysout', 'backcolor', DEF_COLOREXE )
CASE Prj_Radio_OutputType == DEF_RG_LIB
SetProperty( 'VentanaMain', 'RichEditSysout', 'backcolor', DEF_COLORLIB )
CASE Prj_Radio_OutputType == DEF_RG_IMPORT
SetProperty( 'VentanaMain', 'RichEditSysout', 'backcolor', DEF_COLORDLL )
ENDCASE
ENDIF
RETURN .T.
FUNCTION SortPRG( cVentana, cGrid, nColumna )
LOCAL i, vAux := {}, cAux := GetProperty( cVentana, cGrid, 'item', 1 )
LOCAL nActual := GetProperty( cVentana, cGrid, 'cell', GetProperty( cVentana, cGrid, 'value' ), nColumna )
bPrgSorting := .T.
IF VentanaMain.GPrgFiles.ItemCount > 1
DoMethod( cVentana, cGrid, 'DisableUpdate' )
FOR i := 2 TO GetProperty( cVentana, cGrid, 'itemcount' )
AAdd( vAux, GetProperty( cVentana, cGrid, 'item', i ) )
NEXT
DoMethod( cVentana, cGrid, 'deleteallitems' )
DoMethod( cVentana, cGrid, 'additem', cAux )
IF bSortPrgAsc
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) < US_Upper(y[nColumna]) })
ELSE
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) > US_Upper(y[nColumna]) })
ENDIF
bSortPrgAsc := !bSortPrgAsc
FOR i := 1 TO Len( vAux )
DoMethod( cVentana, cGrid, 'additem', vAux[ i ] )
NEXT
SetProperty( cVentana, cGrid, 'value', AScan( vAux, {|x| x[ nColumna ] == nActual } ) + 1 )
DoMethod( cVentana, cGrid, 'setfocus' )
DoMethod( cVentana, cGrid, 'EnableUpdate' )
ENDIF
bPrgSorting := .F.
RETURN .T.
FUNCTION SortHEA( cVentana, cGrid, nColumna )
LOCAL i, vAux := {}
LOCAL nActual := GetProperty( cVentana, cGrid, 'cell', GetProperty( cVentana, cGrid, 'value' ), nColumna )
bHeaSorting := .T.
DoMethod( cVentana, cGrid, 'DisableUpdate' )
FOR i := 1 TO GetProperty( cVentana, cGrid, 'itemcount' )
AAdd( vAux, GetProperty( cVentana, cGrid, 'item', i ) )
NEXT
DoMethod( cVentana, cGrid, 'deleteallitems' )
IF bSortHeaAsc
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) < US_Upper(y[nColumna]) })
ELSE
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) > US_Upper(y[nColumna]) })
ENDIF
bSortHeaAsc := !bSortHeaAsc
FOR i := 1 TO Len( vAux )
DoMethod( cVentana, cGrid, 'additem', vAux[ i ] )
NEXT
SetProperty( cVentana, cGrid, 'value', AScan( vAux, {|x| x[ nColumna ] == nActual } ) )
DoMethod( cVentana, cGrid, 'setfocus' )
DoMethod( cVentana, cGrid, 'EnableUpdate' )
bHeaSorting := .F.
RETURN .T.
FUNCTION SortPAN( cVentana, cGrid, nColumna )
LOCAL i, vAux := {}
LOCAL nActual := GetProperty( cVentana, cGrid, 'cell', GetProperty( cVentana, cGrid, 'value' ), nColumna )
bPanSorting := .T.
DoMethod( cVentana, cGrid, 'DisableUpdate' )
FOR i := 1 TO GetProperty( cVentana, cGrid, 'itemcount' )
AAdd( vAux, GetProperty( cVentana, cGrid, 'item', i ) )
NEXT
DoMethod( cVentana, cGrid, 'deleteallitems' )
IF bSortPanAsc
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) < US_Upper(y[nColumna]) })
ELSE
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) > US_Upper(y[nColumna]) })
ENDIF
bSortPanAsc := !bSortPanAsc
FOR i := 1 TO Len( vAux )
DoMethod( cVentana, cGrid, 'additem', vAux[ i ] )
NEXT
SetProperty( cVentana, cGrid, 'value', AScan( vAux, {|x| x[ nColumna ] == nActual } ) )
DoMethod( cVentana, cGrid, 'setfocus' )
DoMethod( cVentana, cGrid, 'EnableUpdate' )
bPanSorting := .F.
RETURN .T.
FUNCTION SortDBF( cVentana, cGrid, nColumna )
LOCAL i, vAux := {}
LOCAL nActual := GetProperty( cVentana, cGrid, 'cell', GetProperty( cVentana, cGrid, 'value' ), nColumna )
bDbfSorting := .T.
DoMethod( cVentana, cGrid, 'DisableUpdate' )
FOR i := 1 TO GetProperty( cVentana, cGrid, 'itemcount' )
AAdd( vAux, GetProperty( cVentana, cGrid, 'item', i ) )
NEXT
DoMethod( cVentana, cGrid, 'deleteallitems' )
IF bSortDbfAsc
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) < US_Upper(y[nColumna]) })
ELSE
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) > US_Upper(y[nColumna]) })
ENDIF
bSortDbfAsc := !bSortDbfAsc
FOR i := 1 TO Len( vAux )
DoMethod( cVentana, cGrid, 'additem', vAux[ i ] )
NEXT
SetProperty( cVentana, cGrid, 'value', AScan( vAux, {|x| x[ nColumna ] == nActual } ) )
DoMethod( cVentana, cGrid, 'setfocus' )
DoMethod( cVentana, cGrid, 'EnableUpdate' )
bDbfSorting := .F.
RETURN .T.
FUNCTION SortInc( cVentana, cGrid, nColumna )
LOCAL i, vAux := {}
LOCAL nActual := GetProperty( cVentana, cGrid, 'cell', GetProperty( cVentana, cGrid, 'value' ), nColumna )
bIncSorting := .T.
DoMethod( cVentana, cGrid, 'DisableUpdate' )
FOR i := 1 TO GetProperty( cVentana, cGrid, 'itemcount' )
AAdd( vAux, GetProperty( cVentana, cGrid, 'item', i ) )
NEXT
DoMethod( cVentana, cGrid, 'deleteallitems' )
IF nColumna == NCOLINCFULLNAME
IF bSortIncAsc
ASort( vAux,,, { |x, y| US_Upper(US_WordSubStr(x[nColumna],3)) < US_Upper(US_WordSubStr(y[nColumna],3)) })
ELSE
ASort( vAux,,, { |x, y| US_Upper(US_WordSubStr(x[nColumna],3)) > US_Upper(US_WordSubStr(y[nColumna],3)) })
ENDIF
ELSE
IF bSortIncAsc
ASort( vAux,,, { |x, y| US_Upper( x[nColumna] ) < US_Upper( y[nColumna] ) } )
ELSE
ASort( vAux,,, { |x, y| US_Upper( x[nColumna] ) > US_Upper( y[nColumna] ) } )
ENDIF
ENDIF
bSortIncAsc := !bSortIncAsc
FOR i := 1 TO Len( vAux )
DoMethod( cVentana, cGrid, 'additem', vAux[ i ] )
NEXT
IF nColumna == NCOLINCFULLNAME
SetProperty( cVentana, cGrid, 'value', AScan( vAux, {|x| US_WordSubStr( x[ nColumna ], 3 ) == US_WordSubStr( nActual, 3 ) } ) )
ELSE
SetProperty( cVentana, cGrid, 'value', AScan( vAux, {|x| x[ nColumna ] == nActual } ) )
ENDIF
DoMethod( cVentana, cGrid, 'setfocus' )
DoMethod( cVentana, cGrid, 'EnableUpdate' )
bIncSorting := .F.
RETURN .T.
FUNCTION SortExc( cVentana, cGrid, nColumna )
LOCAL i, vAux := {}
LOCAL nActual := GetProperty( cVentana, cGrid, 'cell', GetProperty( cVentana, cGrid, 'value' ), nColumna )
bExcSorting := .T.
DoMethod( cVentana, cGrid, 'DisableUpdate' )
FOR i := 1 TO GetProperty( cVentana, cGrid, 'itemcount' )
AAdd( vAux, GetProperty( cVentana, cGrid, 'item', i ) )
NEXT
DoMethod( cVentana, cGrid, 'deleteallitems' )
IF bSortExcAsc
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) < US_Upper(y[nColumna]) })
ELSE
ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) > US_Upper(y[nColumna]) })
ENDIF
bSortExcAsc := !bSortExcAsc
FOR i := 1 TO Len( vAux )
DoMethod( cVentana, cGrid, 'additem', vAux[ i ] )
NEXT
SetProperty( cVentana, cGrid, 'value', AScan( vAux, {|x| x[ nColumna ] == nActual } ) )
DoMethod( cVentana, cGrid, 'setfocus' )
DoMethod( cVentana, cGrid, 'EnableUpdate' )
bExcSorting := .F.
RETURN .T.
//FUNCTION SortHlp( cVentana, cGrid, nColumna )
// LOCAL i, vAux := {}, cAux := GetProperty( cVentana, cGrid, 'item', 1 )
// LOCAL nActual := GetProperty( cVentana, cGrid, 'cell', GetProperty( cVentana, cGrid, 'value' ), nColumna )
// bHlpSorting := .T.
// IF VentanaMain.GHlpFiles.ItemCount > 1
// DoMethod( cVentana, cGrid, 'DisableUpdate' )
// FOR i := 2 TO GetProperty( cVentana, cGrid, 'itemcount' )
// AAdd( vAux, GetProperty( cVentana, cGrid, 'item', i ) )
// NEXT
// DoMethod( cVentana, cGrid, 'deleteallitems' )
// DoMethod( cVentana, cGrid, 'additem', cAux )
// IF bSortHlpAsc
// ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) < US_Upper(y[nColumna]) })
// ELSE
// ASort( vAux,,, { |x, y| US_Upper(x[nColumna]) > US_Upper(y[nColumna]) })
// ENDIF
// bSortHlpAsc := !bSortHlpAsc
// FOR i := 1 TO Len( vAux )
// DoMethod( cVentana, cGrid, 'additem', vAux[ i ] )
// NEXT
// SetProperty( cVentana, cGrid, 'value', AScan( vAux, {|x| x[ nColumna ] == nActual } ) + 1 )
// DoMethod( cVentana, cGrid, 'setfocus' )
// DoMethod( cVentana, cGrid, 'EnableUpdate' )
// ENDIF
// bHlpSorting := .F.
//RETURN .T.
FUNCTION UpPrg()
LOCAL i := GetProperty( 'VentanaMain', 'GPrgFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GPrgFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GPrgFiles', 'item', i - 1 )
IF i == 2
MsgInfo( 'Use the SetTop button to move this item to Top of Project' )
ENDIF
IF i > 2
bPrgMoving := .T.
SetProperty( 'VentanaMain', 'GPrgFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GPrgFiles', 'item', i - 1, cAux )
SetProperty( 'VentanaMain', 'GPrgFiles', 'value', i - 1 )
DoMethod( 'VentanaMain', 'GPrgFiles', 'setfocus' )
bPrgMoving := .F.
ENDIF
RETURN .T.
FUNCTION DownPrg()
LOCAL i := GetProperty( 'VentanaMain', 'GPrgFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GPrgFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GPrgFiles', 'item', i + 1 )
IF i == 1
MsgInfo( DBLQT + "Top File" + DBLQT + " can't be moved. Use the SetTop button to make another source the new " + DBLQT + "Top File" + DBLQT + "." )
ENDIF
IF i < GetProperty( 'VentanaMain', 'GPrgFiles', 'itemcount' ) .AND. i > 1
bPrgMoving := .T.
SetProperty( 'VentanaMain', 'GPrgFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GPrgFiles', 'item', i + 1, cAux )
SetProperty( 'VentanaMain', 'GPrgFiles', 'value', i + 1 )
DoMethod( 'VentanaMain', 'GPrgFiles', 'setfocus' )
bPrgMoving := .F.
ENDIF
RETURN .T.
FUNCTION UpPan()
LOCAL i := GetProperty( 'VentanaMain', 'GPanFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GPanFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GPanFiles', 'item', i - 1 )
IF i > 1
bPanMoving := .T.
SetProperty( 'VentanaMain', 'GPanFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GPanFiles', 'item', i - 1, cAux )
SetProperty( 'VentanaMain', 'GPanFiles', 'value', i - 1 )
DoMethod( 'VentanaMain', 'GPanFiles', 'setfocus' )
bPanMoving := .F.
ENDIF
RETURN .T.
FUNCTION DownPan()
LOCAL i := GetProperty( 'VentanaMain', 'GPanFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GPanFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GPanFiles', 'item', i + 1 )
IF i > 0 .AND. i < GetProperty( 'VentanaMain', 'GPanFiles', 'itemcount' )
bPanMoving := .T.
SetProperty( 'VentanaMain', 'GPanFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GPanFiles', 'item', i + 1, cAux )
SetProperty( 'VentanaMain', 'GPanFiles', 'value', i + 1 )
DoMethod( 'VentanaMain', 'GPanFiles', 'setfocus' )
bPanMoving := .F.
ENDIF
RETURN .T.
FUNCTION UpDbf()
LOCAL i := GetProperty( 'VentanaMain', 'GDbfFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GDbfFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GDbfFiles', 'item', i - 1 )
IF i > 1
bDbfMoving := .T.
SetProperty( 'VentanaMain', 'GDbfFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GDbfFiles', 'item', i - 1, cAux )
SetProperty( 'VentanaMain', 'GDbfFiles', 'value', i - 1 )
DoMethod( 'VentanaMain', 'GDbfFiles', 'setfocus' )
bDbfMoving := .F.
ENDIF
RETURN .T.
FUNCTION DownDbf()
LOCAL i := GetProperty( 'VentanaMain', 'GDbfFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GDbfFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GDbfFiles', 'item', i + 1 )
IF i > 0 .AND. i < GetProperty( 'VentanaMain', 'GDbfFiles', 'itemcount' )
bDbfMoving := .T.
SetProperty( 'VentanaMain', 'GDbfFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GDbfFiles', 'item', i + 1, cAux )
SetProperty( 'VentanaMain', 'GDbfFiles', 'value', i + 1 )
DoMethod( 'VentanaMain', 'GDbfFiles', 'setfocus' )
bDbfMoving := .F.
ENDIF
RETURN .T.
FUNCTION UpHea()
LOCAL i := GetProperty( 'VentanaMain', 'GHeaFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GHeaFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GHeaFiles', 'item', i - 1 )
IF i > 1
bHeaMoving := .T.
SetProperty( 'VentanaMain', 'GHeaFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GHeaFiles', 'item', i - 1, cAux )
SetProperty( 'VentanaMain', 'GHeaFiles', 'value', i - 1 )
DoMethod( 'VentanaMain', 'GHeaFiles', 'setfocus' )
bHeaMoving := .F.
ENDIF
RETURN .T.
FUNCTION DownHea()
LOCAL i := GetProperty( 'VentanaMain', 'GHeaFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GHeaFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GHeaFiles', 'item', i + 1 )
IF i > 0 .AND. i < GetProperty( 'VentanaMain', 'GHeaFiles', 'itemcount' )
bHeaMoving := .T.
SetProperty( 'VentanaMain', 'GHeaFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GHeaFiles', 'item', i + 1, cAux )
SetProperty( 'VentanaMain', 'GHeaFiles', 'value', i + 1 )
DoMethod( 'VentanaMain', 'GHeaFiles', 'setfocus' )
bHeaMoving := .F.
ENDIF
RETURN .T.
FUNCTION UpLibInclude()
LOCAL i := GetProperty( 'VentanaMain', 'GIncFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GIncFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GIncFiles', 'item', i - 1 )
IF i > 1
bIncMoving := .T.
SetProperty( 'VentanaMain', 'GIncFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GIncFiles', 'item', i - 1, cAux )
SetProperty( 'VentanaMain', 'GIncFiles', 'value', i - 1 )
DoMethod( 'VentanaMain', 'GIncFiles', 'setfocus' )
bIncMoving := .F.
ENDIF
RETURN .T.
FUNCTION DownLibInclude()
LOCAL i := GetProperty( 'VentanaMain', 'GIncFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GIncFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GIncFiles', 'item', i + 1 )
IF i > 0 .AND. i < GetProperty( 'VentanaMain', 'GIncFiles', 'itemcount' )
bIncMoving := .T.
SetProperty( 'VentanaMain', 'GIncFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GIncFiles', 'item', i + 1, cAux )
SetProperty( 'VentanaMain', 'GIncFiles', 'value', i + 1 )
DoMethod( 'VentanaMain', 'GIncFiles', 'setfocus' )
bIncMoving := .F.
ENDIF
RETURN .T.
FUNCTION UpLibExclude()
LOCAL i := GetProperty( 'VentanaMain', 'GExcFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GExcFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GExcFiles', 'item', i - 1 )
IF i > 1
bExcMoving := .T.
SetProperty( 'VentanaMain', 'GExcFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GExcFiles', 'item', i - 1, cAux )
SetProperty( 'VentanaMain', 'GExcFiles', 'value', i - 1 )
DoMethod( 'VentanaMain', 'GExcFiles', 'setfocus' )
bExcMoving := .F.
ENDIF
RETURN .T.
FUNCTION DownLibExclude()
LOCAL i := GetProperty( 'VentanaMain', 'GExcFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GExcFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GExcFiles', 'item', i + 1 )
IF i > 0 .AND. i < GetProperty( 'VentanaMain', 'GExcFiles', 'itemcount' )
bExcMoving := .T.
SetProperty( 'VentanaMain', 'GExcFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GExcFiles', 'item', i + 1, cAux )
SetProperty( 'VentanaMain', 'GExcFiles', 'value', i + 1 )
DoMethod( 'VentanaMain', 'GExcFiles', 'setfocus' )
bExcMoving := .F.
ENDIF
RETURN .T.
#ifdef QPM_SHG
FUNCTION UpHlp()
LOCAL i := GetProperty( 'VentanaMain', 'GHlpFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GHlpFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GHlpFiles', 'item', i - 1 )
IF i == 3
MsgInfo( "Global foot and Welcome page can't be moved, they're system topics!" )
ENDIF
IF i > 3
bHlpMoving := .T.
SHG_SetField( 'SHG_ORDER', i - 1, 0 )
SHG_SetField( 'SHG_ORDER', i, i - 1 )
SHG_SetField( 'SHG_ORDER', 0, i )
SetProperty( 'VentanaMain', 'GHlpFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GHlpFiles', 'item', i - 1, cAux )
SetProperty( 'VentanaMain', 'GHlpFiles', 'value', i - 1 )
DoMethod( 'VentanaMain', 'GHlpFiles', 'setfocus' )
bHlpMoving := .F.
ENDIF
RETURN .T.
#endif
#ifdef QPM_SHG
FUNCTION DownHlp()
LOCAL i := GetProperty( 'VentanaMain', 'GHlpFiles', 'value' )
LOCAL cAux := GetProperty( 'VentanaMain', 'GHlpFiles', 'item', i )
LOCAL cAux2 := GetProperty( 'VentanaMain', 'GHlpFiles', 'item', i + 1 )
IF i == 1
MsgInfo( "Global foot can't be moved, it's a system topic!" )
ENDIF
IF i == 2
MsgInfo( "Welcome page can't be moved, it's a system topic!" )
ENDIF
IF i < GetProperty( 'VentanaMain', 'GHlpFiles', 'itemcount' ) .AND. i > 2
bHlpMoving := .T.
SHG_SetField( 'SHG_ORDER', i + 1, 0 )
SHG_SetField( 'SHG_ORDER', i, i + 1 )
SHG_SetField( 'SHG_ORDER', 0, i )
SetProperty( 'VentanaMain', 'GHlpFiles', 'item', i, cAux2 )
SetProperty( 'VentanaMain', 'GHlpFiles', 'item', i + 1, cAux )
SetProperty( 'VentanaMain', 'GHlpFiles', 'value', i + 1 )
DoMethod( 'VentanaMain', 'GHlpFiles', 'setfocus' )
bHlpMoving := .F.
ENDIF
RETURN .T.
#endif
FUNCTION ToolTipPrgList()
IF GetProperty( 'VentanaMain', 'GPrgFiles', 'value' ) == 0
SetProperty( 'VentanaMain', 'GPrgFiles', 'tooltip', '' )
ELSE
SetProperty( 'VentanaMain', 'GPrgFiles', 'tooltip', GetProperty( 'VentanaMain', 'GPrgFiles', 'item', GetProperty( 'VentanaMain', 'GPrgFiles', 'value' ) ) )
ENDIF
RETURN .T.
FUNCTION ToolTipHEAList()
IF GetProperty( 'VentanaMain', 'GHeaFiles', 'value' ) == 0
SetProperty( 'VentanaMain', 'GHeaFiles', 'tooltip', '' )
ELSE
SetProperty( 'VentanaMain', 'GHeaFiles', 'tooltip', GetProperty( 'VentanaMain', 'GHeaFiles', 'item', GetProperty( 'VentanaMain', 'GHeaFiles', 'value' ) ) )
ENDIF
RETURN .T.
FUNCTION ToolTipPANList()
IF GetProperty( 'VentanaMain', 'GPanFiles', 'value' ) == 0
SetProperty( 'VentanaMain', 'GPanFiles', 'tooltip', '' )
ELSE
SetProperty( 'VentanaMain', 'GPanFiles', 'tooltip', GetProperty( 'VentanaMain', 'GPanFiles', 'item', GetProperty( 'VentanaMain', 'GPanFiles', 'value' ) ) )
ENDIF
RETURN .T.
FUNCTION ToolTipDbfList()
IF GetProperty( 'VentanaMain', 'GDbfFiles', 'value' ) == 0
SetProperty( 'VentanaMain', 'GDbfFiles', 'tooltip', '' )
ELSE
SetProperty( 'VentanaMain', 'GDbfFiles', 'tooltip', GetProperty( 'VentanaMain', 'GDbfFiles', 'item', GetProperty( 'VentanaMain', 'GDbfFiles', 'value' ) ) )
ENDIF
RETURN .T.
FUNCTION ToolTipHlpList()
IF GetProperty( 'VentanaMain', 'GHlpFiles', 'value' ) == 0
SetProperty( 'VentanaMain', 'GHlpFiles', 'tooltip', '' )
ELSE
SetProperty( 'VentanaMain', 'GHlpFiles', 'tooltip', GetProperty( 'VentanaMain', 'GHlpFiles', 'item', GetProperty( 'VentanaMain', 'GHlpFiles', 'value' ) ) )
ENDIF
RETURN .T.
FUNCTION EraseOBJ()
LOCAL TopName := US_FileNameOnlyName( GetOutputModuleName() )
IF ! Empty( PUB_cProjectFolder )
US_DirRemove( GetObjFolder() )
ferase( PUB_cProjectFolder + DEF_SLASH + TopName + '.' + OutputExt() )
ferase( PUB_cProjectFolder + DEF_SLASH + TopName + '.TDS' )
ENDIF
IF PUB_bLite
VentanaLite.LFull.FontColor := DEF_COLORRED
VentanaLite.LFull.Value := 'Force non-incremental'
ELSE
VentanaMain.LFull.FontColor := DEF_COLORRED
VentanaMain.LFull.Value := 'Force non-incremental'
ENDIF
QPM_SetResumen()
vSinLoadWindow := {}
vSinInclude := {}
vXRefPrgHea := {}
vXRefPrgFmg := {}
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgFmg CleanUp of vSinLoadWindow by EraseObj' + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgHea CleanUp of vSinInclude by EraseObj' + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgHea CleanUp of vXRefPrgHea by EraseObj' + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgFmg CleanUp of vXRefPrgFmg by EraseObj' + CRLF )
ENDIF
RichEditDisplay('OUT')
RETURN .T.
FUNCTION EraseALL()
LOCAL i, dire
IF bWaitForBuild
DO WHILE BUILD_IN_PROGRESS
DO EVENTS
ENDDO
ENDIF
IF ! Empty( PUB_cProjectFolder )
FOR i := 1 TO Len( vSuffix )
dire := PUB_cProjectFolder + DEF_SLASH + GetObjPrefix() + vSuffix[i][1]
US_DirRemove( dire )
dire := PUB_cProjectFolder + DEF_SLASH + GetObjPrefix() + Left( vSuffix[i][1], Len( vSuffix[i][1] ) - 3 )
US_DirRemove( dire )
NEXT i
IF PUB_bLite
VentanaLite.LFull.FontColor := DEF_COLORRED
VentanaLite.LFull.Value := 'Force non-incremental'
ELSE
VentanaMain.LFull.FontColor := DEF_COLORRED
VentanaMain.LFull.Value := 'Force non-incremental'
ENDIF
QPM_SetResumen()
vSinLoadWindow := {}
vSinInclude := {}
vXRefPrgHea := {}
vXRefPrgFmg := {}
IF bLogActivity
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgFmg CleanUp of vSinLoadWindow by EraseALL' + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgHea CleanUp of vSinInclude by EraseALL' + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgHea CleanUp of vXRefPrgHea by EraseALL' + CRLF )
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log', MemoRead( PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ) + 'xRefPrgFmg CleanUp of vXRefPrgFmg by EraseALL' + CRLF )
ENDIF
ENDIF
RETURN .T.
FUNCTION BuildStop()
QPM_MemoWrit( PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'MSG.SYSIN', 'STOP ' )
IF PUB_bLite
VentanaLite.bStop.Enabled := .F.
ELSE
VentanaMain.bStop.Enabled := .F.
ENDIF
VentanaMain.TabFiles.Value := nPageSysout
TabChange( 'FILES' )
DO WHILE File( PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'MSG.SYSIN' )
US_Wait( 2 )
DO EVENTS
ENDDO
RETURN .T.
FUNCTION TabAutoSync( tab )
LOCAL bSync := GetProperty( 'VentanaMain', 'Check_AutoSync'+tab, 'Value' )
bAutoSyncTab := bSync
IF !PUB_RunTabAutoSync
RETURN .T.
ELSE
PUB_RunTabAutoSync := .F.
ENDIF
IF ! ( tab == 'PRG' )
VentanaMain.Check_AutoSyncPrg.Value := bSync
ENDIF
IF ! ( tab == 'HEA' )
VentanaMain.Check_AutoSyncHea.Value := bSync
ENDIF
IF ! ( tab == 'PAN' )
VentanaMain.Check_AutoSyncPan.Value := bSync
ENDIF
IF ! ( tab == 'DBF' )
VentanaMain.Check_AutoSyncDbf.Value := bSync
ENDIF
IF ! ( tab == 'LIB' )
VentanaMain.Check_AutoSyncLib.Value := bSync
ENDIF
IF ! ( tab == 'HLP' )
VentanaMain.Check_AutoSyncHlp.Value := bSync
ENDIF
// IF ! ( tab == 'SYSOUT' )
// VentanaMain.Check_AutoSyncSysout.Value := bSync
// ENDIF
// IF ! ( tab == 'OUT' )
// VentanaMain.Check_AutoSyncOut.Value := bSync
// ENDIF
PUB_RunTabAutoSync := .T.
IF bSync
TabSync()
ENDIF
RETURN .T.
FUNCTION TabSync()
VentanaMain.TabFiles.Value := VentanaMain.TabGrids.Value
TabChange()
RETURN .T.
FUNCTION TabChange( cTabGroups )
LOCAL w_antes
IF !PUB_RunTabChange
PUB_RunTabChange := .T.
RETURN .F.
ENDIF
IF Prj_Radio_OutputType == DEF_RG_IMPORT
IF cTabGroups == 'GRIDS' .AND. ;
GetProperty( 'VentanaMain', 'TabGrids', 'value' ) > 1 .AND. ;
GetProperty( 'VentanaMain', 'TabGrids', 'value' ) < 6
PUB_RunTabChange := .F.
SetProperty( 'VentanaMain', 'TabGrids', 'value', 1 )
ENDIF
IF cTabGroups == 'FILES' .AND. ;
GetProperty( 'VentanaMain', 'TabFiles', 'value' ) > 1 .AND. ;
GetProperty( 'VentanaMain', 'TabFiles', 'value' ) < 6
PUB_RunTabChange := .F.
SetProperty( 'VentanaMain', 'TabFiles', 'value', 1 )
ENDIF
ENDIF
IF bAutoSyncTab
IF cTabGroups == 'FILES'
PUB_RunTabChange := .F.
SetProperty ( 'VentanaMain', 'TabGrids', 'Value', VentanaMain.TabFiles.Value )
ELSE
IF VentanaMain.TabFiles.Value < nPageSysout
PUB_RunTabChange := .F.
SetProperty( 'VentanaMain', 'TabFiles', 'Value', VentanaMain.TabGrids.Value )
ENDIF
ENDIF
ENDIF
IF VentanaMain.TabFiles.Value <> VentanaMain.TabGrids.Value
VentanaMain.bSyncPrg.Show()
VentanaMain.bSyncHea.Show()
VentanaMain.bSyncPan.Show()
VentanaMain.bSyncDbf.Show()
VentanaMain.bSyncLib.Show()
#ifdef QPM_SHG
VentanaMain.bSyncHlp.Show()
#endif
ELSE
VentanaMain.bSyncPrg.Hide()
VentanaMain.bSyncHea.Hide()
VentanaMain.bSyncPan.Hide()
VentanaMain.bSyncDbf.Hide()
VentanaMain.bSyncLib.Hide()
#ifdef QPM_SHG
VentanaMain.bSyncHlp.Hide()
#endif
ENDIF
IF VentanaMain.TabFiles.Value <> VentanaMain.TabGrids.Value .AND. ;
VentanaMain.TabFiles.Value < nPageSysOut
VentanaMain.IBorde1PRG.Show()
VentanaMain.IBorde1HEA.Show()
VentanaMain.IBorde1PAN.Show()
VentanaMain.IBorde1DBF.Show()
VentanaMain.IBorde1LIB.Show()
#ifdef QPM_SHG
VentanaMain.IBorde1HLP.Show()
#endif
ELSE
VentanaMain.IBorde1PRG.Hide()
VentanaMain.IBorde1HEA.Hide()
VentanaMain.IBorde1PAN.Hide()
VentanaMain.IBorde1DBF.Hide()
VentanaMain.IBorde1LIB.Hide()
#ifdef QPM_SHG
VentanaMain.IBorde1HLP.Hide()
#endif
ENDIF
IF VentanaMain.TabFiles.Value == nPageHlp
VentanaMain.ItC_Cut.Enabled := .T.
VentanaMain.ItC_Paste.Enabled := .T.
VentanaMain.ItC_CutM.Enabled := .T.
VentanaMain.ItC_PasteM.Enabled := .T.
VentanaMain.ItC_Move.Enabled := .T.
ELSE
VentanaMain.ItC_Cut.Enabled := .F.
VentanaMain.ItC_Paste.Enabled := .F.
VentanaMain.ItC_CutM.Enabled := .F.
VentanaMain.ItC_PasteM.Enabled := .F.
VentanaMain.ItC_Move.Enabled := .F.
ENDIF
IF !PUB_bIsProcessing
IF VentanaMain.TabGrids.Value == nPageHlp
SetProperty( 'VentanaMain', 'save', 'enabled', .F. )
SetProperty( 'VentanaMain', 'build', 'enabled', .F. )
SetProperty( 'VentanaMain', 'EraseALL', 'enabled', .F. )
SetProperty( 'VentanaMain', 'EraseOBJ', 'enabled', .F. )
SetProperty( 'VentanaMain', 'BVerChange', 'enabled', .F. )
#ifdef QPM_SYNCRECOVERY
SetProperty( 'VentanaMain', 'BTakeSyncRecovery', 'enabled', .F. )
#endif
ELSE
SetProperty( 'VentanaMain', 'save', 'enabled', .T. )
SetProperty( 'VentanaMain', 'build', 'enabled', .T. )
SetProperty( 'VentanaMain', 'EraseALL', 'enabled', .T. )
SetProperty( 'VentanaMain', 'EraseOBJ', 'enabled', .T. )
SetProperty( 'VentanaMain', 'BVerChange', 'enabled', .T. )
#ifdef QPM_SYNCRECOVERY
IF VentanaMain.TabGrids.Value <= nPagePan
SetProperty( 'VentanaMain', 'BTakeSyncRecovery', 'enabled', .T. )
ELSE
SetProperty( 'VentanaMain', 'BTakeSyncRecovery', 'enabled', .F. )
ENDIF
#endif
ENDIF
ENDIF
#ifdef QPM_SHG
OcultaHlpKeys()
#endif
// este parche es hasta que se resuelva el problema de la barra de desplazamiento en el browse dentro de un page of tab
IF VentanaMain.TabFiles.Value == nPageDbf
IF _IsControlDefined( 'DbfBrowse', 'VentanaMain' )
SetProperty( 'VentanaMain', 'DbfBrowse', 'visible', .T. )
ENDIF
ELSE
IF _IsControlDefined( 'DbfBrowse', 'VentanaMain' )
SetProperty( 'VentanaMain', 'DbfBrowse', 'visible', .F. )
ENDIF
ENDIF
// Fin parche
DO CASE
CASE VentanaMain.TabGrids.Value == nPagePRG
GBL_TabGridNameFocus := 'PRG'
CASE VentanaMain.TabGrids.Value == nPageHEA
GBL_TabGridNameFocus := 'HEA'
CASE VentanaMain.TabGrids.Value == nPagePAN
GBL_TabGridNameFocus := 'PAN'
CASE VentanaMain.TabGrids.Value == nPageDBF
GBL_TabGridNameFocus := 'DBF'
CASE VentanaMain.TabGrids.Value == nPageLIB
GBL_TabGridNameFocus := 'LIB'
CASE VentanaMain.TabGrids.Value == nPageHLP
GBL_TabGridNameFocus := 'HLP'
IF VentanaMain.GHlpFiles.ItemCount > 0
VentanaMain.GHlpFiles.SetFocus
w_antes := GetProperty( 'VentanaMain', 'GHlpFiles', 'Value' )
SetProperty( 'VentanaMain', 'GHlpFiles', 'Value', 0 )
SetProperty( 'VentanaMain', 'GHlpFiles', 'Value', w_antes )
ENDIF
OTHERWISE
GBL_TabGridNameFocus := 'OTHER'
ENDCASE
RETURN .T.
FUNCTION TotCaption( cType, nValor )
LOCAL nPage := 0, cAux := '', nAux := 0
DO CASE
CASE cType == 'PRG'
nPage := nPagePrg
CASE cType == 'HEA'
nPage := nPageHea
CASE cType == 'PAN'
nPage := nPagePan
CASE cType == 'DBF'
nPage := nPageDbf
CASE cType == 'LIB'
nPage := nPageLib
#ifdef QPM_SHG
CASE cType == 'HLP'
nPage := nPageHlp
#endif
ENDCASE
IF ! ( nValor == 0 )
IF At( '(', VentanaMain.TabGrids.Caption( nPage ) ) > 0
cAux := US_Word( strtran( strtran( VentanaMain.TabGrids.Caption( nPage ), '(', '' ), ')', '' ), US_Words( VentanaMain.TabGrids.Caption( nPage ) ) )
ENDIF
IF ! Empty( cAux )
nAux := Val( cAux )
ENDIF
nAux := nAux + nValor
ENDIF
IF nAux > 0
VentanaMain.TabGrids.Caption( nPage ) := &('Page'+cType) + ' (' + AllTrim( Str( nAux ) ) + ')'
ELSE
VentanaMain.TabGrids.Caption( nPage ) := &('Page'+cType)
ENDIF
RETURN .T.
FUNCTION PpoDisplay( bOnlyRenumering )
LOCAL ppoFile, nRow
IF Empty( bOnlyRenumering )
bOnlyRenumering := .F.
ENDIF
IF bPpoDisplayado .AND. !bOnlyRenumering
QPM_EditPPO()
ELSE
IF nRow == 0 .OR. GetProperty( 'VentanaMain', 'GPrgFiles', 'Itemcount' ) == 0
VentanaMain.RichEditPrg.Value := ''
ELSE
nRow := GetProperty( 'VentanaMain', 'GPrgFiles', 'value' )
IF US_Upper( US_FileNameOnlyExt( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGNAME ) ) ) == 'PRG'
ppoFile := GetObjFolder() + DEF_SLASH + US_FileNameOnlyName( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGNAME ) ) + '.ppo'
IF File( ppoFile )
IF Val( US_FileDateTime( ppoFile ) ) < Val( US_FileDateTime( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGFULLNAME ) ) ) )
MsgInfo( 'Warning, date of prg file is more recent than date of creation of ppo file' + CRLF + 'ReBuild the project after press Non-Incremental Button or after save prg file' )
ENDIF
cPpoCaretPrg := AllTrim( Str( VentanaMain.RichEditPRG.CaretPos ) )
VentanaMain.RichEditPrg.FontColor := DEF_COLORFONTPPO
VentanaMain.RichEditPrg.BackColor := DEF_COLORBACKPPO
VentanaMain.RichEditPRG.Value := Enumeracion( MemoRead( ppoFile ), 'PRG' )
VentanaMain.RichEditPRG.CaretPos := 1
VentanaMain.bReLoadPpo.caption := 'Edit PPO'
bPpoDisplayado := .T.
ELSE
MsgInfo( 'PreProcess file not found, ReBuild the project after press Non-Incremental Button or after save prg file' )
ENDIF
ELSE
MsgInfo( 'PreProcess Files is only for PRG files' )
ENDIF
ENDIF
ENDIF
RETURN .T.
FUNCTION RichEditDisplay( tipo, bReload, nRow, bForce )
LOCAL DbfName
LOCAL IncName
LOCAL aStru, x, DbfCode
LOCAL ListOut, cType := '', AuxRegistro
LOCAL nInx, LinesKeys, aLines
LOCAL MemoKeys
IF Empty( nRow ) .AND. ! ( tipo == 'OUT' )
nRow := GetProperty( 'VentanaMain', 'G'+tipo+'Files', 'Value' )
ENDIF
IF nRow == NIL
nRow := 0
ENDIF
DbfName := ChgPathToReal( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nRow, NCOLDBFFULLNAME ) )
IncName := ChgPathToReal( US_WordSubStr( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', nRow, NCOLINCFULLNAME ), 3 ) )
DEFAULT bReload TO .F.
DEFAULT bForce TO .F.
DO CASE
CASE tipo == 'PRG'
IF nRow == 0
VentanaMain.RichEditPrg.Value := ''
RETURN .F.
ENDIF
IF bReload .AND. bGlobalSearch
SetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGOFFSET, '0' )
IF GridImage( 'VentanaMain', 'GPrgFiles', nRow, NCOLPRGSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( tipo, -1 )
ENDIF
IF GlobalSearch2( tipo, cLastGlobalSearch, nRow, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( tipo, +1 )
ENDIF
ELSE
IF nGridPrgLastRow > 0
LostRichEdit( 'PRG' )
ENDIF
nGridPrgLastRow := nRow
ENDIF
IF GridImage( 'VentanaMain', 'GPrgFiles', nRow, NCOLPRGSTATUS, '?', PUB_nGridImgEdited )
VentanaMain.RichEditPrg.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditPrg.FontColor := DEF_COLORFONTEXTERNALEDIT
ELSE
VentanaMain.RichEditPrg.BackColor := DEF_COLORBACKPRG
VentanaMain.RichEditPrg.FontColor := DEF_COLORFONTVIEW
ENDIF
IF Prj_Radio_OutputType == DEF_RG_IMPORT
VentanaMain.RichEditPRG.Value := QPM_Wait( "ListModule( '" + ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) + "' )", 'Listing ...', NIL, .T. )
VentanaMain.RichEditPRG.CaretPos := 1
ELSE
bPpoDisplayado := .F.
VentanaMain.RichEditPRG.Value := Enumeracion( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGFULLNAME ) ) ), tipo )
VentanaMain.RichEditPRG.CaretPos := Val( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGOFFSET ) )
VentanaMain.bReLoadPpo.caption := 'Browse PPO'
ENDIF
CASE tipo == 'HEA'
IF nRow == 0
VentanaMain.RichEditHea.Value := ''
RETURN .F.
ENDIF
IF bReload .AND. bGlobalSearch
SetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', nRow, NCOLHEAOFFSET, '0' )
// IF ! Empty( cLastGlobalSearch )
// GridImage( 'VentanaMain', 'GHeaFiles', nRow, NCOLHEASTATUS, '-', PUB_nGridImgEdited )
IF GridImage( 'VentanaMain', 'GHeaFiles', nRow, NCOLHEASTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( tipo, -1 )
ENDIF
IF GlobalSearch2( tipo, cLastGlobalSearch, nRow, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( tipo, +1 )
ENDIF
// ENDIF
ELSE
IF nGridHeaLastRow > 0
LostRichEdit( 'HEA' )
ENDIF
nGridHeaLastRow := nRow
ENDIF
IF GridImage( 'VentanaMain', 'GHeaFiles', nRow, NCOLHEASTATUS, '?', PUB_nGridImgEdited )
VentanaMain.RichEditHea.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditHea.FontColor := DEF_COLORFONTEXTERNALEDIT
ELSE
VentanaMain.RichEditHea.BackColor := DEF_COLORBACKHEA
VentanaMain.RichEditHea.FontColor := DEF_COLORFONTVIEW
ENDIF
VentanaMain.RichEditHea.Value := Enumeracion( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', nRow, NCOLHEAFULLNAME ) ) ), tipo )
VentanaMain.RichEditHea.CaretPos := Val( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', nRow, NCOLHEAOFFSET ) )
CASE tipo == 'PAN'
IF nRow == 0
VentanaMain.RichEditPan.Value := ''
RETURN .F.
ENDIF
IF bReload .AND. bGlobalSearch
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', nRow, NCOLPANOFFSET, '0' )
IF GridImage( 'VentanaMain', 'GPanFiles', nRow, NCOLPANSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( tipo, -1 )
ENDIF
IF GlobalSearch2( tipo, cLastGlobalSearch, nRow, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( tipo, +1 )
ENDIF
ELSE
IF nGridPanLastRow > 0
LostRichEdit( 'PAN' )
ENDIF
nGridPanLastRow := nRow
ENDIF
IF GridImage( 'VentanaMain', 'GPanFiles', nRow, NCOLPANSTATUS, '?', PUB_nGridImgEdited )
VentanaMain.RichEditPan.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditPan.FontColor := DEF_COLORFONTEXTERNALEDIT
ELSE
VentanaMain.RichEditPan.BackColor := DEF_COLORBACKPAN
VentanaMain.RichEditPan.FontColor := DEF_COLORFONTVIEW
ENDIF
VentanaMain.RichEditPan.Value := Enumeracion( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', nRow, NCOLPANFULLNAME ) ) ), tipo )
VentanaMain.RichEditPan.CaretPos := Val( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', nRow, NCOLPANOFFSET ) )
CASE tipo == 'DBF'
IF nRow == 0
VentanaMain.RichEditDbf.Value := ''
// DefineRichEditForNotDbfView( 'DBF view is disable while Run Appl!' )
RETURN .F.
ENDIF
IF _IsControlDefined( 'DbfBrowse', 'VentanaMain' )
AuxRegistro := VentanaMain.DbfBrowse.Value
ELSE
AuxRegistro := 1
ENDIF
CloseDbfAutoView()
IF bGlobalSearch .AND. bLastGlobalSearchDbf .AND. bAvisoDbfGlobalSearchLow
MsgInfo( "Last Global Search with 'Dbf Data' set true causes a very slow reload" + CRLF + 'Use Reset Button for disable this option' )
bAvisoDbfGlobalSearchLow := .F.
ENDIF
IF bReload .AND. bGlobalSearch
//GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nRow, NCOLDBFOFFSET ) := '0 0'
IF GridImage( 'VentanaMain', 'GDbfFiles', nRow, NCOLDBFSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( tipo, -1 )
ENDIF
IF GlobalSearch2( tipo, cLastGlobalSearch, nRow, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( tipo, +1 )
ENDIF
ELSE
IF nGridDbfLastRow > 0
LostRichEdit( 'DBF', AuxRegistro )
ENDIF
nGridDbfLastRow := nRow
ENDIF
IF bReload
bAvisoDbfDataSearchLow := .T.
bDbfDataSearchAsk := .T.
cDbfDataSearchAskRpta := ''
ENDIF
IF GridImage( 'VentanaMain', 'GDbfFiles', nRow, NCOLDBFSTATUS, '?', PUB_nGridImgEdited )
VentanaMain.RichEditDbf.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditDbf.FontColor := DEF_COLORFONTEXTERNALEDIT
ELSE
VentanaMain.RichEditDbf.BackColor := DEF_COLORBACKDBF
VentanaMain.RichEditDbf.FontColor := DEF_COLORFONTVIEW
ENDIF
DbfCode := US_IsDBF( DbfName )
IF ! ( DbfCode == 0 )
IF DbfCode == 21 // open exclusive by another program
VentanaMain.RichEditDbf.Value := CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
" Database '"+DbfName+"' is open EXCLUSIVE by another process or DBT file is missing"
ELSE
VentanaMain.RichEditDbf.Value := CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
" Database '"+DbfName+"' is not valid DBF"
ENDIF
DefineRichEditForNotDbfView( 'DBF Not Open!' )
ELSE
VentanaMain.RichEditDbf.Value := CRLF + ;
'Structure for Database: ' + DbfName + CRLF + CRLF + ;
replicate( ' ', 22 ) + padr( 'Field', 15 ) + padr( 'Type', 4 ) + padl( 'Length', 8 )+ padl( 'Decimal', 8 ) + CRLF + ;
replicate( ' ', 22 ) + replicate( '=', 35 )
US_Use( .T.,, DbfName, 'DbfAlias', DEF_DBF_SHARED, DEF_DBF_READ ) /* si lo pongo exclusive y write no funciona el search, revisarlo */
aStru:=DBSTRUCT()
vDbfJustify := {}
vDbfHeaders := {}
vDbfWidths := {}
FOR x := 1 TO Len(aStru)
AAdd( vDbfJustify, iif( aStru[x][2] == 'N', BROWSE_JTFY_RIGHT, BROWSE_JTFY_LEFT ) )
AAdd( vDbfHeaders, aStru[x][1] )
AAdd( vDbfWidths, iif( aStru[x][3] > 20, 330, 90 ) )
VentanaMain.RichEditDbf.Value := VentanaMain.RichEditDbf.Value + CRLF + ;
replicate( ' ', 22 ) + padr( aStru[x][1], 15 ) + padr( aStru[x][2], 4 ) + padl( aStru[x][3], 8 )+ padl( aStru[x][4], 8 )
NEXT
IF ( bDbfAutoView .AND. !bRunApp ) .OR. bForce
IF _IsControlDefined( 'DbfAutoView', 'VentanaMain' )
VentanaMain.DbfAutoView.Release()
ENDIF
SET BROWSESYNC ON
@ GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 72 ) / 100 ), 10 BROWSE DbfBrowse ;
OF VentanaMain ;
WIDTH 0 ;
HEIGHT 0 ;
HEADERS ( vDbfHeaders ) ;
WIDTHS ( vDbfWidths ) ;
WORKAREA DbfAlias ;
FIELDS ( vDbfHeaders ) ;
VALUE RECNO() ;
FONT 'CourierNew' SIZE 9 ;
BACKCOLOR DEF_COLORBACKDBF
//NOVSCROLL
// ON CHANGE ( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFSEARCH ) := '0 ** 0' )
// EDIT INPLACE
// ON HEADCLICK { || US_log('headclick') } ;
// ON CHANGE { || TBL_BrowseRefresh() } ;
// ON DBLCLICK { || TBL_EjecutoDefault() }
VentanaMain.TabFiles.AddControl( 'DbfBrowse', nPageDbf, GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 72 ) / 100 ), 10 )
VentanaMain.DbfBrowse.DisableUpdate()
VentanaMain.DbfBrowse.Width := GetDesktopRealWidth() - 364
VentanaMain.DbfBrowse.Height := ( GetDesktopRealHeight() - 237 ) - ( GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 72 ) / 100 ) )
VentanaMain.DbfBrowse.value := Val( US_Word( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nRow, NCOLDBFOFFSET ), 2 ) )
VentanaMain.DbfBrowse.EnableUpdate()
VentanaMain.DbfBrowse.Refresh()
ELSE
CloseDbfAutoView()
IF bRunApp
DefineRichEditForNotDbfView( 'DBF view is disable while Run Appl!' )
ELSE
DefineRichEditForNotDbfView( 'DBF AutoView is OFF!' )
ENDIF
ENDIF
ENDIF
VentanaMain.BLOCALSearchDbf.caption := 'Dbf Search'
VentanaMain.BLOCALSearchDbf.Tooltip := "Search in DBF's Data"
VentanaMain.RichEditDbf.CaretPos := Val( US_Word( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nRow, NCOLDBFOFFSET ), 1 ) )
CASE tipo == 'INC'
IF nRow == 0
VentanaMain.RichEditLib.Value := ''
RETURN .F.
ENDIF
//VentanaMain.RichEditLib.Value := ListModule( IncName )
IF ! File( IncName )
VentanaMain.RichEditLib.Value := CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
" Library '"+IncName+"' not found!"
ELSE
DO CASE
CASE US_Upper( US_FileNameOnlyExt( IncName ) ) == 'LIB'
cType := QPM_ModuleType( IncName ) + ' Library'
CASE US_Upper( US_FileNameOnlyExt( IncName ) ) == 'A'
cType := QPM_ModuleType( IncName ) + ' Library'
CASE US_Upper( US_FileNameOnlyExt( IncName ) ) == "OBJ"
cType := QPM_ModuleType( IncName ) + ' Object'
CASE US_Upper( US_FileNameOnlyExt( IncName ) ) == 'O'
cType := QPM_ModuleType( IncName ) + ' Object'
CASE US_Upper( US_FileNameOnlyExt( IncName ) ) == "RES"
cType := QPM_ModuleType( IncName ) + ' Resource'
OTHERWISE
US_Log( 'Extension ' + DBLQT + US_Upper( US_FileNameOnlyExt( IncName ) ) + DBLQT + " is not supported." )
ENDCASE
VentanaMain.RichEditLib.Value := CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
" Library '" + IncName + "'" + CRLF + ;
' Size: ' + AllTrim( Str( US_FileSize( IncName ) ) ) + CRLF + ;
' Type: ' + cType + CRLF + ;
CRLF + ;
" Press 'List Library/Object' button for view function in Library or Object"
ENDIF
// CASE tipo == 'EXC'
// IF nRow == 0
// VentanaMain.RichEditLib.Value := ''
// RETURN .F.
// ENDIF
CASE tipo == 'OUT'
ListOut := GetOutputModuleName()
IF ! File( ListOut )
IF File( ListOut + '.MOVED.TXT' )
ListOut := US_WordSubStr( MemoRead( ListOut + '.MOVED.TXT' ), 7 )
ELSE
VentanaMain.RichEditOut.Value := CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
" Output Module file not found: '" + ListOut + "'!"
ListOut := ''
ENDIF
ENDIF
IF ! Empty( ListOut )
DO CASE
CASE US_Upper( US_FileNameOnlyExt( ListOut ) ) == 'LIB'
cType := QPM_ModuleType( ListOut ) + ' Library'
CASE US_Upper( US_FileNameOnlyExt( ListOut ) ) == 'A'
cType := QPM_ModuleType( ListOut ) + ' Library'
CASE US_Upper( US_FileNameOnlyExt( ListOut ) ) == 'EXE'
cType := 'Executable ' + QPM_ModuleType( ListOut )
CASE US_Upper( US_FileNameOnlyExt( ListOut ) ) == 'DLL'
cType := 'Dynamic Link Library'
OTHERWISE
MsgInfo( 'Error en Type for List Output' )
ENDCASE
VentanaMain.RichEditOut.Value := CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
" File '" + ListOut + "'" + CRLF + ;
' Size: ' + AllTrim( Str( US_FileSize( ListOut ) ) ) + CRLF + ;
' Type: ' + cType + CRLF + ;
CRLF + ;
" Press 'List' button for expand this module info"
ENDIF
#ifdef QPM_SHG
CASE tipo == 'HLP'
IF nRow == 0
VentanaMain.RichEditHlp.Value := ''
oHlpRichEdit:lChanged := .F.
RETURN .F.
ENDIF
IF bReload .AND. bGlobalSearch
SetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', nRow, NCOLHLPOFFSET, '0' )
IF GridImage( 'VentanaMain', 'GHlpFiles', nRow, NCOLHLPSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( tipo, -1 )
ENDIF
IF GlobalSearch2( tipo, cLastGlobalSearch, nRow, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( tipo, +1 )
ENDIF
ELSE
IF nGridHlpLastRow > 0
IF !bHlpMoving
IF !bReload
LostRichEdit( 'HLP', nGridHlpLastRow )
ENDIF
ENDIF
ENDIF
IF bGlobalSearch
IF GridImage( 'VentanaMain', 'GHlpFiles', nGridHlpLastRow, NCOLHLPSTATUS, '?', PUB_nGridImgSearchOk )
TotCaption( tipo, -1 )
ENDIF
IF GlobalSearch2( tipo, cLastGlobalSearch, nGridHlpLastRow, bLastGlobalSearchFun, bLastGlobalSearchDbf )
TotCaption( tipo, +1 )
ENDIF
ENDIF
nGridHlpLastRow := nRow
ENDIF
IF GridImage( 'VentanaMain', 'GHlpFiles', nRow, NCOLHLPSTATUS, '?', PUB_nGridImgEdited )
VentanaMain.RichEditHlp.BackColor := DEF_COLORBACKEXTERNALEDIT
VentanaMain.RichEditHlp.FontColor := DEF_COLORFONTEXTERNALEDIT
ELSE
VentanaMain.RichEditHlp.BackColor := DEF_COLORBACKHLP
VentanaMain.RichEditHlp.FontColor := DEF_COLORFONTVIEW
ENDIF
VentanaMain.RichEditHlp.Value := SHG_GetField( 'SHG_MEMOT', nRow )
VentanaMain.RichEditHlp.CaretPos := Val( GetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', nRow, NCOLHLPOFFSET ) )
oHlpRichEdit:US_EditRefreshButtons()
oHlpRichEdit:lChanged := .F.
MemoKeys := SHG_GetField( 'SHG_KEYST', VentanaMain.GHlpFiles.Value )
LinesKeys := MLCount( MEmoKeys, 254 )
aLines := {}
FOR nInx := 1 TO LinesKeys
AAdd( aLInes, { MemoLine( MemoKeys, 254, nInx ) } )
NEXT
VentanaMain.GHlpKeys.DisableUpdate
VentanaMain.GHlpKeys.DeleteAllItems
FOR nInx := 1 TO LinesKeys
VentanaMain.GHlpKeys.AddItem( aLines[nInx] )
NEXT
VentanaMain.GHlpKeys.value := VentanaMain.GHlpFiles.ItemCount
VentanaMain.GHlpKeys.EnableUpdate
DoMethod( 'VentanaMain', 'GHlpKeys', 'ColumnsAutoFitH' )
#endif
OTHERWISE
MsgInfo( 'Invalid type in RicheditDisplay: ' + US_VarToStr( tipo ) )
ENDCASE
RETURN .T.
#ifdef QPM_SHG
FUNCTION OcultaHlpKeys()
DO CASE
CASE VentanaMain.GHlpFiles.Value < 2 .AND. GetProperty( 'VentanaMain', 'TabFiles', 'Value' ) == nPageHlp
VentanaMain.BAddHlpKey.Enabled := .F.
VentanaMain.BRemoveHlpKey.Enabled := .F.
VentanaMain.GHlpKeys.Enabled := .F.
VentanaMain.ItC_AddHlpKey.Enabled := .F.
CASE VentanaMain.GHlpFiles.Value > 1 .AND. GetProperty( 'VentanaMain', 'TabFiles', 'Value' ) == nPageHlp
VentanaMain.BAddHlpKey.Enabled := .T.
VentanaMain.BRemoveHlpKey.Enabled := .T.
VentanaMain.GHlpKeys.Enabled := .T.
VentanaMain.ItC_AddHlpKey.Enabled := .T.
ENDCASE
IF GetProperty( 'VentanaMain', 'TabFiles', 'Value' ) == nPageHlp
VentanaMain.ItC_Move.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLAmpersand.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLMenor.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLMayor.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLSpace.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLImage.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLeMail.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLLink.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLLinkTopic.Enabled := .T.
VentanaMain.ItC_AddHlpHTMLAncora.Enabled := .T.
VentanaMain.ItC_Cut.Enabled := .T.
VentanaMain.ItC_Paste.Enabled := .T.
VentanaMain.ItC_CutM.Enabled := .T.
VentanaMain.ItC_PasteM.Enabled := .T.
ELSE
VentanaMain.ItC_Move.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLAmpersand.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLMenor.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLMayor.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLSpace.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLImage.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLeMail.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLLink.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLLinkTopic.Enabled := .F.
VentanaMain.ItC_AddHlpHTMLAncora.Enabled := .F.
VentanaMain.ItC_Cut.Enabled := .F.
VentanaMain.ItC_Paste.Enabled := .F.
VentanaMain.ItC_CutM.Enabled := .F.
VentanaMain.ItC_PasteM.Enabled := .F.
VentanaMain.BAddHlpKey.Enabled := .F.
VentanaMain.BRemoveHlpKey.Enabled := .F.
VentanaMain.GHlpKeys.Enabled := .F.
VentanaMain.ItC_AddHlpKey.Enabled := .F.
ENDIF
RETURN .T.
#endif
FUNCTION ListRichEditLib( LibName, RichEdit )
SetProperty( 'VentanaMain', RichEdit, 'Value', QPM_Wait( "ListModule( '" + LibName + "' )", 'Listing ...', NIL, .T. ) )
RETURN .T.
FUNCTION ListModuleMoved( ModName )
LOCAL ListOut := ModName
IF ! File( ModName )
IF File( ModName + '.MOVED.TXT' )
ListOut := US_WordSubStr( MemoRead( ModName + '.MOVED.TXT' ), 7 )
ENDIF
ENDIF
RETURN QPM_Wait( "ListModule( '" + ListOut + "' )", "Listing ...", NIL, .T. )
FUNCTION ListModule( ModName )
LOCAL MemoAux, TempExeType, LOC_RunWaitFileStop := US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RWFS' + US_DateTimeCen() + '.cnt'
LOCAL OrigModName := ModName, TempLibType
IF ! File( ModName )
MemoAux := "File '" + ModName + "' not found!"
RETURN MemoAux
ENDIF
ferase( ModName + '.Tmp' )
ferase( ModName + '.TmpOut' )
IF US_Upper( US_FileNameOnlyExt( ModName ) ) == 'LIB'
TempLibType := QPM_ModuleType( ModName )
DO CASE
CASE TempLibType == 'PELLES'
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_PODUMP.EXE -LINKERMEMBER:2 -ARCHIVEMEMBERS ' + US_ShortName( ModName ) + ' > "' + US_ShortName( ModName ) + '.Tmp"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
ferase( RUN_FILE )
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_SHELL.EXE QPM ANALIZE_LIB_PELLES ' + US_ShortName( ModName ) + '.Tmp' + ' -FILESTOP ' + LOC_RunWaitFileStop + ' > "' + US_ShortName( ModName ) + '.TmpOut"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE, LOC_RunWaitFileStop )
ferase( RUN_FILE )
CASE TempLibType == 'BORLAND'
QPM_Execute( US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_TLIB.EXE', US_ShortName( ModName ) + ', ' + US_ShortName( ModName ) + '.Tmp', DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_SHELL.EXE QPM ANALIZE_LIB_BORLAND ' + US_ShortName( ModName ) + '.Tmp' + ' -FILESTOP ' + LOC_RunWaitFileStop + ' > "' + US_ShortName( ModName ) + '.TmpOut"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE, LOC_RunWaitFileStop )
ferase( RUN_FILE )
CASE TempLibType == 'NONE'
QPM_MemoWrit( ModName + '.TmpOut', 'File not found' )
OTHERWISE
MsgStop( 'Unknown LIB type: ' + ModName )
ENDCASE
ELSEIF US_Upper( US_FileNameOnlyExt( ModName ) ) == 'A'
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_OBJDUMP.EXE -t -s ' + US_ShortName( ModName ) + ' > "' + US_ShortName( ModName ) + '.Tmp"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
ferase( RUN_FILE )
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_SHELL.EXE QPM ANALIZE_LIB_MINGW ' + US_ShortName( ModName ) + '.Tmp' + ' -FILESTOP ' + LOC_RunWaitFileStop + ' > "' + US_ShortName( ModName ) + '.TmpOut"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE, LOC_RunWaitFileStop )
ferase( RUN_FILE )
ELSEIF US_Upper( US_FileNameOnlyExt( ModName ) ) == 'DLL'
QPM_Execute( US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_IMPDEF.EXE', US_ShortName( ModName ) + '.Tmp ' + US_ShortName( ModName ), DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_SHELL.EXE QPM -OFF ANALIZE_DLL ' + US_ShortName( ModName ) + '.Tmp' + ' -FILESTOP ' + LOC_RunWaitFileStop + ' > "' + US_ShortName( ModName ) + '.TmpOut"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE, LOC_RunWaitFileStop )
ferase( RUN_FILE )
ELSEIF US_Upper( US_FileNameOnlyExt( ModName ) ) == 'EXE'
TempExeType := QPM_ModuleType( ModName )
IF TempExeType == 'COMPRESSED'
ListModuleUnUpx( US_ShortName( ModName ), US_ShortName( ModName ) + '.UnUpx.Exe' )
ModName := US_Shortname( ModName ) + '.UnUpx.Exe'
TempExeType := QPM_ModuleType( ModName )
ENDIF
DO CASE
CASE TempExeType == 'BORLAND'
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_TDUMP.EXE ' + US_ShortName( ModName ) + ' > "' + US_ShortName( ModName ) + '.TmpOut"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
ferase( RUN_FILE )
CASE TempExeType == 'PELLES'
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_TDUMP.EXE ' + US_ShortName( ModName ) + ' > "' + US_ShortName( ModName ) + '.TmpOut"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
ferase( RUN_FILE )
CASE TempExeType == 'MINGW'
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_TDUMP.EXE ' + US_ShortName( ModName ) + ' > "' + US_ShortName( ModName ) + '.TmpOut"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
ferase( RUN_FILE )
CASE TempExeType == 'NONE'
QPM_MemoWrit( ModName + '.TmpOut', 'File not found' )
OTHERWISE
MsgStop( 'Unknown EXE type: ' + OrigModName )
ENDCASE
ELSE
MsgInfo( 'Listing files of type ' + DBLQT + US_Upper( US_FileNameOnlyExt( ModName ) ) + DBLQT + ' is not supported.')
RETURN MemoAux
ENDIF
MemoAux := MemoRead( US_ShortName( ModName ) + '.TmpOut' )
ferase( US_ShortName( ModName ) + '.Tmp' )
ferase( US_ShortName( ModName ) + '.TmpOut' )
ferase( US_ShortName( OrigModName ) + '.TmpOut' )
ferase( US_ShortName( OrigModName ) + '.UnUpx.Exe' )
RETURN MemoAux
FUNCTION ListModuleUnUpx( cIn, cOut )
QPM_MemoWrit( RUN_FILE, US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_UPX.EXE -d -o' + cOut + ' ' + cIn + ' > "' + cIn + '.TmpOut"' )
QPM_Execute( RUN_FILE, "", DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_MINIMIZE )
ferase( RUN_FILE )
RETURN .T.
FUNCTION LOCALSearch( Txt, bFunc )
LOCAL cTab := '', PositionAux := 0
LOCAL Resultado := {}, CaretAnt
//#define EM_SETSEL 177
DEFAULT bFunc TO .F.
IF Empty( Txt )
MsgInfo( 'Empty Text for Search ...' )
RETURN .F.
ENDIF
AddSearchTxt()
DO CASE
CASE VentanaMain.TabFiles.value == nPagePrg
cTab := 'PRG'
CASE VentanaMain.TabFiles.value == nPageHea
cTab := 'HEA'
CASE VentanaMain.TabFiles.value == nPagePan
cTab := 'PAN'
CASE VentanaMain.TabFiles.value == nPageDbf
cTab := 'DBF'
CASE VentanaMain.TabFiles.value == nPageLib
cTab := 'LIB'
CASE VentanaMain.TabFiles.value == nPageSysOut
cTab := 'SYSOUT'
CASE VentanaMain.TabFiles.value == nPageOut
cTab := 'OUT'
#ifdef QPM_SHG
CASE VentanaMain.TabFiles.value == nPageHlp
cTab := 'HLP'
#endif
OTHERWISE
MsgInfo( 'Error in function LOCALSearch, TabFile invalid: ' + US_VarToStr( VentanaMain.TabFiles.value ) )
ENDCASE
IF bFunc .AND. ! ( cTab == 'PRG' )
MsgInfo( 'Error in LOCAL Search, invalid bFunc in true with cTab equal '+cTab )
RETURN .F.
ENDIF
CaretAnt := GetProperty( 'VentanaMain', 'RichEdit'+cTab, 'CaretPos' )
IF bFunc
VentanaMain.Check_SearchCas.Value := bLastGlobalSearchCas := .F.
GlobalSearch2( 'PRG', Txt, GetProperty( 'VentanaMain', 'G'+cTab+'Files', 'Value' ), .T.,,,,, @PositionAux )
PositionAux--
AAdd( Resultado, PositionAux )
AAdd( Resultado, PositionAux )
AAdd( Resultado, PositionAux )
IF Resultado[1] > 0
SetProperty( 'VentanaMain', 'RichEdit'+cTab, 'CaretPos', PositionAux )
FindChr( GetControlHandle ( 'RichEdit'+cTab, 'VentanaMain' ), Txt, .T., .F., bLastGlobalSearchCas, .T. )
ENDIF
ELSE
bLastGlobalSearchCas := VentanaMain.Check_SearchCas.Value
Resultado := FindChr( GetControlHandle( 'RichEdit'+cTab, 'VentanaMain' ), Txt, .T., .F., bLastGlobalSearchCas, .T. )
ENDIF
IF Resultado[3] < 0
IF CaretAnt == 0
MsgOk( 'QPM (QAC based Project Manager)', 'Text not found.', 'E', .T., 2 )
ELSE
MsgOk( 'QPM (QAC based Project Manager)', 'Text not found.' + CRLF + 'Restart search from top.', 'W', .T., 2 )
ENDIF
SetProperty( 'VentanaMain', 'RichEdit'+cTab, 'CaretPos', CaretAnt )
RETURN .F.
ENDIF
RETURN .T.
FUNCTION DbfDataSearch( Txt )
LOCAL nRecord := 0, cFieldName := '', nFieldPos := 0, cFieldTxt := ''
LOCAL nOldValue := VentanaMain.GDbfFiles.Value
LOCAL nOldRecord
LOCAL nAuxRecord
LOCAL cTypeDbfSearch := 'R' /* Record Base Type */
IF VentanaMain.GDbfFiles.Value < 1
MsgInfo( 'No DBF has been selected.' )
RETURN .F.
ENDIF
IF Empty( Txt )
MsgInfo( 'No text for Search has been entered.' )
RETURN .F.
ENDIF
nOldRecord := VentanaMain.DbfBrowse.Value
nAuxRecord := nOldRecord
AddSearchTxt()
IF bAvisoDbfDataSearchLow .OR. ! ( Val( US_Word( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFSEARCH ), 1 ) ) == nOldRecord )
IF ! MyMsgYesNo( "Search 'Dbf Data' is very slow." + CRLF + "Do you want to continue?" )
RETURN .F.
ENDIF
bAvisoDbfDataSearchLow := .F.
bDbfDataSearchAsk := .T.
ELSE
IF ! ( bDbfDataSearchAsk )
cTypeDbfSearch := cDbfDataSearchAskRpta
ELSE
SetMGWaitHide()
IF ( cTypeDbfSearch := LOCALSearchContinue() ) == ''
SetMGWaitShow()
RETURN .F.
ELSE
IF ! ( bDbfDataSearchAsk )
cDbfDataSearchAskRpta := cTypeDbfSearch
ENDIF
ENDIF
SetMGWaitShow()
ENDIF
IF cTypeDbfSearch == 'R'
nAuxRecord++
ENDIF
ENDIF
VentanaMain.RichEditDbf.BackColor := DEF_COLORBACKDBFSEARCHOK
IF GlobalSearch2( 'DBF', Txt, VentanaMain.GDbfFiles.Value, NIL, .T., cTypeDbfSearch, nAuxRecord, @nRecord, @cFieldName, @nFieldPos, @cFieldTxt )
DBSelectarea( 'DbfAlias' )
VentanaMain.DbfBrowse.Value := nRecord
VentanaMain.DbfBrowse.Refresh()
#IFDEF __XHARBOUR__
VentanaMain.RichEditDbf.Value := ' ' + CRLF + ;
' ' + CRLF + ;
' Text found at record: ' + AllTrim( Str( nRecord ) ) + CRLF + ;
' Field: ' + cFieldName + CRLF + ;
' Position: ' + AllTrim( Str( nFieldPos ) ) + CRLF + ;
' Content: ' + SubStr( cFieldTxt, At( US_Upper( Txt ), US_Upper( cFieldTxt ), nFieldPos ), 200 ) + CRLF
#ELSE
VentanaMain.RichEditDbf.Value := ' ' + CRLF + ;
' ' + CRLF + ;
' Text found at record: ' + AllTrim( Str( nRecord ) ) + CRLF + ;
' Field: ' + cFieldName + CRLF + ;
' Position: ' + AllTrim( Str( nFieldPos ) ) + CRLF + ;
' Content: ' + SubStr( cFieldTxt, hb_At( US_Upper( Txt ), US_Upper( cFieldTxt ), nFieldPos ), 200 ) + CRLF
#endif
VentanaMain.RichEditDbf.CaretPos := 1
FindChr( GetControlHandle ( 'RichEditDbf', 'VentanaMain' ), VentanaMain.CSearch.DisplayValue, FindChr( GetControlHandle ( 'RichEditDbf', 'VentanaMain' ), 'Content: ', .T., .F., bLastGlobalSearchCas, .T. ), .F., bLastGlobalSearchCas, .T. )
SetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFSEARCH, AllTrim( Str( nRecord ) ) + ' ' + cFieldName + ' ' + AllTrim( Str( nFieldPos ) ) )
DoMethod( 'VentanaMain', 'GDbfFiles', 'ColumnsAutoFitH' )
VentanaMain.BLOCALSearchDbf.caption := 'Continue Search'
VentanaMain.BLOCALSearchDbf.Tooltip := "Continue searching in DBF's data. To reset use " + DBLQT + "Force Display Dbf" + DBLQT + "button"
RETURN .T.
ENDIF
SetMGWaitHide()
IF nOldRecord == 1
MsgOk( 'QPM (QAC based Project Manager)', 'Text not found', 'E', .T., 2 )
bAvisoDbfDataSearchLow := .T.
VentanaMain.RichEditDbf.Value := ' ' + CRLF + ;
' Text not found in DBF data'
// IF ! ( US_Word( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFSEARCH ), 1 ) == '0' )
// VentanaMain.RichEditDbf.Value := ' ' + CRLF + ;
// ' Text not found in DBF data'
// GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFSEARCH ) := '0 ** 0'
// ENDIF
ELSE
MsgOk( 'QPM (QAC based Project Manager)', 'Text not found'+CRLF+'Re-Search from Top', 'W', .T., 2 )
VentanaMain.RichEditDbf.Value := ' ' + CRLF + ;
' Text not found in DBF data from record ' + AllTrim( Str( nOldRecord ) ) + CRLF + ;
' Re-Search from Top Record'
//GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', VentanaMain.GDbfFiles.Value, NCOLDBFSEARCH ) := '0 ** 0'
ENDIF
VentanaMain.DbfBrowse.Value := nOldRecord
bDbfDataSearchAsk := .T.
cDbfDataSearchAskRpta := ''
VentanaMain.BLOCALSearchDbf.caption := 'New Dbf Search'
VentanaMain.BLOCALSearchDbf.Tooltip := 'Search in DBF data from the beginning. To reset use "Force Display Dbf" button'
VentanaMain.GDbfFiles.Value := nOldValue
DoMethod( 'VentanaMain', 'GDbfFiles', 'ColumnsAutoFitH' )
RETURN .F.
FUNCTION GlobalSearch( Txt )
LOCAL i
LOCAL nFound, bSearchDbfData
IF Empty( Txt )
MsgInfo( 'Empty Text for Search ...' )
RETURN .F.
ENDIF
ResetImgGrid( '*' )
bGlobalSearch := .T.
cLastGlobalSearch := Txt
bLastGlobalSearchFun := VentanaMain.Check_SearchFun.value
bLastGlobalSearchDbf := VentanaMain.Check_SearchDbf.value
bLastGlobalSearchCas := VentanaMain.Check_SearchCas.value
bSearchDbfData := bLastGlobalSearchDbf
VentanaMain.Check_SearchFun.enabled := .F.
VentanaMain.Check_SearchDbf.enabled := .F.
VentanaMain.Check_SearchCas.enabled := .F.
VentanaMain.BGlobalReset.enabled := .T.
VentanaMain.LGlobal.visible := .T.
IF bLastGlobalSearchFun
nFound := 0
TotCaption( 'PRG', 0 )
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF GlobalSearch2( 'PRG', Txt, i, .T. )
nFound++
ENDIF
NEXT i
TotCaption( 'PRG', nFound )
RETURN .T.
ELSE
nFound := 0
TotCaption( 'PRG', 0 )
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF GlobalSearch2( 'PRG', Txt, i )
nFound++
ENDIF
NEXT i
TotCaption( 'PRG', nFound )
ENDIF
nFound := 0
TotCaption( 'HEA', 0 )
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF GlobalSearch2( 'HEA', Txt, i )
nFound++
ENDIF
NEXT i
TotCaption( 'HEA', nFound )
nFound := 0
TotCaption( 'PAN', 0 )
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
IF GlobalSearch2( 'PAN', Txt, i )
nFound++
ENDIF
NEXT i
TotCaption( 'PAN', nFound )
nFound := 0
TotCaption( 'DBF', 0 )
IF bSearchDbfData
IF ! MyMsgYesNo( "Global Search with 'Dbf Data' is very slow." + CRLF + "Do you want to continue?" )
VentanaMain.Check_SearchDbf.value := .F.
bLastGlobalSearchDbf := .F.
RETURN .F.
ENDIF
ENDIF
IF bSearchDbfData
bAvisoDbfGlobalSearchLow := .T.
ENDIF
FOR i := 1 TO VentanaMain.GDbfFiles.ItemCount
IF GlobalSearch2( 'DBF', Txt, i,, bSearchDbfData )
nFound++
ENDIF
NEXT i
TotCaption( 'DBF', nFound )
VentanaMain.Check_SearchDbf.value := bSearchDbfData
bAvisoDbfGlobalSearchLow := .T.
nFound := 0
TotCaption( 'LIB', 0 )
FOR i := 1 TO VentanaMain.GIncFiles.ItemCount
IF GlobalSearch2( 'LIB', Txt, i )
nFound++
ENDIF
NEXT i
TotCaption( 'LIB', nFound )
nFound := 0
TotCaption( 'HLP', 0 )
IF SHG_BaseOk
IF ! MyMsgYesNo( 'Skip search of Help Topics?', NIL, .T. )
FOR i := 1 TO VentanaMain.GHlpFiles.ItemCount
IF GlobalSearch2( 'HLP', Txt, i )
nFound++
ENDIF
NEXT i
TotCaption( 'HLP', nFound )
ENDIF
ENDIF
QPM_CheckFiles()
RETURN .T.
FUNCTION GlobalSearch2( cType, Txt, nRow, bFunc, bDbfData, DBFcBaseType, nRecordBase, nRecordFound, cFieldNameFound, nFieldPosFound, cFieldTxtFound )
LOCAL Pos, MemoAux, x, LineAux, nWord, vAux, nPosition
LOCAL bSalir, nPosAux
LOCAL bFound := .F., bChangeImg
LOCAL aStru, DbfName, DbfCode
LOCAL cFieldBase, nPosBase, columnValid
DEFAULT bFunc TO .F.
DEFAULT bDbfData TO .F.
DEFAULT DBFcBaseType TO 'R' /* R : Record, F : Filed, P : Position */
DEFAULT nRecordBase TO 1
SetMGWaitTxt( 'Searching: ' + ChgPathToReal( GetProperty( 'VentanaMain', 'G' + iif( cType == 'LIB', 'INC', cType ) + 'Files', 'Cell', nRow, &( 'nCol'+cType+iif(cType=='HLP','Topic','FullName') ) ) ) )
IF bGlobalSearch
bChangeImg := .T.
ELSE
bChangeImg := .F.
ENDIF
nFieldPosFound := 0
IF bFunc .AND. ( Prj_Radio_OutputType == DEF_RG_EXE .OR. Prj_Radio_OutputType == DEF_RG_LIB )
VentanaMain.Check_SearchCas.Value := bLastGlobalSearchCas := .F.
IF bChangeImg
GridImage( 'VentanaMain', 'GPrgFiles', nRow, NCOLPRGSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
MemoAux := US_Upper( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGFULLNAME ) ) ) )
bSalir := .F.
nPosition := 1
#IFDEF __XHARBOUR__
DO WHILE ( Pos := At( US_Upper( Txt ), MemoAux, nPosition ) ) > 0 .AND. !bSalir
#ELSE
DO WHILE ( Pos := hb_At( US_Upper( Txt ), MemoAux, nPosition ) ) > 0 .AND. !bSalir
#endif
nPosition := Pos + 1
vAux := MPOSTOLC( MemoAux, 254, Pos )
LineAux := MemoLine( MemoAux, 254, vAux[1] )
IF At( US_Upper( Txt ), LineAux ) > 0 .AND. ;
( At( 'PROCEDURE', LineAux ) > 0 .OR. ;
At( 'PROC', LineAux ) > 0 .OR. ;
At( 'FUNCTION', LineAux ) > 0 .OR. ;
At( 'FUNC', LineAux ) > 0 .OR. ;
At( 'METHOD', LineAux ) > 0 .OR. ;
At( 'METH', LineAux ) > 0 )
IF US_Word( LineAux, 1 ) == 'STATIC'
nWord := 2
ELSE
nWord := 1
ENDIF
IF ( ( US_Word( LineAux, nWord ) == 'PROCEDURE' ) .OR. ;
( US_Word( LineAux, nWord ) == 'PROC' ) .OR. ;
( US_Word( LineAux, nWord ) == 'FUNCTION' ) .OR. ;
( US_Word( LineAux, nWord ) == 'FUNC' ) .OR. ;
( US_Word( LineAux, nWord ) == 'METHOD' ) .OR. ;
( US_Word( LineAux, nWord ) == 'METH' ) ) .AND. ;
( ( At( US_Upper( Txt ) + '(', SubStr( LineAux, US_WordInd( LineAux, nWord + 1 ) ) ) == 1 ) .OR. ;
( At( US_Upper( Txt ) + ' ', SubStr( LineAux, US_WordInd( LineAux, nWord + 1 ) ) ) == 1 ) )
IF bChangeImg
GridImage( 'VentanaMain', 'GPrgFiles', nRow, NCOLPRGSTATUS, '+', PUB_nGridImgSearchOk )
ENDIF
bSalir := .T.
bFound := .T.
nFieldPosFound := MLCTOPOS( MemoAux, 254, vAux[1], US_WordInd( LineAux, nWord + 1 ) ) // - vAux[1]
// nFieldPosFound := MLCTOPOS( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGFULLNAME ) ) ), 254, vAux[1], US_WordInd( LineAux, nWord + 1 ) ) // - vAux[1]
ENDIF
ENDIF
ENDDO
ELSE
DO CASE
CASE cType == 'PRG'
IF bLastGlobalSearchCas
IF Prj_Radio_OutputType == DEF_RG_IMPORT
nPosAux := At( Txt, GetProperty( 'VentanaMain', 'RichEditPRG', 'value' ) )
ELSE
nPosAux := At( Txt, MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGFULLNAME ) ) ) )
ENDIF
ELSE
IF Prj_Radio_OutputType == DEF_RG_IMPORT
nPosAux := At( US_Upper( Txt ), US_Upper( GetProperty( 'VentanaMain', 'RichEditPRG', 'value' ) ) )
ELSE
nPosAux := At( US_Upper( Txt ), US_Upper( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nRow, NCOLPRGFULLNAME ) ) ) ) )
ENDIF
ENDIF
IF nPosAux > 0
IF bChangeImg
GridImage( 'VentanaMain', 'GPrgFiles', nRow, NCOLPRGSTATUS, '+', PUB_nGridImgSearchOk )
ENDIF
bFound := .T.
ELSE
IF bChangeImg
GridImage( 'VentanaMain', 'GPrgFiles', nRow, NCOLPRGSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
ENDIF
CASE cType == 'HEA'
IF bLastGlobalSearchCas
nPosAux := At( Txt, MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', nRow, NCOLHEAFULLNAME ) ) ) )
ELSE
nPosAux := At( US_Upper( Txt ), US_Upper( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', nRow, NCOLHEAFULLNAME ) ) ) ) )
ENDIF
IF nPosAux > 0
IF bChangeImg
GridImage( 'VentanaMain', 'GHeaFiles', nRow, NCOLHEASTATUS, '+', PUB_nGridImgSearchOk )
ENDIF
bFound := .T.
ELSE
IF bChangeImg
GridImage( 'VentanaMain', 'GHeaFiles', nRow, NCOLHEASTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
ENDIF
CASE cType == 'PAN'
IF bLastGlobalSearchCas
nPosAux := At( Txt, MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', nRow, NCOLPANFULLNAME ) ) ) )
ELSE
nPosAux := At( US_Upper( Txt ), US_Upper( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', nRow, NCOLPANFULLNAME ) ) ) ) )
ENDIF
IF nPosAux > 0
IF bChangeImg
GridImage( 'VentanaMain', 'GPanFiles', nRow, NCOLPANSTATUS, '+', PUB_nGridImgSearchOk )
ENDIF
bFound := .T.
ELSE
IF bChangeImg
GridImage( 'VentanaMain', 'GPanFiles', nRow, NCOLPANSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
ENDIF
CASE cType == 'DBF'
DbfName := ChgPathToReal( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nRow, NCOLDBFFULLNAME ) )
DbfCode := US_IsDBF( DbfName )
IF DbfCode == 0
US_Use( .T.,, DbfName, 'DSearch', DEF_DBF_SHARED, DEF_DBF_READ ) /* si pongo exclusive y write no funciona el search, revisarlo */
aStru := DBSTRUCT()
IF ! bDbfData
VentanaMain.Check_SearchCas.Value := bLastGlobalSearchCas := .F.
FOR x := 1 TO Len( aStru )
IF At( US_Upper( Txt ), aStru[x][1] ) > 0
bFound := .T.
EXIT
ENDIF
NEXT x
ELSE
cFieldBase := ''
IF DBFcBaseType == 'F' /* Field base type */
cFieldBase := US_Word( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nRow, NCOLDBFSEARCH ), 2 )
ENDIF
IF DBFcBaseType == 'P' /* Position base type */
cFieldBase := US_Word( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nRow, NCOLDBFSEARCH ), 2 )
ENDIF
DBGoTo( nRecordBase )
columnValid := .F.
IF DBFcBaseType == 'R' /* Record base type */
columnValid := .T.
ENDIF
DO WHILE !eof()
FOR x:=1 TO Len(aStru)
IF DBFcBaseType == 'F' .AND. !columnValid /* Field base type */
IF aStru[x][1] == cFieldBase
columnValid := .T.
loop
ENDIF
ENDIF
nPosBase := 1
IF DBFcBaseType == 'P' .AND. !columnValid /* Position base type */
IF aStru[x][1] == cFieldBase
nPosBase := Val( US_Word( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nRow, NCOLDBFSEARCH ), 3 ) ) + 1
columnValid := .T.
ENDIF
ENDIF
IF columnValid
IF bLastGlobalSearchCas
#IFDEF __XHARBOUR__
nPosAux := At( Txt, US_VarToStr( &( aStru[x][1] ) ), nPosBase )
#ELSE
nPosAux := hb_At( Txt, US_VarToStr( &( aStru[x][1] ) ), nPosBase )
#endif
ELSE
#IFDEF __XHARBOUR__
nPosAux := At( US_Upper( Txt ), US_Upper( US_VarToStr( &( aStru[x][1] ) ) ), nPosBase )
#ELSE
nPosAux := hb_At( US_Upper( Txt ), US_Upper( US_VarToStr( &( aStru[x][1] ) ) ), nPosBase )
#endif
ENDIF
IF nPosAux > 0
bFound := .T.
nRecordFound := RecNo()
cFieldNameFound := aStru[x][1]
nFieldPosFound := nPosAux
cFieldTxtFound := US_VarToStr( &( aStru[x][1] ) )
EXIT
ENDIF
ENDIF
NEXT x
IF bFound
EXIT
ENDIF
DBSkip( 1 )
ENDDO
ENDIF
DBCloseArea( 'DSearch' )
ENDIF
IF bFound
IF bChangeImg
GridImage( 'VentanaMain', 'GDbfFiles', nRow, NCOLDBFSTATUS, '+', PUB_nGridImgSearchOk )
ENDIF
bFound := .T.
ELSE
IF bChangeImg
GridImage( 'VentanaMain', 'GDbfFiles', nRow, NCOLDBFSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
ENDIF
CASE cType == 'LIB'
IF bLastGlobalSearchCas
nPosAux := At( Txt, MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', nRow, NCOLINCFULLNAME ) ) ) )
ELSE
nPosAux := At( US_Upper( Txt ), US_Upper( MemoRead( ChgPathToReal( GetProperty( 'VentanaMain', 'GIncFiles', 'Cell', nRow, NCOLINCFULLNAME ) ) ) ) )
ENDIF
IF nPosAux > 0
IF bChangeImg
GridImage( 'VentanaMain', 'GIncFiles', nRow, NCOLINCSTATUS, '+', PUB_nGridImgSearchOk )
ENDIF
bFound := .T.
ELSE
IF bChangeImg
GridImage( 'VentanaMain', 'GIncFiles', nRow, NCOLINCSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
ENDIF
#ifdef QPM_SHG
CASE cType == 'HLP'
IF bLastGlobalSearchCas
nPosAux := At( Txt, US_RTF2TXT( SHG_GetField( 'SHG_MEMOT', nRow ) ) )
ELSE
nPosAux := At( US_Upper( Txt ), US_Upper( US_RTF2TXT( SHG_GetField( 'SHG_MEMOT', nRow ) ) ) )
ENDIF
IF nPosAux > 0
IF bChangeImg
GridImage( 'VentanaMain', 'GHlpFiles', nRow, NCOLHLPSTATUS, '+', PUB_nGridImgSearchOk )
ENDIF
bFound := .T.
ELSE
IF bChangeImg
GridImage( 'VentanaMain', 'GHlpFiles', nRow, NCOLHLPSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
ENDIF
#endif
OTHERWISE
MsgInfo( 'Invalid type in GlobalSearch2: ' + cType )
ENDCASE
ENDIF
RETURN bFound
FUNCTION ResetImgGrid( cGrid )
LOCAL i
IF Empty( cGrid )
cGrid := '*'
ENDIF
VentanaMain.BGlobalReset.enabled := .F.
VentanaMain.Check_SearchFun.enabled := .T.
VentanaMain.Check_SearchDbf.enabled := .T.
VentanaMain.Check_SearchCas.enabled := .T.
VentanaMain.LGlobal.visible := .F.
bGlobalSearch := .F.
bLastGlobalSearchDbf := .F.
bAvisoDbfGlobalSearchLow := .F.
IF cGrid == 'PRG' .OR. cGrid == '*'
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF GridImage( 'VentanaMain', 'GPrgFiles', i, NCOLPRGSTATUS, '?', PUB_nGridImgSearchOk )
GridImage( 'VentanaMain', 'GPrgFiles', i, NCOLPRGSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
NEXT i
VentanaMain.TabGrids.Caption( 1 ) := PagePRG
ENDIF
IF cGrid == 'HEA' .OR. cGrid == '*'
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF GridImage( 'VentanaMain', 'GHeaFiles', i, NCOLHEASTATUS, '?', PUB_nGridImgSearchOk )
GridImage( 'VentanaMain', 'GHeaFiles', i, NCOLHEASTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
NEXT i
VentanaMain.TabGrids.Caption( 2 ) := PageHEA
ENDIF
IF cGrid == 'PAN' .OR. cGrid == '*'
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
IF GridImage( 'VentanaMain', 'GPanFiles', i, NCOLPANSTATUS, '?', PUB_nGridImgSearchOk )
GridImage( 'VentanaMain', 'GPanFiles', i, NCOLPANSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
NEXT i
VentanaMain.TabGrids.Caption( 3 ) := PagePAN
ENDIF
IF cGrid == 'DBF' .OR. cGrid == '*'
FOR i := 1 TO VentanaMain.GDbfFiles.ItemCount
IF GridImage( 'VentanaMain', 'GDbfFiles', i, NCOLDBFSTATUS, '?', PUB_nGridImgSearchOk )
GridImage( 'VentanaMain', 'GDbfFiles', i, NCOLDBFSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
SetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFSEARCH, '0 ** 0' )
NEXT i
VentanaMain.TabGrids.Caption( 4 ) := PageDBF
VentanaMain.BLOCALSearchDbf.caption := 'Dbf Search'
VentanaMain.BLOCALSearchDbf.Tooltip := 'Search text in Dbf Data'
VentanaMain.RichEditDbf.BackColor := DEF_COLORBACKDBF
QPM_Wait( "RichEditDisplay( 'DBF', .F. )", 'Loading ...' )
ENDIF
IF cGrid == 'LIB' .OR. cGrid == '*'
FOR i := 1 TO VentanaMain.GIncFiles.ItemCount
IF GridImage( 'VentanaMain', 'GIncFiles', i, NCOLINCSTATUS, '?', PUB_nGridImgSearchOk )
GridImage( 'VentanaMain', 'GIncFiles', i, NCOLINCSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
NEXT i
VentanaMain.TabGrids.Caption( 5 ) := PageLIB
ENDIF
IF cGrid == 'HLP' .OR. cGrid == '*'
FOR i := 1 TO VentanaMain.GHlpFiles.ItemCount
IF GridImage( 'VentanaMain', 'GHlpFiles', i, NCOLHLPSTATUS, '?', PUB_nGridImgSearchOk )
GridImage( 'VentanaMain', 'GHlpFiles', i, NCOLHLPSTATUS, '-', PUB_nGridImgSearchOk )
ENDIF
NEXT i
VentanaMain.TabGrids.Caption( 6 ) := PageHlp
ENDIF
RETURN .T.
FUNCTION GridImage( cWin, cGrid, nRow, nCol, cOper, nBitImage )
LOCAL nBits := 256 // ( 2 ** PUB_nGridImgTop ) // ej: 9 imagenes primarias = 256 ( PUB_nGridImgTilde, PUB_nGridImgEquis, etc )
LOCAL i, cString, nAux
LOCAL vImagesTranslateGrid := { { 0, 0 }, ; // 0 0 0000 0000
{ 1, 1 }, ; // 1 1 0000 0001
{ 2, 2 }, ; // 2 2 0000 0010
{ 3, 3 }, ; // 3 3 0000 0011
{ 4, 4 }, ; // 4 4 0000 0100
{ 5, 5 }, ; // 5 5 0000 0101
{ 6, 6 }, ; // 6 6 0000 0110
{ 7, 7 }, ; // 7 7 0000 0111
{ 8, 8 }, ; // 8 8 0000 1000
{ 9, 9 }, ; // 9 9 0000 1001
{ 10, 10 }, ; // 10 10 0000 1010
{ 11, 11 }, ; // 11 11 0000 1011
{ 12, 12 }, ; // 12 12 0000 1100
{ 13, 13 }, ; // 13 13 0000 1101
{ 14, 14 }, ; // 14 14 0000 1110
{ 15, 15 }, ; // 15 15 0000 1111
{ 16, 16 }, ; // 16 16 0001 0000
{ 32, 17 }, ; // 17 32 0010 0000
{ 36, 18 }, ; // 18 36 0010 0100
{ 64, 19 }, ; // 19 64 0100 0000
{ 68, 20 }, ; // 20 68 0100 0100
{ 128, 21 }, ; // 21 128 1000 0000
{ 132, 22 }, ; // 22 132 1000 0100
{ 256, 23 }, ; // 23 256 1 0000 0000
{ 260, 24 } } // 24 260 1 0000 0100
IF nRow < 1
RETURN .F.
ENDIF
IF ( nAux := AScan( vImagesTranslateGrid, { |x| x[2] == GetProperty( cWin, cGrid, 'Cell', nRow, nCol ) } ) ) == 0
MsgInfo( 'Error en posicionamiento en Funcion GridImage para el valor: ' + US_VarToStr( GetProperty( cWin, cGrid, 'Cell', nRow, nCol ) ) )
RETURN .F.
ENDIF
cString := NTOC( vImagesTranslateGrid[ nAux ][ 1 ], 2, nBits, '0' )
FOR i := 1 TO Len( cOper )
DO CASE
CASE SubStr( cOper, i, 1 ) == '?' /* preguntar si esta activo */
IF SubStr( cString, nBits - nBitImage + 1, 1 ) == '1'
RETURN .T.
ELSE
RETURN .F.
ENDIF
CASE SubStr( cOper, i, 1 ) == '+' /* agregarle */
cString := SubStr( cString, 1, nBits - nBitImage ) + '1' + SubStr( cString, nBits - nBitImage + 2 )
CASE SubStr( cOper, i, 1 ) == '-' /* sacarle */
cString := SubStr( cString, 1, nBits - nBitImage ) + '0' + SubStr( cString, nBits - nBitImage + 2 )
CASE US_Upper( SubStr( cOper, i, 1 ) ) == 'X' /* limpiar */
cString := strtran( cString, '1', '0' )
// CASE US_Upper( SubStr( cOper, i, 1 ) ) == '=' /* setear */
// cString := strtran( cString, '1', '0' )
// cString := SubStr( cString, 1, nBits - nBitImage ) + '1' + SubStr( cString, nBits - nBitImage + 2 )
OTHERWISE
MsgInfo( 'Error in operator from FUNCTION GridImage' )
ENDCASE
NEXT i
IF ( nAux := AScan( vImagesTranslateGrid, { |x| x[1] == CTON( cString, 2 ) } ) ) == 0
MsgInfo( 'Error en posicionamiento (2) en Funcion GridImage para el valor: ' + US_VarToStr( CTON( cString, 2 ) ) )
RETURN .F.
ENDIF
SetProperty( cWin, cGrid, 'Cell', nRow, nCol, vImagesTranslateGrid[ nAux ][ 2 ] )
RETURN .F.
FUNCTION AddSearchTxt()
LOCAL Aux, cValor, i
cValor:=VentanaMain.CSearch.DisplayValue
IF ! Empty( AllTrim(cValor)) .AND. !AddSearchTxtFound(cValor)
IF VentanaMain.CSearch.ItemCount < 15
VentanaMain.CSearch.AddItem('*')
ENDIF
Aux:=VentanaMain.CSearch.ItemCount
FOR i := (Aux - 1) TO 1 step -1
VentanaMain.CSearch.Item((i+1)):=VentanaMain.CSearch.Item(i)
NEXT
VentanaMain.CSearch.Item(1):=cValor
VentanaMain.CSearch.Value:=1
ENDIF
RETURN .T.
FUNCTION AddSearchTxtFound(email)
LOCAL i
FOR i := 1 TO VentanaMain.CSearch.ItemCount
IF bLastGlobalSearchCas
IF email == VentanaMain.CSearch.Item(i)
RETURN .T.
ENDIF
ELSE
IF US_Upper(email) == US_Upper(VentanaMain.CSearch.Item(i))
RETURN .T.
ENDIF
ENDIF
NEXT
RETURN .F.
FUNCTION LostRichEdit( tipo, nRecord )
LOCAL cAuxMemo
DO CASE
CASE tipo == 'PRG'
IF bPpoDisplayado
SetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nGridPrgLastRow, NCOLPRGOFFSET, cPpoCaretPrg )
ELSE
SetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', nGridPrgLastRow, NCOLPRGOFFSET, AllTrim( Str( VentanaMain.RichEditPRG.CaretPos ) ) )
ENDIF
DoMethod( 'VentanaMain', 'GPrgFiles', 'ColumnsAutoFitH' )
CASE tipo == 'HEA'
SetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', nGridHeaLastRow, NCOLHEAOFFSET, AllTrim( Str( VentanaMain.RichEditHea.CaretPos ) ) )
DoMethod( 'VentanaMain', 'GHeaFiles', 'ColumnsAutoFitH' )
CASE tipo == 'PAN'
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', nGridPanLastRow, NCOLPANOFFSET, AllTrim( Str( VentanaMain.RichEditPan.CaretPos ) ) )
DoMethod( 'VentanaMain', 'GPanFiles', 'ColumnsAutoFitH' )
CASE tipo == 'DBF'
SetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', nGridDbfLastRow, NCOLDBFOFFSET, AllTrim( Str( VentanaMain.RichEditDbf.CaretPos ) ) + ' ' + AllTrim( Str( nRecord ) ) )
DoMethod( 'VentanaMain', 'GDbfFiles', 'ColumnsAutoFitH' )
#ifdef QPM_SHG
CASE tipo == 'HLP'
IF nRecord > 0
SetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', nGridHlpLastRow, NCOLHLPOFFSET, AllTrim( Str( VentanaMain.RichEditHlp.CaretPos ) ) )
cAuxMemo := US_GetRichEditValue( 'VentanaMain', 'RichEditHlp', 'RTF' )
* SHG_LimpioRtf( @cAuxMemo )
SHG_SetField( 'SHG_MEMOT', nRecord, cAuxMemo )
/*
IF ! ( SHG_GetField( 'SHG_TYPE', nRecord ) == SHG_GetField( 'SHG_TYPET', nRecord ) ) .OR. ;
! ( SHG_GetField( 'SHG_TOPIC', nRecord ) == SHG_GetField( 'SHG_TOPICT', nRecord ) ) .OR. ;
! ( SHG_GetField( 'SHG_NICK', nRecord ) == SHG_GetField( 'SHG_NICKT', nRecord ) ) .OR. ;
! ( cAuxMemo == SHG_GetField( 'SHG_MEMO', nRecord ) ) .OR. ;
! ( SHG_GetField( 'SHG_KEYS', nRecord ) == SHG_GetField( 'SHG_KEYST', nRecord ) )
SetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', nGridHlpLastRow, NCOLHLPEDIT, 'D' )
ENDIF
*/
IF ! ( SHG_GetField( 'SHG_TYPE', nRecord ) == SHG_GetField( 'SHG_TYPET', nRecord ) ) .OR. ;
! ( SHG_GetField( 'SHG_TOPIC', nRecord ) == SHG_GetField( 'SHG_TOPICT', nRecord ) ) .OR. ;
! ( SHG_GetField( 'SHG_NICK', nRecord ) == SHG_GetField( 'SHG_NICKT', nRecord ) ) .OR. ;
oHlpRichEdit:lChanged .OR. ;
! ( SHG_GetField( 'SHG_KEYS', nRecord ) == SHG_GetField( 'SHG_KEYST', nRecord ) )
SetProperty( 'VentanaMain', 'GHlpFiles', 'Cell', nGridHlpLastRow, NCOLHLPEDIT, 'D' )
oHlpRichEdit:lChanged := .F.
ENDIF
DoMethod( 'VentanaMain', 'GHlpFiles', 'ColumnsAutoFitH' )
ENDIF
#endif
ENDCASE
RETURN .T.
FUNCTION FormQuickView()
QPM_MemoWrit( PUB_cProjectFolder + DEF_SLASH + '_' + PUB_cSecu + 'RunViewForm.Cng', ;
'PATH ' + US_ShortName( PUB_cProjectFolder ) + CRLF + ;
'SECUENCE ' + PUB_cSecu + CRLF + ;
'HARBOUR ' + US_ShortName( GetHarbourFolder() ) + DEF_SLASH + 'BIN'+DEF_SLASH+'HARBOUR.EXE' + CRLF + ;
'HARBOURINCLUDE ' + US_ShortName( GetHarbourFolder() ) + DEF_SLASH + 'INCLUDE' + CRLF + ;
'MINIGUIINCLUDE ' + US_ShortName(GetMiniGuiFolder()) + DEF_SLASH + 'INCLUDE' + CRLF + ;
'FORMINCLUDE ' + US_ShortName( US_FileNameOnlyPath( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', nGridPanLastRow, NCOLPANFULLNAME ) ) ) ) + CRLF + ;
'FORM ' + US_FileNameOnlyName( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', nGridPanLastRow, NCOLPANFULLNAME ) ) ) )
QPM_MemoWrit( PUB_cProjectFolder + DEF_SLASH + '_'+PUB_cSecu+'RunView.bat', US_ShortName( PUB_cQPM_Folder ) + DEF_SLASH + 'US_VIEW_' + GetHarbourSuffix() + GetMiniGuiSuffix() + '.EXE ' + US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_' + PUB_cSecu + 'RunViewForm.Cng' )
QPM_Execute( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_'+PUB_cSecu+'RunView.bat',, DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_HIDE )
// ferase( US_ShortName( PUB_cProjectFolder ) + DEF_SLASH + '_'+PUB_cSecu+'RunView.bat' )
RETURN .T.
FUNCTION QPM_Timer_Edit()
LOCAL i, FechaCnt, FileRC
FOR i := 1 TO VentanaMain.GPrgFiles.ItemCount
IF ! Empty( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGEDIT ) )
IF ! File( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGEDIT ) )
FechaCnt := Val( Right( US_FileNameOnlyName( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGEDIT ) ), 16 ) )
SetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGEDIT, '' )
GridImage( 'VentanaMain', 'GPrgFiles', i, NCOLPRGSTATUS, '-', PUB_nGridImgEdited )
IF FechaCnt < Val( US_FileDateTime( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) ) ) + '00' )
QPM_Wait( "RichEditDisplay( 'PRG', .T., " + Str( i ) + ')', 'Reloading ...' )
#ifdef QPM_HOTRECOVERY
QPM_Wait( "QPM_HotRecovery( 'ADD', 'EDIT', 'SRC', '" + GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGFULLNAME ) + "', '" + GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGRECOVERY ) + "' )", 'Creating Version File for Hot Recovery ...' )
SetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGRECOVERY, '' )
IF _IsControlDefined( 'HR_GridItemTargetPRG', 'WinHotRecovery' ) .AND. ;
i == GetProperty( 'WinHotRecovery', 'HR_GridItemTargetPRG', 'value' )
eVal( { || iif( !bPrgSorting .AND. !PUB_bLite, iif( HR_bNumberOnPrg, QPM_Wait( "QPM_HotChangeGrid( 'TARGET', 'ITEM', 'PRG' )", 'Comparing' ), QPM_HotChangeGrid( 'TARGET', 'ITEM', 'PRG' ) ), US_NOP() ) } )
ENDIF
#endif
ELSE
VentanaMain.RichEditPrg.BackColor := DEF_COLORBACKPRG
VentanaMain.RichEditPrg.FontColor := DEF_COLORFONTVIEW
#ifdef QPM_HOTRECOVERY
ferase( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGRECOVERY ) )
SetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', i, NCOLPRGRECOVERY, '' )
#endif
ENDIF
#ifdef QPM_HOTRECOVERY
IF _IsControlDefined( 'HR_GridItemTargetPRG', 'WinHotRecovery' )
GridImage( 'WinHotRecovery', 'HR_GridItemTargetPRG', i, DEF_N_ITEM_COLIMAGE, '-', PUB_nGridImgEdited )
ENDIF
#endif
ENDIF
ENDIF
NEXT i
FOR i := 1 TO VentanaMain.GHeaFiles.ItemCount
IF ! Empty( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAEDIT ) )
IF ! File( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAEDIT ) )
FechaCnt := Val( Right( US_FileNameOnlyName( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAEDIT ) ), 16 ) )
SetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAEDIT, '' )
GridImage( 'VentanaMain', 'GHeaFiles', i, NCOLHEASTATUS, '-', PUB_nGridImgEdited )
IF FechaCnt < Val( US_FileDateTime( ChgPathToReal( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) ) ) + '00' )
QPM_Wait( "RichEditDisplay( 'HEA', .T., " + Str( i ) + ')', 'Reloading ...' )
#ifdef QPM_HOTRECOVERY
QPM_Wait( "QPM_HotRecovery( 'ADD', 'EDIT', 'HEA', '" + GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEAFULLNAME ) + "', '" + GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEARECOVERY ) + "' )", 'Creating Version File for Hot Recovery ...' )
SetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEARECOVERY, '' )
IF _IsControlDefined( 'HR_GridItemTargetHea', 'WinHotRecovery' ) .AND. ;
i == GetProperty( 'WinHotRecovery', 'HR_GridItemTargetHea', 'value' )
eVal( { || iif( !bHeaSorting .AND. !PUB_bLite, iif( HR_bNumberOnHea, QPM_Wait( "QPM_HotChangeGrid( 'TARGET', 'ITEM', 'HEA' )", 'Comparing' ), QPM_HotChangeGrid( 'TARGET', 'ITEM', 'HEA' ) ), US_NOP() ) } )
ENDIF
#endif
ELSE
VentanaMain.RichEditHea.BackColor := DEF_COLORBACKHEA
VentanaMain.RichEditHea.FontColor := DEF_COLORFONTVIEW
#ifdef QPM_HOTRECOVERY
ferase( GetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEARECOVERY ) )
SetProperty( 'VentanaMain', 'GHeaFiles', 'Cell', i, NCOLHEARECOVERY, '' )
#endif
ENDIF
#ifdef QPM_HOTRECOVERY
IF _IsControlDefined( 'HR_GridItemTargetHea', 'WinHotRecovery' )
GridImage( 'WinHotRecovery', 'HR_GridItemTargetHea', i, DEF_N_ITEM_COLIMAGE, '-', PUB_nGridImgEdited )
ENDIF
#endif
ENDIF
ENDIF
NEXT i
FOR i := 1 TO VentanaMain.GPanFiles.ItemCount
IF ! Empty( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANEDIT ) )
IF ! File( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANEDIT ) )
FechaCnt := Val( Right( US_FileNameOnlyName( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANEDIT ) ), 16 ) )
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANEDIT, '' )
GridImage( 'VentanaMain', 'GPanFiles', i, NCOLPANSTATUS, '-', PUB_nGridImgEdited )
IF FechaCnt < Val( US_FileDateTime( ChgPathToReal( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) ) ) + '00' )
QPM_Wait( "RichEditDisplay( 'PAN', .T., " + Str( i ) + ')', 'Reloading ...' )
#ifdef QPM_HOTRECOVERY
QPM_Wait( "QPM_HotRecovery( 'ADD', 'EDIT', 'PAN', '" + GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANFULLNAME ) + "', '" + GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANRECOVERY ) + "' )", 'Creating Version File for Hot Recovery ...' )
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANRECOVERY, '' )
IF _IsControlDefined( 'HR_GridItemTargetPAN', 'WinHotRecovery' ) .AND. ;
i == GetProperty( 'WinHotRecovery', 'HR_GridItemTargetPAN', 'value' )
eVal( { || iif( !bPanSorting .AND. !PUB_bLite, iif( HR_bNumberOnPan, QPM_Wait( "QPM_HotChangeGrid( 'TARGET', 'ITEM', 'PAN' )", 'Comparing' ), QPM_HotChangeGrid( 'TARGET', 'ITEM', 'PAN' ) ), US_NOP() ) } )
ENDIF
#endif
ELSE
VentanaMain.RichEditPan.BackColor := DEF_COLORBACKPAN
VentanaMain.RichEditPan.FontColor := DEF_COLORFONTVIEW
#ifdef QPM_HOTRECOVERY
ferase( GetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANRECOVERY ) )
SetProperty( 'VentanaMain', 'GPanFiles', 'Cell', i, NCOLPANRECOVERY, '' )
#endif
ENDIF
#ifdef QPM_HOTRECOVERY
IF _IsControlDefined( 'HR_GridItemTargetPan', 'WinHotRecovery' )
GridImage( 'WinHotRecovery', 'HR_GridItemTargetPan', i, DEF_N_ITEM_COLIMAGE, '-', PUB_nGridImgEdited )
ENDIF
#endif
ENDIF
ENDIF
NEXT i
IF ! Empty( PUB_cProjectFolder ) .AND. US_IsDirectory( PUB_cProjectFolder )
IF VentanaMain.GPrgFiles.ItemCount > 0
FileRC := US_FileNameOnlyPathAndName( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) ) + '.RC'
IF ! File( FileRC )
FileRC := PUB_cProjectFolder + DEF_SLASH + US_FileNameOnlyName( ChgPathToReal( GetProperty( 'VentanaMain', 'GPrgFiles', 'Cell', 1, NCOLPRGFULLNAME ) ) ) + '.RC'
ENDIF
IF File( FileRC )
IF ! Empty( cEditControlFileRC )
IF ! File( cEditControlFileRC )
FechaCnt := Val( Right( US_FileNameOnlyName( cEditControlFileRC ), 16 ) )
cEditControlFileRC := ""
IF FechaCnt < Val( US_FileDateTime( ChgPathToReal( FileRC ) ) + '00' )
QPM_Wait( "RichEditDisplay( 'PAN', .T., " + Str( i ) + ')', 'Reloading ...' )
#ifdef QPM_HOTRECOVERY
QPM_Wait( "QPM_HotRecovery( 'ADD', 'EDIT', 'PAN', '" + FileRC + "', '" + HR_ControlFileRC + "' )", 'Creating Version File for Hot Recovery ...' )
HR_ControlFileRC := ""
IF _IsControlDefined( 'HR_GridItemTargetPRG', 'WinHotRecovery' ) .AND. ;
i == GetProperty( 'WinHotRecovery', 'HR_GridItemTargetPRG', 'value' )
Eval( { || iif( !bPrgSorting .AND. !PUB_bLite, iif( HR_bNumberOnPrg, QPM_Wait( "QPM_HotChangeGrid( 'TARGET', 'ITEM', 'PRG' )", 'Comparing' ), QPM_HotChangeGrid( 'TARGET', 'ITEM', 'PRG' ) ), US_NOP() ) } )
ENDIF
#endif
ELSE
VentanaMain.RichEditPAN.BackColor := DEF_COLORBACKPAN
VentanaMain.RichEditPAN.FontColor := DEF_COLORFONTVIEW
#ifdef QPM_HOTRECOVERY
FErase( HR_ControlFileRC )
HR_ControlFileRC := ""
#endif
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
FOR i := 1 TO VentanaMain.GDbfFiles.ItemCount
IF ! Empty( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFEDIT ) )
IF ! File( GetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFEDIT ) )
SetProperty( 'VentanaMain', 'GDbfFiles', 'Cell', i, NCOLDBFEDIT, '' )
GridImage( 'VentanaMain', 'GDbfFiles', i, NCOLDBFSTATUS, '-', PUB_nGridImgEdited )
IF VentanaMain.GDbfFiles.Value == i
QPM_Wait( "RichEditDisplay( 'DBF', .T., " + Str( i ) + ')', 'Reloading ...' )
ENDIF
ENDIF
ENDIF
NEXT i
RETURN .T.
FUNCTION CloseDbfAutoView()
IF select( 'DbfAlias' ) > 0
DBSelectarea( 'DbfAlias' )
DBCloseArea( 'DbfAlias' )
ENDIF
IF _IsControlDefined( 'DbfBrowse', 'VentanaMain' )
VentanaMain.DbfBrowse.Release()
ENDIF
RETURN .T.
FUNCTION DefineRichEditForNotDbfView( cTxt )
IF ! ( _IsControlDefined( 'DbfAutoView', 'VentanaMain' ) )
@ GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 72 ) / 100 ), 10 EDITBOX DbfAutoView ;
OF VentanaMain ;
WIDTH 0 ;
HEIGHT 0 ;
READONLY ;
FONT 'Courier New' ;
SIZE 9 ;
NOVSCROLL ;
NOHSCROLL
VentanaMain.TabFiles.AddControl( 'DbfAutoView', nPageDbf, GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 72 ) / 100 ), 10 )
VentanaMain.DbfAutoView.Width := GetDesktopRealWidth() - 364
VentanaMain.DbfAutoView.Height := ( GetDesktopRealHeight() - 237 ) - ( GetDesktopRealHeight() - int( ( GetDesktopRealHeight() * 72 ) / 100 ) )
ENDIF
VentanaMain.DbfAutoView.Value := CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
CRLF + ;
' '+cTxt
// VentanaMain.DbfAutoView.Refresh()
RETURN .T.
FUNCTION ProjectButtons( bEna )
VentanaMain.TProjectFolder.Enabled := bEna
VentanaMain.BProjectFolder.Enabled := bEna
VentanaMain.TRunProjectFolder.Enabled := bEna
VentanaMain.BRunProjectFolder.Enabled := bEna
VentanaMain.BPrgAdd.Enabled := bEna
#ifdef QPM_SHG
VentanaMain.THlpDatabase.Enabled := bEna
VentanaMain.BHlpDatabase.Enabled := bEna
VentanaMain.TWWWHlp.Enabled := bEna
#endif
RETURN bEna
FUNCTION AddLastOpen( cPrj )
LOCAL r, i, cont:=0
IF ( r := AScan( vLastOpen, { |x| US_Upper( x ) == US_Upper( cPrj ) } ) ) > 0
vLastOpen[r] := ''
ELSE
AEval( vLastOpen, { |x| iif( ! Empty( x ), cont ++, ) } )
IF cont > 19 // Tope de menu Items para proyectos abiertos anteriormente
FOR i := 1 TO Len( vLastOpen )
IF ! Empty( vLastOpen[i] )
vLastOpen[ i ] := ''
EXIT
ENDIF
NEXT
ENDIF
ENDIF
AAdd( vLastOpen, cPrj )
RETURN .T.
FUNCTION LOCALSearchContinue()
LOCAL RPTA := '', Ventana := US_WindowNameRandom( 'NEXT' )
DEFINE WINDOW &( Ventana ) ;
AT 0, 0 ;
WIDTH 265 ;
HEIGHT 175 ;
TITLE "Continue Search in DBF's Data" ;
MODAL ;
NOSYSMENU ;
FONT 'ARIAL' SIZE 10 ;
ON RELEASE US_NOP()
DEFINE LABEL LContinue
ROW 12
COL 20
WIDTH 240
VALUE "Continue Search From NEXT:"
END LABEL
DEFINE BUTTONEX BPosition
ROW 40
COL 20
WIDTH 65
HEIGHT 25
CAPTION 'Position'
ACTION ( RPTA := 'P', DoMethod( Ventana, 'Release' ) )
TOOLTIP 'Resume search from the last text found'
END BUTTONEX
DEFINE BUTTONEX BField
ROW 40
COL 100
WIDTH 65
HEIGHT 25
CAPTION 'Column'
ACTION ( RPTA := 'F', DoMethod( Ventana, 'Release' ) )
TOOLTIP 'Resume search from the the NEXT column'
END BUTTONEX
DEFINE BUTTONEX BRecord
ROW 40
COL 180
WIDTH 65
HEIGHT 25
CAPTION 'Record'
ACTION ( RPTA := 'R', DoMethod( Ventana, 'Release' ) )
TOOLTIP 'Resume search from the the NEXT record'
END BUTTONEX
DEFINE CHECKBOX Check_Continue
CAPTION 'Remember my election'
ROW 70
COL 50
WIDTH 185
VALUE .F.
TOOLTIP "Do not ask again until the search starts from the beginning"
ON CHANGE ( bDbfDataSearchAsk := ! ( GetProperty( Ventana, 'Check_Continue', 'value' ) ) )
END CHECKBOX
DEFINE BUTTONEX BCancel
ROW 110
COL 90
WIDTH 85
HEIGHT 25
CAPTION 'Cancel'
ACTION ( RPTA := '', DoMethod( Ventana, 'Release' ) )
TOOLTIP 'Cancel search'
END BUTTONEX
END WINDOW
CENTER WINDOW &Ventana
ACTIVATE WINDOW &Ventana
RETURN RPTA
FUNCTION CargoSearch()
AEval( vLastSearch, { |x| VentanaMain.CSearch.AddItem( x ) } )
RETURN NIL
FUNCTION QPM_DefinoMainMenu()
LOCAL i, cProj, bAction
DEFINE MAIN MENU OF VentanaMain
POPUP '&File'
ITEM '&Open/New' ACTION QPM_OpenProject()
ITEM '&Save' ACTION QPM_SaveProject()
ITEM 'Save &As ...' ACTION QPM_SaveAsProject()
IF Len( vLastOpen ) > 0
SEPARATOR
ENDIF
FOR i := Len( vLastOpen ) TO 1 step -1
cProj := vLastOpen[i]
IF ! Empty( cProj )
bAction := "{|| QPM_OpenProject( '" + cProj + "' ) }"
_DefineMenuItem( cProj, &bAction, NIL, iif( File( cProj ), 'GridTilde', 'GridEquis' ) )
ENDIF
NEXT
IF Len( vLastOpen ) > 0
SEPARATOR
ITEM '&Clear list' ACTION QPM_ClearLastOpenList()
ENDIF
SEPARATOR
ITEM '&EXIT' ACTION QPM_EXIT( .T. )
END POPUP
POPUP '&Edit'
#ifdef QPM_SHG
ITEM '&Copy' ACTION SHG_Send_Copy() NAME ItC_CopyM
ITEM 'C&ut' ACTION SHG_Send_Cut() NAME ItC_CutM
ITEM '&Paste' ACTION SHG_Send_Paste() NAME ItC_PasteM
#else
ITEM '&Copy' ACTION ( US_Send_Copy(), DoEvents() ) NAME ItC_CopyM
ITEM 'C&ut' ACTION ( US_Send_Cut(), DoEvents() ) NAME ItC_CutM
ITEM '&Paste' ACTION ( US_Send_Paste(), DoEvents() ) NAME ItC_PasteM
#endif
ITEM '&Select All' ACTION QPM_Send_SelectAll()
END POPUP
POPUP '&Debug'
ITEM '&Build' ACTION ( bBuildRun := .F., QPM_Build() )
ITEM 'B&uild and Run' ACTION ( bBuildRun := .T., QPM_Build() )
ITEM '&Run' ACTION ( bRunParm := .F., QPM_Run( bRunParm ) )
ITEM 'Run With &Parm' ACTION ( bRunParm := .T., QPM_Run( bRunParm ) )
SEPARATOR
IF PUB_bDebugActive
ITEM '&Debug' ACTION SwitchDebug() NAME DEBUG CHECKMARK 'GridTilde' CHECKED
ELSE
ITEM '&Debug' ACTION SwitchDebug() NAME DEBUG CHECKMARK 'GridTilde'
ENDIF
END POPUP
POPUP '&Settings'
ITEM PUB_MenuPrjOptions ACTION ProjectSettings()
SEPARATOR
ITEM PUB_MenuGblOptions ACTION GlobalSettings()
#ifdef QPM_HOTRECOVERYWINDOW
SEPARATOR
ITEM 'Hot Recovery &Options' ACTION QPM_HotRecoveryOptions()
#endif
SEPARATOR
ITEM 'Compress QPM Utilities' ACTION QPM_CompressUtilities()
ITEM 'Decompress QPM Utilities' ACTION QPM_DecompressUtilities()
SEPARATOR
IF PUB_bAutoInc
ITEM 'AutoInc Version Number' ACTION SwitchAutoInc() NAME AUTOINC CHECKMARK 'GridTilde' CHECKED
ELSE
ITEM 'AutoInc Version Number' ACTION SwitchAutoInc() NAME AUTOINC CHECKMARK 'GridTilde'
ENDIF
IF PUB_bHotKeys
ITEM "Hotkeys enabled" ACTION SwitchHotKeys() NAME HOTKEYS CHECKMARK 'GridTilde' CHECKED
ELSE
ITEM "Hotkeys enabled" ACTION SwitchHotKeys() NAME HOTKEYS CHECKMARK 'GridTilde'
ENDIF
END POPUP
#ifdef QPM_HOTRECOVERYWINDOW
POPUP '&Recovery'
ITEM '&Hot Recovery' ACTION QPM_HotRecoveryMenu()
SEPARATOR
ITEM 'Hot Recovery &Options' ACTION QPM_HotRecoveryOptions()
SEPARATOR
ITEM '&Import Versions from Another Hot Recovery Database' ACTION HotRecoveryImport()
SEPARATOR
ITEM '&Reindex Hot Recovery Database' ACTION QPM_Wait( 'HotRecoveryReindex()', 'Reindexing Hot Recovery Database' )
#ifdef QPM_SYNCRECOVERY
SEPARATOR
ITEM '&Sync Point Recovery' ACTION QPM_SyncRecoveryMenu()
#endif
END POPUP
#else
#ifdef QPM_SYNCRECOVERY
POPUP '&Recovery'
ITEM '&Sync Point Recovery' ACTION QPM_SyncRecoveryMenu()
END POPUP
#endif
#endif
POPUP '&Help'
ITEM 'QPM &Help' ACTION US_DisplayHelpTopic( GetActiveHelpFile(), 1 )
SEPARATOR
ITEM '&About' ACTION QPM_About()
SEPARATOR
ITEM '&License' ACTION QPM_Licence()
END POPUP
POPUP '&Links '
ITEM 'Go to topic Link in Help' ACTION US_DisplayHelpTopic( GetActiveHelpFile(), 'links' )
ITEM 'Go to QPM Home Site: ' + PUB_cQPM_Support_Link ACTION ShellExecute(0, 'open', 'rundll32.exe', 'url.dll,FileProtocolHandler ' + PUB_cQPM_Support_Link,,1)
END POPUP
POPUP '&OnlyForSupport '
ITEM 'Record Activity in Log ' + PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ACTION ( bLogActivity := !bLogActivity, VentanaMain.MLog.Checked := bLogActivity ) NAME MLog CHECKMARK 'GridTilde'
ITEM 'Clear Log File ' + PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ACTION ClearLog()
ITEM 'View Log File ' + PUB_cQPM_Folder + DEF_SLASH + 'QPM.log' ACTION ViewLog()
SEPARATOR
ITEM 'Do not delete auxiliary files' ACTION ( PUB_DeleteAux := ! PUB_DeleteAux, VentanaMain.MDelete.Checked := ! PUB_DeleteAux ) NAME MDelete CHECKMARK 'GridTilde'
SEPARATOR
ITEM 'Go to QPM Home Site: ' + PUB_cQPM_Support_Link ACTION ShellExecute( 0, 'open', 'rundll32.exe', 'url.dll,FileProtocolHandler ' + PUB_cQPM_Support_Link,, 1)
ITEM '&Mail to QPM_Support <' + PUB_cQPM_Support_eMail + '> ...' ACTION ShellExecute( 0, 'open', 'rundll32.exe', 'url.dll,FileProtocolHandler ' + 'mailto:' + PUB_cQPM_Support_eMail + '?cc=&bcc=' + '&subject=' + PUB_cQPM_Title + '&body=Thank%20for%20use%20' + PUB_cQPM_Title + '', NIL, 1)
END POPUP
END MENU
RELEASE CONTROL ToolBar_1 OF VentanaMain
DEFINE TOOLBAR ToolBar_1 OF VentanaMain BUTTONSIZE 50,35 FLAT
BUTTON OPEN ;
CAPTION 'Open/New' ;
PICTURE 'open' ;
ACTION QPM_OpenProject() ;
SEPARATOR ;
AUTOSIZE ;
DROPDOWN
DEFINE DROPDOWN MENU BUTTON OPEN OF VentanaMain
ITEM 'Open/New' ACTION QPM_OpenProject()
SEPARATOR
FOR i := Len( vLastOpen ) TO 1 step -1
cProj := vLastOpen[i]
IF ! Empty( cProj )
bAction := "{|| QPM_OpenProject( '" + cProj + "' ) }"
_DefineMenuItem( cProj, &bAction, NIL, iif( File( cProj ), 'GridTilde', 'GridEquis' ) )
ENDIF
NEXT
IF Len( vLastOpen ) > 0
SEPARATOR
ITEM '&Clear list' ACTION QPM_ClearLastOpenList()
ENDIF
END MENU
BUTTON SAVE ;
CAPTION 'Save' ;
PICTURE 'save' ;
ACTION QPM_SaveProject() ;
SEPARATOR ;
AUTOSIZE ;
DROPDOWN
DEFINE DROPDOWN MENU BUTTON SAVE OF VentanaMain
ITEM 'Save' ACTION QPM_SaveProject()
ITEM 'Save As' ACTION QPM_SaveAsProject()
END MENU
BUTTON BUILD ;
CAPTION 'Build' ;
PICTURE 'build' ;
ACTION QPM_Build() ;
SEPARATOR ;
AUTOSIZE ;
DROPDOWN
DEFINE DROPDOWN MENU BUTTON BUILD OF VentanaMain
ITEM 'Build' ACTION ( bBuildRun := .F., QPM_Build() )
ITEM 'Build and Run' ACTION ( bBuildRun := .T., QPM_Build() ) NAME bDropDownBandR
END MENU
BUTTON RUN ;
CAPTION 'Run' ;
PICTURE 'run' ;
ACTION QPM_Run( bRunParm ) ;
SEPARATOR ;
AUTOSIZE ;
DROPDOWN
DEFINE DROPDOWN MENU BUTTON RUN OF VentanaMain
ITEM 'Run' ACTION ( bRunParm := .F., QPM_Run( bRunParm ) )
ITEM 'Run With Parm' ACTION ( bRunParm := .T., QPM_Run( bRunParm ) )
END MENU
BUTTON HELP ;
CAPTION 'Help' ;
PICTURE 'HELPBMP' ;
ACTION US_DisplayHelpTopic( GetActiveHelpFile(), 1 ) ;
SEPARATOR
END TOOLBAR
RETURN .T.
FUNCTION GetPrj_Version()
RETURN PadL( GetProperty( 'VentanaMain', 'LVerVerNum', 'value' ), DEF_LEN_VER_VERSION, '0' ) + PadL( GetProperty( 'VentanaMain', 'LVerRelNum', 'value' ), DEF_LEN_VER_RELEASE, '0' ) + PadL( GetProperty( 'VentanaMain', 'LVerBuiNum', 'value' ), DEF_LEN_VER_BUILD, '0' )
#ifndef QPM_KILLER
FUNCTION QPM_SETPROCESSPRIORITY( x )
RETURN .T.
#endif
FUNCTION QPM_CompressUtilities()
LOCAL i, Out
QPM_Execute( PUB_cQPM_Folder + DEF_SLASH + 'US_UPX.EXE ' + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_RUN.EXE', '', DEF_QPM_EXEC_NOWAIT, DEF_QPM_EXEC_HIDE )
DO EVENTS
Out := '@ECHO OFF' + CRLF
Out += 'COPY ' + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_UPX.EXE ' + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'XYZ_UPX.EXE' + CRLF
FOR i := 1 TO Len(vExeList)
DO CASE
CASE US_Upper(right(vExeList[i], 04)) != '.EXE'
CASE US_Upper(right(vExeList[i], 07)) == 'QPM.EXE'
CASE US_Upper(right(vExeList[i], 10)) == 'US_RUN.EXE'
CASE US_Upper(right(vExeList[i], 13)) == 'US_IMPDEF.EXE'
CASE US_Upper(right(vExeList[i], 15)) == 'US_PEXPORTS.EXE'
CASE US_Upper(right(vExeList[i], 12)) == 'US_REIMP.EXE'
CASE US_Upper(right(vExeList[i], 13)) == 'US_IMPLIB.EXE'
CASE US_Upper(right(vExeList[i], 14)) == 'US_OBJDUMP.EXE'
CASE US_Upper(right(vExeList[i], 12)) == 'US_TDUMP.EXE'
OTHERWISE
Out += US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'XYZ_UPX.EXE --no-progress ' + vExeList[i] + CRLF
ENDCASE
NEXT
Out += 'DEL ' + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'XYZ_UPX.EXE' + CRLF
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'Compress.bat', Out )
QPM_Execute( PUB_cQPM_Folder + DEF_SLASH + 'Compress.bat', '', DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_NORMAL )
MsgInfo('Compression finished!' + CRLF + ;
'To compress QPM.EXE, you must close it and then manually do:' + CRLF + ;
'US_upx QPM.EXE')
RETURN NIL
FUNCTION QPM_DecompressUtilities()
LOCAL i, Out
QPM_Execute( PUB_cQPM_Folder + DEF_SLASH + 'US_UPX.EXE -d ' + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_RUN.EXE', '', DEF_QPM_EXEC_NOWAIT, DEF_QPM_EXEC_HIDE )
DO EVENTS
Out := '@ECHO OFF' + CRLF
Out += 'COPY ' + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'US_UPX.EXE ' + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'XYZ_UPX.EXE' + CRLF
FOR i := 1 TO Len( vExeList )
DO CASE
CASE US_Upper(right(vExeList[i], 04)) != '.EXE'
CASE US_Upper(right(vExeList[i], 07)) == 'QPM.EXE'
CASE US_Upper(right(vExeList[i], 10)) == 'US_RUN.EXE'
CASE US_Upper(right(vExeList[i], 13)) == 'US_IMPDEF.EXE'
CASE US_Upper(right(vExeList[i], 15)) == 'US_PEXPORTS.EXE'
CASE US_Upper(right(vExeList[i], 12)) == 'US_REIMP.EXE'
CASE US_Upper(right(vExeList[i], 13)) == 'US_IMPLIB.EXE'
CASE US_Upper(right(vExeList[i], 14)) == 'US_OBJDUMP.EXE'
CASE US_Upper(right(vExeList[i], 12)) == 'US_TDUMP.EXE'
OTHERWISE
Out += US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'XYZ_UPX.EXE -d --no-progress ' + vExeList[i] + CRLF
ENDCASE
NEXT
Out += 'DEL ' + US_ShortName(PUB_cQPM_Folder) + DEF_SLASH + 'XYZ_UPX.EXE' + CRLF
// Out += 'PAUSE' + CRLF
QPM_MemoWrit( PUB_cQPM_Folder + DEF_SLASH + 'Decompress.bat', Out )
QPM_Execute( PUB_cQPM_Folder + DEF_SLASH + 'Decompress.bat', '', DEF_QPM_EXEC_WAIT, DEF_QPM_EXEC_NORMAL )
MsgInfo('Decompression finished!' + CRLF + ;
'To decompress QPM.EXE, you must close it and then manually do:' + CRLF + ;
'US_UPX -d QPM.EXE')
RETURN NIL
/* eof */