virtual bool OnInit();
};
-IMPLEMENT_APP(DnDApp);
+IMPLEMENT_APP(DnDApp)
#if wxUSE_DRAG_AND_DROP || wxUSE_CLIPBOARD
class DnDFrame : public wxFrame
{
public:
- DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h);
+ DnDFrame(wxFrame *frame, const wxChar *title, int x, int y, int w, int h);
virtual ~DnDFrame();
void OnPaint(wxPaintEvent& event);
void OnCopyFiles(wxCommandEvent& event);
+ void OnUsePrimary(wxCommandEvent& event);
+
void OnLeftDown(wxMouseEvent& event);
void OnRightDown(wxMouseEvent& event);
Menu_PasteBitmap,
Menu_PasteMFile,
Menu_CopyFiles,
+ Menu_UsePrimary,
Menu_Shape_New = 500,
Menu_Shape_Edit,
Menu_Shape_Clear,
EVT_MENU(Menu_PasteMFile, DnDFrame::OnPasteMetafile)
#endif // wxUSE_METAFILE
EVT_MENU(Menu_CopyFiles, DnDFrame::OnCopyFiles)
+ EVT_MENU(Menu_UsePrimary, DnDFrame::OnUsePrimary)
EVT_UPDATE_UI(Menu_DragMoveDef, DnDFrame::OnUpdateUIMoveByDefault)
// `Main program' equivalent, creating windows and returning main app frame
bool DnDApp::OnInit()
{
+ if ( !wxApp::OnInit() )
+ return false;
+
#if wxUSE_DRAG_AND_DROP || wxUSE_CLIPBOARD
// switch on trace messages
#if wxUSE_LOG
wxImage::AddHandler( new wxPNGHandler );
#endif
- // under X we usually want to use the primary selection by default (which
- // is shared with other apps)
- wxTheClipboard->UsePrimarySelection();
-
// create the main frame window
DnDFrame *frame = new DnDFrame((wxFrame *) NULL,
_T("Drag-and-Drop/Clipboard wxWidgets Sample"),
#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, const wxChar *title, int x, int y, int w, int h)
: wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h)),
m_strText(_T("wxWidgets drag & drop works :-)"))
#endif // wxUSE_METAFILE
clip_menu->AppendSeparator();
clip_menu->Append(Menu_CopyFiles, _T("Copy &files\tCtrl-F"));
+ clip_menu->AppendSeparator();
+ clip_menu->AppendCheckItem(Menu_UsePrimary, _T("Use &primary selection\tCtrl-P"));
wxMenuBar *menu_bar = new wxMenuBar;
menu_bar->Append(file_menu, _T("&File"));
wxLB_HSCROLL | wxLB_ALWAYS_SB );
#if wxUSE_LOG
- m_ctrlLog = new wxTextCtrl(this, wxID_ANY, _T(""), wxDefaultPosition, wxDefaultSize,
+ m_ctrlLog = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
wxTE_MULTILINE | wxTE_READONLY |
wxSUNKEN_BORDER );
void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
{
#if wxUSE_DRAG_AND_DROP
- if ( !m_strText.IsEmpty() )
+ if ( !m_strText.empty() )
{
// start drag operation
wxTextDataObject textData(m_strText);
-/*
- wxFileDataObject textData;
- textData.AddFile( "/file1.txt" );
- textData.AddFile( "/file2.txt" );
-*/
wxDropSource source(textData, this,
wxDROP_ICON(dnd_copy),
wxDROP_ICON(dnd_move),
#endif // wxUSE_LOG
}
+void DnDFrame::OnUsePrimary(wxCommandEvent& event)
+{
+ const bool usePrimary = event.IsChecked();
+ wxTheClipboard->UsePrimarySelection(usePrimary);
+
+ wxLogStatus(_T("Now using %s selection"), usePrimary ? _T("primary")
+ : _T("clipboard"));
+}
+
// ---------------------------------------------------------------------------
// bitmap clipboard
// ---------------------------------------------------------------------------
{
// PNG support is not always compiled in under Windows, so use BMP there
#if wxUSE_LIBPNG
- wxFileDialog dialog(this, _T("Open a PNG file"), _T(""), _T(""), _T("PNG files (*.png)|*.png"), 0);
+ wxFileDialog dialog(this, _T("Open a PNG file"), wxEmptyString, wxEmptyString, _T("PNG files (*.png)|*.png"), 0);
#else
- wxFileDialog dialog(this, _T("Open a BMP file"), _T(""), _T(""), _T("BMP files (*.bmp)|*.bmp"), 0);
+ wxFileDialog dialog(this, _T("Open a BMP file"), wxEmptyString, wxEmptyString, _T("BMP files (*.bmp)|*.bmp"), 0);
#endif
if (dialog.ShowModal() != wxID_OK)
return;
}
- if (dialog.GetPath().IsEmpty())
+ if (dialog.GetPath().empty())
{
wxLogMessage( _T("Returned empty string.") );
return;
void DnDFrame::OnCopyFiles(wxCommandEvent& WXUNUSED(event))
{
#ifdef __WXMSW__
- wxFileDialog dialog(this, _T("Select a file to copy"), _T(""), _T(""),
+ wxFileDialog dialog(this, _T("Select a file to copy"), wxEmptyString, wxEmptyString,
_T("All files (*.*)|*.*"), 0);
wxArrayString filenames;
else
{
wxLogStatus(this, wxT("%d file%s copied to the clipboard"),
- count, count == 1 ? wxT("") : wxT("s"));
+ count, count == 1 ? wxEmptyString : wxEmptyString);
}
}
}
DnDShapeDialog::DnDShapeDialog(wxFrame *parent, DnDShape *shape)
:wxDialog( parent, 6001, wxT("Choose Shape"), wxPoint( 10, 10 ),
wxSize( 40, 40 ),
- wxRAISED_BORDER|wxCAPTION|wxTHICK_FRAME|wxSYSTEM_MENU )
+ wxDEFAULT_DIALOG_STYLE | wxRAISED_BORDER | wxRESIZE_BORDER )
{
m_shape = shape;
wxBoxSizer* topSizer = new wxBoxSizer( wxVERTICAL );