1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/editlbox.h
3 // Purpose:     ListBox with editable items
4 // Author:      Vaclav Slavik
5 // Copyright:   (c) Vaclav Slavik
6 // Licence:     wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
8 
9 
10 #ifndef __WX_EDITLBOX_H__
11 #define __WX_EDITLBOX_H__
12 
13 #include "wx/defs.h"
14 
15 #if wxUSE_EDITABLELISTBOX
16 
17 #include "wx/panel.h"
18 
19 class WXDLLIMPEXP_FWD_CORE wxBitmapButton;
20 class WXDLLIMPEXP_FWD_CORE wxListCtrl;
21 class WXDLLIMPEXP_FWD_CORE wxListEvent;
22 
23 #define wxEL_ALLOW_NEW          0x0100
24 #define wxEL_ALLOW_EDIT         0x0200
25 #define wxEL_ALLOW_DELETE       0x0400
26 #define wxEL_NO_REORDER         0x0800
27 #define wxEL_DEFAULT_STYLE      (wxEL_ALLOW_NEW | wxEL_ALLOW_EDIT | wxEL_ALLOW_DELETE)
28 
29 extern WXDLLIMPEXP_DATA_ADV(const char) wxEditableListBoxNameStr[];
30 
31 // This class provides a composite control that lets the
32 // user easily enter list of strings
33 
34 class WXDLLIMPEXP_ADV wxEditableListBox : public wxPanel
35 {
36 public:
wxEditableListBox()37     wxEditableListBox() { Init(); }
38 
39     wxEditableListBox(wxWindow *parent, wxWindowID id,
40                       const wxString& label,
41                       const wxPoint& pos = wxDefaultPosition,
42                       const wxSize& size = wxDefaultSize,
43                       long style = wxEL_DEFAULT_STYLE,
44                       const wxString& name = wxEditableListBoxNameStr)
45     {
46         Init();
47         Create(parent, id, label, pos, size, style, name);
48     }
49 
50     bool Create(wxWindow *parent, wxWindowID id,
51                 const wxString& label,
52                 const wxPoint& pos = wxDefaultPosition,
53                 const wxSize& size = wxDefaultSize,
54                 long style = wxEL_DEFAULT_STYLE,
55                 const wxString& name = wxEditableListBoxNameStr);
56 
57     void SetStrings(const wxArrayString& strings);
58     void GetStrings(wxArrayString& strings) const;
59 
GetListCtrl()60     wxListCtrl* GetListCtrl()       { return m_listCtrl; }
GetDelButton()61     wxBitmapButton* GetDelButton()  { return m_bDel; }
GetNewButton()62     wxBitmapButton* GetNewButton()  { return m_bNew; }
GetUpButton()63     wxBitmapButton* GetUpButton()   { return m_bUp; }
GetDownButton()64     wxBitmapButton* GetDownButton() { return m_bDown; }
GetEditButton()65     wxBitmapButton* GetEditButton() { return m_bEdit; }
66 
67 protected:
68     wxBitmapButton *m_bDel, *m_bNew, *m_bUp, *m_bDown, *m_bEdit;
69     wxListCtrl *m_listCtrl;
70     int m_selection;
71     long m_style;
72 
Init()73     void Init()
74     {
75         m_style = 0;
76         m_selection = 0;
77         m_bEdit = m_bNew = m_bDel = m_bUp = m_bDown = NULL;
78         m_listCtrl = NULL;
79     }
80 
81     void OnItemSelected(wxListEvent& event);
82     void OnEndLabelEdit(wxListEvent& event);
83     void OnNewItem(wxCommandEvent& event);
84     void OnDelItem(wxCommandEvent& event);
85     void OnEditItem(wxCommandEvent& event);
86     void OnUpItem(wxCommandEvent& event);
87     void OnDownItem(wxCommandEvent& event);
88 
89     DECLARE_CLASS(wxEditableListBox)
90     DECLARE_EVENT_TABLE()
91 
92 private:
93     void SwapItems(long i1, long i2);
94 
95 };
96 
97 #endif  // wxUSE_EDITABLELISTBOX
98 
99 #endif // __WX_EDITLBOX_H__
100