]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/fdrepdlg.h
added template wxScopedArray<> too
[wxWidgets.git] / include / wx / fdrepdlg.h
index 0d2da818e64f265dcff39975ae37487222a5ab99..93fb43c697f81ebd6ad933c2cfd4a295e9d014d9 100644 (file)
@@ -1,10 +1,10 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        wx/msw/fdrepdlg.h
+// Name:        wx/fdrepdlg.h
 // Purpose:     wxFindReplaceDialog class
-// Author:      Markus Greither
-// Modified by: 31.07.01: VZ: integrated into wxWindows
+// Author:      Markus Greither and Vadim Zeitlin
+// Modified by:
 // Created:     23/03/2001
-// RCS-ID:
+// RCS-ID:      $Id$
 // Copyright:   (c) Markus Greither
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 #ifndef _WX_FINDREPLACEDLG_H_
 #define _WX_FINDREPLACEDLG_H_
 
-#ifdef __GNUG__
-    #pragma interface "fdrepdlg.h"
-#endif
-
 #include "wx/defs.h"
 
 #if wxUSE_FINDREPLDLG
 
 #include "wx/dialog.h"
 
-class WXDLLEXPORT wxFindReplaceDialog;
-class WXDLLEXPORT wxFindReplaceData;
-class WXDLLEXPORT wxFindReplaceDialogImpl;
+class WXDLLIMPEXP_FWD_CORE wxFindDialogEvent;
+class WXDLLIMPEXP_FWD_CORE wxFindReplaceDialog;
+class WXDLLIMPEXP_FWD_CORE wxFindReplaceData;
+class WXDLLIMPEXP_FWD_CORE wxFindReplaceDialogImpl;
 
 // ----------------------------------------------------------------------------
 // Flags for wxFindReplaceData.Flags
@@ -37,7 +34,7 @@ enum wxFindReplaceFlags
     wxFR_DOWN       = 1,
 
     // whole word search/replace selected
-    wxFR_WHOLEWORD  = 2, 
+    wxFR_WHOLEWORD  = 2,
 
     // case sensitive search/replace selected (otherwise - case insensitive)
     wxFR_MATCHCASE  = 4
@@ -63,11 +60,11 @@ enum wxFindReplaceDialogStyles
 // wxFindReplaceData: holds Setup Data/Feedback Data for wxFindReplaceDialog
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxFindReplaceData : public wxObject
+class WXDLLIMPEXP_CORE wxFindReplaceData : public wxObject
 {
 public:
-    wxFindReplaceData() { }
-    wxFindReplaceData(wxUint32 flags) { SetFlags(flags); }
+    wxFindReplaceData() { Init(); }
+    wxFindReplaceData(wxUint32 flags) { Init(); SetFlags(flags); }
 
     // accessors
     const wxString& GetFindString() { return m_FindWhat; }
@@ -81,128 +78,118 @@ public:
     void SetFindString(const wxString& str) { m_FindWhat = str; }
     void SetReplaceString(const wxString& str) { m_ReplaceWith = str; }
 
+protected:
+    void Init();
+
 private:
     wxUint32 m_Flags;
     wxString m_FindWhat,
              m_ReplaceWith;
 
-    friend class wxFindReplaceDialog;
+    friend class wxFindReplaceDialogBase;
 };
 
 // ----------------------------------------------------------------------------
-// wxFindReplaceDialog: dialog for searching / replacing text
+// wxFindReplaceDialogBase
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxFindReplaceDialog : public wxDialog
+class WXDLLIMPEXP_CORE wxFindReplaceDialogBase : public wxDialog
 {
 public:
     // ctors and such
-    wxFindReplaceDialog() { Init(); }
-    wxFindReplaceDialog(wxWindow *parent,
-                        wxFindReplaceData *data,
-                        const wxString &title);
+    wxFindReplaceDialogBase() { m_FindReplaceData = NULL; }
+    wxFindReplaceDialogBase(wxWindow * WXUNUSED(parent),
+                            wxFindReplaceData *data,
+                            const wxString& WXUNUSED(title),
+                            int WXUNUSED(style) = 0)
+    {
+        m_FindReplaceData = data;
+    }
 
-    bool Create(wxWindow *parent,
-                wxFindReplaceData *data,
-                const wxString &title);
-
-    virtual ~wxFindReplaceDialog();
+    virtual ~wxFindReplaceDialogBase();
 
     // find dialog data access
     const wxFindReplaceData *GetData() const { return m_FindReplaceData; }
-    void SetData(wxFindReplaceData *data);
-
-    // implementation only from now on
+    void SetData(wxFindReplaceData *data) { m_FindReplaceData = data; }
 
-    wxFindReplaceDialogImpl *GetImpl() const { return m_impl; }
-
-    // override some base class virtuals
-    virtual bool Show(bool show);
-    virtual void SetTitle( const wxString& title);
-    virtual wxString GetTitle() const;
+    // implementation only, don't use
+    void Send(wxFindDialogEvent& event);
 
 protected:
-    virtual void DoGetSize(int *width, int *height) const;
-    virtual void DoGetClientSize(int *width, int *height) const;
-    virtual void DoSetSize(int x, int y,
-                           int width, int height,
-                           int sizeFlags = wxSIZE_AUTO);
+    wxFindReplaceData *m_FindReplaceData;
 
-    void Init();
+    // the last string we searched for
+    wxString m_lastSearch;
 
-    wxFindReplaceData      *m_FindReplaceData;
-    wxString                m_title;
+    DECLARE_NO_COPY_CLASS(wxFindReplaceDialogBase)
+};
 
