]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/dnd/dnd.cpp
Compilation fixes
[wxWidgets.git] / samples / dnd / dnd.cpp
index 9933d0d3bca9d22c535258fd033b0b928ad6d39b..9b6bd0cec93e71e8893ca15399aa3c61b4901e59 100644 (file)
@@ -4,9 +4,9 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     04/01/98
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:
+// RCS-ID:      $Id$
 // Copyright:
 // Copyright:
-// Licence:    wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/wxprec.h"
 /////////////////////////////////////////////////////////////////////////////
 
 #include "wx/wxprec.h"
@@ -59,7 +59,7 @@ private:
 // Define a new application type
 // ----------------------------------------------------------------------------
 class DnDApp : public wxApp
 // Define a new application type
 // ----------------------------------------------------------------------------
 class DnDApp : public wxApp
-{ 
+{
 public:
   bool OnInit();
 };
 public:
   bool OnInit();
 };
@@ -70,7 +70,7 @@ IMPLEMENT_APP(DnDApp);
 // Define a new frame type
 // ----------------------------------------------------------------------------
 class DnDFrame : public wxFrame
 // Define a new frame type
 // ----------------------------------------------------------------------------
 class DnDFrame : public wxFrame
-{ 
+{
 public:
   DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
  ~DnDFrame();
 public:
   DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
  ~DnDFrame();
@@ -86,7 +86,7 @@ public:
   void OnRightDown(wxMouseEvent& event);
 
   bool OnClose();
   void OnRightDown(wxMouseEvent& event);
 
   bool OnClose();
-  
+
   DECLARE_EVENT_TABLE()
 
 private:
   DECLARE_EVENT_TABLE()
 
 private:
@@ -117,15 +117,16 @@ BEGIN_EVENT_TABLE(DnDFrame, wxFrame)
   EVT_MENU(Menu_Drag,  DnDFrame::OnDrag)
   EVT_MENU(Menu_Help,  DnDFrame::OnHelp)
   EVT_MENU(Menu_Clear, DnDFrame::OnLogClear)
   EVT_MENU(Menu_Drag,  DnDFrame::OnDrag)
   EVT_MENU(Menu_Help,  DnDFrame::OnHelp)
   EVT_MENU(Menu_Clear, DnDFrame::OnLogClear)
-  EVT_LEFT_DOWN(OnLeftDown)
-  EVT_RIGHT_DOWN(OnRightDown)
+  EVT_LEFT_DOWN(       DnDFrame::OnLeftDown)
+  EVT_RIGHT_DOWN(      DnDFrame::OnRightDown)
+  EVT_PAINT(           DnDFrame::OnPaint)
 END_EVENT_TABLE()
 
 // `Main program' equivalent, creating windows and returning main app frame
 END_EVENT_TABLE()
 
 // `Main program' equivalent, creating windows and returning main app frame
-bool DnDApp::OnInit(void)
+bool DnDApp::OnInit()
 {
   // create the main frame window
 {
   // create the main frame window
-  DnDFrame *frame = new DnDFrame((wxFrame  *) NULL, "Drag & Drop wxWindows App", 
+  DnDFrame *frame = new DnDFrame((wxFrame  *) NULL, "Drag & Drop wxWindows App",
                                  50, 50, 450, 340);
 
   // activate it
                                  50, 50, 450, 340);
 
   // activate it
@@ -142,14 +143,10 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
 
 {
 
 
 {
 
-#ifdef __WXMSW__
   // frame icon and status bar
   // frame icon and status bar
-  SetIcon(wxIcon("mondrian"));
-#else
-  SetIcon(wxIcon(mondrian_xpm));
-#endif  
-  
-  const int widths[] = { -1 };
+  SetIcon(wxICON(mondrian));
+
+//  const int widths[] = { -1 };
   CreateStatusBar();
 
   // construct menu
   CreateStatusBar();
 
   // construct menu
@@ -172,7 +169,7 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
   menu_bar->Append(help_menu, "&Help");
 
   SetMenuBar(menu_bar);
   menu_bar->Append(help_menu, "&Help");
 
   SetMenuBar(menu_bar);
-  
+
   // make a panel with 3 subwindows
   wxPoint pos(0, 0);
   wxSize  size(400, 200);
   // make a panel with 3 subwindows
   wxPoint pos(0, 0);
   wxSize  size(400, 200);
@@ -182,8 +179,8 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
   m_ctrlFile  = new wxListBox(this, -1, pos, size, 1, &strFile, wxLB_HSCROLL);
   m_ctrlText  = new wxListBox(this, -1, pos, size, 1, &strText, wxLB_HSCROLL);
 
   m_ctrlFile  = new wxListBox(this, -1, pos, size, 1, &strFile, wxLB_HSCROLL);
   m_ctrlText  = new wxListBox(this, -1, pos, size, 1, &strText, wxLB_HSCROLL);
 
-  m_ctrlLog   = new wxTextCtrl(this, -1, "", pos, size, 
-                               wxTE_MULTILINE | wxTE_READONLY | 
+  m_ctrlLog   = new wxTextCtrl(this, -1, "", pos, size,
+                               wxTE_MULTILINE | wxTE_READONLY |
                                wxSUNKEN_BORDER| wxHSCROLL);
 
   // redirect log messages to the text window (don't forget to delete it!)
                                wxSUNKEN_BORDER| wxHSCROLL);
 
   // redirect log messages to the text window (don't forget to delete it!)
@@ -192,14 +189,14 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
 
   // associate drop targets with 2 text controls
   m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile));
 
   // associate drop targets with 2 text controls
   m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile));
-  //m_ctrlText->SetDropTarget(new DnDText(m_ctrlText));  
+  m_ctrlText->SetDropTarget(new DnDText(m_ctrlText));
 
   wxLayoutConstraints *c;
 
   // Top-left listbox
   c = new wxLayoutConstraints;
 
   wxLayoutConstraints *c;
 
   // Top-left listbox
   c = new wxLayoutConstraints;
-  c->left.SameAs               (this, wxLeft);
-  c->top.SameAs                        (this, wxTop);
+  c->left.SameAs(this, wxLeft);
+  c->top.SameAs(this, wxTop);
   c->right.PercentOf(this, wxRight, 50);
   c->height.PercentOf(this, wxHeight, 40);
   m_ctrlFile->SetConstraints(c);
   c->right.PercentOf(this, wxRight, 50);
   c->height.PercentOf(this, wxHeight, 40);
   m_ctrlFile->SetConstraints(c);
@@ -218,7 +215,6 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
   c->right.SameAs   (this, wxRight);
   c->height.PercentOf(this, wxHeight, 40);
   c->top.SameAs(m_ctrlText, wxBottom);
   c->right.SameAs   (this, wxRight);
   c->height.PercentOf(this, wxHeight, 40);
   c->top.SameAs(m_ctrlText, wxBottom);
-
   m_ctrlLog->SetConstraints(c);
 
   SetAutoLayout(TRUE);
   m_ctrlLog->SetConstraints(c);
 
   SetAutoLayout(TRUE);
@@ -229,6 +225,17 @@ void DnDFrame::OnQuit(wxCommandEvent& /* event */)
   Close(TRUE);
 }
 
   Close(TRUE);
 }
 
