1 - Moved settingsdlg.[h,cpp] and wxinfo.[h,cpp] to demo where they belong
2 - removed pf_sample from library - this was test code 3 - modified newbmpbutton to create all button images once at initial creation 4 - newbmpbutton only refreses when necessary 5 - non-msw platforms may now disable (enable(FALSE)) a button - this will half-grey the image and draw text in disabled color. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1941 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -10,8 +10,10 @@ RULE=bin
|
||||
BIN_TARGET=fl_demo
|
||||
|
||||
# define library sources
|
||||
BIN_CPP_SRC=\
|
||||
fl_demo.cpp\
|
||||
BIN_CPP_SRC= \
|
||||
fl_demo.cpp \
|
||||
settingsdlg.cpp \
|
||||
wxinfo.cpp
|
||||
|
||||
#define library objects
|
||||
BIN_OBJ=\
|
||||
|
@@ -769,7 +769,7 @@ void MyFrame::AddSearchToolbars( wxFrameLayout& layout, wxWindow* pParent )
|
||||
new cbDynToolBarDimHandler()
|
||||
);
|
||||
|
||||
cbDimInfo sizes4( 430,35, // when docked horizontally
|
||||
cbDimInfo sizes4( 450,35, // when docked horizontally
|
||||
44,375, // when docked vertically
|
||||
80,100, // when floated
|
||||
TRUE, // the bar is fixed-size
|
||||
@@ -790,8 +790,6 @@ void MyFrame::AddSearchToolbars( wxFrameLayout& layout, wxWindow* pParent )
|
||||
pTBar2->AddTool( 4, wxBitmap("nextmark_icon") );
|
||||
pTBar2->AddTool( 5, wxBitmap("prevmark_icon") );
|
||||
|
||||
|
||||
|
||||
wxDynamicToolBar* pTBar3 = new wxDynamicToolBar( mpInternalFrm, -1 );
|
||||
|
||||
pTBar3->AddTool( 1, wxBitmap("open_icon"), " Open " );
|
||||
@@ -821,7 +819,6 @@ void MyFrame::AddSearchToolbars( wxFrameLayout& layout, wxWindow* pParent )
|
||||
pTBar2->AddTool( 4, nextmark_xpm );
|
||||
pTBar2->AddTool( 5, prevmark_xpm );
|
||||
|
||||
|
||||
wxDynamicToolBar* pTBar3 = new wxDynamicToolBar( mpInternalFrm, -1 );
|
||||
|
||||
pTBar3->AddTool( 1, wxBitmap(open_xpm), " Open " );
|
||||
@@ -832,6 +829,8 @@ void MyFrame::AddSearchToolbars( wxFrameLayout& layout, wxWindow* pParent )
|
||||
pTBar3->AddTool( 5, wxBitmap(copy_xpm), " Copy " );
|
||||
pTBar3->AddTool( 6, wxBitmap(paste_xpm), " Paste " );
|
||||
|
||||
pTBar3->EnableTool( 2, FALSE );
|
||||
|
||||
wxDynamicToolBar* pTBar4 = new wxDynamicToolBar( mpInternalFrm, -1 );
|
||||
|
||||
pTBar4->AddTool( 1, wxBitmap(bookmarks_xpm), "Bookmarks ", TRUE );
|
||||
@@ -839,6 +838,8 @@ void MyFrame::AddSearchToolbars( wxFrameLayout& layout, wxWindow* pParent )
|
||||
pTBar4->AddTool( 3, wxBitmap(prevmark_xpm), "Prev bookmark ", TRUE );
|
||||
//pTBar4->AddSeparator();
|
||||
pTBar4->AddTool( 4, wxBitmap(search_xpm),"Search ", TRUE );
|
||||
|
||||
pTBar4->EnableTool( 4, FALSE );
|
||||
#endif
|
||||
|
||||
layout.AddBar( pTBar2,
|
||||
|
@@ -40,13 +40,10 @@ hintanimpl.cpp \
|
||||
newbmpbtn.cpp \
|
||||
objstore.cpp \
|
||||
panedrawpl.cpp \
|
||||
pf_sample.cpp \
|
||||
rowdragpl.cpp \
|
||||
rowlayoutpl.cpp \
|
||||
settingsdlg.cpp \
|
||||
toolwnd.cpp \
|
||||
updatesmgr.cpp \
|
||||
wxinfo.cpp
|
||||
updatesmgr.cpp
|
||||
|
||||
#define library objects
|
||||
LIB_OBJ= \
|
||||
@@ -64,7 +61,7 @@ ADD_COMPILE=
|
||||
include ../../../../template.mak
|
||||
|
||||
install::
|
||||
@echo "Installing library files and headers for libwx_gl_gtk.."
|
||||
@echo "Installing library files and headers for libwx_fl_gtk.."
|
||||
@echo " Creating directory.."
|
||||
@$(WXBASEDIR)/mkinstalldirs /usr/local/include/wx_fl
|
||||
@echo " Copying headers from framelayout/src"
|
||||
|
@@ -71,7 +71,6 @@ static int* create_array( int width, int height, int fill = 0 )
|
||||
static void gray_out_pixmap( int* src, int* dest, int width, int height )
|
||||
{
|
||||
// assuming the pixels along the edges are of the background color
|
||||
int bgCol = GET_ELEM(src,0,0);
|
||||
|
||||
int x = 0;
|
||||
int y = 1;
|
||||
@@ -80,9 +79,6 @@ static void gray_out_pixmap( int* src, int* dest, int width, int height )
|
||||
{
|
||||
int cur = GET_ELEM(src,x,y);
|
||||
|
||||
int r = GET_RED(cur);
|
||||
int g = GET_GREEN(cur);
|
||||
int b = GET_BLUE(cur);
|
||||
|
||||
if ( IS_IN_ARRAY(x-1,y-1) )
|
||||
{
|
||||
@@ -167,11 +163,6 @@ void greay_out_image_on_dc( wxDC& dc, int width, int height )
|
||||
wxColour col;
|
||||
dc.GetPixel( x,y, &col );
|
||||
|
||||
int r = col.Red(),
|
||||
g = col.Green(),
|
||||
b = col.Blue();
|
||||
|
||||
int o = MAKE_INT_COLOR( r,g,b );
|
||||
|
||||
GET_ELEM(src,x,y) = MAKE_INT_COLOR( col.Red(), col.Green(), col.Blue() );
|
||||
}
|
||||
@@ -233,37 +224,38 @@ wxNewBitmapButton::wxNewBitmapButton( const wxBitmap& labelBitmap,
|
||||
int marginY,
|
||||
int textToLabelGap,
|
||||
bool isSticky)
|
||||
: mpDepressedImg( NULL ),
|
||||
: mTextToLabelGap ( textToLabelGap ),
|
||||
mMarginX( marginX ),
|
||||
mMarginY( marginY ),
|
||||
mTextAlignment( alignText ),
|
||||
mIsSticky( isSticky ),
|
||||
mIsFlat( isFlat ),
|
||||
mLabelText( labelText ),
|
||||
mImageFileType( -1 ),
|
||||
mDepressedBmp( labelBitmap ),
|
||||
|
||||
mpDepressedImg( NULL ),
|
||||
mpPressedImg ( NULL ),
|
||||
mpDisabledImg ( NULL ),
|
||||
mpFocusedImg ( NULL ),
|
||||
|
||||
mMarginX( marginX ),
|
||||
mMarginY( marginY ),
|
||||
mTextAlignment( alignText ),
|
||||
mIsFlat( isFlat ),
|
||||
|
||||
mIsPressed ( FALSE ),
|
||||
mDragStarted ( FALSE ),
|
||||
mIsPressed ( FALSE ),
|
||||
mIsInFocus( FALSE ),
|
||||
mPrevPressedState( FALSE ),
|
||||
mTextToLabelGap ( textToLabelGap ),
|
||||
mPrevInFocusState( FALSE ),
|
||||
mHasFocusedBmp( FALSE ),
|
||||
mFiredEventType( firedEventType ),
|
||||
|
||||
mBlackPen( wxColour( 0, 0, 0), 1, wxSOLID ),
|
||||
mDarkPen ( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW), 1, wxSOLID ),
|
||||
mGrayPen ( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE), 1, wxSOLID ),
|
||||
mLightPen( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DHIGHLIGHT), 1, wxSOLID ),
|
||||
|
||||
mFiredEventType( firedEventType ),
|
||||
mIsSticky( isSticky ),
|
||||
mIsCreated( FALSE ),
|
||||
mSizeIsSet( FALSE ),
|
||||
mSizeIsSet( FALSE )
|
||||
|
||||
mHasFocusedBmp( FALSE ),
|
||||
mIsInFocus( FALSE ),
|
||||
|
||||
mDepressedBmp( labelBitmap ),
|
||||
mLabelText( labelText ),
|
||||
mImageFileType( -1 )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -278,39 +270,38 @@ wxNewBitmapButton::wxNewBitmapButton( const wxString& bitmapFileName,
|
||||
int textToLabelGap,
|
||||
bool isSticky)
|
||||
|
||||
: mpDepressedImg( NULL ),
|
||||
: mTextToLabelGap ( 2 ),
|
||||
mMarginX( 2 ),
|
||||
mMarginY( 2 ),
|
||||
mTextAlignment( alignText ),
|
||||
mIsSticky( FALSE ),
|
||||
mIsFlat( isFlat ),
|
||||
mLabelText( labelText ),
|
||||
mImageFileName( bitmapFileName ),
|
||||
mImageFileType( bitmapFileType ),
|
||||
|
||||
mpDepressedImg( NULL ),
|
||||
mpPressedImg ( NULL ),
|
||||
mpDisabledImg ( NULL ),
|
||||
mpFocusedImg ( NULL ),
|
||||
|
||||
mMarginX( 2 ),
|
||||
mMarginY( 2 ),
|
||||
mTextAlignment( alignText ),
|
||||
mIsFlat( isFlat ),
|
||||
|
||||
mIsPressed ( FALSE ),
|
||||
mDragStarted ( FALSE ),
|
||||
mIsPressed ( FALSE ),
|
||||
mIsInFocus ( FALSE ),
|
||||
mPrevPressedState( FALSE ),
|
||||
mTextToLabelGap ( 2 ),
|
||||
mPrevInFocusState( FALSE ),
|
||||
mHasFocusedBmp( FALSE ),
|
||||
mFiredEventType( wxEVT_COMMAND_MENU_SELECTED ),
|
||||
|
||||
mBlackPen( wxColour( 0, 0, 0), 1, wxSOLID ),
|
||||
mDarkPen ( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW), 1, wxSOLID ),
|
||||
mGrayPen ( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE), 1, wxSOLID ),
|
||||
mLightPen( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DHIGHLIGHT), 1, wxSOLID ),
|
||||
|
||||
mFiredEventType( wxEVT_COMMAND_MENU_SELECTED ),
|
||||
mIsSticky( FALSE ),
|
||||
mIsCreated( FALSE ),
|
||||
mSizeIsSet( FALSE ),
|
||||
mSizeIsSet( FALSE )
|
||||
|
||||
mHasFocusedBmp( FALSE ),
|
||||
mIsInFocus( FALSE ),
|
||||
|
||||
mLabelText( labelText ),
|
||||
mImageFileName( bitmapFileName ),
|
||||
mImageFileType( bitmapFileType )
|
||||
{
|
||||
//mDepressedBmp.LoadFile( bitmapFileName, bitmapFileType );
|
||||
}
|
||||
|
||||
wxNewBitmapButton::~wxNewBitmapButton(void)
|
||||
@@ -379,6 +370,11 @@ wxBitmap* wxNewBitmapButton::GetStateLabel()
|
||||
return mpDisabledImg;
|
||||
}
|
||||
|
||||
static const unsigned char _gDisableImage[] = { 0x55,0xAA,0x55,0xAA,
|
||||
0x55,0xAA,0x55,0xAA,
|
||||
0x55,0xAA,0x55,0xAA,
|
||||
0x55,0xAA,0x55,0xAA
|
||||
};
|
||||
void wxNewBitmapButton::RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp,
|
||||
bool isEnabled, bool isPressed )
|
||||
{
|
||||
@@ -461,10 +457,11 @@ void wxNewBitmapButton::RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp,
|
||||
|
||||
if ( hasImage )
|
||||
{
|
||||
|
||||
destDc.Blit( imgPos.x, imgPos.y,
|
||||
srcBmp->GetWidth()+1,
|
||||
srcBmp->GetHeight()+1,
|
||||
&srcDc, 0,0, wxCOPY,TRUE );
|
||||
srcBmp->GetWidth()+1,
|
||||
srcBmp->GetHeight()+1,
|
||||
&srcDc, 0,0, wxCOPY,TRUE );
|
||||
}
|
||||
|
||||
if ( hasText )
|
||||
@@ -482,17 +479,73 @@ void wxNewBitmapButton::RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp,
|
||||
|
||||
destDc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT) );
|
||||
|
||||
// Should be wxSYS_COLOUR_BTNTEXT, but gtk gives white?
|
||||
destDc.SetTextForeground( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNTEXT) );
|
||||
if( isEnabled ){
|
||||
destDc.SetTextForeground( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNTEXT) );
|
||||
}else{
|
||||
destDc.SetTextForeground( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW) );
|
||||
}
|
||||
destDc.SetTextBackground( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNFACE) );
|
||||
|
||||
destDc.DrawText( mLabelText, txtPos.x, txtPos.y );
|
||||
}
|
||||
|
||||
if ( !isEnabled )
|
||||
|
||||
greay_out_image_on_dc( destDc, destDim.x, destDim.y );
|
||||
|
||||
destDc.SetBrush( grayBrush );
|
||||
destDc.SetPen( nullPen );
|
||||
|
||||
destDc.DrawRectangle( 0,0, destDim.x+1, destDim.y+1 );
|
||||
|
||||
if ( isPressed )
|
||||
{
|
||||
++imgPos.x; ++imgPos.y;
|
||||
++txtPos.x; ++txtPos.y;
|
||||
}
|
||||
|
||||
if ( hasImage )
|
||||
{
|
||||
|
||||
destDc.Blit( imgPos.x, imgPos.y,
|
||||
srcBmp->GetWidth()+1,
|
||||
srcBmp->GetHeight()+1,
|
||||
&srcDc, 0,0, wxCOPY,TRUE );
|
||||
}
|
||||
|
||||
if ( hasText )
|
||||
{
|
||||
wxWindow* pTopWnd = this;
|
||||
|
||||
do
|
||||
{
|
||||
wxWindow* pParent = pTopWnd->GetParent();
|
||||
|
||||
if ( pParent == 0 ) break;
|
||||
|
||||
pTopWnd = pParent;
|
||||
} while(1);
|
||||
|
||||
destDc.SetFont( wxSystemSettings::GetSystemFont( wxSYS_DEFAULT_GUI_FONT) );
|
||||
|
||||
if( isEnabled ){
|
||||
destDc.SetTextForeground( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNTEXT) );
|
||||
}else{
|
||||
destDc.SetTextForeground( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW) );
|
||||
}
|
||||
destDc.SetTextBackground( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_BTNFACE) );
|
||||
|
||||
destDc.DrawText( mLabelText, txtPos.x, txtPos.y );
|
||||
}
|
||||
|
||||
if ( !isEnabled ){
|
||||
|
||||
#ifdef __WXMSW // This is currently MSW specific
|
||||
greay_out_image_on_dc( destDc, destDim.x, destDim.y );
|
||||
#else
|
||||
wxBrush checkerBrush( wxBitmap( (const char*)_gDisableImage,8,8) );
|
||||
checkerBrush.SetColour( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_BTNFACE ) );
|
||||
destDc.SetBrush( checkerBrush );
|
||||
destDc.DrawRectangle( imgPos.x, imgPos.y, srcBmp->GetWidth()+1, srcBmp->GetHeight()+1);
|
||||
#endif
|
||||
}
|
||||
// adjust button size to fit the new dimensions of the label
|
||||
if ( !mSizeIsSet && 0 )
|
||||
{
|
||||
@@ -503,6 +556,17 @@ void wxNewBitmapButton::RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp,
|
||||
);
|
||||
}
|
||||
}
|
||||
void wxNewBitmapButton::RenderAllLabelImages()
|
||||
{
|
||||
if( !mIsCreated ) return;
|
||||
RenderLabelImage( mpDisabledImg, &mDepressedBmp, FALSE );
|
||||
RenderLabelImage( mpPressedImg, &mDepressedBmp, TRUE, TRUE );
|
||||
RenderLabelImage( mpDepressedImg, &mDepressedBmp, TRUE, FALSE );
|
||||
if ( mHasFocusedBmp ){
|
||||
RenderLabelImage( mpFocusedImg, &mFocusedBmp, TRUE, FALSE );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void wxNewBitmapButton::RenderLabelImages()
|
||||
{
|
||||
@@ -572,7 +636,8 @@ void wxNewBitmapButton::SetLabel(const wxBitmap& labelBitmap,
|
||||
mLabelText = labelText;
|
||||
mDepressedBmp = labelBitmap;
|
||||
|
||||
RenderLabelImages();
|
||||
//RenderLabelImages();
|
||||
RenderAllLabelImages();
|
||||
}
|
||||
|
||||
void wxNewBitmapButton::SetAlignments( int alignText,
|
||||
@@ -587,7 +652,8 @@ void wxNewBitmapButton::SetAlignments( int alignText,
|
||||
mTextAlignment = alignText;
|
||||
mTextToLabelGap = textToLabelGap;
|
||||
|
||||
RenderLabelImages();
|
||||
//RenderLabelImages();
|
||||
RenderAllLabelImages();
|
||||
}
|
||||
|
||||
// event handlers
|
||||
@@ -636,6 +702,8 @@ bool wxNewBitmapButton::IsInWindow( int x, int y )
|
||||
|
||||
void wxNewBitmapButton::OnMouseMove( wxMouseEvent& event )
|
||||
{
|
||||
mPrevPressedState=mIsPressed;
|
||||
mPrevInFocusState=mIsInFocus;
|
||||
if ( !mIsInFocus && IsInWindow( event.m_x, event.m_y ) )
|
||||
{
|
||||
if ( !mDragStarted )
|
||||
@@ -659,16 +727,11 @@ void wxNewBitmapButton::OnMouseMove( wxMouseEvent& event )
|
||||
mIsPressed = TRUE;
|
||||
else
|
||||
mIsPressed = FALSE;
|
||||
|
||||
if ( mIsPressed != mPrevPressedState )
|
||||
|
||||
Refresh();
|
||||
|
||||
mPrevPressedState = mIsPressed;
|
||||
}
|
||||
|
||||
// FOR NOW::
|
||||
Refresh();
|
||||
if((mIsPressed != mPrevPressedState)||(mIsInFocus!=mPrevInFocusState)){
|
||||
Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void wxNewBitmapButton::OnSize( wxSizeEvent& event )
|
||||
@@ -678,6 +741,7 @@ void wxNewBitmapButton::OnSize( wxSizeEvent& event )
|
||||
|
||||
void wxNewBitmapButton::Reshape( )
|
||||
{
|
||||
|
||||
bool wasCreated = mIsCreated;
|
||||
mIsCreated = TRUE;
|
||||
|
||||
@@ -693,7 +757,8 @@ void wxNewBitmapButton::Reshape( )
|
||||
//wxMessageBox("Image Loaded!!!");
|
||||
}
|
||||
|
||||
RenderLabelImages();
|
||||
//RenderLabelImages();
|
||||
RenderAllLabelImages();
|
||||
|
||||
wxBitmap* pCurImg = GetStateLabel();
|
||||
|
||||
@@ -713,7 +778,7 @@ void wxNewBitmapButton::DrawLabel( wxDC& dc )
|
||||
wxSizeEvent evt;
|
||||
OnSize( evt ); // fake it up!
|
||||
|
||||
RenderLabelImages();
|
||||
//RenderLabelImages();
|
||||
pCurBmp = GetStateLabel();
|
||||
}
|
||||
|
||||
@@ -734,7 +799,7 @@ void wxNewBitmapButton::OnPaint( wxPaintEvent& event )
|
||||
wxPaintDC dc(this);
|
||||
|
||||
// first, make sure images for current state are prepared
|
||||
RenderLabelImages();
|
||||
//RenderLabelImages();
|
||||
|
||||
DrawLabel( dc );
|
||||
|
||||
|
@@ -42,11 +42,11 @@ protected:
|
||||
int mMarginY;
|
||||
int mTextAlignment;
|
||||
bool mIsSticky;
|
||||
bool mIsFlat;
|
||||
|
||||
wxString mLabelText;
|
||||
wxString mImageFileName;
|
||||
int mImageFileType;
|
||||
bool mIsFlat;
|
||||
|
||||
wxBitmap mDepressedBmp; // source image for rendering
|
||||
// labels for particular state
|
||||
@@ -64,6 +64,7 @@ protected:
|
||||
bool mIsPressed;
|
||||
bool mIsInFocus;
|
||||
bool mPrevPressedState;
|
||||
bool mPrevInFocusState;
|
||||
|
||||
bool mHasFocusedBmp;
|
||||
|
||||
@@ -142,6 +143,7 @@ public:
|
||||
bool isPressed = FALSE);
|
||||
|
||||
virtual void RenderLabelImages();
|
||||
virtual void RenderAllLabelImages();
|
||||
|
||||
// event handlers
|
||||
void OnLButtonDown( wxMouseEvent& event );
|
||||
|
Reference in New Issue
Block a user