-    wxFindReplaceDialogImpl *m_impl;
+// include wxFindReplaceDialog declaration
+#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) && !defined(__WXWINCE__)
+    #include "wx/msw/fdrepdlg.h"
+#else
+    #define wxGenericFindReplaceDialog wxFindReplaceDialog
 
-    DECLARE_DYNAMIC_CLASS(wxFindReplaceDialog)
-};
+    #include "wx/generic/fdrepdlg.h"
+#endif
 
 // ----------------------------------------------------------------------------
 // wxFindReplaceDialog events
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxFindDialogEvent : public wxCommandEvent
+class WXDLLIMPEXP_CORE wxFindDialogEvent : public wxCommandEvent
 {
 public:
     wxFindDialogEvent(wxEventType commandType = wxEVT_NULL, int id = 0)
         : wxCommandEvent(commandType, id) { }
+    wxFindDialogEvent(const wxFindDialogEvent& event)
+        : wxCommandEvent(event), m_strReplace(event.m_strReplace) { }
 
     int GetFlags() const { return GetInt(); }
     wxString GetFindString() const { return GetString(); }
     const wxString& GetReplaceString() const { return m_strReplace; }
 
+    wxFindReplaceDialog *GetDialog() const
+        { return wxStaticCast(GetEventObject(), wxFindReplaceDialog); }
+
     // implementation only
     void SetFlags(int flags) { SetInt(flags); }
     void SetFindString(const wxString& str) { SetString(str); }
     void SetReplaceString(const wxString& str) { m_strReplace = str; }
 
+    virtual wxEvent *Clone() const { return new wxFindDialogEvent(*this); }
+
 private:
     wxString m_strReplace;
 
-    DECLARE_DYNAMIC_CLASS(wxFindDialogEvent)
+    DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxFindDialogEvent)
 };
 
-BEGIN_DECLARE_EVENT_TYPES()
-    DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_NEXT, 510)
-    DECLARE_EVENT_TYPE(wxEVT_COMMAND_REPLACE, 511)
-    DECLARE_EVENT_TYPE(wxEVT_COMMAND_REPLACE_ALL, 512)
-    DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_CLOSE, 513)
-END_DECLARE_EVENT_TYPES()
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_FIND, wxFindDialogEvent )
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_FIND_NEXT, wxFindDialogEvent )
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_FIND_REPLACE, wxFindDialogEvent )
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_FIND_REPLACE_ALL, wxFindDialogEvent )
+wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_CORE, wxEVT_COMMAND_FIND_CLOSE, wxFindDialogEvent )
 
 typedef void (wxEvtHandler::*wxFindDialogEventFunction)(wxFindDialogEvent&);
 
+#define wxFindDialogEventHandler(func) \
+    wxEVENT_HANDLER_CAST(wxFindDialogEventFunction, func)
+
+#define EVT_FIND(id, fn) \
+    wx__DECLARE_EVT1(wxEVT_COMMAND_FIND, id, wxFindDialogEventHandler(fn))
+
 #define EVT_FIND_NEXT(id, fn) \
-    DECLARE_EVENT_TABLE_ENTRY( \
-        wxEVT_COMMAND_FIND_NEXT, id, -1, \
-        (wxObjectEventFunction)(wxEventFunction)(wxFindDialogEventFunction) \
-        & fn, \
-        (wxObject *) NULL \
-    ),
-
-#define EVT_REPLACE(id, fn) \
-    DECLARE_EVENT_TABLE_ENTRY( \
-        wxEVT_COMMAND_REPLACE, id, -1, \
-        (wxObjectEventFunction)(wxEventFunction)(wxFindDialogEventFunction) \
-        & fn, \
-        (wxObject *) NULL \
-    ),
+    wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_NEXT, id, wxFindDialogEventHandler(fn))
+
+#define EVT_FIND_REPLACE(id, fn) \
+    wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_REPLACE, id, wxFindDialogEventHandler(fn))
 
 #define EVT_FIND_REPLACE_ALL(id, fn) \
-    DECLARE_EVENT_TABLE_ENTRY( \
-        wxEVT_COMMAND_REPLACE_ALL, id, -1, \
-        (wxObjectEventFunction)(wxEventFunction)(wxFindDialogEventFunction) \
-        & fn, \
-        (wxObject *) NULL \
-    ),
-
-#define EVT_FIND_FIND_CLOSE(id, fn) \
-    DECLARE_EVENT_TABLE_ENTRY( \
-        wxEVT_COMMAND_FIND_CLOSE, id, -1, \
-        (wxObjectEventFunction)(wxEventFunction)(wxFindDialogEventFunction) \
-        & fn, \
-        (wxObject *) NULL \
-    ),
+    wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_REPLACE_ALL, id, wxFindDialogEventHandler(fn))
+
+#define EVT_FIND_CLOSE(id, fn) \
+    wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_CLOSE, id, wxFindDialogEventHandler(fn))
 
 #endif // wxUSE_FINDREPLDLG