#include "wx/notebook.h"
#include "wx/imaglist.h"
#include "wx/spinbutt.h"
-#include "wx/clipbrd.h"
-#include "wx/tooltip.h"
+
+#if wxUSE_CLIPBOARD
+ #include "wx/dataobj.h"
+ #include "wx/clipbrd.h"
+#endif
+
+#if wxUSE_TOOLTIPS
+ #include "wx/tooltip.h"
+#endif
#if defined(__WXGTK__) || defined(__WXMOTIF__)
#define USE_XPM
class MyApp: public wxApp
{
- public:
- bool OnInit(void);
+public:
+ bool OnInit();
};
// a text ctrl which allows to call different wxTextCtrl functions
const wxPoint &pos, const wxSize &size, int style = 0)
: wxTextCtrl(parent, id, value, pos, size, style) { }
- void OnChar(wxKeyEvent& event);
+ void OnKeyDown(wxKeyEvent& event);
private:
DECLARE_EVENT_TABLE()
class MyPanel: public wxPanel
{
- public:
-
+public:
MyPanel(wxFrame *frame, int x, int y, int w, int h);
virtual ~MyPanel();
-
+
void OnSize( wxSizeEvent& event );
void OnListBox( wxCommandEvent &event );
void OnListBoxDoubleClick( wxCommandEvent &event );
void OnCopyToClipboard( wxCommandEvent &event );
void OnMoveToEndOfText( wxCommandEvent &event );
void OnMoveToEndOfEntry( wxCommandEvent &event );
-
+
wxListBox *m_listbox;
wxChoice *m_choice;
wxComboBox *m_combo;
MyTextCtrl *m_multitext;
MyTextCtrl *m_textentry;
wxCheckBox *m_checkbox;
-
+
wxTextCtrl *m_text;
wxNotebook *m_notebook;
- DECLARE_EVENT_TABLE()
+private:
+ DECLARE_EVENT_TABLE()
};
class MyFrame: public wxFrame
{
- public:
-
+public:
MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
- public:
-
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnIdle( wxIdleEvent& event );
+ void OnSize( wxSizeEvent& event );
- DECLARE_EVENT_TABLE()
+private:
+ DECLARE_EVENT_TABLE()
};
//----------------------------------------------------------------------
const int MINIMAL_TEXT = 101;
const int MINIMAL_ABOUT = 102;
-bool MyApp::OnInit(void)
+bool MyApp::OnInit()
{
// Create the main frame window
MyFrame *frame = new MyFrame((wxFrame *) NULL,
//----------------------------------------------------------------------
BEGIN_EVENT_TABLE(MyTextCtrl, wxTextCtrl)
- EVT_CHAR(MyTextCtrl::OnChar)
+ EVT_KEY_DOWN(MyTextCtrl::OnKeyDown)
END_EVENT_TABLE()
-void MyTextCtrl::OnChar(wxKeyEvent& event)
+void MyTextCtrl::OnKeyDown(wxKeyEvent& event)
{
switch ( event.KeyCode() )
{
EVT_BUTTON (ID_MOVE_END_ENTRY, MyPanel::OnMoveToEndOfEntry)
END_EVENT_TABLE()
-MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) :
- wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) )
+MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
+ : wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ),
+ m_text(NULL), m_notebook(NULL)
{
// SetBackgroundColour("cadet blue");
{
Image_List, Image_Choice, Image_Combo, Image_Text, Image_Radio, Image_Gauge, Image_Max
};
- wxImageList *imagelist = new wxImageList(32, 32, FALSE, Image_Max);
+ wxImageList *imagelist = new wxImageList(16, 16, FALSE, Image_Max);
static const char *s_iconNames[Image_Max] =
{
panel = new wxPanel(m_notebook);
m_listbox = new wxListBox( panel, ID_LISTBOX, wxPoint(10,10), wxSize(120,70), 5, choices );
+#if wxUSE_TOOLTIPS
m_listbox->SetToolTip( "This is a list box" );
+#endif
(void)new wxButton( panel, ID_LISTBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) );
(void)new wxButton( panel, ID_LISTBOX_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) );
(void)new wxButton( panel, ID_LISTBOX_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) );
(void)new wxButton( panel, ID_LISTBOX_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) );
button = new wxButton( panel, ID_LISTBOX_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) );
+#if wxUSE_TOOLTIPS
button->SetToolTip( "Press here to set italic font" );
+#endif
m_checkbox = new wxCheckBox( panel, ID_LISTBOX_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) );
m_checkbox->SetValue(FALSE);
+#if wxUSE_TOOLTIPS
m_checkbox->SetToolTip( "Click here to disable the listbox" );
- m_notebook->AddPage(panel, "wxList", TRUE, Image_List);
+#endif
+ m_notebook->AddPage(panel, "wxListBox", TRUE, Image_List);
panel = new wxPanel(m_notebook);
m_choice = new wxChoice( panel, ID_CHOICE, wxPoint(10,10), wxSize(120,-1), 5, choices );
m_notebook->AddPage(panel, "wxComboBox", FALSE, Image_Combo);
panel = new wxPanel(m_notebook);
- m_textentry = new MyTextCtrl( panel, -1, "Write text here.", wxPoint(10,10), wxSize(320,28),
+ m_textentry = new MyTextCtrl( panel, -1, "Some text.", wxPoint(10,10), wxSize(320,28),
+ //0);
wxTE_PROCESS_ENTER);
- (*m_textentry) << " More text.";
- m_multitext = new MyTextCtrl( panel, ID_TEXT, "And here.", wxPoint(10,50), wxSize(320,70),
+ (*m_textentry) << " Appended.";
+ m_textentry->SetInsertionPoint(0);
+ m_textentry->WriteText( "Prepended. " );
+
+ m_multitext = new MyTextCtrl( panel, ID_TEXT, "Some text.", wxPoint(10,50), wxSize(320,70),
wxTE_MULTILINE );
- (*m_multitext) << " More text.\nPress function keys to test different \nwxTextCtrl functions.";
+ (*m_multitext) << " Appended.";
+ m_multitext->SetInsertionPoint(0);
+ m_multitext->WriteText( "Prepended. " );
+ m_multitext->AppendText( "\nPress function keys to test different \nwxTextCtrl functions." );
+
new MyTextCtrl( panel, -1, "This one is with wxTE_PROCESS_TAB style.",
wxPoint(10,120), wxSize(320,70), wxTE_MULTILINE | wxTE_PROCESS_TAB);
- (void)new wxStaticBox( panel, -1, "&Move cursor to the end of:",
- wxPoint(345, 0), wxSize(160, 100) );
- (void)new wxButton(panel, ID_MOVE_END_ENTRY, "Text &entry",
- wxPoint(370, 20), wxSize(110, 30));
- (void)new wxButton(panel, ID_MOVE_END_ZONE, "Text &zone",
- wxPoint(370, 60), wxSize(110, 30));
- (void)new wxStaticBox( panel, -1, "wx&Clipboard", wxPoint(338,120), wxSize(160,100) );
- (void)new wxButton( panel, ID_COPY_TEXT, "C&opy line 1", wxPoint(362,140), wxSize(110,30) );
- (void)new wxButton( panel, ID_PASTE_TEXT, "&Paste text", wxPoint(362,180), wxSize(110,30) );
- m_notebook->AddPage(panel, "wxTextCtrl" , FALSE, Image_Text);
+ (void)new wxStaticBox( panel, -1, "&Move cursor to the end of:", wxPoint(345, 0), wxSize(160, 100) );
+ (void)new wxButton( panel, ID_MOVE_END_ENTRY, "Text &entry", wxPoint(370, 20), wxSize(110, 30) );
+ (void)new wxButton( panel, ID_MOVE_END_ZONE, "Text &zone", wxPoint(370, 60), wxSize(110, 30) );
+ (void)new wxStaticBox( panel, -1, "wx&Clipboard", wxPoint(345,110), wxSize(160,100) );
+ (void)new wxButton( panel, ID_COPY_TEXT, "C&opy line 1", wxPoint(375,130), wxSize(110,30) );
+ (new wxButton( panel, ID_PASTE_TEXT, "&Paste text", wxPoint(375,170), wxSize(110,30) ))
+ ->SetDefault();
+ m_notebook->AddPage( panel, "wxTextCtrl" , FALSE, Image_Text );
wxString choices2[] =
{
void MyPanel::OnPasteFromClipboard( wxCommandEvent &WXUNUSED(event) )
{
-#ifdef __WXGTK__
+ // We test for wxUSE_DRAG_AND_DROP also, because data objects
+ // may not be implemented for compilers that can't cope with the OLE
+ // parts in wxUSE_DRAG_AND_DROP.
+#if wxUSE_CLIPBOARD && wxUSE_DRAG_AND_DROP
if (!wxTheClipboard->Open())
{
- *m_text << "Error opening the clipboard." << "\n";
+ *m_text << "Error opening the clipboard.\n";
return;
}
else
{
- *m_text << "Successfully opened the clipboard." << "\n";
+ *m_text << "Successfully opened the clipboard.\n";
}
wxTextDataObject data;
- if (wxTheClipboard->IsSupported( data ))
+ if (wxTheClipboard->IsSupported( data.GetFormat() ))
{
- *m_text << "Clipboard supports requested format." << "\n";
+ *m_text << "Clipboard supports requested format.\n";
- if (wxTheClipboard->GetData( data ))
+ if (wxTheClipboard->GetData( &data ))
{
- *m_text << "Successfully retrieved data from the clipboard." << "\n";
+ *m_text << "Successfully retrieved data from the clipboard.\n";
*m_multitext << data.GetText() << "\n";
}
else
{
- *m_text << "Error getting data from the clipboard." << "\n";
+ *m_text << "Error getting data from the clipboard.\n";
}
}
else
{
- *m_text << "Clipboard doesn't support requested format." << "\n";
+ *m_text << "Clipboard doesn't support requested format.\n";
}
wxTheClipboard->Close();
- *m_text << "Closed the clipboard." << "\n";
-
+ *m_text << "Closed the clipboard.\n";
+#else
+ wxLogError("Your version of wxWindows is compiled without clipboard support.");
#endif
}
void MyPanel::OnCopyToClipboard( wxCommandEvent &WXUNUSED(event) )
{
-#ifdef __WXGTK__
-
+#if wxUSE_CLIPBOARD && wxUSE_DRAG_AND_DROP
wxString text( m_multitext->GetLineText(0) );
- if (text.IsEmpty()) return;
+ if (text.IsEmpty())
+ {
+ *m_text << "No text to copy.\n";
+
+ return;
+ }
if (!wxTheClipboard->Open())
{
- *m_text << "Error opening the clipboard." << "\n";
+ *m_text << "Error opening the clipboard.\n";
return;
}
else
{
- *m_text << "Successfully opened the clipboard." << "\n";
+ *m_text << "Successfully opened the clipboard.\n";
}
wxTextDataObject *data = new wxTextDataObject( text );
if (!wxTheClipboard->SetData( data ))
{
- *m_text << "Error while copying to the clipboard." << "\n";
+ *m_text << "Error while copying to the clipboard.\n";
}
else
{
- *m_text << "Successfully copied data to the clipboard." << "\n";
+ *m_text << "Successfully copied data to the clipboard.\n";
}
wxTheClipboard->Close();
- *m_text << "Closed the clipboard." << "\n";
-
+ *m_text << "Closed the clipboard.\n";
+#else
+ wxLogError("Your version of wxWindows is compiled without clipboard support.");
#endif
}
void MyPanel::OnListBox( wxCommandEvent &event )
{
- m_text->WriteText( "ListBox selection string is: " );
- m_text->WriteText( event.GetString() );
- m_text->WriteText( "\n" );
+ m_text->AppendText( "ListBox selection string is: " );
+ m_text->AppendText( event.GetString() );
+ m_text->AppendText( "\n" );
}
void MyPanel::OnListBoxDoubleClick( wxCommandEvent &event )
{
- m_text->WriteText( "ListBox double click string is: " );
- m_text->WriteText( event.GetString() );
- m_text->WriteText( "\n" );
+ m_text->AppendText( "ListBox double click string is: " );
+ m_text->AppendText( event.GetString() );
+ m_text->AppendText( "\n" );
}
void MyPanel::OnListBoxButtons( wxCommandEvent &event )
{
case ID_LISTBOX_ENABLE:
{
- m_text->WriteText("Checkbox clicked.\n");
+ m_text->AppendText("Checkbox clicked.\n");
wxCheckBox *cb = (wxCheckBox*)event.GetEventObject();
+#if wxUSE_TOOLTIPS
if (event.GetInt())
cb->SetToolTip( "Click to enable listbox" );
else
cb->SetToolTip( "Click to disable listbox" );
+#endif
m_listbox->Enable( event.GetInt() == 0 );
break;
}
void MyPanel::OnChoice( wxCommandEvent &event )
{
- m_text->WriteText( "Choice selection string is: " );
- m_text->WriteText( event.GetString() );
- m_text->WriteText( "\n" );
+ m_text->AppendText( "Choice selection string is: " );
+ m_text->AppendText( event.GetString() );
+ m_text->AppendText( "\n" );
}
void MyPanel::OnChoiceButtons( wxCommandEvent &event )
void MyPanel::OnCombo( wxCommandEvent &event )
{
- m_text->WriteText( "ComboBox selection string is: " );
- m_text->WriteText( event.GetString() );
- m_text->WriteText( "\n" );
+ m_text->AppendText( "ComboBox selection string is: " );
+ m_text->AppendText( event.GetString() );
+ m_text->AppendText( "\n" );
}
void MyPanel::OnComboButtons( wxCommandEvent &event )
void MyPanel::OnRadio( wxCommandEvent &event )
{
- m_text->WriteText( "RadioBox selection string is: " );
- m_text->WriteText( event.GetString() );
- m_text->WriteText( "\n" );
+ m_text->AppendText( "RadioBox selection string is: " );
+ m_text->AppendText( event.GetString() );
+ m_text->AppendText( "\n" );
}
void MyPanel::OnRadioButtons( wxCommandEvent &event )
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(MINIMAL_QUIT, MyFrame::OnQuit)
EVT_MENU(MINIMAL_ABOUT, MyFrame::OnAbout)
+ EVT_SIZE(MyFrame::OnSize)
EVT_IDLE(MyFrame::OnIdle)
END_EVENT_TABLE()
MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
: wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h))
{
- CreateStatusBar();
+ CreateStatusBar(2);
(void)new MyPanel( this, 10, 10, 300, 100 );
}
dialog.ShowModal();
}
+void MyFrame::OnSize( wxSizeEvent& event )
+{
+ wxString msg;
+ msg.Printf("%dx%d", event.GetSize().x, event.GetSize().y);
+ SetStatusText(msg, 1);
+
+ event.Skip();
+}
+
void MyFrame::OnIdle( wxIdleEvent& WXUNUSED(event) )
{
// track the window which has the focus in the status bar
SetStatusText(msg);
}
-}
\ No newline at end of file
+}