1/////////////////////////////////////////////////////////////////////////////
2// Name:        srchctrl.h
3// Purpose:     wxSearchCtrlBase class
4// Author:      Vince Harron
5// Created:     2006-02-18
6// RCS-ID:      $Id: srchctrl.h 45828 2007-05-05 14:51:51Z VZ $
7// Copyright:   (c) Vince Harron
8// Licence:     wxWindows licence
9/////////////////////////////////////////////////////////////////////////////
10
11#ifndef _WX_SEARCHCTRL_H_BASE_
12#define _WX_SEARCHCTRL_H_BASE_
13
14#include "wx/defs.h"
15
16#if wxUSE_SEARCHCTRL
17
18#include "wx/textctrl.h"
19
20#if !defined(__WXUNIVERSAL__) && defined(__WXMAC__) && defined(__WXMAC_OSX__) \
21        && (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3)
22    // search control was introduced in Mac OS X 10.3 Panther
23    #define wxUSE_NATIVE_SEARCH_CONTROL 1
24
25    #define wxSearchCtrlBaseBaseClass wxTextCtrl
26#else
27    // no native version, use the generic one
28    #define wxUSE_NATIVE_SEARCH_CONTROL 0
29
30    #define wxSearchCtrlBaseBaseClass wxTextCtrlBase
31#endif
32
33// ----------------------------------------------------------------------------
34// constants
35// ----------------------------------------------------------------------------
36
37extern WXDLLEXPORT_DATA(const wxChar) wxSearchCtrlNameStr[];
38
39BEGIN_DECLARE_EVENT_TYPES()
40    DECLARE_EVENT_TYPE(wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, 1119)
41    DECLARE_EVENT_TYPE(wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, 1120)
42END_DECLARE_EVENT_TYPES()
43
44// ----------------------------------------------------------------------------
45// a search ctrl is a text control with a search button and a cancel button
46// it is based on the MacOSX 10.3 control HISearchFieldCreate
47// ----------------------------------------------------------------------------
48
49class WXDLLEXPORT wxSearchCtrlBase : public wxSearchCtrlBaseBaseClass
50{
51public:
52    wxSearchCtrlBase() { }
53    virtual ~wxSearchCtrlBase() { }
54
55    // search control
56#if wxUSE_MENUS
57    virtual void SetMenu(wxMenu *menu) = 0;
58    virtual wxMenu *GetMenu() = 0;
59#endif // wxUSE_MENUS
60
61    // get/set options
62    virtual void ShowSearchButton( bool show ) = 0;
63    virtual bool IsSearchButtonVisible() const = 0;
64
65    virtual void ShowCancelButton( bool show ) = 0;
66    virtual bool IsCancelButtonVisible() const = 0;
67};
68
69
70// include the platform-dependent class implementation
71#if wxUSE_NATIVE_SEARCH_CONTROL
72    #if defined(__WXMAC__)
73        #include "wx/mac/srchctrl.h"
74    #endif
75#else
76    #include "wx/generic/srchctlg.h"
77#endif
78
79// ----------------------------------------------------------------------------
80// macros for handling search events
81// ----------------------------------------------------------------------------
82
83#define EVT_SEARCHCTRL_CANCEL_BTN(id, fn) \
84    wx__DECLARE_EVT1(wxEVT_COMMAND_SEARCHCTRL_CANCEL_BTN, id, wxCommandEventHandler(fn))
85
86#define EVT_SEARCHCTRL_SEARCH_BTN(id, fn) \
87    wx__DECLARE_EVT1(wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, id, wxCommandEventHandler(fn))
88
89#endif // wxUSE_SEARCHCTRL
90
91#endif // _WX_SEARCHCTRL_H_BASE_
92