]> git.saurik.com Git - wxWidgets.git/commitdiff
1. some warnings fixed in forty
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 14 Jan 2000 00:17:41 +0000 (00:17 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 14 Jan 2000 00:17:41 +0000 (00:17 +0000)
2. added test for a would-ve client data bug in wxTextCtrl
3. added support for metafiels to the dnd sample

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

demos/forty/game.cpp
demos/forty/scorefil.cpp
samples/dnd/dnd.cpp
samples/text/text.cpp

index fa1a29e4341829c20a0c128382e52cd5ffc29255..e7c47b9b9f05c416e93e5ea1d832e5555eb22bad 100644 (file)
@@ -410,8 +410,8 @@ void Game::LButtonDblClk(wxDC& dc, int x, int y)
                        {
                                for(i = 0; i < 4; i++)
                                {
-                                       Card* m_topCard;
-                                       if ((m_topCard = m_foundations[i]->GetTopCard()))
+                                       Card* m_topCard = m_foundations[i]->GetTopCard();
+                                       if ( m_topCard )
                     {
                                                if (m_topCard->GetSuit() == card->GetSuit() &&
                             m_foundations[i + 4] != pile &&
index cb871efde08232c90af3ebf896e371bc988b8647..8282a9fb66dbf4991420069617acb9fdd62a6684 100644 (file)
@@ -138,8 +138,8 @@ void ScoreFile::ReadPlayersScore(
                                                int& games,
                                                int& score)
 {
-       long check;
-       long myWins, myGames, myScore;
+       long check = 0;
+       long myWins = 0, myGames = 0, myScore = 0;
 
        games = wins = score = 0;
 
index 4a2985894b737a313dee6656fb9c1b7553ea36d2..39b58f179e5f767d80e5fcb5667d6cace544c7c8 100644 (file)
@@ -88,6 +88,81 @@ public:
 
 IMPLEMENT_APP(DnDApp);
 
+// ----------------------------------------------------------------------------
+// Define canvas class to show a bitmap
+// ----------------------------------------------------------------------------
+
+class DnDCanvasBitmap : public wxScrolledWindow
+{
+public:
+    DnDCanvasBitmap(wxWindow *parent) : wxScrolledWindow(parent) { }
+
+    void SetBitmap(const wxBitmap& bitmap)
+    {
+        m_bitmap = bitmap;
+
+        SetScrollbars(10, 10,
+                      m_bitmap.GetWidth() / 10, m_bitmap.GetHeight() / 10);
+
+        Refresh();
+    }
+
+    void OnPaint(wxPaintEvent& event)
+    {
+        wxPaintDC dc(this);
+
+        if ( m_bitmap.Ok() )
+        {
+            PrepareDC(dc);
+
+            dc.DrawBitmap(m_bitmap, 0, 0);
+        }
+    }
+
+private:
+    wxBitmap m_bitmap;
+
+    DECLARE_EVENT_TABLE()
+};
+
+#ifdef USE_METAFILES
+
+// and the same thing fo metafiles
+class DnDCanvasMetafile : public wxScrolledWindow
+{
+public:
+    DnDCanvasMetafile(wxWindow *parent) : wxScrolledWindow(parent) { }
+
+    void SetMetafile(const wxMetafile& metafile)
+    {
+        m_metafile = metafile;
+
+        SetScrollbars(10, 10,
+                      m_metafile.GetWidth() / 10, m_metafile.GetHeight() / 10);
+
+        Refresh();
+    }
+
+    void OnPaint(wxPaintEvent& event)
+    {
+        wxPaintDC dc(this);
+
+        if ( m_metafile.Ok() )
+        {
+            PrepareDC(dc);
+
+            m_metafile.Play(&dc);
+        }
+    }
+
+private:
+    wxMetafile m_metafile;
+
+    DECLARE_EVENT_TABLE()
+};
+
+#endif // USE_METAFILES
+
 // ----------------------------------------------------------------------------
 // Define a new frame type for the main frame
 // ----------------------------------------------------------------------------
@@ -135,7 +210,6 @@ private:
           *m_pLogPrev;
 
     wxString  m_strText;
-    wxBitmap  m_bitmap;
 };
 
 // ----------------------------------------------------------------------------
@@ -438,16 +512,19 @@ public:
             return m_shape->GetDataSize();
         }
 #ifdef USE_METAFILES
-        else if ( format == wxDF_METAFILE )
+        else if ( m_dobjMetaFile.IsSupported(format) )
         {
             if ( !m_hasMetaFile )
                 CreateMetaFile();
 
-            return m_dobjMetaFile.GetDataSize();
+            return m_dobjMetaFile.GetDataSize(format);
         }
 #endif // Windows
         else
         {
+            wxASSERT_MSG( m_dobjBitmap.IsSupported(format),
+                          "unexpected format" );
+
             if ( !m_hasBitmap )
                 CreateBitmap();
 
@@ -464,16 +541,19 @@ public:
             return TRUE;
         }
 #ifdef USE_METAFILES
-        else if ( format == wxDF_METAFILE )
+        else if ( m_dobjMetaFile.IsSupported(format) )
         {
             if ( !m_hasMetaFile )
                 CreateMetaFile();
 
-            return m_dobjMetaFile.GetDataHere(pBuf);
+            return m_dobjMetaFile.GetDataHere(format, pBuf);
         }
 #endif // Windows
         else
         {
+            wxASSERT_MSG( m_dobjBitmap.IsSupported(format),
+                          "unexpected format" );
+
             if ( !m_hasBitmap )
                 CreateBitmap();
 
@@ -627,6 +707,16 @@ private:
     DnDShapeFrame *m_frame;
 };
 
+// ----------------------------------------------------------------------------
+// functions prototypes
+// ----------------------------------------------------------------------------
+
+static void ShowBitmap(const wxBitmap& bitmap);
+
+#ifdef USE_METAFILES
+static void ShowMetaFile(const wxMetaFile& metafile);
+#endif // USE_METAFILES
+
 // ----------------------------------------------------------------------------
 // IDs for the menu commands
 // ----------------------------------------------------------------------------
@@ -697,6 +787,16 @@ BEGIN_EVENT_TABLE(DnDShapeDialog, wxDialog)
     EVT_BUTTON(Button_Colour, DnDShapeDialog::OnColour)
 END_EVENT_TABLE()
 
+BEGIN_EVENT_TABLE(DnDCanvasBitmap, wxScrolledWindow)
+    EVT_PAINT(DnDCanvasBitmap::OnPaint)
+END_EVENT_TABLE()
+
+#ifdef USE_METAFILES
+BEGIN_EVENT_TABLE(DnDCanvasMetafile, wxScrolledWindow)
+    EVT_PAINT(DnDCanvasMetafile::OnPaint)
+END_EVENT_TABLE()
+#endif // USE_METAFILES
+
 // ============================================================================
 // implementation
 // ============================================================================
@@ -863,15 +963,7 @@ void DnDFrame::OnPaint(wxPaintEvent& WXUNUSED(event))
 
     wxPaintDC dc(this);
     dc.SetFont( wxFont( 24, wxDECORATIVE, wxNORMAL, wxNORMAL, FALSE, "charter" ) );
-    dc.DrawText( "Drag text from here!", 20, h-50 );
-
-    if ( m_bitmap.Ok() )
-    {
-        // 4/5 is 80% taken by other windows, 20 is arbitrary margin
-        dc.DrawBitmap(m_bitmap,
-                      w - m_bitmap.GetWidth() - 20,
-                      (4*h)/5 + 20);
-    }
+    dc.DrawText( "Drag text from here!", 100, h-50 );
 }
 
 void DnDFrame::OnUpdateUIPasteText(wxUpdateUIEvent& event)
@@ -1114,9 +1206,11 @@ void DnDFrame::OnPasteBitmap(wxCommandEvent& WXUNUSED(event))
     }
     else
     {
-        wxLogMessage(_T("Bitmap pasted from the clipboard") );
-        m_bitmap = data.GetBitmap();
-        Refresh();
+        const wxBitmap& bmp = data.GetBitmap();
+
+        wxLogMessage(_T("Bitmap %dx%d pasted from the clipboard"),
+                     bmp.GetWidth(), bmp.GetHeight());
+        ShowBitmap(bmp);
     }
 
     wxTheClipboard->Close();
@@ -1146,9 +1240,12 @@ void DnDFrame::OnPasteMetafile(wxCommandEvent& WXUNUSED(event))
         }
         else
         {
-            wxLogMessage(_T("Metafile pasted from the clipboard"));
+            const wxMetaFile& mf = data.GetMetafile();
 
-            // TODO: show it somewhere
+            wxLogMessage(_T("Metafile %dx%d pasted from the clipboard"),
+                         mf.GetWidth(), mf.GetHeight());
+
+            ShowMetaFile(mf);
         }
     }
 