+void DnDFrame::OnPaint(wxPaintEvent& /*event*/)
+{
+  int w = 0;
+  int h = 0;
+  GetClientSize( &w, &h );
+
+  wxPaintDC dc(this);
+  dc.SetFont( wxFont( 24, wxDECORATIVE, wxNORMAL, wxNORMAL ) );
+  dc.DrawText( "Drag text from here!", 20, h-20 );
+}
+
 void DnDFrame::OnDrag(wxCommandEvent& /* event */)
 {
   wxString strText = wxGetTextFromUser
 void DnDFrame::OnDrag(wxCommandEvent& /* event */)
 {
   wxString strText = wxGetTextFromUser
@@ -245,7 +252,7 @@ void DnDFrame::OnDrag(wxCommandEvent& /* event */)
 
 void DnDFrame::OnAbout(wxCommandEvent& /* event */)
 {
 
 void DnDFrame::OnAbout(wxCommandEvent& /* event */)
 {
-  wxMessageDialog dialog(this, 
+  wxMessageDialog dialog(this,
                          "Drag-&-Drop Demo\n"
                          "Please see \"Help|Help...\" for details\n"
                          "Copyright (c) 1998 Vadim Zeitlin",
                          "Drag-&-Drop Demo\n"
                          "Please see \"Help|Help...\" for details\n"
                          "Copyright (c) 1998 Vadim Zeitlin",
@@ -256,22 +263,22 @@ void DnDFrame::OnAbout(wxCommandEvent& /* event */)
 
 void DnDFrame::OnHelp(wxCommandEvent& /* event */)
 {
 
 void DnDFrame::OnHelp(wxCommandEvent& /* event */)
 {
-  wxMessageDialog dialog(this, 
+  wxMessageDialog dialog(this,
 "This small program demonstrates drag & drop support in wxWindows. The program window\n"
 "consists of 3 parts: the bottom pane is for debug messages, so that you can see what's\n"
 "This small program demonstrates drag & drop support in wxWindows. The program window\n"
 "consists of 3 parts: the bottom pane is for debug messages, so that you can see what's\n"
-"going on inside. The top part is split into 2 listboxes, the left one accepts files\n" 
+"going on inside. The top part is split into 2 listboxes, the left one accepts files\n"
 "and the right one accepts text.\n"
 "\n"
 "and the right one accepts text.\n"
 "\n"
-"To test wxDropTarget: open wordpad (write.exe), select some text in it and drag it to\n" 
-"the right listbox (you'll notice the usual visual feedback, i.e. the cursor will change).\n" 
+"To test wxDropTarget: open wordpad (write.exe), select some text in it and drag it to\n"
+"the right listbox (you'll notice the usual visual feedback, i.e. the cursor will change).\n"
 "Also, try dragging some files (you can select several at once) from Windows Explorer (or \n"
 "File Manager) to the left pane. Hold down Ctrl/Shift keys when you drop text (doesn't \n"
 "work with files) and see what changes.\n"
 "\n"
 "Also, try dragging some files (you can select several at once) from Windows Explorer (or \n"
 "File Manager) to the left pane. Hold down Ctrl/Shift keys when you drop text (doesn't \n"
 "work with files) and see what changes.\n"
 "\n"
-"To test wxDropSource: just press any mouse button on the empty zone of the window and drag\n" 
+"To test wxDropSource: just press any mouse button on the empty zone of the window and drag\n"
 "it to wordpad or any other droptarget accepting text (and of course you can just drag it\n"
 "to the right pane). Due to a lot of trace messages, the cursor might take some time to \n"
 "it to wordpad or any other droptarget accepting text (and of course you can just drag it\n"
 "to the right pane). Due to a lot of trace messages, the cursor might take some time to \n"
-"change, don't release the mouse button until it does. You can change the string being\n" 
+"change, don't release the mouse button until it does. You can change the string being\n"
 "dragged in in \"File|Test drag...\" dialog.\n"
 "\n"
 "\n"
 "dragged in in \"File|Test drag...\" dialog.\n"
 "\n"
 "\n"
@@ -287,26 +294,26 @@ void DnDFrame::OnLogClear(wxCommandEvent& /* event */ )
   m_ctrlLog->Clear();
 }
 
   m_ctrlLog->Clear();
 }
 
-bool DnDFrame::OnClose() 
-{ 
-  return TRUE; 
+bool DnDFrame::OnClose()
+{
+  return TRUE;
 }
 
 void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
 {
   if ( !m_strText.IsEmpty() ) {
     // start drag operation
 }
 
 void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
 {
   if ( !m_strText.IsEmpty() ) {
     // start drag operation
-    
+
     wxTextDataObject data(m_strText);
     wxDropSource dragSource(data, this);
     const char *pc;
 
     switch ( dragSource.DoDragDrop(TRUE) ) {
     wxTextDataObject data(m_strText);
     wxDropSource dragSource(data, this);
     const char *pc;
 
     switch ( dragSource.DoDragDrop(TRUE) ) {
-      case wxDropSource::Error:   pc = "Error!";    break;
-      case wxDropSource::None:    pc = "Nothing";   break;
-      case wxDropSource::Copy:    pc = "Copied";    break;
-      case wxDropSource::Move:    pc = "Moved";     break;
-      case wxDropSource::Cancel:  pc = "Cancelled"; break;
+      case wxDragError:   pc = "Error!";    break;
+      case wxDragNone:    pc = "Nothing";   break;
+      case wxDragCopy:    pc = "Copied";    break;
+      case wxDragMove:    pc = "Moved";     break;
+      case wxDragCancel:  pc = "Cancelled"; break;
       default:                    pc = "Huh?";      break;
     }
 
       default:                    pc = "Huh?";      break;
     }
 
@@ -317,11 +324,11 @@ void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
 void DnDFrame::OnRightDown(wxMouseEvent &event )
 {
   wxMenu *menu = new wxMenu;
 void DnDFrame::OnRightDown(wxMouseEvent &event )
 {
   wxMenu *menu = new wxMenu;
-  
+
   menu->Append(Menu_Drag, "&Test drag...");
   menu->Append(Menu_About, "&About");
   menu->Append(Menu_Quit, "E&xit");
   menu->Append(Menu_Drag, "&Test drag...");
   menu->Append(Menu_About, "&About");
   menu->Append(Menu_Quit, "E&xit");
-  
+
   PopupMenu( menu, event.GetX(), event.GetY() );
 }
 
   PopupMenu( menu, event.GetX(), event.GetY() );
 }
 
@@ -343,7 +350,7 @@ bool DnDText::OnDropText(long, long, const char *psz)
   return TRUE;
 }
 
   return TRUE;
 }
 
-bool DnDFile::OnDropFiles(long, long, size_t nFiles, 
+bool DnDFile::OnDropFiles(long, long, size_t nFiles,
                           const char * const aszFiles[])
 {
   wxString str;
                           const char * const aszFiles[])
 {
   wxString str;