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