]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/propgrid/propgridiface.h
Removed wxNavigationKey code, new keyboard navigation
[wxWidgets.git] / interface / wx / propgrid / propgridiface.h
CommitLineData
1c4293cb
VZ
1/////////////////////////////////////////////////////////////////////////////
2// Name: property.h
3// Purpose: interface of wxPGProperty
4// Author: wxWidgets team
5// RCS-ID: $Id:
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
9// -----------------------------------------------------------------------
10
effb029c
JS
11/**
12 @class wxPropertyGridInterface
1c4293cb
VZ
13
14 Most of the shared property manipulation interface shared by wxPropertyGrid,
15 wxPropertyGridPage, and wxPropertyGridManager is defined in this class.
16
17 @remarks
effb029c
JS
18 - In separate wxPropertyGrid component this class was known as
19 wxPropertyContainerMethods.
1c4293cb 20
bba3f9b5
JS
21 - wxPropertyGridInterface's property operation member functions all accept
22 a special wxPGPropArg id argument, using which you can refer to properties
23 either by their pointer (for performance) or by their name (for conveniency).
24
1c4293cb
VZ
25 @library{wxpropgrid}
26 @category{propgrid}
27*/
28class WXDLLIMPEXP_PROPGRID wxPropertyGridInterface
29{
30public:
31
32 /** Destructor */
33 virtual ~wxPropertyGridInterface() { }
34
effb029c
JS
35 /**
36 Appends property to the list. wxPropertyGrid assumes ownership of the
37 object. Becomes child of most recently added category.
38
1c4293cb
VZ
39 @remarks
40 - wxPropertyGrid takes the ownership of the property pointer.
effb029c
JS
41 - If appending a category with name identical to a category already in
42 the wxPropertyGrid, then newly created category is deleted, and most
43 recently added category (under which properties are appended) is set
44 to the one with same name. This allows easier adding of items to same
45 categories in multiple passes.
46 - Does not automatically redraw the control, so you may need to call
47 Refresh() when calling this function after control has been shown for
48 the first time.
1c4293cb
VZ
49 */
50 wxPGProperty* Append( wxPGProperty* property );
51
effb029c
JS
52 /**
53 Same as Append(), but appends under given parent property.
54
55 @param id
56 Name or pointer to parent property.
57
58 @param newProperty
59 Property to be added.
60 */
61 wxPGProperty* AppendIn( wxPGPropArg id, wxPGProperty* newProperty );
62
63 /**
64 In order to add new items into a property with private children (for
65 instance, wxFlagsProperty), you need to call this method. After
66 populating has been finished, you need to call EndAddChildren().
1c4293cb 67
effb029c 68 @see EndAddChildren()
1c4293cb
VZ
69 */
70 void BeginAddChildren( wxPGPropArg id );
71
effb029c
JS
72 /**
73 Deletes all properties.
1c4293cb
VZ
74 */
75 virtual void Clear() = 0;
76
effb029c
JS
77 /**
78 Deselect current selection, if any.
79
80 @return Returns @true if success (ie. validator did not intercept).
81 */
1c4293cb
VZ
82 bool ClearSelection();
83
effb029c
JS
84 /**
85 Resets modified status of all properties.
1c4293cb 86 */
effb029c
JS
87 void ClearModifiedStatus();
88
89 /**
90 Collapses given category or property with children.
1c4293cb 91
effb029c 92 @return Returns @true if actually collapsed.
1c4293cb
VZ
93 */
94 bool Collapse( wxPGPropArg id );
95
effb029c
JS
96 /**
97 Collapses all items that can be collapsed.
1c4293cb 98
effb029c
JS
99 @return Returns @false if failed (may fail if value in active
100 editor cannot be validated).
1c4293cb 101 */
effb029c 102 bool CollapseAll();
1c4293cb 103
effb029c
JS
104 /**
105 Changes value of a property, as if by user. Use this instead of
106 SetPropertyValue() if you need the value to run through validation
107 process, and also send the property change event.
1c4293cb 108
effb029c 109 @return Returns @true if value was successfully changed.
1c4293cb
VZ
110 */
111 bool ChangePropertyValue( wxPGPropArg id, wxVariant newValue );
112
effb029c
JS
113 /**
114 Resets value of a property to its default.
115 */
116 bool ClearPropertyValue( wxPGPropArg id );
1c4293cb 117
effb029c
JS
118 /**
119 Deletes a property.
120 */
1c4293cb
VZ
121 void DeleteProperty( wxPGPropArg id );
122
effb029c
JS
123 /**
124 Disables a property.
125 */
126 bool DisableProperty( wxPGPropArg id );
1c4293cb 127
effb029c
JS
128 /**
129 Returns true if all property grid data changes have been committed. Usually
1c4293cb
VZ
130 only returns false if value in active editor has been invalidated by a
131 wxValidator.
132 */
133 bool EditorValidate();
134
effb029c
JS
135 /**
136 Enables or disables property.
137
138 @param id
139 Name or pointer to a property.
140
141 @param enable
142 If @false, property is disabled instead.
143 */
1c4293cb
VZ
144 bool EnableProperty( wxPGPropArg id, bool enable = true );
145
effb029c
JS
146 /**
147 Called after population of property with fixed children has finished.
148
149 @see BeginAddChildren()
1c4293cb
VZ
150 */
151 void EndAddChildren( wxPGPropArg id );
152
effb029c
JS
153 /**
154 Expands given category or property with children.
155
156 @return Returns @true if actually expanded.
1c4293cb
VZ
157 */
158 bool Expand( wxPGPropArg id );
159
effb029c
JS
160 /**
161 Expands all items that can be expanded.
1c4293cb
VZ
162 */
163 bool ExpandAll( bool expand = true );
164
effb029c
JS
165 /**
166 Returns list of expanded properties.
1c4293cb 167 */
effb029c 168 wxArrayPGProperty GetExpandedProperties() const;
1c4293cb 169
effb029c
JS
170 /**
171 Returns id of first child of given property.
1c4293cb 172
effb029c
JS
173 @remarks Does not return private children!
174 */
175 wxPGProperty* GetFirstChild( wxPGPropArg id );
1c4293cb
VZ
176
177 //@{
178 /** Returns iterator class instance.
bba3f9b5 179
1c4293cb 180 @param flags
bba3f9b5
JS
181 See @ref propgrid_iterator_flags. Value wxPG_ITERATE_DEFAULT causes
182 iteration over everything except private child properties.
183
1c4293cb 184 @param firstProp
effb029c
JS
185 Property to start iteration from. If NULL, then first child of root
186 is used.
bba3f9b5 187
1c4293cb 188 @param startPos
effb029c
JS
189 Either wxTOP or wxBOTTOM. wxTOP will indicate that iterations start
190 from the first property from the top, and wxBOTTOM means that the
191 iteration will instead begin from bottommost valid item.
192
193 <b>wxPython Note:</b> Instead of ++ operator, use Next() method, and
194 instead of * operator, use GetProperty() method.
195 */
196 wxPropertyGridIterator GetIterator( int flags = wxPG_ITERATE_DEFAULT,
197 wxPGProperty* firstProp = NULL );
198 wxPropertyGridConstIterator GetIterator( int flags = wxPG_ITERATE_DEFAULT,
199 wxPGProperty* firstProp = NULL ) const;
200 wxPropertyGridIterator GetIterator( int flags, int startPos );
201 wxPropertyGridConstIterator GetIterator( int flags, int startPos ) const;
1c4293cb
VZ
202 //@}
203
effb029c
JS
204 /**
205 Returns id of first item that matches given criteria.
206
1c4293cb 207 @param flags
effb029c 208 See @ref propgrid_iterator_flags.
1c4293cb 209 */
effb029c 210 wxPGProperty* GetFirst( int flags = wxPG_ITERATE_ALL );
1c4293cb 211
effb029c
JS
212 /**
213 Returns id of property with given name (case-sensitive).
1c4293cb
VZ
214 */
215 wxPGProperty* GetProperty( const wxString& name ) const
216 {
217 return GetPropertyByName(name);
218 }
219
effb029c
JS
220 /**
221 Adds to 'targetArr' pointers to properties that have given
1c4293cb
VZ
222 flags 'flags' set. However, if 'inverse' is set to true, then
223 only properties without given flags are stored.
effb029c 224
1c4293cb 225 @param flags
effb029c
JS
226 Property flags to use.
227
1c4293cb 228 @param iterFlags
effb029c
JS
229 Iterator flags to use. Default is everything expect private children.
230 See @ref propgrid_iterator_flags.
1c4293cb
VZ
231 */
232 void GetPropertiesWithFlag( wxArrayPGProperty* targetArr,
233 wxPGProperty::FlagType flags,
234 bool inverse = false,
235 int iterFlags = (wxPG_ITERATE_PROPERTIES|wxPG_ITERATE_HIDDEN|wxPG_ITERATE_CATEGORIES) ) const;
236
effb029c
JS
237 /**
238 Returns value of given attribute. If none found, returns wxNullVariant.
1c4293cb 239 */
effb029c 240 wxVariant GetPropertyAttribute( wxPGPropArg id, const wxString& attrName ) const;
1c4293cb 241
effb029c
JS
242 /**
243 Returns pointer of property's nearest parent category. If no category
1c4293cb
VZ
244 found, returns NULL.
245 */
effb029c 246 wxPropertyCategory* GetPropertyCategory( wxPGPropArg id ) const;
1c4293cb
VZ
247
248 /** Returns client data (void*) of a property. */
effb029c 249 void* GetPropertyClientData( wxPGPropArg id ) const;
1c4293cb 250
effb029c
JS
251 /**
252 Returns first property which label matches given string. NULL if none
253 found. Note that this operation is very slow when compared to
254 GetPropertyByName().
1c4293cb
VZ
255 */
256 wxPGProperty* GetPropertyByLabel( const wxString& label ) const;
257
effb029c
JS
258 /**
259 Returns property with given name. NULL if none found.
1c4293cb
VZ
260 */
261 wxPGProperty* GetPropertyByName( const wxString& name ) const;
262
effb029c
JS
263 /**
264 Returns child property 'subname' of property 'name'. Same as
1c4293cb
VZ
265 calling GetPropertyByName("name.subname"), albeit slightly faster.
266 */
effb029c
JS
267 wxPGProperty* GetPropertyByName( const wxString& name,
268 const wxString& subname ) const;
1c4293cb 269
effb029c
JS
270 /**
271 Returns property's editor.
272 */
273 const wxPGEditor* GetPropertyEditor( wxPGPropArg id ) const;
1c4293cb 274
effb029c
JS
275 /**
276 Returns help string associated with a property.
277 */
278 wxString GetPropertyHelpString( wxPGPropArg id ) const;
1c4293cb 279
effb029c
JS
280 /**
281 Returns property's custom value image (NULL of none).
282 */
283 wxBitmap* GetPropertyImage( wxPGPropArg id ) const;
1c4293cb
VZ
284
285 /** Returns label of a property. */
effb029c 286 const wxString& GetPropertyLabel( wxPGPropArg id );
1c4293cb 287
effb029c
JS
288 /** Returns property's name, by which it is globally accessible. */
289 wxString GetPropertyName( wxPGProperty* property );
1c4293cb 290
effb029c
JS
291 /**
292 Returns validator of a property as a reference, which you
1c4293cb
VZ
293 can pass to any number of SetPropertyValidator.
294 */
effb029c 295 wxValidator* GetPropertyValidator( wxPGPropArg id );
1c4293cb 296
effb029c
JS
297 /**
298 Returns property's value as wxVariant.
1c4293cb
VZ
299
300 If property value is unspecified, Null variant is returned.
301 */
effb029c 302 wxVariant GetPropertyValue( wxPGPropArg id );
1c4293cb 303
effb029c
JS
304 /** Return's property's value as wxArrayInt. */
305 wxArrayInt GetPropertyValueAsArrayInt( wxPGPropArg id ) const;
306
307 /** Returns property's value as wxArrayString. */
308 wxArrayString GetPropertyValueAsArrayString( wxPGPropArg id ) const;
309
310 /** Returns property's value as bool */
1c4293cb 311 bool GetPropertyValueAsBool( wxPGPropArg id ) const;
1c4293cb 312
effb029c
JS
313 /** Return's property's value as wxDateTime. */
314 wxDateTime GetPropertyValueAsDateTime( wxPGPropArg id ) const;
1c4293cb 315
effb029c
JS
316 /** Returns property's value as double-precision floating point number. */
317 double GetPropertyValueAsDouble( wxPGPropArg id ) const;
1c4293cb 318
effb029c
JS
319 /** Returns property's value as integer */
320 int GetPropertyValueAsInt( wxPGPropArg id ) const;
1c4293cb 321
effb029c
JS
322 /** Returns property's value as integer */
323 long GetPropertyValueAsLong( wxPGPropArg id ) const;
1c4293cb 324
effb029c
JS
325 /** Returns property's value as native signed 64-bit integer. */
326 wxLongLong_t GetPropertyValueAsLongLong( wxPGPropArg id ) const;
1c4293cb 327
effb029c
JS
328 /**
329 Returns property's value as wxString. If property does not
330 use string value type, then its value is converted using
331 wxPGProperty::GetValueAsString().
332 */
333 wxString GetPropertyValueAsString( wxPGPropArg id ) const;
1c4293cb 334
effb029c
JS
335 /** Returns property's value as unsigned integer */
336 unsigned long GetPropertyValueAsULong( wxPGPropArg id ) const;
1c4293cb 337
effb029c
JS
338 /** Returns property's value as native unsigned 64-bit integer. */
339 wxULongLong_t GetPropertyValueAsULongLong( wxPGPropArg id ) const;
340
341 /**
342 Returns a wxVariant list containing wxVariant versions of all
1c4293cb 343 property values. Order is not guaranteed.
effb029c 344
1c4293cb 345 @param flags
effb029c
JS
346 Use wxPG_KEEP_STRUCTURE to retain category structure; each sub
347 category will be its own wxVariantList of wxVariant.
348
349 Use wxPG_INC_ATTRIBUTES to include property attributes as well.
350 Each attribute will be stored as list variant named
351 "@@<propname>@@attr."
1c4293cb
VZ
352 */
353 wxVariant GetPropertyValues( const wxString& listname = wxEmptyString,
effb029c 354 wxPGProperty* baseparent = NULL, long flags = 0 ) const;
1c4293cb
VZ
355
356 /** Returns currently selected property. */
effb029c 357 wxPGProperty* GetSelection() const;
1c4293cb 358
effb029c
JS
359 /**
360 Similar to GetIterator(), but instead returns wxPGVIterator instance,
1c4293cb
VZ
361 which can be useful for forward-iterating through arbitrary property
362 containers.
363
364 @param flags
bba3f9b5
JS
365 See @ref propgrid_iterator_flags.
366
effb029c
JS
367 <b>wxPython Note:</b> Instead of ++ operator, use Next() method, and
368 instead of * operator, use GetProperty() method.
1c4293cb
VZ
369 */
370 virtual wxPGVIterator GetVIterator( int flags ) const;
371
effb029c
JS
372 /**
373 Hides or reveals a property.
374
1c4293cb 375 @param hide
effb029c
JS
376 If @true, hides property, otherwise reveals it.
377
1c4293cb 378 @param flags
effb029c
JS
379 By default changes are applied recursively. Set this parameter
380 wxPG_DONT_RECURSE to prevent this.
1c4293cb
VZ
381 */
382 bool HideProperty( wxPGPropArg id, bool hide = true, int flags = wxPG_RECURSE );
383
effb029c
JS
384 /**
385 Initializes *all* property types. Causes references to most object
1c4293cb
VZ
386 files in the library, so calling this may cause significant increase
387 in executable size when linking with static library.
388 */
389 static void InitAllTypeHandlers();
390
391 //@{
392 /** Inserts property to the property container.
393
394 @param priorThis
effb029c
JS
395 New property is inserted just prior to this. Available only
396 in the first variant. There are two versions of this function
397 to allow this parameter to be either an id or name to
398 a property.
1c4293cb 399
effb029c
JS
400 @param newProperty
401 Pointer to the inserted property. wxPropertyGrid will take
402 ownership of this object.
1c4293cb
VZ
403
404 @param parent
effb029c
JS
405 New property is inserted under this category. Available only
406 in the second variant. There are two versions of this function
407 to allow this parameter to be either an id or name to
408 a property.
1c4293cb
VZ
409
410 @param index
effb029c
JS
411 Index under category. Available only in the second variant.
412 If index is < 0, property is appended in category.
1c4293cb 413
effb029c 414 @return Returns newProperty.
1c4293cb
VZ
415
416 @remarks
417
418 - wxPropertyGrid takes the ownership of the property pointer.
419
420 - While Append may be faster way to add items, make note that when
421 both types of data storage (categoric and
422 non-categoric) are active, Insert becomes even more slow. This is
423 especially true if current mode is non-categoric.
424
425 Example of use:
426
427 @code
428
429 // append category
430 wxPGProperty* my_cat_id = propertygrid->Append( new wxPropertyCategory("My Category") );
431
432 ...
433
434 // insert into category - using second variant
435 wxPGProperty* my_item_id_1 = propertygrid->Insert( my_cat_id, 0, new wxStringProperty("My String 1") );
436
437 // insert before to first item - using first variant
438 wxPGProperty* my_item_id_2 = propertygrid->Insert( my_item_id, new wxStringProperty("My String 2") );
439
440 @endcode
441
442 */
effb029c
JS
443 wxPGProperty* Insert( wxPGPropArg priorThis, wxPGProperty* newProperty );
444 wxPGProperty* Insert( wxPGPropArg parent, int index, wxPGProperty* newProperty );
1c4293cb
VZ
445 //@}
446
effb029c
JS
447 /** Returns @true if property is a category. */
448 bool IsPropertyCategory( wxPGPropArg id ) const;
1c4293cb 449
effb029c
JS
450 /** Returns @true if property is enabled. */
451 bool IsPropertyEnabled( wxPGPropArg id ) const;
1c4293cb 452
effb029c
JS
453 /**
454 Returns true if given property is expanded. Naturally, always returns
455 @false for properties that cannot be expanded.
1c4293cb
VZ
456 */
457 bool IsPropertyExpanded( wxPGPropArg id ) const;
458
effb029c
JS
459 /**
460 Returns @true if property has been modified after value set or modify
461 flag clear by software.
1c4293cb 462 */
effb029c 463 bool IsPropertyModified( wxPGPropArg id ) const;
1c4293cb 464
effb029c
JS
465 /**
466 Returns true if property is shown (ie. HideProperty() with @true not
467 called for it).
1c4293cb 468 */
effb029c 469 bool IsPropertyShown( wxPGPropArg id ) const;
1c4293cb 470
effb029c
JS
471 /**
472 Returns true if property value is set to unspecified.
1c4293cb 473 */
effb029c 474 bool IsPropertyValueUnspecified( wxPGPropArg id ) const;
1c4293cb 475
effb029c
JS
476 /**
477 Disables (limit = @true) or enables (limit = @false) wxTextCtrl editor
478 of a property, if it is not the sole mean to edit the value.
1c4293cb 479 */
effb029c 480 void LimitPropertyEditing( wxPGPropArg id, bool limit = true );
1c4293cb 481
effb029c
JS
482 /**
483 Initializes additional property editors (SpinCtrl etc.). Causes
484 references to most object files in the library, so calling this may
485 cause significant increase in executable size when linking with static
486 library.
1c4293cb
VZ
487 */
488 static void RegisterAdditionalEditors();
489
effb029c
JS
490 /**
491 Replaces property with id with newly created one. For example,
1c4293cb
VZ
492 this code replaces existing property named "Flags" with one that
493 will have different set of items:
effb029c 494
1c4293cb
VZ
495 @code
496 pg->ReplaceProperty("Flags",
497 wxFlagsProperty("Flags", wxPG_LABEL, newItems))
498 @endcode
effb029c
JS
499
500 @see Insert()
1c4293cb
VZ
501 */
502 wxPGProperty* ReplaceProperty( wxPGPropArg id, wxPGProperty* property );
503
effb029c
JS
504 /**
505 @anchor propgridinterface_editablestate_flags
1c4293cb
VZ
506
507 Flags for wxPropertyGridInterface::SaveEditableState() and
508 wxPropertyGridInterface::RestoreEditableState().
509 */
510 enum EditableStateFlags
511 {
512 /** Include selected property. */
513 SelectionState = 0x01,
514 /** Include expanded/collapsed property information. */
515 ExpandedState = 0x02,
516 /** Include scrolled position. */
517 ScrollPosState = 0x04,
effb029c
JS
518 /** Include selected page information. Only applies to
519 wxPropertyGridManager. */
1c4293cb
VZ
520 PageState = 0x08,
521 /** Include splitter position. Stored for each page. */
522 SplitterPosState = 0x10,
523
effb029c
JS
524 /** Include all supported user editable state information. This is
525 usually the default value. */
526 AllStates = SelectionState | ExpandedState | ScrollPosState |
527 PageState | SplitterPosState
1c4293cb
VZ
528 };
529
effb029c
JS
530 /**
531 Restores user-editable state. See also wxPropertyGridInterface::SaveEditableState().
1c4293cb
VZ
532
533 @param src
534 String generated by SaveEditableState.
535
536 @param restoreStates
537 Which parts to restore from source string. See @ref propgridinterface_editablestate_flags
538 "list of editable state flags".
539
effb029c 540 @return Returns @false if there was problem reading the string.
1c4293cb 541
effb029c
JS
542 @remarks If some parts of state (such as scrolled or splitter position)
543 fail to restore correctly, please make sure that you call this
544 function after wxPropertyGrid size has been set (this may
545 sometimes be tricky when sizers are used).
1c4293cb
VZ
546 */
547 bool RestoreEditableState( const wxString& src,
548 int restoreStates = AllStates );
549
effb029c
JS
550 /**
551 Used to acquire user-editable state (selected property, expanded
552 properties, scrolled position, splitter positions).
1c4293cb
VZ
553
554 @param includedStates
555 Which parts of state to include. See @ref propgridinterface_editablestate_flags
556 "list of editable state flags".
557 */
558 wxString SaveEditableState( int includedStates = AllStates ) const;
559
effb029c
JS
560 /**
561 Sets strings listed in the choice dropdown of a wxBoolProperty.
562
563 Defaults are "True" and "False", so changing them to, say, "Yes" and
564 "No" may be useful in some less technical applications.
1c4293cb 565 */
effb029c
JS
566 static void SetBoolChoices( const wxString& trueChoice,
567 const wxString& falseChoice );
568
569 /**
570 Sets or clears flag(s) of all properties in given array.
1c4293cb 571
1c4293cb 572 @param flags
effb029c
JS
573 Property flags to set or clear.
574
1c4293cb 575 @param inverse
effb029c 576 Set to true if you want to clear flag instead of setting them.
1c4293cb
VZ
577 */
578 void SetPropertiesFlag( const wxArrayPGProperty& srcArr, wxPGProperty::FlagType flags,
579 bool inverse = false );
580
effb029c
JS
581 /**
582 Sets an attribute for this property.
583
1c4293cb 584 @param name
effb029c
JS
585 Text identifier of attribute. See @ref propgrid_property_attributes.
586
1c4293cb 587 @param value
effb029c
JS
588 Value of attribute.
589
1c4293cb 590 @param argFlags
effb029c
JS
591 Optional. Use wxPG_RECURSE to set the attribute to child properties
592 recursively.
1802a91d
JS
593
594 @remarks Setting attribute's value to Null variant will simply remove it
595 from property's set of attributes.
1c4293cb 596 */
effb029c
JS
597 void SetPropertyAttribute( wxPGPropArg id, const wxString& attrName,
598 wxVariant value, long argFlags = 0 );
1c4293cb 599
effb029c
JS
600 /**
601 Sets property attribute for all applicapple properties.
3c26d11b
JS
602 Be sure to use this method only after all properties have been
603 added to the grid.
604 */
605 void SetPropertyAttributeAll( const wxString& attrName, wxVariant value );
606
effb029c
JS
607 /**
608 Sets text, bitmap, and colours for given column's cell.
1c4293cb
VZ
609
610 @remarks
effb029c 611 - You can set label cell by using column 0.
1c4293cb
VZ
612 - You can use wxPG_LABEL as text to use default text for column.
613 */
614 void SetPropertyCell( wxPGPropArg id,
615 int column,
616 const wxString& text = wxEmptyString,
617 const wxBitmap& bitmap = wxNullBitmap,
618 const wxColour& fgCol = wxNullColour,
effb029c
JS
619 const wxColour& bgCol = wxNullColour );
620
621 /**
622 Sets client data (void*) of a property.
1c4293cb 623
1c4293cb
VZ
624 @remarks
625 This untyped client data has to be deleted manually.
626 */
effb029c 627 void SetPropertyClientData( wxPGPropArg id, void* clientData );
1c4293cb 628
effb029c
JS
629 /**
630 Sets editor for a property.
1c4293cb
VZ
631
632 @param editor
effb029c
JS
633 For builtin editors, use wxPGEditor_X, where X is builtin editor's
634 name (TextCtrl, Choice, etc. see wxPGEditor documentation for full
635 list).
1c4293cb
VZ
636
637 For custom editors, use pointer you received from wxPropertyGrid::RegisterEditorClass().
638 */
effb029c 639 void SetPropertyEditor( wxPGPropArg id, const wxPGEditor* editor );
1c4293cb 640
effb029c
JS
641 /**
642 Sets editor control of a property. As editor argument, use
1c4293cb
VZ
643 editor name string, such as "TextCtrl" or "Choice".
644 */
effb029c 645 void SetPropertyEditor( wxPGPropArg id, const wxString& editorName );
1c4293cb 646
effb029c
JS
647 /**
648 Sets label of a property.
258ccb95 649
1c4293cb 650 @remarks
258ccb95
JS
651 - Properties under same parent may have same labels. However,
652 property names must still remain unique.
1c4293cb
VZ
653 */
654 void SetPropertyLabel( wxPGPropArg id, const wxString& newproplabel );
655
020b0041
JS
656 /**
657 Sets name of a property.
658
659 @param id
660 Name or pointer of property which name to change.
661
662 @param newName
663 New name for property.
664 */
665 void SetPropertyName( wxPGPropArg id, const wxString& newName );
666
effb029c
JS
667 /**
668 Sets property (and, recursively, its children) to have read-only value.
669 In other words, user cannot change the value in the editor, but they can
670 still copy it.
671
672 @remarks This is mainly for use with textctrl editor. Only some other
673 editors fully support it.
674
675 @param id
676 Property name or pointer.
677
678 @param set
679 Use @true to enable read-only, @false to disable it.
1c4293cb 680
1c4293cb 681 @param flags
effb029c
JS
682 By default changes are applied recursively. Set this parameter
683 wxPG_DONT_RECURSE to prevent this.
1c4293cb 684 */
effb029c
JS
685 void SetPropertyReadOnly( wxPGPropArg id, bool set = true,
686 int flags = wxPG_RECURSE );
1c4293cb 687
effb029c
JS
688 /**
689 Sets property's value to unspecified. If it has children (it may be
690 category), then the same thing is done to them.
1c4293cb
VZ
691 */
692 void SetPropertyValueUnspecified( wxPGPropArg id );
693
effb029c
JS
694 /**
695 Sets various property values from a list of wxVariants. If property with
696 name is missing from the grid, new property is created under given
697 default category (or root if omitted).
1c4293cb 698 */
effb029c
JS
699 void SetPropertyValues( const wxVariantList& list,
700 wxPGPropArg defaultCategory = wxNullProperty );
1c4293cb 701
effb029c
JS
702 void SetPropertyValues( const wxVariant& list,
703 wxPGPropArg defaultCategory = wxNullProperty );
1c4293cb 704
effb029c
JS
705 /**
706 Associates the help string with property.
707
708 @remarks By default, text is shown either in the manager's "description"
709 text box or in the status bar. If extra window style
710 wxPG_EX_HELP_AS_TOOLTIPS is used, then the text will appear as
711 a tooltip.
1c4293cb 712 */
effb029c 713 void SetPropertyHelpString( wxPGPropArg id, const wxString& helpString );
1c4293cb 714
effb029c
JS
715 /**
716 Set wxBitmap in front of the value.
717
718 @remarks Bitmap will be scaled to a size returned by
719 wxPropertyGrid::GetImageSize();
1c4293cb 720 */
effb029c 721 void SetPropertyImage( wxPGPropArg id, wxBitmap& bmp );
1c4293cb 722
effb029c
JS
723 /**
724 Sets max length of property's text.
1c4293cb
VZ
725 */
726 bool SetPropertyMaxLength( wxPGPropArg id, int maxLen );
727
effb029c
JS
728 /**
729 Sets validator of a property.
1c4293cb 730 */
effb029c 731 void SetPropertyValidator( wxPGPropArg id, const wxValidator& validator );
1c4293cb 732
effb029c
JS
733 /** Sets value (integer) of a property. */
734 void SetPropertyValue( wxPGPropArg id, long value );
1c4293cb 735
effb029c
JS
736 /** Sets value (integer) of a property. */
737 void SetPropertyValue( wxPGPropArg id, int value );
1c4293cb 738
effb029c
JS
739 /** Sets value (floating point) of a property. */
740 void SetPropertyValue( wxPGPropArg id, double value );
1c4293cb 741
effb029c
JS
742 /** Sets value (bool) of a property. */
743 void SetPropertyValue( wxPGPropArg id, bool value );
1c4293cb 744
effb029c
JS
745 /** Sets value (string) of a property. */
746 void SetPropertyValue( wxPGPropArg id, const wxString& value );
1c4293cb 747
effb029c
JS
748 /** Sets value (wxArrayString) of a property. */
749 void SetPropertyValue( wxPGPropArg id, const wxArrayString& value );
1c4293cb 750
effb029c
JS
751 /** Sets value (wxDateTime) of a property. */
752 void SetPropertyValue( wxPGPropArg id, const wxDateTime& value );
1c4293cb 753
effb029c
JS
754 /** Sets value (wxObject*) of a property. */
755 void SetPropertyValue( wxPGPropArg id, wxObject* value );
1c4293cb 756
effb029c
JS
757 /** Sets value (wxObject&) of a property. */
758 void SetPropertyValue( wxPGPropArg id, wxObject& value );
759
760 /** Sets value (native 64-bit int) of a property. */
761 void SetPropertyValue( wxPGPropArg id, wxLongLong_t value );
762
763 /** Sets value (native 64-bit unsigned int) of a property. */
764 void SetPropertyValue( wxPGPropArg id, wxULongLong_t value );
765
766 /** Sets value (wxArrayInt&) of a property. */
767 void SetPropertyValue( wxPGPropArg id, const wxArrayInt& value );
768
769 /**
770 Sets value (wxString) of a property.
771
772 @remarks This method uses wxPGProperty::SetValueFromString(), which all
773 properties should implement. This means that there should not be
774 a type error, and instead the string is converted to property's
775 actual value type.
1c4293cb
VZ
776 */
777 void SetPropertyValueString( wxPGPropArg id, const wxString& value );
778
effb029c
JS
779 /**
780 Sets value (wxVariant&) of a property.
bba3f9b5 781
effb029c
JS
782 @remarks Use wxPropertyGrid::ChangePropertyValue() instead if you need to
783 run through validation process and send property change event.
1c4293cb 784 */
effb029c 785 void SetPropertyValue( wxPGPropArg id, wxVariant value );
1c4293cb 786
effb029c
JS
787 /**
788 Adjusts how wxPropertyGrid behaves when invalid value is entered
1c4293cb 789 in a property.
effb029c 790
1c4293cb 791 @param vfbFlags
effb029c 792 See @ref propgrid_vfbflags for possible values.
1c4293cb
VZ
793 */
794 void SetValidationFailureBehavior( int vfbFlags );
795
effb029c
JS
796 /**
797 Returns editor pointer of editor with given name;
798 */
1c4293cb 799 static wxPGEditor* GetEditorByName( const wxString& editorName );
1c4293cb
VZ
800};
801