--- /dev/null
+\section{\class{wxEditableListBox}}\label{wxeditablelistbox}
+
+An editable listbox is composite control that lets the
+user easily enter, delete and reorder a list of strings.
+
+\wxheading{Derived from}
+
+\helpref{wxPanel}{wxpanel}\\
+\helpref{wxWindow}{wxwindow}\\
+\helpref{wxEvtHandler}{wxevthandler}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{Include files}
+
+<wx/editlbox.h>
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxEL\_ALLOW\_NEW}}{Allows the user to enter new strings.}
+\twocolitem{\windowstyle{wxEL\_ALLOW\_EDIT}}{Allows the user to edit existing strings.}
+\twocolitem{\windowstyle{wxEL\_ALLOW\_DELETE}}{Allows the user to delete existing strings.}
+\twocolitem{\windowstyle{wxEL\_NO\_REORDER}}{Does not allow the user to reorder the strings.}
+\twocolitem{\windowstyle{wxEL\_DEFAULT\_STYLE}}{wxEL\_ALLOW\_NEW|wxEL\_ALLOW\_EDIT|wxEL\_ALLOW\_DELETE}
+\end{twocollist}
+
+See also \helpref{window styles overview}{windowstyles}.
+
+\wxheading{See also}
+
+\helpref{wxListBox}{wxlistbox}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxEditableListBox::wxEditableListBox}\label{wxeditablelistboxctor}
+
+\func{}{wxEditableListBox}{\void}
+
+Default constructor.
+
+\func{}{wxEditableListBox}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id},\rtfsp
+\param{const wxString\&}{ label},\param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\&}{ size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxEL\_DEFAULT\_STYLE}, \param{const wxString\& }{name = ``editableListBox"}}
+
+Constructor, creating and showing a list box.
+
+\wxheading{Parameters}
+
+\docparam{parent}{Parent window. Must not be NULL.}
+
+\docparam{id}{Window identifier. A value of -1 indicates a default value.}
+
+\docparam{label}{The text shown just before the list control.}
+
+\docparam{pos}{Window position.}
+
+\docparam{size}{Window size. If the default size (-1, -1) is specified then the window is sized
+appropriately.}
+
+\docparam{style}{Window style. See \helpref{wxEditableListBox}{wxeditablelistbox}.}
+
+\docparam{name}{Window name.}
+
+\wxheading{See also}
+
+\helpref{wxEditableListBox::Create}{wxeditablelistboxcreate}
+
+\membersection{wxEditableListBox::\destruct{wxEditableListBox}}\label{wxeditablelistboxdtor}
+
+\func{void}{\destruct{wxEditableListBox}}{\void}
+
+Destructor, destroying the list box.
+
+\membersection{wxEditableListBox::Create}\label{wxeditablelistboxcreate}
+
+\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id},\rtfsp
+\param{const wxString\&}{ label},\param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
+\param{const wxSize\&}{ size = wxDefaultSize},\rtfsp
+\param{long}{ style = wxEL\_DEFAULT\_STYLE}, \param{const wxString\& }{name = ``editableListBox"}}
+
+Creates the editable listbox for two-step construction. See \helpref{wxEditableListBox::wxEditableListBox}{wxeditablelistboxctor}\rtfsp
+for further details.
+
+\membersection{wxEditableListBox::SetStrings}\label{wxeditablelistboxsetstrings}
+
+\func{void}{SetStrings}{\param{const wxArrayString\&}{ strings}}
+
+Replaces current contents with given strings.
+
+\membersection{wxEditableListBox::GetStrings}\label{wxeditablelistboxgetstrings}
+
+\constfunc{void}{GetSelections}{\param{wxArrayString\& }{strings}}
+
+Returns in the given array the current contents of the control
+(the array will be erased before control's contents are appended).
#define wxEL_ALLOW_EDIT 0x0200
#define wxEL_ALLOW_DELETE 0x0400
#define wxEL_NO_REORDER 0x0800
+#define wxEL_DEFAULT_STYLE (wxEL_ALLOW_NEW | wxEL_ALLOW_EDIT | wxEL_ALLOW_DELETE)
+
+extern WXDLLEXPORT_DATA(const wxChar) wxEditableListBoxNameStr[];
// This class provides a composite control that lets the
// user easily enter list of strings
class WXDLLIMPEXP_ADV wxEditableListBox : public wxPanel
{
public:
+ wxEditableListBox() { Init(); }
+
wxEditableListBox(wxWindow *parent, wxWindowID id,
const wxString& label,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
- long style = wxEL_ALLOW_NEW | wxEL_ALLOW_EDIT | wxEL_ALLOW_DELETE,
- const wxString& name = wxT("editableListBox"));
+ long style = wxEL_DEFAULT_STYLE,
+ const wxString& name = wxEditableListBoxNameStr)
+ {
+ Init();
+ Create(parent, id, label, pos, size, style, name);
+ }
+
+ bool Create(wxWindow *parent, wxWindowID id,
+ const wxString& label,
+ const wxPoint& pos = wxDefaultPosition,
+ const wxSize& size = wxDefaultSize,
+ long style = wxEL_DEFAULT_STYLE,
+ const wxString& name = wxEditableListBoxNameStr);
void SetStrings(const wxArrayString& strings);
void GetStrings(wxArrayString& strings) const;
int m_selection;
long m_style;
+ void Init()
+ {
+ m_style = 0;
+ m_selection = 0;
+ m_bEdit = m_bNew = m_bDel = m_bUp = m_bDown = NULL;
+ m_listCtrl = NULL;
+ }
+
void OnItemSelected(wxListEvent& event);
void OnEndLabelEdit(wxListEvent& event);
void OnNewItem(wxCommandEvent& event);
#include "wx/sizer.h"
#include "wx/listctrl.h"
+// ============================================================================
+// implementation
+// ============================================================================
+
+const wxChar wxEditableListBoxNameStr[] = wxT("editableListBox");
+
static char * eledit_xpm[] = {
"16 16 3 1",
" c None",
EVT_SIZE(CleverListCtrl::OnSize)
END_EVENT_TABLE()
+
+// ----------------------------------------------------------------------------
+// wxEditableListBox
+// ----------------------------------------------------------------------------
+
IMPLEMENT_CLASS(wxEditableListBox, wxPanel)
// NB: generate the IDs at runtime to avoid conflict with XRCID values,
EVT_BUTTON(wxID_ELB_DELETE, wxEditableListBox::OnDelItem)
END_EVENT_TABLE()
-wxEditableListBox::wxEditableListBox(wxWindow *parent, wxWindowID id,
+bool wxEditableListBox::Create(wxWindow *parent, wxWindowID id,
const wxString& label,
const wxPoint& pos, const wxSize& size,
long style,
const wxString& name)
- : wxPanel(parent, id, pos, size, wxTAB_TRAVERSAL, name)
{
+ if (!wxPanel::Create(parent, id, pos, size, wxTAB_TRAVERSAL, name))
+ return false;
+
m_style = style;
- m_bEdit = m_bNew = m_bDel = m_bUp = m_bDown = NULL;
wxSizer *sizer = new wxBoxSizer(wxVERTICAL);