2011-08-23 08:08 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

* contrib/hbcuied/cu_object.prg
  * contrib/hbcuied/cu_utlty.prg
    * Inplace: building blocks of extended help screens.
    + GETS are now formatted nicely when writing back to PRG.
This commit is contained in:
Pritpal Bedi
2011-08-23 15:12:54 +00:00
parent 97708458d5
commit 736653320c
3 changed files with 269 additions and 193 deletions

View File

@@ -16,6 +16,12 @@
The license applies to all entries newer than 2009-04-28.
*/
2011-08-23 08:08 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbcuied/cu_object.prg
* contrib/hbcuied/cu_utlty.prg
* Inplace: building blocks of extended help screens.
+ GETS are now formatted nicely when writing back to PRG.
2011-08-22 18:06 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbcuied/cu_main.prg
* contrib/hbcuied/cu_object.prg

View File

@@ -123,7 +123,6 @@ CLASS hbCUIEditor
DATA aObjId INIT { 'Bitmap','Line','Text','Field','Expression','BitMap' }
DATA xRefresh INIT OBJ_REFRESH_ALL
DATA nObjCopied INIT 0
DATA cBoxShape INIT "ÚÄ¿³ÙÄÀ³"
DATA aProperty INIT {}
DATA lGraphics INIT .f.
DATA aTextBlock INIT {}
@@ -242,25 +241,25 @@ METHOD hbCUIEditor:scrLoad( lAsk )
LOCAL scr_:={}
IF ::lEdited
IF alert( "Screen has been edited, save ?", { "Yes","No" } ) == 1
IF alert( "Screen has been edited, save ?", { "Yes","No" } ) == 1
::scrSave( .f. )
ENDIF
ENDIF
ENDIF
ENDIF
IF lAsk
cSource := alltrim( VouchGetSome( "Source (.PRG)", pad( ::cSource, 50 ) ) )
IF empty( cSource )
RETURN NIL
ENDIF
ENDIF
IF ! ( cSource == ::cSource )
::obj_:={}
::cSource := cSource
ENDIF
::cSource := cSource
ENDIF
ENDIF
IF empty( ::cSource )
RETURN Self
ENDIF
RETURN Self
ENDIF
IF lAsk .OR. empty( ::cScreen )
cBuffer := hb_memoread( ::cSource )
aMatches := hb_regExAll( "HB_SCREEN_BEGINS", cBuffer, .f., .f., 0, 1, .f. )
@@ -269,25 +268,25 @@ METHOD hbCUIEditor:scrLoad( lAsk )
IF ( n := hb_at( "<", cBuffer, aMatch[ 2 ] ) ) > 0
IF ( n1 := hb_at( ">", cBuffer, aMatch[ 2 ] ) ) > 0
aadd( scr_, substr( cBuffer, n + 1, n1 - n - 1 ) )
ENDIF
ENDIF
NEXT
ENDIF
ENDIF
ENDIF
NEXT
ENDIF
IF ! empty( scr_ )
B_MSG "Select a Screen" CHOOSE scr_ RESTORE SHADOW CENTER INTO nSel
IF nSel > 0
::cScreen := scr_[ nSel ]
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
IF ! empty( cBuffer)
::obj_:= {}
::scrBuildFromBuffer( cBuffer, ::cScreen )
::scrBuildFromBuffer( cBuffer, ::cScreen )
::xRefresh := OBJ_REFRESH_ALL
::lEdited := .f.
ENDIF
ENDIF
::cScreen := iif( empty( ::cScreen ), "", ::cScreen )
RETURN Self
@@ -297,7 +296,7 @@ METHOD hbCUIEditor:scrLoad( lAsk )
METHOD hbCUIEditor:scrBuildFromBuffer( cBuffer, cScreen )
LOCAL cTokenB := "/* HB_SCREEN_BEGINS <" + cScreen + "> */"
LOCAL cTokenE := "/* HB_SCREEN_ENDS <" + cScreen + "> */"
LOCAL cCode, aCode, cLine, aAttr, aMatch, aMatches, nStart, nEnd, nLen, s, n, o_, a_
LOCAL cCode, aCode, cLine, aAttr, aMatch, aMatches, nStart, nEnd, nLen, s, n, o_, a_
IF ( nStart := at( cTokenB, cBuffer ) ) > 0
IF ( nEnd := at( cTokenE, cBuffer ) ) > 0
@@ -305,7 +304,7 @@ METHOD hbCUIEditor:scrBuildFromBuffer( cBuffer, cScreen )
aCode := hb_aTokens( strtran( cCode, chr( 13 ), chr( 10 ) ), chr( 10 ) )
IF ! empty( aCode )
aAttr := {}
FOR EACH cLine IN aCode
FOR EACH cLine IN aCode
cLine := alltrim( cLine )
IF ! empty( cLine )
IF left( cLine, 3 ) == "///"
@@ -318,11 +317,11 @@ METHOD hbCUIEditor:scrBuildFromBuffer( cBuffer, cScreen )
aAttr[ 4 ] := val( aAttr[ 4 ] )
aAttr[ 5 ] := val( aAttr[ 5 ] )
aAttr[ 6 ] := strtran( aAttr[ 6 ], "~", " " )
ELSE
ELSE
SWITCH aAttr[ 2 ]
CASE OBJ_O_BOX
CASE OBJ_O_BOX
aMatches := hb_regExAll( "^@|\bBOX\b|\bCOLOR\b", cLine, .f., .f., 0, 1, .f. )
IF ! empty( nLen := len( aMatches ) )
o_:= ::scrObjBlank()
@@ -330,112 +329,112 @@ METHOD hbCUIEditor:scrBuildFromBuffer( cBuffer, cScreen )
o_[ OBJ_TYPE ] := OBJ_O_BOX
o_[ OBJ_F_LEN ] := 9
o_[ OBJ_MDL_F_TYPE ] := 62
FOR EACH aMatch IN aMatches
SWITCH alltrim( upper( aMatch[ 1 ] ) )
CASE "@"
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
CASE "@"
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
s := strtran( s, " ,", "," )
s := strtran( s, ", ", "," )
a_:= hb_aTokens( s, "," )
o_[ OBJ_ROW ] := val( alltrim( a_[ 1 ] ) ) + 1
o_[ OBJ_COL ] := val( alltrim( a_[ 2 ] ) ) + 1
o_[ OBJ_TO_ROW ] := val( alltrim( a_[ 3 ] ) ) + 1
o_[ OBJ_TO_COL ] := val( alltrim( a_[ 4 ] ) ) + 1
EXIT
CASE "BOX"
EXIT
CASE "BOX"
IF nLen > 2
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
ELSE
ELSE
s := substr( cLine, aMatch[ 3 ] + 1 )
ENDIF
ENDIF
s := alltrim( s )
s := strtran( s, '"', "" )
o_[ OBJ_BOX_SHAPE ] := substr( s, 1, 8 )
o_[ OBJ_PATTERN ] := iif( len( s ) == 9, "FILLED", "CLEAR" )
EXIT
EXIT
CASE "COLOR"
o_[ OBJ_COLOR ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) )
EXIT
ENDSWITCH
EXIT
ENDSWITCH
NEXT
aadd( ::obj_, o_ )
ENDIF
EXIT
CASE OBJ_O_TEXT
aadd( ::obj_, o_ )
ENDIF
EXIT
CASE OBJ_O_TEXT
aMatches := hb_regExAll( "^@|\bSAY\b|\bCOLOR\b", cLine, .f., .f., 0, 1, .f. )
IF ! empty( nLen := len( aMatches ) )
o_:= ::scrObjBlank()
//
o_[ OBJ_TYPE ] := OBJ_O_TEXT
o_[ OBJ_F_TYPE ] := "C"
FOR EACH aMatch IN aMatches
SWITCH alltrim( upper( aMatch[ 1 ] ) )
CASE "@"
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
CASE "@"
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
s := strtran( s, ", ", "," )
a_:= hb_aTokens( s, "," )
o_[ OBJ_ROW ] := val( alltrim( a_[ 1 ] ) ) + 1
o_[ OBJ_COL ] := val( alltrim( a_[ 2 ] ) ) + 1
EXIT
CASE "SAY"
EXIT
CASE "SAY"
IF nLen > 2
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
ELSE
ELSE
s := substr( cLine, aMatch[ 3 ] + 1 )
ENDIF
ENDIF
IF ! empty( aAttr[ 6 ] )
o_[ OBJ_TEXT ] := aAttr[ 6 ]
o_[ OBJ_ID ] := s
s := aAttr[ 6 ]
ELSE
s := aAttr[ 6 ]
ELSE
s := alltrim( s )
s := substr( s, 2, len( s ) - 2 )
o_[ OBJ_TEXT ] := s
ENDIF
ENDIF
o_[ OBJ_TO_ROW ] := o_[ OBJ_ROW ]
o_[ OBJ_TO_COL ] := o_[ OBJ_COL ] + len( s )
o_[ OBJ_F_LEN ] := len( s )
EXIT
EXIT
CASE "COLOR"
o_[ OBJ_COLOR ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) )
ENDSWITCH
NEXT
aadd( ::obj_, o_ )
aadd( ::obj_, o_ )
ENDIF
EXIT
CASE OBJ_O_FIELD
EXIT
CASE OBJ_O_FIELD
aMatches := hb_regExAll( "^@|\bGET\b|\bPICTURE\b|\bCOLOR\b|\bWHEN\b|\bVALID\b", cLine, .f., .f., 0, 1, .f. )
IF ! empty( nLen := len( aMatches ) )
o_:= ::scrObjBlank()
//
o_[ OBJ_TYPE ] := OBJ_O_FIELD
FOR EACH aMatch IN aMatches
SWITCH alltrim( upper( aMatch[ 1 ] ) )
CASE "@"
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
CASE "@"
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
s := strtran( s, ", ", "," )
a_:= hb_aTokens( s, "," )
o_[ OBJ_ROW ] := val( alltrim( a_[ 1 ] ) ) + 1
o_[ OBJ_COL ] := val( alltrim( a_[ 2 ] ) ) + 1
o_[ OBJ_TO_ROW ] := o_[ OBJ_ROW ]
@@ -443,78 +442,78 @@ METHOD hbCUIEditor:scrBuildFromBuffer( cBuffer, cScreen )
o_[ OBJ_F_TYPE ] := aAttr[ 3 ]
o_[ OBJ_F_LEN ] := aAttr[ 4 ]
o_[ OBJ_F_DEC ] := aAttr[ 5 ]
EXIT
CASE "GET"
EXIT
CASE "GET"
IF nLen > 2
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
s := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
ELSE
ELSE
s := substr( cLine, aMatch[ 3 ] + 1 )
ENDIF
ENDIF
s := alltrim( s )
o_[ OBJ_ID ] := s
o_[ OBJ_ID ] := s
o_[ OBJ_EQN ] := padc( s, aAttr[ 4 ] )
EXIT
EXIT
CASE "PICTURE"
IF aMatch:__enumIndex() < len( aMatches )
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
o_[ OBJ_F_PIC ] := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
ELSE
ELSE
o_[ OBJ_F_PIC ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) )
ENDIF
EXIT
ENDIF
EXIT
CASE "COLOR"
IF aMatch:__enumIndex() < len( aMatches )
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
o_[ OBJ_COLOR ] := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
ELSE
ELSE
o_[ OBJ_COLOR ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) )
ENDIF
EXIT
ENDIF
EXIT
CASE "WHEN"
IF aMatch:__enumIndex() < len( aMatches )
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
o_[ OBJ_WHEN ] := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
ELSE
ELSE
o_[ OBJ_WHEN ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) )
ENDIF
EXIT
ENDIF
EXIT
CASE "VALID"
IF aMatch:__enumIndex() < len( aMatches )
n := aMatches[ aMatch:__enumIndex() + 1, 2 ]
o_[ OBJ_VALID ] := alltrim( substr( cLine, aMatch[ 3 ] + 1, n - 1 - aMatch[ 3 ] ) )
ELSE
ELSE
o_[ OBJ_VALID ] := alltrim( substr( cLine, aMatch[ 3 ] + 1 ) )
ENDIF
EXIT
ENDIF
EXIT
ENDSWITCH
NEXT
aadd( ::obj_, o_ )
aadd( ::obj_, o_ )
ENDIF
EXIT
ENDSWITCH
EXIT
ENDSWITCH
aAttr := {}
ENDIF
ENDIF
NEXT
ENDIF
ENDIF
ENDIF
RETURN Self
ENDIF
ENDIF
NEXT
ENDIF
ENDIF
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/
METHOD hbCUIEditor:scrSave( lAsk )
LOCAL s, o_, cSource, cScreen, nLenSay, nLenPic, nLenClr, nLenWhn, nLenVld, nLenGet
local prg_:={}
@@ -538,21 +537,21 @@ METHOD hbCUIEditor:scrSave( lAsk )
ENDIF
nLenSay := nLenPic := nLenClr := nLenWhn := nLenVld := nLenGet := 0
aeval( ::obj_, {|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_FIELD, nLenGet := max( len( e_[ OBJ_ID ] ), nLenGet ), ;
iif( e_[ OBJ_TYPE ] == OBJ_O_TEXT , nLenSay := max( len( e_[ OBJ_TEXT ] ), nLenSay ), NIL ) ) } )
nLenSay := iif( empty( nLenSay ), 0, nLenSay + 2 )
aeval( ::obj_, {|e_| nLenClr := max( len( e_[ OBJ_COLOR ] ), nLenClr ) } )
aeval( ::obj_, {|e_| nLenPic := max( len( e_[ OBJ_F_PIC ] ), nLenPic ) } )
aeval( ::obj_, {|e_| nLenWhn := max( len( e_[ OBJ_WHEN ] ), nLenWhn ) } )
aeval( ::obj_, {|e_| nLenVld := max( len( e_[ OBJ_VALID ] ), nLenVld ) } )
aadd( prg_, "/* HB_SCREEN_BEGINS <" + ::cScreen + "> */" )
aadd( prg_, " " )
FOR EACH o_ IN ::obj_
IF ! empty( o_[ OBJ_TYPE ] )
aadd( prg_, "/// " + hb_ntos( o_:__enumIndex() ) + " " + hb_ntos( o_[ OBJ_TYPE ] ) + " " + ;
o_[ OBJ_F_TYPE ] + " " + N_TRIM( o_[ OBJ_F_LEN ] ) + " " + N_TRIM( o_[ OBJ_F_DEC ] ) + ;
iif( o_[ OBJ_TYPE ] == OBJ_O_TEXT, " " + strtran( o_[ OBJ_ID ], " ", "~" ), "" ) )
@@ -565,29 +564,29 @@ METHOD hbCUIEditor:scrSave( lAsk )
s += "GET " + pad( o_[ OBJ_ID ], nLenGet ) + " "
IF !empty( o_[ OBJ_F_PIC ] )
s += "PICTURE " + pad( o_[ OBJ_F_PIC ], nLenPic ) + " "
ELSE
ELSE
IF nLenPic > 0
s += space( 8 + nLenPic + 1 )
ENDIF
ENDIF
ENDIF
IF !empty( o_[ OBJ_COLOR ] )
s += "COLOR " + pad( o_[ OBJ_COLOR ], nLenClr ) + " "
ELSE
ELSE
IF nLenClr > 0
s += space( 6 + nLenClr + 1 )
ENDIF
ENDIF
ENDIF
IF !empty( o_[ OBJ_WHEN ] )
s += "WHEN " + pad( o_[ OBJ_WHEN ], nLenWhn ) + " "
ELSE
ELSE
IF nLenWhn > 0
s += space( 5 + nLenWhn + 1 )
ENDIF
ENDIF
ENDIF
IF !empty( o_[ OBJ_VALID ] )
s += "VALID " + pad( o_[ OBJ_VALID ], nLenVld ) + " "
ELSE
s += space( 6 + nLenVld )
ELSE
s += space( 6 + nLenVld )
ENDIF
EXIT
@@ -602,9 +601,9 @@ METHOD hbCUIEditor:scrSave( lAsk )
CASE OBJ_O_TEXT
IF ! empty( o_[ OBJ_ID ] )
s += "SAY " + o_[ OBJ_ID ] + " "
ELSE
ELSE
s += "SAY " + pad( '"' + o_[ OBJ_TEXT ] + '"', nLenSay ) + " "
ENDIF
ENDIF
IF ! empty( o_[ OBJ_COLOR ] )
s += "COLOR " + o_[ OBJ_COLOR ]
ENDIF
@@ -628,7 +627,7 @@ METHOD hbCUIEditor:scrSave( lAsk )
METHOD hbCUIEditor:scrBuildFunction( prg_ )
LOCAL s
s := hb_eol()
s += "FUNCTION hbcui_" + lower( strtran( ::cScreen, " ", "_" ) ) + "()" + hb_eol()
s += hb_eol()
@@ -637,17 +636,17 @@ METHOD hbCUIEditor:scrBuildFunction( prg_ )
s += " RETURN NIL"
s += hb_eol()
RETURN s
RETURN s
/*----------------------------------------------------------------------*/
METHOD hbCUIEditor:scrBuildSource( prg_, nIndent )
LOCAL cP, s := ""
cP := space( nIndent )
aeval( prg_, {|e| s += cP + e + hb_eol() } )
s := substr( s, 1, len( s ) - len( hb_eol() ) )
RETURN s
/*----------------------------------------------------------------------*/
@@ -664,29 +663,29 @@ METHOD hbCUIEditor:scrUpdateSource( prg_ )
nEnd := at( cTokenE, cBuffer )
IF nEnd == 0
nEnd := nStart + len( cTokenB )
ELSE
ELSE
nEnd += len( cTokenE )
ENDIF
ENDIF
cTmp := substr( cBuffer, 1, nStart - 1 )
nIndent := nStart - hb_rat( hb_eol(), cTmp ) - len( hb_eol() )
s := ::scrBuildSource( prg_, nIndent )
s := substr( cBuffer, 1, nStart - nIndent - 1 ) + s + substr( cBuffer, nEnd )
ELSE
s := ::scrBuildFunction( prg_ )
s := cBuffer + hb_eol() + s
s := cBuffer + hb_eol() + s
ENDIF
ELSE
s := ::scrBuildFunction( prg_)
ENDIF
hb_memowrit( ::cSource, s )
::lEdited := .f.
RETURN Self
/*----------------------------------------------------------------------*/
@@ -742,7 +741,6 @@ METHOD hbCUIEditor:scrConfig()
::aObjId := { 'Bitmap','Line','Text','Field','Expression','BitMap' }
::xRefresh := OBJ_REFRESH_ALL
::nObjCopied := 0
::cBoxShape := 'ÚÄ¿³ÙÄÀ³'
::aProperty := {}
::lGraphics := .f.
::aTextBlock := {}
@@ -842,7 +840,7 @@ METHOD hbCUIEditor:operate()
IF ::lEdited
IF alert( "Screen has been edited, do you want to save ?", { "Yes","No" } ) == 1
::scrSave()
ENDIF
ENDIF
ENDIF
EXIT
ENDIF
@@ -906,7 +904,7 @@ METHOD hbCUIEditor:operate()
::scrAddTxt( 1 )
CASE ::nLastKey == K_F1 // Help
help( 'KEYS' )
help()
CASE ::nLastKey == K_F3 // OBJECT
::scrObject()
CASE ::nLastKey == K_F7 // Copy
@@ -1011,7 +1009,7 @@ METHOD hbCUIEditor:operate()
::scrOnFirstCol( nObj, { OBJ_O_BOX } )
::scrMsg( "Box is Selected. Use Arrow Keys to Move, Enter to Finish !" )
::lEdited := .t.
ELSEIF nObj > 0 .AND. ::nLastKey == K_F6 .AND. ! ::objIsBox( nObj )
::nMode := OBJ_MODE_SELECT
::nObjSelected := nObj
@@ -1381,21 +1379,21 @@ METHOD hbCUIEditor:scrOrdObj()
FOR EACH a_ IN ::obj_
IF a_[ OBJ_TYPE ] == OBJ_O_BOX
aadd( d_, a_ )
ENDIF
NEXT
ENDIF
NEXT
FOR EACH a_ IN ::obj_
IF a_[ OBJ_TYPE ] == OBJ_O_TEXT
aadd( d_, a_ )
ENDIF
NEXT
ENDIF
NEXT
FOR EACH a_ IN ::obj_
IF a_[ OBJ_TYPE ] == OBJ_O_FIELD
aadd( d_, a_ )
ENDIF
NEXT
ENDIF
NEXT
::obj_:= d_
RETURN Self
//----------------------------------------------------------------------//

