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

* contrib/hbcuied/cu_object.prg
    + Implemented: source is generated.
      Provide source file name and screen identity and look into 
      the code it generates. Let me know if that can be refined 
      anyway.
This commit is contained in:
Pritpal Bedi
2011-08-18 01:12:40 +00:00
parent 1413ba9220
commit 4b0dacc5a6

View File

@@ -77,6 +77,8 @@ CLASS hbCUIEditor
DATA cSource INIT ""
DATA cScreen INIT ""
DATA nIndent INIT 3
DATA lEdited INIT .f.
DATA obj_ INIT {}
DATA scn_
@@ -172,7 +174,7 @@ CLASS hbCUIEditor
METHOD scrTextDel()
METHOD scrLoad( cSource, cScreen )
METHOD scrSave()
METHOD scrSave( lAsk )
METHOD scrAddBox( nObj )
METHOD scrAddFld( nObj )
@@ -252,41 +254,92 @@ METHOD hbCUIEditor:scrLoad( cSource, cScreen )
//----------------------------------------------------------------------//
METHOD hbCUIEditor:scrSave()
IF empty( ::cSource )
::cSource := VouchGetSome( "Source (.PRG) File", space( 40 ) )
IF empty( ::cSource )
METHOD hbCUIEditor:scrSave( lAsk )
LOCAL s, cP, o_, cSource, cScreen, prg_:={}
DEFAULT lAsk TO .f.
IF empty( ::cSource ) .OR. lAsk
cSource := trim( VouchGetSome( "Source (.PRG) File", pad( ::cSource, 40 ) ) )
IF empty( cSource )
RETURN NIL
ENDIF
::cSource := trim( cSource )
ENDIF
IF empty( ::cScreen )
::cScreen := VouchGetSome( "Screen Identity?", space( 13 ) )
IF empty( ::cScreen )
::cScreen := dtos( date() ) + left( time(), 5 )
IF empty( ::cScreen ) .OR. lAsk .OR. ::cScreen == "Untitled"
cScreen := trim( VouchGetSome( "Screen Identity?", pad( ::cScreen, 13 ) ) )
IF empty( cScreen )
cScreen := dtos( date() ) + left( time(), 5 )
ENDIF
::cScreen := cScreen
ENDIF
::cFile := ::cScreen
::cObject := ::cSource
#if 0
LOCAL rpt_:={}
aeval( ::obj_, {|e_| iif( e_[ OBJ_ROW ] == 0, NIL, aadd( rpt_, { '', 0, scrObj2str( e_ ) } ) ) } )
IF ! empty( ::aProperty )
aadd(rpt_, { '', 51, prpMdl2Str( ::aProperty ) } )
ENDIF
#endif
#if 0
IF !empty( ::aFields )
FOR i := 1 TO len( ::aFields )
aadd( rpt_,{ '', ::aFields[ i,1 ], prpFld2Str( ::aFields[ i ] ) } )
NEXT
ENDIF
#endif
::cObject := ::cSource
::cFile := ::cScreen
aadd( prg_, " " )
aadd( prg_, "/* $HB_SCREEN_BEGINS$ <" + trim( ::cScreen ) + "> */" )
aadd( prg_, " " )
FOR EACH o_ IN ::obj_
IF !empty( o_[ OBJ_TYPE ] )
aadd( prg_, "/// " + iif( empty( o_[ OBJ_F_TYPE ] ), ".", o_[ OBJ_F_TYPE ] ) + " " + hb_ntos( o_[ OBJ_F_LEN ] ) + " " + hb_ntos( o_[ OBJ_F_DEC ] ) )
s := "@ " + hb_ntos( o_[ OBJ_ROW ] ) + ", " + hb_ntos( o_[ OBJ_COL ] ) + " "
SWITCH o_[ OBJ_TYPE ]
CASE OBJ_O_FIELD
s += "GET " + o_[ OBJ_ID ] + " "
IF !empty( o_[ OBJ_F_PIC ] )
s += "PICTURE " + o_[ OBJ_F_PIC ] + " "
ENDIF
IF !empty( o_[ OBJ_COLOR ] )
s += "COLOR " + o_[ OBJ_COLOR ] + " "
ENDIF
IF !empty( o_[ OBJ_WHEN ] )
s += "WHEN " + o_[ OBJ_WHEN ] + " "
ENDIF
IF !empty( o_[ OBJ_VALID ] )
s += "VALID " + o_[ OBJ_VALID ] + " "
ENDIF
EXIT
CASE OBJ_O_BOX
s += ", " + hb_ntos( o_[ OBJ_TO_ROW ] ) + ", " + hb_ntos( o_[ OBJ_TO_COL ] ) + " BOX " + ;
'"' + o_[ OBJ_BOX_SHAPE ] + iif( o_[ OBJ_PATTERN ] == "CLEAR", "", " " ) + '"' + " "
IF ! empty( o_[ OBJ_COLOR ] )
s += "COLOR " + o_[ OBJ_COLOR ]
ENDIF
EXIT
CASE OBJ_O_TEXT
s += "SAY " + '"' + o_[ OBJ_TEXT ] + '"' + " "
IF ! empty( o_[ OBJ_COLOR ] )
s += "COLOR " + o_[ OBJ_COLOR ]
ENDIF
EXIT
ENDSWITCH
aadd( prg_, s )
aadd( prg_, " " )
ENDIF
NEXT
aadd( prg_, " " )
aadd( prg_, "/* $HB_SCREEN_ENDS$ <" + trim( ::cScreen ) + "> */" )
aadd( prg_, " " )
IF !empty( prg_ )
s := ""
cP := space( ::nIndent )
aeval( prg_, {|e| s += cP + e + chr( 13 ) + chr( 10 ) } )
hb_memowrit( ::cSource, s )
alert( "Screen is saved in " + ::cSource )
ENDIF
RETURN Self
//----------------------------------------------------------------------//
@@ -441,6 +494,9 @@ METHOD hbCUIEditor:operate()
/* Save Report */
CASE ::nLastKey == K_ESC
IF alert( "Do you want to exit ?", { "Yes","No" } ) == 1
IF ::lEdited
::scrSave()
ENDIF
EXIT
ENDIF
CASE ::nLastKey == K_CTRL_ENTER
@@ -2035,6 +2091,8 @@ METHOD hbCUIEditor:scrAddTxt( nMode )
::xRefresh := OBJ_REFRESH_LINE
::lEdited := .t.
RETURN NIL
//----------------------------------------------------------------------//
@@ -2274,6 +2332,7 @@ METHOD hbCUIEditor:scrAddBox( nObj )
::scrOrdObj()
::scrMsg()
::xRefresh := OBJ_REFRESH_ALL
::lEdited := .t.
RETURN NIL
@@ -2328,6 +2387,7 @@ METHOD hbCUIEditor:scrAddFld( nObj )
::nObjSelected := 0
::xRefresh := OBJ_REFRESH_LINE
::nMode := 0
::lEdited := .t.
ENDIF
IF nObj > 0
@@ -2376,6 +2436,8 @@ METHOD hbCUIEditor:scrGetProperty( nObj )
ENDSWITCH
::lEdited := .t.
RETURN SELF
/*----------------------------------------------------------------------*/