@@ -1527,7 +1624,6 @@ void DnDShapeFrame::OnCopyShape(wxCommandEvent& event)
 {
     if ( m_shape )
     {
-#if 1
         wxClipboardLocker clipLocker;
         if ( !clipLocker )
         {
@@ -1537,22 +1633,6 @@ void DnDShapeFrame::OnCopyShape(wxCommandEvent& event)
         }
 
         wxTheClipboard->AddData(new DnDShapeDataObject(m_shape));
-#else
-        // VZ: temp test code, will remove
-        wxOpenClipboard();
-
-        wxMetaFileDC dcMF;
-
-        m_shape->Draw(dcMF);
-
-        wxMetafile *mf = dcMF.Close();
-
-        wxPoint pos = m_shape->GetPosition();
-        wxSize size = m_shape->GetSize();
-        wxSetClipboardData(wxDF_METAFILE, mf, pos.x + size.x, pos.y + size.y);
-
-        wxCloseClipboard();
-#endif
     }
 }
 
@@ -1639,20 +1719,20 @@ DnDShape *DnDShape::New(const void *buf)
 
 void DnDShapeDataObject::CreateMetaFile() const
 {
-    wxMetaFileDC dcMF;
+    wxPoint pos = m_shape->GetPosition();
+    wxSize size = m_shape->GetSize();
+
+    wxMetaFileDC dcMF(wxEmptyString, pos.x + size.x, pos.y + size.y);
 
     m_shape->Draw(dcMF);
 
     wxMetafile *mf = dcMF.Close();
 
-    wxPoint pos = m_shape->GetPosition();
-    wxSize size = m_shape->GetSize();
-    mf->SetWidth(pos.x + size.x);
-    mf->SetHeight(pos.y + size.y);
-
     DnDShapeDataObject *self = (DnDShapeDataObject *)this; // const_cast
     self->m_dobjMetaFile.SetMetafile(*mf);
     self->m_hasMetaFile = TRUE;
+
+    delete mf;
 }
 
 #endif // Windows