View File

@@ -563,12 +563,12 @@ FUNCTION VouchMenuM( id,nInit,msg )
aadd( mnu_, { "B_SINGLE" , B_SINGLE } )
aadd( mnu_, { "B_DOUBLE" , B_DOUBLE } )
aadd( mnu_, { "B_SINGLE_DOUBLE" , B_SINGLE_DOUBLE } )
aadd( mnu_, { "B_DOUBLE_SINGLE" , B_DOUBLE_SINGLE } )
aadd( mnu_, { "B_DOUBLE_SINGLE" , B_DOUBLE_SINGLE } )
CASE id == "MN_FILL"
aadd( mnu_, { "Clear" , "CLEAR" } )
aadd( mnu_, { "Filled", "FILLED" } )
ENDCASE
aeval( mnu_,{|e_| aadd( m_,e_[ 1 ] ) } )
@@ -1087,58 +1087,130 @@ FUNCTION VouchGetSome( msg, vrb, pass, pic, set_, wh, vl, nLastKey )
/*----------------------------------------------------------------------*/
FUNCTION help( cToken )
LOCAL nKey
LOCAL aScr := VouchWndSave( 0, 0, maxrow(), maxcol() )
DEFAULT cToken TO SetHelpStr()
IF empty( cToken )
cToken := "KEYS"
ENDIF
Vstk_push()
SetCursor( 0 )
SetColor( "W/B" )
CLS
SetColor( "W/B" )
DispBegin()
CLS
SWITCH Upper( cToken )
CASE "KEYS"
/* HB_SCREEN_BEGINS <Keys> */
/// 1 3 C 15 0
@ 1, 2 SAY "F1 This screen"
/// 2 3 C 34 0
@ 2, 2 SAY "F4 Properties of hilighted object"
/// 3 3 C 25 0
@ 3, 2 SAY "F5 Edit hilighted object"
/// 4 3 C 27 0
@ 4, 2 SAY "F6 Select hilighted object"
/// 5 3 C 25 0
@ 5, 2 SAY "F7 Copy hilighted object"
/// 6 3 C 23 0
@ 6, 2 SAY "F8 Paste copied object"
/// 7 3 C 27 0
@ 8, 2 SAY "F10 Define a new GET object"
/// 8 3 C 34 0
@ 7, 2 SAY "F9 Start to define new box object"
/// 9 3 C 27 0
@ 10, 2 SAY "Del Delete hilighted object"
/// 10 3 C 30 0
@ 12, 2 SAY "Ctrl+F6 Begins block selection"
/// 11 3 C 52 0
@ 14, 2 SAY "Ctrl+F8 Cut and paste selected block at new location"
/// 12 3 C 43 0
@ 13, 2 SAY "Ctrl+F7 Copy selected block at new location"
/// 13 3 C 34 0
@ 24, 2 SAY "Press ESC to return to designer..." COLOR "GR+/B"
/// 14 3 C 26 0
@ 20, 2 SAY "Alt+S Save designed screen"
/// 15 3 C 25 0
@ 21, 2 SAY "Alt+L Load another screen"
/// 1 3 C 28 0
@ 20, 2 SAY "Alt+S Save designed screen"
/// 2 3 C 27 0
@ 21, 2 SAY "Alt+L Load another screen"
/// 3 3 C 76 0
@ 26, 2 SAY " ESC-Designer 1-General 2-Selective Input 3-Block Selections " COLOR "N/W*"
/// 4 3 C 19 0
@ 3, 2 SAY "F1 This screen"
/// 5 3 C 38 0
@ 4, 2 SAY "F4 Properties of hilighted object"
/// 6 3 C 29 0
@ 5, 2 SAY "F5 Edit hilighted object"
/// 7 3 C 31 0
@ 6, 2 SAY "F6 Select hilighted object"
/// 8 3 C 29 0
@ 7, 2 SAY "F7 Copy hilighted object"
/// 9 3 C 27 0
@ 8, 2 SAY "F8 Paste copied object"
/// 10 3 C 38 0
@ 9, 2 SAY "F9 Start to define new box object"
/// 11 3 C 31 0
@ 10, 2 SAY "F10 Define a new GET object"
/// 12 3 C 31 0
@ 12, 2 SAY "Del Delete hilighted object"
/// 13 3 C 30 0
@ 14, 2 SAY "Ctrl_F6 Begins block selection"
/// 14 3 C 43 0
@ 15, 2 SAY "Ctrl_F7 Copy selected block at new location"
/// 15 3 C 52 0
@ 16, 2 SAY "Ctrl_F8 Cut and paste selected block at new location"
/// 16 3 C 76 0
@ 1, 2 SAY " Keys " COLOR "N/W*"
/* HB_SCREEN_ENDS <Keys> */
EXIT
CASE "GENERAL-1"
/* HB_SCREEN_BEGINS <General-1> */
/// 1 3 C 76 0
@ 26, 2 SAY " ESC-Designer 1-General 2-Selective Input 3-Block Selections " COLOR "N/W*"
/// 2 3 C 76 0
@ 1, 2 SAY " General " COLOR "N/W*"
/* HB_SCREEN_ENDS <General-1> */
EXIT
CASE "GENERAL-2"
/* HB_SCREEN_BEGINS <General-2> */
/// 1 3 C 76 0
@ 26, 2 SAY " ESC-Designer 1-General 2-Selective Input 3-Block Selections " COLOR "N/W*"
/// 2 3 C 76 0
@ 1, 2 SAY " Selective Input " COLOR "N/W*"
/* HB_SCREEN_ENDS <General-2> */
EXIT
CASE "GENERAL-3"
/* HB_SCREEN_BEGINS <General-3> */
/// 1 3 C 76 0
@ 26, 2 SAY " ESC-Designer 1-General 2-Selective Input 3-Block Selections " COLOR "N/W*"
/// 2 3 C 76 0
@ 1, 2 SAY " Block Selection " COLOR "N/W*"
/* HB_SCREEN_ENDS <General-3> */
EXIT
ENDSWITCH
DO WHILE inkey() != K_ESC; ENDDO
DispEnd()
DO WHILE .t.
nKey := inkey()
IF nKey == K_ESC
SetHelpStr( "" )
EXIT
ELSEIF nKey == 49
SetHelpStr( "General-1" )
__keyboard( chr( K_F1 ) )
EXIT
ELSEIF nKey == 50
SetHelpStr( "General-2" )
__keyboard( chr( K_F1 ) )
EXIT
ELSEIF nKey == 51
SetHelpStr( "General-3" )
__keyboard( chr( K_F1 ) )
EXIT
ENDIF
ENDDO
VouchWndRest( aScr )
Vstk_pop()
RETURN NIL
/*----------------------------------------------------------------------*/
FUNCTION SetHelpStr( cStr )
LOCAL o_str
STATIC s_str := ""
o_str := s_str
IF hb_isChar( cStr )
s_str := cStr
ENDIF
RETURN o_str
/*----------------------------------------------------------------------*/