diff --git a/harbour/ChangeLog b/harbour/ChangeLog index b589df2c1c..5bf0a08183 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,12 @@ The license applies to all entries newer than 2009-04-28. */ +2011-08-23 22:40 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbcuied/cu_object.prg + * contrib/hbcuied/cu_utlty.prg + * Improved: help text and screens rotation. + many artifacts. + 2011-08-23 17:28 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbcuied/cu_object.prg * contrib/hbcuied/cu_utlty.prg diff --git a/harbour/contrib/hbcuied/cu_object.prg b/harbour/contrib/hbcuied/cu_object.prg index 323e7b2008..df35384a7a 100644 --- a/harbour/contrib/hbcuied/cu_object.prg +++ b/harbour/contrib/hbcuied/cu_object.prg @@ -149,7 +149,6 @@ CLASS hbCUIEditor METHOD scrMovLft() METHOD scrMovUp() METHOD scrMovDn() - METHOD scrMovPgUp() METHOD scrChkObj() METHOD scrUpdObjRC() METHOD scrRepCol() @@ -798,7 +797,7 @@ METHOD hbCUIEditor:scrAddPrp( sct_ ) //----------------------------------------------------------------------// METHOD hbCUIEditor:operate() - LOCAL nObj, nToCol, i, nOff + LOCAL nObj, nToCol, i, nOff LOCAL grf_:= { 43,45,46,48,49,50,51,52,53,54,55,56,57 } readinsert( .t. ) @@ -878,14 +877,14 @@ METHOD hbCUIEditor:operate() IF nToCol < ::nColRep nOff := ::nColRep - nToCol - 1 FOR i := 1 TO nOff - ::scrMovLft() + ::scrMovLft() NEXT ELSEIF nToCol > ::nColRep FOR i := ::nColRep TO nToCol - ::scrMovRgt() + ::scrMovRgt() NEXT - ENDIF - ENDIF + ENDIF + ENDIF ::xRefresh := OBJ_REFRESH_ALL CASE ::nLastKey == K_PGUP // scrMovPgUp(scn_) @@ -926,7 +925,7 @@ METHOD hbCUIEditor:operate() ::scrAddBox() CASE ::nLastKey == K_F10 // Fields ::scrAddFld() - + CASE ::nLastKey == K_DEL IF ! empty( ::aTextBlock ) ::scrTextDel() @@ -963,7 +962,7 @@ METHOD hbCUIEditor:operate() CASE ::nLastKey == K_ALT_O ::scrDelLine() ::lEdited := .t. - + CASE ::nLastKey == K_ALT_W //::scrRepCol() CASE ::nLastKey == K_CTRL_F6 // Selection of Block @@ -972,7 +971,7 @@ METHOD hbCUIEditor:operate() ::scrTextMove( 1 ) CASE ::nLastKey == K_CTRL_F8 // Move, Cut AND Paste ::scrTextMove( 0 ) - + CASE ::nLastKey == HB_K_RESIZE ::scrReConfig() ::scrDisplay() @@ -1082,12 +1081,12 @@ METHOD hbCUIEditor:scrMove() dispBegin() - dispBox(::nTop ,; - ::nLeft ,; - ::nBottom ,; - ::nRight ,; - ::cDrawFill ,; - ::cClrPrev ) + dispBox( ::nTop ,; + ::nLeft ,; + ::nBottom ,; + ::nRight ,; + ::cDrawFill ,; + ::cClrPrev ) FOR i := 1 TO len( ::obj_ ) IF ::obj_[ i,OBJ_ROW ] + ::nRowDis <= ::nBottom .AND. ; @@ -1265,19 +1264,21 @@ METHOD hbCUIEditor:scrDispGhost( gst_ ) //----------------------------------------------------------------------// METHOD hbCUIEditor:scrStatus() - LOCAL s, typ_, objId + LOCAL s, typ_, objId, cS + + cS := iif( len( ::cSource ) <= 20, ::cSource, substr( ::cSource, 1, 3 ) + ".." + right( ::cSource, 15 ) ) dispbegin() - s := pad( ::cSource, 15 ) + ' ³ ' + s := pad( cS, 20 ) + ' ³ ' - s += pad( ::cScreen, 12 )+; + s += pad( ::cScreen, 13 ) +; ' ³ '+; ' R:'+; - str( ::nRowRep - 1, 3 )+; + str( ::nRowRep - 1, 3 ) +; ' C:'+; - str( ::nColRep - 1, 3 )+; + str( ::nColRep - 1, 3 ) +; ' ³ ' +; - iif( readInsert(), 'Ins ', ' ')+; + iif( readInsert(), 'Ins', ' ' ) +; ' ³ ' objId := '' @@ -1497,28 +1498,6 @@ METHOD hbCUIEditor:scrMovDn() //----------------------------------------------------------------------// -METHOD hbCUIEditor:scrMovPgUp() - LOCAL lMoved := .f. - - IF ::nRowCur == ::nTop - IF ::nRowRep > 1 - ::nRowCur := ::nTop - ::nRowRep := 1 - ::nRowDis := ::nTop - 1 - lMoved := .t. - ::xRefresh := OBJ_REFRESH_ALL - ENDIF - ELSE // IF ::nRowCur == ::ROW_BOTTOM] - ::nRowCur := ::nTop - ::nRowRep := ::nRowRep - ( ::nRowCur - ::nTop ) - ::nRowDis := ::nRowDis - ( ::nRowCur - ::nTop ) - lMoved := .t. - ENDIF - - RETURN lMoved - -//----------------------------------------------------------------------// - METHOD hbCUIEditor:objType( nObj ) RETURN ::obj_[ nObj, OBJ_TYPE ] @@ -1540,27 +1519,40 @@ METHOD hbCUIEditor:objIsFld( nObj ) /*----------------------------------------------------------------------*/ METHOD hbCUIEditor:scrIsTxt() - RETURN ascan( ::obj_, {|e_| e_ [OBJ_TYPE ] == OBJ_O_TEXT; - .AND. ; - VouchInRange( ::nRowRep, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) ; - .AND. ; - VouchInRange( ::nColRep, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) > 0 + LOCAL e_ + + FOR EACH e_ IN ::obj_ + IF e_[ OBJ_TYPE ] == OBJ_O_TEXT + IF ::nRowRep == e_[ OBJ_ROW ] .AND. ( ::nColRep >= e_[ OBJ_COL ] .AND. ::nColRep <= e_[ OBJ_TO_COL ] ) + RETURN .t. + ENDIF + ENDIF + NEXT + + RETURN .f. //----------------------------------------------------------------------// METHOD hbCUIEditor:scrChkObj() - LOCAL n - n := ascan( ::obj_, {|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_BOX, .f.,; - VouchInRange( ::nRowRep, e_[ OBJ_ROW ], e_[OBJ_TO_ROW ] ) ; - .AND. ; - VouchInRange( ::nColRep, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) ) } ) - IF empty( n ) // No OBJECT other than box, check box,BMP - n := ascan( ::obj_,{|e_| ; - VouchInRange( ::nRowRep, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) ; - .AND. ; - VouchInRange( ::nColRep, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) - ENDIF - RETURN n + LOCAL e_ + + FOR EACH e_ IN ::obj_ + IF e_[ OBJ_TYPE ] == OBJ_O_BOX + IF ( ::nRowRep == e_[ OBJ_ROW ] .OR. ::nRowRep == e_[ OBJ_TO_ROW ] ) .AND. ; + ( ::nColRep >= e_[ OBJ_COL ] .AND. ::nColRep <= e_[ OBJ_TO_COL ] ) + RETURN e_:__enumIndex() + ELSEIF ( ::nColRep == e_[ OBJ_COL ] .OR. ::nColRep == e_[ OBJ_TO_COL ] ) .AND. ; + ( ::nRowRep >= e_[ OBJ_ROW ] .AND. ::nRowRep <= e_[ OBJ_TO_ROW ] ) + RETURN e_:__enumIndex() + ENDIF + ELSE + IF ::nRowRep == e_[ OBJ_ROW ] .AND. ( ::nColRep >= e_[ OBJ_COL ] .AND. ::nColRep <= e_[ OBJ_TO_COL ] ) + RETURN e_:__enumIndex() + ENDIF + ENDIF + NEXT + + RETURN 0 //----------------------------------------------------------------------// @@ -1783,23 +1775,19 @@ METHOD hbCUIEditor:scrOnLastCol( nObj ) LOCAL nOff, i IF ::objIsBox( nObj ) - nOff := ::obj_[ nObj, OBJ_TO_COL ] - ::nColCur - 1 + nOff := ::obj_[ nObj, OBJ_TO_COL ] - ::nColRep FOR i := 1 TO nOff ::scrMovRgt() - ::scrMove() - ::scrStatus() - ::nRowPrev := ::nRowCur - ::nColPrev := ::nColCur NEXT - nOff := ::obj_[ nObj, OBJ_TO_ROW ] - ::nRowCur - 1 + nOff := ::obj_[ nObj, OBJ_TO_ROW ] - ::nRowRep FOR i := 1 TO nOff ::scrMovDn() - ::scrMove() - ::scrStatus() - ::nRowPrev := ::nRowCur - ::nColPrev := ::nColCur NEXT + ::scrMove() + ::scrStatus() + ::nRowPrev := ::nRowCur + ::nColPrev := ::nColCur ENDIF RETURN NIL diff --git a/harbour/contrib/hbcuied/cu_utlty.prg b/harbour/contrib/hbcuied/cu_utlty.prg index db8a044000..3bc6325114 100644 --- a/harbour/contrib/hbcuied/cu_utlty.prg +++ b/harbour/contrib/hbcuied/cu_utlty.prg @@ -198,12 +198,12 @@ FUNCTION VouchGetArray( h_,vv_, sel_, nTop, nLft, nBtm, nRgt, title, bWhen_, bVa IF h_== NIL .OR. valtype(h_)<>'A' .OR. vv_== NIL .OR. valtype(vv_)<>'A' RETURN {vv_, 0} ENDIF - + nLenVrb := 0 aeval( vv_, {|e| cTyp := valtype( e ), nLenVrb := max( ; iif( cTyp == 'C', len( e ), ; iif( cTyp == 'N', 15, iif( cTyp == 'D', 8, 3 ) ) ), nLenVrb ) } ) - + IF bWhen_ == NIL bWhen_:= afill( array( len( vv_) ), {|| .t. } ) FOR i := 1 TO len( vv_ ) @@ -278,7 +278,7 @@ FUNCTION VouchGetArray( h_,vv_, sel_, nTop, nLft, nBtm, nRgt, title, bWhen_, bVa cgo_:= { 1, 0, .f., .f., pmt_, sel_,/*exe_*/, aScrol_, nLenMnu } - SetGetAch( vv_ ) + SetGetAch( vv_ ) IF pic_ == NIL pic_:= array( len( vv_ ) ) @@ -1107,48 +1107,48 @@ FUNCTION help( cToken ) SWITCH Upper( cToken ) CASE "KEYS" /* HB_SCREEN_BEGINS */ - - /// 2 3 C 76 0 + + /// 1 3 C 76 0 @ 1, 2 SAY " Keys " COLOR "N/W*" - /// 18 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-General 2-SelectiveInput 3-Block Selections 4-About " COLOR "N/W*" - /// 3 3 C 61 0 - @ 16, 2 SAY "Alt_N Insert blank row. All objects are moved down one row." - /// 4 3 C 61 0 - @ 17, 2 SAY "Alt_O Delete current row. All objects are moved up one row." - /// 5 3 C 71 0 - @ 14, 2 SAY "End Cursor is positioned at the next to last column of last object." - /// 6 3 C 44 0 - @ 13, 2 SAY "Home Cursor is positioned at column zero." - /// 7 3 C 32 0 - @ 12, 2 SAY "Del Delete hilighted object." - /// 8 3 C 32 0 - @ 10, 2 SAY "F10 Define a new GET object." - /// 9 3 C 39 0 - @ 9, 2 SAY "F9 Start to define new box object." - /// 10 3 C 28 0 - @ 8, 2 SAY "F8 Paste copied object." - /// 11 3 C 29 0 - @ 7, 2 SAY "F7 Copy hilighted objec.t" - /// 12 3 C 32 0 - @ 6, 2 SAY "F6 Select hilighted object." - /// 13 3 C 30 0 - @ 5, 2 SAY "F5 Edit hilighted object." - /// 14 3 C 39 0 - @ 4, 2 SAY "F4 Properties of hilighted object." - /// 15 3 C 20 0 - @ 3, 2 SAY "F1 This screen." - /// 16 3 C 31 0 - @ 19, 2 SAY "Ctrl_F6 Begins block selection." - /// 17 3 C 44 0 - @ 20, 2 SAY "Ctrl_F7 Copy selected block at new location." - /// 18 3 C 53 0 - @ 21, 2 SAY "Ctrl_F8 Cut and paste selected block at new location." - /// 19 3 C 29 0 - @ 23, 2 SAY "Alt+S Save designed screen." - /// 20 3 C 28 0 - @ 24, 2 SAY "Alt+L Load another screen." - + /// 2 3 C 61 0 + @ 16, 2 SAY "Alt_N Insert blank row. All objects are moved down one row." + /// 3 3 C 61 0 + @ 17, 2 SAY "Alt_O Delete current row. All objects are moved up one row." + /// 4 3 C 71 0 + @ 14, 2 SAY "End Cursor is positioned at the next to last column of last object." + /// 5 3 C 44 0 + @ 13, 2 SAY "Home Cursor is positioned at column zero." + /// 6 3 C 32 0 + @ 12, 2 SAY "Del Delete hilighted object." + /// 7 3 C 32 0 + @ 10, 2 SAY "F10 Define a new GET object." + /// 8 3 C 39 0 + @ 9, 2 SAY "F9 Start to define new box object." + /// 9 3 C 28 0 + @ 8, 2 SAY "F8 Paste copied object." + /// 10 3 C 30 0 + @ 7, 2 SAY "F7 Copy hilighted objec.t" + /// 11 3 C 32 0 + @ 6, 2 SAY "F6 Select hilighted object." + /// 12 3 C 30 0 + @ 5, 2 SAY "F5 Edit hilighted object." + /// 13 3 C 39 0 + @ 4, 2 SAY "F4 Properties of hilighted object." + /// 14 3 C 20 0 + @ 3, 2 SAY "F1 This screen." + /// 15 3 C 31 0 + @ 19, 2 SAY "Ctrl_F6 Begins block selection." + /// 16 3 C 44 0 + @ 20, 2 SAY "Ctrl_F7 Copy selected block at new location." + /// 17 3 C 53 0 + @ 21, 2 SAY "Ctrl_F8 Cut and paste selected block at new location." + /// 18 3 C 29 0 + @ 23, 2 SAY "Alt+S Save designed screen." + /// 19 3 C 28 0 + @ 24, 2 SAY "Alt+L Load another screen." + /// 20 3 C 76 0 + @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" + /* HB_SCREEN_ENDS */ EXIT CASE "GENERAL-1" @@ -1156,40 +1156,42 @@ FUNCTION help( cToken ) /// 1 3 C 76 0 @ 1, 2 SAY " General " COLOR "N/W*" - /// 18 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-General 2-SelectiveInput 3-Block Selections 4-About " COLOR "N/W*" /// 2 3 C 76 0 - @ 3, 2 SAY "hbCuiEd is a fixed-coordinated, character based screen designer which allows" + @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" /// 3 3 C 76 0 - @ 4, 2 SAY "to arrange Harbour's GT oriented objects in visual interaction and saves the" + @ 3, 2 SAY "hbCuiEd is a fixed-coordinated, character based screen designer which allows" /// 4 3 C 76 0 + @ 4, 2 SAY "to arrange Harbour's GT oriented objects in visual interaction and saves the" + /// 5 3 C 76 0 @ 5, 2 SAY "results as Harbour source code (with some meta info) directly into the .PRG " - /// 5 3 C 73 0 + /// 6 3 C 73 0 @ 6, 2 SAY "file ready to be compiled and linked. Thus generated forms can be edited " - /// 6 3 C 76 0 + /// 7 3 C 76 0 @ 7, 2 SAY "either directly in the source file or through this tool which allows two-way" - /// 7 3 C 56 0 + /// 8 3 C 56 0 @ 8, 2 SAY "communication leading to highest degree of productivity." - /// 8 3 C 76 0 + /// 9 3 C 76 0 @ 10, 2 SAY "One source file can contain n number of screens, anywhere in the source, at " - /// 9 3 C 74 0 + /// 10 3 C 74 0 @ 11, 2 SAY "any indentation. The only requirement is to place following lines where a " - /// 10 3 C 17 0 + /// 11 3 C 17 0 @ 12, 2 SAY "screen is needed:" - /// 11 3 C 35 0 - @ 13, 22 SAY "/* HB_SCREEN_BEGINS */" COLOR "GR+/B" /// 12 3 C 35 0 - @ 14, 22 SAY "/* HB_SCREEN_ENDS */" COLOR "GR+/B" + @ 13, 22 SAY "/* HB_SCREEN_BEGINS */" COLOR "GR+/B" /// 13 3 C 74 0 @ 16, 2 SAY "This is to be done manually. Once you place above lines into source file, " - /// 14 3 C 74 0 - @ 17, 2 SAY "just supply that source when loading a screen. All screens defined in that" - /// 15 3 C 44 0 - @ 18, 2 SAY "source will be presented to select and edit." - /// 16 3 C 76 0 + /// 14 3 C 76 0 @ 20, 2 SAY "The designer implements SAYs with/without expression, GETs with all clauses," - /// 17 3 C 55 0 - @ 21, 2 SAY "BOXs with all flavours, special characters (TOBE Done)." + /// 15 3 C 35 0 + @ 14, 22 SAY "/* HB_SCREEN_ENDS */" COLOR "GR+/B" + /// 16 3 C 75 0 + @ 17, 2 SAY "just supply that source to load a screen. All screens defined therein will " + /// 17 3 C 44 0 + @ 18, 2 SAY "be presented to be selected and edited." + /// 18 3 C 76 0 + @ 15, 2 SAY " should be unique 13 characters long string across given source." + /// 19 3 C 55 0 + @ 21, 2 SAY "BOXes with all flavours, special characters (TOBE Done)." /* HB_SCREEN_ENDS */ EXIT @@ -1198,8 +1200,8 @@ FUNCTION help( cToken ) /// 2 3 C 76 0 @ 1, 2 SAY " Selective Input " COLOR "N/W*" - /// 18 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-General 2-SelectiveInput 3-Block Selections 4-About " COLOR "N/W*" + /// 20 3 C 76 0 + @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" /* HB_SCREEN_ENDS */ EXIT @@ -1208,35 +1210,35 @@ FUNCTION help( cToken ) /// 2 3 C 76 0 @ 1, 2 SAY " Block Selection " COLOR "N/W*" - /// 18 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-General 2-SelectiveInput 3-Block Selections 4-About " COLOR "N/W*" + /// 20 3 C 76 0 + @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" /* HB_SCREEN_ENDS */ EXIT CASE "ABOUT" /* HB_SCREEN_BEGINS */ - - /// 1 3 C 76 0 + + /// 1 3 C 76 0 @ 1, 2 SAY " About " COLOR "N/W*" - /// 2 3 C 76 0 - @ 26, 2 SAY " ESC-Designer 1-General 2-SelectiveInput 3-Block Selections 4-About " COLOR "N/W*" - /// 3 3 C 35 0 + /// 20 3 C 76 0 + @ 26, 2 SAY " ESC-Designer 1-Keys 2-General 3-ListedInputs 4-BlockSelection 5-About " COLOR "N/W*" + /// 3 3 C 35 0 @ 7, 22 SAY "Harbour Screen Designer ( hbCuiEd )" COLOR "GR+/B" - /// 4 3 C 40 0 - @ 10, 20 SAY "Pritpal Bedi ( bedipritpal@hotmail.com )" - /// 5 3 C 13 0 - @ 9, 33 SAY "Developed by:" - /// 6 3 C 12 0 - @ 15, 34 SAY "Pritpal Bedi" - /// 7 3 C 14 0 - @ 14, 33 SAY "Copyright 2011" - /// 8 3 C 23 0 - @ 16, 29 SAY "www.harbour-project.org" - /// 9 3 C 29 0 - @ 20, 26 SAY "Visit the project website at:" - /// 10 3 C 31 0 + /// 4 3 C 40 0 + @ 10, 20 SAY "Pritpal Bedi ( bedipritpal@hotmail.com )" + /// 5 3 C 13 0 + @ 9, 33 SAY "Developed by:" + /// 6 3 C 12 0 + @ 15, 34 SAY "Pritpal Bedi" + /// 7 3 C 14 0 + @ 14, 33 SAY "Copyright 2011" + /// 8 3 C 23 0 + @ 16, 29 SAY "www.harbour-project.org" + /// 9 3 C 29 0 + @ 20, 26 SAY "Visit the project website at:" + /// 10 3 C 31 0 @ 21, 25 SAY "http://www.harbour-project.org/" COLOR "GR+/B" - + /* HB_SCREEN_ENDS */ EXIT ENDSWITCH @@ -1249,18 +1251,22 @@ FUNCTION help( cToken ) SetHelpStr( "" ) EXIT ELSEIF nKey == 49 - SetHelpStr( "General-1" ) + SetHelpStr( "Keys" ) __keyboard( chr( K_F1 ) ) EXIT ELSEIF nKey == 50 - SetHelpStr( "General-2" ) + SetHelpStr( "General-1" ) __keyboard( chr( K_F1 ) ) EXIT ELSEIF nKey == 51 - SetHelpStr( "General-3" ) + SetHelpStr( "General-2" ) __keyboard( chr( K_F1 ) ) EXIT ELSEIF nKey == 52 + SetHelpStr( "General-3" ) + __keyboard( chr( K_F1 ) ) + EXIT + ELSEIF nKey == 53 SetHelpStr( "About" ) __keyboard( chr( K_F1 ) ) EXIT