X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be5a51fb592f3fa2ba38ac6cd1e488d6d806058c..213ceb3f0e7b88a09d756dd181f14ecb5bd44d57:/samples/dnd/dnd.cpp diff --git a/samples/dnd/dnd.cpp b/samples/dnd/dnd.cpp index 9ca61d3964..c2021527e6 100644 --- a/samples/dnd/dnd.cpp +++ b/samples/dnd/dnd.cpp @@ -37,11 +37,12 @@ #if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__) #include "mondrian.xpm" - +#if wxUSE_DRAG_AND_DROP #include "dnd_copy.xpm" #include "dnd_move.xpm" #include "dnd_none.xpm" #endif +#endif #if wxUSE_DRAG_AND_DROP @@ -219,7 +220,9 @@ public: void OnDragMoveAllow(wxCommandEvent& event); void OnNewFrame(wxCommandEvent& event); void OnHelp (wxCommandEvent& event); +#if wxUSE_LOG void OnLogClear(wxCommandEvent& event); +#endif // wxUSE_LOG void OnCopy(wxCommandEvent& event); void OnPaste(wxCommandEvent& event); @@ -247,10 +250,13 @@ private: // GUI controls wxListBox *m_ctrlFile, *m_ctrlText; + +#if wxUSE_LOG wxTextCtrl *m_ctrlLog; wxLog *m_pLog, *m_pLogPrev; +#endif // wxUSE_LOG // move the text by default (or copy)? bool m_moveByDefault; @@ -741,9 +747,18 @@ public: // override base class (pure) virtuals virtual wxDragResult OnEnter(wxCoord x, wxCoord y, wxDragResult def) - { m_frame->SetStatusText(_T("Mouse entered the frame")); return OnDragOver(x, y, def); } + { +#if wxUSE_STATUSBAR + m_frame->SetStatusText(_T("Mouse entered the frame")); +#endif // wxUSE_STATUSBAR + return OnDragOver(x, y, def); + } virtual void OnLeave() - { m_frame->SetStatusText(_T("Mouse left the frame")); } + { +#if wxUSE_STATUSBAR + m_frame->SetStatusText(_T("Mouse left the frame")); +#endif // wxUSE_STATUSBAR + } virtual wxDragResult OnData(wxCoord x, wxCoord y, wxDragResult def) { if ( !GetData() ) @@ -811,7 +826,9 @@ BEGIN_EVENT_TABLE(DnDFrame, wxFrame) EVT_MENU(Menu_DragMoveAllow,DnDFrame::OnDragMoveAllow) EVT_MENU(Menu_NewFrame, DnDFrame::OnNewFrame) EVT_MENU(Menu_Help, DnDFrame::OnHelp) +#if wxUSE_LOG EVT_MENU(Menu_Clear, DnDFrame::OnLogClear) +#endif // wxUSE_LOG EVT_MENU(Menu_Copy, DnDFrame::OnCopy) EVT_MENU(Menu_Paste, DnDFrame::OnPaste) EVT_MENU(Menu_CopyBitmap, DnDFrame::OnCopyBitmap) @@ -877,11 +894,13 @@ bool DnDApp::OnInit() { #if wxUSE_DRAG_AND_DROP || wxUSE_CLIPBOARD // switch on trace messages +#if wxUSE_LOG #if defined(__WXGTK__) wxLog::AddTraceMask(_T("clipboard")); #elif defined(__WXMSW__) wxLog::AddTraceMask(wxTRACE_OleCalls); #endif +#endif // wxUSE_LOG #if wxUSE_LIBPNG wxImage::AddHandler( new wxPNGHandler ); @@ -918,7 +937,9 @@ DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h) // frame icon and status bar SetIcon(wxICON(mondrian)); +#if wxUSE_STATUSBAR CreateStatusBar(); +#endif // wxUSE_STATUSBAR // construct menu wxMenu *file_menu = new wxMenu; @@ -930,8 +951,10 @@ DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h) file_menu->AppendSeparator(); file_menu->Append(Menu_Quit, _T("E&xit\tCtrl-Q")); +#if wxUSE_LOG wxMenu *log_menu = new wxMenu; log_menu->Append(Menu_Clear, _T("Clear\tCtrl-L")); +#endif // wxUSE_LOG wxMenu *help_menu = new wxMenu; help_menu->Append(Menu_Help, _T("&Help...")); @@ -953,7 +976,9 @@ DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h) wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(file_menu, _T("&File")); +#if wxUSE_LOG menu_bar->Append(log_menu, _T("&Log")); +#endif // wxUSE_LOG menu_bar->Append(clip_menu, _T("&Clipboard")); menu_bar->Append(help_menu, _T("&Help")); @@ -967,6 +992,7 @@ DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h) m_ctrlText = new wxListBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 1, &strText, wxLB_HSCROLL | wxLB_ALWAYS_SB ); +#if wxUSE_LOG m_ctrlLog = new wxTextCtrl(this, wxID_ANY, _T(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY | wxSUNKEN_BORDER ); @@ -974,12 +1000,15 @@ DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h) // redirect log messages to the text window m_pLog = new wxLogTextCtrl(m_ctrlLog); m_pLogPrev = wxLog::SetActiveTarget(m_pLog); +#endif // wxUSE_LOG #if wxUSE_DRAG_AND_DROP // associate drop targets with the controls m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile)); m_ctrlText->SetDropTarget(new DnDText(m_ctrlText)); +#if wxUSE_LOG m_ctrlLog->SetDropTarget(new URLDropTarget); +#endif // wxUSE_LOG #endif // wxUSE_DRAG_AND_DROP wxBoxSizer *m_sizer_top = new wxBoxSizer( wxHORIZONTAL ); @@ -988,7 +1017,10 @@ DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h) wxBoxSizer *m_sizer = new wxBoxSizer( wxVERTICAL ); m_sizer->Add(m_sizer_top, 1, wxEXPAND ); - m_sizer->Add(m_ctrlLog, 1, wxEXPAND | wxBOTTOM, 50); +#if wxUSE_LOG + m_sizer->Add(m_ctrlLog, 1, wxEXPAND); +#endif // wxUSE_LOG + m_sizer->Add(0,50); SetSizer( m_sizer ); m_sizer->SetSizeHints( this ); @@ -1124,12 +1156,14 @@ void DnDFrame::OnHelp(wxCommandEvent& /* event */) dialog.ShowModal(); } +#if wxUSE_LOG void DnDFrame::OnLogClear(wxCommandEvent& /* event */ ) { m_ctrlLog->Clear(); m_ctrlText->Clear(); m_ctrlFile->Clear(); } +#endif // wxUSE_LOG void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) ) { @@ -1154,8 +1188,11 @@ void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) ) else if ( m_moveAllow ) flags |= wxDrag_AllowMove; + wxDragResult result = source.DoDragDrop(flags); + +#if wxUSE_STATUSBAR const wxChar *pc; - switch ( source.DoDragDrop(flags) ) + switch ( result ) { case wxDragError: pc = _T("Error!"); break; case wxDragNone: pc = _T("Nothing"); break; @@ -1166,6 +1203,9 @@ void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) ) } SetStatusText(wxString(_T("Drag result: ")) + pc); +#else + wxUnusedVar(result); +#endif // wxUSE_STATUSBAR } #endif // wxUSE_DRAG_AND_DROP } @@ -1183,10 +1223,12 @@ void DnDFrame::OnRightDown(wxMouseEvent &event ) DnDFrame::~DnDFrame() { +#if wxUSE_LOG if ( m_pLog != NULL ) { if ( wxLog::SetActiveTarget(m_pLogPrev) == m_pLog ) delete m_pLog; } +#endif // wxUSE_LOG } // --------------------------------------------------------------------------- @@ -1621,10 +1663,11 @@ void DnDShapeDialog::OnColour(wxCommandEvent& WXUNUSED(event)) DnDShapeFrame *DnDShapeFrame::ms_lastDropTarget = NULL; DnDShapeFrame::DnDShapeFrame(wxFrame *parent) - : wxFrame(parent, wxID_ANY, _T("Shape Frame"), - wxDefaultPosition, wxSize(250, 150)) + : wxFrame(parent, wxID_ANY, _T("Shape Frame")) { +#if wxUSE_STATUSBAR CreateStatusBar(); +#endif // wxUSE_STATUSBAR wxMenu *menuShape = new wxMenu; menuShape->Append(Menu_Shape_New, _T("&New default shape\tCtrl-S")); @@ -1642,7 +1685,9 @@ DnDShapeFrame::DnDShapeFrame(wxFrame *parent) SetMenuBar(menubar); +#if wxUSE_STATUSBAR SetStatusText(_T("Press Ctrl-S to create a new shape")); +#endif // wxUSE_STATUSBAR SetDropTarget(new DnDShapeDropTarget(this)); @@ -1688,7 +1733,9 @@ void DnDShapeFrame::OnDrag(wxMouseEvent& event) break; case wxDragNone: +#if wxUSE_STATUSBAR SetStatusText(_T("Nothing happened")); +#endif // wxUSE_STATUSBAR break; case wxDragCopy: @@ -1705,13 +1752,17 @@ void DnDShapeFrame::OnDrag(wxMouseEvent& event) break; case wxDragCancel: +#if wxUSE_STATUSBAR SetStatusText(_T("Drag and drop operation cancelled")); +#endif // wxUSE_STATUSBAR break; } if ( pc ) { +#if wxUSE_STATUSBAR SetStatusText(wxString(_T("Shape successfully ")) + pc); +#endif // wxUSE_STATUSBAR } //else: status text already set } @@ -1722,9 +1773,11 @@ void DnDShapeFrame::OnDrop(wxCoord x, wxCoord y, DnDShape *shape) wxPoint pt(x, y); +#if wxUSE_STATUSBAR wxString s; s.Printf(wxT("Shape dropped at (%d, %d)"), pt.x, pt.y); SetStatusText(s); +#endif // wxUSE_STATUSBAR shape->Move(pt); SetShape(shape); @@ -1737,10 +1790,12 @@ void DnDShapeFrame::OnEditShape(wxCommandEvent& WXUNUSED(event)) { SetShape(dlg.GetShape()); +#if wxUSE_STATUSBAR if ( m_shape ) { SetStatusText(_T("You can now drag the shape to another frame")); } +#endif // wxUSE_STATUSBAR } } @@ -1748,7 +1803,9 @@ void DnDShapeFrame::OnNewShape(wxCommandEvent& WXUNUSED(event)) { SetShape(new DnDEllipticShape(wxPoint(10, 10), wxSize(80, 60), *wxRED)); +#if wxUSE_STATUSBAR SetStatusText(_T("You can now drag the shape to another frame")); +#endif // wxUSE_STATUSBAR } void DnDShapeFrame::OnClearShape(wxCommandEvent& WXUNUSED(event)) @@ -1901,13 +1958,17 @@ void DnDShapeDataObject::CreateBitmap() const static void ShowBitmap(const wxBitmap& bitmap) { wxFrame *frame = new wxFrame(NULL, wxID_ANY, _T("Bitmap view")); +#if wxUSE_STATUSBAR frame->CreateStatusBar(); +#endif // wxUSE_STATUSBAR DnDCanvasBitmap *canvas = new DnDCanvasBitmap(frame); canvas->SetBitmap(bitmap); int w = bitmap.GetWidth(), h = bitmap.GetHeight(); +#if wxUSE_STATUSBAR frame->SetStatusText(wxString::Format(_T("%dx%d"), w, h)); +#endif // wxUSE_STATUSBAR frame->SetClientSize(w > 100 ? 100 : w, h > 100 ? 100 : h); frame->Show(true);