2011-08-19 16:38 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

* contrib/hbcuied/cu_object.prg
    ! Refined: save/load interface with proper validation.
      At this point hbCuiEd is in a usable state.
This commit is contained in:
Pritpal Bedi
2011-08-19 23:40:37 +00:00
parent c877a0a86e
commit beb74b718e
2 changed files with 36 additions and 36 deletions

View File

@@ -16,6 +16,11 @@
The license applies to all entries newer than 2009-04-28.
*/
2011-08-19 16:38 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbcuied/cu_object.prg
! Refined: save/load interface with proper validation.
At this point hbCuiEd is in a usable state.
2011-08-19 15:01 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbide/ideenviron.prg
* Auto Detection: if hbide.exe is accompanied by hbmk2.exe,

View File

@@ -83,11 +83,6 @@ CLASS hbCUIEditor
DATA scn_
DATA rpt_ INIT { { "", 0, "" } }
DATA nCurObj
DATA cObject INIT ""
DATA cRpt INIT "Untitled"
DATA sectors_ INIT {}
DATA nDesign INIT 1
DATA nTop INIT 1
@@ -125,8 +120,6 @@ CLASS hbCUIEditor
DATA xRefresh INIT OBJ_REFRESH_ALL
DATA nObjCopied INIT 0
DATA cBoxShape INIT "ÚÄ¿³ÙÄÀ³"
DATA cDesignId INIT "Module"
DATA cFile INIT "Untitled"
DATA aProperty INIT {}
DATA lGraphics INIT .f.
DATA aTextBlock INIT {}
@@ -172,7 +165,7 @@ CLASS hbCUIEditor
METHOD scrTextPost( gst_, nMode )
METHOD scrTextDel()
METHOD scrLoad( cSource, cScreen )
METHOD scrLoad( lAsk )
METHOD scrSave( lAsk )
METHOD scrAddBox( nObj )
@@ -227,7 +220,7 @@ METHOD hbCUIEditor:create( cSource, cScreen )
::cSource := cSource
::cScreen := cScreen
::scrLoad( ::cSource, ::cScreen )
::scrLoad( .f. )
::scrConfig()
::operate()
@@ -240,18 +233,25 @@ METHOD hbCUIEditor:destroy()
/*----------------------------------------------------------------------*/
METHOD hbCUIEditor:scrLoad( cSource, cScreen )
METHOD hbCUIEditor:scrLoad( lAsk )
LOCAL cBuffer, n, n1, nSel, aMatches, aMatch
LOCAL scr_:={}
IF empty( cSource ) .OR. ! hb_fileExists( cSource )
aadd( ::obj_, ::scrObjBlank() )
RETURN SELF
ENDIF
IF empty( cScreen )
// Pull out all screens embedded IN the source
cBuffer := hb_memoread( cSource )
IF ::lEdited
IF alert( "Screen has been edited, save ?", { "Yes","No" } ) == 1
::scrSave( .f. )
ENDIF
ENDIF
IF lAsk
::cSource := alltrim( VouchGetSome( "Source (.PRG) File", pad( ::cSource, 40 ) ) )
ENDIF
IF empty( ::cSource )
RETURN Self
ENDIF
IF lAsk .OR. empty( ::cScreen )
cBuffer := hb_memoread( ::cSource )
aMatches := hb_regExAll( "HB_SCREEN_BEGINS", cBuffer, .f., .f., 0, 1, .f. )
IF ! empty( aMatches )
FOR EACH aMatch IN aMatches
@@ -265,20 +265,19 @@ METHOD hbCUIEditor:scrLoad( cSource, cScreen )
IF ! empty( scr_ )
B_MSG "Select a Screen" CHOOSE scr_ RESTORE SHADOW CENTER INTO nSel
IF nSel > 0
cScreen := scr_[ nSel ]
::cScreen := scr_[ nSel ]
ENDIF
ENDIF
ENDIF
IF ! empty( cScreen )
::scrBuildFromBuffer( cBuffer, cScreen )
IF ! empty( cBuffer)
::obj_:= {}
::scrBuildFromBuffer( cBuffer, ::cScreen )
::xRefresh := OBJ_REFRESH_ALL
::lEdited := .f.
ENDIF
::cSource := cSource
::cScreen := iif( empty( cScreen ), 'Untitled', cScreen )
::cFile := ::cScreen
::cObject := ::cSource
::cRpt := ::cScreen
::cScreen := iif( empty( ::cScreen ), 'Untitled', ::cScreen )
RETURN Self
@@ -520,9 +519,6 @@ METHOD hbCUIEditor:scrSave( lAsk )
::cScreen := cScreen
ENDIF
::cObject := ::cSource
::cFile := ::cScreen
aadd( prg_, "/* HB_SCREEN_BEGINS <" + ::cScreen + "> */" )
aadd( prg_, " " )
FOR EACH o_ IN ::obj_
@@ -641,7 +637,6 @@ METHOD hbCUIEditor:scrUpdateSource( prg_ )
ENDIF
hb_memowrit( ::cSource, s )
alert( "Screen is saved in " + ::cSource )
::lEdited := .f.
RETURN Self
@@ -700,8 +695,6 @@ METHOD hbCUIEditor:scrConfig()
::xRefresh := OBJ_REFRESH_ALL
::nObjCopied := 0
::cBoxShape := 'ÚÄ¿³ÙÄÀ³'
::cDesignId := "Module"
::cFile := "Untitled"
::aProperty := {}
::lGraphics := .f.
::aTextBlock := {}
@@ -811,7 +804,7 @@ METHOD hbCUIEditor:operate()
ENDIF
EXIT
CASE ::nLastKey == K_ALT_L
::scrLoad( ::cSource, "" )
::scrLoad( .t. )
CASE ::nLastKey == K_ALT_S
::scrSave( .t. )
@@ -969,12 +962,14 @@ METHOD hbCUIEditor:operate()
::nObjSelected := nObj
::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
::scrOnFirstCol( nObj, { OBJ_O_TEXT } )
::scrMsg( "OBJECT is Selected. Use Arrow Keys to Move, Enter to Finished" )
::lEdited := .t.
ENDIF
@@ -1213,9 +1208,9 @@ METHOD hbCUIEditor:scrStatus()
LOCAL s, typ_, objId
dispbegin()
s := pad( ::cDesignId, 8 )+ ' ³ '
s := pad( ::cSource, 15 ) + ' ³ '
s += pad( ::cFile, 12 )+;
s += pad( ::cScreen, 12 )+;
' ³ '+;
' R:'+;
str( ::nRowRep - 1, 3 )+;