@@ -1676,3 +1756,40 @@ void DnDShapeDataObject::CreateBitmap() const
     self->m_hasBitmap = TRUE;
 }
 
+// ----------------------------------------------------------------------------
+// global functions
+// ----------------------------------------------------------------------------
+
+static void ShowBitmap(const wxBitmap& bitmap)
+{
+    wxFrame *frame = new wxFrame(NULL, -1, _T("Bitmap view"));
+    frame->CreateStatusBar();
+    DnDCanvasBitmap *canvas = new DnDCanvasBitmap(frame);
+    canvas->SetBitmap(bitmap);
+
+    int w = bitmap.GetWidth(),
+        h = bitmap.GetHeight();
+    frame->SetStatusText(wxString::Format(_T("%dx%d"), w, h));
+
+    frame->SetClientSize(w > 100 ? 100 : w, h > 100 ? 100 : h);
+    frame->Show();
+}
+
+#ifdef USE_METAFILES
+
+static void ShowMetaFile(const wxMetaFile& metafile)
+{
+    wxFrame *frame = new wxFrame(NULL, -1, _T("Metafile view"));
+    frame->CreateStatusBar();
+    DnDCanvasMetafile *canvas = new DnDCanvasMetafile(frame);
+    canvas->SetMetafile(metafile);
+
+    wxSize size = metafile.GetSize();
+    frame->SetStatusText(wxString::Format(_T("%dx%d"), size.x, size.y));
+
+    frame->SetClientSize(size.x > 100 ? 100 : size.x,
+                         size.y > 100 ? 100 : size.y);
+    frame->Show();
+}
+
+#endif // USE_METAFILES
index 09e8e6013d42b14815882bc2347f26628c1dfdfb..6fc3a71448255cbd9f123b7bc1aa8fd4523df60f 100644 (file)
@@ -29,7 +29,7 @@
 #endif
 
 #if wxUSE_FILE
