]> git.saurik.com Git - wxWidgets.git/blob - contrib/include/wx/deprecated/proplist.h
02c874e5323194d435b0529937f1123b597523f3
[wxWidgets.git] / contrib / include / wx / deprecated / proplist.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: proplist.h
3 // Purpose: Property list classes
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 04/01/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 /*
13
14 TO DO:
15
16 (1) Optional popup-help for each item, and an optional Help button
17 for dialog.
18
19 (2) Align Ok, Cancel, Help buttons properly.
20
21 (3) Consider retrieving the rectangle on the panel that can be
22 drawn into (where the value listbox is) and giving an example
23 of editing graphically. May be too fancy.
24
25 (4) Deriveable types for wxPropertyValue => may need to reorganise
26 wxPropertyValue to use inheritance rather than present all-types-in-one
27 scheme.
28
29 (5) Optional popup panel for value list, perhaps.
30
31 (6) Floating point checking routine still crashes with Floating
32 point error for zany input.
33
34 (7) Property sheet with choice (or listbox) to select alternative
35 sheets... multiple views per panel, only one active. For this
36 we really need a wxChoice that can be dynamically set: XView
37 may be a problem; Motif?
38
39 (8) More example validators, e.g. colour selector.
40 */
41
42 #ifndef _WX_PROPLIST_H_
43 #define _WX_PROPLIST_H_
44
45 #if defined(__GNUG__) && !defined(__APPLE__)
46 #pragma interface "proplist.h"
47 #endif
48
49 #include "wx/deprecated/setup.h"
50
51 #if wxUSE_PROPSHEET
52
53 #include "wx/deprecated/prop.h"
54 #include "wx/panel.h"
55
56 #define wxPROP_BUTTON_CLOSE 1
57 #define wxPROP_BUTTON_OK 2
58 #define wxPROP_BUTTON_CANCEL 4
59 #define wxPROP_BUTTON_CHECK_CROSS 8
60 #define wxPROP_BUTTON_HELP 16
61 #define wxPROP_DYNAMIC_VALUE_FIELD 32
62 #define wxPROP_PULLDOWN 64
63 #define wxPROP_SHOWVALUES 128
64
65 // Show OK/Cancel buttons on X-based systems where window management is
66 // more awkward
67 #if defined(__WXMOTIF__) || defined(__WXGTK__)
68 #define wxPROP_BUTTON_DEFAULT wxPROP_BUTTON_OK | wxPROP_BUTTON_CANCEL | wxPROP_BUTTON_CHECK_CROSS | wxPROP_PULLDOWN
69 #else
70 #define wxPROP_BUTTON_DEFAULT wxPROP_BUTTON_CHECK_CROSS | wxPROP_PULLDOWN | wxPROP_SHOWVALUES
71 #endif
72
73 #define wxID_PROP_CROSS 3000
74 #define wxID_PROP_CHECK 3001
75 #define wxID_PROP_EDIT 3002
76 #define wxID_PROP_TEXT 3003
77 #define wxID_PROP_SELECT 3004
78 #define wxID_PROP_VALUE_SELECT 3005
79
80 // Mediates between a physical panel and the property sheet
81 class WXDLLEXPORT wxPropertyListView: public wxPropertyView
82 {
83 public:
84 wxPropertyListView(wxPanel *propPanel = NULL, long flags = wxPROP_BUTTON_DEFAULT);
85 ~wxPropertyListView(void);
86
87 // Associates and shows the view
88 virtual void ShowView(wxPropertySheet *propertySheet, wxPanel *panel);
89
90 // Update this view of the viewed object, called e.g. by
91 // the object itself.
92 virtual bool OnUpdateView(void);
93
94 wxString MakeNameValueString(wxString name, wxString value);
95
96 // Update a single line in the list of properties
97 virtual bool UpdatePropertyDisplayInList(wxProperty *property);
98
99 // Update the whole list
100 virtual bool UpdatePropertyList(bool clearEditArea = TRUE);
101
102 // Find the wxListBox index corresponding to this property
103 virtual int FindListIndexForProperty(wxProperty *property);
104
105 // Select and show string representation in editor the given
106 // property. NULL resets to show no property.
107 virtual bool ShowProperty(wxProperty *property, bool select = TRUE);
108 virtual bool EditProperty(wxProperty *property);
109
110 // Update the display from the property
111 virtual bool DisplayProperty(wxProperty *property);
112 // Update the property from the display
113 virtual bool RetrieveProperty(wxProperty *property);
114
115 // Find appropriate validator and load property into value controls
116 virtual bool BeginShowingProperty(wxProperty *property);
117 // Find appropriate validator and unload property from value controls
118 virtual bool EndShowingProperty(wxProperty *property);
119
120 // Begin detailed editing (e.g. using value listbox)
121 virtual void BeginDetailedEditing(void);
122
123 // End detailed editing (e.g. using value listbox)
124 virtual void EndDetailedEditing(void);
125
126 // Called by the property listbox
127 void OnPropertySelect(wxCommandEvent& event);
128
129 // Called by the value listbox
130 void OnValueListSelect(wxCommandEvent& event);
131
132 virtual bool CreateControls(void);
133 virtual void ShowTextControl(bool show);
134 virtual void ShowListBoxControl(bool show);
135 virtual void EnableCheck(bool show);
136 virtual void EnableCross(bool show);
137
138 void OnOk(wxCommandEvent& event);
139 void OnCancel(wxCommandEvent& event);
140 void OnHelp(wxCommandEvent& event);
141 void OnPropertyDoubleClick(wxCommandEvent& event);
142 // virtual void OnDoubleClick(void);
143
144 void OnCheck(wxCommandEvent& event);
145 void OnCross(wxCommandEvent& event);
146 void OnEdit(wxCommandEvent& event);
147 void OnText(wxCommandEvent& event);
148
149 inline virtual wxListBox *GetPropertyScrollingList() const { return m_propertyScrollingList; }
150 inline virtual wxListBox *GetValueList() const { return m_valueList; }
151 inline virtual wxTextCtrl *GetValueText() const { return m_valueText; }
152 inline virtual wxButton *GetConfirmButton() const { return m_confirmButton; }
153 inline virtual wxButton *GetCancelButton() const { return m_cancelButton; }
154 inline virtual wxButton *GetEditButton() const { return m_editButton; }
155 inline virtual bool GetDetailedEditing(void) const { return m_detailedEditing; }
156
157 inline virtual void AssociatePanel(wxPanel *win) { m_propertyWindow = win; }
158 inline virtual wxPanel *GetPanel(void) const { return m_propertyWindow; }
159
160 inline virtual void SetManagedWindow(wxWindow *win) { m_managedWindow = win; }
161 inline virtual wxWindow *GetManagedWindow(void) const { return m_managedWindow; }
162
163 inline virtual wxButton *GetWindowCloseButton() const { return m_windowCloseButton; }
164 inline virtual wxButton *GetWindowCancelButton() const { return m_windowCancelButton; }
165 inline virtual wxButton *GetHelpButton() const { return m_windowHelpButton; }
166
167 bool OnClose(void);
168
169 public:
170 static bool sm_dialogCancelled;
171
172 protected:
173 wxListBox* m_propertyScrollingList;
174 wxListBox* m_valueList; // Should really be a combobox, but we don't have one.
175 wxTextCtrl* m_valueText;
176 wxButton* m_confirmButton; // A tick, as in VB
177 wxButton* m_cancelButton; // A cross, as in VB
178 wxButton* m_editButton; // Invokes the custom validator, if any
179 wxSizer* m_middleSizer;
180
181 bool m_detailedEditing; // E.g. using listbox for choices
182
183 wxPanel* m_propertyWindow; // Panel that the controls will appear on
184 wxWindow* m_managedWindow; // Frame or dialog
185
186 wxButton* m_windowCloseButton; // Or OK
187 wxButton* m_windowCancelButton;
188 wxButton* m_windowHelpButton;
189
190 private:
191 DECLARE_DYNAMIC_CLASS(wxPropertyListView)
192 DECLARE_EVENT_TABLE()
193
194 virtual void ShowView(wxPropertySheet *propertySheet, wxWindow *window)
195 { wxPropertyView::ShowView(propertySheet, window); };
196 };
197
198 class WXDLLEXPORT wxPropertyTextEdit: public wxTextCtrl
199 {
200 public:
201 wxPropertyTextEdit(wxPropertyListView *v = NULL,
202 wxWindow *parent = NULL,
203 const wxWindowID id = -1,
204 const wxString& value = wxEmptyString,
205 const wxPoint& pos = wxDefaultPosition,
206 const wxSize& size = wxDefaultSize,
207 long style = 0,
208 const wxString& name = wxT("text"));
209
210 void OnSetFocus();
211 void OnKillFocus();
212
213 wxPropertyListView* m_view;
214
215 private:
216 DECLARE_CLASS(wxPropertyTextEdit)
217 };
218
219 #define wxPROP_ALLOW_TEXT_EDITING 1
220
221 /*
222 * The type of validator used for property lists (Visual Basic style)
223 */
224
225 class WXDLLEXPORT wxPropertyListValidator: public wxPropertyValidator
226 {
227 public:
228 wxPropertyListValidator(long flags = wxPROP_ALLOW_TEXT_EDITING): wxPropertyValidator(flags) { }
229 ~wxPropertyListValidator() {}
230
231 // Called when the property is selected or deselected: typically displays the value
232 // in the edit control (having chosen a suitable control to display: (non)editable text or listbox)
233 virtual bool OnSelect(bool select, wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
234
235 // Called when the property is double clicked. Extra functionality can be provided, such as
236 // cycling through possible values.
237 inline virtual bool OnDoubleClick(
238 wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) )
239 { return TRUE; }
240
241 // Called when the value listbox is selected. Default behaviour is to copy
242 // string to text control, and retrieve the value into the property.
243 virtual bool OnValueListSelect(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
244
245 // Called when the property value is edited using standard text control
246 inline virtual bool OnPrepareControls(
247 wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) )
248 { return TRUE; }
249
250 virtual bool OnClearControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
251
252 // Called when the property is edited in detail
253 inline virtual bool OnPrepareDetailControls(
254 wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) )
255 { return TRUE; }
256
257 // Called if focus lost, IF we're in a modeless property editing situation.
258 inline virtual bool OnClearDetailControls(
259 wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) )
260 { return TRUE; }
261
262 // Called when the edit (...) button is pressed. The default implementation
263 // calls view->BeginDetailedEditing; the filename validator (for example) overrides
264 // this function to show the file selector.
265 virtual void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
266
267 // Called when TICK is pressed or focus is lost.
268 // Return FALSE if value didn't check out; signal to restore old value.
269 inline virtual bool OnCheckValue(
270 wxProperty *WXUNUSED(property), wxPropertyListView *WXUNUSED(view), wxWindow *WXUNUSED(parentWindow) )
271 { return TRUE; }
272
273 // Called when TICK is pressed or focus is lost or view wants to update
274 // the property list.
275 // Does the transferance from the property editing area to the property itself
276 virtual bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
277
278 virtual bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
279
280 private:
281 DECLARE_DYNAMIC_CLASS(wxPropertyListValidator)
282 };
283
284 /*
285 * A default dialog box class to use.
286 */
287
288 class WXDLLEXPORT wxPropertyListDialog: public wxDialog
289 {
290 public:
291 wxPropertyListDialog(wxPropertyListView *v = NULL,
292 wxWindow *parent = NULL,
293 const wxString& title = wxEmptyString,
294 const wxPoint& pos = wxDefaultPosition,
295 const wxSize& size = wxDefaultSize,
296 long style = wxDEFAULT_DIALOG_STYLE,
297 const wxString& name = wxT("dialogBox"));
298
299 void OnCloseWindow(wxCloseEvent& event);
300 void OnDefaultAction(wxControl *item);
301 void OnCancel(wxCommandEvent& event);
302
303 // Extend event processing to search the view's event table
304 virtual bool ProcessEvent(wxEvent& event);
305
306 private:
307 wxPropertyListView* m_view;
308
309 private:
310 DECLARE_CLASS(wxPropertyListDialog)
311 DECLARE_EVENT_TABLE()
312 };
313
314 /*
315 * A default panel class to use.
316 */
317
318 class WXDLLEXPORT wxPropertyListPanel: public wxPanel
319 {
320 public:
321 wxPropertyListPanel(wxPropertyListView *v = NULL,
322 wxWindow *parent = NULL,
323 const wxPoint& pos = wxDefaultPosition,
324 const wxSize& size = wxDefaultSize,
325 long style = 0,
326 const wxString& name = wxT("panel"))
327 : wxPanel(parent, -1, pos, size, style, name)
328 {
329 m_view = v;
330 }
331 ~wxPropertyListPanel();
332 void OnDefaultAction(wxControl *item);
333
334 inline void SetView(wxPropertyListView* v) { m_view = v; }
335 inline wxPropertyListView* GetView() const { return m_view; }
336
337 // Extend event processing to search the view's event table
338 virtual bool ProcessEvent(wxEvent& event);
339
340 // Call Layout()
341 void OnSize(wxSizeEvent& event);
342
343 private:
344 wxPropertyListView* m_view;
345
346 private:
347 DECLARE_EVENT_TABLE()
348 DECLARE_CLASS(wxPropertyListPanel)
349 };
350
351 /*
352 * A default frame class to use.
353 */
354
355 class WXDLLEXPORT wxPropertyListFrame: public wxFrame
356 {
357 public:
358 wxPropertyListFrame(wxPropertyListView *v = NULL,
359 wxFrame *parent = NULL,
360 const wxString& title = wxEmptyString,
361 const wxPoint& pos = wxDefaultPosition,
362 const wxSize& size = wxDefaultSize,
363 long style = wxDEFAULT_FRAME_STYLE,
364 const wxString& name = _T("frame"))
365 : wxFrame(parent, -1, title, pos, size, style, name)
366 {
367 m_view = v;
368 m_propertyPanel = NULL;
369 }
370 void OnCloseWindow(wxCloseEvent& event);
371
372 // Must call this to create panel and associate view
373 virtual bool Initialize(void);
374 virtual wxPropertyListPanel *OnCreatePanel(wxFrame *parent, wxPropertyListView *v);
375 inline virtual wxPropertyListPanel *GetPropertyPanel(void) const { return m_propertyPanel; }
376 inline wxPropertyListView* GetView() const { return m_view; }
377
378 private:
379 wxPropertyListView* m_view;
380 wxPropertyListPanel* m_propertyPanel;
381
382 private:
383 DECLARE_EVENT_TABLE()
384 DECLARE_CLASS(wxPropertyListFrame)
385 };
386
387 /*
388 * Some default validators
389 */
390
391 class WXDLLEXPORT wxRealListValidator: public wxPropertyListValidator
392 {
393 public:
394 // 0.0, 0.0 means no range
395 wxRealListValidator(float min = 0.0, float max = 0.0, long flags = wxPROP_ALLOW_TEXT_EDITING):wxPropertyListValidator(flags)
396 { m_realMin = min; m_realMax = max; }
397 ~wxRealListValidator() {}
398
399 bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
400
401 // Called when TICK is pressed or focus is lost.
402 // Return FALSE if value didn't check out; signal to restore old value.
403 bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
404
405 // Called when TICK is pressed or focus is lost or view wants to update
406 // the property list.
407 // Does the transfer from the property editing area to the property itself
408 bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
409
410 protected:
411 float m_realMin;
412 float m_realMax;
413
414 private:
415 DECLARE_DYNAMIC_CLASS(wxRealListValidator)
416 };
417
418 class WXDLLEXPORT wxIntegerListValidator: public wxPropertyListValidator
419 {
420 public:
421 // 0, 0 means no range
422 wxIntegerListValidator(long min = 0, long max = 0, long flags = wxPROP_ALLOW_TEXT_EDITING):wxPropertyListValidator(flags)
423 {
424 m_integerMin = min; m_integerMax = max;
425 }
426 ~wxIntegerListValidator() {}
427
428 bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
429
430 // Called when TICK is pressed or focus is lost.
431 // Return FALSE if value didn't check out; signal to restore old value.
432 bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
433
434 // Called when TICK is pressed or focus is lost or view wants to update
435 // the property list.
436 // Does the transfer from the property editing area to the property itself
437 bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
438
439 protected:
440 long m_integerMin;
441 long m_integerMax;
442
443 private:
444 DECLARE_DYNAMIC_CLASS(wxIntegerListValidator)
445 };
446
447 class WXDLLEXPORT wxBoolListValidator: public wxPropertyListValidator
448 {
449 public:
450 wxBoolListValidator(long flags = 0):wxPropertyListValidator(flags) {}
451 ~wxBoolListValidator() {}
452
453 bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
454 bool OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
455 bool OnClearDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
456
457 // Called when TICK is pressed or focus is lost.
458 // Return FALSE if value didn't check out; signal to restore old value.
459 bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
460
461 // Called when TICK is pressed or focus is lost or view wants to update
462 // the property list.
463 // Does the transfer from the property editing area to the property itself
464 bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
465 bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
466
467 // Called when the property is double clicked. Extra functionality can be provided,
468 // cycling through possible values.
469 virtual bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
470
471 private:
472 DECLARE_DYNAMIC_CLASS(wxBoolListValidator)
473 };
474
475 class WXDLLEXPORT wxStringListValidator: public wxPropertyListValidator
476 {
477 public:
478 wxStringListValidator(wxStringList *list = NULL, long flags = 0);
479
480 ~wxStringListValidator()
481 {
482 if (m_strings)
483 delete m_strings;
484 }
485
486 bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
487 bool OnPrepareDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
488 bool OnClearDetailControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
489
490 // Called when TICK is pressed or focus is lost.
491 // Return FALSE if value didn't check out; signal to restore old value.
492 bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
493
494 // Called when TICK is pressed or focus is lost or view wants to update
495 // the property list.
496 // Does the transfer from the property editing area to the property itself
497 bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
498 bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
499
500 // Called when the property is double clicked. Extra functionality can be provided,
501 // cycling through possible values.
502 bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
503
504 protected:
505 wxStringList* m_strings;
506
507 private:
508 DECLARE_DYNAMIC_CLASS(wxStringListValidator)
509 };
510
511 class WXDLLEXPORT wxFilenameListValidator: public wxPropertyListValidator
512 {
513 public:
514 wxFilenameListValidator(wxString message = wxT("Select a file"), wxString wildcard = wxALL_FILES_PATTERN, long flags = 0);
515 ~wxFilenameListValidator();
516
517 // Called when TICK is pressed or focus is lost.
518 // Return FALSE if value didn't check out; signal to restore old value.
519 bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
520
521 // Called when TICK is pressed or focus is lost or view wants to update
522 // the property list.
523 // Does the transferance from the property editing area to the property itself
524 bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
525 bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
526
527 bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
528
529 bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
530
531 // Called when the edit (...) button is pressed.
532 void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
533
534 protected:
535 wxString m_filenameWildCard;
536 wxString m_filenameMessage;
537
538 private:
539 DECLARE_DYNAMIC_CLASS(wxFilenameListValidator)
540 };
541
542 class WXDLLEXPORT wxColourListValidator: public wxPropertyListValidator
543 {
544 public:
545 wxColourListValidator(long flags = 0);
546 ~wxColourListValidator();
547
548 bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
549 bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
550 bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
551
552 bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
553
554 bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
555
556 // Called when the edit (...) button is pressed.
557 void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
558
559 private:
560 DECLARE_DYNAMIC_CLASS(wxColourListValidator)
561 };
562
563 class WXDLLEXPORT wxListOfStringsListValidator: public wxPropertyListValidator
564 {
565 public:
566 wxListOfStringsListValidator(long flags = 0);
567 ~wxListOfStringsListValidator() {}
568
569 bool OnPrepareControls(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
570
571 // Called when TICK is pressed or focus is lost.
572 // Return FALSE if value didn't check out; signal to restore old value.
573 bool OnCheckValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
574
575 // Called when TICK is pressed or focus is lost or view wants to update
576 // the property list.
577 // Does the transfer from the property editing area to the property itself
578 bool OnRetrieveValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
579 bool OnDisplayValue(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
580
581 // Called when the property is double clicked.
582 bool OnDoubleClick(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
583
584 bool EditStringList(wxWindow *parent, wxStringList *stringList, const wxChar *title = wxT("String List Editor"));
585
586 // Called when the edit (...) button is pressed.
587 void OnEdit(wxProperty *property, wxPropertyListView *view, wxWindow *parentWindow);
588
589 private:
590 DECLARE_DYNAMIC_CLASS(wxListOfStringsListValidator)
591 };
592
593 #endif
594 // wxUSE_PROPSHEET
595
596 #endif
597 // _WX_PROPLIST_H_