| 1 | ///////////////////////////////////////////////////////////////////////////// |
| 2 | // Name: wx/fdrepdlg.h |
| 3 | // Purpose: wxFindReplaceDialog class |
| 4 | // Author: Markus Greither and Vadim Zeitlin |
| 5 | // Modified by: |
| 6 | // Created: 23/03/2001 |
| 7 | // RCS-ID: |
| 8 | // Copyright: (c) Markus Greither |
| 9 | // Licence: wxWindows licence |
| 10 | ///////////////////////////////////////////////////////////////////////////// |
| 11 | |
| 12 | #ifndef _WX_FINDREPLACEDLG_H_ |
| 13 | #define _WX_FINDREPLACEDLG_H_ |
| 14 | |
| 15 | #include "wx/defs.h" |
| 16 | |
| 17 | #if wxUSE_FINDREPLDLG |
| 18 | |
| 19 | #include "wx/dialog.h" |
| 20 | |
| 21 | class WXDLLEXPORT wxFindDialogEvent; |
| 22 | class WXDLLEXPORT wxFindReplaceDialog; |
| 23 | class WXDLLEXPORT wxFindReplaceData; |
| 24 | class WXDLLEXPORT wxFindReplaceDialogImpl; |
| 25 | |
| 26 | // ---------------------------------------------------------------------------- |
| 27 | // Flags for wxFindReplaceData.Flags |
| 28 | // ---------------------------------------------------------------------------- |
| 29 | |
| 30 | // flages used by wxFindDialogEvent::GetFlags() |
| 31 | enum wxFindReplaceFlags |
| 32 | { |
| 33 | // downward search/replace selected (otherwise - upwards) |
| 34 | wxFR_DOWN = 1, |
| 35 | |
| 36 | // whole word search/replace selected |
| 37 | wxFR_WHOLEWORD = 2, |
| 38 | |
| 39 | // case sensitive search/replace selected (otherwise - case insensitive) |
| 40 | wxFR_MATCHCASE = 4 |
| 41 | }; |
| 42 | |
| 43 | // these flags can be specified in wxFindReplaceDialog ctor or Create() |
| 44 | enum wxFindReplaceDialogStyles |
| 45 | { |
| 46 | // replace dialog (otherwise find dialog) |
| 47 | wxFR_REPLACEDIALOG = 1, |
| 48 | |
| 49 | // don't allow changing the search direction |
| 50 | wxFR_NOUPDOWN = 2, |
| 51 | |
| 52 | // don't allow case sensitive searching |
| 53 | wxFR_NOMATCHCASE = 4, |
| 54 | |
| 55 | // don't allow whole word searching |
| 56 | wxFR_NOWHOLEWORD = 8 |
| 57 | }; |
| 58 | |
| 59 | // ---------------------------------------------------------------------------- |
| 60 | // wxFindReplaceData: holds Setup Data/Feedback Data for wxFindReplaceDialog |
| 61 | // ---------------------------------------------------------------------------- |
| 62 | |
| 63 | class WXDLLEXPORT wxFindReplaceData : public wxObject |
| 64 | { |
| 65 | public: |
| 66 | wxFindReplaceData() { Init(); } |
| 67 | wxFindReplaceData(wxUint32 flags) { Init(); SetFlags(flags); } |
| 68 | |
| 69 | // accessors |
| 70 | const wxString& GetFindString() { return m_FindWhat; } |
| 71 | const wxString& GetReplaceString() { return m_ReplaceWith; } |
| 72 | |
| 73 | int GetFlags() const { return m_Flags; } |
| 74 | |
| 75 | // setters: may only be called before showing the dialog, no effect later |
| 76 | void SetFlags(wxUint32 flags) { m_Flags = flags; } |
| 77 | |
| 78 | void SetFindString(const wxString& str) { m_FindWhat = str; } |
| 79 | void SetReplaceString(const wxString& str) { m_ReplaceWith = str; } |
| 80 | |
| 81 | protected: |
| 82 | void Init(); |
| 83 | |
| 84 | private: |
| 85 | wxUint32 m_Flags; |
| 86 | wxString m_FindWhat, |
| 87 | m_ReplaceWith; |
| 88 | |
| 89 | friend class wxFindReplaceDialogBase; |
| 90 | }; |
| 91 | |
| 92 | // ---------------------------------------------------------------------------- |
| 93 | // wxFindReplaceDialogBase |
| 94 | // ---------------------------------------------------------------------------- |
| 95 | |
| 96 | class WXDLLEXPORT wxFindReplaceDialogBase : public wxDialog |
| 97 | { |
| 98 | public: |
| 99 | // ctors and such |
| 100 | wxFindReplaceDialogBase() { m_FindReplaceData = NULL; } |
| 101 | wxFindReplaceDialogBase(wxWindow * WXUNUSED(parent), |
| 102 | wxFindReplaceData *data, |
| 103 | const wxString& WXUNUSED(title), |
| 104 | int WXUNUSED(style) = 0) |
| 105 | { |
| 106 | m_FindReplaceData = data; |
| 107 | } |
| 108 | |
| 109 | virtual ~wxFindReplaceDialogBase(); |
| 110 | |
| 111 | // find dialog data access |
| 112 | const wxFindReplaceData *GetData() const { return m_FindReplaceData; } |
| 113 | void SetData(wxFindReplaceData *data) { m_FindReplaceData = data; } |
| 114 | |
| 115 | // implementation only, don't use |
| 116 | void Send(wxFindDialogEvent& event); |
| 117 | |
| 118 | protected: |
| 119 | wxFindReplaceData *m_FindReplaceData; |
| 120 | |
| 121 | // the last string we searched for |
| 122 | wxString m_lastSearch; |
| 123 | |
| 124 | DECLARE_NO_COPY_CLASS(wxFindReplaceDialogBase) |
| 125 | }; |
| 126 | |
| 127 | // include wxFindReplaceDialog declaration |
| 128 | #if defined(__WXMSW__) && !defined(__WXUNIVERSAL__) && !defined(__WXWINCE__) |
| 129 | #include "wx/msw/fdrepdlg.h" |
| 130 | #else |
| 131 | #define wxGenericFindReplaceDialog wxFindReplaceDialog |
| 132 | |
| 133 | #include "wx/generic/fdrepdlg.h" |
| 134 | #endif |
| 135 | |
| 136 | // ---------------------------------------------------------------------------- |
| 137 | // wxFindReplaceDialog events |
| 138 | // ---------------------------------------------------------------------------- |
| 139 | |
| 140 | class WXDLLEXPORT wxFindDialogEvent : public wxCommandEvent |
| 141 | { |
| 142 | public: |
| 143 | wxFindDialogEvent(wxEventType commandType = wxEVT_NULL, int id = 0) |
| 144 | : wxCommandEvent(commandType, id) { } |
| 145 | |
| 146 | int GetFlags() const { return GetInt(); } |
| 147 | wxString GetFindString() const { return GetString(); } |
| 148 | const wxString& GetReplaceString() const { return m_strReplace; } |
| 149 | |
| 150 | wxFindReplaceDialog *GetDialog() const |
| 151 | { return wxStaticCast(GetEventObject(), wxFindReplaceDialog); } |
| 152 | |
| 153 | // implementation only |
| 154 | void SetFlags(int flags) { SetInt(flags); } |
| 155 | void SetFindString(const wxString& str) { SetString(str); } |
| 156 | void SetReplaceString(const wxString& str) { m_strReplace = str; } |
| 157 | |
| 158 | private: |
| 159 | wxString m_strReplace; |
| 160 | |
| 161 | DECLARE_DYNAMIC_CLASS_NO_COPY(wxFindDialogEvent) |
| 162 | }; |
| 163 | |
| 164 | BEGIN_DECLARE_EVENT_TYPES() |
| 165 | DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND, 510) |
| 166 | DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_NEXT, 511) |
| 167 | DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_REPLACE, 512) |
| 168 | DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_REPLACE_ALL, 513) |
| 169 | DECLARE_EVENT_TYPE(wxEVT_COMMAND_FIND_CLOSE, 514) |
| 170 | END_DECLARE_EVENT_TYPES() |
| 171 | |
| 172 | typedef void (wxEvtHandler::*wxFindDialogEventFunction)(wxFindDialogEvent&); |
| 173 | |
| 174 | #define wxFindDialogEventHandler(func) \ |
| 175 | (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxFindDialogEventFunction, &func) |
| 176 | |
| 177 | #define EVT_FIND(id, fn) \ |
| 178 | wx__DECLARE_EVT1(wxEVT_COMMAND_FIND, id, wxFindDialogEventHandler(fn)) |
| 179 | |
| 180 | #define EVT_FIND_NEXT(id, fn) \ |
| 181 | wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_NEXT, id, wxFindDialogEventHandler(fn)) |
| 182 | |
| 183 | #define EVT_FIND_REPLACE(id, fn) \ |
| 184 | wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_REPLACE, id, wxFindDialogEventHandler(fn)) |
| 185 | |
| 186 | #define EVT_FIND_REPLACE_ALL(id, fn) \ |
| 187 | wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_REPLACE_ALL, id, wxFindDialogEventHandler(fn)) |
| 188 | |
| 189 | #define EVT_FIND_CLOSE(id, fn) \ |
| 190 | wx__DECLARE_EVT1(wxEVT_COMMAND_FIND_CLOSE, id, wxFindDialogEventHandler(fn)) |
| 191 | |
| 192 | #endif // wxUSE_FINDREPLDLG |
| 193 | |
| 194 | #endif |
| 195 | // _WX_FDREPDLG_H |