added code to test UI updating of menu items in MDI apps

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-07-24 13:36:22 +00:00
parent 3ab6fcee36
commit c9f856af67
2 changed files with 41 additions and 0 deletions

View File

@@ -85,6 +85,11 @@ BEGIN_EVENT_TABLE(MyChild, wxMDIChildFrame)
EVT_MENU(MDI_CHANGE_POSITION, MyChild::OnChangePosition)
EVT_MENU(MDI_CHANGE_SIZE, MyChild::OnChangeSize)
#if wxUSE_CLIPBOARD
EVT_MENU(wxID_PASTE, MyChild::OnPaste)
EVT_UPDATE_UI(wxID_PASTE, MyChild::OnUpdatePaste)
#endif // wxUSE_CLIPBOARD
EVT_SIZE(MyChild::OnSize)
EVT_MOVE(MyChild::OnMove)
@@ -251,6 +256,10 @@ void MyFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) )
option_menu->AppendSeparator();
option_menu->Append(MDI_CHANGE_POSITION, _T("Move frame\tCtrl-M"));
option_menu->Append(MDI_CHANGE_SIZE, _T("Resize frame\tCtrl-S"));
#if wxUSE_CLIPBOARD
option_menu->AppendSeparator();
option_menu->Append(wxID_PASTE, _T("Copy text from clipboard\tCtrl-V"));
#endif // wxUSE_CLIPBOARD
wxMenu *help_menu = new wxMenu;
help_menu->Append(MDI_ABOUT, _T("&About"));
@@ -367,6 +376,9 @@ MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
// Define the repainting behaviour
void MyCanvas::OnDraw(wxDC& dc)
{
if ( !m_text.empty() )
dc.DrawText(m_text, 10, 10);
dc.SetFont(*wxSWISS_FONT);
dc.SetPen(*wxGREEN_PEN);
dc.DrawLine(0, 0, 200, 200);
@@ -521,3 +533,23 @@ void MyChild::OnClose(wxCloseEvent& event)
event.Skip();
}
#if wxUSE_CLIPBOARD
#include "wx/clipbrd.h"
void MyChild::OnPaste(wxCommandEvent& WXUNUSED(event))
{
wxClipboardLocker lock;
wxTextDataObject data;
canvas->SetText(wxTheClipboard->GetData(data) ? data.GetText()
: _T("No text on clipboard"));
}
void MyChild::OnUpdatePaste(wxUpdateUIEvent& event)
{
wxClipboardLocker lock;
event.Enable( wxTheClipboard->IsSupported(wxDF_TEXT) );
}
#endif // wxUSE_CLIPBOARD

View File

@@ -28,7 +28,11 @@ public:
void OnEvent(wxMouseEvent& event);
void SetText(const wxString& text) { m_text = text; Refresh(); }
private:
wxString m_text;
bool m_dirty;
DECLARE_EVENT_TABLE()
@@ -73,6 +77,11 @@ public:
void OnMove(wxMoveEvent& event);
void OnClose(wxCloseEvent& event);
#if wxUSE_CLIPBOARD
void OnPaste(wxCommandEvent& event);
void OnUpdatePaste(wxUpdateUIEvent& event);
#endif // wxUSE_CLIPBOARD
DECLARE_EVENT_TABLE()
};