Revision: 10613
          
http://harbour-project.svn.sourceforge.net/harbour-project/?rev=10613&view=rev
Author:   vouchcac
Date:     2009-03-15 23:55:29 +0000 (Sun, 15 Mar 2009)

Log Message:
-----------
2009-03-15 16:42 UTC-0800 Pritpal Bedi (prit...@vouchcac.com)

  * harbour/contrib/gtwvg/hbgtwvg.ch
    + #define HB_GTI_SETPOSANDSIZE
    + #define HB_GTI_HB_GTI_REFRESH
      + Two more events to manage new CUI-GUI objects.

    + #define GOBJ_OBJSTATE_*
    + #define GOBJ_OBJDATA_*
    + #define GOBJ_IMAGESOURCE_*
      + Constants to manage CUI=GUI objects.

  * harbour/contrib/gtwvg/gtwvg.h
  * harbour/contrib/gtwvg/wvggui.h
    ! Updated to be compilable for WinCE builds.

  * harbour/contrib/gtwvg/gtwvg.c
    ! Updated to honor WinCE builds.
    ! Implemented double-buffering of console. Now flickering
      should be the topic of the past.

  * harbour/contrib/gtwvg/wvggui.c
    ! Updated to honor WinCE builds.

  * harbour/contrib/gtwvg/wvgcuig.c
    + Implemented a highly optimized GUI controls for CUI consoles.
      Implementation includes auto-destruction, data-substitution,
      enable/disable feast, etc. These controls are almost identical
      which are available with Wvt_Draw*() namespace but with a 
      great difference that these are tied to the urrent GT and 
      are handelled transparently by the GT itself. Developer 
      has only to define it. The only requirement is that 
      SaveScreen()/RestScreen() needs to be changed to new 
      Modal GT window. Appln screens will never get blurred. It 
      also employs optimized double-buffering and hence almost 
      eliminates screen flickering. 

  * harbour/contrib/gtwvg/wvgcore.c
  * harbour/contrib/gtwvg/wvgsink.c
  * harbour/contrib/gtwvg/wvgutils.c
  * harbour/contrib/gtwvg/wvgwin.c
    ! Updated to honor WinCE builds.

  * harbour/contrib/gtwvg/wvgcrt.prg
    ! A couple of methods fine-tuned.
    ! Modal GT's more responsive to user needs.

  * harbour/contrib/gtwvg/tests/demowvg.prg
    ! Demonstrated the latest implemention of CUI-GUI controls. See below.
      Please try <Traditional><WVG Console with CGUI> option in the main menu.
      Also note the usage of Modal GT to simulate Alert() in new window.
      Every GUI object returns a handle to it which may be used to 
      change its parameters.

    ; TOFIX( WINCE BUILDS ) - GetSystemDirectory()


    /*    IMPLEMENTATION OF CUI-GUI CONTROLS - A CODE PREVIEW



         #xTranslate Alert( => MyAlert(

         PROCEDURE GCUIConsole( oCrt )
            LOCAL dDate      := date()
            LOCAL cName      := pad( 'Some Usefule Name'   , 35 )
            LOCAL cAdd1      := pad( 'Linda Goldman Avenue', 35 )
            LOCAL cAdd2      := pad( 'Excellent Street'    , 35 )
            LOCAL cAdd3      := pad( 'Suit #415'           , 35 )
            LOCAL nSlry      := 9000
            LOCAL nColGet    := 8
            LOCAL GetList    := {}
            LOCAL cLabel     := "VOUCH, that GROWS with you"
            LOCAL oTab, oStat, hBoxR, hTxt

            SET SCOREBOARD OFF

            SetColor( "N/W,N/GR*,,,N/W*" )
            CLS
            hb_gtInfo( HB_GTI_WINTITLE, "WVG Simplified yet Powerful CUI-GUI 
Console!" )

            @ MaxRow(), 0 SAY PadC( "Navigate the Gets", maxcol()+1 ) COLOR 
"W+/B"

            @  2, nColGet SAY "< Date >"
            @  5, nColGet SAY "<" + PadC( "Name"   , 33 ) + ">"
            @  8, nColGet SAY "<" + PadC( "Address", 33 ) + ">"
            @ 15, nColGet SAY "< Salary >"

            @  3, nColGet GET dDate  ;
                                     WHEN  {|| Wvg_SetGObjData( hTxt, 1, 
FetchText( 1 ) ) } ;
                                     Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 
255,0,0 ) ), .t. }
            @  6, nColGet GET cName  ;
                                     WHEN  {|| Wvg_SetGObjData( hTxt, 1, 
FetchText( 2 ) ) } ;
                                     Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 
255,255,0 ) ), ;
                                                           Wvg_SetGObjState( 
hBoxR, 3 ), .t. }
            @  9, nColGet GET cAdd1  ;
                                     WHEN  {|| Wvg_SetGObjData( hTxt, 1, 
FetchText( 3 ) ) } ;
                                     Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 
255,0,255 ) ), .t. }
            @ 11, nColGet GET cAdd2  ;
                                     WHEN  {|| Wvg_SetGObjData( hTxt, 1, 
FetchText( 4 ) ) } ;
                                     Valid {|| Wvg_SetGObjData( hTxt, 6, RGB( 
255,255,255 ) ), ;
                                                           Wvg_SetGObjState( 
hBoxR, 1 ), .t. }
            @ 13, nColGet GET cAdd3  ;
                                     WHEN  {|| Wvg_SetGObjData( hTxt, 6, RGB( 
198,21,140 ) ), .t. }
            @ 16, nColGet GET nSlry PICTURE "@Z 9999999.99" ;
                                     WHEN  {|| Wvg_SetGObjData( hTxt, 6, RGB( 
0,0,0 ) ), .t. }

            // The only additional calls to render your console GUI
            //
            // The GETLIST  : This can be embedded via  @ GET preprocessor 
command
            aEval( GetList, {|oGet| Wvg_BoxGet( oGet:Row, oGet:Col, Len( 
Transform( oGet:VarGet(), oGet:Picture ) ) ) } )
            //
            hBoxR := Wvg_BoxRaised( 1,2,18,49, {-5,-5,5,5} )
            //
            Wvg_BoxRecessed( 1,2,18,49 )
            //
            // Wvg_BoxGroup( 2,4,17,47 )
            //
            Wvg_BoxGroupRaised( 2,4,17,47, {-7,-7,7,7} )
            //
            hTxt := Wvg_TextBox( 3,57,16,75, {10,10,-10,-10}, 'This is first 
TextBox Line!', 2, 2 )
            //
            Wvg_Image( 15,36,16,42, {-3,-3,3,3}, GOBJ_IMAGESOURCE_FILE, 
'Vouch1.bmp' )
            //
            Wvg_BoxRaised( 15,36,16,42,{-2,-2,2,2} )
            //
            Wvg_ShadedRect( 1,54,18,79, { -5,-5,5,5 }, 0, 
{65000,21000,7000,56000}, {255,32255,16000,32500} )
            //
            Wvg_BoxRaised( 1,54,18,79, {-5,-5,5,5} )

            // Instruct GT to Repaint the Screen with GUI elements.
            oCrt:refresh()

            // Issue the read
            READ

            Alert( 'How did you like the "Alert" replacement?', { 
'WOW','OK','OOps'} )

            RETURN
         
/*----------------------------------------------------------------------*/
         #xUntranslate alert( =>

         FUNCTION MyAlert( cMsg, aOpt )
            LOCAL nSel, oCrt

            oCrt := WvgCrt():New( , , { -1,-1 }, { 9, MaxCol()-6 }, , .t. )
            oCrt:lModal := .t.
            oCrt:icon   := "dia_excl.ico"
            oCrt:create()
            oCrt:resizable := .t.

            SetColor( 'N/W' )
            CLS
            hb_gtInfo( HB_GTI_WINTITLE, cMsg )

            nSel := Alert( cMsg, aOpt )

            oCrt:destroy()

            RETURN nSel

         #xTranslate Alert( => MyAlert(
         
