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 WXDLLIMPEXP_FWD_CORE wxFindDialogEvent; 22 class WXDLLIMPEXP_FWD_CORE wxFindReplaceDialog; 23 class WXDLLIMPEXP_FWD_CORE wxFindReplaceData; 24 class WXDLLIMPEXP_FWD_CORE 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: wxFindReplaceData()66 wxFindReplaceData() { Init(); } wxFindReplaceData(wxUint32 flags)67 wxFindReplaceData(wxUint32 flags) { Init(); SetFlags(flags); } 68 69 // accessors GetFindString()70 const wxString& GetFindString() { return m_FindWhat; } GetReplaceString()71 const wxString& GetReplaceString() { return m_ReplaceWith; } 72 GetFlags()73 int GetFlags() const { return m_Flags; } 74 75 // setters: may only be called before showing the dialog, no effect later SetFlags(wxUint32 flags)76 void SetFlags(wxUint32 flags) { m_Flags = flags; } 77 SetFindString(const wxString & str)78 void SetFindString(const wxString& str) { m_FindWhat = str; } SetReplaceString(const wxString & 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 wxFindReplaceDialogBase()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 GetData()112 const wxFindReplaceData *GetData() const { return m_FindReplaceData; } SetData(wxFindReplaceData * data)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) wxCommandEvent(commandType,id)144 : wxCommandEvent(commandType, id) { } 145 GetFlags()146 int GetFlags() const { return GetInt(); } GetFindString()147 wxString GetFindString() const { return GetString(); } GetReplaceString()148 const wxString& GetReplaceString() const { return m_strReplace; } 149 GetDialog()150 wxFindReplaceDialog *GetDialog() const 151 { return wxStaticCast(GetEventObject(), wxFindReplaceDialog); } 152 153 // implementation only SetFlags(int flags)154 void SetFlags(int flags) { SetInt(flags); } SetFindString(const wxString & str)155 void SetFindString(const wxString& str) { SetString(str); } SetReplaceString(const wxString & 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 196