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:
J. Russell Smyth
1999-03-17 11:07:19 +00:00
parent 2900641401
commit af11388a62
9 changed files with 143 additions and 76 deletions

View File

@@ -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=\

View File

@@ -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,

View File

@@ -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"

View File

@@ -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 );

View File

@@ -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 );