/*----------------------------------------------------------------------*/
         STATIC FUNCTION FetchText( nMode )
            LOCAL cText

            DO CASE
            CASE nMode == 1
               cText := 'Do you know Harbour is gaining a popularity what 
Clipper enjoyed at one time! '
               cText += 'Enjoy it.'
            CASE nMode == 2
               cText := 'Do you know Harbour can host pure console, cui+gui 
console, pure gui consoles applications? '
               cText += 'This demonstration is a proof of that.'
            CASE nMode == 3
               cText := 'Do you know Harbour is a multi-gt, multi-window, 
multi-thread compiler far superior than others in the market! '
               cText += 'And is FREE.'
            CASE nMode == 4
               cText := 'Enjoy and contribute to the project any way you can. 
Develop, Debug, Support, and spread a word of mouth!'
            ENDCASE

            RETURN cText
         
/*----------------------------------------------------------------------*/
    */

    ;TODO - Write a comprehensive help to exploit CUI-GUI functionality.
            Will do in a few days.

Modified Paths:
--------------
    trunk/harbour/ChangeLog
    trunk/harbour/contrib/gtwvg/gtwvg.c
    trunk/harbour/contrib/gtwvg/gtwvg.h
    trunk/harbour/contrib/gtwvg/hbgtwvg.ch
    trunk/harbour/contrib/gtwvg/tests/demowvg.prg
    trunk/harbour/contrib/gtwvg/wvgcore.c
    trunk/harbour/contrib/gtwvg/wvgcrt.prg
    trunk/harbour/contrib/gtwvg/wvgcuig.c
    trunk/harbour/contrib/gtwvg/wvggui.c
    trunk/harbour/contrib/gtwvg/wvggui.h
    trunk/harbour/contrib/gtwvg/wvgsink.c
    trunk/harbour/contrib/gtwvg/wvgutils.c
    trunk/harbour/contrib/gtwvg/wvgwin.c


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to