Files
harbour-core/harbour/contrib/hbxbp/static.prg
Viktor Szakats c300ba14ee 2012-07-23 17:26 UTC+0200 Viktor Szakats (harbour syenar.net)
+ contrib/gtwvg/3state.prg
  + contrib/gtwvg/activex.prg
  + contrib/gtwvg/bitmap.prg
  + contrib/gtwvg/checkbox.prg
  + contrib/gtwvg/class.prg
  + contrib/gtwvg/combobox.prg
  + contrib/gtwvg/crt.prg
  + contrib/gtwvg/dataref.prg
  + contrib/gtwvg/dialog.prg
  + contrib/gtwvg/drawarea.prg
  + contrib/gtwvg/genrc.prg
  + contrib/gtwvg/htmlview.prg
  + contrib/gtwvg/listbox.prg
  + contrib/gtwvg/menubar.prg
  + contrib/gtwvg/mle.prg
  + contrib/gtwvg/paint.prg
  + contrib/gtwvg/parthdlr.prg
  + contrib/gtwvg/pushbut.prg
  + contrib/gtwvg/radiobut.prg
  + contrib/gtwvg/scrollbr.prg
  + contrib/gtwvg/sle.prg
  + contrib/gtwvg/statbar.prg
  + contrib/gtwvg/static.prg
  + contrib/gtwvg/syswnd.prg
  + contrib/gtwvg/tabpage.prg
  + contrib/gtwvg/toolbar.prg
  + contrib/gtwvg/treeview.prg
  + contrib/gtwvg/wnd.prg
  + contrib/hbxbp/3state.prg
  + contrib/hbxbp/appevent.prg
  + contrib/hbxbp/bitmap.prg
  + contrib/hbxbp/browse.prg
  + contrib/hbxbp/checkbox.prg
  + contrib/hbxbp/clipboard.prg
  + contrib/hbxbp/combobox.prg
  + contrib/hbxbp/crt.prg
  + contrib/hbxbp/dataref.prg
  + contrib/hbxbp/dialog.prg
  + contrib/hbxbp/filedialog.prg
  + contrib/hbxbp/fontdialog.prg
  + contrib/hbxbp/generic.prg
  + contrib/hbxbp/gra.prg
  + contrib/hbxbp/htmlviewer.prg
  + contrib/hbxbp/listbox.prg
  + contrib/hbxbp/menubar.prg
  + contrib/hbxbp/mle.prg
  + contrib/hbxbp/parthandler.prg
  + contrib/hbxbp/presspace.prg
  + contrib/hbxbp/printdialog.prg
  + contrib/hbxbp/printer.prg
  + contrib/hbxbp/pushbutton.prg
  + contrib/hbxbp/radiobutton.prg
  + contrib/hbxbp/rtf.prg
  + contrib/hbxbp/scrollbar.prg
  + contrib/hbxbp/sle.prg
  + contrib/hbxbp/spinbutton.prg
  + contrib/hbxbp/static.prg
  + contrib/hbxbp/statusbar.prg
  + contrib/hbxbp/style.prg
  + contrib/hbxbp/tabpage.prg
  + contrib/hbxbp/toolbar.prg
  + contrib/hbxbp/treeview.prg
  + contrib/hbxbp/window.prg
  - contrib/gtwvg/wvg3stat.prg
  - contrib/gtwvg/wvgax.prg
  - contrib/gtwvg/wvgbitmp.prg
  - contrib/gtwvg/wvgcheck.prg
  - contrib/gtwvg/wvgclass.prg
  - contrib/gtwvg/wvgcombo.prg
  - contrib/gtwvg/wvgcrt.prg
  - contrib/gtwvg/wvgdarea.prg
  - contrib/gtwvg/wvgdatar.prg
  - contrib/gtwvg/wvgdlg.prg
  - contrib/gtwvg/wvggenrc.prg
  - contrib/gtwvg/wvghtmlv.prg
  - contrib/gtwvg/wvglistb.prg
  - contrib/gtwvg/wvgmenub.prg
  - contrib/gtwvg/wvgmle.prg
  - contrib/gtwvg/wvgpaint.prg
  - contrib/gtwvg/wvgphdlr.prg
  - contrib/gtwvg/wvgpushb.prg
  - contrib/gtwvg/wvgradio.prg
  - contrib/gtwvg/wvgscrlb.prg
  - contrib/gtwvg/wvgsle.prg
  - contrib/gtwvg/wvgstatb.prg
  - contrib/gtwvg/wvgstatc.prg
  - contrib/gtwvg/wvgsysw.prg
  - contrib/gtwvg/wvgtabpg.prg
  - contrib/gtwvg/wvgtoolb.prg
  - contrib/gtwvg/wvgtreev.prg
  - contrib/gtwvg/wvgwnd.prg
  - contrib/hbxbp/xbp3state.prg
  - contrib/hbxbp/xbpappevent.prg
  - contrib/hbxbp/xbpbitmap.prg
  - contrib/hbxbp/xbpbrowse.prg
  - contrib/hbxbp/xbpcheckbox.prg
  - contrib/hbxbp/xbpclipboard.prg
  - contrib/hbxbp/xbpcombobox.prg
  - contrib/hbxbp/xbpcrt.prg
  - contrib/hbxbp/xbpdataref.prg
  - contrib/hbxbp/xbpdialog.prg
  - contrib/hbxbp/xbpfiledialog.prg
  - contrib/hbxbp/xbpfontdialog.prg
  - contrib/hbxbp/xbpgeneric.prg
  - contrib/hbxbp/xbpgra.prg
  - contrib/hbxbp/xbphtmlviewer.prg
  - contrib/hbxbp/xbplistbox.prg
  - contrib/hbxbp/xbpmenubar.prg
  - contrib/hbxbp/xbpmle.prg
  - contrib/hbxbp/xbpparthandler.prg
  - contrib/hbxbp/xbppresspace.prg
  - contrib/hbxbp/xbpprintdialog.prg
  - contrib/hbxbp/xbpprinter.prg
  - contrib/hbxbp/xbppushbutton.prg
  - contrib/hbxbp/xbpradiobutton.prg
  - contrib/hbxbp/xbprtf.prg
  - contrib/hbxbp/xbpscrollbar.prg
  - contrib/hbxbp/xbpsle.prg
  - contrib/hbxbp/xbpspinbutton.prg
  - contrib/hbxbp/xbpstatic.prg
  - contrib/hbxbp/xbpstatusbar.prg
  - contrib/hbxbp/xbpstyle.prg
  - contrib/hbxbp/xbptabpage.prg
  - contrib/hbxbp/xbptoolbar.prg
  - contrib/hbxbp/xbptreeview.prg
  - contrib/hbxbp/xbpwindow.prg
  * contrib/gtwvg/gtwvg.hbp
  * contrib/hbxbp/hbxbp.hbp
    % deleted unnecessary prefix from .prg filenames, 
      thus making the much more easily searchable and 
      recognizable and also allowing more room for 
      the real description with much less undecipherable 
      abbreviations.
