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