Modified form of Patch #1611222, adds wxSearchCtrl (generic & native carbon HISearchField)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43908 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -66,6 +66,7 @@ WIDGETS_OBJECTS = \
|
||||
widgets_notebook.o \
|
||||
widgets_odcombobox.o \
|
||||
widgets_radiobox.o \
|
||||
widgets_searchctrl.o \
|
||||
widgets_slider.o \
|
||||
widgets_spinbtn.o \
|
||||
widgets_static.o \
|
||||
@@ -262,6 +263,9 @@ widgets_odcombobox.o: $(srcdir)/odcombobox.cpp
|
||||
widgets_radiobox.o: $(srcdir)/radiobox.cpp
|
||||
$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/radiobox.cpp
|
||||
|
||||
widgets_searchctrl.o: $(srcdir)/searchctrl.cpp
|
||||
$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/searchctrl.cpp
|
||||
|
||||
widgets_slider.o: $(srcdir)/slider.cpp
|
||||
$(CXXC) -c -o $@ $(WIDGETS_CXXFLAGS) $(srcdir)/slider.cpp
|
||||
|
||||
|
@@ -50,6 +50,7 @@ WIDGETS_OBJECTS = \
|
||||
$(OBJS)\widgets_notebook.obj \
|
||||
$(OBJS)\widgets_odcombobox.obj \
|
||||
$(OBJS)\widgets_radiobox.obj \
|
||||
$(OBJS)\widgets_searchctrl.obj \
|
||||
$(OBJS)\widgets_slider.obj \
|
||||
$(OBJS)\widgets_spinbtn.obj \
|
||||
$(OBJS)\widgets_static.obj \
|
||||
@@ -307,6 +308,9 @@ $(OBJS)\widgets_odcombobox.obj: .\odcombobox.cpp
|
||||
$(OBJS)\widgets_radiobox.obj: .\radiobox.cpp
|
||||
$(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) $**
|
||||
|
||||
$(OBJS)\widgets_searchctrl.obj: .\searchctrl.cpp
|
||||
$(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) $**
|
||||
|
||||
$(OBJS)\widgets_slider.obj: .\slider.cpp
|
||||
$(CXX) -q -c -P -o$@ $(WIDGETS_CXXFLAGS) $**
|
||||
|
||||
|
@@ -43,6 +43,7 @@ WIDGETS_OBJECTS = \
|
||||
$(OBJS)\widgets_notebook.o \
|
||||
$(OBJS)\widgets_odcombobox.o \
|
||||
$(OBJS)\widgets_radiobox.o \
|
||||
$(OBJS)\widgets_searchctrl.o \
|
||||
$(OBJS)\widgets_slider.o \
|
||||
$(OBJS)\widgets_spinbtn.o \
|
||||
$(OBJS)\widgets_static.o \
|
||||
@@ -300,6 +301,9 @@ $(OBJS)\widgets_odcombobox.o: ./odcombobox.cpp
|
||||
$(OBJS)\widgets_radiobox.o: ./radiobox.cpp
|
||||
$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\widgets_searchctrl.o: ./searchctrl.cpp
|
||||
$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
$(OBJS)\widgets_slider.o: ./slider.cpp
|
||||
$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
|
@@ -55,6 +55,7 @@ WIDGETS_OBJECTS = \
|
||||
widgets_notebook.o \
|
||||
widgets_odcombobox.o \
|
||||
widgets_radiobox.o \
|
||||
widgets_searchctrl.o \
|
||||
widgets_slider.o \
|
||||
widgets_spinbtn.o \
|
||||
widgets_static.o \
|
||||
@@ -130,6 +131,9 @@ widgets_odcombobox.o: ./odcombobox.cpp
|
||||
widgets_radiobox.o: ./radiobox.cpp
|
||||
$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
widgets_searchctrl.o: ./searchctrl.cpp
|
||||
$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
widgets_slider.o: ./slider.cpp
|
||||
$(CXX) -c -o $@ $(WIDGETS_CXXFLAGS) $(CPPDEPS) $<
|
||||
|
||||
|
@@ -43,6 +43,7 @@ WIDGETS_OBJECTS = \
|
||||
$(OBJS)\widgets_notebook.obj \
|
||||
$(OBJS)\widgets_odcombobox.obj \
|
||||
$(OBJS)\widgets_radiobox.obj \
|
||||
$(OBJS)\widgets_searchctrl.obj \
|
||||
$(OBJS)\widgets_slider.obj \
|
||||
$(OBJS)\widgets_spinbtn.obj \
|
||||
$(OBJS)\widgets_static.obj \
|
||||
@@ -382,6 +383,9 @@ $(OBJS)\widgets_odcombobox.obj: .\odcombobox.cpp
|
||||
$(OBJS)\widgets_radiobox.obj: .\radiobox.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) $**
|
||||
|
||||
$(OBJS)\widgets_searchctrl.obj: .\searchctrl.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) $**
|
||||
|
||||
$(OBJS)\widgets_slider.obj: .\slider.cpp
|
||||
$(CXX) /c /nologo /TP /Fo$@ $(WIDGETS_CXXFLAGS) $**
|
||||
|
||||
|
@@ -254,6 +254,7 @@ WIDGETS_OBJECTS = &
|
||||
$(OBJS)\widgets_notebook.obj &
|
||||
$(OBJS)\widgets_odcombobox.obj &
|
||||
$(OBJS)\widgets_radiobox.obj &
|
||||
$(OBJS)\widgets_searchctrl.obj &
|
||||
$(OBJS)\widgets_slider.obj &
|
||||
$(OBJS)\widgets_spinbtn.obj &
|
||||
$(OBJS)\widgets_static.obj &
|
||||
@@ -338,6 +339,9 @@ $(OBJS)\widgets_odcombobox.obj : .AUTODEPEND .\odcombobox.cpp
|
||||
$(OBJS)\widgets_radiobox.obj : .AUTODEPEND .\radiobox.cpp
|
||||
$(CXX) -bt=nt -zq -fo=$^@ $(WIDGETS_CXXFLAGS) $<
|
||||
|
||||
$(OBJS)\widgets_searchctrl.obj : .AUTODEPEND .\searchctrl.cpp
|
||||
$(CXX) -bt=nt -zq -fo=$^@ $(WIDGETS_CXXFLAGS) $<
|
||||
|
||||
$(OBJS)\widgets_slider.obj : .AUTODEPEND .\slider.cpp
|
||||
$(CXX) -bt=nt -zq -fo=$^@ $(WIDGETS_CXXFLAGS) $<
|
||||
|
||||
|
224
samples/widgets/searchctrl.cpp
Normal file
224
samples/widgets/searchctrl.cpp
Normal file
@@ -0,0 +1,224 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Program: wxWidgets Widgets Sample
|
||||
// Name: searchctrl.cpp
|
||||
// Purpose: Shows wxSearchCtrl
|
||||
// Author: Robin Dunn
|
||||
// Created: 9-Dec-2006
|
||||
// Id: $Id$
|
||||
// Copyright: (c) 2006
|
||||
// License: wxWindows license
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ============================================================================
|
||||
// declarations
|
||||
// ============================================================================
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// for compilers that support precompilation, includes "wx/wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#if wxUSE_SEARCHCTRL
|
||||
|
||||
// for all others, include the necessary headers
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/app.h"
|
||||
#include "wx/log.h"
|
||||
#include "wx/radiobox.h"
|
||||
#endif
|
||||
|
||||
#include "wx/artprov.h"
|
||||
#include "wx/sizer.h"
|
||||
#include "wx/stattext.h"
|
||||
#include "wx/checkbox.h"
|
||||
#include "wx/menu.h"
|
||||
|
||||
#include "wx/srchctrl.h"
|
||||
|
||||
#include "widgets.h"
|
||||
|
||||
#include "icons/text.xpm"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// control ids
|
||||
enum
|
||||
{
|
||||
ID_SEARCH_CB = wxID_HIGHEST,
|
||||
ID_CANCEL_CB,
|
||||
ID_MENU_CB,
|
||||
|
||||
ID_SEARCHMENU
|
||||
};
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// ColourPickerWidgetsPage
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class SearchCtrlWidgetsPage : public WidgetsPage
|
||||
{
|
||||
public:
|
||||
SearchCtrlWidgetsPage(WidgetsBookCtrl *book, wxImageList *imaglist);
|
||||
virtual ~SearchCtrlWidgetsPage(){};
|
||||
|
||||
virtual wxControl *GetWidget() const { return m_srchCtrl; }
|
||||
virtual void RecreateWidget() { CreateControl(); }
|
||||
|
||||
// lazy creation of the content
|
||||
virtual void CreateContent();
|
||||
|
||||
protected:
|
||||
|
||||
void OnToggleSearchButton(wxCommandEvent&);
|
||||
void OnToggleCancelButton(wxCommandEvent&);
|
||||
void OnToggleSearchMenu(wxCommandEvent&);
|
||||
|
||||
wxMenu* CreateTestMenu();
|
||||
|
||||
// (re)create the control
|
||||
void CreateControl();
|
||||
|
||||
// reset the control parameters
|
||||
void Reset();
|
||||
|
||||
|
||||
wxSearchCtrl* m_srchCtrl;
|
||||
wxCheckBox* m_searchBtnCheck;
|
||||
wxCheckBox* m_cancelBtnCheck;
|
||||
wxCheckBox* m_menuBtnCheck;
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_WIDGETS_PAGE(SearchCtrlWidgetsPage)
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// event tables
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
BEGIN_EVENT_TABLE(SearchCtrlWidgetsPage, WidgetsPage)
|
||||
EVT_CHECKBOX(ID_SEARCH_CB, SearchCtrlWidgetsPage::OnToggleSearchButton)
|
||||
EVT_CHECKBOX(ID_CANCEL_CB, SearchCtrlWidgetsPage::OnToggleCancelButton)
|
||||
EVT_CHECKBOX(ID_MENU_CB, SearchCtrlWidgetsPage::OnToggleSearchMenu)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
// ============================================================================
|
||||
// implementation
|
||||
// ============================================================================
|
||||
|
||||
#if defined(__WXMAC__)
|
||||
#define FAMILY_CTRLS NATIVE_CTRLS
|
||||
#else
|
||||
#define FAMILY_CTRLS GENERIC_CTRLS
|
||||
#endif
|
||||
|
||||
IMPLEMENT_WIDGETS_PAGE(SearchCtrlWidgetsPage, _T("SearchCtrl"),
|
||||
FAMILY_CTRLS | ALL_CTRLS);
|
||||
|
||||
SearchCtrlWidgetsPage::SearchCtrlWidgetsPage(WidgetsBookCtrl *book,
|
||||
wxImageList *imaglist)
|
||||
: WidgetsPage(book, imaglist, text_xpm)
|
||||
{
|
||||
}
|
||||
|
||||
void SearchCtrlWidgetsPage::CreateContent()
|
||||
{
|
||||
m_srchCtrl = NULL;
|
||||
|
||||
Reset();
|
||||
CreateControl();
|
||||
|
||||
|
||||
wxSizer* box = new wxStaticBoxSizer(
|
||||
new wxStaticBox(this, -1, wxT("Options")),
|
||||
wxVERTICAL);
|
||||
|
||||
m_searchBtnCheck = new wxCheckBox(this, ID_SEARCH_CB, wxT("Search button"));
|
||||
m_cancelBtnCheck = new wxCheckBox(this, ID_CANCEL_CB, wxT("Cancel button"));
|
||||
m_menuBtnCheck = new wxCheckBox(this, ID_MENU_CB, wxT("Search menu"));
|
||||
|
||||
m_searchBtnCheck->SetValue(true);
|
||||
|
||||
box->Add(m_searchBtnCheck, 0, wxALL, 5);
|
||||
box->Add(m_cancelBtnCheck, 0, wxALL, 5);
|
||||
box->Add(m_menuBtnCheck, 0, wxALL, 5);
|
||||
|
||||
wxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizer->Add(box, 0, wxALL|wxEXPAND, 15);
|
||||
sizer->Add(m_srchCtrl, 0, wxALL|wxALIGN_CENTER, 15);
|
||||
|
||||
SetSizer(sizer);
|
||||
}
|
||||
|
||||
void SearchCtrlWidgetsPage::CreateControl()
|
||||
{
|
||||
if (m_srchCtrl)
|
||||
m_srchCtrl->Destroy();
|
||||
|
||||
int style = 0;
|
||||
|
||||
m_srchCtrl = new wxSearchCtrl(this, -1, wxEmptyString, wxDefaultPosition,
|
||||
wxSize(150, -1), style);
|
||||
}
|
||||
|
||||
void SearchCtrlWidgetsPage::Reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
wxMenu* SearchCtrlWidgetsPage::CreateTestMenu()
|
||||
{
|
||||
wxMenu* menu = new wxMenu;
|
||||
const int SEARCH_MENU_SIZE = 5;
|
||||
wxMenuItem* menuItem = menu->Append(wxID_ANY, _T("Recent Searches"), wxT(""), wxITEM_NORMAL);
|
||||
menuItem->Enable(false);
|
||||
for ( int i = 0; i < SEARCH_MENU_SIZE; i++ )
|
||||
{
|
||||
wxString itemText = wxString::Format(wxT("item %i"),i);
|
||||
wxString tipText = wxString::Format(wxT("tip %i"),i);
|
||||
menu->Append(ID_SEARCHMENU+i, itemText, tipText, wxITEM_NORMAL);
|
||||
}
|
||||
// target->Connect(
|
||||
// ID_SEARCHMENU,
|
||||
// ID_SEARCHMENU+SEARCH_MENU_SIZE,
|
||||
// wxEVT_COMMAND_MENU_SELECTED,
|
||||
// wxCommandEventHandler(MySearchCtrl::OnSearchMenu)
|
||||
// );
|
||||
return menu;
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// event handlers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void SearchCtrlWidgetsPage::OnToggleSearchButton(wxCommandEvent&)
|
||||
{
|
||||
m_srchCtrl->SetSearchButtonVisible( m_searchBtnCheck->GetValue() );
|
||||
}
|
||||
|
||||
void SearchCtrlWidgetsPage::OnToggleCancelButton(wxCommandEvent&)
|
||||
{
|
||||
m_srchCtrl->SetCancelButtonVisible( m_cancelBtnCheck->GetValue() );
|
||||
|
||||
}
|
||||
|
||||
void SearchCtrlWidgetsPage::OnToggleSearchMenu(wxCommandEvent&)
|
||||
{
|
||||
if ( m_menuBtnCheck->GetValue() )
|
||||
m_srchCtrl->SetMenu( CreateTestMenu() );
|
||||
else
|
||||
m_srchCtrl->SetMenu(NULL);
|
||||
}
|
||||
|
||||
|
||||
#endif // wxUSE_SEARCHCTRL
|
@@ -22,6 +22,7 @@
|
||||
notebook.cpp
|
||||
odcombobox.cpp
|
||||
radiobox.cpp
|
||||
searchctrl.cpp
|
||||
slider.cpp
|
||||
spinbtn.cpp
|
||||
static.cpp
|
||||
|
@@ -536,6 +536,10 @@ SOURCE=.\..\sample.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\searchctrl.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\slider.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
Reference in New Issue
Block a user