1998-07-23 10:39:46 -04:00
/////////////////////////////////////////////////////////////////////////////
1999-12-13 18:05:56 -05:00
// Name: toolbar.cpp
1998-07-23 10:39:46 -04:00
// Purpose: wxToolBar sample
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
1999-10-26 19:38:33 -04:00
// Licence: wxWindows licence
1998-07-23 10:39:46 -04:00
/////////////////////////////////////////////////////////////////////////////
1999-10-26 19:38:33 -04:00
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
1998-07-23 10:39:46 -04:00
// For compilers that support precompilation, includes "wx/wx.h".
2001-10-30 08:33:34 -05:00
# include "wx/wxprec.h"
1998-07-23 10:39:46 -04:00
# ifdef __BORLANDC__
1999-10-26 19:38:33 -04:00
# pragma hdrstop
1998-07-23 10:39:46 -04:00
# endif
# ifndef WX_PRECOMP
1999-10-26 19:38:33 -04:00
# include <wx/wx.h>
1998-07-23 10:39:46 -04:00
# endif
1999-10-26 19:38:33 -04:00
# include <wx/toolbar.h>
1998-12-09 12:30:17 -05:00
# include <wx/log.h>
2000-01-15 17:31:16 -05:00
# include <wx/image.h>
1998-12-09 12:30:17 -05:00
1999-12-15 13:02:44 -05:00
// define this to 1 to use wxToolBarSimple instead of the native one
1999-12-16 12:39:07 -05:00
# define USE_GENERIC_TBAR 0
1999-12-15 13:02:44 -05:00
2000-07-15 15:51:35 -04:00
// define this to use XPMs everywhere (by default, BMPs are used under Win)
2002-06-14 06:08:07 -04:00
// BMPs use less space, but aren't compiled into the executable on other platforms
2000-07-15 15:51:35 -04:00
# ifdef __WXMSW__
# define USE_XPM_BITMAPS 0
# else
# define USE_XPM_BITMAPS 1
# endif
1999-12-15 13:02:44 -05:00
# if USE_GENERIC_TBAR
# if !wxUSE_TOOLBAR_SIMPLE
1999-12-16 12:39:07 -05:00
# error wxToolBarSimple is not compiled in, set wxUSE_TOOLBAR_SIMPLE \
to 1 in setup . h and recompile the library .
1999-12-15 13:02:44 -05:00
# else
# include <wx/tbarsmpl.h>
# endif
# endif // USE_GENERIC_TBAR
2000-07-15 15:51:35 -04:00
# if USE_XPM_BITMAPS && defined(__WXMSW__) && !wxUSE_XPM_IN_MSW
# error You need to enable XPM support to use XPM bitmaps with toolbar!
# endif // USE_XPM_BITMAPS
1999-10-26 19:38:33 -04:00
// ----------------------------------------------------------------------------
// resources
// ----------------------------------------------------------------------------
1998-07-23 10:39:46 -04:00
2000-07-15 15:51:35 -04:00
# if USE_XPM_BITMAPS
1999-10-26 19:38:33 -04:00
# include "mondrian.xpm"
# include "bitmaps/new.xpm"
# include "bitmaps/open.xpm"
# include "bitmaps/save.xpm"
# include "bitmaps/copy.xpm"
# include "bitmaps/cut.xpm"
1999-12-13 21:02:09 -05:00
# include "bitmaps/preview.xpm" // paste XPM
1999-10-26 19:38:33 -04:00
# include "bitmaps/print.xpm"
# include "bitmaps/help.xpm"
2000-07-15 15:51:35 -04:00
# endif // USE_XPM_BITMAPS
1999-10-26 19:38:33 -04:00
// ----------------------------------------------------------------------------
// classes
// ----------------------------------------------------------------------------
// Define a new application
1999-12-13 21:02:09 -05:00
class MyApp : public wxApp
1999-10-26 19:38:33 -04:00
{
public :
bool OnInit ( ) ;
} ;
1998-07-31 16:04:04 -04:00
1999-10-26 19:38:33 -04:00
// Define a new frame
class MyFrame : public wxFrame
{
public :
MyFrame ( wxFrame * parent ,
2004-06-01 03:45:11 -04:00
wxWindowID id = wxID_ANY ,
2002-12-14 13:13:27 -05:00
const wxString & title = _T ( " wxToolBar Sample " ) ,
1999-10-26 19:38:33 -04:00
const wxPoint & pos = wxDefaultPosition ,
const wxSize & size = wxDefaultSize ,
2003-07-31 07:33:39 -04:00
long style = wxDEFAULT_FRAME_STYLE | wxCLIP_CHILDREN | wxNO_FULL_REPAINT_ON_RESIZE ) ;
1998-07-23 10:39:46 -04:00
1999-12-13 21:02:09 -05:00
void RecreateToolbar ( ) ;
1999-10-26 19:38:33 -04:00
void OnQuit ( wxCommandEvent & event ) ;
void OnAbout ( wxCommandEvent & event ) ;
2000-07-15 15:51:35 -04:00
void OnSize ( wxSizeEvent & event ) ;
2002-07-23 10:08:39 -04:00
void OnToggleToolbar ( wxCommandEvent & event ) ;
2000-07-15 15:51:35 -04:00
void OnToggleAnotherToolbar ( wxCommandEvent & event ) ;
2003-09-26 14:19:50 -04:00
void OnToggleHorizontalText ( wxCommandEvent & WXUNUSED ( event ) ) ;
2000-07-15 15:51:35 -04:00
1999-12-13 21:02:09 -05:00
void OnToggleToolbarSize ( wxCommandEvent & event ) ;
void OnToggleToolbarOrient ( wxCommandEvent & event ) ;
1999-12-14 20:54:39 -05:00
void OnToggleToolbarRows ( wxCommandEvent & event ) ;
1999-12-13 21:02:09 -05:00
1999-12-15 13:02:44 -05:00
void OnEnablePrint ( wxCommandEvent & WXUNUSED ( event ) ) { DoEnablePrint ( ) ; }
void OnDeletePrint ( wxCommandEvent & WXUNUSED ( event ) ) { DoDeletePrint ( ) ; }
1999-12-04 17:34:54 -05:00
void OnInsertPrint ( wxCommandEvent & event ) ;
2000-11-24 12:07:12 -05:00
void OnChangeToolTip ( wxCommandEvent & event ) ;
1999-12-15 13:02:44 -05:00
void OnToggleHelp ( wxCommandEvent & WXUNUSED ( event ) ) { DoToggleHelp ( ) ; }
2003-09-26 15:37:32 -04:00
void OnToggleRadioBtn ( wxCommandEvent & event ) ;
1999-10-26 19:38:33 -04:00
2002-03-25 16:38:45 -05:00
void OnToolbarStyle ( wxCommandEvent & event ) ;
1999-10-26 19:38:33 -04:00
void OnToolLeftClick ( wxCommandEvent & event ) ;
2005-01-02 17:48:24 -05:00
void OnToolRightClick ( wxCommandEvent & event ) ;
1999-10-26 19:38:33 -04:00
void OnToolEnter ( wxCommandEvent & event ) ;
1999-11-11 21:17:44 -05:00
void OnCombo ( wxCommandEvent & event ) ;
1999-12-13 21:02:09 -05:00
void OnUpdateCopyAndCut ( wxUpdateUIEvent & event ) ;
2003-09-26 14:19:50 -04:00
void OnUpdateToggleHorzText ( wxUpdateUIEvent & event ) ;
2003-09-26 15:37:32 -04:00
void OnUpdateToggleRadioBtn ( wxUpdateUIEvent & event )
{ event . Enable ( m_tbar ! = NULL ) ; }
1999-12-13 21:02:09 -05:00
1999-12-15 13:02:44 -05:00
# if USE_GENERIC_TBAR
virtual wxToolBar * OnCreateToolBar ( long style ,
wxWindowID id ,
const wxString & name ) ;
# endif // USE_GENERIC_TBAR
1999-10-26 19:38:33 -04:00
private :
void DoEnablePrint ( ) ;
1999-11-18 10:58:35 -05:00
void DoDeletePrint ( ) ;
1999-10-26 19:38:33 -04:00
void DoToggleHelp ( ) ;
2000-07-15 15:51:35 -04:00
void LayoutChildren ( ) ;
1999-12-13 21:02:09 -05:00
bool m_smallToolbar ,
2003-09-26 14:19:50 -04:00
m_horzToolbar ,
m_horzText ;
1999-12-14 20:54:39 -05:00
size_t m_rows ; // 1 or 2 only
2002-12-04 09:11:26 -05:00
// the number of print buttons we have (they're added/removed dynamically)
size_t m_nPrint ;
2000-07-15 15:51:35 -04:00
wxTextCtrl * m_textWindow ;
wxToolBar * m_tbar ;
1999-10-26 19:38:33 -04:00
DECLARE_EVENT_TABLE ( )
} ;
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
const int ID_TOOLBAR = 500 ;
2002-09-14 17:34:59 -04:00
static const long TOOLBAR_STYLE = wxTB_FLAT | wxTB_DOCKABLE | wxTB_TEXT ;
2001-05-27 09:25:01 -04:00
1999-10-26 19:38:33 -04:00
enum
1998-07-23 10:39:46 -04:00
{
1999-12-13 21:02:09 -05:00
IDM_TOOLBAR_TOGGLETOOLBARSIZE = 200 ,
IDM_TOOLBAR_TOGGLETOOLBARORIENT ,
1999-12-14 20:54:39 -05:00
IDM_TOOLBAR_TOGGLETOOLBARROWS ,
1999-10-26 19:38:33 -04:00
IDM_TOOLBAR_ENABLEPRINT ,
1999-11-18 10:58:35 -05:00
IDM_TOOLBAR_DELETEPRINT ,
1999-12-04 17:34:54 -05:00
IDM_TOOLBAR_INSERTPRINT ,
1999-11-11 21:17:44 -05:00
IDM_TOOLBAR_TOGGLEHELP ,
2003-09-26 15:37:32 -04:00
IDM_TOOLBAR_TOGGLERADIOBTN1 ,
IDM_TOOLBAR_TOGGLERADIOBTN2 ,
IDM_TOOLBAR_TOGGLERADIOBTN3 ,
2002-07-23 10:08:39 -04:00
IDM_TOOLBAR_TOGGLE_TOOLBAR ,
2003-09-26 14:19:50 -04:00
IDM_TOOLBAR_TOGGLE_HORIZONTAL_TEXT ,
2000-07-15 15:51:35 -04:00
IDM_TOOLBAR_TOGGLE_ANOTHER_TOOLBAR ,
2000-11-24 12:07:12 -05:00
IDM_TOOLBAR_CHANGE_TOOLTIP ,
2002-03-25 16:38:45 -05:00
IDM_TOOLBAR_SHOW_TEXT ,
IDM_TOOLBAR_SHOW_ICONS ,
IDM_TOOLBAR_SHOW_BOTH ,
1999-11-11 21:17:44 -05:00
2003-09-26 15:37:32 -04:00
IDM_TOOLBAR_OTHER_1 ,
IDM_TOOLBAR_OTHER_2 ,
IDM_TOOLBAR_OTHER_3 ,
1999-11-11 21:17:44 -05:00
ID_COMBO = 1000
1999-10-26 19:38:33 -04:00
} ;
1998-07-23 10:39:46 -04:00
1999-10-26 19:38:33 -04:00
// ----------------------------------------------------------------------------
// event tables
// ----------------------------------------------------------------------------
1998-07-23 10:39:46 -04:00
1999-10-26 19:38:33 -04:00
// Notice that wxID_HELP will be processed for the 'About' menu and the toolbar
// help button.
1998-07-23 10:39:46 -04:00
1999-10-26 19:38:33 -04:00
BEGIN_EVENT_TABLE ( MyFrame , wxFrame )
2000-07-15 15:51:35 -04:00
EVT_SIZE ( MyFrame : : OnSize )
1999-10-26 19:38:33 -04:00
EVT_MENU ( wxID_EXIT , MyFrame : : OnQuit )
EVT_MENU ( wxID_HELP , MyFrame : : OnAbout )
1998-07-23 10:39:46 -04:00
2002-07-23 10:08:39 -04:00
EVT_MENU ( IDM_TOOLBAR_TOGGLE_TOOLBAR , MyFrame : : OnToggleToolbar )
2000-07-15 15:51:35 -04:00
EVT_MENU ( IDM_TOOLBAR_TOGGLE_ANOTHER_TOOLBAR , MyFrame : : OnToggleAnotherToolbar )
2003-09-26 14:19:50 -04:00
EVT_MENU ( IDM_TOOLBAR_TOGGLE_HORIZONTAL_TEXT , MyFrame : : OnToggleHorizontalText )
2000-07-15 15:51:35 -04:00
1999-12-13 21:02:09 -05:00
EVT_MENU ( IDM_TOOLBAR_TOGGLETOOLBARSIZE , MyFrame : : OnToggleToolbarSize )
EVT_MENU ( IDM_TOOLBAR_TOGGLETOOLBARORIENT , MyFrame : : OnToggleToolbarOrient )
1999-12-14 20:54:39 -05:00
EVT_MENU ( IDM_TOOLBAR_TOGGLETOOLBARROWS , MyFrame : : OnToggleToolbarRows )
1999-12-13 21:02:09 -05:00
1999-10-26 19:38:33 -04:00
EVT_MENU ( IDM_TOOLBAR_ENABLEPRINT , MyFrame : : OnEnablePrint )
1999-11-18 10:58:35 -05:00
EVT_MENU ( IDM_TOOLBAR_DELETEPRINT , MyFrame : : OnDeletePrint )
1999-12-04 17:34:54 -05:00
EVT_MENU ( IDM_TOOLBAR_INSERTPRINT , MyFrame : : OnInsertPrint )
1999-10-26 19:38:33 -04:00
EVT_MENU ( IDM_TOOLBAR_TOGGLEHELP , MyFrame : : OnToggleHelp )
2003-09-26 15:37:32 -04:00
EVT_MENU_RANGE ( IDM_TOOLBAR_TOGGLERADIOBTN1 , IDM_TOOLBAR_TOGGLERADIOBTN3 ,
MyFrame : : OnToggleRadioBtn )
2000-11-24 12:07:12 -05:00
EVT_MENU ( IDM_TOOLBAR_CHANGE_TOOLTIP , MyFrame : : OnChangeToolTip )
1998-07-23 10:39:46 -04:00
2002-03-25 16:38:45 -05:00
EVT_MENU_RANGE ( IDM_TOOLBAR_SHOW_TEXT , IDM_TOOLBAR_SHOW_BOTH ,
MyFrame : : OnToolbarStyle )
2004-06-01 03:45:11 -04:00
EVT_MENU ( wxID_ANY , MyFrame : : OnToolLeftClick )
1998-07-23 10:39:46 -04:00
1999-11-11 21:17:44 -05:00
EVT_COMBOBOX ( ID_COMBO , MyFrame : : OnCombo )
1999-10-26 19:38:33 -04:00
EVT_TOOL_ENTER ( ID_TOOLBAR , MyFrame : : OnToolEnter )
2005-01-02 17:48:24 -05:00
EVT_TOOL_RCLICKED ( wxID_ANY , MyFrame : : OnToolRightClick )
1999-12-13 21:02:09 -05:00
EVT_UPDATE_UI ( wxID_COPY , MyFrame : : OnUpdateCopyAndCut )
EVT_UPDATE_UI ( wxID_CUT , MyFrame : : OnUpdateCopyAndCut )
2003-09-26 14:19:50 -04:00
2003-09-26 15:37:32 -04:00
EVT_UPDATE_UI_RANGE ( IDM_TOOLBAR_TOGGLERADIOBTN1 ,
IDM_TOOLBAR_TOGGLERADIOBTN3 ,
MyFrame : : OnUpdateToggleRadioBtn )
2003-09-26 14:19:50 -04:00
EVT_UPDATE_UI ( IDM_TOOLBAR_TOGGLE_HORIZONTAL_TEXT ,
MyFrame : : OnUpdateToggleHorzText )
1999-10-26 19:38:33 -04:00
END_EVENT_TABLE ( )
1998-07-23 10:39:46 -04:00
1999-10-26 19:38:33 -04:00
// ============================================================================
// implementation
// ============================================================================
1998-07-23 10:39:46 -04:00
1999-10-26 19:38:33 -04:00
// ----------------------------------------------------------------------------
// MyApp
// ----------------------------------------------------------------------------
1998-07-23 10:39:46 -04:00
1999-10-26 19:38:33 -04:00
IMPLEMENT_APP ( MyApp )
1998-07-23 10:39:46 -04:00
1999-10-26 19:38:33 -04:00
// The `main program' equivalent, creating the windows and returning the
// main frame
bool MyApp : : OnInit ( )
{
// Create the main frame window
2004-06-01 03:45:11 -04:00
MyFrame * frame = new MyFrame ( ( wxFrame * ) NULL , wxID_ANY ,
2002-12-14 13:13:27 -05:00
_T ( " wxToolBar Sample " ) ,
2003-07-18 12:16:14 -04:00
# ifdef __WXWINCE__
2004-05-27 07:26:28 -04:00
wxDefaultPosition , wxDefaultSize
2003-07-18 12:16:14 -04:00
# else
wxPoint ( 100 , 100 ) , wxSize ( 550 , 300 )
# endif
) ;
1998-07-23 10:39:46 -04:00
2004-06-01 03:45:11 -04:00
frame - > Show ( true ) ;
1999-09-15 12:15:50 -04:00
2004-07-19 11:36:01 -04:00
# if wxUSE_STATUSBAR
2004-05-25 07:20:37 -04:00
frame - > SetStatusText ( _T ( " Hello, wxWidgets " ) ) ;
2004-05-27 07:26:28 -04:00
# endif
1999-09-15 12:15:50 -04:00
SetTopWindow ( frame ) ;
2004-06-01 03:45:11 -04:00
return true ;
1998-07-23 10:39:46 -04:00
}
1999-12-13 21:02:09 -05:00
void MyFrame : : RecreateToolbar ( )
1998-07-23 10:39:46 -04:00
{
2003-07-18 12:16:14 -04:00
# ifdef __WXWINCE__
// On Windows CE, we should not delete the
// previous toolbar in case it contains the menubar.
2004-10-22 15:11:07 -04:00
// We'll try to accommodate this usage in due course.
2003-07-18 12:16:14 -04:00
wxToolBar * toolBar = CreateToolBar ( ) ;
# else
1999-12-13 21:02:09 -05:00
// delete and recreate the toolbar
1999-12-15 13:02:44 -05:00
wxToolBarBase * toolBar = GetToolBar ( ) ;
2002-03-25 16:38:45 -05:00
long style = toolBar ? toolBar - > GetWindowStyle ( ) : TOOLBAR_STYLE ;
1999-12-13 21:02:09 -05:00
delete toolBar ;
1998-07-23 10:39:46 -04:00
1999-12-13 21:02:09 -05:00
SetToolBar ( NULL ) ;
2003-09-26 14:19:50 -04:00
style & = ~ ( wxTB_HORIZONTAL | wxTB_VERTICAL | wxTB_HORZ_LAYOUT ) ;
1999-12-13 21:02:09 -05:00
style | = m_horzToolbar ? wxTB_HORIZONTAL : wxTB_VERTICAL ;
2003-09-26 14:19:50 -04:00
if ( style & wxTB_TEXT & & ! ( style & wxTB_NOICONS ) & & m_horzText )
style | = wxTB_HORZ_LAYOUT ;
1999-12-13 21:02:09 -05:00
toolBar = CreateToolBar ( style , ID_TOOLBAR ) ;
2003-07-18 12:16:14 -04:00
# endif
1999-12-13 21:02:09 -05:00
// Set up toolbar
wxBitmap toolBarBitmaps [ 8 ] ;
2000-07-15 15:51:35 -04:00
# if USE_XPM_BITMAPS
toolBarBitmaps [ 0 ] = wxBitmap ( new_xpm ) ;
toolBarBitmaps [ 1 ] = wxBitmap ( open_xpm ) ;
toolBarBitmaps [ 2 ] = wxBitmap ( save_xpm ) ;
toolBarBitmaps [ 3 ] = wxBitmap ( copy_xpm ) ;
toolBarBitmaps [ 4 ] = wxBitmap ( cut_xpm ) ;
toolBarBitmaps [ 5 ] = wxBitmap ( paste_xpm ) ;
toolBarBitmaps [ 6 ] = wxBitmap ( print_xpm ) ;
toolBarBitmaps [ 7 ] = wxBitmap ( help_xpm ) ;
# else // !USE_XPM_BITMAPS
1999-12-13 21:02:09 -05:00
toolBarBitmaps [ 0 ] = wxBITMAP ( new ) ;
toolBarBitmaps [ 1 ] = wxBITMAP ( open ) ;
2000-01-15 17:31:16 -05:00
toolBarBitmaps [ 2 ] = wxBITMAP ( save ) ;
toolBarBitmaps [ 3 ] = wxBITMAP ( copy ) ;
toolBarBitmaps [ 4 ] = wxBITMAP ( cut ) ;
toolBarBitmaps [ 5 ] = wxBITMAP ( paste ) ;
toolBarBitmaps [ 6 ] = wxBITMAP ( print ) ;
toolBarBitmaps [ 7 ] = wxBITMAP ( help ) ;
2000-07-15 15:51:35 -04:00
# endif // USE_XPM_BITMAPS/!USE_XPM_BITMAPS
2000-01-15 17:31:16 -05:00
1999-12-13 21:02:09 -05:00
if ( ! m_smallToolbar )
{
2000-01-15 17:31:16 -05:00
int w = 2 * toolBarBitmaps [ 0 ] . GetWidth ( ) ,
h = 2 * toolBarBitmaps [ 0 ] . GetHeight ( ) ;
for ( size_t n = 0 ; n < WXSIZEOF ( toolBarBitmaps ) ; n + + )
{
toolBarBitmaps [ n ] =
2002-03-23 19:22:15 -05:00
wxBitmap ( toolBarBitmaps [ n ] . ConvertToImage ( ) . Scale ( w , h ) ) ;
2000-01-15 17:31:16 -05:00
}
toolBar - > SetToolBitmapSize ( wxSize ( w , h ) ) ;
1999-12-13 21:02:09 -05:00
}
1998-07-23 10:39:46 -04:00
2002-03-25 16:38:45 -05:00
toolBar - > AddTool ( wxID_NEW , _T ( " New " ) , toolBarBitmaps [ 0 ] , _T ( " New file " ) ) ;
toolBar - > AddTool ( wxID_OPEN , _T ( " Open " ) , toolBarBitmaps [ 1 ] , _T ( " Open file " ) ) ;
1998-07-23 10:39:46 -04:00
2003-03-27 14:40:32 -05:00
// the generic toolbar doesn't really support this
# if (wxUSE_TOOLBAR_NATIVE && !USE_GENERIC_TBAR) && !defined(__WXX11__) || defined(__WXUNIVERSAL__)
1999-12-13 21:02:09 -05:00
// adding a combo to a vertical toolbar is not very smart
if ( m_horzToolbar )
{
2004-07-20 06:09:47 -04:00
wxComboBox * combo = new wxComboBox ( toolBar , ID_COMBO , _T ( " " ) , wxDefaultPosition , wxSize ( 200 , wxDefaultCoord ) ) ;
2002-12-04 09:11:26 -05:00
combo - > Append ( _T ( " This " ) ) ;
combo - > Append ( _T ( " is a " ) ) ;
combo - > Append ( _T ( " combobox " ) ) ;
combo - > Append ( _T ( " in a " ) ) ;
combo - > Append ( _T ( " toolbar " ) ) ;
1999-12-13 21:02:09 -05:00
toolBar - > AddControl ( combo ) ;
}
1999-12-15 13:02:44 -05:00
# endif // toolbars which don't support controls
1998-07-23 10:39:46 -04:00
2002-03-25 16:38:45 -05:00
toolBar - > AddTool ( wxID_SAVE , _T ( " Save " ) , toolBarBitmaps [ 2 ] , _T ( " Toggle button 1 " ) , wxITEM_CHECK ) ;
toolBar - > AddTool ( wxID_COPY , _T ( " Copy " ) , toolBarBitmaps [ 3 ] , _T ( " Toggle button 2 " ) , wxITEM_CHECK ) ;
toolBar - > AddTool ( wxID_CUT , _T ( " Cut " ) , toolBarBitmaps [ 4 ] , _T ( " Toggle/Untoggle help button " ) ) ;
toolBar - > AddTool ( wxID_PASTE , _T ( " Paste " ) , toolBarBitmaps [ 5 ] , _T ( " Paste " ) ) ;
2003-09-11 08:52:20 -04:00
toolBar - > AddTool ( wxID_PRINT , _T ( " Print " ) , toolBarBitmaps [ 6 ] , _T ( " Delete this tool. This is a very long tooltip to test whether it does the right thing when the tooltip is more than Windows can cope with. " ) ) ;
2000-01-15 17:31:16 -05:00
toolBar - > AddSeparator ( ) ;
2002-03-25 16:38:45 -05:00
toolBar - > AddTool ( wxID_HELP , _T ( " Help " ) , toolBarBitmaps [ 7 ] , _T ( " Help button " ) , wxITEM_CHECK ) ;
1998-07-24 11:43:03 -04:00
1999-12-13 21:02:09 -05:00
// after adding the buttons to the toolbar, must call Realize() to reflect
// the changes
toolBar - > Realize ( ) ;
1999-12-14 20:54:39 -05:00
toolBar - > SetRows ( m_horzToolbar ? m_rows : 10 / m_rows ) ;
1998-07-23 10:39:46 -04:00
}
1999-10-26 19:38:33 -04:00
// ----------------------------------------------------------------------------
// MyFrame
// ----------------------------------------------------------------------------
1998-07-24 11:43:03 -04:00
// Define my frame constructor
1999-09-15 12:15:50 -04:00
MyFrame : : MyFrame ( wxFrame * parent ,
wxWindowID id ,
const wxString & title ,
const wxPoint & pos ,
const wxSize & size ,
long style )
: wxFrame ( parent , id , title , pos , size , style )
1998-07-23 10:39:46 -04:00
{
2000-07-15 15:51:35 -04:00
m_tbar = NULL ;
1999-12-14 20:54:39 -05:00
2004-06-01 03:45:11 -04:00
m_smallToolbar = true ;
m_horzToolbar = true ;
m_horzText = false ;
1999-12-14 20:54:39 -05:00
m_rows = 1 ;
2002-12-04 09:11:26 -05:00
m_nPrint = 1 ;
1999-10-26 19:38:33 -04:00
2004-07-19 11:36:01 -04:00
# if wxUSE_STATUSBAR
1999-10-26 19:38:33 -04:00
// Give it a status line
CreateStatusBar ( ) ;
2004-05-27 07:26:28 -04:00
# endif
1999-10-26 19:38:33 -04:00
// Give it an icon
SetIcon ( wxICON ( mondrian ) ) ;
// Make a menubar
wxMenu * tbarMenu = new wxMenu ;
2002-07-23 10:08:39 -04:00
tbarMenu - > AppendCheckItem ( IDM_TOOLBAR_TOGGLE_TOOLBAR ,
2002-12-04 09:11:26 -05:00
_T ( " Toggle &toolbar \t Ctrl-Z " ) ,
_T ( " Show or hide the toolbar " ) ) ;
2002-07-23 10:08:39 -04:00
tbarMenu - > AppendCheckItem ( IDM_TOOLBAR_TOGGLE_ANOTHER_TOOLBAR ,
2002-12-04 09:11:26 -05:00
_T ( " Toggle &another toolbar \t Ctrl-A " ) ,
_T ( " Show/hide another test toolbar " ) ) ;
2002-07-23 10:08:39 -04:00
2003-09-26 14:19:50 -04:00
tbarMenu - > AppendCheckItem ( IDM_TOOLBAR_TOGGLE_HORIZONTAL_TEXT ,
_T ( " Toggle hori&zontal text \t Ctrl-H " ) ,
_T ( " Show text under/alongside the icon " ) ) ;
2002-07-23 10:08:39 -04:00
tbarMenu - > AppendCheckItem ( IDM_TOOLBAR_TOGGLETOOLBARSIZE ,
2002-12-04 09:11:26 -05:00
_T ( " &Toggle toolbar size \t Ctrl-S " ) ,
_T ( " Toggle between big/small toolbar " ) ) ;
2002-07-23 10:08:39 -04:00
tbarMenu - > AppendCheckItem ( IDM_TOOLBAR_TOGGLETOOLBARORIENT ,
2002-12-04 09:11:26 -05:00
_T ( " Toggle toolbar &orientation \t Ctrl-O " ) ,
_T ( " Toggle toolbar orientation " ) ) ;
2002-07-23 10:08:39 -04:00
tbarMenu - > AppendCheckItem ( IDM_TOOLBAR_TOGGLETOOLBARROWS ,
2002-12-04 09:11:26 -05:00
_T ( " Toggle number of &rows \t Ctrl-R " ) ,
_T ( " Toggle number of toolbar rows between 1 and 2 " ) ) ;
1999-12-13 21:02:09 -05:00
tbarMenu - > AppendSeparator ( ) ;
2002-12-04 09:11:26 -05:00
tbarMenu - > Append ( IDM_TOOLBAR_ENABLEPRINT , _T ( " &Enable print button \t Ctrl-E " ) , _T ( " " ) ) ;
tbarMenu - > Append ( IDM_TOOLBAR_DELETEPRINT , _T ( " &Delete print button \t Ctrl-D " ) , _T ( " " ) ) ;
tbarMenu - > Append ( IDM_TOOLBAR_INSERTPRINT , _T ( " &Insert print button \t Ctrl-I " ) , _T ( " " ) ) ;
tbarMenu - > Append ( IDM_TOOLBAR_TOGGLEHELP , _T ( " Toggle &help button \t Ctrl-T " ) , _T ( " " ) ) ;
2000-11-24 12:07:12 -05:00
tbarMenu - > AppendSeparator ( ) ;
2003-09-26 15:37:32 -04:00
tbarMenu - > Append ( IDM_TOOLBAR_TOGGLERADIOBTN1 , _T ( " Toggle &1st radio button \t Ctrl-1 " ) , _T ( " " ) ) ;
tbarMenu - > Append ( IDM_TOOLBAR_TOGGLERADIOBTN2 , _T ( " Toggle &2nd radio button \t Ctrl-2 " ) , _T ( " " ) ) ;
tbarMenu - > Append ( IDM_TOOLBAR_TOGGLERADIOBTN3 , _T ( " Toggle &3rd radio button \t Ctrl-3 " ) , _T ( " " ) ) ;
tbarMenu - > AppendSeparator ( ) ;
2002-12-04 09:11:26 -05:00
tbarMenu - > Append ( IDM_TOOLBAR_CHANGE_TOOLTIP , _T ( " Change tool tip " ) , _T ( " " ) ) ;
2002-03-25 16:38:45 -05:00
tbarMenu - > AppendSeparator ( ) ;
2002-12-04 09:11:26 -05:00
tbarMenu - > AppendRadioItem ( IDM_TOOLBAR_SHOW_TEXT , _T ( " Show &text \t Alt-T " ) ) ;
tbarMenu - > AppendRadioItem ( IDM_TOOLBAR_SHOW_ICONS , _T ( " Show &icons \t Alt-I " ) ) ;
tbarMenu - > AppendRadioItem ( IDM_TOOLBAR_SHOW_BOTH , _T ( " Show &both \t Alt-B " ) ) ;
2000-02-08 14:19:47 -05:00
1999-10-26 19:38:33 -04:00
wxMenu * fileMenu = new wxMenu ;
2002-12-04 09:11:26 -05:00
fileMenu - > Append ( wxID_EXIT , _T ( " E&xit \t Alt-X " ) , _T ( " Quit toolbar sample " ) ) ;
1999-10-26 19:38:33 -04:00
wxMenu * helpMenu = new wxMenu ;
2002-12-04 09:11:26 -05:00
helpMenu - > Append ( wxID_HELP , _T ( " &About " ) , _T ( " About toolbar sample " ) ) ;
1999-10-26 19:38:33 -04:00
wxMenuBar * menuBar = new wxMenuBar ( wxMB_DOCKABLE ) ;
2002-12-04 09:11:26 -05:00
menuBar - > Append ( fileMenu , _T ( " &File " ) ) ;
menuBar - > Append ( tbarMenu , _T ( " &Toolbar " ) ) ;
menuBar - > Append ( helpMenu , _T ( " &Help " ) ) ;
1999-10-26 19:38:33 -04:00
// Associate the menu bar with the frame
SetMenuBar ( menuBar ) ;
2004-06-01 03:45:11 -04:00
menuBar - > Check ( IDM_TOOLBAR_SHOW_BOTH , true ) ;
2002-03-25 19:44:57 -05:00
1999-10-26 19:38:33 -04:00
// Create the toolbar
1999-12-13 21:02:09 -05:00
RecreateToolbar ( ) ;
2003-10-22 04:41:36 -04:00
2004-06-01 03:45:11 -04:00
m_textWindow = new wxTextCtrl ( this , wxID_ANY , _T ( " " ) , wxPoint ( 0 , 0 ) , wxDefaultSize , wxTE_MULTILINE ) ;
1999-12-13 21:02:09 -05:00
}
1999-10-26 19:38:33 -04:00
1999-12-15 13:02:44 -05:00
# if USE_GENERIC_TBAR
wxToolBar * MyFrame : : OnCreateToolBar ( long style ,
wxWindowID id ,
const wxString & name )
{
return ( wxToolBar * ) new wxToolBarSimple ( this , id ,
wxDefaultPosition , wxDefaultSize ,
style , name ) ;
}
# endif // USE_GENERIC_TBAR
2000-07-15 15:51:35 -04:00
void MyFrame : : LayoutChildren ( )
{
wxSize size = GetClientSize ( ) ;
int offset ;
if ( m_tbar )
{
2004-07-20 06:09:47 -04:00
m_tbar - > SetSize ( wxDefaultCoord , size . y ) ;
2000-07-15 15:51:35 -04:00
m_tbar - > Move ( 0 , 0 ) ;
offset = m_tbar - > GetSize ( ) . x ;
}
else
{
offset = 0 ;
}
m_textWindow - > SetSize ( offset , 0 , size . x - offset , size . y ) ;
}
void MyFrame : : OnSize ( wxSizeEvent & event )
{
if ( m_tbar )
{
LayoutChildren ( ) ;
}
else
{
event . Skip ( ) ;
}
}
2002-07-23 10:08:39 -04:00
void MyFrame : : OnToggleToolbar ( wxCommandEvent & WXUNUSED ( event ) )
{
wxToolBar * tbar = GetToolBar ( ) ;
if ( ! tbar )
{
RecreateToolbar ( ) ;
}
else
{
delete tbar ;
SetToolBar ( NULL ) ;
}
}
2003-09-26 14:19:50 -04:00
void MyFrame : : OnToggleHorizontalText ( wxCommandEvent & WXUNUSED ( event ) )
{
m_horzText = ! m_horzText ;
RecreateToolbar ( ) ;
}
2000-07-15 15:51:35 -04:00
void MyFrame : : OnToggleAnotherToolbar ( wxCommandEvent & WXUNUSED ( event ) )
{
if ( m_tbar )
{
delete m_tbar ;
m_tbar = NULL ;
}
else
{
2002-03-25 16:38:45 -05:00
long style = GetToolBar ( ) - > GetWindowStyle ( ) ;
style & = ~ wxTB_HORIZONTAL ;
style | = wxTB_VERTICAL ;
2004-06-01 03:45:11 -04:00
m_tbar = new wxToolBar ( this , wxID_ANY ,
2000-07-15 15:51:35 -04:00
wxDefaultPosition , wxDefaultSize ,
2002-03-25 16:38:45 -05:00
style ) ;
2002-09-10 09:40:55 -04:00
m_tbar - > SetMargins ( 4 , 4 ) ;
2003-09-26 15:37:32 -04:00
m_tbar - > AddRadioTool ( IDM_TOOLBAR_OTHER_1 , _T ( " First " ) , wxBITMAP ( new ) ) ;
m_tbar - > AddRadioTool ( IDM_TOOLBAR_OTHER_2 , _T ( " Second " ) , wxBITMAP ( open ) ) ;
m_tbar - > AddRadioTool ( IDM_TOOLBAR_OTHER_3 , _T ( " Third " ) , wxBITMAP ( save ) ) ;
2002-03-25 16:38:45 -05:00
m_tbar - > AddSeparator ( ) ;
m_tbar - > AddTool ( wxID_HELP , _T ( " Help " ) , wxBITMAP ( help ) ) ;
2000-07-15 15:51:35 -04:00
m_tbar - > Realize ( ) ;
}
LayoutChildren ( ) ;
}
1999-12-13 21:02:09 -05:00
void MyFrame : : OnToggleToolbarSize ( wxCommandEvent & WXUNUSED ( event ) )
{
m_smallToolbar = ! m_smallToolbar ;
1999-10-26 19:38:33 -04:00
1999-12-13 21:02:09 -05:00
RecreateToolbar ( ) ;
1999-09-15 12:15:50 -04:00
}
1999-12-14 20:54:39 -05:00
void MyFrame : : OnToggleToolbarRows ( wxCommandEvent & WXUNUSED ( event ) )
{
// m_rows may be only 1 or 2
m_rows = 3 - m_rows ;
GetToolBar ( ) - > SetRows ( m_horzToolbar ? m_rows : 10 / m_rows ) ;
1999-12-16 12:39:07 -05:00
//RecreateToolbar(); -- this is unneeded
1999-12-14 20:54:39 -05:00
}
1999-12-13 21:02:09 -05:00
void MyFrame : : OnToggleToolbarOrient ( wxCommandEvent & WXUNUSED ( event ) )
1999-09-15 12:15:50 -04:00
{
1999-12-13 21:02:09 -05:00
m_horzToolbar = ! m_horzToolbar ;
1999-09-15 12:15:50 -04:00
1999-12-13 21:02:09 -05:00
RecreateToolbar ( ) ;
1998-07-23 10:39:46 -04:00
}
1998-07-31 16:04:04 -04:00
void MyFrame : : OnQuit ( wxCommandEvent & WXUNUSED ( event ) )
1998-07-23 10:39:46 -04:00
{
2004-06-01 03:45:11 -04:00
Close ( true ) ;
1998-07-23 10:39:46 -04:00
}
2003-01-01 18:36:08 -05:00
void MyFrame : : OnAbout ( wxCommandEvent & event )
1998-07-23 10:39:46 -04:00
{
2003-01-01 18:36:08 -05:00
if ( event . IsChecked ( ) )
m_textWindow - > WriteText ( _T ( " Help button down now. \n " ) ) ;
else
m_textWindow - > WriteText ( _T ( " Help button up now. \n " ) ) ;
2004-05-25 07:20:37 -04:00
( void ) wxMessageBox ( _T ( " wxWidgets toolbar sample " ) , _T ( " About wxToolBar " ) ) ;
1998-07-24 11:43:03 -04:00
}
1998-07-23 10:39:46 -04:00
1998-07-24 11:43:03 -04:00
void MyFrame : : OnToolLeftClick ( wxCommandEvent & event )
{
1999-07-25 08:59:58 -04:00
wxString str ;
str . Printf ( _T ( " Clicked on tool %d \n " ) , event . GetId ( ) ) ;
m_textWindow - > WriteText ( str ) ;
1999-10-26 19:38:33 -04:00
1999-07-25 08:59:58 -04:00
if ( event . GetId ( ) = = wxID_COPY )
{
1999-09-15 12:15:50 -04:00
DoEnablePrint ( ) ;
1999-07-25 08:59:58 -04:00
}
1999-10-26 19:38:33 -04:00
1999-07-25 08:59:58 -04:00
if ( event . GetId ( ) = = wxID_CUT )
{
1999-09-15 12:15:50 -04:00
DoToggleHelp ( ) ;
1999-07-25 08:59:58 -04:00
}
1999-12-01 10:23:56 -05:00
1999-11-18 10:58:35 -05:00
if ( event . GetId ( ) = = wxID_PRINT )
{
DoDeletePrint ( ) ;
}
1998-07-23 10:39:46 -04:00
}
2005-01-02 17:48:24 -05:00
void MyFrame : : OnToolRightClick ( wxCommandEvent & event )
{
m_textWindow - > AppendText (
wxString : : Format ( _T ( " Tool %d right clicked. \n " ) , event . GetInt ( ) ) ) ;
}
1999-11-11 21:17:44 -05:00
void MyFrame : : OnCombo ( wxCommandEvent & event )
{
wxLogStatus ( _T ( " Combobox string '%s' selected " ) , event . GetString ( ) . c_str ( ) ) ;
}
1999-09-15 12:15:50 -04:00
void MyFrame : : DoEnablePrint ( )
{
2002-12-04 09:11:26 -05:00
if ( ! m_nPrint )
return ;
1999-12-15 13:02:44 -05:00
wxToolBarBase * tb = GetToolBar ( ) ;
2002-12-04 09:11:26 -05:00
tb - > EnableTool ( wxID_PRINT , ! tb - > GetToolEnabled ( wxID_PRINT ) ) ;
1999-09-15 12:15:50 -04:00
}
1999-11-18 10:58:35 -05:00
void MyFrame : : DoDeletePrint ( )
{
2002-12-04 09:11:26 -05:00
if ( ! m_nPrint )
return ;
1999-12-01 10:23:56 -05:00
2002-12-04 09:11:26 -05:00
wxToolBarBase * tb = GetToolBar ( ) ;
1999-11-18 10:58:35 -05:00
tb - > DeleteTool ( wxID_PRINT ) ;
2002-12-04 09:11:26 -05:00
m_nPrint - - ;
1999-11-18 10:58:35 -05:00
}
1999-09-15 12:15:50 -04:00
void MyFrame : : DoToggleHelp ( )
{
1999-12-15 13:02:44 -05:00
wxToolBarBase * tb = GetToolBar ( ) ;
1999-09-15 12:15:50 -04:00
tb - > ToggleTool ( wxID_HELP , ! tb - > GetToolState ( wxID_HELP ) ) ;
}
1999-12-13 21:02:09 -05:00
void MyFrame : : OnUpdateCopyAndCut ( wxUpdateUIEvent & event )
{
2003-09-26 14:19:50 -04:00
event . Enable ( m_textWindow - > CanCopy ( ) ) ;
}
void MyFrame : : OnUpdateToggleHorzText ( wxUpdateUIEvent & event )
{
wxToolBar * tbar = GetToolBar ( ) ;
event . Enable ( tbar & &
tbar - > HasFlag ( wxTB_TEXT ) & &
! tbar - > HasFlag ( wxTB_NOICONS ) ) ;
1999-12-13 21:02:09 -05:00
}
2000-11-24 12:07:12 -05:00
void MyFrame : : OnChangeToolTip ( wxCommandEvent & WXUNUSED ( event ) )
{
GetToolBar ( ) - > SetToolShortHelp ( wxID_NEW , _T ( " New toolbar button " ) ) ;
}
2002-03-25 16:38:45 -05:00
void MyFrame : : OnToolbarStyle ( wxCommandEvent & event )
{
long style = GetToolBar ( ) - > GetWindowStyle ( ) ;
style & = ~ ( wxTB_NOICONS | wxTB_TEXT ) ;
switch ( event . GetId ( ) )
{
case IDM_TOOLBAR_SHOW_TEXT :
style | = wxTB_NOICONS | wxTB_TEXT ;
break ;
case IDM_TOOLBAR_SHOW_ICONS :
// nothing to do
break ;
case IDM_TOOLBAR_SHOW_BOTH :
style | = wxTB_TEXT ;
}
GetToolBar ( ) - > SetWindowStyle ( style ) ;
}
1999-12-04 17:34:54 -05:00
void MyFrame : : OnInsertPrint ( wxCommandEvent & WXUNUSED ( event ) )
{
2002-12-04 09:11:26 -05:00
m_nPrint + + ;
1999-12-04 17:34:54 -05:00
2002-12-04 09:11:26 -05:00
wxToolBarBase * tb = GetToolBar ( ) ;
tb - > InsertTool ( 0 , wxID_PRINT , _T ( " New print " ) ,
wxBITMAP ( print ) , wxNullBitmap ,
wxITEM_NORMAL ,
_T ( " Delete this tool " ) ,
_T ( " This button was inserted into the toolbar " ) ) ;
// must call Realize() after adding a new button
tb - > Realize ( ) ;
1999-12-04 17:34:54 -05:00
}
1998-07-24 11:43:03 -04:00
void MyFrame : : OnToolEnter ( wxCommandEvent & event )
{
2004-07-19 11:36:01 -04:00
# if wxUSE_STATUSBAR
1999-12-15 13:02:44 -05:00
if ( event . GetSelection ( ) > - 1 )
{
wxString str ;
str . Printf ( _T ( " This is tool number %d " ) , event . GetSelection ( ) ) ;
SetStatusText ( str ) ;
}
else
2002-12-04 09:11:26 -05:00
SetStatusText ( _T ( " " ) ) ;
2004-07-19 11:36:01 -04:00
# else
wxUnusedVar ( event ) ;
# endif // wxUSE_STATUSBAR
1998-07-24 11:43:03 -04:00
}
1998-07-23 10:39:46 -04:00
2003-09-26 15:37:32 -04:00
void MyFrame : : OnToggleRadioBtn ( wxCommandEvent & event )
{
if ( m_tbar )
{
m_tbar - > ToggleTool ( IDM_TOOLBAR_OTHER_1 +
event . GetId ( ) - IDM_TOOLBAR_TOGGLERADIOBTN1 , true ) ;
}
}