-       #include "wx/file.h"
+    #include "wx/file.h"
 #endif
 
 #if wxUSE_TOOLTIPS
@@ -159,7 +159,7 @@ enum
     TEXT_QUIT = 100,
     TEXT_ABOUT,
     TEXT_LOAD,
-       TEXT_SAVE,
+    TEXT_SAVE,
     TEXT_CLEAR,
 
     // clipboard menu
@@ -374,6 +374,13 @@ void MyTextCtrl::OnChar(wxKeyEvent& event)
 {
     LogEvent( _T("Char"), event);
 
+    wxWindow *win = (wxWindow *)event.GetEventObject();
+    const wxChar *data = (const wxChar *)(win->GetClientData());
+    if ( data )
+    {
+        wxLogMessage(_T(" (from control '%s')"), data);
+    }
+
 /*  How are we supposed to test wxTE_PROCESS_TAB with this code?
 
     if ( event.KeyCode() == WXK_TAB )
@@ -390,7 +397,7 @@ void MyTextCtrl::OnChar(wxKeyEvent& event)
 
 void MyTextCtrl::OnKeyUp(wxKeyEvent& event)
 {
-    LogEvent( _("Key up"), event);
+    LogEvent( _T("Key up"), event);
 
     event.Skip();
 }
@@ -446,10 +453,10 @@ void MyTextCtrl::OnKeyDown(wxKeyEvent& event)
         case WXK_F5:
             // insert a blank line
             WriteText("\n");
-                       break;
+            break;
 
-               default:
-                       LogEvent( _("Key down"), event);
+        default:
+            LogEvent( wxT("Key down"), event);
     }
 
     event.Skip();
@@ -503,11 +510,13 @@ MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h )
     m_multitext->SetToolTip("Press F1 here for statitics, F4 for capture and uncapture mouse.");
 #endif
 
-    m_tab = new MyTextCtrl( this, -1, "Multiline, allow <TAB> processing.",
+    m_tab = new MyTextCtrl( this, 100, "Multiline, allow <TAB> processing.",
       wxPoint(180,90), wxSize(240,70), wxTE_MULTILINE |  wxTE_PROCESS_TAB );
+    m_tab->SetClientData(_T("tab"));
 
-    m_enter = new MyTextCtrl( this, -1, "Multiline, allow <ENTER> processing.",
+    m_enter = new MyTextCtrl( this, 100, "Multiline, allow <ENTER> processing.",
       wxPoint(180,170), wxSize(240,70), wxTE_MULTILINE);
+    m_enter->SetClientData(_T("enter"));
 
     m_textrich = new MyTextCtrl(this, -1, "Allows more than 30Kb of text\n"
                                 "(even under broken Win9x)",