The DND sample shows both clipboard and drag'n'drop functionality,

as such it can work with just wxUSE_CLIPBOARD.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26001 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Mattia Barbon 2004-02-29 15:14:24 +00:00
parent 6b707fc394
commit 08938fe1b5
2 changed files with 29 additions and 6 deletions

View File

@ -5021,7 +5021,6 @@ if test "$wxUSE_GUI" = "yes"; then
fi
dnl ---------------------------------------------------------------------------
dnl String stuff
dnl ---------------------------------------------------------------------------
@ -5221,11 +5220,14 @@ if test "$wxUSE_DRAG_AND_DROP" = "yes" ; then
if test "$wxUSE_DRAG_AND_DROP" = "yes"; then
AC_DEFINE(wxUSE_DRAG_AND_DROP)
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dnd"
fi
fi
if test "$wxUSE_DRAG_AND_DROP" = "yes" -o "$wxUSE_CLIPBOARD" = "yes"; then
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dnd"
fi
if test "$wxUSE_SPLINES" = "yes" ; then
AC_DEFINE(wxUSE_SPLINES)
fi

View File

@ -29,6 +29,7 @@
#include "wx/clipbrd.h"
#include "wx/colordlg.h"
#include "wx/sizer.h"
#include "wx/dataobj.h"
#if wxUSE_METAFILES
#include "wx/metafile.h"
@ -122,7 +123,7 @@ public:
IMPLEMENT_APP(DnDApp);
#if wxUSE_DRAG_AND_DROP
#if wxUSE_DRAG_AND_DROP || wxUSE_CLIPBOARD
// ----------------------------------------------------------------------------
// Define canvas class to show a bitmap
@ -267,6 +268,8 @@ private:
// shapes, each one with its own colour and position
// ----------------------------------------------------------------------------
#if wxUSE_DRAG_AND_DROP
class DnDShape
{
public:
@ -760,6 +763,8 @@ private:
DnDShapeFrame *m_frame;
};
#endif // wxUSE_DRAG_AND_DROP
// ----------------------------------------------------------------------------
// functions prototypes
// ----------------------------------------------------------------------------
@ -827,6 +832,8 @@ BEGIN_EVENT_TABLE(DnDFrame, wxFrame)
EVT_SIZE( DnDFrame::OnSize)
END_EVENT_TABLE()
#if wxUSE_DRAG_AND_DROP
BEGIN_EVENT_TABLE(DnDShapeFrame, wxFrame)
EVT_MENU(Menu_Shape_New, DnDShapeFrame::OnNewShape)
EVT_MENU(Menu_Shape_Edit, DnDShapeFrame::OnEditShape)
@ -847,6 +854,8 @@ BEGIN_EVENT_TABLE(DnDShapeDialog, wxDialog)
EVT_BUTTON(Button_Colour, DnDShapeDialog::OnColour)
END_EVENT_TABLE()
#endif // wxUSE_DRAG_AND_DROP
BEGIN_EVENT_TABLE(DnDCanvasBitmap, wxScrolledWindow)
EVT_PAINT(DnDCanvasBitmap::OnPaint)
END_EVENT_TABLE()
@ -866,7 +875,7 @@ END_EVENT_TABLE()
// `Main program' equivalent, creating windows and returning main app frame
bool DnDApp::OnInit()
{
#if wxUSE_DRAG_AND_DROP
#if wxUSE_DRAG_AND_DROP || wxUSE_CLIPBOARD
// switch on trace messages
#if defined(__WXGTK__)
wxLog::AddTraceMask(_T("clipboard"));
@ -899,7 +908,7 @@ bool DnDApp::OnInit()
#endif // wxUSE_DRAG_AND_DROP
}
#if wxUSE_DRAG_AND_DROP
#if wxUSE_DRAG_AND_DROP || wxUSE_CLIPBOARD
DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h)
: wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h)),
@ -966,10 +975,12 @@ DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h)
m_pLog = new wxLogTextCtrl(m_ctrlLog);
m_pLogPrev = wxLog::SetActiveTarget(m_pLog);
#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));
m_ctrlLog->SetDropTarget(new URLDropTarget);
#endif // wxUSE_DRAG_AND_DROP
wxBoxSizer *m_sizer_top = new wxBoxSizer( wxHORIZONTAL );
m_sizer_top->Add(m_ctrlFile, 1, wxEXPAND );
@ -1042,13 +1053,16 @@ void DnDFrame::OnUpdateUIPasteBitmap(wxUpdateUIEvent& event)
void DnDFrame::OnNewFrame(wxCommandEvent& WXUNUSED(event))
{
#if wxUSE_DRAG_AND_DROP
(new DnDShapeFrame(this))->Show(true);
wxLogStatus(this, wxT("Double click the new frame to select a shape for it"));
#endif // wxUSE_DRAG_AND_DROP
}
void DnDFrame::OnDrag(wxCommandEvent& WXUNUSED(event))
{
#if wxUSE_DRAG_AND_DROP
wxString strText = wxGetTextFromUser
(
_T("After you enter text in this dialog, press any mouse\n")
@ -1059,6 +1073,7 @@ void DnDFrame::OnDrag(wxCommandEvent& WXUNUSED(event))
);
m_strText = strText;
#endif // wxUSE_DRAG_AND_DROP
}
void DnDFrame::OnDragMoveByDefault(wxCommandEvent& event)
@ -1118,6 +1133,7 @@ void DnDFrame::OnLogClear(wxCommandEvent& /* event */ )
void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
{
#if wxUSE_DRAG_AND_DROP
if ( !m_strText.IsEmpty() )
{
// start drag operation
@ -1151,6 +1167,7 @@ void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
SetStatusText(wxString(_T("Drag result: ")) + pc);
}
#endif // wxUSE_DRAG_AND_DROP
}
void DnDFrame::OnRightDown(wxMouseEvent &event )
@ -1425,6 +1442,8 @@ void DnDFrame::OnPaste(wxCommandEvent& WXUNUSED(event))
wxTheClipboard->Close();
}
#if wxUSE_DRAG_AND_DROP
// ----------------------------------------------------------------------------
// Notifications called by the base class
// ----------------------------------------------------------------------------
@ -1873,6 +1892,8 @@ void DnDShapeDataObject::CreateBitmap() const
self->m_hasBitmap = true;
}
#endif // wxUSE_DRAG_AND_DROP
// ----------------------------------------------------------------------------
// global functions
// ----------------------------------------------------------------------------
@ -1911,4 +1932,4 @@ static void ShowMetaFile(const wxMetaFile& metafile)
#endif // wxUSE_METAFILES
#endif // wxUSE_DRAG_AND_DROP
#endif // wxUSE_DRAG_AND_DROP || wxUSE_CLIPBOARD