]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/dnd/dnd.cpp
(harmless) eVC4 warning fix
[wxWidgets.git] / samples / dnd / dnd.cpp
index 203fe373037bdc28ae8adf85826af058f441f9d1..2cc3a70155e4cc85adc03f2fe6b6e39963d60ae0 100644 (file)
@@ -36,7 +36,7 @@
 #endif // wxUSE_METAFILES
 
 #if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) || defined(__WXMAC__)
-    #include "mondrian.xpm"
+    #include "../sample.xpm"
 #if wxUSE_DRAG_AND_DROP
     #include "dnd_copy.xpm"
     #include "dnd_move.xpm"
@@ -220,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);
@@ -248,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;
@@ -340,10 +345,10 @@ protected:
 
     struct ShapeDump
     {
-        int x, y,       // position
-            w, h,       // size
-            r, g, b,    // colour
-            k;          // kind
+        wxCoord x, y,             // position
+                w, h;             // size
+        int k;                    // kind
+        unsigned char r, g, b;    // colour
     };
 
     wxPoint  m_pos;
@@ -742,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() )
@@ -812,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)
@@ -878,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 );
@@ -917,9 +935,11 @@ DnDFrame::DnDFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h)
 
 {
     // frame icon and status bar
-    SetIcon(wxICON(mondrian));
+    SetIcon(wxICON(sample));
 
+#if wxUSE_STATUSBAR
     CreateStatusBar();
+#endif // wxUSE_STATUSBAR
 
     // construct menu
     wxMenu *file_menu = new wxMenu;
@@ -931,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..."));
@@ -954,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"));
 
@@ -968,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 );
@@ -975,24 +1000,31 @@ 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 );
-    m_sizer_top->Add(m_ctrlFile, 1, wxEXPAND );
-    m_sizer_top->Add(m_ctrlText, 1, wxEXPAND );
+    wxBoxSizer *sizer_top = new wxBoxSizer( wxHORIZONTAL );
+    sizer_top->Add(m_ctrlFile, 1, wxEXPAND );
+    sizer_top->Add(m_ctrlText, 1, wxEXPAND );
 
-    wxBoxSizer *m_sizer = new wxBoxSizer( wxVERTICAL );
-    m_sizer->Add(m_sizer_top, 1, wxEXPAND );
-    m_sizer->Add(m_ctrlLog, 1, wxEXPAND | wxBOTTOM, 50);
+    wxBoxSizer *sizer = new wxBoxSizer( wxVERTICAL );
+    sizer->Add(sizer_top, 1, wxEXPAND );
+#if wxUSE_LOG
+    sizer->Add(m_ctrlLog, 2, wxEXPAND);
+    sizer->SetItemMinSize(m_ctrlLog, 450, 0);
+#endif // wxUSE_LOG
+    sizer->AddSpacer(50);
 
-    SetSizer( m_sizer );
-    m_sizer->SetSizeHints( this );
+    SetSizer(sizer);
+    sizer->SetSizeHints( this );
 
     // copy data by default but allow moving it as well
     m_moveByDefault = false;
@@ -1125,12 +1157,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) )
 {
@@ -1155,8 +1189,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;
@@ -1167,6 +1204,9 @@ void DnDFrame::OnLeftDown(wxMouseEvent &WXUNUSED(event) )
         }
 
         SetStatusText(wxString(_T("Drag result: ")) + pc);
+#else
+        wxUnusedVar(result);
+#endif // wxUSE_STATUSBAR
     }
 #endif // wxUSE_DRAG_AND_DROP
 }
@@ -1184,10 +1224,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
 }
 
 // ---------------------------------------------------------------------------
@@ -1604,7 +1646,7 @@ void DnDShapeDialog::OnColour(wxCommandEvent& WXUNUSED(event))
     data.SetChooseFull(true);
     for (int i = 0; i < 16; i++)
     {
-        wxColour colour(i*16, i*16, i*16);
+        wxColour colour((unsigned char)(i*16), (unsigned char)(i*16), (unsigned char)(i*16));
         data.SetCustomColour(i, colour);
     }
 
@@ -1622,10 +1664,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"));
@@ -1643,7 +1686,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));
 
@@ -1685,11 +1730,13 @@ void DnDShapeFrame::OnDrag(wxMouseEvent& event)
     {
         default:
         case wxDragError:
-            wxLogError(wxT("An error occured during drag and drop operation"));
+            wxLogError(wxT("An error occurred during drag and drop operation"));
             break;
 
         case wxDragNone:
+#if wxUSE_STATUSBAR
             SetStatusText(_T("Nothing happened"));
+#endif // wxUSE_STATUSBAR
             break;
 
         case wxDragCopy:
@@ -1706,13 +1753,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
 }
@@ -1723,9 +1774,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);
@@ -1738,10 +1791,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
     }
 }
 
@@ -1749,7 +1804,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))
@@ -1902,13 +1959,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);