home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / fdrepdlg.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  7KB  |  221 lines

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