2012-07-23 15:32:39 +00:00

345 lines
12 KiB
Plaintext

/*
* $Id$
*/
/*
* Harbour Project source code:
* Source file for the Xbp*Classes
*
* Copyright 2009-2010 Pritpal Bedi <bedipritpal@hotmail.com>
* 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 )
*
* Xbase++ xbpStatic compatible Class
*
* Pritpal Bedi
* 29Jun2009
*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
#include "hbclass.ch"
#include "common.ch"
#include "xbp.ch"
#include "appevent.ch"
/*----------------------------------------------------------------------*/
CLASS XbpStatic INHERIT XbpWindow
DATA autoSize INIT .F.
DATA caption INIT ""
DATA clipParent INIT .T.
DATA clipSiblings INIT .F.
DATA options INIT 0
DATA type INIT XBPSTATIC_TYPE_TEXT
DATA hBitmap
METHOD init( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
METHOD destroy()
METHOD handleEvent( nEvent, mp1, mp2 )
METHOD setCaption( xCaption, cDll )
ENDCLASS
/*----------------------------------------------------------------------*/
METHOD XbpStatic:init( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::xbpWindow:init( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpStatic:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
LOCAL lThick := hb_bitAnd( ::options, XBPSTATIC_FRAMETHICK ) == XBPSTATIC_FRAMETHICK
::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
DO CASE
// OK
CASE ::type == XBPSTATIC_TYPE_TEXT
::oWidget := QLabel( ::pParent )
IF ( hb_bitAnd( ::options, XBPSTATIC_TEXT_LEFT ) == XBPSTATIC_TEXT_LEFT )
::oWidget:setAlignment( Qt_AlignLeft )
ENDIF
IF ( hb_bitAnd( ::options, XBPSTATIC_TEXT_RIGHT ) == XBPSTATIC_TEXT_RIGHT )
::oWidget:setAlignment( Qt_AlignRight )
ENDIF
IF ( hb_bitAnd( ::options, XBPSTATIC_TEXT_CENTER ) == XBPSTATIC_TEXT_CENTER )
::oWidget:setAlignment( Qt_AlignCenter )
ENDIF
IF ( hb_bitAnd( ::options, XBPSTATIC_TEXT_TOP ) == XBPSTATIC_TEXT_TOP )
::oWidget:setAlignment( hb_bitOr( ::oWidget:alignment, Qt_AlignTop ) )
ENDIF
IF ( hb_bitAnd( ::options, XBPSTATIC_TEXT_VCENTER ) == XBPSTATIC_TEXT_VCENTER )
::oWidget:setAlignment( hb_bitOr( ::oWidget:alignment, Qt_AlignVCenter ) )
ENDIF
IF ( hb_bitAnd( ::options, XBPSTATIC_TEXT_BOTTOM ) == XBPSTATIC_TEXT_BOTTOM )
::oWidget:setAlignment( hb_bitOr( ::oWidget:alignment, Qt_AlignBottom ) )
ENDIF
IF ( hb_bitAnd( ::options, XBPSTATIC_TEXT_WORDBREAK ) == XBPSTATIC_TEXT_WORDBREAK )
::oWidget:setWordWrap( .T. )
ENDIF
// OK
CASE ::type == XBPSTATIC_TYPE_GROUPBOX
::oWidget := QGroupBox( ::pParent )
// OK
CASE ::type == XBPSTATIC_TYPE_RAISEDBOX
::oWidget := QFrame( ::pParent )
::oWidget:setFrameStyle( QFrame_Panel + QFrame_Raised )
::setColorBG( GraMakeRGBColor( { 198, 198, 198 } ) )
IF lThick
::oWidget:setLineWidth( 2 )
ENDIF
// OK
CASE ::type == XBPSTATIC_TYPE_RECESSEDBOX
::oWidget := QFrame( ::pParent )
::oWidget:setFrameStyle( QFrame_Panel + QFrame_Sunken )
::setColorBG( GraMakeRGBColor( { 198, 198, 198 } ) )
IF lThick
::oWidget:setLineWidth( 2 )
ENDIF
// OK
CASE ::type == XBPSTATIC_TYPE_RAISEDRECT
::oWidget := QFrame( ::pParent )
::oWidget:setFrameStyle( QFrame_Panel + QFrame_Raised )
IF lThick
::oWidget:setLineWidth( 2 )
ENDIF
// OK
CASE ::type == XBPSTATIC_TYPE_RECESSEDRECT
::oWidget := QFrame( ::pParent )
::oWidget:setFrameStyle( QFrame_Panel + QFrame_Sunken )
IF lThick
::oWidget:setLineWidth( 2 )
ENDIF
// OK
CASE ::type == XBPSTATIC_TYPE_FGNDFRAME // rectangle in foreground color, not filled
::oWidget := QFrame( ::pParent )
::oWidget:setFrameStyle( QFrame_Panel + QFrame_Plain )
::setColorFG( GraMakeRGBColor( { 0, 0, 0 } ) )
// OK
CASE ::type == XBPSTATIC_TYPE_BGNDFRAME
::oWidget := QFrame( ::pParent )
::oWidget:setFrameStyle( QFrame_Box + QFrame_Plain )
::setColorFG( GraMakeRGBColor( { 127, 127, 127 } ) )
// OK
CASE ::type == XBPSTATIC_TYPE_FGNDRECT
::oWidget := QFrame( ::pParent )
::setColorBG( GraMakeRGBColor( { 0, 0, 0 } ) )
// OK
CASE ::type == XBPSTATIC_TYPE_BGNDRECT
::oWidget := QFrame( ::pParent )
::setColorBG( GraMakeRGBColor( { 127, 127, 127 } ) )
// OK
CASE ::type == XBPSTATIC_TYPE_HALFTONERECT
::oWidget := QFrame( ::pParent )
::setColorBG( GraMakeRGBColor( { 255, 255, 255 } ) )
// OK
CASE ::type == XBPSTATIC_TYPE_HALFTONEFRAME
::oWidget := QFrame( ::pParent )
::oWidget:setFrameStyle( QFrame_Box + QFrame_Plain )
::setColorFG( GraMakeRGBColor( { 255, 255, 255 } ) )
// OK
CASE ::type == XBPSTATIC_TYPE_RAISEDLINE
::oWidget := QFrame( ::pParent )
//IF ::aPos[ 1 ] + ::aSize[ 1 ] >= ::aPos[ 2 ] + ::aSize[ 2 ]
IF ::aSize[ 1 ] >= ::aSize[ 2 ]
::oWidget:setFrameStyle( QFrame_HLine + QFrame_Raised )
ELSE
::oWidget:setFrameStyle( QFrame_VLine + QFrame_Raised )
ENDIF
IF lThick
::oWidget:setMidLineWidth( 1 )
ENDIF
// OK
CASE ::type == XBPSTATIC_TYPE_RECESSEDLINE
::oWidget := QFrame( ::pParent )
//IF ::aPos[ 1 ] + ::aSize[ 1 ] >= ::aPos[ 2 ] + ::aSize[ 2 ]
IF ::aSize[ 1 ] >= ::aSize[ 2 ]
::oWidget:setFrameStyle( QFrame_HLine + QFrame_Sunken )
ELSE
::oWidget:setFrameStyle( QFrame_VLine + QFrame_Sunken )
ENDIF
IF lThick
::oWidget:setMidLineWidth( 1 )
ENDIF
CASE ::type == XBPSTATIC_TYPE_ICON
::oWidget := QLabel( ::pParent )
CASE ::type == XBPSTATIC_TYPE_SYSICON
::oWidget := QLabel( ::pParent )
CASE ::type == XBPSTATIC_TYPE_BITMAP
//::oWidget := QFrame( ::pParent )
::oWidget := QLabel( ::pParent )
OTHERWISE
::oWidget := QFrame( ::pParent )
ENDCASE
::setCaption( ::caption )
::setPosAndSize()
IF ::visible
::show()
ENDIF
::oParent:addChild( SELF )
::postCreate()
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpStatic:handleEvent( nEvent, mp1, mp2 )
HB_SYMBOL_UNUSED( nEvent )
HB_SYMBOL_UNUSED( mp1 )
HB_SYMBOL_UNUSED( mp2 )
RETURN HBXBP_EVENT_UNHANDLED
/*----------------------------------------------------------------------*/
METHOD XbpStatic:destroy()
::xbpWindow:destroy()
RETURN NIL
/*----------------------------------------------------------------------*/
METHOD XbpStatic:configure( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
::Initialize( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
RETURN Self
/*----------------------------------------------------------------------*/
METHOD XbpStatic:setCaption( xCaption, cDll )
LOCAL oStyle, oIcon, oPixmap
HB_SYMBOL_UNUSED( cDll )
DEFAULT xCaption TO ::caption
::caption := xCaption
IF !empty( ::caption )
DO CASE
CASE ::type == XBPSTATIC_TYPE_GROUPBOX
::oWidget:setTitle( ::caption )
CASE ::type == XBPSTATIC_TYPE_TEXT
::oWidget:setText( ::caption )
CASE ::type == XBPSTATIC_TYPE_BITMAP
IF HB_ISOBJECT( ::caption ) /* XbpBitmap() */
IF ::options == XBPSTATIC_BITMAP_SCALED
::oWidget:setScaledContents( .t. )
ENDIF
::oWidget:setPixmap( QPixmap():fromImage( ::caption:oWidget ) )
ELSEIF HB_ISSTRING( ::caption ) /* $HARBOUR$ */
IF ::options == XBPSTATIC_BITMAP_SCALED
::setCSSAttribute( "XBPSTATIC_BITMAP_SCALED" , 'border-image: url(' + ::caption + ');' )
ELSE
::setCSSAttribute( "XBPSTATIC_BITMAP_NONSCALED", 'background: url(' + ::caption + '); repeat-xy;' )
ENDIF
ENDIF
CASE ::type == XBPSTATIC_TYPE_ICON
::oWidget:setPixmap( QPixmap( ::caption ):scaled( ::aSize[ 1 ], ::aSize[ 2 ] ) )
CASE ::type == XBPSTATIC_TYPE_SYSICON
oStyle := QApplication():style()
DO CASE
CASE ::caption == XBPSTATIC_SYSICON_ICONINFORMATION
oIcon := oStyle:standardIcon( QStyle_SP_MessageBoxInformation )
CASE ::caption == XBPSTATIC_SYSICON_ICONQUESTION
oIcon := oStyle:standardIcon( QStyle_SP_MessageBoxQuestion )
CASE ::caption == XBPSTATIC_SYSICON_ICONERROR
oIcon := oStyle:standardIcon( QStyle_SP_MessageBoxCritical )
CASE ::caption == XBPSTATIC_SYSICON_ICONWARNING
oIcon := oStyle:standardIcon( QStyle_SP_MessageBoxWarning )
OTHERWISE
/* It is a Harbour Extension - you have 60+ icons to display
* Check hbqtgui.ch : #define QStyle_SP_* constants
*/
oIcon := oStyle:standardIcon( ::caption )
ENDCASE
/* Harbour can also implement if icon be displayed scaled or proportionate
*/
oPixmap := oIcon:pixmap( ::aSize[ 1 ], ::aSize[ 2 ] ):scaled( ::aSize[ 1 ], ::aSize[ 2 ] )
::oWidget:setPixmap( oPixmap )
ENDCASE
ENDIF
RETURN Self
/*----------------------------------------------------------------------*/