diff --git a/harbour/ChangeLog b/harbour/ChangeLog index a5b330f9f6..6578ffe1fc 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,20 @@ The license applies to all entries newer than 2009-04-28. */ +2011-08-16 15:08 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + - contrib/hbcuied/cu_desgn.prg + * contrib/hbcuied/cu_main.prg + - contrib/hbcuied/cu_menu.prg + * contrib/hbcuied/cu_object.prg + - contrib/hbcuied/cu_outpt.prg + - contrib/hbcuied/cu_prpty.prg + * contrib/hbcuied/cu_utlty.prg + * contrib/hbcuied/hbcuied.ch + * contrib/hbcuied/hbcuied.hbp + - Deleted: some sources. + * Code cleanup and more constructs. + * Changed: procedural approach to class code. + 2011-08-15 10:20 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbcuied/cu_desgn.prg - contrib/hbcuied/cu_field.prg diff --git a/harbour/contrib/hbcuied/cu_desgn.prg b/harbour/contrib/hbcuied/cu_desgn.prg deleted file mode 100644 index ee4a1caf02..0000000000 --- a/harbour/contrib/hbcuied/cu_desgn.prg +++ /dev/null @@ -1,1319 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * CUI Forms Editor - * - * Copyright 2011 Pritpal Bedi - * http://harbour-project.org - * - * 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 2, 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 software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour CUI Editor Source - * - * Pritpal Bedi - * 13Aug2011 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbcuied.ch" -#include "common.ch" -#include "inkey.ch" - -//----------------------------------------------------------------------// - -FUNCTION Operate( obj_,scn_ ) - LOCAL nObj, bError - LOCAL grf_:= { 43,45,46,48,49,50,51,52,53,54,55,56,57 } - - readinsert( .t. ) - - scrDisplay( scn_ ) - scrMove( obj_,scn_ ) - scrStatus( obj_,scn_ ) - keyboard( chr( K_UP ) ) - - bError := errorblock( {|e| break( e ) } ) - BEGIN SEQUENCE - - DO WHILE .t. - scn_[ SCN_ROW_PREV ] := scn_[ SCN_ROW_CUR ] - scn_[ SCN_COL_PREV ] := scn_[ SCN_COL_CUR ] - scn_[ SCN_REFRESH ] := OBJ_REFRESH_NIL - - setCursor( .t. ) - setCursor( IF( readInsert(),2,1 ) ) - - DO WHILE .t. - scn_[ SCN_LASTKEY ] := inkey( 0, INKEY_ALL + HB_INKEY_GTEVENT ) - IF scn_[ SCN_LASTKEY ] <> K_MOUSEMOVE - EXIT - ENDIF - ENDDO - - DO CASE - CASE scn_[ SCN_GRAPHICS ] .AND. ascan( grf_,scn_[ SCN_LASTKEY ] ) > 0 - //processkey() - - CASE scrMouse( obj_, scn_, scn_[ SCN_LASTKEY ] ) -#IF 0 - CASE scn_[ SCN_LASTKEY ] == K_ALT_F6 - graphChar() - scn_[ SCN_GRAPHICS ] := ! scn_[ SCN_GRAPHICS ] - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL -#ENDIF - /* Save Report */ - CASE scn_[ SCN_LASTKEY ] == K_ESC - //EXIT - __KeyBoard( chr( K_CTRL_ENTER ) ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_ENTER - EXIT - - CASE scn_[ SCN_LASTKEY ] == K_RIGHT - scrMovRgt( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_LEFT - scrMovLft( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_UP - scrMovUp( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_DOWN - scrMovDn( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_MWBACKWARD - scrMovDn( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_MWFORWARD - scrMovUp( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_HOME - scn_[ SCN_COL_REP ] := 1 - scn_[ SCN_COL_CUR ] := scn_[ SCN_LEFT ] - scn_[ SCN_COL_DIS ] := scn_[ SCN_LEFT ]-1 - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - CASE scn_[ SCN_LASTKEY ] == K_END - scn_[SCN_COL_REP] := scn_[SCN_COL_MAX] - scn_[SCN_COL_CUR] := scn_[SCN_RIGHT] - scn_[SCN_COL_DIS] := (scn_[SCN_LEFT]-1) - (scn_[SCN_COL_REP]-(scn_[SCN_RIGHT]-scn_[SCN_LEFT]+1)) - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - CASE scn_[ SCN_LASTKEY ] == K_PGUP - // scrMovPgUp(scn_) - scn_[SCN_ROW_REP] := 1 - scn_[SCN_ROW_CUR] := scn_[SCN_TOP] - scn_[SCN_ROW_DIS] := scn_[SCN_TOP] - 1 - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - CASE scn_[ SCN_LASTKEY ] == K_PGDN - // scn_[SCN_ROW_REP] := scn_[SCN_REP_LINES] - // scn_[SCN_ROW_CUR] := scn_[SCN_BOTTOM] - - CASE scn_[ SCN_LASTKEY ] == K_INS - readInsert( !readInsert() ) - setcursor( iif( readInsert(), 2, 1 ) ) - - CASE scn_[ SCN_LASTKEY ] == K_ENTER - IF scn_[ SCN_MODE ] == OBJ_MODE_SELECT .AND. scn_[ SCN_OBJ_SELECTED ] > 0 - obj_[ scn_[ SCN_OBJ_SELECTED ], OBJ_SECTION ] := scrSecCur( scn_, scn_[ SCN_ROW_REP ] ) - scn_[ SCN_COL_MAX ] := max( scn_[ SCN_COL_MAX ], obj_[ scn_[ SCN_OBJ_SELECTED ], OBJ_TO_COL ] + 1 ) - scn_[ SCN_MODE ] := OBJ_MODE_IDLE - scn_[ SCN_REFRESH ] := OBJ_REFRESH_LINE - scn_[ SCN_OBJ_SELECTED ] := 0 - scrMsg() - ENDIF - - CASE VouchInRange( scn_[ SCN_LASTKEY ], K_SPACE, 254 ) .AND. scn_[ SCN_MODE ] <> OBJ_MODE_SELECT - scrAddTxt( obj_, scn_, scn_[ SCN_LASTKEY ], 1 ) - - CASE scn_[ SCN_LASTKEY ] == K_F1 // Help - help( 'NWREPORT' ) - - CASE scn_[ SCN_LASTKEY ] == K_F2 // Calculator - //calculate() - - CASE scn_[ SCN_LASTKEY ] == K_F3 // OBJECT - scrObject(obj_,scn_) - - CASE scn_[ SCN_LASTKEY ] == K_F4 // Properties - scrProperty( obj_,scn_ ) - - CASE scn_[ SCN_LASTKEY ] == K_F7 .OR. scn_[ SCN_LASTKEY ] == K_ALT_C // Copy - scrObjCopy(obj_,scn_) - - CASE scn_[ SCN_LASTKEY ] == K_F8 .OR. scn_[ SCN_LASTKEY ] == K_ALT_V // Paste - scrObjPas(obj_,scn_) - - CASE scn_[ SCN_LASTKEY ] == K_F9 // Box - scrAddBox( obj_,scn_,0 ) - - CASE scn_[ SCN_LASTKEY ] == K_F10 // Fields - scrAddFld( obj_,scn_,0 ) - - CASE scn_[ SCN_LASTKEY ] == K_DEL - IF ! empty( scn_[ SCN_TEXT_BLOCK_] ) - obj_:= scrTextDel( obj_,scn_ ) - scrOrdObj( obj_, scn_ ) - scn_[ SCN_MODE ] := 0 - scn_[ SCN_OBJ_SELECTED ] := 0 - scn_[ SCN_OBJ_HILITE ] := 0 - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - ELSEIF scrIsObjTxt( obj_,scn_ ) - scrAddTxt( obj_, scn_, scn_[ SCN_LASTKEY ], 2 ) - ELSEIF scn_[ SCN_MODE ] == OBJ_MODE_SELECT - obj_:= scrObjDel( obj_, scn_, scn_[ SCN_OBJ_SELECTED ] ) - scn_[ SCN_MODE ] := 0 - scn_[ SCN_OBJ_SELECTED ] := 0 - ELSEIF scn_[ SCN_OBJ_HILITE ] > 0 - obj_:= scrObjDel( obj_, scn_, scn_[ SCN_OBJ_HILITE ] ) - scn_[ SCN_MODE ] := 0 - scn_[ SCN_OBJ_SELECTED ] := 0 - scn_[ SCN_OBJ_HILITE ] := 0 - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - ENDIF - - CASE scn_[ SCN_LASTKEY ] == K_BS - IF scn_[ SCN_MODE ] <> OBJ_MODE_SELECT - IF scrMovLft( scn_ ) - IF scrIsObjTxt( obj_,scn_ ) - scrAddTxt( obj_,scn_,scn_[ SCN_LASTKEY ], 3 ) - ENDIF - ENDIF - ENDIF - - CASE scn_[ SCN_LASTKEY ] == K_ALT_B - scrAddBox( obj_, scn_, 0 ) - - CASE scn_[ SCN_LASTKEY ] == K_ALT_F - scrAddFld( obj_, scn_, 0 ) - CASE scn_[ SCN_LASTKEY ] == K_ALT_E - //scrAddExp( obj_, scn_, 0 ) - CASE scn_[ SCN_LASTKEY ] == K_ALT_N - scrAddLine( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_ALT_O - scrDelLine( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_ALT_W - scrRepCol( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_F6 // Selection of Block - scrTextBlock( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_F7 // Move, Copy - obj_:= scrTextMove( obj_, scn_, 1 ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_F8 // Move, Cut AND Paste - obj_:= scrTextMove( obj_, scn_, 0 ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_Z - scrExport( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_W - scrImport( @obj_, @scn_ ) - CASE scn_[ SCN_LASTKEY ] == HB_K_RESIZE - ScrWvtConfig( obj_, scn_ ) - scrDisplay( scn_ ) - scrMove( obj_, scn_ ) - scrStatus( obj_, scn_ ) - - ENDCASE - - IF scn_[ SCN_MODE ] == OBJ_MODE_SELECT - scn_[ SCN_REFRESH ] := iif( scn_[ SCN_REFRESH ] == OBJ_REFRESH_NIL,; - OBJ_REFRESH_LINE, scn_[ SCN_REFRESH ] ) - scrUpdObjRC( obj_, scn_ ) - ENDIF - - // Check on which OBJECT cursor is placed - // - nObj := scrChkObj( obj_, scn_ ) - - IF nObj > 0 .AND. scn_[ SCN_MODE ] <> OBJ_MODE_SELECT - scn_[ SCN_REFRESH ] := iif( scn_[ SCN_REFRESH ] == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, scn_[ SCN_REFRESH ] ) - scn_[ SCN_OBJ_HILITE ] := nObj - scrOnFirstCol( obj_, scn_, nObj, { OBJ_O_FIELD, OBJ_O_EXP } ) - - ELSEIF ! empty( scn_[ SCN_OBJ_HILITE ] ) - scn_[ SCN_REFRESH ] := iif( scn_[ SCN_REFRESH ] == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, scn_[ SCN_REFRESH ] ) - scn_[ SCN_OBJ_HILITE ] := 0 - - ENDIF - - IF nObj > 0 .AND. scn_[ SCN_LASTKEY ] == K_F5 // Edit - IF obj_[ nObj, OBJ_TYPE ] == OBJ_O_FIELD - scrAddFld( obj_, scn_, nObj ) - ELSEIF obj_[ nObj, OBJ_TYPE ] == OBJ_O_TEXT - scrTxtProp( obj_, scn_, nObj ) - ELSEIF obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX - scrAddBox( obj_, scn_, nObj ) - ENDIF - ENDIF - - // Is the OBJECT selected - IF nObj > 0 .AND. scn_[ SCN_LASTKEY ] == K_F6 .AND. obj_[ nObj,OBJ_TYPE] == OBJ_O_BOX - scn_[SCN_MODE] := OBJ_MODE_SELECT - scn_[SCN_OBJ_SELECTED] := nObj - scrOnFirstCol( obj_, scn_, nObj, { OBJ_O_BOX } ) - scrMsg( "Box is Selected. Use Arrow Keys TO Move, Enter TO Finished !" ) - - ELSEIF nObj > 0 .AND. scn_[ SCN_LASTKEY ] == K_F6 .AND. ! ( obj_[ nObj,OBJ_TYPE ] == OBJ_O_BOX ) - scn_[ SCN_MODE ] := OBJ_MODE_SELECT - scn_[ SCN_OBJ_SELECTED ] := nObj - scrOnFirstCol( obj_, scn_, nObj, { OBJ_O_TEXT } ) - scrMsg( "OBJECT is Selected. Use Arrow Keys TO Move, Enter TO Finished" ) - - ENDIF - - IF scn_[ SCN_REFRESH ] == OBJ_REFRESH_ALL - scrMove( obj_, scn_ ) - ELSEIF scn_[ SCN_REFRESH ] == OBJ_REFRESH_LINE - IF scrIsBoxIn( obj_, scn_ ) - scrMove( obj_, scn_ ) - ELSE - scrMoveLine( obj_, scn_ ) - ENDIF - ENDIF - - scrStatus( obj_, scn_ ) // Status Line - - IF scn_[ SCN_GRAPHICS ] // Graphics Window - //grfRest() - ENDIF - ENDDO - - RECOVER - alert('ERROR has occured WHILE designing this document, save it anyway!') - END SEQUENCE - errorBlock( bError ) - - IF scn_[ SCN_GRAPHICS ] - //graphChar() - scn_[ SCN_GRAPHICS ] := .f. - ENDIF - - scrOrdObj( obj_ ) - - RETURN { obj_,scn_ } - -//----------------------------------------------------------------------// - -FUNCTION scrOrdObj(obj_) - - // Objects are ordered as per their type - asort( obj_,,, {|e_,f_| e_[ OBJ_TYPE ] < f_[ OBJ_TYPE ] } ) - - RETURN obj_ - -//----------------------------------------------------------------------// - -FUNCTION scrMovRgt( scn_ ) - LOCAL lMoved := .t. - - scn_[SCN_COL_CUR]++ - IF scn_[SCN_COL_CUR] > scn_[SCN_RIGHT] - IF scn_[SCN_COL_MAX] > scn_[SCN_COL_REP] - scn_[SCN_COL_DIS]-- - scn_[SCN_COL_CUR]-- - scn_[SCN_COL_REP]++ - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - ELSE - lMoved := .f. - tone( 100,1 ) - scn_[SCN_COL_CUR]-- - ENDIF - ELSE - scn_[SCN_COL_REP]++ - ENDIF - RETURN lMoved - -//----------------------------------------------------------------------// - -FUNCTION scrMovLft( scn_ ) - LOCAL lMoved := .t. - scn_[SCN_COL_CUR]-- - IF scn_[SCN_COL_CUR] < scn_[SCN_LEFT] - IF scn_[SCN_COL_REP] > 1 - scn_[SCN_COL_DIS]++ - scn_[SCN_COL_CUR]++ - scn_[SCN_COL_REP]-- - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - ELSE - lMoved := .f. - tone(200,1) - scn_[SCN_COL_CUR]++ - ENDIF - ELSE - scn_[SCN_COL_REP]-- - ENDIF - RETURN lMoved - -//----------------------------------------------------------------------// - -FUNCTION scrMovUp(scn_) - LOCAL lMoved := .t. - - scn_[SCN_ROW_CUR]-- - IF scn_[SCN_ROW_CUR] < scn_[SCN_TOP] - scn_[SCN_ROW_CUR] := scn_[SCN_TOP] - IF scn_[SCN_ROW_REP] > 1 - scn_[SCN_ROW_DIS]++ - scn_[SCN_ROW_REP]-- - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - ELSE - lMoved := .f. - tone(300,1) - ENDIF - ELSE - scn_[SCN_ROW_REP]-- - ENDIF - RETURN lMoved - -//----------------------------------------------------------------------// - -FUNCTION scrMovDn( scn_ ) - LOCAL lMoved := .t. - - scn_[ SCN_ROW_CUR ]++ - IF scn_[ SCN_ROW_CUR ] > scn_[ SCN_BOTTOM ] - scn_[ SCN_ROW_CUR ] := scn_[ SCN_BOTTOM ] - IF scn_[ SCN_ROW_REP ] < scn_[ SCN_REP_LINES ] - scn_[ SCN_ROW_DIS ]-- - scn_[ SCN_ROW_REP ]++ - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - ELSE - lMoved := .f. - tone(300,1) - ENDIF - ELSE - scn_[ SCN_ROW_REP ]++ - ENDIF - RETURN lMoved - -//----------------------------------------------------------------------// - -FUNCTION scrMovPgUp(scn_) - LOCAL lMoved := .f. - - IF scn_[SCN_ROW_CUR] == scn_[SCN_TOP] - IF scn_[SCN_ROW_REP] > 1 - scn_[SCN_ROW_CUR] := scn_[SCN_TOP] - scn_[SCN_ROW_REP] := 1 - scn_[SCN_ROW_DIS] := scn_[SCN_TOP] - 1 - lMoved := .t. - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - ENDIF - ELSE // IF scn_[SCN_ROW_CUR] == scn_[SCN_ROW_BOTTOM] - scn_[SCN_ROW_CUR] := scn_[SCN_TOP] - scn_[SCN_ROW_REP] := scn_[SCN_ROW_REP] - (scn_[SCN_ROW_CUR] - scn_[SCN_TOP]) - scn_[SCN_ROW_DIS] := scn_[SCN_ROW_DIS] - (scn_[SCN_ROW_CUR] - scn_[SCN_TOP]) - lMoved := .t. - ENDIF - - RETURN lMoved - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrIsObjTxt(obj_,scn_) - RETURN ascan(obj_, {|e_| e_[OBJ_TYPE]==OBJ_O_TEXT; - .AND. ; - VouchInRange(scn_[SCN_ROW_REP],e_[OBJ_ROW],e_[OBJ_TO_ROW]) ; - .AND. ; - VouchInRange(scn_[SCN_COL_REP],e_[OBJ_COL],e_[OBJ_TO_COL]) }) > 0 - -//----------------------------------------------------------------------// - -FUNCTION scrChkObj(obj_,scn_) - LOCAL n - n := ascan(obj_,{|e_| IF(e_[OBJ_TYPE]==OBJ_O_BOX .OR. e_[OBJ_TYPE]==OBJ_O_BMP,.f.,; - VouchInRange(scn_[SCN_ROW_REP],e_[OBJ_ROW],e_[OBJ_TO_ROW]) ; - .AND. ; - VouchInRange(scn_[SCN_COL_REP],e_[OBJ_COL],e_[OBJ_TO_COL])) }) - IF empty(n) // No OBJECT other than box, check box,BMP - n := ascan(obj_,{|e_| ; - VouchInRange(scn_[SCN_ROW_REP],e_[OBJ_ROW],e_[OBJ_TO_ROW]) ; - .AND. ; - VouchInRange(scn_[SCN_COL_REP],e_[OBJ_COL],e_[OBJ_TO_COL]) }) - ENDIF - RETURN n - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrUpdObjRC(obj_,scn_) - LOCAL nW, nH - LOCAL nObj := scn_[ SCN_OBJ_SELECTED ] - - IF nObj > 0 - nH := obj_[ nObj,OBJ_TO_ROW ] - obj_[ nObj,OBJ_ROW ] - nW := obj_[ nObj,OBJ_TO_COL ] - obj_[ nObj,OBJ_COL ] - - obj_[ nObj,OBJ_ROW ] := scn_[SCN_ROW_REP] - obj_[ nObj,OBJ_COL ] := scn_[SCN_COL_REP] - - IF obj_[ nObj,OBJ_TYPE ] == OBJ_O_BOX - obj_[ nObj,OBJ_TO_ROW ] := obj_[ nObj,OBJ_ROW ] + nH - obj_[ nObj,OBJ_TO_COL ] := obj_[ nObj,OBJ_COL ] + nW - ELSE - obj_[ nObj,OBJ_TO_ROW ] := scn_[SCN_ROW_REP] - obj_[ nObj,OBJ_TO_COL ] := scn_[SCN_COL_REP] + ; - len( obj_[ nObj, iif( obj_[ nObj,OBJ_TYPE ] == OBJ_O_TEXT, OBJ_EQN, OBJ_TEXT ) ] ) - 1 - ENDIF - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrRepCol( obj_,scn_ ) - LOCAL oCol := scn_[SCN_COL_MAX], nCol - - HB_SYMBOL_UNUSED( obj_ ) - - nCol := VouchGetSome( 'Number of Columns?', oCol ) - - IF !empty( nCol ) - nCol := max( 10,nCol ) - scn_[SCN_COL_MAX ] := nCol - scn_[SCN_RIGHT ] := min( maxCol(), scn_[SCN_LEFT]+nCol-1 ) - scn_[SCN_REFRESH ] := OBJ_REFRESH_ALL - scn_[ SCN_PROPERTY, REP_COLS ] := nCol - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// -/* - This is the routine FROM where row based equations can be implemented -*/ -STATIC FUNCTION scrAddLine(obj_,scn_) - LOCAL nRow := scn_[SCN_ROW_REP], nSct - - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - scn_[SCN_BOTTOM ] := min(scn_[SCN_BOTTOM]+1,maxrow()-3) - - nSct := scrSecOrd(scn_,nRow /*scn_[SCN_ROW_REP]*/) - - scn_[SCN_SECTORS_,nSct,SCT_ROWS]++ - scn_[SCN_REP_LINES]++ - - aeval(obj_,{|e_,i| IF(e_[OBJ_ROW] >= nRow, obj_[i,OBJ_TO_ROW] += 1,'') }) - aeval(obj_,{|e_,i| IF(e_[OBJ_ROW] >= nRow, obj_[i,OBJ_ROW ] += 1,'') }) - - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrDelLine( obj_, scn_ ) - LOCAL nRow := scn_[ SCN_ROW_REP ] - LOCAL nSct, n, isLast - - isLast := nRow == scn_[ SCN_REP_LINES ] - - nSct := scrSecOrd( scn_,nRow /*scn_[SCN_ROW_REP]*/ ) - IF scn_[ SCN_SECTORS_, nSct, SCT_ROWS ] == 1 // A Single Row Must remain IN one group - RETURN NIL - ENDIF - - scn_[ SCN_SECTORS_, nSct,SCT_ROWS ]-- - scn_[ SCN_REP_LINES ]-- - - IF scn_[ SCN_REP_LINES ] < (scn_[SCN_BOTTOM]-scn_[SCN_TOP]+1) - scn_[ SCN_BOTTOM ] := max( scn_[ SCN_TOP ], min( scn_[ SCN_BOTTOM ] - 1, maxrow() - 3 ) ) - ENDIF - - DO WHILE .t. - IF ( n := ascan( obj_, {|e_| e_[ OBJ_ROW ] == nRow } ) ) == 0 - EXIT - ENDIF - VouchAShrink( obj_, n ) - ENDDO - IF empty( obj_ ) - aadd( obj_, scrObjBlank() ) - ENDIF - - aeval( obj_, {|e_,i| iif( e_[ OBJ_ROW ] > nRow, obj_[ i, OBJ_TO_ROW ] -= 1, '' ) } ) - aeval( obj_, {|e_,i| iif( e_[ OBJ_ROW ] > nRow, obj_[ i, OBJ_ROW ] -= 1, '' ) } ) - - IF isLast - scn_[SCN_ROW_REP]-- - scn_[SCN_ROW_CUR]-- - ENDIF - - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrIsBoxIn(obj_,scn_) - RETURN ascan( obj_,{|e_| VouchInRange( scn_[SCN_ROW_REP ], e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ); - .AND. ; - (e_[OBJ_TYPE] == OBJ_O_BOX ; - .OR. ; - e_[OBJ_TYPE] == OBJ_O_BMP ) } ) > 0 - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrObjCopy(obj_,scn_) - - HB_SYMBOL_UNUSED( obj_ ) - - IF scn_[SCN_MODE] == OBJ_MODE_SELECT - scn_[SCN_OBJ_COPIED] := scn_[SCN_OBJ_SELECTED] - ELSEIF scn_[SCN_OBJ_HILITE] > 0 - scn_[SCN_OBJ_COPIED] := scn_[SCN_OBJ_HILITE] - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrObjPas(obj_,scn_) // Paste Copied OBJECT - LOCAL nObj,o_,oldRow,oldCol,oldRow2,oldcol2 - - IF (nObj := scn_[SCN_OBJ_COPIED]) > 0 .AND. scn_[SCN_OBJ_SELECTED] == 0 - o_:= aclone(obj_[ nObj]) - - oldRow := o_[OBJ_ROW] ; oldCol := o_[OBJ_COL] - oldRow2 := o_[OBJ_TO_ROW] ; oldCol2 := o_[OBJ_TO_COL] - - o_[OBJ_ROW] := scn_[SCN_ROW_REP] - o_[OBJ_COL] := scn_[SCN_COL_REP] - IF o_[OBJ_TYPE ] == OBJ_O_FIELD .OR. o_[OBJ_TYPE] == OBJ_O_EXP - o_[OBJ_TO_ROW] := scn_[SCN_ROW_REP] - o_[OBJ_TO_COL] := scn_[SCN_COL_REP] + len(o_[OBJ_TEXT]) - 1 - ELSEIF o_[OBJ_TYPE] == OBJ_O_BOX .OR. o_[OBJ_TYPE] == OBJ_O_BMP - o_[OBJ_TO_ROW] := scn_[SCN_ROW_REP] + (oldRow2-oldRow) - o_[OBJ_TO_COL] := scn_[SCN_COL_REP] + (oldCol2-oldCol) - ELSEIF o_[OBJ_TYPE] == OBJ_O_TEXT - o_[OBJ_TO_ROW] := scn_[SCN_ROW_REP] - o_[OBJ_TO_COL] := scn_[SCN_COL_REP] + (oldCol2-oldCol) - ENDIF - - o_[OBJ_SECTION] := scrSecCur(scn_,scn_[SCN_ROW_REP]) - - aadd(obj_,o_) - - scrOrdObj( obj_ ) - scn_[ SCN_OBJ_SELECTED ] := 0 - scn_[ SCN_REFRESH ] := OBJ_REFRESH_LINE - scn_[ SCN_MODE ] := 0 - scn_[ SCN_OBJ_COPIED ] := 0 - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrObjDel(obj_,scn_,nObj) - LOCAL s_:= obj_,nUnique := obj_[ nObj,OBJ_OBJ_UNIQUE],n - - VouchAShrink(s_,nObj) - IF empty(s_) - aadd(s_,scrObjBlank()) - ENDIF - scn_[SCN_OBJ_SELECTED] := 0 - scn_[SCN_REFRESH] := OBJ_REFRESH_LINE - - IF scn_[SCN_DESIGN] == DGN_MODULE .AND. nUnique > 0 - IF (n := ascan(scn_[SCN_FIELDS],{|e_| e_[1] == nUnique })) > 0 - VouchAShrink(scn_[SCN_FIELDS],n) - ENDIF - ENDIF - RETURN s_ - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrObject(obj_,scn_) - LOCAL nObj - LOCAL mnu_:={'Field Alt_F' ,; - 'Boxes Alt_B' ,; - ' ' ,; - 'Columns Width Alt_W' ,; - 'Graphic Characters Alt_F6' ,; - ' ' ,; - 'Copy OBJECT Alt_C' ,; - 'Paste OBJECT Alt_V' ,; - 'Selection of Block Ctrl_F6',; - 'Copy Selection Ctrl_F7',; - 'Cut & Paste Selection Ctrl_F8',; - ' ' ,; - 'Matrix Alt_M' } - - LOCAL sel_:= {.t.,.t.,; - .f.,; - .t.,.t.,.t.,.t.,; - .f.,; - .t.,.t.,.t.,.t.,.t.,; - .f.,; - .t. } - - B_MSG CHOOSE mnu_ RESTORE SHADOW CENTER INTO nObj SELECTABLES sel_ - - @ scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] SAY '' - - DO CASE - CASE nObj == 1 // Field - scrAddFld( obj_, scn_, 0 ) - CASE nObj == 2 // Box - scrAddBox( obj_, scn_, 0 ) - CASE nObj == 3 // Blank - - CASE nObj == 4 // Columns - scrRepCol( obj_, scn_ ) - CASE nObj == 5 // Graphcs - //graphChar() - scn_[ SCN_GRAPHICS ] := ! scn_[ SCN_GRAPHICS ] - CASE nObj == 6 // Blank - - CASE nObj == 7 // Copy - scrObjCopy( obj_, scn_ ) - CASE nObj ==81 // Paste - scrObjPas( obj_, scn_) - CASE nObj == 9 // Block Selection - scrTextBlock( obj_, scn_ ) - CASE nObj == 10 // Copy Selectin - obj_:= scrTextMove( obj_, scn_, 1 ) - CASE nObj == 11 // Copy & Cut Selection - obj_:= scrTextMove( obj_, scn_, 0 ) - CASE nObj == 12 // Blank - - CASE nObj == 13 // Matrix - ENDCASE - - RETURN nObj - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrTxtProp( obj_, scn_, nObj ) - LOCAL sel_, v_ - - obj_[ nObj,OBJ_F_LEN ] := len(obj_[ nObj,OBJ_EQN ] ) - obj_[ nObj,OBJ_F_TYPE ] := 'C' - - v_:= scrObj2Vv( obj_[ nObj ] ) - sel_:= scrVvSelAble(scn_) - - sel_[ VV_ID ] := .F. - sel_[ VV_ALIGN ] := .T. - sel_[ VV_COLOR ] := .T. - sel_[ VV_F_LEN ] := .F. - sel_[ VV_F_DEC ] := .F. - sel_[ VV_REPEATED ] := .F. - sel_[ VV_VERTICLE ] := .F. - sel_[ VV_WRAP_SEMI ] := .F. - sel_[ VV_ZERO ] := .F. - sel_[ VV_EQN ] := .F. - - scrField( nObj, 3, obj_, scn_, v_, sel_, 'W/B ' ) - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrOnLastCol( obj_, scn_, nObj ) - LOCAL nOff, i - - IF obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX - nOff := obj_[ nObj, OBJ_TO_COL ] - scn_[ SCN_COL_CUR ] - 1 - FOR i := 1 TO nOff - scrMovRgt( scn_ ) - scrMove( obj_,scn_ ) - scrStatus( obj_,scn_ ) - NEXT - - nOff := obj_[ nObj, OBJ_TO_ROW ] - scn_[ SCN_ROW_CUR ] - 1 - FOR i := 1 TO nOff - scrMovDn( scn_ ) - scrMove( obj_,scn_ ) - scrStatus( obj_,scn_ ) - NEXT - - SetPos( scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] ) - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrOnFirstCol( obj_,scn_,nObj,type_ ) - LOCAL nCur, nOff - - IF scn_[ SCN_COL_REP ] <> obj_[ nObj,OBJ_COL ] - IF VouchInArray( obj_[ nObj, OBJ_TYPE ], type_ ) - IF obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX - nCur := scn_[ SCN_COL_CUR ] - nOff := scn_[ SCN_COL_REP ] - obj_[ nObj, OBJ_COL ] - scn_[ SCN_COL_CUR ] := max( scn_[ SCN_LEFT ], scn_[ SCN_COL_CUR ] - nOff ) - scn_[ SCN_COL_REP ] := obj_[ nObj, OBJ_COL] - IF nOff > nCur - scn_[ SCN_LEFT ] - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - scn_[ SCN_COL_DIS ] += nOff - ( nCur - scn_[ SCN_LEFT ] ) - ENDIF - - nCur := scn_[ SCN_ROW_CUR ] - nOff := scn_[ SCN_ROW_REP ] - obj_[ nObj, OBJ_ROW ] - scn_[ SCN_ROW_CUR ] := max( scn_[ SCN_TOP ], scn_[ SCN_ROW_CUR ] - nOff ) - scn_[ SCN_ROW_REP ] := obj_[ nObj,OBJ_ROW ] - IF nOff > nCur - scn_[ SCN_TOP ] - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - scn_[ SCN_ROW_DIS ] += nOff - ( nCur - scn_[ SCN_TOP ] ) - ENDIF - - ELSE - IF scn_[ SCN_LASTKEY ] == K_RIGHT - nCur := scn_[ SCN_COL_CUR ] - nOff := obj_[ nObj, OBJ_TO_COL ] - scn_[ SCN_COL_REP ] + 1 // NEXT Col TO OBJECT - IF scn_[SCN_COL_REP] + nOff > scn_[SCN_COL_MAX] - scn_[SCN_COL_MAX] := scn_[ SCN_COL_REP ] + nOff - ENDIF - scn_[SCN_COL_CUR] := min( scn_[ SCN_RIGHT ], scn_[ SCN_COL_CUR ] + nOff ) - scn_[SCN_COL_REP] := obj_[ nObj,OBJ_TO_COL ] + 1 - IF nOff > scn_[SCN_RIGHT] - nCur - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - scn_[SCN_COL_DIS] -= nOff-(scn_[SCN_RIGHT]-nCur) - ENDIF - scn_[SCN_OBJ_HILITE] := 0 - ELSE - nCur := scn_[ SCN_COL_CUR ] - nOff := scn_[ SCN_COL_REP ] - obj_[ nObj,OBJ_COL ] - scn_[ SCN_COL_CUR ] := max( scn_[ SCN_LEFT ], scn_[ SCN_COL_CUR ]-nOff ) - scn_[ SCN_COL_REP ] := obj_[ nObj,OBJ_COL] - IF nOff > nCur-scn_[SCN_LEFT] - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - scn_[SCN_COL_DIS] += nOff-(nCur-scn_[SCN_LEFT]) - ENDIF - ENDIF - ENDIF - ENDIF - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrGetChar(obj_,nRow,nCol) - LOCAL s := THE_FILL,n - - // Locate Text - n := ascan(obj_,{|e_| e_[ OBJ_ROW ] == nRow .AND. ; - VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) - IF n == 0 // Locate Box - n := ascan(obj_,{|e_| VouchInRange( nRow, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) .AND. ; - VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) - ENDIF - - IF n > 0 - IF obj_[n,OBJ_TYPE]==OBJ_O_TEXT - s := substr(obj_[n,OBJ_EQN],nCol-obj_[n,OBJ_COL]+1,1) - - ELSEIF obj_[n,OBJ_TYPE]==OBJ_O_FIELD .OR. obj_[n,OBJ_TYPE]==OBJ_O_EXP - s := substr(obj_[n,OBJ_ID ],nCol-obj_[n,OBJ_COL]+1,1) - - ELSEIF obj_[n,OBJ_TYPE]==OBJ_O_BOX .OR. obj_[n,OBJ_TYPE]==OBJ_O_BMP - IF nRow == obj_[n,OBJ_ROW ] - IF nCol == obj_[n,OBJ_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],1,1) - ELSEIF nCol == obj_[n,OBJ_TO_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],3,1) - ELSE - s := substr(obj_[n,OBJ_BOX_SHAPE],2,1) - ENDIF - ELSEIF nRow == obj_[n,OBJ_TO_ROW] - IF nCol == obj_[n,OBJ_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],7,1) - ELSEIF nCol == obj_[n,OBJ_TO_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],5,1) - ELSE - s := substr(obj_[n,OBJ_BOX_SHAPE],6,1) - ENDIF - ELSE - IF nCol == obj_[n,OBJ_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],8,1) // 4.8 are Same - ELSEIF nCol == obj_[n,OBJ_TO_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],4,1) - ELSE - s := substr(obj_[n,OBJ_BOX_SHAPE],9,1) - s := IF(empty(s),THE_FILL,s) - ENDIF - ENDIF - ENDIF - ENDIF - RETURN s - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrTextBlock(obj_,scn_) - LOCAL n, nKey - LOCAL key_:= { K_RIGHT,K_LEFT,K_UP,K_DOWN,K_ENTER } - - scrMsg( 'Use TO Select Text Block, TO Finish' ) - scn_[ SCN_TEXT_BLOCK_ ] := { scn_[ SCN_ROW_REP ], scn_[ SCN_COL_REP ], scn_[ SCN_ROW_REP ], scn_[ SCN_COL_REP ] } - scrMove( obj_, scn_ ) - scrStatus( obj_, scn_ ) - - DO WHILE .t. - nKey := scrInkey( key_ ) - - DO CASE - CASE nKey == key_[1] - IF scrMovRgt(scn_) - scn_[SCN_TEXT_BLOCK_,4]++ - ENDIF - CASE nKey == key_[2] - IF scrMovLft(scn_) - scn_[SCN_TEXT_BLOCK_,4]-- - ENDIF - CASE nKey == key_[3] - IF scrMovUp(scn_) - scn_[SCN_TEXT_BLOCK_,3]-- - ENDIF - CASE nKey == key_[4] - IF scrMovDn(scn_) - scn_[SCN_TEXT_BLOCK_,3]++ - ENDIF - CASE nKey == key_[5] - EXIT - ENDCASE - - IF scn_[SCN_TEXT_BLOCK_,3] < scn_[SCN_TEXT_BLOCK_,1] - n := scn_[SCN_TEXT_BLOCK_,1] - scn_[SCN_TEXT_BLOCK_,1] := scn_[SCN_TEXT_BLOCK_,3] - scn_[SCN_TEXT_BLOCK_,3] := n - ENDIF - - IF scn_[SCN_TEXT_BLOCK_,4] < scn_[SCN_TEXT_BLOCK_,2] - n := scn_[SCN_TEXT_BLOCK_,2] - scn_[SCN_TEXT_BLOCK_,2] := scn_[SCN_TEXT_BLOCK_,4] - scn_[SCN_TEXT_BLOCK_,4] := n - ENDIF - - scrMove(obj_,scn_) - scrStatus(obj_,scn_) - ENDDO - scrMsg('') - - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrTextMove(obj_,scn_,nMode) - LOCAL gst_,nKey - LOCAL crs := setCursor(0) - LOCAL key_:= {K_RIGHT,K_LEFT,K_UP,K_DOWN,K_ENTER} - - DEFAULT nMode TO 0 // 0.Paste 1.Copy - - IF ! empty( scn_[ SCN_TEXT_BLOCK_ ] ) - // CREATE a ghost movement block - scrMsg('Use Arrow Keys TO Move Selected Block') - // Check FOR current cursor position - gst_:= { scn_[ SCN_ROW_REP ] , scn_[ SCN_COL_REP ],; - scn_[ SCN_ROW_REP ] + scn_[ SCN_TEXT_BLOCK_, 3 ] - scn_[ SCN_TEXT_BLOCK_, 1 ],; - scn_[ SCN_COL_REP ] + scn_[ SCN_TEXT_BLOCK_, 4 ] - scn_[ SCN_TEXT_BLOCK_, 2 ] } - DO WHILE .t. - scrMove(obj_,scn_) - scrDispGhost(obj_,scn_,gst_) - scrStatus(obj_,scn_) - - nKey := scrInkey(key_) - DO CASE - CASE nKey == key_[1] - IF scrMovRgt(scn_) - gst_[2]++ ; gst_[4]++ - ENDIF - CASE nKey == key_[2] - IF scrMovLft(scn_) - gst_[2]-- ; gst_[4]-- - ENDIF - CASE nKey == key_[3] - IF scrMovUp(scn_) - gst_[1]-- ; gst_[3]-- - ENDIF - CASE nKey == key_[4] - IF scrMovDn(scn_) - gst_[1]++ ; gst_[3]++ - ENDIF - CASE nKey == key_[5] - EXIT - ENDCASE - ENDDO - // Post Selected Block TO Moved Area - obj_:= scrTextPost( obj_, scn_, gst_, nMode ) - - scrOrdObj( obj_, scn_ ) - - scrMove( obj_, scn_ ) - scrStatus( obj_, scn_ ) - - scrMsg() - ENDIF - setCursor(crs) - - RETURN obj_ - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrTextPost( obj_, scn_, gst_, nMode ) - LOCAL n,i,s,s1,s2,s3,n1,nWid,nCol,nn - LOCAL del_:={0},ins_:={},d_:={},ddd_ - LOCAL old_:= scn_[ SCN_TEXT_BLOCK_ ] - - FOR i := gst_[ 1 ] TO gst_[ 3 ] - n := -1 - DO WHILE .t. - n := ascan( obj_, {|e_| e_[ OBJ_ROW ] == i ; - .AND. ; - ( VouchInRange(e_[OBJ_COL],gst_[2],gst_[4]); - .OR. ; - VouchInRange(e_[OBJ_TO_COL],gst_[2],gst_[4])) ; - .AND.; - ! VouchInArray( n,del_ ) } ) - IF n > 0 - IF obj_[ n,OBJ_TYPE ] == OBJ_O_TEXT - aadd( del_, n ) - - s1 := '' ; s3 := '' - s := obj_[ n, OBJ_EQN ] - nCol := obj_[ n, OBJ_COL ] - - IF gst_[2] <= obj_[ n, OBJ_COL ] .AND. gst_[ 4 ] >= obj_[ n, OBJ_TO_COL ] - // Only deletion of OBJECT - // s2 := s - ELSEIF gst_[2] >= nCol - s1 := substr(s,1,gst_[2]-nCol) - // s2 := substr(s,gst_[2]-nCol+1,gst_[4]-nCol+1) - s3 := substr(s,gst_[4]-nCol+2) - ELSEIF gst_[2] < nCol - s1 := substr(s,1,gst_[2]-nCol) - // s2 := substr(s,gst_[2]-nCol+1,gst_[4]-nCol+1) - s3 := substr(s,gst_[4]-nCol+2) - ENDIF - - IF len( s1 ) > 0 - aadd( ins_,scrObjBlank() ) - n1 := len( ins_ ) - - ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_COL ] := obj_[ n, OBJ_COL ] - ins_[ n1, OBJ_EQN ] := s1 - ins_[ n1, OBJ_ID ] := 'Text' - ins_[ n1, OBJ_COLOR ] := 'W/B' - ins_[ n1, OBJ_SECTION ] := obj_[ n, OBJ_SECTION ] - ins_[ n1, OBJ_TO_ROW ] := obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + len( s1 ) - 1 - ENDIF - - IF len( s3 ) > 0 - aadd( ins_, scrObjBlank() ) - n1 := len( ins_ ) - - ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := obj_[n, OBJ_ROW] - ins_[ n1, OBJ_COL ] := gst_[ 4 ] + 1 - ins_[ n1, OBJ_EQN ] := s3 - ins_[ n1, OBJ_ID ] := 'Text' - ins_[ n1, OBJ_COLOR ] := 'W/B' - ins_[ n1, OBJ_SECTION ] := obj_[ n, OBJ_SECTION ] - ins_[ n1, OBJ_TO_ROW ] := obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + len( s3 ) - 1 - ENDIF - - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. obj_[n,OBJ_TYPE] == OBJ_O_EXP - aadd( del_, n ) - - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_BOX - - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_BMP - - ENDIF - ELSE - EXIT - ENDIF - ENDDO - NEXT - - ddd_:= del_ ; del_:={0} ; nn := 0 - - FOR i := old_[1] TO old_[3] // Rows - n := -1 - - DO WHILE .t. - n := ascan(obj_,{|e_| e_[OBJ_ROW]==i; - .AND. ; - (VouchInRange(e_[OBJ_COL],old_[2],old_[4]); - .OR. ; - VouchInRange(e_[OBJ_TO_COL],old_[2],old_[4])) ; - .AND. ; - !VouchInArray(n,del_) }) - IF n > 0 - IF obj_[n,OBJ_TYPE] == OBJ_O_TEXT - aadd(del_,n) - - // TO be retained as it is - s1 := '' ; s2 := '' ; s3 := '' - s := obj_[n,OBJ_EQN] - nCol := obj_[n,OBJ_COL] - - IF old_[2] <= obj_[n,OBJ_COL] .AND. old_[4] >= obj_[n,OBJ_TO_COL] - s2 := s // Insert WITH moved coordinates - ELSEIF old_[2] >= obj_[n,OBJ_COL] - s1 := substr(s,1,old_[2]-nCol) - s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) - s3 := substr(s,old_[4]-nCol+2) - ELSEIF old_[2] < nCol - s1 := substr(s,1,old_[2]-nCol) - s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) - s3 := substr(s,old_[4]-nCol+2) - ENDIF - - IF nMode == 0 - IF len(s1)>0 - aadd(ins_,scrObjBlank()) - n1 := len(ins_) - ins_[n1,OBJ_TYPE] := OBJ_O_TEXT - ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW] - ins_[n1,OBJ_COL] := obj_[n,OBJ_COL] - ins_[n1,OBJ_EQN] := s1 - ins_[n1,OBJ_ID] := 'Text' - ins_[n1,OBJ_COLOR] := 'W/B' - ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION] - ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s1)-1 - ENDIF - IF len(s3) > 0 - aadd(ins_,scrObjBlank()) - n1 := len(ins_) - ins_[n1,OBJ_TYPE] := OBJ_O_TEXT - ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW] - ins_[n1,OBJ_COL] := old_[4]+1 - ins_[n1,OBJ_EQN] := s3 - ins_[n1,OBJ_ID] := 'Text' - ins_[n1,OBJ_COLOR] := 'W/B' - ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION] - ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s3)-1 - ENDIF - ENDIF - - IF len(s2) > 0 - aadd(ins_,aclone(obj_[n])) - n1 := len(ins_) - ins_[n1,OBJ_ROW] := gst_[1]+nn - ins_[n1,OBJ_COL] := gst_[2]+IF(old_[2]-obj_[n,OBJ_COL]>=0,; - 0,abs(old_[2]-obj_[n,OBJ_COL])) - ins_[n1,OBJ_TO_ROW] := ins_[n1,OBJ_ROW] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s2)-1 - ins_[n1,OBJ_EQN] := s2 - ENDIF - - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. ; - obj_[n,OBJ_TYPE] == OBJ_O_EXP - IF nMode == 0 - aadd(del_,n) - ENDIF - - // Same OBJECT is TO be inserted IN moved block - aadd(ins_,aclone(obj_[n])) - n1 := len(ins_) - ins_[n1,OBJ_ROW] := gst_[1]+nn - nWid := obj_[n,OBJ_TO_COL]-obj_[n,OBJ_COL] - ins_[n1,OBJ_COL] := gst_[2]+old_[2]-obj_[n,OBJ_COL] - ins_[n1,OBJ_TO_ROW] := ins_[n1,OBJ_ROW] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+nWid - ENDIF - ELSE - EXIT - ENDIF - ENDDO - nn++ - NEXT - - IF nMode <> 0 - del_:={} - ENDIF - aeval( ddd_,{|e| aadd( del_, e ) } ) - - IF !empty( del_ ) - FOR i := 1 TO len( obj_) - IF ascan( del_, i ) == 0 - aadd( d_, obj_[ i ] ) - ENDIF - NEXT - obj_:= aclone( d_ ) - IF empty( obj_ ) - aadd( obj_, scrObjBlank() ) - ENDIF - ENDIF - - aeval( ins_, {|e_| aadd( obj_, e_ ) } ) - - scn_[SCN_TEXT_BLOCK_] := {} - - RETURN obj_ - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrTextDel(obj_,scn_) - LOCAL i,n,n1,s,s1,s3,nCol,ins_:={},del_:={},d_:={},old_:={} - - old_:= scn_[SCN_TEXT_BLOCK_] - FOR i := old_[1] TO old_[3] // Rows - n := -1 - - DO WHILE .t. - n := ascan(obj_,{|e_| e_[OBJ_ROW]==i; - .AND. ; - (VouchInRange(e_[OBJ_COL], old_[2],old_[4]); - .OR. ; - VouchInRange(e_[OBJ_TO_COL],old_[2],old_[4])) ; - .AND. ; - !VouchInArray(n,del_) }) - IF n > 0 - IF obj_[n,OBJ_TYPE] == OBJ_O_TEXT - aadd(del_,n) - - // TO be retained as it is - s1 := '' ; s3 := '' - s := obj_[n,OBJ_EQN] - nCol := obj_[n,OBJ_COL] - - IF old_[2] <= obj_[n,OBJ_COL] .AND. old_[4] >= obj_[n,OBJ_TO_COL] - // s2 := s // Insert WITH moved coordinates - ELSEIF old_[2] >= obj_[n,OBJ_COL] - s1 := substr(s,1,old_[2]-nCol) - // s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) - s3 := substr(s,old_[4]-nCol+2) - ELSEIF old_[2] < nCol - s1 := substr(s,1,old_[2]-nCol) - // s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) - s3 := substr(s,old_[4]-nCol+2) - ENDIF - - IF len(s1)>0 - aadd(ins_,scrObjBlank()) - n1 := len(ins_) - ins_[n1,OBJ_TYPE] := OBJ_O_TEXT - ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW] - ins_[n1,OBJ_COL] := obj_[n,OBJ_COL] - ins_[n1,OBJ_EQN] := s1 - ins_[n1,OBJ_ID] := 'Text' - ins_[n1,OBJ_COLOR] := 'W/B' - ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION] - ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s1)-1 - ENDIF - IF len(s3) > 0 - aadd(ins_,scrObjBlank()) - n1 := len(ins_) - ins_[n1,OBJ_TYPE] := OBJ_O_TEXT - ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW] - ins_[n1,OBJ_COL] := old_[4]+1 - ins_[n1,OBJ_EQN] := s3 - ins_[n1,OBJ_ID] := 'Text' - ins_[n1,OBJ_COLOR] := 'W/B' - ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION] - ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s3)-1 - ENDIF - - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. ; - obj_[n,OBJ_TYPE] == OBJ_O_EXP - aadd(del_,n) - - ENDIF - ELSE - EXIT - ENDIF - ENDDO - //nn++ - NEXT - - IF !empty(del_) - FOR i := 1 TO len(obj_) - IF ascan(del_,i) == 0 - aadd(d_,obj_[i]) - ENDIF - NEXT - obj_:= aclone(d_) - IF empty(obj_) - aadd(obj_,scrObjBlank()) - ENDIF - ENDIF - - aeval(ins_,{|e_| aadd(obj_,e_) }) - scn_[SCN_TEXT_BLOCK_] := {} - - RETURN obj_ - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrExport( obj_,scn_ ) - LOCAL cFile := 'SCREEN' - LOCAL rpt_ - - cFile := VouchGetSome( 'Screen Name Please', pad( cFile,100 ) ) - IF !empty( cFile ) - rpt_:= objScn2Rpt( obj_, scn_, scn_[ SCN_NMODE ] ) - //save_array( rpt_, trim( cFile ) + '.vsc' ) - uiDebug( rpt_ ) - ENDIF - - RETURN file( cFile ) - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrImport( obj_,scn_ ) - LOCAL cFile := 'SCREEN' - LOCAL rpt_:={},aa_ - - cFile := VouchGetSome( 'Screen TO Import?', pad( cFile,100 ) ) - IF ! empty( cFile ) - //rpt_:= rest_array( trim( cFile ) + '.vsc' ) - ENDIF - IF !empty( rpt_ ) - aa_:= rpt2ObjScn( scn_[SCN_COBJECT], rpt_, scn_[SCN_NMODE], {},; - scn_[SCN_CRPT], scn_[SCN_NWHERE], scn_[SCN_LMSG] ) - obj_:= aa_[ 1 ] - scn_:= aa_[ 2 ] - ENDIF - - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - - RETURN NIL - -//----------------------------------------------------------------------// diff --git a/harbour/contrib/hbcuied/cu_main.prg b/harbour/contrib/hbcuied/cu_main.prg index b2af60fcc9..c5c461c92f 100644 --- a/harbour/contrib/hbcuied/cu_main.prg +++ b/harbour/contrib/hbcuied/cu_main.prg @@ -70,6 +70,8 @@ /*----------------------------------------------------------------------*/ FUNCTION Main( cSource, cScreen ) + LOCAL bErr := errorBlock( {|o| ThisError( o ) } ) + LOCAL oCUI SET SCOREBOARD OFF SET EPOCH TO 1950 @@ -79,18 +81,30 @@ FUNCTION Main( cSource, cScreen ) hb_gtInfo( HB_GTI_WINTITLE , "Harbour CUI Forms Designer v1.0" ) hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_ROWS ) - hb_gtInfo( HB_GTI_ICONFILE , "../../packages/harb_win.ico" ) + hb_gtInfo( HB_GTI_ICONFILE , "..\..\package\favicon.ico" ) - dgn_Screen( cSource, cScreen ) + oCUI := hbCUIEditor():new( cSource, cScreen ):create() + oCUI:destroy() + + ErrorBlock( bErr ) - RETURN cSource + RETURN NIL /*----------------------------------------------------------------------*/ +FUNCTION ThisError( oError ) + + alert( oError:description + ":" + oError:operation + ";" + ; + ProcName( 2 ) + "-" + hb_ntos( procLine( 2 ) ) + ";" + ; + ProcName( 3 ) + "-" + hb_ntos( procLine( 3 ) ) ) + QUIT + + RETURN oError + +/*----------------------------------------------------------------------*/ + FUNCTION HB_GTSYS() - REQUEST HB_GT_WVT_DEFAULT - RETURN NIL /*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/hbcuied/cu_menu.prg b/harbour/contrib/hbcuied/cu_menu.prg deleted file mode 100644 index 38298a22eb..0000000000 --- a/harbour/contrib/hbcuied/cu_menu.prg +++ /dev/null @@ -1,190 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * CUI Forms Editor - * - * Copyright 2011 Pritpal Bedi - * http://harbour-project.org - * - * 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 2, 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 software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour CUI Editor Source - * - * Pritpal Bedi - * 13Aug2011 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbcuied.ch" -#include "common.ch" -#include "hbgtinfo.ch" - -//----------------------------------------------------------------------// - -#define REP_MSG_WAIT_YES .T. -#define REP_MSG_WAIT_NO .F. - -//----------------------------------------------------------------------// - -FUNCTION dgn_Screen( cObject, cScreen ) - LOCAL rpt_:={} - LOCAL bErr - - bErr := errorBlock( {|| Break() } ) - - IF ! empty( rpt_:= rptDefine( cObject, rpt_, REP_FOR_MDL,/*struct_*/, cScreen, 1, REP_MSG_WAIT_YES ) ) - rptSave( cObject, /*cRpt*/, rpt_, 1, REP_FOR_MDL, REP_MSG_WAIT_YES ) - ENDIF - - errorBlock( bErr ) - - RETURN NIL - -//---------------------------------------------------------------------// - -STATIC FUNCTION rptDefine( cObject,rpt_,nMode,struct_,cRpt,nWhere,lMsg ) - LOCAL scn_,a_,obj_ - - a_ := rpt2ObjScn( cObject,rpt_,nMode,struct_,cRpt,nWhere,lMsg ) - obj_:= a_[ 1 ] - scn_:= a_[ 2 ] - - a_ := Operate(obj_,scn_) - - obj_:= a_[ 1 ] - scn_:= a_[ 2 ] - rpt_:= objScn2rpt( obj_,scn_,nMode ) - - RETURN rpt_ - -//----------------------------------------------------------------------// - -FUNCTION rptSave( /* cObject,cRpt,rRpt_,nWhere,nMode,lMsgWait */ ) - RETURN .t. - -//---------------------------------------------------------------------// - -STATIC FUNCTION rptInit() - RETURN { { '',0,'' } } - -//---------------------------------------------------------------------// - -FUNCTION rpt2ObjScn( cObject,rpt_,nMode,struct_,cRpt,nWhere,lMsg ) - LOCAL obj_,scn_:={} - LOCAL n - - HB_SYMBOL_UNUSED( struct_ ) - - rpt_:= iif( rpt_ == NIL .OR. empty( rpt_ ), rptInit(), rpt_ ) - obj_:= scrScn2obj(rpt_,0) - - DO CASE - - CASE nMode == REP_FOR_MDL - scn_:= scrConfig( obj_,DGN_MODULE ) - IF (n := ascan( rpt_, {|e_| e_[2]==1 } ) ) > 0 - scn_[ SCN_PROPERTY ] := eval( COMPILE( rpt_[ n,3 ] ) ) - ENDIF - #if 0 - IF (n := ascan(rpt_,{|e_| e_[2]== 51 })) > 0 // Property - scn_[ SCN_PROPERTY ] := prpStr2Mdl( rpt_[ n,3 ] ) - ENDIF - #endif - #if 0 - FOR i := 1 TO len( rpt_ ) // Fields - IF VouchInRange( rpt_[i,2], 2001,3000 ) - aadd( scn_[ SCN_FIELDS ], prpStr2Fld( rpt_[ i,3 ] ) ) - ENDIF - NEXT - #endif - - ENDCASE - - scn_[SCN_FILE ] := iif( empty( rpt_[ 1,1 ] ), 'Untitled', substr( rpt_[ 1,1 ], 13 ) ) - - scn_[SCN_COBJECT ] := cObject // FOR threaded usage - scn_[SCN_CRPT ] := cRpt - scn_[SCN_NWHERE ] := nWhere - scn_[SCN_NMODE ] := nMode - scn_[SCN_LMSG ] := lMsg - - RETURN {obj_,scn_} - -//----------------------------------------------------------------------// - -FUNCTION objScn2Rpt( obj_, scn_, nMode ) - LOCAL rpt_:={} - - HB_SYMBOL_UNUSED( scn_ ) - - DO CASE - CASE nMode == REP_FOR_MDL - aeval( obj_, {|e_| iif( e_[ OBJ_ROW ] == 0, '', aadd( rpt_, { '', 0, scrObj2str( e_ ) } ) ) } ) - #if 0 - IF ! empty( scn_[ SCN_PROPERTY ] ) - aadd(rpt_, { '', 51, prpMdl2Str( scn_[ SCN_PROPERTY ] ) } ) - ENDIF - #endif - #if 0 - IF !empty(scn_[SCN_FIELDS]) - FOR i := 1 TO len(scn_[SCN_FIELDS]) - aadd(rpt_,{'',scn_[SCN_FIELDS,i,1], prpFld2Str(scn_[SCN_FIELDS,i]) }) - NEXT - ENDIF - #endif - ENDCASE - - RETURN rpt_ - -//----------------------------------------------------------------------// - diff --git a/harbour/contrib/hbcuied/cu_object.prg b/harbour/contrib/hbcuied/cu_object.prg index ae4c16fc01..3af9a1d485 100644 --- a/harbour/contrib/hbcuied/cu_object.prg +++ b/harbour/contrib/hbcuied/cu_object.prg @@ -74,33 +74,39 @@ CLASS CUIScreen + DATA COBJECT INIT "" + DATA CRPT INIT "Untitled" + DATA NWHERE INIT 1 + DATA NMODE INIT 1 + DATA LMSG INIT .F. + DATA SECTORS_ INIT {} DATA DESIGN INIT 1 - DATA FOR_ROWS INIT { { 0,"" } } + DATA FOR_ROWS INIT { { 0, "" } } DATA TOP INIT 1 DATA LEFT INIT 0 DATA BOTTOM INIT maxrow() - 2 DATA RIGHT INIT maxcol() DATA MODE INIT 0 - DATA ROW_CUR INIT ::TOP - DATA COL_CUR INIT ::LEFT + DATA ROW_CUR INIT 0 + DATA COL_CUR INIT 0 DATA ROW_REP INIT 1 DATA COL_REP INIT 1 - DATA ROW_DIS INIT ::TOP - 1 - DATA COL_DIS INIT ::LEFT - 1 + DATA ROW_DIS INIT -1 + DATA COL_DIS INIT -1 DATA ROW_MENU INIT 0 DATA ROW_RULER INIT 0 DATA STATUS_ROW INIT maxrow() - 1 DATA STATUS_COL INIT 0 DATA STATUS_COL_TO INIT maxcol() DATA COL_MAX INIT 400 - DATA ROW_PREV INIT ::TOP - DATA COL_PREV INIT ::LEFT + DATA ROW_PREV INIT 1 + DATA COL_PREV INIT 1 DATA REP_LINES INIT 200 DATA CLR_STATUS INIT "W+/BG" DATA CLR_TEXT INIT "W+/B" DATA CLR_BOX INIT "W/B" - DATA CLR_FIELD INIT CLR_GET + DATA CLR_FIELD INIT 'W+/W' DATA CLR_HILITE INIT "GR+/BG" DATA CLR_WINDOW INIT "W+/BG" DATA CLR_RULER INIT "N/W" @@ -133,7 +139,6 @@ CLASS CUIScreen METHOD CUIScreen:new() - RETURN Self /*----------------------------------------------------------------------*/ @@ -146,386 +151,855 @@ CLASS CUIObject CLASS hbCUIEditor - DATA obj_ + DATA cSource INIT "" + DATA cScreen INIT "" + + DATA obj_ INIT {} DATA scn_ + DATA rpt_ INIT { { "", 0, "" } } DATA nCurObj + METHOD new( cSource, cScreen ) + METHOD create( cSource, cScreen ) + METHOD destroy() + + METHOD operate() + + METHOD scrDisplay() + METHOD scrMove() + METHOD scrMoveLine() + METHOD scrDispSelected() + METHOD scrDispGhost( gst_ ) + METHOD scrStatus() + + METHOD scrMouse() + METHOD scrToMouse( nmRow, nmCol ) + METHOD scrOrdObj() + METHOD scrMovRgt() + METHOD scrMovLft() + METHOD scrMovUp() + METHOD scrMovDn() + METHOD scrMovPgUp() + METHOD scrIsObjTxt() + METHOD scrChkObj() + METHOD scrUpdObjRC() + METHOD scrRepCol() + METHOD scrAddLine() + METHOD scrDelLine() + METHOD scrIsBoxIn() + METHOD scrObjCopy() + METHOD scrObjPas() + METHOD scrObjDel( nObj ) + METHOD scrObject() + METHOD scrTxtProp( nObj ) + METHOD scrOnLastCol( nObj ) + METHOD scrOnFirstCol( nObj, type_ ) + METHOD scrGetChar( nRow, nCol ) + METHOD scrTextBlock() + METHOD scrTextMove( nMode ) + METHOD scrTextPost( gst_, nMode ) + METHOD scrTextDel() + + METHOD scrLoad( cSource, cScreen ) + METHOD scrSave() + + METHOD scrAddBox( nObj ) + METHOD scrAddFld( nObj ) + METHOD scrAddTxt( nMode ) + METHOD scrProperty() + METHOD scrMsg( msg ) + METHOD scrInKey( key_ ) + METHOD scrConfig() + METHOD scrReConfig() + METHOD scrSectors() + METHOD scrAddPrp( sct_ ) + METHOD scrObjBlank() + METHOD scrVvBlank() + METHOD scrVvSelAble() + METHOD scrObj2Vv( o_ ) + METHOD scrVv2Obj( v_, o_ ) ENDCLASS /*----------------------------------------------------------------------*/ -FUNCTION Operate( obj_,scn_ ) - LOCAL nObj, bError +METHOD hbCUIEditor:new( cSource, cScreen ) + + DEFAULT cSource TO ::cSource + DEFAULT cScreen TO ::cScreen + + ::cSource := cSource + ::cScreen := cScreen + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD hbCUIEditor:create( cSource, cScreen ) + DEFAULT cSource TO ::cSource + DEFAULT cScreen TO ::cScreen + + ::cSource := cSource + ::cScreen := cScreen + + ::scn_:= CUIScreen():new() + + ::scrLoad( ::cSource, ::cScreen ) + + ::scrConfig() + + ::operate() + + RETURN SELF + +/*----------------------------------------------------------------------*/ + +METHOD hbCUIEditor:destroy() + RETURN NIL + +/*----------------------------------------------------------------------*/ + +METHOD hbCUIEditor:scrLoad( cSource, cScreen ) + + IF empty( cSource ) .OR. ! hb_fileExists( cSource ) + aadd( ::obj_, ::scrObjBlank() ) + RETURN SELF + ENDIF + + ::cSource := cSource + ::cScreen := iif( empty( cScreen ), 'Untitled', cScreen ) + + ::scn_:FILE := ::cScreen + ::scn_:COBJECT := ::cSource + ::scn_:CRPT := ::cScreen + ::scn_:NWHERE := 1 + ::scn_:NMODE := DGN_MODULE + ::scn_:LMSG := .f. + + RETURN Self + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrSave() + + IF empty( ::cSource ) + ::cSource := VouchGetSome( "Source (.PRG) File", space( 40 ) ) + IF empty( ::cSource ) + RETURN NIL + ENDIF + ENDIF + + IF empty( ::cScreen ) + ::cScreen := VouchGetSome( "Screen Identity?", space( 13 ) ) + IF empty( ::cScreen ) + ::cScreen := dtos( date() ) + left( time(), 5 ) + ENDIF + ENDIF + + ::scn_:FILE := ::cScreen + ::scn_:COBJECT := ::cSource + + #if 0 + LOCAL rpt_:={} + aeval( ::obj_, {|e_| iif( e_[ OBJ_ROW ] == 0, NIL, aadd( rpt_, { '', 0, scrObj2str( e_ ) } ) ) } ) + + IF ! empty( ::scn_:PROPERTY ) + aadd(rpt_, { '', 51, prpMdl2Str( ::scn_:PROPERTY ) } ) + ENDIF + #endif + #if 0 + IF !empty( ::scn_:FIELDS ) + FOR i := 1 TO len( ::scn_:FIELDS ) + aadd( rpt_,{ '', ::scn_:FIELDS[ i,1 ], prpFld2Str( ::scn_:FIELDS[ i ] ) } ) + NEXT + ENDIF + #endif + + RETURN Self + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:operate() + LOCAL nObj LOCAL grf_:= { 43,45,46,48,49,50,51,52,53,54,55,56,57 } readinsert( .t. ) - scrDisplay( scn_ ) - scrMove( obj_,scn_ ) - scrStatus( obj_,scn_ ) + ::scrDisplay() + ::scrMove() + ::scrStatus() + keyboard( chr( K_UP ) ) - bError := errorblock( {|e| break( e ) } ) - BEGIN SEQUENCE - DO WHILE .t. - scn_[ SCN_ROW_PREV ] := scn_[ SCN_ROW_CUR ] - scn_[ SCN_COL_PREV ] := scn_[ SCN_COL_CUR ] - scn_[ SCN_REFRESH ] := OBJ_REFRESH_NIL + ::scn_:ROW_PREV := ::scn_:ROW_CUR + ::scn_:COL_PREV := ::scn_:COL_CUR + ::scn_:REFRESH := OBJ_REFRESH_NIL setCursor( .t. ) - setCursor( IF( readInsert(),2,1 ) ) + setCursor( iif( readInsert(), 2, 1 ) ) DO WHILE .t. - scn_[ SCN_LASTKEY ] := inkey( 0, INKEY_ALL + HB_INKEY_GTEVENT ) - IF scn_[ SCN_LASTKEY ] <> K_MOUSEMOVE + ::scn_:LASTKEY := inkey( 0, INKEY_ALL + HB_INKEY_GTEVENT ) + IF ::scn_:LASTKEY <> K_MOUSEMOVE EXIT ENDIF ENDDO DO CASE - CASE scn_[ SCN_GRAPHICS ] .AND. ascan( grf_,scn_[ SCN_LASTKEY ] ) > 0 + CASE ::scn_:GRAPHICS .AND. ascan( grf_,::scn_:LASTKEY ) > 0 //processkey() - - CASE scrMouse( obj_, scn_, scn_[ SCN_LASTKEY ] ) + CASE ::scrMouse() #IF 0 - CASE scn_[ SCN_LASTKEY ] == K_ALT_F6 + CASE ::scn_:LASTKEY == K_ALT_F6 graphChar() - scn_[ SCN_GRAPHICS ] := ! scn_[ SCN_GRAPHICS ] - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL + ::scn_:GRAPHICS := ! ::scn_:GRAPHICS + ::scn_:REFRESH := OBJ_REFRESH_ALL #ENDIF /* Save Report */ - CASE scn_[ SCN_LASTKEY ] == K_ESC - //EXIT - __KeyBoard( chr( K_CTRL_ENTER ) ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_ENTER + CASE ::scn_:LASTKEY == K_ESC + IF alert( "Do you want to exit ?", { "Yes","No" } ) == 1 + EXIT + ENDIF + CASE ::scn_:LASTKEY == K_CTRL_ENTER + IF alert( "Do you want TO save screen ?", { "Yes","No" } ) == 1 + ::scrSave() + ENDIF EXIT + + CASE ::scn_:LASTKEY == K_ALT_S + ::scrSave() - CASE scn_[ SCN_LASTKEY ] == K_RIGHT - scrMovRgt( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_LEFT - scrMovLft( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_UP - scrMovUp( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_DOWN - scrMovDn( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_MWBACKWARD - scrMovDn( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_MWFORWARD - scrMovUp( scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_HOME - scn_[ SCN_COL_REP ] := 1 - scn_[ SCN_COL_CUR ] := scn_[ SCN_LEFT ] - scn_[ SCN_COL_DIS ] := scn_[ SCN_LEFT ]-1 - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - CASE scn_[ SCN_LASTKEY ] == K_END - scn_[SCN_COL_REP] := scn_[SCN_COL_MAX] - scn_[SCN_COL_CUR] := scn_[SCN_RIGHT] - scn_[SCN_COL_DIS] := (scn_[SCN_LEFT]-1) - (scn_[SCN_COL_REP]-(scn_[SCN_RIGHT]-scn_[SCN_LEFT]+1)) - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - CASE scn_[ SCN_LASTKEY ] == K_PGUP + CASE ::scn_:LASTKEY == K_RIGHT + ::scrMovRgt() + CASE ::scn_:LASTKEY == K_LEFT + ::scrMovLft() + CASE ::scn_:LASTKEY == K_UP + ::scrMovUp() + CASE ::scn_:LASTKEY == K_DOWN + ::scrMovDn() + CASE ::scn_:LASTKEY == K_MWBACKWARD + ::scrMovDn() + CASE ::scn_:LASTKEY == K_MWFORWARD + ::scrMovUp() + CASE ::scn_:LASTKEY == K_HOME + ::scn_:COL_REP := 1 + ::scn_:COL_CUR := ::scn_:LEFT + ::scn_:COL_DIS := ::scn_:LEFT - 1 + ::scn_:REFRESH := OBJ_REFRESH_ALL + CASE ::scn_:LASTKEY == K_END + ::scn_:COL_REP := ::scn_:COL_MAX + ::scn_:COL_CUR := ::scn_:RIGHT + ::scn_:COL_DIS := ( ::scn_:LEFT - 1 ) - ( ::scn_:COL_REP - ( ::scn_:RIGHT - ::scn_:LEFT + 1 ) ) + ::scn_:REFRESH := OBJ_REFRESH_ALL + CASE ::scn_:LASTKEY == K_PGUP // scrMovPgUp(scn_) - scn_[SCN_ROW_REP] := 1 - scn_[SCN_ROW_CUR] := scn_[SCN_TOP] - scn_[SCN_ROW_DIS] := scn_[SCN_TOP] - 1 - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - CASE scn_[ SCN_LASTKEY ] == K_PGDN - // scn_[SCN_ROW_REP] := scn_[SCN_REP_LINES] - // scn_[SCN_ROW_CUR] := scn_[SCN_BOTTOM] + ::scn_:ROW_REP := 1 + ::scn_:ROW_CUR := ::scn_:TOP + ::scn_:ROW_DIS := ::scn_:TOP - 1 + ::scn_:REFRESH := OBJ_REFRESH_ALL + CASE ::scn_:LASTKEY == K_PGDN + // ::scn_:ROW_REP := ::scn_:REP_LINES + // ::scn_:ROW_CUR := ::scn_:BOTTOM - CASE scn_[ SCN_LASTKEY ] == K_INS + CASE ::scn_:LASTKEY == K_INS readInsert( !readInsert() ) setcursor( iif( readInsert(), 2, 1 ) ) - CASE scn_[ SCN_LASTKEY ] == K_ENTER - IF scn_[ SCN_MODE ] == OBJ_MODE_SELECT .AND. scn_[ SCN_OBJ_SELECTED ] > 0 - obj_[ scn_[ SCN_OBJ_SELECTED ], OBJ_SECTION ] := scrSecCur( scn_, scn_[ SCN_ROW_REP ] ) - scn_[ SCN_COL_MAX ] := max( scn_[ SCN_COL_MAX ], obj_[ scn_[ SCN_OBJ_SELECTED ], OBJ_TO_COL ] + 1 ) - scn_[ SCN_MODE ] := OBJ_MODE_IDLE - scn_[ SCN_REFRESH ] := OBJ_REFRESH_LINE - scn_[ SCN_OBJ_SELECTED ] := 0 - scrMsg() + CASE ::scn_:LASTKEY == K_ENTER + IF ::scn_:MODE == OBJ_MODE_SELECT .AND. ::scn_:OBJ_SELECTED > 0 + ::obj_[ ::scn_:OBJ_SELECTED, OBJ_SECTION ] := 1 + ::scn_:COL_MAX := max( ::scn_:COL_MAX, ::obj_[ ::scn_:OBJ_SELECTED, OBJ_TO_COL ] + 1 ) + ::scn_:MODE := OBJ_MODE_IDLE + ::scn_:REFRESH := OBJ_REFRESH_LINE + ::scn_:OBJ_SELECTED := 0 + ::scrMsg() ENDIF - CASE VouchInRange( scn_[ SCN_LASTKEY ], K_SPACE, 254 ) .AND. scn_[ SCN_MODE ] <> OBJ_MODE_SELECT - scrAddTxt( obj_, scn_, scn_[ SCN_LASTKEY ], 1 ) + CASE VouchInRange( ::scn_:LASTKEY, K_SPACE, 254 ) .AND. ::scn_:MODE <> OBJ_MODE_SELECT + ::scrAddTxt( 1 ) - CASE scn_[ SCN_LASTKEY ] == K_F1 // Help + CASE ::scn_:LASTKEY == K_F1 // Help help( 'NWREPORT' ) - - CASE scn_[ SCN_LASTKEY ] == K_F2 // Calculator - //calculate() - - CASE scn_[ SCN_LASTKEY ] == K_F3 // OBJECT - scrObject(obj_,scn_) - - CASE scn_[ SCN_LASTKEY ] == K_F4 // Properties - scrProperty( obj_,scn_ ) - - CASE scn_[ SCN_LASTKEY ] == K_F7 .OR. scn_[ SCN_LASTKEY ] == K_ALT_C // Copy - scrObjCopy(obj_,scn_) - - CASE scn_[ SCN_LASTKEY ] == K_F8 .OR. scn_[ SCN_LASTKEY ] == K_ALT_V // Paste - scrObjPas(obj_,scn_) - - CASE scn_[ SCN_LASTKEY ] == K_F9 // Box - scrAddBox( obj_,scn_,0 ) - - CASE scn_[ SCN_LASTKEY ] == K_F10 // Fields - scrAddFld( obj_,scn_,0 ) - - CASE scn_[ SCN_LASTKEY ] == K_DEL - IF ! empty( scn_[ SCN_TEXT_BLOCK_] ) - obj_:= scrTextDel( obj_,scn_ ) - scrOrdObj( obj_, scn_ ) - scn_[ SCN_MODE ] := 0 - scn_[ SCN_OBJ_SELECTED ] := 0 - scn_[ SCN_OBJ_HILITE ] := 0 - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - ELSEIF scrIsObjTxt( obj_,scn_ ) - scrAddTxt( obj_, scn_, scn_[ SCN_LASTKEY ], 2 ) - ELSEIF scn_[ SCN_MODE ] == OBJ_MODE_SELECT - obj_:= scrObjDel( obj_, scn_, scn_[ SCN_OBJ_SELECTED ] ) - scn_[ SCN_MODE ] := 0 - scn_[ SCN_OBJ_SELECTED ] := 0 - ELSEIF scn_[ SCN_OBJ_HILITE ] > 0 - obj_:= scrObjDel( obj_, scn_, scn_[ SCN_OBJ_HILITE ] ) - scn_[ SCN_MODE ] := 0 - scn_[ SCN_OBJ_SELECTED ] := 0 - scn_[ SCN_OBJ_HILITE ] := 0 - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL + CASE ::scn_:LASTKEY == K_F3 // OBJECT + ::scrObject() + CASE ::scn_:LASTKEY == K_F4 // Properties + ::scrProperty() + CASE ::scn_:LASTKEY == K_F7 // Copy + ::scrObjCopy() + CASE ::scn_:LASTKEY == K_F8 // Paste + ::scrObjPas() + CASE ::scn_:LASTKEY == K_F9 // Box + ::scrAddBox() + CASE ::scn_:LASTKEY == K_F10 // Fields + ::scrAddFld() + CASE ::scn_:LASTKEY == K_DEL + IF ! empty( ::scn_:TEXT_BLOCK_ ) + ::scrTextDel() + ::scrOrdObj() + ::scn_:MODE := 0 + ::scn_:OBJ_SELECTED := 0 + ::scn_:OBJ_HILITE := 0 + ::scn_:REFRESH := OBJ_REFRESH_ALL + ELSEIF ::scrIsObjTxt() + ::scrAddTxt( 2 ) + ELSEIF ::scn_:MODE == OBJ_MODE_SELECT + ::scrObjDel( ::scn_:OBJ_SELECTED ) + ::scn_:MODE := 0 + ::scn_:OBJ_SELECTED := 0 + ELSEIF ::scn_:OBJ_HILITE > 0 + ::scrObjDel( ::scn_:OBJ_HILITE ) + ::scn_:MODE := 0 + ::scn_:OBJ_SELECTED := 0 + ::scn_:OBJ_HILITE := 0 + ::scn_:REFRESH := OBJ_REFRESH_ALL ENDIF - CASE scn_[ SCN_LASTKEY ] == K_BS - IF scn_[ SCN_MODE ] <> OBJ_MODE_SELECT - IF scrMovLft( scn_ ) - IF scrIsObjTxt( obj_,scn_ ) - scrAddTxt( obj_,scn_,scn_[ SCN_LASTKEY ], 3 ) + CASE ::scn_:LASTKEY == K_BS + IF ::scn_:MODE <> OBJ_MODE_SELECT + IF ::scrMovLft() + IF ::scrIsObjTxt() + ::scrAddTxt( 3 ) ENDIF ENDIF ENDIF - CASE scn_[ SCN_LASTKEY ] == K_ALT_B - scrAddBox( obj_, scn_, 0 ) - - CASE scn_[ SCN_LASTKEY ] == K_ALT_F - scrAddFld( obj_, scn_, 0 ) - CASE scn_[ SCN_LASTKEY ] == K_ALT_E - //scrAddExp( obj_, scn_, 0 ) - CASE scn_[ SCN_LASTKEY ] == K_ALT_N - scrAddLine( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_ALT_O - scrDelLine( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_ALT_W - scrRepCol( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_F6 // Selection of Block - scrTextBlock( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_F7 // Move, Copy - obj_:= scrTextMove( obj_, scn_, 1 ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_F8 // Move, Cut AND Paste - obj_:= scrTextMove( obj_, scn_, 0 ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_Z - scrExport( obj_, scn_ ) - CASE scn_[ SCN_LASTKEY ] == K_CTRL_W - scrImport( @obj_, @scn_ ) - CASE scn_[ SCN_LASTKEY ] == HB_K_RESIZE - ScrWvtConfig( obj_, scn_ ) - scrDisplay( scn_ ) - scrMove( obj_, scn_ ) - scrStatus( obj_, scn_ ) + CASE ::scn_:LASTKEY == K_ALT_N + ::scrAddLine() + CASE ::scn_:LASTKEY == K_ALT_O + ::scrDelLine() + CASE ::scn_:LASTKEY == K_ALT_W + ::scrRepCol() + CASE ::scn_:LASTKEY == K_CTRL_F6 // Selection of Block + ::scrTextBlock() + CASE ::scn_:LASTKEY == K_CTRL_F7 // Move, Copy + ::scrTextMove( 1 ) + CASE ::scn_:LASTKEY == K_CTRL_F8 // Move, Cut AND Paste + ::scrTextMove( 0 ) + CASE ::scn_:LASTKEY == HB_K_RESIZE + ::scrReConfig() + ::scrDisplay() + ::scrMove() + ::scrStatus() + ENDCASE - IF scn_[ SCN_MODE ] == OBJ_MODE_SELECT - scn_[ SCN_REFRESH ] := iif( scn_[ SCN_REFRESH ] == OBJ_REFRESH_NIL,; - OBJ_REFRESH_LINE, scn_[ SCN_REFRESH ] ) - scrUpdObjRC( obj_, scn_ ) + IF ::scn_:MODE == OBJ_MODE_SELECT + ::scn_:REFRESH := iif( ::scn_:REFRESH == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, ::scn_:REFRESH ) + ::scrUpdObjRC() ENDIF // Check on which OBJECT cursor is placed // - nObj := scrChkObj( obj_, scn_ ) + nObj := ::scrChkObj() - IF nObj > 0 .AND. scn_[ SCN_MODE ] <> OBJ_MODE_SELECT - scn_[ SCN_REFRESH ] := iif( scn_[ SCN_REFRESH ] == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, scn_[ SCN_REFRESH ] ) - scn_[ SCN_OBJ_HILITE ] := nObj - scrOnFirstCol( obj_, scn_, nObj, { OBJ_O_FIELD, OBJ_O_EXP } ) + IF nObj > 0 .AND. ::scn_:MODE <> OBJ_MODE_SELECT + ::scn_:REFRESH := iif( ::scn_:REFRESH == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, ::scn_:REFRESH ) + ::scn_:OBJ_HILITE := nObj + ::scrOnFirstCol( nObj, { OBJ_O_FIELD, OBJ_O_EXP } ) - ELSEIF ! empty( scn_[ SCN_OBJ_HILITE ] ) - scn_[ SCN_REFRESH ] := iif( scn_[ SCN_REFRESH ] == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, scn_[ SCN_REFRESH ] ) - scn_[ SCN_OBJ_HILITE ] := 0 + ELSEIF ! empty( ::scn_:OBJ_HILITE ) + ::scn_:REFRESH := iif( ::scn_:REFRESH == OBJ_REFRESH_NIL, OBJ_REFRESH_LINE, ::scn_:REFRESH ) + ::scn_:OBJ_HILITE := 0 ENDIF - IF nObj > 0 .AND. scn_[ SCN_LASTKEY ] == K_F5 // Edit - IF obj_[ nObj, OBJ_TYPE ] == OBJ_O_FIELD - scrAddFld( obj_, scn_, nObj ) - ELSEIF obj_[ nObj, OBJ_TYPE ] == OBJ_O_TEXT - scrTxtProp( obj_, scn_, nObj ) - ELSEIF obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX - scrAddBox( obj_, scn_, nObj ) - ENDIF + IF nObj > 0 .AND. ::scn_:LASTKEY == K_F5 + SWITCH ::obj_[ nObj, OBJ_TYPE ] + CASE OBJ_O_FIELD + ::scrAddFld( nObj ) ; EXIT + CASE OBJ_O_TEXT + ::scrTxtProp( nObj ); EXIT + CASE OBJ_O_BOX + ::scrAddBox( nObj ) ; EXIT + ENDSWITCH ENDIF // Is the OBJECT selected - IF nObj > 0 .AND. scn_[ SCN_LASTKEY ] == K_F6 .AND. obj_[ nObj,OBJ_TYPE] == OBJ_O_BOX - scn_[SCN_MODE] := OBJ_MODE_SELECT - scn_[SCN_OBJ_SELECTED] := nObj - scrOnFirstCol( obj_, scn_, nObj, { OBJ_O_BOX } ) - scrMsg( "Box is Selected. Use Arrow Keys TO Move, Enter TO Finished !" ) + IF nObj > 0 .AND. ::scn_:LASTKEY == K_F6 .AND. ::obj_[ nObj,OBJ_TYPE ] == OBJ_O_BOX + ::scn_:MODE := OBJ_MODE_SELECT + ::scn_:OBJ_SELECTED := nObj + ::scrOnFirstCol( nObj, { OBJ_O_BOX } ) + ::scrMsg( "Box is Selected. Use Arrow Keys to Move, Enter to Finish !" ) - ELSEIF nObj > 0 .AND. scn_[ SCN_LASTKEY ] == K_F6 .AND. ! ( obj_[ nObj,OBJ_TYPE ] == OBJ_O_BOX ) - scn_[ SCN_MODE ] := OBJ_MODE_SELECT - scn_[ SCN_OBJ_SELECTED ] := nObj - scrOnFirstCol( obj_, scn_, nObj, { OBJ_O_TEXT } ) - scrMsg( "OBJECT is Selected. Use Arrow Keys TO Move, Enter TO Finished" ) + ELSEIF nObj > 0 .AND. ::scn_:LASTKEY == K_F6 .AND. ! ( ::obj_[ nObj,OBJ_TYPE ] == OBJ_O_BOX ) + ::scn_:MODE := OBJ_MODE_SELECT + ::scn_:OBJ_SELECTED := nObj + ::scrOnFirstCol( nObj, { OBJ_O_TEXT } ) + ::scrMsg( "OBJECT is Selected. Use Arrow Keys to Move, Enter to Finished" ) ENDIF - IF scn_[ SCN_REFRESH ] == OBJ_REFRESH_ALL - scrMove( obj_, scn_ ) - ELSEIF scn_[ SCN_REFRESH ] == OBJ_REFRESH_LINE - IF scrIsBoxIn( obj_, scn_ ) - scrMove( obj_, scn_ ) + IF ::scn_:REFRESH == OBJ_REFRESH_ALL + ::scrMove() + ELSEIF ::scn_:REFRESH == OBJ_REFRESH_LINE + IF ::scrIsBoxIn() + ::scrMove() ELSE - scrMoveLine( obj_, scn_ ) + ::scrMoveLine() ENDIF ENDIF - scrStatus( obj_, scn_ ) // Status Line + ::scrStatus() - IF scn_[ SCN_GRAPHICS ] // Graphics Window + IF ::scn_:GRAPHICS //grfRest() ENDIF ENDDO - RECOVER - alert('ERROR has occured WHILE designing this document, save it anyway!') - END SEQUENCE - errorBlock( bError ) + ::scrOrdObj() - IF scn_[ SCN_GRAPHICS ] - //graphChar() - scn_[ SCN_GRAPHICS ] := .f. + RETURN Self + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrDisplay() + + dispbegin() + setcursor(0) + setColor( ::scn_:CLR_OVERALL ) + cls + + @ ::scn_:ROW_RULER, ::scn_:LEFT ; + SAY substr( ::scn_:RULER, 1, ::scn_:RIGHT - ::scn_:LEFT + 1 ) ; + COLOR ::scn_:CLR_RULER + + ::scrMsg() + + setcolor( ::scn_:CLR_WINDOW ) + setCursor(2) + dispend() + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD hbCUIEditor:scrMove() + LOCAL i + LOCAL crs := setCursor( 0 ) + LOCAL nOff, cText, nRow, nCol, cColor + + dispBegin() + + dispBox(::scn_:TOP ,; + ::scn_:LEFT ,; + ::scn_:BOTTOM ,; + ::scn_:RIGHT ,; + ::scn_:DRAW_FILL,; + ::scn_:CLR_PREV ) + + FOR i := 1 TO len( ::obj_ ) + IF ::obj_[ i,OBJ_ROW ] + ::scn_:ROW_DIS <= ::scn_:BOTTOM .AND. ; + ::obj_[ i,OBJ_COL ] + ::scn_:COL_DIS <= ::scn_:RIGHT + + nOff := ::obj_[ i,OBJ_COL ] + ::scn_:COL_DIS + nRow := ::obj_[ i,OBJ_ROW ] + ::scn_:ROW_DIS + nCol := ::obj_[ i,OBJ_COL ] + ::scn_:COL_DIS + + IF nOff < 0 + nCol := 0 + ENDIF + + IF ::obj_[ i,OBJ_TYPE ] == OBJ_O_BOX + cColor := iif( ::scn_:OBJ_SELECTED == i, ::scn_:CLR_SELECT,; + iif( ::scn_:OBJ_HILITE == i, ::scn_:CLR_HILITE,; + 'W/B' /* obj_[i,OBJ_COLOR] */ ) ) + DO CASE + CASE VouchInArray( ::obj_[ i,OBJ_MDL_F_TYPE ], { 61,62,63,67,68 } ) + dispBox( ::obj_[ i,OBJ_ROW ] + ::scn_:ROW_DIS,; + ::obj_[ i,OBJ_COL ] + ::scn_:COL_DIS,; + ::obj_[ i,OBJ_TO_ROW ] + ::scn_:ROW_DIS,; + ::obj_[ i,OBJ_TO_COL ] + ::scn_:COL_DIS,; + substr( ::obj_[ i, OBJ_BOX_SHAPE ], 1, 8 ),; + cColor ) + + CASE VouchInArray( ::obj_[ i, OBJ_MDL_F_TYPE ], { 64,65 } ) // Line + @ ::obj_[ i, OBJ_ROW ] + ::scn_:ROW_DIS,; + ::obj_[ i, OBJ_COL ] + ::scn_:COL_DIS ; + TO ::obj_[ i, OBJ_TO_ROW ] + ::scn_:ROW_DIS,; + ::obj_[ i, OBJ_TO_COL ] + ::scn_:COL_DIS ; + COLOR cColor + + ENDCASE + ENDIF + + IF ::obj_[ i, OBJ_TYPE ] == OBJ_O_FIELD + cText := ::obj_[ i,OBJ_TEXT ] + cColor := iif( ::scn_:OBJ_SELECTED == i, ::scn_:CLR_SELECT,; + iif( ::scn_:OBJ_HILITE == i, ::scn_:CLR_HILITE,; + 'W+/W' /* obj_[i,OBJ_COLOR] */ ) ) + IF nOff < 0 + cText := substr( ::obj_[ i,OBJ_TEXT ], abs( nOff ) + 1 ) + ENDIF + @ nRow, nCol SAY cText COLOR cColor + ENDIF + + IF ::obj_[ i, OBJ_TYPE ] == OBJ_O_TEXT + cText := ::obj_[ i,OBJ_EQN ] + cColor := iif( ::scn_:OBJ_SELECTED == i, ::scn_:CLR_SELECT,; + iif( empty( ::obj_[ i, OBJ_COLOR ] ), ::scn_:CLR_TEXT,; + 'W/B' /* obj_[i,OBJ_COLOR] */) ) + IF nOff < 0 + cText := substr( ::obj_[ i, OBJ_EQN ], abs( nOff ) + 1 ) + ENDIF + + @ nRow, nCol SAY cText COLOR cColor + ENDIF + + ELSEIF ( ::obj_[ i, OBJ_ROW ] + ::scn_:ROW_DIS > ::scn_:BOTTOM ) + + ENDIF + NEXT + + ::ScrDispSelected() + dispEnd() + setcursor( crs ) + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD hbCUIEditor:scrMoveLine() + LOCAL i,crs, nRow, nCol, cText, nOff, cColor + + crs := setCursor( 0 ) + + IF ::scn_:ROW_PREV == ::scn_:ROW_CUR + dispbegin() + dispBox( ::scn_:ROW_CUR ,; + ::scn_:LEFT ,; + ::scn_:ROW_CUR ,; + ::scn_:RIGHT ,; + ::scn_:DRAW_FILL,; + ::scn_:CLR_PREV ) + + FOR i := 1 TO len( ::obj_ ) + nOff := ::obj_[ i, OBJ_COL ] + ::scn_:COL_DIS + nRow := ::obj_[ i, OBJ_ROW ] + ::scn_:ROW_DIS + nCol := nOff + + IF ::obj_[ i, OBJ_TYPE ] == OBJ_O_BOX + DO CASE + CASE VouchInArray( ::obj_[ i, OBJ_MDL_F_TYPE ], {64,65} ) // Lines V.H + @ ::obj_[ i, OBJ_ROW ] + ::scn_:ROW_DIS,; + ::obj_[ i, OBJ_COL ] + ::scn_:COL_DIS ; + TO ::obj_[ i, OBJ_TO_ROW ] + ::scn_:ROW_DIS,; + ::obj_[ i, OBJ_TO_COL ] + ::scn_:COL_DIS ; + COLOR iif( ::scn_:OBJ_HILITE == i, ::scn_:CLR_HILITE,; + 'W/B' /* obj_[i,OBJ_COLOR] */ ) + ENDCASE + ENDIF + + IF ::obj_[ i, OBJ_ROW ] == ::scn_:ROW_REP + IF ::obj_[ i, OBJ_TYPE ] == OBJ_O_FIELD + cText := ::obj_[ i,OBJ_TEXT ] + cColor := iif( ::scn_:OBJ_SELECTED == i, ::scn_:CLR_SELECT,; + iif( ::scn_:OBJ_HILITE == i, ::scn_:CLR_HILITE,; + 'W+/W' /* obj_[i,OBJ_COLOR] */ )) + @ nRow, nCol SAY cText COLOR cColor + ENDIF + + IF ::obj_[ i, OBJ_TYPE ] == OBJ_O_TEXT + cText := ::obj_[ i, OBJ_EQN ] + cColor := iif( ::scn_:OBJ_SELECTED == i, ::scn_:CLR_SELECT,; + iif( empty( ::obj_[ i, OBJ_COLOR ] ), ::scn_:CLR_TEXT,; + 'W/B' /* obj_[i,OBJ_COLOR] */)) + @ nRow, nCol SAY cText COLOR cColor + ENDIF + ENDIF + NEXT + + ::scrDispSelected() + + dispEnd() + ELSE + ::scrMove() + + ENDIF + + setCursor( crs ) + RETURN NIL + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrDispSelected() + LOCAL i,j,nCol,nRow + + IF ! empty( ::scn_:TEXT_BLOCK_ ) + DispBegin() + + FOR i := ::scn_:TEXT_BLOCK_[ 1 ] TO ::scn_:TEXT_BLOCK_[ 3 ] + IF ( nRow := i + ::scn_:ROW_DIS ) <= ::scn_:BOTTOM + FOR j := ::scn_:TEXT_BLOCK_[ 2 ] TO ::scn_:TEXT_BLOCK_[ 4 ] + IF ( nCol := j + ::scn_:COL_DIS ) <= ::scn_:RIGHT + @ nRow, nCol SAY ::scrGetChar( i, j ) COLOR 'GR+/R' + ENDIF + NEXT + ENDIF + NEXT + + DispEnd() + ENDIF + RETURN NIL + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrDispGhost( gst_ ) + LOCAL i,j,nRow,nCol + + DispBegin() + FOR i := gst_[ 1 ] TO gst_[ 3 ] + IF ( nRow := i + ::scn_:ROW_DIS ) <= ::scn_:BOTTOM + FOR j := gst_[ 2 ] TO gst_[ 4 ] + IF ( nCol := j + ::scn_:COL_DIS ) <= ::scn_:RIGHT + @ nRow, nCol SAY THE_FILL COLOR 'GR+/R' + ENDIF + NEXT + ENDIF + NEXT + DispEnd() + + RETURN NIL + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrStatus() + LOCAL s, typ_, objId, cClr := 'GR+/BG' + + dispbegin() + s := pad( ::scn_:DESIGN_ID, 8 )+ ' ³ ' + + s += pad( ::scn_:FILE, 12 )+; + ' ³ '+; + ' R:'+; + str( ::scn_:ROW_REP - 1, 3 )+; + ' C:'+; + str( ::scn_:COL_REP - 1, 3 )+; + ' ³ ' +; + iif( readInsert(), 'Ins ', ' ')+; + ' ³ ' + + objId := '' + IF ::scn_:OBJ_HILITE > 0 + objId := ::scn_:OBJ_ID_[ ::obj_[ ::scn_:OBJ_HILITE, OBJ_TYPE ] ] + IF ::obj_[ ::scn_:OBJ_HILITE, OBJ_TYPE ] == OBJ_O_BOX + typ_:= { 'Bitmap', 'Frame', 'Ellipse', 'Line (H)', 'Line (V)', 'Grid', 'BarCode', 'Text Box' } + objId := typ_[ ::obj_[ ::scn_:OBJ_HILITE, OBJ_MDL_F_TYPE ] - 60 ] + ENDIF + + ELSEIF ::scn_:OBJ_SELECTED > 0 + objId := ::scn_:OBJ_ID_[ ::obj_[ ::scn_:OBJ_SELECTED, OBJ_TYPE ] ] + IF ::obj_[ ::scn_:OBJ_SELECTED, OBJ_TYPE ] == OBJ_O_BOX + typ_:= {'Bitmap','Frame','Ellipse','Line (H)','Line (V)','Grid','BarCode','Text Box'} + objId := typ_[ ::obj_[ ::scn_:OBJ_SELECTED, OBJ_MDL_F_TYPE ] - 60 ] + ENDIF ENDIF - scrOrdObj( obj_ ) + s += pad( trim( objId ), 10 ) + ' ³ ' + + @ ::scn_:STATUS_ROW, ::scn_:STATUS_COL ; + SAY pad( s, ::scn_:STATUS_COL_TO - ::scn_:STATUS_COL + 1 ) ; + COLOR ::scn_:CLR_STATUS - RETURN { obj_,scn_ } + /* Ruler */ + s := substr( ::scn_:RULER, max( 1, ::scn_:COL_REP - ::scn_:COL_CUR + ::scn_:LEFT ), ::scn_:RIGHT - ::scn_:LEFT + 1 ) + DispBox( ::scn_:TOP - 1, 0, ::scn_:TOP - 1, maxcol(), ' ', ::scn_:CLR_OVERALL ) + @ ::scn_:ROW_RULER, ::scn_:LEFT SAY s COLOR ::scn_:CLR_RULER + @ ::scn_:ROW_RULER, ::scn_:COL_CUR SAY substr( s, ::scn_:COL_CUR - ::scn_:LEFT + 1, 1 ) COLOR cClr + + @ ::scn_:ROW_CUR, ::scn_:COL_CUR SAY "" + + // Now update current cursor position + ::scn_:ROW_PREV := ::scn_:ROW_CUR + ::scn_:COL_PREV := ::scn_:COL_CUR + + dispend() + + RETURN Self + +/*----------------------------------------------------------------------*/ + +METHOD hbCUIEditor:scrMouse() + LOCAL nmRow, nmCol + LOCAL nEvent := ::scn_:LASTKEY + LOCAL aEvents_:= { K_LBUTTONUP, K_LBUTTONDOWN, K_MMLEFTDOWN } + + STATIC nLastCol := 0 + STATIC nLastRow := 0 + STATIC lAnchored := .f. + STATIC nCursor + + IF ! VouchInArray( ::scn_:LASTKEY, aEvents_ ) + RETURN .f. + ENDIF + + nmRow := mRow() + nmCol := mCol() + + IF nmRow < ::scn_:TOP .OR. nmRow > ::scn_:BOTTOM .OR. ; + nmCol < ::scn_:LEFT .OR. nmCol > ::scn_:RIGHT + RETURN .f. + ENDIF + + ::scrToMouse( nmRow, nmCol ) + + IF nEvent == K_LDBLCLK + + ELSEIF nEvent == K_MMLEFTDOWN /*K_LBUTTONDOWN */ .AND. !( lAnchored ) + IF ::scrChkObj() > 0 .AND. ::scn_:MODE <> OBJ_MODE_SELECT + nCursor := SetCursor( 0 ) + + lAnchored := .t. + ::scn_:LASTKEY := K_F6 +// Wvt_SetMousePos( ::scn_:ROW_CUR, ::scn_:COL_CUR ) + ENDIF + + ELSEIF nEvent == K_MMLEFTDOWN .AND. lAnchored + + ELSEIF nEvent == K_LBUTTONUP .AND. lAnchored +// Wvt_SetMousePos( ::scn_:ROW_CUR, ::scn_:COL_CUR ) + SetCursor( nCursor ) + lAnchored := .f. + __keyboard( chr( K_ENTER ) ) + + ELSEIF nEvent == K_LBUTTONUP + + ENDIF + + RETURN .t. + +/*----------------------------------------------------------------------*/ + +METHOD hbCUIEditor:scrToMouse( nmRow, nmCol ) + LOCAL nRowOff, nColOff + + nRowOff := nmRow - ::scn_:ROW_CUR + IF nRowOff <> 0 + ::scn_:ROW_CUR += nRowOff + ::scn_:ROW_REP += nRowOff + ENDIF + + nColOff := nmCol - ::scn_:COL_CUR + IF nColOff <> 0 + ::scn_:COL_CUR += nColOff + ::scn_:COL_REP += nColOff + ENDIF + + RETURN NIL //----------------------------------------------------------------------// -FUNCTION scrOrdObj(obj_) +METHOD hbCUIEditor:scrOrdObj() // Objects are ordered as per their type - asort( obj_,,, {|e_,f_| e_[ OBJ_TYPE ] < f_[ OBJ_TYPE ] } ) + asort( ::obj_, , , {|e_,f_| e_[ OBJ_TYPE ] < f_[ OBJ_TYPE ] } ) - RETURN obj_ + RETURN Self //----------------------------------------------------------------------// -FUNCTION scrMovRgt( scn_ ) +METHOD hbCUIEditor:scrMovRgt() LOCAL lMoved := .t. - scn_[SCN_COL_CUR]++ - IF scn_[SCN_COL_CUR] > scn_[SCN_RIGHT] - IF scn_[SCN_COL_MAX] > scn_[SCN_COL_REP] - scn_[SCN_COL_DIS]-- - scn_[SCN_COL_CUR]-- - scn_[SCN_COL_REP]++ - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL + ::scn_:COL_CUR++ + IF ::scn_:COL_CUR > ::scn_:RIGHT + IF ::scn_:COL_MAX > ::scn_:COL_REP + ::scn_:COL_DIS-- + ::scn_:COL_CUR-- + ::scn_:COL_REP++ + ::scn_:REFRESH := OBJ_REFRESH_ALL ELSE lMoved := .f. tone( 100,1 ) - scn_[SCN_COL_CUR]-- + ::scn_:COL_CUR-- ENDIF ELSE - scn_[SCN_COL_REP]++ + ::scn_:COL_REP++ ENDIF RETURN lMoved //----------------------------------------------------------------------// -FUNCTION scrMovLft( scn_ ) +METHOD hbCUIEditor:scrMovLft() LOCAL lMoved := .t. - scn_[SCN_COL_CUR]-- - IF scn_[SCN_COL_CUR] < scn_[SCN_LEFT] - IF scn_[SCN_COL_REP] > 1 - scn_[SCN_COL_DIS]++ - scn_[SCN_COL_CUR]++ - scn_[SCN_COL_REP]-- - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL + ::scn_:COL_CUR-- + IF ::scn_:COL_CUR < ::scn_:LEFT + IF ::scn_:COL_REP > 1 + ::scn_:COL_DIS++ + ::scn_:COL_CUR++ + ::scn_:COL_REP-- + ::scn_:REFRESH := OBJ_REFRESH_ALL ELSE lMoved := .f. tone(200,1) - scn_[SCN_COL_CUR]++ + ::scn_:COL_CUR++ ENDIF ELSE - scn_[SCN_COL_REP]-- + ::scn_:COL_REP-- ENDIF RETURN lMoved //----------------------------------------------------------------------// -FUNCTION scrMovUp(scn_) +METHOD hbCUIEditor:scrMovUp() LOCAL lMoved := .t. - scn_[SCN_ROW_CUR]-- - IF scn_[SCN_ROW_CUR] < scn_[SCN_TOP] - scn_[SCN_ROW_CUR] := scn_[SCN_TOP] - IF scn_[SCN_ROW_REP] > 1 - scn_[SCN_ROW_DIS]++ - scn_[SCN_ROW_REP]-- - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL + ::scn_:ROW_CUR-- + IF ::scn_:ROW_CUR < ::scn_:TOP + ::scn_:ROW_CUR := ::scn_:TOP + IF ::scn_:ROW_REP > 1 + ::scn_:ROW_DIS++ + ::scn_:ROW_REP-- + ::scn_:REFRESH := OBJ_REFRESH_ALL ELSE lMoved := .f. tone(300,1) ENDIF ELSE - scn_[SCN_ROW_REP]-- + ::scn_:ROW_REP-- ENDIF RETURN lMoved //----------------------------------------------------------------------// -FUNCTION scrMovDn( scn_ ) +METHOD hbCUIEditor:scrMovDn() LOCAL lMoved := .t. - scn_[ SCN_ROW_CUR ]++ - IF scn_[ SCN_ROW_CUR ] > scn_[ SCN_BOTTOM ] - scn_[ SCN_ROW_CUR ] := scn_[ SCN_BOTTOM ] - IF scn_[ SCN_ROW_REP ] < scn_[ SCN_REP_LINES ] - scn_[ SCN_ROW_DIS ]-- - scn_[ SCN_ROW_REP ]++ - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL + ::scn_:ROW_CUR++ + IF ::scn_:ROW_CUR > ::scn_:BOTTOM + ::scn_:ROW_CUR := ::scn_:BOTTOM + IF ::scn_:ROW_REP < ::scn_:REP_LINES + ::scn_:ROW_DIS-- + ::scn_:ROW_REP++ + ::scn_:REFRESH := OBJ_REFRESH_ALL ELSE lMoved := .f. - tone(300,1) + tone( 300,1 ) ENDIF ELSE - scn_[ SCN_ROW_REP ]++ + ::scn_:ROW_REP++ ENDIF RETURN lMoved //----------------------------------------------------------------------// -FUNCTION scrMovPgUp(scn_) +METHOD hbCUIEditor:scrMovPgUp() LOCAL lMoved := .f. - IF scn_[SCN_ROW_CUR] == scn_[SCN_TOP] - IF scn_[SCN_ROW_REP] > 1 - scn_[SCN_ROW_CUR] := scn_[SCN_TOP] - scn_[SCN_ROW_REP] := 1 - scn_[SCN_ROW_DIS] := scn_[SCN_TOP] - 1 + IF ::scn_:ROW_CUR == ::scn_:TOP + IF ::scn_:ROW_REP > 1 + ::scn_:ROW_CUR := ::scn_:TOP + ::scn_:ROW_REP := 1 + ::scn_:ROW_DIS := ::scn_:TOP - 1 lMoved := .t. - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL + ::scn_:REFRESH := OBJ_REFRESH_ALL ENDIF - ELSE // IF scn_[SCN_ROW_CUR] == scn_[SCN_ROW_BOTTOM] - scn_[SCN_ROW_CUR] := scn_[SCN_TOP] - scn_[SCN_ROW_REP] := scn_[SCN_ROW_REP] - (scn_[SCN_ROW_CUR] - scn_[SCN_TOP]) - scn_[SCN_ROW_DIS] := scn_[SCN_ROW_DIS] - (scn_[SCN_ROW_CUR] - scn_[SCN_TOP]) + ELSE // IF ::scn_:ROW_CUR == ::scn_:ROW_BOTTOM] + ::scn_:ROW_CUR := ::scn_:TOP + ::scn_:ROW_REP := ::scn_:ROW_REP - ( ::scn_:ROW_CUR - ::scn_:TOP ) + ::scn_:ROW_DIS := ::scn_:ROW_DIS - ( ::scn_:ROW_CUR - ::scn_:TOP ) lMoved := .t. ENDIF @@ -533,68 +1007,66 @@ FUNCTION scrMovPgUp(scn_) //----------------------------------------------------------------------// -STATIC FUNCTION scrIsObjTxt(obj_,scn_) - RETURN ascan(obj_, {|e_| e_[OBJ_TYPE]==OBJ_O_TEXT; +METHOD hbCUIEditor:scrIsObjTxt() + RETURN ascan( ::obj_, {|e_| e_ [OBJ_TYPE ] == OBJ_O_TEXT; .AND. ; - VouchInRange(scn_[SCN_ROW_REP],e_[OBJ_ROW],e_[OBJ_TO_ROW]) ; + VouchInRange( ::scn_:ROW_REP, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) ; .AND. ; - VouchInRange(scn_[SCN_COL_REP],e_[OBJ_COL],e_[OBJ_TO_COL]) }) > 0 + VouchInRange( ::scn_:COL_REP, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) > 0 //----------------------------------------------------------------------// -FUNCTION scrChkObj(obj_,scn_) +METHOD hbCUIEditor:scrChkObj() LOCAL n - n := ascan(obj_,{|e_| IF(e_[OBJ_TYPE]==OBJ_O_BOX .OR. e_[OBJ_TYPE]==OBJ_O_BMP,.f.,; - VouchInRange(scn_[SCN_ROW_REP],e_[OBJ_ROW],e_[OBJ_TO_ROW]) ; + n := ascan( ::obj_, {|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_BOX, .f.,; + VouchInRange( ::scn_:ROW_REP, e_[ OBJ_ROW ], e_[OBJ_TO_ROW ] ) ; .AND. ; - VouchInRange(scn_[SCN_COL_REP],e_[OBJ_COL],e_[OBJ_TO_COL])) }) - IF empty(n) // No OBJECT other than box, check box,BMP - n := ascan(obj_,{|e_| ; - VouchInRange(scn_[SCN_ROW_REP],e_[OBJ_ROW],e_[OBJ_TO_ROW]) ; + VouchInRange( ::scn_:COL_REP, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) ) } ) + IF empty( n ) // No OBJECT other than box, check box,BMP + n := ascan( ::obj_,{|e_| ; + VouchInRange( ::scn_:ROW_REP, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) ; .AND. ; - VouchInRange(scn_[SCN_COL_REP],e_[OBJ_COL],e_[OBJ_TO_COL]) }) + VouchInRange( ::scn_:COL_REP, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) ENDIF RETURN n //----------------------------------------------------------------------// -STATIC FUNCTION scrUpdObjRC(obj_,scn_) +METHOD hbCUIEditor:scrUpdObjRC() LOCAL nW, nH - LOCAL nObj := scn_[ SCN_OBJ_SELECTED ] + LOCAL nObj := ::scn_:OBJ_SELECTED IF nObj > 0 - nH := obj_[ nObj,OBJ_TO_ROW ] - obj_[ nObj,OBJ_ROW ] - nW := obj_[ nObj,OBJ_TO_COL ] - obj_[ nObj,OBJ_COL ] + nH := ::obj_[ nObj,OBJ_TO_ROW ] - ::obj_[ nObj,OBJ_ROW ] + nW := ::obj_[ nObj,OBJ_TO_COL ] - ::obj_[ nObj,OBJ_COL ] - obj_[ nObj,OBJ_ROW ] := scn_[SCN_ROW_REP] - obj_[ nObj,OBJ_COL ] := scn_[SCN_COL_REP] + ::obj_[ nObj,OBJ_ROW ] := ::scn_:ROW_REP + ::obj_[ nObj,OBJ_COL ] := ::scn_:COL_REP - IF obj_[ nObj,OBJ_TYPE ] == OBJ_O_BOX - obj_[ nObj,OBJ_TO_ROW ] := obj_[ nObj,OBJ_ROW ] + nH - obj_[ nObj,OBJ_TO_COL ] := obj_[ nObj,OBJ_COL ] + nW + IF ::obj_[ nObj,OBJ_TYPE ] == OBJ_O_BOX + ::obj_[ nObj,OBJ_TO_ROW ] := ::obj_[ nObj,OBJ_ROW ] + nH + ::obj_[ nObj,OBJ_TO_COL ] := ::obj_[ nObj,OBJ_COL ] + nW ELSE - obj_[ nObj,OBJ_TO_ROW ] := scn_[SCN_ROW_REP] - obj_[ nObj,OBJ_TO_COL ] := scn_[SCN_COL_REP] + ; - len( obj_[ nObj, iif( obj_[ nObj,OBJ_TYPE ] == OBJ_O_TEXT, OBJ_EQN, OBJ_TEXT ) ] ) - 1 + ::obj_[ nObj,OBJ_TO_ROW ] := ::scn_:ROW_REP + ::obj_[ nObj,OBJ_TO_COL ] := ::scn_:COL_REP + ; + len( ::obj_[ nObj, iif( ::obj_[ nObj,OBJ_TYPE ] == OBJ_O_TEXT, OBJ_EQN, OBJ_TEXT ) ] ) - 1 ENDIF ENDIF RETURN NIL //----------------------------------------------------------------------// -STATIC FUNCTION scrRepCol( obj_,scn_ ) - LOCAL oCol := scn_[SCN_COL_MAX], nCol - - HB_SYMBOL_UNUSED( obj_ ) +METHOD hbCUIEditor:scrRepCol() + LOCAL oCol := ::scn_:COL_MAX, nCol nCol := VouchGetSome( 'Number of Columns?', oCol ) IF !empty( nCol ) nCol := max( 10,nCol ) - scn_[SCN_COL_MAX ] := nCol - scn_[SCN_RIGHT ] := min( maxCol(), scn_[SCN_LEFT]+nCol-1 ) - scn_[SCN_REFRESH ] := OBJ_REFRESH_ALL - scn_[ SCN_PROPERTY, REP_COLS ] := nCol + ::scn_:COL_MAX := nCol + ::scn_:RIGHT := min( maxCol(), ::scn_:LEFT + nCol - 1 ) + ::scn_:REFRESH := OBJ_REFRESH_ALL +// ::scn_:PROPERTY[ REP_COLS ]:= nCol ENDIF RETURN NIL @@ -603,146 +1075,142 @@ STATIC FUNCTION scrRepCol( obj_,scn_ ) /* This is the routine FROM where row based equations can be implemented */ -STATIC FUNCTION scrAddLine(obj_,scn_) - LOCAL nRow := scn_[SCN_ROW_REP], nSct +METHOD hbCUIEditor:scrAddLine() + LOCAL nRow := ::scn_:ROW_REP, nSct - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - scn_[SCN_BOTTOM ] := min(scn_[SCN_BOTTOM]+1,maxrow()-3) + ::scn_:REFRESH := OBJ_REFRESH_ALL + ::scn_:BOTTOM := min( ::scn_:BOTTOM + 1, maxrow() - 3 ) - nSct := scrSecOrd(scn_,nRow /*scn_[SCN_ROW_REP]*/) + nSct := 1 - scn_[SCN_SECTORS_,nSct,SCT_ROWS]++ - scn_[SCN_REP_LINES]++ + ::scn_:SECTORS_[ nSct, SCT_ROWS ]++ + ::scn_:REP_LINES++ - aeval(obj_,{|e_,i| IF(e_[OBJ_ROW] >= nRow, obj_[i,OBJ_TO_ROW] += 1,'') }) - aeval(obj_,{|e_,i| IF(e_[OBJ_ROW] >= nRow, obj_[i,OBJ_ROW ] += 1,'') }) + aeval( ::obj_, {|e_,i| iif( e_[ OBJ_ROW ] >= nRow, ::obj_[ i, OBJ_TO_ROW ] += 1, '' ) } ) + aeval( ::obj_, {|e_,i| iif( e_[ OBJ_ROW ] >= nRow, ::obj_[ i, OBJ_ROW ] += 1, '' ) } ) - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL + ::scn_:REFRESH := OBJ_REFRESH_ALL RETURN NIL //----------------------------------------------------------------------// -STATIC FUNCTION scrDelLine( obj_, scn_ ) - LOCAL nRow := scn_[ SCN_ROW_REP ] +METHOD hbCUIEditor:scrDelLine() + LOCAL nRow := ::scn_:ROW_REP LOCAL nSct, n, isLast - isLast := nRow == scn_[ SCN_REP_LINES ] + isLast := nRow == ::scn_:REP_LINES - nSct := scrSecOrd( scn_,nRow /*scn_[SCN_ROW_REP]*/ ) - IF scn_[ SCN_SECTORS_, nSct, SCT_ROWS ] == 1 // A Single Row Must remain IN one group + nSct := 1 + IF ::scn_:SECTORS_[ nSct, SCT_ROWS ] == 1 // A Single Row Must remain IN one group RETURN NIL ENDIF - scn_[ SCN_SECTORS_, nSct,SCT_ROWS ]-- - scn_[ SCN_REP_LINES ]-- + ::scn_:SECTORS_[ nSct, SCT_ROWS ]-- + ::scn_:REP_LINES-- - IF scn_[ SCN_REP_LINES ] < (scn_[SCN_BOTTOM]-scn_[SCN_TOP]+1) - scn_[ SCN_BOTTOM ] := max( scn_[ SCN_TOP ], min( scn_[ SCN_BOTTOM ] - 1, maxrow() - 3 ) ) + IF ::scn_:REP_LINES < ( ::scn_:BOTTOM - ::scn_:TOP + 1 ) + ::scn_:BOTTOM := max( ::scn_:TOP, min( ::scn_:BOTTOM - 1, maxrow() - 3 ) ) ENDIF DO WHILE .t. - IF ( n := ascan( obj_, {|e_| e_[ OBJ_ROW ] == nRow } ) ) == 0 + IF ( n := ascan( ::obj_, {|e_| e_[ OBJ_ROW ] == nRow } ) ) == 0 EXIT ENDIF - VouchAShrink( obj_, n ) + VouchAShrink( ::obj_, n ) ENDDO - IF empty( obj_ ) - aadd( obj_, scrObjBlank() ) + IF empty( ::obj_ ) + aadd( ::obj_, ::scrObjBlank() ) ENDIF - aeval( obj_, {|e_,i| iif( e_[ OBJ_ROW ] > nRow, obj_[ i, OBJ_TO_ROW ] -= 1, '' ) } ) - aeval( obj_, {|e_,i| iif( e_[ OBJ_ROW ] > nRow, obj_[ i, OBJ_ROW ] -= 1, '' ) } ) + aeval( ::obj_, {|e_,i| iif( e_[ OBJ_ROW ] > nRow, ::obj_[ i, OBJ_TO_ROW ] -= 1, '' ) } ) + aeval( ::obj_, {|e_,i| iif( e_[ OBJ_ROW ] > nRow, ::obj_[ i, OBJ_ROW ] -= 1, '' ) } ) IF isLast - scn_[SCN_ROW_REP]-- - scn_[SCN_ROW_CUR]-- + ::scn_:ROW_REP-- + ::scn_:ROW_CUR-- ENDIF - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL + ::scn_:REFRESH := OBJ_REFRESH_ALL RETURN NIL //----------------------------------------------------------------------// -STATIC FUNCTION scrIsBoxIn(obj_,scn_) - RETURN ascan( obj_,{|e_| VouchInRange( scn_[SCN_ROW_REP ], e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ); +METHOD hbCUIEditor:scrIsBoxIn() + RETURN ascan( ::obj_,{|e_| VouchInRange( ::scn_:ROW_REP, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ); .AND. ; - (e_[OBJ_TYPE] == OBJ_O_BOX ; - .OR. ; - e_[OBJ_TYPE] == OBJ_O_BMP ) } ) > 0 + ( e_[ OBJ_TYPE ] == OBJ_O_BOX ) } ) > 0 //----------------------------------------------------------------------// -STATIC FUNCTION scrObjCopy(obj_,scn_) +METHOD hbCUIEditor:scrObjCopy() - HB_SYMBOL_UNUSED( obj_ ) - - IF scn_[SCN_MODE] == OBJ_MODE_SELECT - scn_[SCN_OBJ_COPIED] := scn_[SCN_OBJ_SELECTED] - ELSEIF scn_[SCN_OBJ_HILITE] > 0 - scn_[SCN_OBJ_COPIED] := scn_[SCN_OBJ_HILITE] + IF ::scn_:MODE == OBJ_MODE_SELECT + ::scn_:OBJ_COPIED := ::scn_:OBJ_SELECTED + ELSEIF ::scn_:OBJ_HILITE > 0 + ::scn_:OBJ_COPIED := ::scn_:OBJ_HILITE ENDIF RETURN NIL //----------------------------------------------------------------------// -STATIC FUNCTION scrObjPas(obj_,scn_) // Paste Copied OBJECT - LOCAL nObj,o_,oldRow,oldCol,oldRow2,oldcol2 +METHOD hbCUIEditor:scrObjPas() // Paste Copied OBJECT + LOCAL nObj, o_, oldRow, oldCol, oldRow2, oldcol2 - IF (nObj := scn_[SCN_OBJ_COPIED]) > 0 .AND. scn_[SCN_OBJ_SELECTED] == 0 - o_:= aclone(obj_[ nObj]) + IF ( nObj := ::scn_:OBJ_COPIED ) > 0 .AND. ::scn_:OBJ_SELECTED == 0 + o_:= aclone( ::obj_[ nObj ] ) - oldRow := o_[OBJ_ROW] ; oldCol := o_[OBJ_COL] - oldRow2 := o_[OBJ_TO_ROW] ; oldCol2 := o_[OBJ_TO_COL] + oldRow := o_[ OBJ_ROW ] ; oldCol := o_[ OBJ_COL ] + oldRow2 := o_[ OBJ_TO_ROW ] ; oldCol2 := o_[ OBJ_TO_COL ] - o_[OBJ_ROW] := scn_[SCN_ROW_REP] - o_[OBJ_COL] := scn_[SCN_COL_REP] - IF o_[OBJ_TYPE ] == OBJ_O_FIELD .OR. o_[OBJ_TYPE] == OBJ_O_EXP - o_[OBJ_TO_ROW] := scn_[SCN_ROW_REP] - o_[OBJ_TO_COL] := scn_[SCN_COL_REP] + len(o_[OBJ_TEXT]) - 1 - ELSEIF o_[OBJ_TYPE] == OBJ_O_BOX .OR. o_[OBJ_TYPE] == OBJ_O_BMP - o_[OBJ_TO_ROW] := scn_[SCN_ROW_REP] + (oldRow2-oldRow) - o_[OBJ_TO_COL] := scn_[SCN_COL_REP] + (oldCol2-oldCol) - ELSEIF o_[OBJ_TYPE] == OBJ_O_TEXT - o_[OBJ_TO_ROW] := scn_[SCN_ROW_REP] - o_[OBJ_TO_COL] := scn_[SCN_COL_REP] + (oldCol2-oldCol) + o_[ OBJ_ROW ] := ::scn_:ROW_REP + o_[ OBJ_COL ] := ::scn_:COL_REP + IF o_[ OBJ_TYPE ] == OBJ_O_FIELD + o_[ OBJ_TO_ROW ] := ::scn_:ROW_REP + o_[ OBJ_TO_COL ] := ::scn_:COL_REP + len( o_[ OBJ_TEXT ] ) - 1 + ELSEIF o_[ OBJ_TYPE ] == OBJ_O_BOX + o_[ OBJ_TO_ROW ] := ::scn_:ROW_REP + ( oldRow2 - oldRow ) + o_[ OBJ_TO_COL ] := ::scn_:COL_REP + ( oldCol2 - oldCol ) + ELSEIF o_[ OBJ_TYPE ] == OBJ_O_TEXT + o_[ OBJ_TO_ROW] := ::scn_:ROW_REP + o_[ OBJ_TO_COL ] := ::scn_:COL_REP + ( oldCol2 - oldCol ) ENDIF + o_[ OBJ_SECTION ] := 1 - o_[OBJ_SECTION] := scrSecCur(scn_,scn_[SCN_ROW_REP]) + aadd( ::obj_, o_ ) - aadd(obj_,o_) - - scrOrdObj( obj_ ) - scn_[ SCN_OBJ_SELECTED ] := 0 - scn_[ SCN_REFRESH ] := OBJ_REFRESH_LINE - scn_[ SCN_MODE ] := 0 - scn_[ SCN_OBJ_COPIED ] := 0 + ::scrOrdObj() + ::scn_:OBJ_SELECTED := 0 + ::scn_:REFRESH := OBJ_REFRESH_LINE + ::scn_:MODE := 0 + ::scn_:OBJ_COPIED := 0 ENDIF RETURN NIL //----------------------------------------------------------------------// -STATIC FUNCTION scrObjDel(obj_,scn_,nObj) - LOCAL s_:= obj_,nUnique := obj_[ nObj,OBJ_OBJ_UNIQUE],n - - VouchAShrink(s_,nObj) - IF empty(s_) - aadd(s_,scrObjBlank()) +METHOD hbCUIEditor:scrObjDel( nObj ) + LOCAL n + LOCAL nUnique := ::obj_[ nObj, OBJ_OBJ_UNIQUE ] + + VouchAShrink( ::obj_, nObj ) + IF empty( ::obj_ ) + aadd( ::obj_, ::scrObjBlank( )) ENDIF - scn_[SCN_OBJ_SELECTED] := 0 - scn_[SCN_REFRESH] := OBJ_REFRESH_LINE + ::scn_:OBJ_SELECTED := 0 + ::scn_:REFRESH := OBJ_REFRESH_LINE - IF scn_[SCN_DESIGN] == DGN_MODULE .AND. nUnique > 0 - IF (n := ascan(scn_[SCN_FIELDS],{|e_| e_[1] == nUnique })) > 0 - VouchAShrink(scn_[SCN_FIELDS],n) + IF nUnique > 0 + IF ( n := ascan( ::scn_:FIELDS, {|e_| e_[1] == nUnique } ) ) > 0 + VouchAShrink( ::scn_:FIELDS, n ) ENDIF ENDIF - RETURN s_ + RETURN Self //----------------------------------------------------------------------// -STATIC FUNCTION scrObject(obj_,scn_) +METHOD hbCUIEditor:scrObject() LOCAL nObj LOCAL mnu_:={'Field Alt_F' ,; 'Boxes Alt_B' ,; @@ -768,32 +1236,32 @@ STATIC FUNCTION scrObject(obj_,scn_) B_MSG CHOOSE mnu_ RESTORE SHADOW CENTER INTO nObj SELECTABLES sel_ - @ scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] SAY '' + @ ::scn_:ROW_CUR, ::scn_:COL_CUR SAY '' DO CASE CASE nObj == 1 // Field - scrAddFld( obj_, scn_, 0 ) + ::scrAddFld() CASE nObj == 2 // Box - scrAddBox( obj_, scn_, 0 ) + ::scrAddBox() CASE nObj == 3 // Blank CASE nObj == 4 // Columns - scrRepCol( obj_, scn_ ) + ::scrRepCol() CASE nObj == 5 // Graphcs //graphChar() - scn_[ SCN_GRAPHICS ] := ! scn_[ SCN_GRAPHICS ] + ::scn_:GRAPHICS := ! ::scn_:GRAPHICS CASE nObj == 6 // Blank CASE nObj == 7 // Copy - scrObjCopy( obj_, scn_ ) + ::scrObjCopy() CASE nObj ==81 // Paste - scrObjPas( obj_, scn_) + ::scrObjPas() CASE nObj == 9 // Block Selection - scrTextBlock( obj_, scn_ ) + ::scrTextBlock() CASE nObj == 10 // Copy Selectin - obj_:= scrTextMove( obj_, scn_, 1 ) + ::scrTextMove( 1 ) CASE nObj == 11 // Copy & Cut Selection - obj_:= scrTextMove( obj_, scn_, 0 ) + ::scrTextMove( 0 ) CASE nObj == 12 // Blank CASE nObj == 13 // Matrix @@ -803,14 +1271,14 @@ STATIC FUNCTION scrObject(obj_,scn_) //----------------------------------------------------------------------// -STATIC FUNCTION scrTxtProp( obj_, scn_, nObj ) +METHOD hbCUIEditor:scrTxtProp( nObj ) LOCAL sel_, v_ - obj_[ nObj,OBJ_F_LEN ] := len(obj_[ nObj,OBJ_EQN ] ) - obj_[ nObj,OBJ_F_TYPE ] := 'C' + ::obj_[ nObj,OBJ_F_LEN ] := len( ::obj_[ nObj,OBJ_EQN ] ) + ::obj_[ nObj,OBJ_F_TYPE ] := 'C' - v_:= scrObj2Vv( obj_[ nObj ] ) - sel_:= scrVvSelAble(scn_) + v_:= ::scrObj2Vv( ::obj_[ nObj ] ) + sel_:= ::scrVvSelAble() sel_[ VV_ID ] := .F. sel_[ VV_ALIGN ] := .T. @@ -823,83 +1291,83 @@ STATIC FUNCTION scrTxtProp( obj_, scn_, nObj ) sel_[ VV_ZERO ] := .F. sel_[ VV_EQN ] := .F. - scrField( nObj, 3, obj_, scn_, v_, sel_, 'W/B ' ) +// scrField( nObj, 3, ::obj_, ::scn_, v_, sel_, 'W/B ' ) - RETURN NIL + RETURN v_ //----------------------------------------------------------------------// -FUNCTION scrOnLastCol( obj_, scn_, nObj ) +METHOD hbCUIEditor:scrOnLastCol( nObj ) LOCAL nOff, i - IF obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX - nOff := obj_[ nObj, OBJ_TO_COL ] - scn_[ SCN_COL_CUR ] - 1 + IF ::obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX + nOff := ::obj_[ nObj, OBJ_TO_COL ] - ::scn_:COL_CUR - 1 FOR i := 1 TO nOff - scrMovRgt( scn_ ) - scrMove( obj_,scn_ ) - scrStatus( obj_,scn_ ) + ::scrMovRgt() + ::scrMove() + ::scrStatus() NEXT - nOff := obj_[ nObj, OBJ_TO_ROW ] - scn_[ SCN_ROW_CUR ] - 1 + nOff := ::obj_[ nObj, OBJ_TO_ROW ] - ::scn_:ROW_CUR - 1 FOR i := 1 TO nOff - scrMovDn( scn_ ) - scrMove( obj_,scn_ ) - scrStatus( obj_,scn_ ) + ::scrMovDn() + ::scrMove() + ::scrStatus() NEXT - SetPos( scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] ) + SetPos( ::scn_:ROW_CUR, ::scn_:COL_CUR ) ENDIF RETURN NIL //----------------------------------------------------------------------// -STATIC FUNCTION scrOnFirstCol( obj_,scn_,nObj,type_ ) +METHOD hbCUIEditor:scrOnFirstCol( nObj, type_ ) LOCAL nCur, nOff - IF scn_[ SCN_COL_REP ] <> obj_[ nObj,OBJ_COL ] - IF VouchInArray( obj_[ nObj, OBJ_TYPE ], type_ ) - IF obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX - nCur := scn_[ SCN_COL_CUR ] - nOff := scn_[ SCN_COL_REP ] - obj_[ nObj, OBJ_COL ] - scn_[ SCN_COL_CUR ] := max( scn_[ SCN_LEFT ], scn_[ SCN_COL_CUR ] - nOff ) - scn_[ SCN_COL_REP ] := obj_[ nObj, OBJ_COL] - IF nOff > nCur - scn_[ SCN_LEFT ] - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - scn_[ SCN_COL_DIS ] += nOff - ( nCur - scn_[ SCN_LEFT ] ) + IF ::scn_:COL_REP <> ::obj_[ nObj,OBJ_COL ] + IF VouchInArray( ::obj_[ nObj, OBJ_TYPE ], type_ ) + IF ::obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX + nCur := ::scn_:COL_CUR + nOff := ::scn_:COL_REP - ::obj_[ nObj, OBJ_COL ] + ::scn_:COL_CUR := max( ::scn_:LEFT, ::scn_:COL_CUR - nOff ) + ::scn_:COL_REP := ::obj_[ nObj, OBJ_COL] + IF nOff > nCur - ::scn_:LEFT + ::scn_:REFRESH := OBJ_REFRESH_ALL + ::scn_:COL_DIS += nOff - ( nCur - ::scn_:LEFT ) ENDIF - nCur := scn_[ SCN_ROW_CUR ] - nOff := scn_[ SCN_ROW_REP ] - obj_[ nObj, OBJ_ROW ] - scn_[ SCN_ROW_CUR ] := max( scn_[ SCN_TOP ], scn_[ SCN_ROW_CUR ] - nOff ) - scn_[ SCN_ROW_REP ] := obj_[ nObj,OBJ_ROW ] - IF nOff > nCur - scn_[ SCN_TOP ] - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - scn_[ SCN_ROW_DIS ] += nOff - ( nCur - scn_[ SCN_TOP ] ) + nCur := ::scn_:ROW_CUR + nOff := ::scn_:ROW_REP - ::obj_[ nObj, OBJ_ROW ] + ::scn_:ROW_CUR := max( ::scn_:TOP, ::scn_:ROW_CUR - nOff ) + ::scn_:ROW_REP := ::obj_[ nObj,OBJ_ROW ] + IF nOff > nCur - ::scn_:TOP + ::scn_:REFRESH := OBJ_REFRESH_ALL + ::scn_:ROW_DIS += nOff - ( nCur - ::scn_:TOP ) ENDIF ELSE - IF scn_[ SCN_LASTKEY ] == K_RIGHT - nCur := scn_[ SCN_COL_CUR ] - nOff := obj_[ nObj, OBJ_TO_COL ] - scn_[ SCN_COL_REP ] + 1 // NEXT Col TO OBJECT - IF scn_[SCN_COL_REP] + nOff > scn_[SCN_COL_MAX] - scn_[SCN_COL_MAX] := scn_[ SCN_COL_REP ] + nOff + IF ::scn_:LASTKEY == K_RIGHT + nCur := ::scn_:COL_CUR + nOff := ::obj_[ nObj, OBJ_TO_COL ] - ::scn_:COL_REP + 1 // NEXT Col TO OBJECT + IF ::scn_:COL_REP + nOff > ::scn_:COL_MAX + ::scn_:COL_MAX := ::scn_:COL_REP + nOff ENDIF - scn_[SCN_COL_CUR] := min( scn_[ SCN_RIGHT ], scn_[ SCN_COL_CUR ] + nOff ) - scn_[SCN_COL_REP] := obj_[ nObj,OBJ_TO_COL ] + 1 - IF nOff > scn_[SCN_RIGHT] - nCur - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - scn_[SCN_COL_DIS] -= nOff-(scn_[SCN_RIGHT]-nCur) + ::scn_:COL_CUR := min( ::scn_:RIGHT, ::scn_:COL_CUR + nOff ) + ::scn_:COL_REP := ::obj_[ nObj,OBJ_TO_COL ] + 1 + IF nOff > ::scn_:RIGHT - nCur + ::scn_:REFRESH := OBJ_REFRESH_ALL + ::scn_:COL_DIS -= nOff - ( ::scn_:RIGHT - nCur ) ENDIF - scn_[SCN_OBJ_HILITE] := 0 + ::scn_:OBJ_HILITE := 0 ELSE - nCur := scn_[ SCN_COL_CUR ] - nOff := scn_[ SCN_COL_REP ] - obj_[ nObj,OBJ_COL ] - scn_[ SCN_COL_CUR ] := max( scn_[ SCN_LEFT ], scn_[ SCN_COL_CUR ]-nOff ) - scn_[ SCN_COL_REP ] := obj_[ nObj,OBJ_COL] - IF nOff > nCur-scn_[SCN_LEFT] - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - scn_[SCN_COL_DIS] += nOff-(nCur-scn_[SCN_LEFT]) + nCur := ::scn_:COL_CUR + nOff := ::scn_:COL_REP - ::obj_[ nObj,OBJ_COL ] + ::scn_:COL_CUR := max( ::scn_:LEFT, ::scn_:COL_CUR - nOff ) + ::scn_:COL_REP := ::obj_[ nObj,OBJ_COL ] + IF nOff > nCur - ::scn_:LEFT + ::scn_:REFRESH := OBJ_REFRESH_ALL + ::scn_:COL_DIS += nOff - ( nCur - ::scn_:LEFT ) ENDIF ENDIF ENDIF @@ -910,48 +1378,48 @@ STATIC FUNCTION scrOnFirstCol( obj_,scn_,nObj,type_ ) //----------------------------------------------------------------------// -FUNCTION scrGetChar(obj_,nRow,nCol) +METHOD hbCUIEditor:scrGetChar( nRow, nCol ) LOCAL s := THE_FILL,n // Locate Text - n := ascan(obj_,{|e_| e_[ OBJ_ROW ] == nRow .AND. ; + n := ascan( ::obj_,{|e_| e_[ OBJ_ROW ] == nRow .AND. ; VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) IF n == 0 // Locate Box - n := ascan(obj_,{|e_| VouchInRange( nRow, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) .AND. ; - VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) + n := ascan( ::obj_,{|e_| VouchInRange( nRow, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) .AND. ; + VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) ENDIF IF n > 0 - IF obj_[n,OBJ_TYPE]==OBJ_O_TEXT - s := substr(obj_[n,OBJ_EQN],nCol-obj_[n,OBJ_COL]+1,1) + IF ::obj_[ n ,OBJ_TYPE ] == OBJ_O_TEXT + s := substr( ::obj_[ n, OBJ_EQN ], nCol - ::obj_[ n, OBJ_COL ] + 1, 1 ) - ELSEIF obj_[n,OBJ_TYPE]==OBJ_O_FIELD .OR. obj_[n,OBJ_TYPE]==OBJ_O_EXP - s := substr(obj_[n,OBJ_ID ],nCol-obj_[n,OBJ_COL]+1,1) + ELSEIF ::obj_[n,OBJ_TYPE]==OBJ_O_FIELD .OR. ::obj_[n,OBJ_TYPE]==OBJ_O_EXP + s := substr(::obj_[n,OBJ_ID ],nCol-::obj_[n,OBJ_COL]+1,1) - ELSEIF obj_[n,OBJ_TYPE]==OBJ_O_BOX .OR. obj_[n,OBJ_TYPE]==OBJ_O_BMP - IF nRow == obj_[n,OBJ_ROW ] - IF nCol == obj_[n,OBJ_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],1,1) - ELSEIF nCol == obj_[n,OBJ_TO_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],3,1) + ELSEIF ::obj_[n,OBJ_TYPE]==OBJ_O_BOX .OR. ::obj_[n,OBJ_TYPE]==OBJ_O_BMP + IF nRow == ::obj_[n,OBJ_ROW ] + IF nCol == ::obj_[n,OBJ_COL] + s := substr(::obj_[n,OBJ_BOX_SHAPE],1,1) + ELSEIF nCol == ::obj_[n,OBJ_TO_COL] + s := substr(::obj_[n,OBJ_BOX_SHAPE],3,1) ELSE - s := substr(obj_[n,OBJ_BOX_SHAPE],2,1) + s := substr(::obj_[n,OBJ_BOX_SHAPE],2,1) ENDIF - ELSEIF nRow == obj_[n,OBJ_TO_ROW] - IF nCol == obj_[n,OBJ_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],7,1) - ELSEIF nCol == obj_[n,OBJ_TO_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],5,1) + ELSEIF nRow == ::obj_[n,OBJ_TO_ROW] + IF nCol == ::obj_[n,OBJ_COL] + s := substr(::obj_[n,OBJ_BOX_SHAPE],7,1) + ELSEIF nCol == ::obj_[n,OBJ_TO_COL] + s := substr(::obj_[n,OBJ_BOX_SHAPE],5,1) ELSE - s := substr(obj_[n,OBJ_BOX_SHAPE],6,1) + s := substr(::obj_[n,OBJ_BOX_SHAPE],6,1) ENDIF ELSE - IF nCol == obj_[n,OBJ_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],8,1) // 4.8 are Same - ELSEIF nCol == obj_[n,OBJ_TO_COL] - s := substr(obj_[n,OBJ_BOX_SHAPE],4,1) + IF nCol == ::obj_[n,OBJ_COL] + s := substr(::obj_[n,OBJ_BOX_SHAPE],8,1) // 4.8 are Same + ELSEIF nCol == ::obj_[n,OBJ_TO_COL] + s := substr(::obj_[n,OBJ_BOX_SHAPE],4,1) ELSE - s := substr(obj_[n,OBJ_BOX_SHAPE],9,1) + s := substr(::obj_[n,OBJ_BOX_SHAPE],9,1) s := IF(empty(s),THE_FILL,s) ENDIF ENDIF @@ -961,126 +1429,126 @@ FUNCTION scrGetChar(obj_,nRow,nCol) //----------------------------------------------------------------------// -STATIC FUNCTION scrTextBlock(obj_,scn_) +METHOD hbCUIEditor:scrTextBlock() LOCAL n, nKey LOCAL key_:= { K_RIGHT,K_LEFT,K_UP,K_DOWN,K_ENTER } - scrMsg( 'Use TO Select Text Block, TO Finish' ) - scn_[ SCN_TEXT_BLOCK_ ] := { scn_[ SCN_ROW_REP ], scn_[ SCN_COL_REP ], scn_[ SCN_ROW_REP ], scn_[ SCN_COL_REP ] } - scrMove( obj_, scn_ ) - scrStatus( obj_, scn_ ) + ::scn_:TEXT_BLOCK_ := { ::scn_:ROW_REP, ::scn_:COL_REP, ::scn_:ROW_REP, ::scn_:COL_REP } + + ::scrMsg( 'Use TO Select Text Block, TO Finish' ) + ::scrMove() + ::scrStatus() DO WHILE .t. - nKey := scrInkey( key_ ) + nKey := ::scrInkey( key_ ) DO CASE - CASE nKey == key_[1] - IF scrMovRgt(scn_) - scn_[SCN_TEXT_BLOCK_,4]++ + CASE nKey == key_[ 1 ] + IF ::scrMovRgt() + ::scn_:TEXT_BLOCK_[ 4 ]++ ENDIF - CASE nKey == key_[2] - IF scrMovLft(scn_) - scn_[SCN_TEXT_BLOCK_,4]-- + CASE nKey == key_[ 2 ] + IF ::scrMovLft() + ::scn_:TEXT_BLOCK_[ 4 ]-- ENDIF - CASE nKey == key_[3] - IF scrMovUp(scn_) - scn_[SCN_TEXT_BLOCK_,3]-- + CASE nKey == key_[ 3 ] + IF ::scrMovUp() + ::scn_:TEXT_BLOCK_[ 3 ]-- ENDIF - CASE nKey == key_[4] - IF scrMovDn(scn_) - scn_[SCN_TEXT_BLOCK_,3]++ + CASE nKey == key_[ 4 ] + IF ::scrMovDn() + ::scn_:TEXT_BLOCK_[ 3 ]++ ENDIF - CASE nKey == key_[5] + CASE nKey == key_[ 5 ] EXIT ENDCASE - IF scn_[SCN_TEXT_BLOCK_,3] < scn_[SCN_TEXT_BLOCK_,1] - n := scn_[SCN_TEXT_BLOCK_,1] - scn_[SCN_TEXT_BLOCK_,1] := scn_[SCN_TEXT_BLOCK_,3] - scn_[SCN_TEXT_BLOCK_,3] := n + IF ::scn_:TEXT_BLOCK_[ 3 ] < ::scn_:TEXT_BLOCK_[ 1 ] + n := ::scn_:TEXT_BLOCK_[ 1 ] + ::scn_:TEXT_BLOCK_[ 1 ] := ::scn_:TEXT_BLOCK_[ 3 ] + ::scn_:TEXT_BLOCK_[ 3 ] := n ENDIF - IF scn_[SCN_TEXT_BLOCK_,4] < scn_[SCN_TEXT_BLOCK_,2] - n := scn_[SCN_TEXT_BLOCK_,2] - scn_[SCN_TEXT_BLOCK_,2] := scn_[SCN_TEXT_BLOCK_,4] - scn_[SCN_TEXT_BLOCK_,4] := n + IF ::scn_:TEXT_BLOCK_[ 4 ] < ::scn_:TEXT_BLOCK_[ 2 ] + n := ::scn_:TEXT_BLOCK_[ 2 ] + ::scn_:TEXT_BLOCK_[ 2 ] := ::scn_:TEXT_BLOCK_[ 4 ] + ::scn_:TEXT_BLOCK_[ 4 ] := n ENDIF - scrMove(obj_,scn_) - scrStatus(obj_,scn_) + ::scrMove() + ::scrStatus() ENDDO - scrMsg('') + ::scrMsg() RETURN NIL //----------------------------------------------------------------------// -STATIC FUNCTION scrTextMove(obj_,scn_,nMode) - LOCAL gst_,nKey +METHOD hbCUIEditor:scrTextMove( nMode ) + LOCAL gst_, nKey LOCAL crs := setCursor(0) - LOCAL key_:= {K_RIGHT,K_LEFT,K_UP,K_DOWN,K_ENTER} + LOCAL key_:= { K_RIGHT, K_LEFT, K_UP, K_DOWN, K_ENTER } DEFAULT nMode TO 0 // 0.Paste 1.Copy - IF ! empty( scn_[ SCN_TEXT_BLOCK_ ] ) + IF ! empty( ::scn_:TEXT_BLOCK_ ) // CREATE a ghost movement block - scrMsg('Use Arrow Keys TO Move Selected Block') + ::scrMsg('Use Arrow Keys TO Move Selected Block') // Check FOR current cursor position - gst_:= { scn_[ SCN_ROW_REP ] , scn_[ SCN_COL_REP ],; - scn_[ SCN_ROW_REP ] + scn_[ SCN_TEXT_BLOCK_, 3 ] - scn_[ SCN_TEXT_BLOCK_, 1 ],; - scn_[ SCN_COL_REP ] + scn_[ SCN_TEXT_BLOCK_, 4 ] - scn_[ SCN_TEXT_BLOCK_, 2 ] } + gst_:= { ::scn_:ROW_REP , ::scn_:COL_REP,; + ::scn_:ROW_REP + ::scn_:TEXT_BLOCK_[ 3 ] - ::scn_:TEXT_BLOCK_[ 1 ],; + ::scn_:COL_REP + ::scn_:TEXT_BLOCK_[ 4 ] - ::scn_:TEXT_BLOCK_[ 2 ] } DO WHILE .t. - scrMove(obj_,scn_) - scrDispGhost(obj_,scn_,gst_) - scrStatus(obj_,scn_) + ::scrMove() + ::scrDispGhost( gst_ ) + ::scrStatus() - nKey := scrInkey(key_) + nKey := ::scrInkey( key_ ) DO CASE CASE nKey == key_[1] - IF scrMovRgt(scn_) + IF ::scrMovRgt() gst_[2]++ ; gst_[4]++ ENDIF CASE nKey == key_[2] - IF scrMovLft(scn_) + IF ::scrMovLft() gst_[2]-- ; gst_[4]-- ENDIF CASE nKey == key_[3] - IF scrMovUp(scn_) + IF ::scrMovUp() gst_[1]-- ; gst_[3]-- ENDIF CASE nKey == key_[4] - IF scrMovDn(scn_) + IF ::scrMovDn() gst_[1]++ ; gst_[3]++ ENDIF CASE nKey == key_[5] EXIT ENDCASE ENDDO - // Post Selected Block TO Moved Area - obj_:= scrTextPost( obj_, scn_, gst_, nMode ) + + ::scrTextPost( gst_, nMode ) - scrOrdObj( obj_, scn_ ) + ::scrOrdObj() + ::scrMove() + ::scrStatus() - scrMove( obj_, scn_ ) - scrStatus( obj_, scn_ ) - - scrMsg() + ::scrMsg() ENDIF setCursor(crs) - RETURN obj_ + RETURN Self //----------------------------------------------------------------------// -STATIC FUNCTION scrTextPost( obj_, scn_, gst_, nMode ) +METHOD hbCUIEditor:scrTextPost( gst_, nMode ) LOCAL n,i,s,s1,s2,s3,n1,nWid,nCol,nn LOCAL del_:={0},ins_:={},d_:={},ddd_ - LOCAL old_:= scn_[ SCN_TEXT_BLOCK_ ] + LOCAL old_:= aclone( ::scn_:TEXT_BLOCK_ ) FOR i := gst_[ 1 ] TO gst_[ 3 ] n := -1 DO WHILE .t. - n := ascan( obj_, {|e_| e_[ OBJ_ROW ] == i ; + n := ascan( ::obj_, {|e_| e_[ OBJ_ROW ] == i ; .AND. ; ( VouchInRange(e_[OBJ_COL],gst_[2],gst_[4]); .OR. ; @@ -1088,14 +1556,14 @@ STATIC FUNCTION scrTextPost( obj_, scn_, gst_, nMode ) .AND.; ! VouchInArray( n,del_ ) } ) IF n > 0 - IF obj_[ n,OBJ_TYPE ] == OBJ_O_TEXT + IF ::obj_[ n,OBJ_TYPE ] == OBJ_O_TEXT aadd( del_, n ) s1 := '' ; s3 := '' - s := obj_[ n, OBJ_EQN ] - nCol := obj_[ n, OBJ_COL ] + s := ::obj_[ n, OBJ_EQN ] + nCol := ::obj_[ n, OBJ_COL ] - IF gst_[2] <= obj_[ n, OBJ_COL ] .AND. gst_[ 4 ] >= obj_[ n, OBJ_TO_COL ] + IF gst_[2] <= ::obj_[ n, OBJ_COL ] .AND. gst_[ 4 ] >= ::obj_[ n, OBJ_TO_COL ] // Only deletion of OBJECT // s2 := s ELSEIF gst_[2] >= nCol @@ -1109,41 +1577,41 @@ STATIC FUNCTION scrTextPost( obj_, scn_, gst_, nMode ) ENDIF IF len( s1 ) > 0 - aadd( ins_,scrObjBlank() ) + aadd( ins_, ::scrObjBlank() ) n1 := len( ins_ ) ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := obj_[ n, OBJ_ROW ] - ins_[ n1, OBJ_COL ] := obj_[ n, OBJ_COL ] + ins_[ n1, OBJ_ROW ] := ::obj_[ n, OBJ_ROW ] + ins_[ n1, OBJ_COL ] := ::obj_[ n, OBJ_COL ] ins_[ n1, OBJ_EQN ] := s1 ins_[ n1, OBJ_ID ] := 'Text' ins_[ n1, OBJ_COLOR ] := 'W/B' - ins_[ n1, OBJ_SECTION ] := obj_[ n, OBJ_SECTION ] - ins_[ n1, OBJ_TO_ROW ] := obj_[ n, OBJ_ROW ] + ins_[ n1, OBJ_SECTION ] := ::obj_[ n, OBJ_SECTION ] + ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + len( s1 ) - 1 ENDIF IF len( s3 ) > 0 - aadd( ins_, scrObjBlank() ) + aadd( ins_, ::scrObjBlank() ) n1 := len( ins_ ) ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT - ins_[ n1, OBJ_ROW ] := obj_[n, OBJ_ROW] + ins_[ n1, OBJ_ROW ] := ::obj_[n, OBJ_ROW] ins_[ n1, OBJ_COL ] := gst_[ 4 ] + 1 ins_[ n1, OBJ_EQN ] := s3 ins_[ n1, OBJ_ID ] := 'Text' ins_[ n1, OBJ_COLOR ] := 'W/B' - ins_[ n1, OBJ_SECTION ] := obj_[ n, OBJ_SECTION ] - ins_[ n1, OBJ_TO_ROW ] := obj_[ n, OBJ_ROW ] + ins_[ n1, OBJ_SECTION ] := ::obj_[ n, OBJ_SECTION ] + ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + len( s3 ) - 1 ENDIF - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. obj_[n,OBJ_TYPE] == OBJ_O_EXP + ELSEIF ::obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. ::obj_[n,OBJ_TYPE] == OBJ_O_EXP aadd( del_, n ) - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_BOX + ELSEIF ::obj_[n,OBJ_TYPE] == OBJ_O_BOX - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_BMP + ELSEIF ::obj_[n,OBJ_TYPE] == OBJ_O_BMP ENDIF ELSE @@ -1158,29 +1626,29 @@ STATIC FUNCTION scrTextPost( obj_, scn_, gst_, nMode ) n := -1 DO WHILE .t. - n := ascan(obj_,{|e_| e_[OBJ_ROW]==i; + n := ascan(::obj_,{|e_| e_[OBJ_ROW]==i; .AND. ; - (VouchInRange(e_[OBJ_COL],old_[2],old_[4]); + ( VouchInRange(e_[OBJ_COL],old_[2],old_[4]); .OR. ; - VouchInRange(e_[OBJ_TO_COL],old_[2],old_[4])) ; + VouchInRange(e_[OBJ_TO_COL],old_[2],old_[4])) ; .AND. ; - !VouchInArray(n,del_) }) + ! VouchInArray( n, del_ ) } ) IF n > 0 - IF obj_[n,OBJ_TYPE] == OBJ_O_TEXT - aadd(del_,n) + IF ::obj_[ n,OBJ_TYPE ] == OBJ_O_TEXT + aadd( del_, n ) // TO be retained as it is s1 := '' ; s2 := '' ; s3 := '' - s := obj_[n,OBJ_EQN] - nCol := obj_[n,OBJ_COL] + s := ::obj_[ n,OBJ_EQN] + nCol := ::obj_[ n,OBJ_COL] - IF old_[2] <= obj_[n,OBJ_COL] .AND. old_[4] >= obj_[n,OBJ_TO_COL] + IF old_[2] <= ::obj_[n,OBJ_COL] .AND. old_[4] >= ::obj_[n,OBJ_TO_COL] s2 := s // Insert WITH moved coordinates - ELSEIF old_[2] >= obj_[n,OBJ_COL] - s1 := substr(s,1,old_[2]-nCol) - s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) - s3 := substr(s,old_[4]-nCol+2) - ELSEIF old_[2] < nCol + ELSEIF old_[ 2 ] >= ::obj_[ n, OBJ_COL ] + s1 := substr( s, 1, old_[ 2 ] - nCol ) + s2 := substr( s, old_[ 2 ] - nCol + 1, old_[ 4 ] - old_[ 2 ] + 1 ) + s3 := substr( s, old_[ 4 ] - nCol + 2 ) + ELSEIF old_[ 2 ] < nCol s1 := substr(s,1,old_[2]-nCol) s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) s3 := substr(s,old_[4]-nCol+2) @@ -1188,58 +1656,56 @@ STATIC FUNCTION scrTextPost( obj_, scn_, gst_, nMode ) IF nMode == 0 IF len(s1)>0 - aadd(ins_,scrObjBlank()) - n1 := len(ins_) - ins_[n1,OBJ_TYPE] := OBJ_O_TEXT - ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW] - ins_[n1,OBJ_COL] := obj_[n,OBJ_COL] - ins_[n1,OBJ_EQN] := s1 - ins_[n1,OBJ_ID] := 'Text' - ins_[n1,OBJ_COLOR] := 'W/B' - ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION] - ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s1)-1 + aadd( ins_, ::scrObjBlank() ) ; n1 := len( ins_ ) + + ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT + ins_[ n1, OBJ_ROW ] := ::obj_[ n, OBJ_ROW ] + ins_[ n1, OBJ_COL ] := ::obj_[ n, OBJ_COL ] + ins_[ n1, OBJ_EQN ] := s1 + ins_[ n1, OBJ_ID ] := 'Text' + ins_[ n1, OBJ_COLOR ] := 'W/B' + ins_[ n1, OBJ_SECTION ] := ::obj_[ n, OBJ_SECTION ] + ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] + ins_[ n1, OBJ_TO_COL ] := ins_[ n1,OBJ_COL ] + len( s1 ) - 1 ENDIF IF len(s3) > 0 - aadd(ins_,scrObjBlank()) - n1 := len(ins_) - ins_[n1,OBJ_TYPE] := OBJ_O_TEXT - ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW] - ins_[n1,OBJ_COL] := old_[4]+1 - ins_[n1,OBJ_EQN] := s3 - ins_[n1,OBJ_ID] := 'Text' - ins_[n1,OBJ_COLOR] := 'W/B' - ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION] - ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s3)-1 + aadd( ins_, ::scrObjBlank() ) ; n1 := len( ins_ ) + + ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT + ins_[ n1, OBJ_ROW ] := ::obj_[ n, OBJ_ROW ] + ins_[ n1, OBJ_COL ] := old_[ 4 ] + 1 + ins_[ n1, OBJ_EQN ] := s3 + ins_[ n1, OBJ_ID ] := 'Text' + ins_[ n1, OBJ_COLOR ] := 'W/B' + ins_[ n1, OBJ_SECTION ] := ::obj_[ n, OBJ_SECTION] + ins_[ n1, OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] + ins_[ n1, OBJ_TO_COL ] := ins_[ n1,OBJ_COL ] + len( s3 ) - 1 ENDIF ENDIF IF len(s2) > 0 - aadd(ins_,aclone(obj_[n])) - n1 := len(ins_) - ins_[n1,OBJ_ROW] := gst_[1]+nn - ins_[n1,OBJ_COL] := gst_[2]+IF(old_[2]-obj_[n,OBJ_COL]>=0,; - 0,abs(old_[2]-obj_[n,OBJ_COL])) - ins_[n1,OBJ_TO_ROW] := ins_[n1,OBJ_ROW] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s2)-1 - ins_[n1,OBJ_EQN] := s2 + aadd( ins_, aclone( ::obj_[ n ] ) ) ; n1 := len( ins_ ) + + ins_[ n1, OBJ_ROW ] := gst_[ 1 ] + nn + ins_[ n1, OBJ_COL ] := gst_[ 2 ]+ iif( old_[ 2 ] - ::obj_[ n, OBJ_COL ] >= 0, 0, abs( old_[ 2 ] - ::obj_[ n, OBJ_COL ] ) ) + ins_[ n1, OBJ_TO_ROW ] := ins_[ n1, OBJ_ROW ] + ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + len( s2 ) - 1 + ins_[ n1, OBJ_EQN ] := s2 ENDIF - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. ; - obj_[n,OBJ_TYPE] == OBJ_O_EXP + ELSEIF ::obj_[n,OBJ_TYPE] == OBJ_O_FIELD IF nMode == 0 aadd(del_,n) ENDIF // Same OBJECT is TO be inserted IN moved block - aadd(ins_,aclone(obj_[n])) - n1 := len(ins_) - ins_[n1,OBJ_ROW] := gst_[1]+nn - nWid := obj_[n,OBJ_TO_COL]-obj_[n,OBJ_COL] - ins_[n1,OBJ_COL] := gst_[2]+old_[2]-obj_[n,OBJ_COL] - ins_[n1,OBJ_TO_ROW] := ins_[n1,OBJ_ROW] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+nWid + aadd( ins_, aclone( ::obj_[ n ] ) ) ; n1 := len( ins_ ) + nWid := ::obj_[ n, OBJ_TO_COL ] - ::obj_[ n, OBJ_COL ] + + ins_[ n1, OBJ_ROW ] := gst_[ 1 ] + nn + ins_[ n1, OBJ_COL ] := gst_[ 2 ] + old_[ 2 ] - ::obj_[ n, OBJ_COL ] + ins_[ n1, OBJ_TO_ROW ] := ins_[ n1, OBJ_ROW ] + ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + nWid ENDIF ELSE EXIT @@ -1254,34 +1720,34 @@ STATIC FUNCTION scrTextPost( obj_, scn_, gst_, nMode ) aeval( ddd_,{|e| aadd( del_, e ) } ) IF !empty( del_ ) - FOR i := 1 TO len( obj_) + FOR i := 1 TO len( ::obj_) IF ascan( del_, i ) == 0 - aadd( d_, obj_[ i ] ) + aadd( d_, ::obj_[ i ] ) ENDIF NEXT - obj_:= aclone( d_ ) - IF empty( obj_ ) - aadd( obj_, scrObjBlank() ) + ::obj_:= aclone( d_ ) + IF empty( ::obj_ ) + aadd( ::obj_, ::scrObjBlank() ) ENDIF ENDIF - aeval( ins_, {|e_| aadd( obj_, e_ ) } ) + aeval( ins_, {|e_| aadd( ::obj_, e_ ) } ) - scn_[SCN_TEXT_BLOCK_] := {} + ::scn_:TEXT_BLOCK_ := {} - RETURN obj_ + RETURN Self //----------------------------------------------------------------------// -STATIC FUNCTION scrTextDel(obj_,scn_) +METHOD hbCUIEditor:scrTextDel() LOCAL i,n,n1,s,s1,s3,nCol,ins_:={},del_:={},d_:={},old_:={} - old_:= scn_[SCN_TEXT_BLOCK_] + old_:= ::scn_:TEXT_BLOCK_ FOR i := old_[1] TO old_[3] // Rows n := -1 DO WHILE .t. - n := ascan(obj_,{|e_| e_[OBJ_ROW]==i; + n := ascan(::obj_,{|e_| e_[OBJ_ROW]==i; .AND. ; (VouchInRange(e_[OBJ_COL], old_[2],old_[4]); .OR. ; @@ -1289,17 +1755,17 @@ STATIC FUNCTION scrTextDel(obj_,scn_) .AND. ; !VouchInArray(n,del_) }) IF n > 0 - IF obj_[n,OBJ_TYPE] == OBJ_O_TEXT + IF ::obj_[n,OBJ_TYPE] == OBJ_O_TEXT aadd(del_,n) // TO be retained as it is s1 := '' ; s3 := '' - s := obj_[n,OBJ_EQN] - nCol := obj_[n,OBJ_COL] + s := ::obj_[n,OBJ_EQN] + nCol := ::obj_[n,OBJ_COL] - IF old_[2] <= obj_[n,OBJ_COL] .AND. old_[4] >= obj_[n,OBJ_TO_COL] + IF old_[2] <= ::obj_[n,OBJ_COL] .AND. old_[4] >= ::obj_[n,OBJ_TO_COL] // s2 := s // Insert WITH moved coordinates - ELSEIF old_[2] >= obj_[n,OBJ_COL] + ELSEIF old_[2] >= ::obj_[n,OBJ_COL] s1 := substr(s,1,old_[2]-nCol) // s2 := substr(s,old_[2]-nCol+1,old_[4]-old_[2]+1) s3 := substr(s,old_[4]-nCol+2) @@ -1309,35 +1775,35 @@ STATIC FUNCTION scrTextDel(obj_,scn_) s3 := substr(s,old_[4]-nCol+2) ENDIF - IF len(s1)>0 - aadd(ins_,scrObjBlank()) - n1 := len(ins_) - ins_[n1,OBJ_TYPE] := OBJ_O_TEXT - ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW] - ins_[n1,OBJ_COL] := obj_[n,OBJ_COL] - ins_[n1,OBJ_EQN] := s1 - ins_[n1,OBJ_ID] := 'Text' - ins_[n1,OBJ_COLOR] := 'W/B' - ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION] - ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s1)-1 + IF len( s1 ) > 0 + aadd( ins_, ::scrObjBlank() ) + n1 := len( ins_ ) + ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT + ins_[ n1, OBJ_ROW ] := ::obj_[ n,OBJ_ROW ] + ins_[ n1, OBJ_COL ] := ::obj_[ n,OBJ_COL ] + ins_[ n1, OBJ_EQN ] := s1 + ins_[ n1, OBJ_ID ] := 'Text' + ins_[ n1, OBJ_COLOR ] := 'W/B' + ins_[ n1, OBJ_SECTION ] := ::obj_[n,OBJ_SECTION] + ins_[ n1, OBJ_TO_ROW ] := ::obj_[n,OBJ_ROW ] + ins_[ n1, OBJ_TO_COL ] := ins_[n1,OBJ_COL]+len(s1)-1 ENDIF - IF len(s3) > 0 - aadd(ins_,scrObjBlank()) - n1 := len(ins_) - ins_[n1,OBJ_TYPE] := OBJ_O_TEXT - ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW] - ins_[n1,OBJ_COL] := old_[4]+1 - ins_[n1,OBJ_EQN] := s3 - ins_[n1,OBJ_ID] := 'Text' - ins_[n1,OBJ_COLOR] := 'W/B' - ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION] - ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ] - ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s3)-1 + IF len( s3 ) > 0 + aadd( ins_, ::scrObjBlank() ) + n1 := len( ins_ ) + ins_[n1,OBJ_TYPE ] := OBJ_O_TEXT + ins_[n1,OBJ_ROW ] := ::obj_[ n, OBJ_ROW ] + ins_[n1,OBJ_COL ] := old_[ 4 ] + 1 + ins_[n1,OBJ_EQN ] := s3 + ins_[n1,OBJ_ID ] := 'Text' + ins_[n1,OBJ_COLOR ] := 'W/B' + ins_[n1,OBJ_SECTION ] := ::obj_[ n, OBJ_SECTION ] + ins_[n1,OBJ_TO_ROW ] := ::obj_[ n, OBJ_ROW ] + ins_[n1,OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + len( s3 ) - 1 ENDIF - ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. ; - obj_[n,OBJ_TYPE] == OBJ_O_EXP + ELSEIF ::obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. ; + ::obj_[n,OBJ_TYPE] == OBJ_O_EXP aadd(del_,n) ENDIF @@ -1349,57 +1815,718 @@ STATIC FUNCTION scrTextDel(obj_,scn_) NEXT IF !empty(del_) - FOR i := 1 TO len(obj_) + FOR i := 1 TO len( ::obj_ ) IF ascan(del_,i) == 0 - aadd(d_,obj_[i]) + aadd(d_,::obj_[i]) ENDIF NEXT - obj_:= aclone(d_) - IF empty(obj_) - aadd(obj_,scrObjBlank()) + ::obj_:= aclone(d_) + IF empty( ::obj_ ) + aadd( ::obj_,::scrObjBlank()) ENDIF ENDIF - aeval(ins_,{|e_| aadd(obj_,e_) }) - scn_[SCN_TEXT_BLOCK_] := {} + aeval( ins_,{|e_| aadd( ::obj_,e_ ) } ) + ::scn_:TEXT_BLOCK_ := {} - RETURN obj_ + RETURN Self //----------------------------------------------------------------------// -STATIC FUNCTION scrExport( obj_,scn_ ) - LOCAL cFile := 'SCREEN' - LOCAL rpt_ +METHOD hbCUIEditor:scrAddBox( nObj ) + LOCAL nKey, o_, border, cClr, cFile, nnObj - cFile := VouchGetSome( 'Screen Name Please', pad( cFile,100 ) ) - IF !empty( cFile ) - rpt_:= objScn2Rpt( obj_, scn_, scn_[ SCN_NMODE ] ) - //save_array( rpt_, trim( cFile ) + '.vsc' ) - uiDebug( rpt_ ) + DEFAULT nObj TO 0 + + cFile := "" + nnObj := nObj + + IF empty( nObj ) + o_:= ::scrObjBlank() + + o_[ OBJ_TYPE ] := OBJ_O_BOX + o_[ OBJ_ROW ] := ::scn_:ROW_REP + o_[ OBJ_COL ] := ::scn_:COL_REP + o_[ OBJ_TO_ROW ] := ::scn_:ROW_REP + o_[ OBJ_TO_COL ] := ::scn_:COL_REP + o_[ OBJ_SECTION ] := 1 + o_[ OBJ_F_LEN ] := 9 + o_[ OBJ_MDL_F_TYPE ] := 62 + + aadd( ::obj_, o_ ) + nObj := len( ::obj_ ) ENDIF - RETURN file( cFile ) + border := 'ÚÄ¿³ÙÄÀ³' // can be DOUBLE_SINGLE, etc + cClr := "w/b" + ::obj_[ nObj, OBJ_BORDER ] := 0.5 -//----------------------------------------------------------------------// + ::obj_[ nObj, OBJ_BOX_SHAPE ] := border + ::obj_[ nObj, OBJ_COLOR ] := cClr + ::obj_[ nObj, OBJ_ID ] := "Frame" + ::obj_[ nObj, OBJ_EQN ] := cFile + ::obj_[ nObj, OBJ_PATTERN ] := 'CLEAR ' -STATIC FUNCTION scrImport( obj_,scn_ ) - LOCAL cFile := 'SCREEN' - LOCAL rpt_:={},aa_ - - cFile := VouchGetSome( 'Screen TO Import?', pad( cFile,100 ) ) - IF ! empty( cFile ) - //rpt_:= rest_array( trim( cFile ) + '.vsc' ) - ENDIF - IF !empty( rpt_ ) - aa_:= rpt2ObjScn( scn_[SCN_COBJECT], rpt_, scn_[SCN_NMODE], {},; - scn_[SCN_CRPT], scn_[SCN_NWHERE], scn_[SCN_LMSG] ) - obj_:= aa_[ 1 ] - scn_:= aa_[ 2 ] + IF ! empty( nnObj ) + ::scrOnLastCol( nObj ) + ::scrMove() ENDIF - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL + ::scrMsg( 'Draw Frame WITH . Finish WITH ' ) + + DO WHILE .t. + nKey := inkey( 0 ) + DO CASE + CASE nKey == K_RIGHT + IF ::scrMovRgt() + ::obj_[ nObj,OBJ_TO_COL ]++ + ENDIF + CASE nKey == K_LEFT + IF ::scrMovLft() + ::obj_[ nObj,OBJ_TO_COL ]-- + ENDIF + CASE nKey == K_DOWN + IF ::scrMovDn() + ::obj_[ nObj,OBJ_TO_ROW ]++ + ENDIF + CASE nKey == K_UP + IF ::scrMovUp() + ::obj_[ nObj,OBJ_TO_ROW ]-- + ENDIF + CASE nKey == K_ENTER + EXIT + ENDCASE + ::scrMove() + ::scrStatus() + ENDDO + + ::scrOrdObj() + ::scrMsg() + ::scn_:REFRESH := OBJ_REFRESH_ALL RETURN NIL //----------------------------------------------------------------------// +METHOD hbCUIEditor:scrAddFld( nObj ) + LOCAL h_:={}, w_, o_, v_, sel_ + + DEFAULT nObj TO 0 + + sel_:= ::scrVvSelAble() + v_ := iif( nObj > 0, ::scrObj2Vv( ::obj_[ nObj ] ), ::scrVvBlank() ) + + IF nObj == 0 + v_[ VV_FIELD ] := 0 + v_[ VV_ID ] := space( 40 ) + v_[ VV_F_PIC ] := space( 15 ) + v_[ VV_COLOR ] := 'N/W ' + v_[ VV_EQN ] := "" + ENDIF + + sel_[ VV_F_TYPE ] := .T. + sel_[ VV_ALIGN ] := .f. + sel_[ VV_PRN_LEN ] := .f. + sel_[ VV_PRN_LEN ] := .f. + sel_[ VV_ALIGN ] := .f. + sel_[ VV_COLOR ] := .f. + sel_[ VV_POINT ] := .f. + sel_[ VV_COL_JUST ] := .f. + sel_[ VV_PATTERN ] := .f. + + aadd( h_, ' Title ' ) + aadd( h_, ' Field ' ) + aadd( h_, ' Type ' ) + aadd( h_, ' Width ' ) + aadd( h_, ' Decimals ' ) + aadd( h_, ' Calculate ' ) + aadd( h_, ' Expression ' ) + aadd( h_, ' Printed Width ' ) + aadd( h_, ' Picture ' ) + aadd( h_, ' Pitch ' ) + aadd( h_, ' Font ' ) + aadd( h_, ' Bold ' ) + aadd( h_, ' Italics ' ) + aadd( h_, ' UnderLine ' ) + aadd( h_, ' SuperScript ' ) + aadd( h_, ' SubScript ' ) + aadd( h_, ' Half Height ' ) + aadd( h_, ' Alignment ' ) + aadd( h_, ' Color ' ) + aadd( h_, ' Zero as Blank ' ) + aadd( h_, ' Supress Repeated Values ' ) + aadd( h_, ' Verticle Stretch ' ) + aadd( h_, ' Wrap Semi Colons ' ) + aadd( h_, ' The FOR Condition ' ) + aadd( h_, ' Unique Id ' ) + aadd( h_, ' Field Type . Module ' ) + aadd( h_, ' Point Size ' ) + aadd( h_, ' Column FOR Justification ' ) + aadd( h_, ' Pattern TO fill a frame ' ) + aadd( h_, ' Border Thickness ' ) + + w_:= afill( array( len( h_ ) ), {|| .f. } ) + w_[ 1 ] := {| | .t. } + w_[ 2 ] := {| | .t. } + w_[ 3 ] := {| | VouchMenuM( 'MN_TYFLD' ) } + w_[ 4 ] := {|v| v := oAchGet( 3 ), iif( v == 'D', !oCPut( 8 ), iif( v == 'L', !oCPut( 1 ), .t. ) ) } + w_[ 5 ] := {|v| v := oAchGet( 3 ), iif( v <> 'N', !oCPut( 0 ), .t. ) } + + B_GETS HEADERS h_ VALUES v_ TITLE 'Configure Field' WHEN w_ SELECTABLES sel_ INTO v_ + + v_:= v_[ 1 ] + v_[ 1 ] := alltrim( trim( v_[ 1 ] ) ) + IF empty( v_[ 1 ] ) + RETURN NIL + ENDIF + + IF lastkey() <> K_ESC + IF nObj == 0 + o_:= ::scrObjBlank() + ELSE + o_:= ::obj_[ nObj ] + ENDIF + + o_:= ::scrVv2Obj( v_, o_ ) + + o_[ OBJ_TYPE ] := OBJ_O_FIELD + o_[ OBJ_ROW ] := iif( nObj == 0, ::scn_:ROW_REP, o_[ OBJ_ROW ] ) + o_[ OBJ_COL ] := iif( nObj == 0, ::scn_:COL_REP, o_[ OBJ_COL ] ) + o_[ OBJ_TEXT ] := padc( alltrim( v_[ VV_ID ] ), v_[ VV_F_LEN ] ) + o_[ OBJ_COLOR ] := iif( empty( o_[ OBJ_COLOR ] ), 'W+/W', o_[ OBJ_COLOR ] ) + o_[ OBJ_TO_ROW ] := iif( nObj == 0, ::scn_:ROW_REP, o_[ OBJ_TO_ROW ] ) + o_[ OBJ_TO_COL ] := iif( nObj == 0, ::scn_:COL_REP, o_[ OBJ_COL ] ) + v_[ VV_F_LEN ] - 1 + o_[ OBJ_SECTION ] := 1 + + IF nObj == 0 + aadd( ::obj_, o_ ) + nObj := len( ::obj_ ) + ELSE + ::obj_[ nObj ] := o_ + ENDIF + + ::scn_:OBJ_SELECTED := 0 + ::scn_:REFRESH := OBJ_REFRESH_LINE + ::scn_:MODE := 0 + ENDIF + + IF nObj > 0 + ::scrOrdObj() + ENDIF + + RETURN Self + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrAddTxt( nMode ) + LOCAL txt_:={},n, lClub,i + LOCAL n1,s1,s2,nTxt,nDel + LOCAL nRepCol := ::scn_:COL_REP, nRepRow := ::scn_:ROW_REP + LOCAL lOrder := .f. + LOCAL nKey := ::scn_:LASTKEY + + // nMode 1.Add 2.Del 3.BS + + // Scan obj_ FOR Text Objects Related WITH Current Report Row + aeval( ::obj_,{|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_TEXT .AND. e_[ OBJ_ROW ] == nRepRow, aadd( txt_,e_ ),'' ) } ) + IF nMode == 1 // New Character + IF empty( txt_ ) .OR. ascan( txt_,{|e_| VouchInRange( nRepCol, e_[OBJ_COL],e_[OBJ_TO_COL] ) } ) == 0 + aadd( txt_, ::scrObjBlank() ) ; lOrder := .t. + nTxt := len( txt_ ) + txt_[ nTxt, OBJ_TYPE ] := OBJ_O_TEXT + txt_[ nTxt, OBJ_F_TYPE ] := 'C' + txt_[ nTxt, OBJ_F_LEN ] := 1 + txt_[ nTxt, OBJ_ALIGN ] := 'L' + txt_[ nTxt, OBJ_ROW ] := ::scn_:ROW_REP + txt_[ nTxt, OBJ_COL ] := ::scn_:COL_REP + txt_[ nTxt, OBJ_EQN ] := '' + txt_[ nTxt, OBJ_ID ] := 'Text' + txt_[ nTxt, OBJ_COLOR ] := 'N/W' + txt_[ nTxt, OBJ_PITCH ] := 10 + txt_[ nTxt, OBJ_SECTION ] := 1 + txt_[ nTxt, OBJ_TO_ROW ] := ::scn_:ROW_REP + txt_[ nTxt, OBJ_TO_COL ] := ::scn_:COL_REP + ENDIF + ENDIF + + nTxt := ascan( txt_,{|e_| VouchInRange( nRepCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) + + IF nMode == 1 + txt_[nTxt,OBJ_EQN] := substr( txt_[nTxt,OBJ_EQN],1,; + ::scn_:COL_REP-txt_[nTxt,OBJ_COL] ) + ; + chr( nKey ) + ; + substr( txt_[nTxt,OBJ_EQN],::scn_:COL_REP-txt_[nTxt,OBJ_COL] + ; + iif( ReadInsert(),1,2 ) ) + txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( txt_[nTxt,OBJ_EQN] )-1 + + ELSEIF nMode == 2 .OR. nMode == 3 // Delete + IF readInsert() + txt_[nTxt,OBJ_EQN] := substr( txt_[nTxt,OBJ_EQN],1,; + ::scn_:COL_REP-txt_[nTxt,OBJ_COL] ) + ; + substr( txt_[nTxt,OBJ_EQN],::scn_:COL_REP-txt_[nTxt,OBJ_COL] + 2 ) + txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( txt_[nTxt,OBJ_EQN] )-1 + ELSE // Divide it IN two objects + s1 := substr( txt_[nTxt,OBJ_EQN],1,::scn_:COL_REP-txt_[nTxt,OBJ_COL] ) + s2 := substr( txt_[nTxt,OBJ_EQN],::scn_:COL_REP-txt_[nTxt,OBJ_COL] + 2 ) + nDel := 0 + IF len( s1 ) > 0 + txt_[nTxt,OBJ_EQN] := s1 + txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( s1 )-1 + txt_[nTxt,OBJ_PRN_LEN] := len( s1 ) + ELSE + nDel := nTxt + ENDIF + + IF len( s2 ) > 0 + IF nDel == 0 + aadd( txt_,aclone( txt_[nTxt] ) ) + lOrder := .t. + n1 := len( txt_ ) + ELSE + n1 := nDel + ENDIF + txt_[n1,OBJ_TYPE] := OBJ_O_TEXT + txt_[n1,OBJ_F_TYPE] := 'C' + txt_[n1,OBJ_F_LEN] := len( s2 ) + txt_[n1,OBJ_PRN_LEN] := len( s2 ) + // txt_[n1,OBJ_ALIGN] := 'L' + txt_[n1,OBJ_ROW] := ::scn_:ROW_REP + txt_[n1,OBJ_COL] := ::scn_:COL_REP+1 + txt_[n1,OBJ_EQN] := s2 + txt_[n1,OBJ_ID] := 'Text' + txt_[n1,OBJ_SECTION] := 1 + txt_[n1,OBJ_TO_ROW] := ::scn_:ROW_REP + txt_[n1,OBJ_TO_COL] := txt_[n1,OBJ_COL]+len( s2 )-1 + ENDIF + IF len( s1 )==0.AND.len( s2 )==0 + VouchAShrink( txt_,nTxt ) + IF empty( txt_ ) + aadd( txt_,::scrObjBlank() ) + ENDIF + ENDIF + ENDIF + ENDIF + + IF !empty( txt_ ) + DO WHILE .t. + IF( n := ascan( txt_,{|e_| e_[OBJ_TO_COL] < e_[OBJ_COL] } ) ) > 0 + VouchAShrink( txt_,n ) + ELSE + EXIT + ENDIF + ENDDO + IF empty( txt_ ) + aadd( txt_,::scrObjBlank() ) + ENDIF + // CLUB DIFFERENT TEXT OBJECTS IF THESE ARE ADJACENT + asort( txt_,,,{|e_,f_| e_[OBJ_COL] 0 + VouchAShrink( ::obj_,n ) + IF empty( ::obj_ ) + aadd( ::obj_, ::scrObjBlank() ) + ENDIF + ELSE + EXIT + ENDIF + ENDDO + + aeval( txt_,{|e_| iif( e_[OBJ_ROW]>0,aadd( ::obj_,e_ ),'' ) } ) // Now attach txt_ + + DO WHILE .t. + IF( n := ascan( ::obj_,{|e_| e_[OBJ_TO_COL] < e_[OBJ_COL] } ) ) > 0 + VouchAShrink( ::obj_,n ) + IF empty( ::obj_ ) + aadd( ::obj_,::scrObjBlank() ) + ENDIF + ELSE + EXIT + ENDIF + ENDDO + + IF lOrder + // scrOrdObj( obj_ ) + ENDIF + IF nMode == 1 + keyboard( chr( K_RIGHT ) ) + ENDIF + + ::scn_:REFRESH := OBJ_REFRESH_LINE + + RETURN NIL + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrProperty() + + ::scn_:PROPERTY := {} + + RETURN NIL + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrMsg( msg ) + LOCAL row := row(), col := col() + + @ maxrow(),0 SAY padc( " ", maxcol()+1 ) COLOR "W+/W" + IF empty( msg ) + msg := "F1 Help F5 Edit F6 Select F7 Copy F8 Paste F9 Box F10 Field" + ENDIF + msg := " " + msg + " " + @ maxrow(),( maxcol()+1-len( msg ) )/2 SAY msg COLOR "W+/B" + + setPos( row,col ) + RETURN NIL + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrInkey( key_ ) + LOCAL nKey + + DO WHILE .t. + nKey := inkey( 0 ) + IF ascan( key_, nKey ) > 0 + EXIT + ENDIF + ENDDO + + RETURN nKey + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrConfig() + LOCAL s, n + + ::scn_:SECTORS_ := {} + ::scn_:DESIGN := 1 + ::scn_:FOR_ROWS := { { 0,'' } } + + ::scn_:TOP := 1 + ::scn_:LEFT := 0 + ::scn_:BOTTOM := maxrow()-2 + ::scn_:RIGHT := maxcol() + + ::scn_:MODE := 0 + ::scn_:ROW_CUR := ::scn_:TOP + ::scn_:COL_CUR := ::scn_:LEFT + ::scn_:ROW_REP := 1 + ::scn_:COL_REP := 1 + ::scn_:ROW_DIS := ::scn_:TOP - 1 + ::scn_:COL_DIS := ::scn_:LEFT - 1 + + ::scn_:ROW_MENU := 0 + ::scn_:ROW_RULER := 0 + ::scn_:STATUS_ROW := maxrow() - 1 + ::scn_:STATUS_COL := 0 + ::scn_:STATUS_COL_TO := maxcol() + + ::scn_:COL_MAX := 400 + ::scn_:ROW_PREV := ::scn_:TOP + ::scn_:COL_PREV := ::scn_:LEFT + ::scn_:REP_LINES := 200 + + ::scn_:CLR_STATUS := "W+/BG" + ::scn_:CLR_TEXT := 'W+/B' + ::scn_:CLR_BOX := 'W/B' + ::scn_:CLR_FIELD := 'W+/W' + ::scn_:CLR_HILITE := 'GR+/BG' + ::scn_:CLR_WINDOW := 'W+/BG' + ::scn_:CLR_RULER := "N/W" + ::scn_:CLR_MENU := "W+/B" + ::scn_:CLR_OVERALL := "N/W" + ::scn_:CLR_PREV := 'B/W' + ::scn_:CLR_SELECT := 'GR+/N' + + ::scn_:OBJ_HILITE := 0 + ::scn_:OBJ_SELECTED := 0 + + s := '.' + FOR n := 1 TO 40 + s += '.......' + strtran( str( n,3 ), ' ', '.' ) + NEXT + ::scn_:RULER := s + + ::scn_:DRAW_FILL := '±±±±±±±±±' + ::scn_:OBJ_ID_ := { 'Bitmap','Line','Text','Field','Expression','BitMap' } + ::scn_:REFRESH := OBJ_REFRESH_ALL + ::scn_:OBJ_COPIED := 0 + ::scn_:BOX_SHAPE := 'ÚÄ¿³ÙÄÀ³' + ::scn_:CHR_PREV := '' + ::scn_:DESIGN_ID := "Module" + ::scn_:FILE := "Untitled" + ::scn_:PROPERTY := {} + ::scn_:GRAPHICS := .f. + ::scn_:TEXT_BLOCK_ := {} + ::scn_:FIELDS := {} + ::scn_:LASTKEY := 0 + + RETURN Self + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrReConfig() + + ::scn_:MODE := 0 + ::scn_:TOP := 1 + ::scn_:LEFT := 0 + ::scn_:BOTTOM := maxrow()-2 + ::scn_:RIGHT := maxcol() + + ::scn_:MODE := 0 + ::scn_:ROW_CUR := ::scn_:TOP + ::scn_:COL_CUR := ::scn_:LEFT + ::scn_:ROW_REP := 1 + ::scn_:COL_REP := 1 + ::scn_:ROW_DIS := ::scn_:TOP - 1 + ::scn_:COL_DIS := ::scn_:LEFT - 1 + + ::scn_:ROW_MENU := 0 + ::scn_:ROW_RULER := 0 + ::scn_:STATUS_ROW := maxrow() - 1 + ::scn_:STATUS_COL := 0 + ::scn_:STATUS_COL_TO := maxcol() + + ::scn_:COL_MAX := 400 + ::scn_:ROW_PREV := ::scn_:TOP + ::scn_:COL_PREV := ::scn_:LEFT + ::scn_:REP_LINES := 200 + + RETURN NIL + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrSectors() + + aadd( ::scn_:SECTORS_, { 1, 'Screen', 'R ', 100, 'W+/BG', '', .f., .f. } ) + + RETURN 100 + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrAddPrp( sct_ ) + + aadd( ::scn_:SECTORS_, { sct_[1], sct_[2], sct_[3], sct_[4], sct_[5], sct_[6], sct_[7], sct_[8] } ) + + RETURN NIL + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrObjBlank() + LOCAL o_:= array( OBJ_INIT_VRBLS ) + + o_[ OBJ_TYPE ] := 0 + o_[ OBJ_ROW ] := 0 + o_[ OBJ_COL ] := 0 + o_[ OBJ_TEXT ] := '' + o_[ OBJ_COLOR ] := 'W/B ' + o_[ OBJ_TO_ROW ] := 0 + o_[ OBJ_TO_COL ] := 0 + o_[ OBJ_ID ] := '' + o_[ OBJ_SECTION ] := 1 + o_[ OBJ_ALIAS ] := '' + o_[ OBJ_FIELD ] := 0 + o_[ OBJ_EQN ] := '' + o_[ OBJ_F_TYPE ] := '' + o_[ OBJ_F_LEN ] := 0 + o_[ OBJ_F_DEC ] := 0 + o_[ OBJ_F_PIC ] := '' + o_[ OBJ_ALIGN ] := 'L' + o_[ OBJ_PITCH ] := 10 + o_[ OBJ_FONT ] := 'COURIER ' + o_[ OBJ_BOLD ] := .F. + o_[ OBJ_ITALIC ] := .F. + o_[ OBJ_UNDERLN ] := .F. + o_[ OBJ_S_SCRPT ] := .F. + o_[ OBJ_U_SCRPT ] := .F. + o_[ OBJ_PRN_LEN ] := 0 + o_[ OBJ_HALF_H ] := .F. + o_[ OBJ_ZERO ] := .T. + o_[ OBJ_REPEATED ] := 'NO ' + o_[ OBJ_VERTICLE ] := .F. + o_[ OBJ_WRAP_SEMI ] := .F. + o_[ OBJ_FOR ] := space( 80 ) + o_[ OBJ_SEC_ROW ] := 0 + o_[ OBJ_ATTRB ] := 'NONE ' + o_[ OBJ_VAL ] := ' ' + o_[ OBJ_OBJ_UNIQUE ] := 0 + o_[ OBJ_MDL_F_TYPE ] := 0 + o_[ OBJ_POINT ] := 0 + o_[ OBJ_COL_JUST ] := 0 + o_[ OBJ_PATTERN ] := 'SOLID ' + o_[ OBJ_BORDER ] := 0.50 + + RETURN o_ + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrVvBlank() + LOCAL v_:= array( VV_INIT_VRBLS ) + + v_[ VV_ID ] := 'New ' + v_[ VV_FIELD ] := 0 + v_[ VV_F_TYPE ] := 'C' + v_[ VV_F_LEN ] := 25 + v_[ VV_F_DEC ] := 0 + v_[ VV_ATTRB ] := 'NONE ' + v_[ VV_EQN ] := ' ' + v_[ VV_PRN_LEN ] := 25 + v_[ VV_F_PIC ] := ' ' + v_[ VV_PITCH ] := 10 + v_[ VV_FONT ] := 'COURIER ' + v_[ VV_BOLD ] := .f. + v_[ VV_ITALIC ] := .f. + v_[ VV_UNDERLN ] := .f. + v_[ VV_S_SCRPT ] := .f. + v_[ VV_U_SCRPT ] := .f. + v_[ VV_HALF_H ] := .f. + v_[ VV_ALIGN ] := 'C' + v_[ VV_COLOR ] := 'W+/B ' + v_[ VV_ZERO ] := .t. + v_[ VV_REPEATED ] := 'NO ' + v_[ VV_VERTICLE ] := .F. + v_[ VV_WRAP_SEMI ] := .F. + v_[ VV_FOR ] := space( 80 ) + v_[ VV_OBJ_UNIQUE ] := 0 + v_[ VV_MDL_F_TYPE ] := 0 + v_[ VV_POINT ] := 12 + v_[ VV_COL_JUST ] := 0 + v_[ VV_PATTERN ] := 'SOLID ' + v_[ VV_BORDER ] := 0.50 + + RETURN v_ + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrVvSelAble() + LOCAL sel_:= array( VV_INIT_VRBLS ) + + sel_[ VV_ID ] := .t. + sel_[ VV_FIELD ] := .f. + sel_[ VV_F_TYPE ] := .t. + sel_[ VV_F_LEN ] := .t. + sel_[ VV_F_DEC ] := .t. + sel_[ VV_ATTRB ] := .f. + sel_[ VV_EQN ] := .f. + sel_[ VV_PRN_LEN ] := .f. + sel_[ VV_F_PIC ] := .t. + sel_[ VV_PITCH ] := .f. + sel_[ VV_FONT ] := .f. + sel_[ VV_BOLD ] := .f. + sel_[ VV_ITALIC ] := .f. + sel_[ VV_UNDERLN ] := .f. + sel_[ VV_S_SCRPT ] := .f. + sel_[ VV_U_SCRPT ] := .f. + sel_[ VV_HALF_H ] := .f. + sel_[ VV_ALIGN ] := .f. + sel_[ VV_COLOR ] := .t. + sel_[ VV_ZERO ] := .f. + sel_[ VV_REPEATED ] := .f. + sel_[ VV_VERTICLE ] := .f. + sel_[ VV_WRAP_SEMI ] := .f. + sel_[ VV_FOR ] := .f. + sel_[ VV_OBJ_UNIQUE ] := .f. + sel_[ VV_MDL_F_TYPE ] := .f. + sel_[ VV_POINT ] := .f. + sel_[ VV_COL_JUST ] := .f. + sel_[ VV_PATTERN ] := .f. + sel_[ VV_BORDER ] := .f. + + RETURN sel_ + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrObj2Vv( o_ ) + LOCAL v_:={} + + aadd( v_, pad( o_[OBJ_ID ],15 ) ) + aadd( v_, o_[ OBJ_FIELD ] ) + aadd( v_, o_[ OBJ_F_TYPE ] ) + aadd( v_, o_[ OBJ_F_LEN ] ) + aadd( v_, o_[ OBJ_F_DEC ] ) + aadd( v_, o_[ OBJ_ATTRB ] ) + aadd( v_, o_[ OBJ_EQN ] ) + aadd( v_, o_[ OBJ_PRN_LEN ] ) + aadd( v_, o_[ OBJ_F_PIC ] ) + aadd( v_, o_[ OBJ_PITCH ] ) + aadd( v_, o_[ OBJ_FONT ] ) + aadd( v_, o_[ OBJ_BOLD ] ) + aadd( v_, o_[ OBJ_ITALIC ] ) + aadd( v_, o_[ OBJ_UNDERLN ] ) + aadd( v_, o_[ OBJ_S_SCRPT ] ) + aadd( v_, o_[ OBJ_U_SCRPT ] ) + aadd( v_, o_[ OBJ_HALF_H ] ) + aadd( v_, o_[ OBJ_ALIGN ] ) + aadd( v_, o_[ OBJ_COLOR ] ) + aadd( v_, o_[ OBJ_ZERO ] ) + aadd( v_, o_[ OBJ_REPEATED ] ) + aadd( v_, o_[ OBJ_VERTICLE ] ) + aadd( v_, o_[ OBJ_WRAP_SEMI ] ) + aadd( v_, o_[ OBJ_FOR ] ) + aadd( v_, o_[ OBJ_OBJ_UNIQUE ] ) + aadd( v_, o_[ OBJ_MDL_F_TYPE ] ) + aadd( v_, o_[ OBJ_POINT ] ) + aadd( v_, o_[ OBJ_COL_JUST ] ) + aadd( v_, o_[ OBJ_PATTERN ] ) + aadd( v_, o_[ OBJ_BORDER ] ) + + RETURN v_ + +//----------------------------------------------------------------------// + +METHOD hbCUIEditor:scrVv2Obj( v_, o_ ) + + o_[ OBJ_ID ] := v_[ VV_ID ] + o_[ OBJ_FIELD ] := v_[ VV_FIELD ] + o_[ OBJ_F_TYPE ] := v_[ VV_F_TYPE ] + o_[ OBJ_F_LEN ] := v_[ VV_F_LEN ] + o_[ OBJ_F_DEC ] := v_[ VV_F_DEC ] + o_[ OBJ_ATTRB ] := v_[ VV_ATTRB ] + o_[ OBJ_EQN ] := v_[ VV_EQN ] + o_[ OBJ_PRN_LEN ] := v_[ VV_PRN_LEN ] + o_[ OBJ_F_PIC ] := v_[ VV_F_PIC ] + o_[ OBJ_PITCH ] := v_[ VV_PITCH ] + o_[ OBJ_FONT ] := v_[ VV_FONT ] + o_[ OBJ_BOLD ] := v_[ VV_BOLD ] + o_[ OBJ_ITALIC ] := v_[ VV_ITALIC ] + o_[ OBJ_UNDERLN ] := v_[ VV_UNDERLN ] + o_[ OBJ_S_SCRPT ] := v_[ VV_S_SCRPT ] + o_[ OBJ_U_SCRPT ] := v_[ VV_U_SCRPT ] + o_[ OBJ_HALF_H ] := v_[ VV_HALF_H ] + o_[ OBJ_ALIGN ] := v_[ VV_ALIGN ] + o_[ OBJ_COLOR ] := v_[ VV_COLOR ] + o_[ OBJ_ZERO ] := v_[ VV_ZERO ] + o_[ OBJ_REPEATED ] := v_[ VV_REPEATED ] + o_[ OBJ_VERTICLE ] := v_[ VV_VERTICLE ] + o_[ OBJ_WRAP_SEMI ] := v_[ VV_WRAP_SEMI ] + o_[ OBJ_FOR ] := v_[ VV_FOR ] + o_[ OBJ_OBJ_UNIQUE ] := v_[ VV_OBJ_UNIQUE ] + o_[ OBJ_MDL_F_TYPE ] := v_[ VV_MDL_F_TYPE ] + o_[ OBJ_POINT ] := v_[ VV_POINT ] + o_[ OBJ_COL_JUST ] := v_[ VV_COL_JUST ] + o_[ OBJ_PATTERN ] := v_[ VV_PATTERN ] + o_[ OBJ_BORDER ] := v_[ VV_BORDER ] + + RETURN o_ + +//----------------------------------------------------------------------// diff --git a/harbour/contrib/hbcuied/cu_outpt.prg b/harbour/contrib/hbcuied/cu_outpt.prg deleted file mode 100644 index 8f11224365..0000000000 --- a/harbour/contrib/hbcuied/cu_outpt.prg +++ /dev/null @@ -1,448 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * CUI Forms Editor - * - * Copyright 2011 Pritpal Bedi - * http://harbour-project.org - * - * 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 2, 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 software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour CUI Editor Source - * - * Pritpal Bedi - * 13Aug2011 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbcuied.ch" -#include "inkey.ch" -#include "wvtwin.ch" - -/*----------------------------------------------------------------------*/ - -FUNCTION ScrDisplay( scn_ ) - - dispbegin() - setcursor(0) - setColor( scn_[ SCN_CLR_OVERALL ] ) - cls - - @ scn_[SCN_ROW_RULER], scn_[SCN_LEFT] ; - SAY substr( scn_[SCN_RULER], 1, scn_[SCN_RIGHT] - scn_[SCN_LEFT] + 1 ) ; - COLOR scn_[ SCN_CLR_RULER ] - - scrMsg() - - setcolor( scn_[ SCN_CLR_WINDOW ] ) - setCursor(2) - dispend() - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrStatus(obj_,scn_) - LOCAL s,objId,nSct,cClr:='GR+/BG' - LOCAL typ_ - - dispbegin() - s := pad(scn_[SCN_DESIGN_ID],8)+' ³ ' - - s += pad(scn_[SCN_FILE],12)+; - ' ³ '+; - ' R:'+; - str( scn_[SCN_ROW_REP]-1, 3 )+; - ' C:'+; - str( scn_[SCN_COL_REP]-1, 3 )+; - ' ³ ' +; - iif(readInsert(),'Ins ',' ')+; - ' ³ ' - - objId := '' - IF scn_[SCN_OBJ_HILITE] > 0 - objId := scn_[SCN_OBJ_ID_,obj_[scn_[SCN_OBJ_HILITE],OBJ_TYPE]] - IF obj_[scn_[SCN_OBJ_HILITE],OBJ_TYPE] == OBJ_O_BOX - typ_:= {'Bitmap','Frame','Ellipse','Line (H)','Line (V)','Grid','BarCode','Text Box'} - objId := typ_[obj_[scn_[SCN_OBJ_HILITE],OBJ_MDL_F_TYPE]-60] - ENDIF - ELSEIF scn_[SCN_OBJ_SELECTED] > 0 - objId := scn_[SCN_OBJ_ID_,obj_[scn_[SCN_OBJ_SELECTED],OBJ_TYPE]] - IF obj_[scn_[SCN_OBJ_SELECTED],OBJ_TYPE] == OBJ_O_BOX - typ_:= {'Bitmap','Frame','Ellipse','Line (H)','Line (V)','Grid','BarCode','Text Box'} - objId := typ_[obj_[scn_[SCN_OBJ_SELECTED],OBJ_MDL_F_TYPE]-60] - ENDIF - ENDIF - - s += pad(trim(objId),10)+' ³ ' - - IF ( nSct := scrSecOrd(scn_,scn_[SCN_ROW_REP])) <> NIL - s += scn_[ SCN_SECTORS_,nSct,SCT_ID ] - ENDIF - - @ scn_[SCN_STATUS_ROW], scn_[SCN_STATUS_COL] ; - say pad(s,scn_[SCN_STATUS_COL_TO]-scn_[SCN_STATUS_COL]+1) ; - color scn_[SCN_CLR_STATUS] - - /* Ruler */ - s := substr(scn_[SCN_RULER],; - max( 1,scn_[SCN_COL_REP]-scn_[SCN_COL_CUR]+scn_[SCN_LEFT]),; - scn_[ SCN_RIGHT ] - scn_[SCN_LEFT ] + 1 ) - DispBox( scn_[ SCN_TOP ] - 1, 0, scn_[ SCN_TOP ] - 1, maxcol(), ' ', scn_[ SCN_CLR_OVERALL ] ) - @ scn_[SCN_ROW_RULER],scn_[SCN_LEFT] SAY s COLOR scn_[SCN_CLR_RULER] - @ scn_[SCN_ROW_RULER],scn_[SCN_COL_CUR] say ; - substr( s, scn_[SCN_COL_CUR]-scn_[SCN_LEFT]+1,1) COLOR cClr - - @ scn_[SCN_ROW_CUR],scn_[SCN_COL_CUR] SAY '' - - // Now update current cursor position - scn_[SCN_ROW_PREV] := scn_[SCN_ROW_CUR] - scn_[SCN_COL_PREV] := scn_[SCN_COL_CUR] - - dispend() - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrHiLite(obj_,scn_,mode) - LOCAL nObj := scn_[SCN_OBJ_HILITE] - LOCAL cColor := iif(mode,scn_[SCN_CLR_HILITE],obj_[nObj,OBJ_COLOR]) - - IF obj_[nObj,OBJ_TYPE] == OBJ_O_BOX - DispBegin() - dispBox( obj_[nObj,OBJ_ROW] + scn_[SCN_ROW_DIS],; - obj_[nObj,OBJ_COL] + scn_[SCN_COL_DIS],; - obj_[nObj,OBJ_TO_ROW] + scn_[SCN_ROW_DIS],; - obj_[nObj,OBJ_TO_COL] + scn_[SCN_COL_DIS],; - obj_[nObj,OBJ_BOX_SHAPE],; - 'gr+/b' /* cColor */) - DispEnd() - ELSEIF obj_[nObj,OBJ_TYPE] == OBJ_O_FIELD .OR. ; - obj_[nObj,OBJ_TYPE] == OBJ_O_EXP - DispBegin() - @ obj_[nObj,OBJ_ROW]+scn_[SCN_ROW_DIS], ; - obj_[nObj,OBJ_COL]+scn_[SCN_COL_DIS] ; - say obj_[nObj,OBJ_TEXT] color cColor - DispEnd() - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrDispSelctd( obj_,scn_ ) - LOCAL i,j,nCol,nRow - - IF ! empty( scn_[ SCN_TEXT_BLOCK_ ] ) - DispBegin() - - FOR i := scn_[ SCN_TEXT_BLOCK_, 1 ] TO scn_[ SCN_TEXT_BLOCK_, 3 ] - IF ( nRow := i + scn_[ SCN_ROW_DIS ] ) <= scn_[ SCN_BOTTOM ] - FOR j := scn_[ SCN_TEXT_BLOCK_, 2 ] TO scn_[ SCN_TEXT_BLOCK_, 4 ] - IF ( nCol := j + scn_[ SCN_COL_DIS ] ) <= scn_[ SCN_RIGHT ] - @ nRow, nCol SAY scrGetChar( obj_, i, j ) COLOR 'GR+/R' - ENDIF - NEXT - ENDIF - NEXT - - DispEnd() - ENDIF - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrDispGhost( obj_,scn_,gst_ ) - LOCAL i,j,nRow,nCol - - HB_SYMBOL_UNUSED( obj_ ) - - DispBegin() - FOR i := gst_[ 1 ] TO gst_[ 3 ] - IF ( nRow := i + scn_[ SCN_ROW_DIS ] ) <= scn_[ SCN_BOTTOM ] - FOR j := gst_[ 2 ] TO gst_[ 4 ] - IF ( nCol := j + scn_[ SCN_COL_DIS ] ) <= scn_[ SCN_RIGHT ] - @ nRow, nCol SAY THE_FILL COLOR 'GR+/R' - ENDIF - NEXT - ENDIF - NEXT - DispEnd() - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrMove( obj_, scn_ ) - LOCAL i - LOCAL crs := setCursor( 0 ) - LOCAL nOff, cText, nRow, nCol, cColor - - dispBegin() - - dispBox(scn_[ SCN_TOP ],; - scn_[ SCN_LEFT ],; - scn_[ SCN_BOTTOM ],; - scn_[ SCN_RIGHT ],; - scn_[ SCN_DRAW_FILL ],; - scn_[ SCN_CLR_PREV ] ) - - FOR i := 1 TO len( obj_ ) - IF obj_[ i,OBJ_ROW ] + scn_[ SCN_ROW_DIS ] <= scn_[ SCN_BOTTOM ] .AND. ; - obj_[ i,OBJ_COL ] + scn_[ SCN_COL_DIS ] <= scn_[ SCN_RIGHT ] - - nOff := obj_[ i,OBJ_COL ] + scn_[ SCN_COL_DIS ] - nRow := obj_[ i,OBJ_ROW ] + scn_[ SCN_ROW_DIS ] - nCol := obj_[ i,OBJ_COL ] + scn_[ SCN_COL_DIS ] - - IF nOff < 0 - nCol := 0 - ENDIF - - IF obj_[ i,OBJ_TYPE ] == OBJ_O_BOX - cColor := iif( scn_[ SCN_OBJ_SELECTED ] == i, scn_[ SCN_CLR_SELECT ],; - iif( scn_[ SCN_OBJ_HILITE ] == i, scn_[ SCN_CLR_HILITE ],; - 'W/B' /* obj_[i,OBJ_COLOR] */ ) ) - DO CASE - CASE VouchInArray( obj_[ i,OBJ_MDL_F_TYPE ], { 61,62,63,67,68 } ) - dispBox( obj_[ i,OBJ_ROW ] + scn_[ SCN_ROW_DIS ],; - obj_[ i,OBJ_COL ] + scn_[ SCN_COL_DIS ],; - obj_[ i,OBJ_TO_ROW ] + scn_[ SCN_ROW_DIS ],; - obj_[ i,OBJ_TO_COL ] + scn_[ SCN_COL_DIS ],; - substr( obj_[ i,OBJ_BOX_SHAPE ], 1, 8 ),; - cColor ) - - CASE VouchInArray( obj_[ i, OBJ_MDL_F_TYPE ], { 64,65 } ) // Line - @ obj_[ i, OBJ_ROW ] + scn_[ SCN_ROW_DIS ],; - obj_[ i, OBJ_COL ] + scn_[ SCN_COL_DIS ] ; - TO obj_[ i, OBJ_TO_ROW ] + scn_[ SCN_ROW_DIS ],; - obj_[ i, OBJ_TO_COL ] + scn_[ SCN_COL_DIS ] ; - COLOR cColor - - ENDCASE - ENDIF - - IF obj_[i,OBJ_TYPE] == OBJ_O_FIELD - cText := obj_[ i,OBJ_TEXT ] - cColor := iif( scn_[ SCN_OBJ_SELECTED ] == i,scn_[ SCN_CLR_SELECT ],; - iif( scn_[ SCN_OBJ_HILITE ] == i,scn_[ SCN_CLR_HILITE ],; - 'W+/W' /* obj_[i,OBJ_COLOR] */ )) - IF nOff < 0 - cText := substr( obj_[ i,OBJ_TEXT ], abs( nOff ) + 1 ) - ENDIF - @ nRow, nCol SAY cText COLOR cColor - ENDIF - - IF obj_[i,OBJ_TYPE] == OBJ_O_TEXT - cText := obj_[ i,OBJ_EQN ] - cColor := iif( scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],; - iif( empty(obj_[i,OBJ_COLOR]),scn_[SCN_CLR_TEXT],; - 'W/B' /* obj_[i,OBJ_COLOR] */)) - IF nOff < 0 - cText := substr( obj_[ i,OBJ_EQN ], abs( nOff ) + 1 ) - ENDIF - - @ nRow, nCol SAY cText COLOR cColor - ENDIF - ELSEIF ( obj_[ i,OBJ_ROW ] + scn_[ SCN_ROW_DIS ] > scn_[ SCN_BOTTOM ] ) - - ENDIF - NEXT - - ScrDispSelctd( obj_, scn_ ) - dispEnd() - setcursor( crs ) - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrMoveLine( obj_,scn_ ) - LOCAL scrL,scrR,i,crs, nRow, nCol, cText, nOff, cColor - - crs := setCursor( 0 ) - - IF scn_[ SCN_ROW_PREV ] == scn_[ SCN_ROW_CUR ] - dispbegin() - dispBox(scn_[SCN_ROW_CUR ],; - scn_[SCN_LEFT ],; - scn_[SCN_ROW_CUR ],; - scn_[SCN_RIGHT ],; - scn_[SCN_DRAW_FILL],; - scn_[SCN_CLR_PREV ] ) - - scrL := VouchWndSave(scn_[SCN_ROW_CUR],0,scn_[SCN_ROW_CUR],scn_[SCN_LEFT]-1) - IF scn_[SCN_RIGHT] < maxcol() - scrR := VouchWndSave( scn_[SCN_ROW_CUR],scn_[SCN_RIGHT]+1,scn_[SCN_ROW_CUR],maxcol() ) - ENDIF - - FOR i := 1 TO len(obj_) - nOff := obj_[i,OBJ_COL]+scn_[SCN_COL_DIS] - nRow := obj_[i,OBJ_ROW]+scn_[SCN_ROW_DIS] - nCol := nOff - - IF obj_[i,OBJ_TYPE] == OBJ_O_BOX - DO CASE - CASE VouchInArray(obj_[i,OBJ_MDL_F_TYPE],{64,65}) // Lines V.H - @ obj_[i,OBJ_ROW] + scn_[SCN_ROW_DIS],; - obj_[i,OBJ_COL] + scn_[SCN_COL_DIS] ; - TO obj_[i,OBJ_TO_ROW] + scn_[SCN_ROW_DIS],; - obj_[i,OBJ_TO_COL] + scn_[SCN_COL_DIS] ; - COLOR iif(scn_[SCN_OBJ_HILITE]==i,scn_[SCN_CLR_HILITE],; - 'w/b' /* obj_[i,OBJ_COLOR] */) - ENDCASE - ENDIF - - IF obj_[ i,OBJ_ROW ] == scn_[ SCN_ROW_REP ] - IF obj_[i,OBJ_TYPE] == OBJ_O_FIELD .OR. obj_[i,OBJ_TYPE] == OBJ_O_EXP - cText := obj_[i,OBJ_TEXT] - cColor := iif(scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],; - iif(scn_[SCN_OBJ_HILITE ]==i,scn_[SCN_CLR_HILITE],; - 'W+/W' /* obj_[i,OBJ_COLOR] */ )) - @ nRow, nCol SAY cText COLOR cColor - ENDIF - - IF obj_[i,OBJ_TYPE] == OBJ_O_TEXT - cText := obj_[i,OBJ_EQN] - cColor := iif(scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],; - iif(empty(obj_[i,OBJ_COLOR]),scn_[SCN_CLR_TEXT],; - 'W/B' /* obj_[i,OBJ_COLOR] */)) - @ nRow, nCol SAY cText COLOR cColor - ENDIF - ENDIF - NEXT - - scrDispSelctd(obj_,scn_) // Display Selected Screen - - VouchWndRest(scrL) - IF scn_[SCN_RIGHT] < maxcol() - VouchWndRest(scrR) - ENDIF - - dispEnd() - ELSE - scrMove(obj_,scn_) - ENDIF - setCursor(crs) - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrMouse( obj_, scn_, nEvent ) - LOCAL nmRow, nmCol - LOCAL aEvents_:= { K_LBUTTONUP, K_LBUTTONDOWN, K_MMLEFTDOWN } - - STATIC nLastCol := 0 - STATIC nLastRow := 0 - STATIC lAnchored := .f. - STATIC nCursor - - IF !( VouchInArray( nEvent, aEvents_ ) ) - RETURN .f. - ENDIF - - nmRow := mRow() - nmCol := mCol() - - IF nmRow < scn_[ SCN_TOP ] .OR. nmRow > scn_[ SCN_BOTTOM ] .OR. ; - nmCol < scn_[ SCN_LEFT ] .OR. nmCol > scn_[ SCN_RIGHT ] - RETURN .f. - ENDIF - - scrToMouse( scn_, nmRow, nmCol ) - - IF nEvent == K_LDBLCLK - - ELSEIF nEvent == K_MMLEFTDOWN /*K_LBUTTONDOWN */ .AND. !( lAnchored ) - IF scrChkObj( obj_,scn_ ) > 0 .AND. scn_[ SCN_MODE ] <> OBJ_MODE_SELECT - nCursor := SetCursor( 0 ) - - lAnchored := .t. - scn_[ SCN_LASTKEY ] := K_F6 -// Wvt_SetMousePos( scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] ) - ENDIF - - ELSEIF nEvent == K_MMLEFTDOWN .AND. lAnchored - - ELSEIF nEvent == K_LBUTTONUP .AND. lAnchored -// Wvt_SetMousePos( scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] ) - SetCursor( nCursor ) - lAnchored := .f. - __keyboard( chr( K_ENTER ) ) - - ELSEIF nEvent == K_LBUTTONUP - - ENDIF - - RETURN .t. - -//----------------------------------------------------------------------// - -FUNCTION scrToMouse( scn_, nmRow, nmCol ) - LOCAL nRowOff, nColOff - - nRowOff := nmRow - scn_[SCN_ROW_CUR] - IF nRowOff <> 0 - scn_[ SCN_ROW_CUR ] += nRowOff - scn_[ SCN_ROW_REP ] += nRowOff - ENDIF - - nColOff := nmCol - scn_[ SCN_COL_CUR ] - IF nColOff <> 0 - scn_[ SCN_COL_CUR ] += nColOff - scn_[ SCN_COL_REP ] += nColOff - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// - diff --git a/harbour/contrib/hbcuied/cu_prpty.prg b/harbour/contrib/hbcuied/cu_prpty.prg deleted file mode 100644 index 4961c66251..0000000000 --- a/harbour/contrib/hbcuied/cu_prpty.prg +++ /dev/null @@ -1,923 +0,0 @@ -/* - * $Id$ - */ - -/* - * Harbour Project source code: - * CUI Forms Editor - * - * Copyright 2011 Pritpal Bedi - * http://harbour-project.org - * - * 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 2, 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 software; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). - * - * As a special exception, the Harbour Project gives permission for - * additional uses of the text contained in its release of Harbour. - * - * The exception is that, if you link the Harbour libraries with other - * files to produce an executable, this does not by itself cause the - * resulting executable to be covered by the GNU General Public License. - * Your use of that executable is in no way restricted on account of - * linking the Harbour library code into it. - * - * This exception does not however invalidate any other reasons why - * the executable file might be covered by the GNU General Public License. - * - * This exception applies only to the code released by the Harbour - * Project under the name Harbour. If you copy code from other - * Harbour Project or Free Software Foundation releases into a copy of - * Harbour, as the General Public License permits, the exception does - * not apply to the code that you add in this way. To avoid misleading - * anyone as to the status of such modified files, you must delete - * this exception notice from them. - * - * If you write modifications of your own for Harbour, it is your choice - * whether to permit this exception to apply to your modifications. - * If you do not wish that, delete this exception notice. - * - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/* - * EkOnkar - * ( The LORD is ONE ) - * - * Harbour CUI Editor Source - * - * Pritpal Bedi - * 13Aug2011 - */ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ -/*----------------------------------------------------------------------*/ - -#include "hbcuied.ch" -#include "common.ch" -#include "inkey.ch" - -//----------------------------------------------------------------------// - -FUNCTION scrAddBox( obj_, scn_, nObj, Sel ) - LOCAL nKey,o_,border,cClr, nnObj, cFile - - nnObj := nObj - cFile := '' - sel := 2 - - IF nnObj == 0 - o_:= scrObjBlank() - - o_[ OBJ_TYPE ] := OBJ_O_BOX - o_[ OBJ_ROW ] := scn_[ SCN_ROW_REP ] - o_[ OBJ_COL ] := scn_[ SCN_COL_REP ] - o_[ OBJ_TO_ROW ] := scn_[ SCN_ROW_REP ] - o_[ OBJ_TO_COL ] := scn_[ SCN_COL_REP ] - o_[ OBJ_SECTION ] := scrSecCur( scn_, scn_[ SCN_ROW_REP ] ) - o_[ OBJ_F_LEN ] := 9 - o_[ OBJ_MDL_F_TYPE ] := sel + 60 - - aadd( obj_, o_ ) - nObj := len( obj_ ) - ENDIF - - border := 'ÚÄ¿³ÙÄÀ³' // can be DOUBLE_SINGLE, etc - cClr := "w/b" - obj_[ nObj, OBJ_BORDER ] := 0.5 - - obj_[ nObj, OBJ_BOX_SHAPE ] := border - obj_[ nObj, OBJ_COLOR ] := cClr - obj_[ nObj, OBJ_ID ] := "Frame" - obj_[ nObj, OBJ_EQN ] := cFile - obj_[ nObj, OBJ_PATTERN ] := 'CLEAR ' - - IF nnObj > 0 - scrOnLastCol( obj_, scn_, nObj ) - scrMove( obj_, scn_ ) - ENDIF - - IF .t. - scrMsg( 'Draw Frame WITH . Finish WITH ' ) - - DO WHILE .t. - nKey := inkey( 0 ) - DO CASE - CASE nKey == K_RIGHT - IF scrMovRgt( scn_ ) - obj_[ nObj,OBJ_TO_COL ]++ - ENDIF - CASE nKey == K_LEFT - IF scrMovLft( scn_ ) - obj_[ nObj,OBJ_TO_COL ]-- - ENDIF - CASE nKey == K_DOWN - IF scrMovDn( scn_ ) - obj_[ nObj,OBJ_TO_ROW ]++ - ENDIF - CASE nKey == K_UP - IF scrMovUp( scn_ ) - obj_[ nObj,OBJ_TO_ROW ]-- - ENDIF - CASE nKey == K_ENTER - EXIT - ENDCASE - scrMove( obj_,scn_ ) - scrStatus( obj_,scn_ ) - ENDDO - ENDIF - - scrOrdObj( obj_ ) - scrMsg() - scn_[SCN_REFRESH] := OBJ_REFRESH_ALL - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrAddFld( obj_,scn_,nObj ) - LOCAL v_, n, sel_ - - sel_:= scrVvSelAble( scn_ ) - v_ := iif( nObj > 0, scrObj2Vv( obj_[ nObj ] ), scrVvBlank() ) - n := v_[ VV_FIELD ] - IF nObj == 0 - v_[ VV_FIELD ] := 0 - v_[ VV_ID ] := space( 10 ) - v_[ VV_F_PIC ] := space( 15 ) - v_[ VV_COLOR ] := 'N/W ' - ENDIF - - v_[ VV_EQN ] := 'fieldget('+ ltrim( str( n ) ) + ')' - - sel_[ VV_ALIGN ] := .f. - sel_[ VV_PRN_LEN ] := .f. - sel_[ VV_PRN_LEN ] := .f. - sel_[ VV_ALIGN ] := .f. - sel_[ VV_COLOR ] := .f. - sel_[ VV_POINT ] := .f. - sel_[ VV_COL_JUST ] := .f. - sel_[ VV_PATTERN ] := .f. - sel_[ VV_F_TYPE ] := .T. - - scrField( nObj, 1, obj_, scn_, v_, sel_, OBJ_CLR_FIELD ) - - IF nObj > 0 - scrOrdObj( obj_ ) - ENDIF - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrAddTxt( obj_,scn_,nKey,nMode ) - LOCAL txt_:={},n, lClub,i - LOCAL n1,s1,s2,nTxt,nDel - LOCAL nRepCol := scn_[SCN_COL_REP], nRepRow := scn_[SCN_ROW_REP] - LOCAL lOrder := .f. - // nMode 1.Add 2.Del 3.BS - - // Scan obj_ FOR Text Objects Related WITH Current Report Row - aeval( obj_,{|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_TEXT .AND. e_[ OBJ_ROW ] == nRepRow, aadd( txt_,e_ ),'' ) } ) - IF nMode == 1 // New Character - IF empty( txt_ ) .OR. ascan( txt_,{|e_| VouchInRange( nRepCol, e_[OBJ_COL],e_[OBJ_TO_COL] ) } ) == 0 - aadd( txt_, scrObjBlank() ) ; lOrder := .t. - nTxt := len( txt_ ) - txt_[ nTxt, OBJ_TYPE ] := OBJ_O_TEXT - txt_[ nTxt, OBJ_F_TYPE ] := 'C' - txt_[ nTxt, OBJ_F_LEN ] := 1 - txt_[ nTxt, OBJ_ALIGN ] := 'L' - txt_[ nTxt, OBJ_ROW ] := scn_[SCN_ROW_REP] - txt_[ nTxt, OBJ_COL ] := scn_[SCN_COL_REP] - txt_[ nTxt, OBJ_EQN ] := '' - txt_[ nTxt, OBJ_ID ] := 'Text' - txt_[ nTxt, OBJ_COLOR ] := 'N/W' - txt_[ nTxt, OBJ_PITCH ] := 10 - txt_[ nTxt, OBJ_SECTION ] := scrSecCur( scn_,scn_[SCN_ROW_REP] ) - txt_[ nTxt, OBJ_TO_ROW ] := scn_[SCN_ROW_REP] - txt_[ nTxt, OBJ_TO_COL ] := scn_[SCN_COL_REP] - ENDIF - ENDIF - - nTxt := ascan( txt_,{|e_| VouchInRange( nRepCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } ) - - IF nMode == 1 - txt_[nTxt,OBJ_EQN] := substr( txt_[nTxt,OBJ_EQN],1,; - scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] ) + ; - chr( nKey ) + ; - substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + ; - iif( ReadInsert(),1,2 ) ) - txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( txt_[nTxt,OBJ_EQN] )-1 - - ELSEIF nMode == 2 .OR. nMode == 3 // Delete - IF readInsert() - txt_[nTxt,OBJ_EQN] := substr( txt_[nTxt,OBJ_EQN],1,; - scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] ) + ; - substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + 2 ) - txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( txt_[nTxt,OBJ_EQN] )-1 - ELSE // Divide it IN two objects - s1 := substr( txt_[nTxt,OBJ_EQN],1,scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] ) - s2 := substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + 2 ) - nDel := 0 - IF len( s1 ) > 0 - txt_[nTxt,OBJ_EQN] := s1 - txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( s1 )-1 - txt_[nTxt,OBJ_PRN_LEN] := len( s1 ) - ELSE - nDel := nTxt - ENDIF - - IF len( s2 ) > 0 - IF nDel == 0 - aadd( txt_,aclone( txt_[nTxt] ) ) // scrObjBlank() ) - lOrder := .t. - n1 := len( txt_ ) - ELSE - n1 := nDel - ENDIF - txt_[n1,OBJ_TYPE] := OBJ_O_TEXT - txt_[n1,OBJ_F_TYPE] := 'C' - txt_[n1,OBJ_F_LEN] := len( s2 ) - txt_[n1,OBJ_PRN_LEN] := len( s2 ) - // txt_[n1,OBJ_ALIGN] := 'L' - txt_[n1,OBJ_ROW] := scn_[SCN_ROW_REP] - txt_[n1,OBJ_COL] := scn_[SCN_COL_REP]+1 - txt_[n1,OBJ_EQN] := s2 - txt_[n1,OBJ_ID] := 'Text' - txt_[n1,OBJ_SECTION] := scrSecCur( scn_,scn_[SCN_ROW_REP] ) - txt_[n1,OBJ_TO_ROW] := scn_[SCN_ROW_REP] - txt_[n1,OBJ_TO_COL] := txt_[n1,OBJ_COL]+len( s2 )-1 - ENDIF - IF len( s1 )==0.AND.len( s2 )==0 - VouchAShrink( txt_,nTxt ) - IF empty( txt_ ) - aadd( txt_,scrObjBlank() ) - ENDIF - ENDIF - ENDIF - ENDIF - - IF !empty( txt_ ) - DO WHILE .t. - IF( n := ascan( txt_,{|e_| e_[OBJ_TO_COL] < e_[OBJ_COL] } ) ) > 0 - VouchAShrink( txt_,n ) - ELSE - EXIT - ENDIF - ENDDO - IF empty( txt_ ) - aadd( txt_,scrObjBlank() ) - ENDIF - // CLUB DIFFERENT TEXT OBJECTS IF THESE ARE ADJACENT - asort( txt_,,,{|e_,f_| e_[OBJ_COL] 0 - VouchAShrink( obj_,n ) - IF empty( obj_ ) - aadd( obj_, scrObjBlank() ) - ENDIF - ELSE - EXIT - ENDIF - ENDDO - - aeval( txt_,{|e_| iif( e_[OBJ_ROW]>0,aadd( obj_,e_ ),'' ) } ) // Now attach txt_ - - DO WHILE .t. - IF( n := ascan( obj_,{|e_| e_[OBJ_TO_COL] < e_[OBJ_COL] } ) ) > 0 - VouchAShrink( obj_,n ) - IF empty( obj_ ) - aadd( obj_,scrObjBlank() ) - ENDIF - ELSE - EXIT - ENDIF - ENDDO - - IF lOrder - // scrOrdObj( obj_ ) - ENDIF - IF nMode == 1 - keyboard( chr( K_RIGHT ) ) - ENDIF - - scn_[SCN_REFRESH] := OBJ_REFRESH_LINE - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrProperty( obj_, scn_ ) - LOCAL prp_:= {} - - HB_SYMBOL_UNUSED( obj_ ) - - DO CASE - CASE scn_[ SCN_DESIGN ] == DGN_MODULE - scn_[SCN_PROPERTY] := prp_ - - ENDCASE - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrVvBlank() - LOCAL v_:= array( VV_INIT_VRBLS ) - - v_[ VV_ID ] := 'New ' - v_[ VV_FIELD ] := 0 - v_[ VV_F_TYPE ] := 'C' - v_[ VV_F_LEN ] := 25 - v_[ VV_F_DEC ] := 0 - v_[ VV_ATTRB ] := 'NONE ' - v_[ VV_EQN ] := ' ' - v_[ VV_PRN_LEN ] := 25 - v_[ VV_F_PIC ] := ' ' - v_[ VV_PITCH ] := 10 - v_[ VV_FONT ] := 'COURIER ' - v_[ VV_BOLD ] := .f. - v_[ VV_ITALIC ] := .f. - v_[ VV_UNDERLN ] := .f. - v_[ VV_S_SCRPT ] := .f. - v_[ VV_U_SCRPT ] := .f. - v_[ VV_HALF_H ] := .f. - v_[ VV_ALIGN ] := 'C' - v_[ VV_COLOR ] := 'W+/B ' - v_[ VV_ZERO ] := .t. - v_[ VV_REPEATED ] := 'NO ' - v_[ VV_VERTICLE ] := .F. - v_[ VV_WRAP_SEMI ] := .F. - v_[ VV_FOR ] := space( 80 ) - v_[ VV_OBJ_UNIQUE ] := 0 - v_[ VV_MDL_F_TYPE ] := 0 - v_[ VV_POINT ] := 12 - v_[ VV_COL_JUST ] := 0 - v_[ VV_PATTERN ] := 'SOLID ' - v_[ VV_BORDER ] := 0.50 - - RETURN v_ - -//----------------------------------------------------------------------// - -FUNCTION scrVvSelAble( /*scn_*/ ) - LOCAL sel_:= array( VV_INIT_VRBLS ) - LOCAL isPrint := .f. - - sel_[ VV_ID ] := .t. - sel_[ VV_FIELD ] := .f. - sel_[ VV_F_TYPE ] := .t. - sel_[ VV_F_LEN ] := .t. - sel_[ VV_F_DEC ] := .t. - sel_[ VV_ATTRB ] := .f. - sel_[ VV_EQN ] := .f. - sel_[ VV_PRN_LEN ] := .T. - sel_[ VV_F_PIC ] := .t. - sel_[ VV_PITCH ] := isPrint - sel_[ VV_FONT ] := isPrint - sel_[ VV_BOLD ] := isPrint - sel_[ VV_ITALIC ] := isPrint - sel_[ VV_UNDERLN ] := isPrint - sel_[ VV_S_SCRPT ] := .f. // isPrint - sel_[ VV_U_SCRPT ] := .f. // isPrint - sel_[ VV_HALF_H ] := isPrint - sel_[ VV_ALIGN ] := .t. // isPrint - sel_[ VV_COLOR ] := .t. // !isPrint - sel_[ VV_ZERO ] := isPrint - sel_[ VV_REPEATED ] := isPrint - sel_[ VV_VERTICLE ] := isPrint - sel_[ VV_WRAP_SEMI ] := isPrint - sel_[ VV_FOR ] := isPrint - sel_[ VV_OBJ_UNIQUE ] := .f. - sel_[ VV_MDL_F_TYPE ] := .f. - sel_[ VV_POINT ] := .T. - sel_[ VV_COL_JUST ] := .t. - sel_[ VV_PATTERN ] := .t. - sel_[ VV_BORDER ] := .f. - - RETURN sel_ - -//----------------------------------------------------------------------// - -FUNCTION scrVv2Obj( v_,o_ ) - - o_[ OBJ_ID ] := v_[ VV_ID ] - o_[ OBJ_FIELD ] := v_[ VV_FIELD ] - o_[ OBJ_F_TYPE ] := v_[ VV_F_TYPE ] - o_[ OBJ_F_LEN ] := v_[ VV_F_LEN ] - o_[ OBJ_F_DEC ] := v_[ VV_F_DEC ] - o_[ OBJ_ATTRB ] := v_[ VV_ATTRB ] - o_[ OBJ_EQN ] := v_[ VV_EQN ] - o_[ OBJ_PRN_LEN ] := v_[ VV_PRN_LEN ] - o_[ OBJ_F_PIC ] := v_[ VV_F_PIC ] - o_[ OBJ_PITCH ] := v_[ VV_PITCH ] - o_[ OBJ_FONT ] := v_[ VV_FONT ] - o_[ OBJ_BOLD ] := v_[ VV_BOLD ] - o_[ OBJ_ITALIC ] := v_[ VV_ITALIC ] - o_[ OBJ_UNDERLN ] := v_[ VV_UNDERLN ] - o_[ OBJ_S_SCRPT ] := v_[ VV_S_SCRPT ] - o_[ OBJ_U_SCRPT ] := v_[ VV_U_SCRPT ] - o_[ OBJ_HALF_H ] := v_[ VV_HALF_H ] - o_[ OBJ_ALIGN ] := v_[ VV_ALIGN ] - o_[ OBJ_COLOR ] := v_[ VV_COLOR ] - o_[ OBJ_ZERO ] := v_[ VV_ZERO ] - o_[ OBJ_REPEATED ] := v_[ VV_REPEATED ] - o_[ OBJ_VERTICLE ] := v_[ VV_VERTICLE ] - o_[ OBJ_WRAP_SEMI ] := v_[ VV_WRAP_SEMI ] - o_[ OBJ_FOR ] := v_[ VV_FOR ] - o_[ OBJ_OBJ_UNIQUE ] := v_[ VV_OBJ_UNIQUE ] - o_[ OBJ_MDL_F_TYPE ] := v_[ VV_MDL_F_TYPE ] - o_[ OBJ_POINT ] := v_[ VV_POINT ] - o_[ OBJ_COL_JUST ] := v_[ VV_COL_JUST ] - o_[ OBJ_PATTERN ] := v_[ VV_PATTERN ] - o_[ OBJ_BORDER ] := v_[ VV_BORDER ] - - RETURN o_ - -//----------------------------------------------------------------------// - -FUNCTION scrObj2Vv( o_ ) - LOCAL v_:={} - - aadd( v_, pad( o_[OBJ_ID ],15 ) ) - aadd( v_, o_[ OBJ_FIELD ] ) - aadd( v_, o_[ OBJ_F_TYPE ] ) - aadd( v_, o_[ OBJ_F_LEN ] ) - aadd( v_, o_[ OBJ_F_DEC ] ) - aadd( v_, o_[ OBJ_ATTRB ] ) - aadd( v_, o_[ OBJ_EQN ] ) - aadd( v_, o_[ OBJ_PRN_LEN ] ) - aadd( v_, o_[ OBJ_F_PIC ] ) - aadd( v_, o_[ OBJ_PITCH ] ) - aadd( v_, o_[ OBJ_FONT ] ) - aadd( v_, o_[ OBJ_BOLD ] ) - aadd( v_, o_[ OBJ_ITALIC ] ) - aadd( v_, o_[ OBJ_UNDERLN ] ) - aadd( v_, o_[ OBJ_S_SCRPT ] ) - aadd( v_, o_[ OBJ_U_SCRPT ] ) - aadd( v_, o_[ OBJ_HALF_H ] ) - aadd( v_, o_[ OBJ_ALIGN ] ) - aadd( v_, o_[ OBJ_COLOR ] ) - aadd( v_, o_[ OBJ_ZERO ] ) - aadd( v_, o_[ OBJ_REPEATED ] ) - aadd( v_, o_[ OBJ_VERTICLE ] ) - aadd( v_, o_[ OBJ_WRAP_SEMI ] ) - aadd( v_, o_[ OBJ_FOR ] ) - aadd( v_, o_[ OBJ_OBJ_UNIQUE ] ) - aadd( v_, o_[ OBJ_MDL_F_TYPE ] ) - aadd( v_, o_[ OBJ_POINT ] ) - aadd( v_, o_[ OBJ_COL_JUST ] ) - aadd( v_, o_[ OBJ_PATTERN ] ) - aadd( v_, o_[ OBJ_BORDER ] ) - - RETURN v_ - -//----------------------------------------------------------------------// - -FUNCTION scrStr2Obj( s ) - LOCAL obj_:= scrObjBlank() - - obj_[ OBJ_TYPE ] := val( substr( s, OBJ_OS_TYPE, OBJ_LEN_TYPE ) ) - obj_[ OBJ_ROW ] := val( substr( s, OBJ_OS_ROW, OBJ_LEN_ROW ) ) - obj_[ OBJ_COL ] := val( substr( s, OBJ_OS_COL, OBJ_LEN_COL ) ) - obj_[ OBJ_TEXT ] := substr( s, OBJ_OS_TEXT, OBJ_LEN_TEXT ) - obj_[ OBJ_COLOR ] := substr( s, OBJ_OS_COLOR, OBJ_LEN_COLOR ) - obj_[ OBJ_TO_ROW ] := val( substr( s, OBJ_OS_TO_ROW, OBJ_LEN_TO_ROW ) ) - obj_[ OBJ_TO_COL ] := val( substr( s, OBJ_OS_TO_COL, OBJ_LEN_TO_COL ) ) - obj_[ OBJ_ID ] := substr( s, OBJ_OS_ID, OBJ_LEN_ID ) - obj_[ OBJ_SECTION ] := val( substr( s, OBJ_OS_SECTION, OBJ_LEN_SECTION ) ) - obj_[ OBJ_ALIAS ] := substr( s, OBJ_OS_ALIAS, OBJ_LEN_ALIAS ) - obj_[ OBJ_FIELD ] := val( substr( s, OBJ_OS_FIELD, OBJ_LEN_FIELD ) ) - obj_[ OBJ_EQN ] := substr( s, OBJ_OS_EQN, OBJ_LEN_EQN ) - obj_[ OBJ_F_TYPE ] := substr( s, OBJ_OS_F_TYPE, OBJ_LEN_F_TYPE ) - obj_[ OBJ_F_LEN ] := val( substr( s, OBJ_OS_F_LEN, OBJ_LEN_F_LEN ) ) - obj_[ OBJ_F_DEC ] := val( substr( s, OBJ_OS_F_DEC, OBJ_LEN_F_DEC ) ) - obj_[ OBJ_F_PIC ] := substr( s, OBJ_OS_F_PIC, OBJ_LEN_F_PIC ) - obj_[ OBJ_ALIGN ] := substr( s, OBJ_OS_ALIGN, OBJ_LEN_ALIGN ) - obj_[ OBJ_PITCH ] := val( substr( s, OBJ_OS_PITCH, OBJ_LEN_PITCH ) ) - obj_[ OBJ_FONT ] := substr( s, OBJ_OS_FONT, OBJ_LEN_FONT ) - obj_[ OBJ_BOLD ] := substr( s, OBJ_OS_BOLD, OBJ_LEN_BOLD ) == 'T' - obj_[ OBJ_ITALIC ] := substr( s, OBJ_OS_ITALIC, OBJ_LEN_ITALIC ) == 'T' - obj_[ OBJ_UNDERLN ] := substr( s, OBJ_OS_UNDERLN, OBJ_LEN_UNDERLN ) == 'T' - obj_[ OBJ_S_SCRPT ] := substr( s, OBJ_OS_S_SCRPT, OBJ_LEN_S_SCRPT ) == 'T' - obj_[ OBJ_U_SCRPT ] := substr( s, OBJ_OS_U_SCRPT, OBJ_LEN_U_SCRPT ) == 'T' - obj_[ OBJ_HALF_H ] := substr( s, OBJ_OS_HALF_H, OBJ_LEN_HALF_H ) == 'T' - obj_[ OBJ_PRN_LEN ] := val( substr( s, OBJ_OS_PRN_LEN, OBJ_LEN_PRN_LEN ) ) - obj_[ OBJ_ZERO ] := substr( s, OBJ_OS_ZERO , OBJ_LEN_ZERO ) == 'T' - obj_[ OBJ_REPEATED ] := substr( s, OBJ_OS_REPEATED, OBJ_LEN_REPEATED ) - obj_[ OBJ_VERTICLE ] := substr( s, OBJ_OS_VERTICLE, OBJ_LEN_VERTICLE ) == 'T' - obj_[ OBJ_WRAP_SEMI ] := substr( s, OBJ_OS_WRAP_SEMI, OBJ_LEN_WRAP_SEMI ) == 'T' - obj_[ OBJ_FOR ] := substr( s, OBJ_OS_FOR, OBJ_LEN_FOR ) - obj_[ OBJ_SEC_ROW ] := val( substr( s, OBJ_OS_SEC_ROW, OBJ_LEN_SEC_ROW ) ) - obj_[ OBJ_ATTRB ] := substr( s, OBJ_OS_ATTRB, OBJ_LEN_ATTRB ) - obj_[ OBJ_VAL ] := substr( s, OBJ_OS_VAL, OBJ_LEN_VAL ) - obj_[ OBJ_OBJ_UNIQUE ] := val( substr( s, OBJ_OS_OBJ_UNIQUE, OBJ_LEN_OBJ_UNIQUE ) ) - obj_[ OBJ_MDL_F_TYPE ] := val( substr( s, OBJ_OS_MDL_F_TYPE, OBJ_LEN_MDL_F_TYPE ) ) - obj_[ OBJ_POINT ] := val( substr( s, OBJ_OS_POINT, OBJ_LEN_POINT ) ) - obj_[ OBJ_COL_JUST ] := val( substr( s, OBJ_OS_COL_JUST, OBJ_LEN_COL_JUST ) ) - obj_[ OBJ_PATTERN ] := substr( s, OBJ_OS_PATTERN, OBJ_LEN_PATTERN ) - obj_[ OBJ_BORDER ] := val( substr( s, OBJ_OS_BORDER, OBJ_LEN_BORDER ) ) - - obj_[OBJ_TEXT ] := padc( alltrim( obj_[OBJ_TEXT] ),obj_[OBJ_F_LEN] ) - - obj_[OBJ_EQN ] := iif( obj_[ OBJ_TYPE ] == OBJ_O_TEXT, substr( obj_[ OBJ_EQN ], 1,; - obj_[ OBJ_TO_COL ] - obj_[ OBJ_COL ] + 1 ), obj_[ OBJ_EQN ] ) - RETURN obj_ - -//----------------------------------------------------------------------// - -FUNCTION scrObj2str( obj_ ) - LOCAL s := ; - str( obj_[ OBJ_TYPE ], OBJ_LEN_TYPE ) + ; - str( obj_[ OBJ_ROW ], OBJ_LEN_ROW ) + ; - str( obj_[ OBJ_COL ], OBJ_LEN_COL ) + ; - pad( alltrim( obj_[ OBJ_TEXT ] ), OBJ_LEN_TEXT ) + ; - pad( obj_[ OBJ_COLOR ], OBJ_LEN_COLOR ) + ; - str( obj_[ OBJ_TO_ROW ], OBJ_LEN_TO_ROW ) + ; - str( obj_[ OBJ_TO_COL ], OBJ_LEN_TO_COL ) + ; - pad( obj_[ OBJ_ID ], OBJ_LEN_ID ) + ; - str( obj_[ OBJ_SECTION ], OBJ_LEN_SECTION ) + ; - pad( obj_[ OBJ_ALIAS ], OBJ_LEN_ALIAS ) + ; - str( obj_[ OBJ_FIELD ], OBJ_LEN_FIELD ) + ; - pad( obj_[ OBJ_EQN ], OBJ_LEN_EQN ) + ; - pad( obj_[ OBJ_F_TYPE ], OBJ_LEN_F_TYPE ) + ; - str( obj_[ OBJ_F_LEN ], OBJ_LEN_F_LEN ) + ; - str( obj_[ OBJ_F_DEC ], OBJ_LEN_F_DEC ) + ; - pad( obj_[ OBJ_F_PIC ], OBJ_LEN_F_PIC ) + ; - pad( obj_[ OBJ_ALIGN ], OBJ_LEN_ALIGN ) + ; - str( obj_[ OBJ_PITCH ], OBJ_LEN_PITCH ) + ; - pad( obj_[ OBJ_FONT ], OBJ_LEN_FONT ) + ; - iif( obj_[ OBJ_BOLD ], 'T', 'F' ) + ; - iif( obj_[ OBJ_ITALIC ], 'T', 'F' ) + ; - iif( obj_[ OBJ_UNDERLN ], 'T', 'F' ) + ; - iif( obj_[ OBJ_S_SCRPT ], 'T', 'F' ) + ; - iif( obj_[ OBJ_U_SCRPT ], 'T', 'F' ) + ; - iif( obj_[ OBJ_HALF_H ], 'T', 'F' ) + ; - str( obj_[ OBJ_PRN_LEN ], OBJ_LEN_PRN_LEN ) + ; - iif( obj_[ OBJ_ZERO ], 'T', 'F' ) + ; - pad( obj_[ OBJ_REPEATED ], OBJ_LEN_REPEATED ) + ; - iif( obj_[ OBJ_VERTICLE ], 'T', 'F' ) + ; - iif( obj_[ OBJ_WRAP_SEMI ], 'T', 'F' ) + ; - pad( obj_[ OBJ_FOR ], OBJ_LEN_FOR ) + ; - str( obj_[ OBJ_SEC_ROW ], OBJ_LEN_SEC_ROW ) + ; - pad( obj_[ OBJ_ATTRB ], OBJ_LEN_ATTRB ) + ; - pad( obj_[ OBJ_VAL ], OBJ_LEN_VAL ) + ; - str( obj_[ OBJ_OBJ_UNIQUE ], OBJ_LEN_OBJ_UNIQUE ) + ; - str( obj_[ OBJ_MDL_F_TYPE ], OBJ_LEN_MDL_F_TYPE ) + ; - str( obj_[ OBJ_POINT ], OBJ_LEN_POINT ) + ; - str( obj_[ OBJ_COL_JUST ], OBJ_LEN_COL_JUST ) + ; - pad( obj_[ OBJ_PATTERN ], OBJ_LEN_PATTERN ) + ; - str( obj_[ OBJ_BORDER ], OBJ_LEN_BORDER, 2 ) - - RETURN pad( s,490 ) // 10 FOR Random, 500 FOR attr - -//----------------------------------------------------------------------// - -FUNCTION scrObjBlank() - LOCAL o_:= array( OBJ_INIT_VRBLS ) - - o_[ OBJ_TYPE ] := 0 - o_[ OBJ_ROW ] := 0 - o_[ OBJ_COL ] := 0 - o_[ OBJ_TEXT ] := '' - o_[ OBJ_COLOR ] := 'W/B ' - o_[ OBJ_TO_ROW ] := 0 - o_[ OBJ_TO_COL ] := 0 - o_[ OBJ_ID ] := '' - o_[ OBJ_SECTION ] := 1 - o_[ OBJ_ALIAS ] := '' - o_[ OBJ_FIELD ] := 0 - o_[ OBJ_EQN ] := '' - o_[ OBJ_F_TYPE ] := '' - o_[ OBJ_F_LEN ] := 0 - o_[ OBJ_F_DEC ] := 0 - o_[ OBJ_F_PIC ] := '' - o_[ OBJ_ALIGN ] := 'L' - o_[ OBJ_PITCH ] := 10 - o_[ OBJ_FONT ] := 'COURIER ' - o_[ OBJ_BOLD ] := .F. - o_[ OBJ_ITALIC ] := .F. - o_[ OBJ_UNDERLN ] := .F. - o_[ OBJ_S_SCRPT ] := .F. - o_[ OBJ_U_SCRPT ] := .F. - o_[ OBJ_PRN_LEN ] := 0 - o_[ OBJ_HALF_H ] := .F. - o_[ OBJ_ZERO ] := .T. - o_[ OBJ_REPEATED ] := 'NO ' - o_[ OBJ_VERTICLE ] := .F. - o_[ OBJ_WRAP_SEMI ] := .F. - o_[ OBJ_FOR ] := space( 80 ) - o_[ OBJ_SEC_ROW ] := 0 - o_[ OBJ_ATTRB ] := 'NONE ' - o_[ OBJ_VAL ] := ' ' - o_[ OBJ_OBJ_UNIQUE ] := 0 - o_[ OBJ_MDL_F_TYPE ] := 0 - o_[ OBJ_POINT ] := 0 - o_[ OBJ_COL_JUST ] := 0 - o_[ OBJ_PATTERN ] := 'SOLID ' - o_[ OBJ_BORDER ] := 0.50 - - RETURN o_ - -//----------------------------------------------------------------------// - -FUNCTION scrScn2obj( scn_,nType ) - LOCAL obj_:={} - - DEFAULT nType TO 0 - aeval( scn_,{|e_| iif( e_[2] == nType, aadd( obj_,scrStr2Obj( e_[3] ) ), '' ) } ) - - RETURN obj_ - -//----------------------------------------------------------------------// -#IF 0 -FUNCTION scrClrFrBk( cClr ) - LOCAL nClrF, nClrB,cFr,cBk,n - LOCAL pal_:={'W','N','N+','N++','BG','G','R','RB','GR',; - 'B','GR+','W+','B+','R+','BG+','G+','RB+','X'} - LOCAL mnu_:= ; - {'White', 'Black', 'Grey','Pale Grey','Baige', 'Green', 'Red',; - 'Magenta', 'Brown', 'Blue', 'Yellow','Bright White',; - 'Bright Blue', 'Bright Red', 'Bright Baige',; - 'Bright Green', 'Bright Magenta','None'} - - cClr := iif( empty( cClr ),'W/B',alltrim( upper( cClr ) ) ) - IF( n := at( '/',cClr ) )==0 - RETURN pad( cClr,7 ) - ENDIF - cFr := substr( cClr,1,n-1 ) - cBk := substr( cClr,n+1 ) - - nClrF := ascan( pal_,{|e| e == cFr} ) - nClrB := ascan( pal_,{|e| e == cBk} ) - - B_MSG 'ForeGround Color' ; - CHOOSE mnu_ RESTORE SHADOW CENTER INTO nClrF INITIAL nClrF - IF nClrF == 0 - RETURN space( 7 ) - ENDIF - - B_MSG 'BackGround Color' ; - CHOOSE mnu_ RESTORE SHADOW CENTER INTO nClrB INITIAL nClrB - IF nClrB == 0 - RETURN space( 7 ) - ENDIF - RETURN pad( pal_[nClrF]+'/'+pal_[nClrB],7 ) -#ENDIF -//----------------------------------------------------------------------// - -FUNCTION scrSecCur( scn_, nRepRow ) // Numeric id of sector - LOCAL n,i - n := 0 - FOR i := 1 TO len( scn_[ SCN_SECTORS_ ] ) - n += scn_[ SCN_SECTORS_, i, SCT_ROWS ] - IF nRepRow <= n -// n1 := i - EXIT - ENDIF - NEXT - RETURN scn_[ SCN_SECTORS_, i, SCT_ORDER ] - -//----------------------------------------------------------------------// - -FUNCTION scrSecOrd( scn_, nRepRow ) // Index of sector - LOCAL n,n1,i - n := 0 - FOR i := 1 TO len( scn_[ SCN_SECTORS_ ] ) - n += scn_[ SCN_SECTORS_, i, SCT_ROWS ] - IF nRepRow <= n - n1 := i - EXIT - ENDIF - NEXT - RETURN n1 - -//----------------------------------------------------------------------// -/* Sector wise row position */ -FUNCTION scrSecRow( scn_,nRepRow ) - LOCAL n,n1,i - n := 0 ; n1 := 0 - FOR i := 1 TO len( scn_[ SCN_SECTORS_ ] ) - n += scn_[ SCN_SECTORS_, i, SCT_ROWS ] - IF nRepRow <= n - n1 := nRepRow -( n - scn_[ SCN_SECTORS_, i, SCT_ROWS ] ) - EXIT - ENDIF - NEXT - RETURN n1 - -//----------------------------------------------------------------------// - -FUNCTION scrMsg( msg ) - LOCAL row := row(), col := col() - - @ maxrow(),0 SAY padc( " ", maxcol()+1 ) COLOR "W+/W" - IF empty( msg ) - msg := "F1 Help F5 Edit F6 Select F7 Copy F8 Paste F9 Box F10 Field" - ENDIF - msg := " " + msg + " " - @ maxrow(),( maxcol()+1-len( msg ) )/2 SAY msg COLOR "W+/B" - - setPos( row,col ) - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrInkey( key_ ) - LOCAL nKey - - DO WHILE .t. - nKey := inkey( 0 ) - IF ascan( key_, nKey ) > 0 - EXIT - ENDIF - ENDDO - - RETURN nKey - -//----------------------------------------------------------------------// - -FUNCTION scrConfig( obj_, nDgn, sct_ ) - LOCAL s, n, nRows, nCols - LOCAL cor_:={ { 1, 0, maxrow()-2, maxcol(), 200, 400 } } - LOCAL scn_:= array( SCN_NUM_VAR ) - - scn_[ SCN_SECTORS_ ] := {} - scn_[ SCN_DESIGN ] := nDgn - scn_[ SCN_FOR_ROWS ] := { { 0,'' } } - - nRows := scrSectors( obj_, scn_, nDgn, sct_ ) - - nCols := 0 - aeval( obj_, {|e_| nCols := max( nCols, e_[ OBJ_TO_COL ] ) } ) - nCols := iif( nCols == 0, cor_[ nDgn,4 ], nCols ) - - scn_[ SCN_TOP ] := cor_[ nDgn,1 ] - scn_[ SCN_LEFT ] := cor_[ nDgn,2 ] - scn_[ SCN_BOTTOM ] := cor_[ nDgn,3 ] - scn_[ SCN_RIGHT ] := cor_[ nDgn,4 ] - scn_[ SCN_MODE ] := 0 - scn_[ SCN_ROW_CUR ] := scn_[ SCN_TOP ] // 9 - scn_[ SCN_COL_CUR ] := scn_[ SCN_LEFT ] - scn_[ SCN_ROW_REP ] := 1 - scn_[ SCN_COL_REP ] := 1 - scn_[ SCN_ROW_DIS ] := scn_[ SCN_TOP ]-1 - scn_[ SCN_COL_DIS ] := scn_[ SCN_LEFT ]-1 - - scn_[ SCN_ROW_MENU ] := 0 - scn_[ SCN_ROW_RULER ] := 0 - scn_[ SCN_STATUS_ROW ] := maxrow()-1 - scn_[ SCN_STATUS_COL ] := 0 - scn_[ SCN_STATUS_COL_TO] := maxcol() - - scn_[ SCN_COL_MAX ] := iif( nDgn==DGN_SCREEN .OR. nDgn==DGN_MODULE, cor_[nDgn,6], nCols ) - scn_[ SCN_ROW_PREV ] := scn_[ SCN_TOP ] - scn_[ SCN_COL_PREV ] := scn_[ SCN_LEFT ] - scn_[ SCN_REP_LINES ] := iif( nDgn==DGN_SCREEN .OR. nDgn==DGN_MODULE, cor_[ nDgn,5 ], nRows ) - - scn_[ SCN_CLR_STATUS ] := "W+/BG" - scn_[ SCN_CLR_TEXT ] := 'W+/B' - scn_[ SCN_CLR_BOX ] := 'W/B' - scn_[ SCN_CLR_FIELD ] := CLR_GET - scn_[ SCN_CLR_HILITE ] := iif( wvt(),'N/GR*','GR+/BG' ) - scn_[ SCN_CLR_WINDOW ] := 'W+/BG' - scn_[ SCN_CLR_RULER ] := "N/W" - scn_[ SCN_CLR_MENU ] := "W+/B" - scn_[ SCN_CLR_OVERALL ] := "N/W" - scn_[ SCN_CLR_PREV ] := iif( wvt(), 'B/W' , 'B/W' ) - scn_[ SCN_CLR_SELECT ] := iif( wvt(), 'N/W*', 'GR+/N' ) - - scn_[ SCN_OBJ_HILITE ] := 0 // 32 - scn_[ SCN_OBJ_SELECTED ] := 0 // 33 - - s := '.' - FOR n := 1 TO 40 - s += '.......' + strtran( str( n,3 ), ' ', '.' ) - NEXT - scn_[ SCN_RULER ] := s - - scn_[ SCN_DRAW_FILL ] := '±±±±±±±±±' - scn_[ SCN_OBJ_ID_ ] := { 'Bitmap','Line','Text','Field','Expression','BitMap' } - scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL - scn_[ SCN_OBJ_COPIED ] := 0 - scn_[ SCN_BOX_SHAPE ] := 'ÚÄ¿³ÙÄÀ³' - scn_[ SCN_CHR_PREV ] := '' - scn_[ SCN_DESIGN_ID ] := "Module" - scn_[ SCN_FILE ] := "Untitled" - scn_[ SCN_PROPERTY ] := {} - scn_[ SCN_GRAPHICS ] := .f. - scn_[ SCN_TEXT_BLOCK_ ] := {} - scn_[ SCN_FIELDS ] := {} - scn_[ SCN_LASTKEY ] := 0 - - RETURN scn_ - -//----------------------------------------------------------------------// - -FUNCTION scrWvtConfig( obj_, scn_ ) - LOCAL nRows,nCols - LOCAL cor_:={ { 1, 0, maxrow()-2, maxcol(), 200, 400 } } - LOCAL nDgn := scn_[ SCN_DESIGN ] - - nRows := 0 - aeval( scn_[ SCN_SECTORS_ ], {|e_| nRows += e_[ SCT_ROWS ] } ) - - nCols := 0 - aeval( obj_, {|e_| nCols := max( nCols,e_[ OBJ_TO_COL ] ) } ) - nCols := iif( nCols == 0, cor_[ nDgn,4 ], nCols ) - - scn_[ SCN_TOP ] := cor_[ nDgn,1 ] - scn_[ SCN_LEFT ] := cor_[ nDgn,2 ] - scn_[ SCN_BOTTOM ] := cor_[ nDgn,3 ] - scn_[ SCN_RIGHT ] := cor_[ nDgn,4 ] - scn_[ SCN_STATUS_ROW ] := maxrow()-1 - scn_[ SCN_STATUS_COL ] := 0 - scn_[ SCN_STATUS_COL_TO ] := maxcol() - scn_[ SCN_MODE ] := 0 - scn_[ SCN_ROW_CUR ] := scn_[ SCN_TOP ] - scn_[ SCN_COL_CUR ] := scn_[ SCN_LEFT ] - scn_[ SCN_ROW_REP ] := 1 - scn_[ SCN_COL_REP ] := 1 - scn_[ SCN_ROW_DIS ] := scn_[ SCN_TOP ]-1 - scn_[ SCN_COL_DIS ] := scn_[ SCN_LEFT ]-1 - scn_[ SCN_ROW_RULER ] := 0 - scn_[ SCN_ROW_MENU ] := 0 - scn_[ SCN_COL_MAX ] := cor_[ nDgn, 6 ] - scn_[ SCN_ROW_PREV ] := scn_[ SCN_TOP ] - scn_[ SCN_COL_PREV ] := scn_[ SCN_LEFT ] - scn_[ SCN_REP_LINES ] := cor_[ nDgn, 5 ] - - RETURN NIL - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrSectors( obj_, scn_, nDgn /*,sct_*/ ) - - HB_SYMBOL_UNUSED( obj_ ) - - IF nDgn == DGN_MODULE .OR. nDgn == DGN_SCREEN - aadd( scn_[ SCN_SECTORS_ ], { 1,'Screen', 'R ', 100, 'w+/bg', '', .f., .f. } ) - ENDIF - - RETURN 100 - -//----------------------------------------------------------------------// - -STATIC FUNCTION scrAddPrp( scn_, sct_ ) - - aadd( scn_[SCN_SECTORS_], ; - { sct_[1], sct_[2], sct_[3], sct_[4], sct_[5], sct_[6], sct_[7], sct_[8] } ) - - RETURN NIL - -//----------------------------------------------------------------------// - -FUNCTION scrPicture( cType,nWidth,nDec,cPic,nScrWid ) - - DO CASE - CASE cType == 'N' - cPic := '@Z ' + replicate( '9', nScrWid - iif( nDec > 0, nDec + 1, 0 ) ) + ; - iif( nDec > 0, '.' + replicate( "9", nDec ), "" ) - CASE cType == 'C' - IF nScrWid <> nWidth - cPic := '@' + iif( '!' $ cPic,'!','' ) + 'S' + NTRIM( nScrWid ) - ENDIF - ENDCASE - - RETURN cPic - -//----------------------------------------------------------------------// - diff --git a/harbour/contrib/hbcuied/cu_utlty.prg b/harbour/contrib/hbcuied/cu_utlty.prg index fc06f60676..322cd93581 100644 --- a/harbour/contrib/hbcuied/cu_utlty.prg +++ b/harbour/contrib/hbcuied/cu_utlty.prg @@ -94,129 +94,6 @@ THREAD STATIC s_vid_stk := "" //----------------------------------------------------------------------// -FUNCTION scrField( nObj, nFldExp, obj_, scn_, v_, sel_, cColor ) - LOCAL h_:={},w_:={},o_ - - DEFAULT cColor TO scn_[ SCN_CLR_FIELD ] - DEFAULT sel_ TO scrVvSelAble() - - IF nObj == 0 - o_:= scrObjBlank() - DEFAULT v_ TO scrVvBlank() - ELSE - o_:= obj_[ nObj ] - IF v_ == NIL .OR. empty( v_ ) - v_:= scrObj2Vv( o_ ) - ENDIF - ENDIF - - aadd( h_, ' Title ' ) - aadd( h_, ' Field ' ) - aadd( h_, ' Type ' ) - aadd( h_, ' Width ' ) - aadd( h_, ' Decimals ' ) - aadd( h_, ' Calculate ' ) - aadd( h_, ' Expression ' ) - aadd( h_, ' Printed Width ' ) - aadd( h_, ' Picture ' ) - aadd( h_, ' Pitch ' ) - aadd( h_, ' Font ' ) - aadd( h_, ' Bold ' ) - aadd( h_, ' Italics ' ) - aadd( h_, ' UnderLine ' ) - aadd( h_, ' SuperScript ' ) - aadd( h_, ' SubScript ' ) - aadd( h_, ' Half Height ' ) - aadd( h_, ' Alignment ' ) - aadd( h_, ' Color ' ) - aadd( h_, ' Zero as Blank ' ) - aadd( h_, ' Supress Repeated Values ' ) - aadd( h_, ' Verticle Stretch ' ) - aadd( h_, ' Wrap Semi Colons ' ) - aadd( h_, ' The FOR Condition ' ) - aadd( h_, ' Unique Id ' ) - aadd( h_, ' Field Type . Module ' ) - aadd( h_, ' Point Size ' ) - aadd( h_, ' Column FOR Justification ' ) - aadd( h_, ' Pattern TO fill a frame ' ) - aadd( h_, ' Border Thickness ' ) - - aadd( w_, {| |.t. } ) - aadd( w_, {| |.t. } ) - aadd( w_, {| | VouchMenuM( 'MN_TYFLD' ) } ) - aadd( w_, {|v| v := oAchGet( 3 ),iif( v=='D',!oCPut( 8 ),iif( v=='L',!oCPut( 1 ),.t. ) ) } ) - aadd( w_, {|v| v := oAchGet( 3 ),iif( v<>'N',!oCPut( 0 ),.t. ) } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .t. } ) - aadd( w_, {| | .t. } ) - aadd( w_, {| | .t. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .t. } ) - aadd( w_, {| | .t. } ) - aadd( w_, {| | .f. } ) - aadd( w_, {| | .f. } ) - - B_GETS HEADERS h_ VALUES v_ ; - TITLE 'Configure '+ iif( nFldExp==1,'Field',iif( nFldExp==2,'Expression',iif( nFldexp==3,'Text','OBJECT' ) ) ) ; - INTO v_ WHEN w_ SELECTABLES sel_ - - v_:= v_[ 1 ] - v_[ 1 ] := alltrim( trim( v_[ 1 ] ) ) - IF empty( v_[ 1 ] ) - RETURN NIL - ENDIF - - IF lastkey() <> K_ESC - o_:= scrVv2Obj( v_,o_ ) - - o_[OBJ_TYPE] := iif( nFldExp == 1, OBJ_O_FIELD,; - iif( nFldExp == 2, OBJ_O_EXP,; - iif( nFldExp == 3, OBJ_O_TEXT,; - iif( nFldExp == 4, OBJ_O_BOX, ; - OBJ_O_FIELD ) ) ) ) - IF o_[ OBJ_TYPE ] == OBJ_O_FIELD - o_[ OBJ_ROW ] := iif( nObj == 0, scn_[ SCN_ROW_REP ], o_[ OBJ_ROW ] ) - o_[ OBJ_COL ] := iif( nObj == 0, scn_[ SCN_COL_REP ], o_[ OBJ_COL ] ) - o_[ OBJ_TEXT ] := padc( alltrim( v_[ VV_ID ] ), v_[ VV_F_LEN ] ) - o_[ OBJ_COLOR ] := iif( empty( o_[ OBJ_COLOR ] ), cColor, o_[ OBJ_COLOR ] ) - o_[ OBJ_TO_ROW ] := iif( nObj == 0, scn_[ SCN_ROW_REP ], o_[ OBJ_TO_ROW ] ) - o_[ OBJ_TO_COL ] := iif( nObj == 0, scn_[ SCN_COL_REP ], o_[ OBJ_COL ] ) + v_[ VV_F_LEN ] - 1 - ENDIF - - o_[OBJ_SECTION] := scrSecCur( scn_,scn_[SCN_ROW_REP] ) - - IF nObj == 0 - aadd( obj_,o_ ) - nObj := len( obj_ ) - ELSE - obj_[nObj] := o_ - ENDIF - - scn_[SCN_OBJ_SELECTED] := 0 - scn_[SCN_REFRESH] := OBJ_REFRESH_LINE - scn_[SCN_MODE] := 0 - ENDIF - - RETURN nObj - -//----------------------------------------------------------------------// - FUNCTION VouchInRange( v, r1, r2 ) RETURN ( v >= r1 .AND. v <= r2 ) @@ -583,7 +460,7 @@ STATIC FUNCTION vld() //----------------------------------------------------------------------// -STATIC FUNCTION oAchGet( n ) +FUNCTION oAchGet( n ) RETURN setGetAch()[n] //----------------------------------------------------------------------// @@ -594,7 +471,7 @@ STATIC FUNCTION oAchPut( n,v ) //----------------------------------------------------------------------// -STATIC FUNCTION oCPut( v ) +FUNCTION oCPut( v ) getactive():varPut( v ) RETURN .t. diff --git a/harbour/contrib/hbcuied/hbcuied.ch b/harbour/contrib/hbcuied/hbcuied.ch index 642bb156de..42d5b93004 100644 --- a/harbour/contrib/hbcuied/hbcuied.ch +++ b/harbour/contrib/hbcuied/hbcuied.ch @@ -69,10 +69,6 @@ #define __HBEDCUI_CH #define THE_FILL 'ø' -#define CLR_GET 'W+/W' -#define CLR_BOX 'W+/B' -#define OBJ_CLR_FIELD 'W+/W' - #define OBJ_TYPE 1 // N 1 #define OBJ_ROW 2 // N 3 @@ -118,21 +114,6 @@ #define OBJ_INIT_VRBLS 40 -// Run time addresses -#define OBJ_PRINT 4 -#define OBJ_SECTOR 9 -#define OBJ_UNIQUE 32 -#define CAL_UNIQUE 1 -#define CAL_SECTOR 2 -#define CAL_OBJ 3 -#define CAL_ATTRB 4 -#define CAL_NONE 5 -#define CAL_COUNT 6 -#define CAL_SUM 7 -#define CAL_AVERAGE 8 -#define CAL_HIGHEST 9 -#define CAL_LOWEST 10 - #define OBJ_LEN_TYPE 1 #define OBJ_LEN_ROW 3 #define OBJ_LEN_COL 3 @@ -331,142 +312,6 @@ #define SCN_NUM_VAR 55 -#define REP_DESC 1 // C 70 -#define REP_TYPE 2 // N 3 -#define REP_IDX_NO 3 // N 3 -#define REP_IDX_EXP 4 // C 240 -#define REP_PG_SIZE 5 // C 12 -#define REP_PG_LEN 6 // N 5 -#define REP_PG_WID 7 // N 5 -#define REP_LINES 8 // N 2 -#define REP_MG_TOP 9 // N 3 -#define REP_MG_LEFT 10 // N 3 -#define REP_MG_BOTTOM 11 // N 3 -#define REP_EJ_BEFORE 12 // L 1 -#define REP_EJ_AFTER 13 // L 1 -#define REP_PLAIN 14 // N 2 -#define REP_FTR_PAG 15 // L 1 -#define REP_SMR_NEXT 16 // L 1 -#define REP_HDR_PAGES 17 // C 10 -#define REP_BNK_LINES 18 // N 3 -#define REP_BNK_AFTER 19 // N 3 -#define REP_DATA_BOX 20 // L 1 -#define REP_FILE 21 // C 80 -#define REP_COPIES 22 // N 3 -#define REP_TTL_PAGES 23 // C 10 -#define REP_INIT_CPI 24 // N 2 -#define REP_PRN_QLY 25 // C 1 -#define REP_RECONFIRM 26 // L 1 -#define REP_FTR_BOTTOM 27 // L 1 -#define REP_HTML 28 // L 1 -#define REP_PRINTER 29 // C 7 -#define REP_ORIENT 30 // C 1 -#define REP_PREVIEW 31 // L 1 -#define REP_GRAY 32 // L 1 -#define REP_WINDLG 33 // L 1 -#define REP_DUPLEX 34 // N 1 -#define REP_COLS 35 // N 3 -#define REP_ROWS 36 // N 3 - -#define REP_FOR 37 // C 240 -#define REP_WHILE 38 // C 125 -#define REP_FIRST 39 // C 125 -#define REP_EXE_PRE 40 // C 245 -#define REP_EXE_POST 41 // C 245 - -#define REP_INIT_VRBLS 41 - -#define REP_LEN_DESC 70 -#define REP_LEN_TYPE 3 -#define REP_LEN_IDX_NO 3 -#define REP_LEN_IDX_EXP 240 -#define REP_LEN_PG_SIZE 12 -#define REP_LEN_PG_LEN 5 -#define REP_LEN_PG_WID 5 -#define REP_LEN_LINES 2 -#define REP_LEN_MG_TOP 3 -#define REP_LEN_MG_LEFT 3 -#define REP_LEN_MG_BOTTOM 3 -#define REP_LEN_EJ_BEFORE 1 -#define REP_LEN_EJ_AFTER 1 -#define REP_LEN_PLAIN 2 -#define REP_LEN_FTR_PAG 1 -#define REP_LEN_SMR_NEXT 1 -#define REP_LEN_HDR_PAGES 10 -#define REP_LEN_BNK_LINES 3 -#define REP_LEN_BNK_AFTER 3 -#define REP_LEN_DATA_BOX 1 -#define REP_LEN_FILE 80 -#define REP_LEN_COPIES 3 -#define REP_LEN_TTL_PAGES 10 -#define REP_LEN_INIT_CPI 2 -#define REP_LEN_PRN_QLY 1 -#define REP_LEN_RECONFIRM 1 -#define REP_LEN_FTR_BOTTOM 1 -#define REP_LEN_HTML 1 -#define REP_LEN_PRINTER 7 -#define REP_LEN_ORIENT 1 -#define REP_LEN_PREVIEW 1 -#define REP_LEN_GRAY 1 -#define REP_LEN_WINDLG 1 -#define REP_LEN_DUPLEX 1 -#define REP_LEN_COLS 3 -#define REP_LEN_ROWS 3 - -#define REP_LEN_FOR 240 -#define REP_LEN_WHILE 125 -#define REP_LEN_FIRST 125 -#define REP_LEN_EXE_PRE 245 -#define REP_LEN_EXE_POST 245 - -#define REP_OS_DESC 1 // C 70 -#define REP_OS_TYPE 71 // N 3 -#define REP_OS_IDX_NO 74 // N 3 -#define REP_OS_IDX_EXP 77 // C 240 -#define REP_OS_PG_SIZE 317 // C 12 -#define REP_OS_PG_LEN 329 // N 5 -#define REP_OS_PG_WID 334 // N 5 -#define REP_OS_LINES 339 // N 2 -#define REP_OS_MG_TOP 341 // N 3 -#define REP_OS_MG_LEFT 344 // N 3 -#define REP_OS_MG_BOTTOM 347 // N 3 -#define REP_OS_EJ_BEFORE 350 // L 1 -#define REP_OS_EJ_AFTER 351 // L 1 -#define REP_OS_PLAIN 352 // N 2 -#define REP_OS_FTR_PAG 354 // L 1 -#define REP_OS_SMR_NEXT 355 // L 1 -#define REP_OS_HDR_PAGES 356 // C 10 -#define REP_OS_BNK_LINES 366 // N 3 -#define REP_OS_BNK_AFTER 369 // N 3 -#define REP_OS_DATA_BOX 372 // L 1 -#define REP_OS_FILE 373 // C 80 -#define REP_OS_COPIES 453 // N 3 -#define REP_OS_TTL_PAGES 456 // C 10 -#define REP_OS_INIT_CPI 466 // N 2 -#define REP_OS_PRN_QLY 468 // C 1 -#define REP_OS_RECONFIRM 469 // L 1 -#define REP_OS_FTR_BOTTOM 470 // L 1 -#define REP_OS_HTML 471 // L 1 -#define REP_OS_PRINTER 472 // C 7 -#define REP_OS_ORIENT 479 // C 1 -#define REP_OS_PREVIEW 480 // L 1 -#define REP_OS_GRAY 481 // L 1 -#define REP_OS_WINDLG 482 // L 1 -#define REP_OS_DUPLEX 483 // N 1 -#define REP_OS_COLS 484 // N 3 -#define REP_OS_ROWS 487 // N 3 - - -// TOTAL 490 - -#define REP_OS_FOR 1 // C 240 -#define REP_OS_WHILE 241 // C 125 -#define REP_OS_FIRST 366 // C 125 - -#define REP_OS_EXE_PRE 1 // C 245 -#define REP_OS_EXE_POST 246 // C 245 - - #define SCT_ORDER 1 #define SCT_ID 2 #define SCT_SAY 3 @@ -475,49 +320,7 @@ #define SCT_EQN 6 #define SCT_EJECT 7 #define SCT_RESET 8 - #define SCT_INIT_VRBLS 8 - -#define SCT_LEN_ORDER 3 -#define SCT_LEN_ID 8 -#define SCT_LEN_SAY 5 -#define SCT_LEN_ROWS 3 -#define SCT_LEN_COLOR 7 -#define SCT_LEN_EQN 240 -#define SCT_LEN_EJECT 1 -#define SCT_LEN_RESET 1 - -#define SCT_OS_ORDER 1 // N 3 -#define SCT_OS_ID 4 // C 8 -#define SCT_OS_SAY 12 // C 5 -#define SCT_OS_ROWS 17 // N 3 -#define SCT_OS_COLOR 20 // C 7 -#define SCT_OS_EQN 27 // C 240 -#define SCT_OS_EJECT 267 // L 1 -#define SCT_OS_RESET 268 // L 1 - -#define SCT_ID_GRP01_H 200 -#define SCT_ID_GRP01_S 800 - -#define SCT_CLR_ {'W+/RB','W+/G','W+/R','W+/N','W+/GR'} - -#define SCT_INIT_GROUPS 20 - -#define REP_FOR_MOD 1 -#define REP_FOR_RPT 2 -#define REP_FOR_BRW 3 -#define REP_FOR_MDL 4 -#define REP_FOR_DOC 5 -#define REP_FOR_LAB 6 -#define REP_FOR_SCR 7 - -#define REP_SRC_MOD 100 -#define REP_SRC_RPT 200 -#define REP_SRC_BRW 300 -#define REP_SRC_MDL 400 -#define REP_SRC_DOC 500 -#define REP_SRC_LAB 600 -#define REP_SRC_SCR 700 #translate B_MSG ; diff --git a/harbour/contrib/hbcuied/hbcuied.hbp b/harbour/contrib/hbcuied/hbcuied.hbp index ddd6a11fae..6b18ce51a9 100644 --- a/harbour/contrib/hbcuied/hbcuied.hbp +++ b/harbour/contrib/hbcuied/hbcuied.hbp @@ -9,23 +9,19 @@ -w3 -es2 -inc --mt -gui -gtwvt -#..\gtwvg\gtwvg.hbc - cu_main.prg -cu_desgn.prg -cu_menu.prg -cu_outpt.prg -cu_prpty.prg cu_utlty.prg cu_achoi.prg +cu_object.prg -ohbcuied +-icon={allwin}../../package/harb_win.ico + -3rd=hbide_file=hbcuied.ch