Add native wxSearchCtrl for GTK+ port
This commit is contained in:
139
include/wx/gtk/srchctrl.h
Normal file
139
include/wx/gtk/srchctrl.h
Normal file
@@ -0,0 +1,139 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/gtk/srchctrl.h
|
||||
// Purpose: wxSearchCtrl class - native
|
||||
// Author: Kettab Ali
|
||||
// Created: 2019-12-23
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_GTK_SEARCHCTRL_H_
|
||||
#define _WX_GTK_SEARCHCTRL_H_
|
||||
|
||||
#if wxUSE_SEARCHCTRL
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxSearchCtrl
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLIMPEXP_CORE wxSearchCtrl : public wxSearchCtrlBase
|
||||
{
|
||||
public:
|
||||
// creation
|
||||
// --------
|
||||
|
||||
wxSearchCtrl() : wxSearchCtrlBase()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
wxSearchCtrl(wxWindow *parent, wxWindowID id,
|
||||
const wxString& value = wxEmptyString,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = 0,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxSearchCtrlNameStr)
|
||||
: wxSearchCtrlBase()
|
||||
{
|
||||
Init();
|
||||
Create(parent, id, value, pos, size, style, validator, name);
|
||||
}
|
||||
|
||||
virtual ~wxSearchCtrl();
|
||||
|
||||
bool Create(wxWindow *parent, wxWindowID id,
|
||||
const wxString& value = wxEmptyString,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
long style = 0,
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxSearchCtrlNameStr);
|
||||
|
||||
#if wxUSE_MENUS
|
||||
// get/set search button menu
|
||||
// --------------------------
|
||||
virtual void SetMenu( wxMenu* menu ) wxOVERRIDE;
|
||||
virtual wxMenu* GetMenu() wxOVERRIDE;
|
||||
#endif // wxUSE_MENUS
|
||||
|
||||
// get/set search options
|
||||
// ----------------------
|
||||
virtual void ShowSearchButton( bool show ) wxOVERRIDE;
|
||||
virtual bool IsSearchButtonVisible() const wxOVERRIDE;
|
||||
|
||||
virtual void ShowCancelButton( bool show ) wxOVERRIDE;
|
||||
virtual bool IsCancelButtonVisible() const wxOVERRIDE;
|
||||
|
||||
virtual void SetDescriptiveText(const wxString& text) wxOVERRIDE;
|
||||
virtual wxString GetDescriptiveText() const wxOVERRIDE;
|
||||
|
||||
// accessors
|
||||
// ---------
|
||||
virtual int GetLineLength(long lineNo) const wxOVERRIDE;
|
||||
virtual wxString GetLineText(long lineNo) const wxOVERRIDE;
|
||||
virtual int GetNumberOfLines() const wxOVERRIDE;
|
||||
|
||||
virtual bool IsModified() const wxOVERRIDE;
|
||||
|
||||
// sets/clears the dirty flag
|
||||
virtual void MarkDirty() wxOVERRIDE;
|
||||
virtual void DiscardEdits() wxOVERRIDE;
|
||||
|
||||
// translate between the position (which is just an index in the text ctrl
|
||||
// considering all its contents as a single strings) and (x, y) coordinates
|
||||
// which represent column and line.
|
||||
virtual long XYToPosition(long x, long y) const wxOVERRIDE;
|
||||
virtual bool PositionToXY(long pos, long *x, long *y) const wxOVERRIDE;
|
||||
|
||||
virtual void ShowPosition(long pos) wxOVERRIDE;
|
||||
|
||||
virtual void Clear() wxOVERRIDE;
|
||||
|
||||
#if wxUSE_MENUS
|
||||
void PopupSearchMenu();
|
||||
#endif // wxUSE_MENUS
|
||||
|
||||
private:
|
||||
// From wxTextEntry:
|
||||
virtual wxWindow *GetEditableWindow() wxOVERRIDE { return this; }
|
||||
virtual GtkEditable *GetEditable() const wxOVERRIDE;
|
||||
|
||||
|
||||
void Init();
|
||||
|
||||
void GTKCreateSearchEntryWidget();
|
||||
|
||||
// Event handlers
|
||||
void OnChar(wxKeyEvent& event);
|
||||
void OnText(wxCommandEvent& event);
|
||||
void OnTextEnter(wxCommandEvent& event);
|
||||
|
||||
bool HasMenu() const
|
||||
{
|
||||
#if wxUSE_MENUS
|
||||
return m_menu != NULL;
|
||||
#else // !wxUSE_MENUS
|
||||
return false;
|
||||
#endif // wxUSE_MENUS/!wxUSE_MENUS
|
||||
}
|
||||
|
||||
private:
|
||||
virtual GtkEntry *GetEntry() const wxOVERRIDE
|
||||
{ return m_entry; }
|
||||
|
||||
GtkEntry *m_entry;
|
||||
|
||||
#if wxUSE_MENUS
|
||||
wxMenu *m_menu;
|
||||
#endif // wxUSE_MENUS
|
||||
|
||||
bool m_modified;
|
||||
bool m_cancelButtonVisible;
|
||||
|
||||
wxDECLARE_DYNAMIC_CLASS(wxSearchCtrl);
|
||||
wxDECLARE_EVENT_TABLE();
|
||||
};
|
||||
|
||||
#endif // wxUSE_SEARCHCTRL
|
||||
|
||||
#endif // _WX_GTK_SEARCHCTRL_H_
|
Reference in New Issue
Block a user