X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4e0bdd562d02fa8e0e101f091547dae9ee6fee7e..906c935a80b10d53cecf57f71ab5f3f4f1d529ec:/docs/doxygen/overviews/propgrid.h diff --git a/docs/doxygen/overviews/propgrid.h b/docs/doxygen/overviews/propgrid.h index 4cd1a7a452..e27fac15c5 100644 --- a/docs/doxygen/overviews/propgrid.h +++ b/docs/doxygen/overviews/propgrid.h @@ -3,7 +3,7 @@ // Purpose: topic overview // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @@ -39,6 +39,7 @@ should carefully read final section in @ref propgrid_compat. @li @ref propgrid_validating @li @ref propgrid_populating @li @ref propgrid_cellrender +@li @ref propgrid_keyhandling @li @ref propgrid_customizing @li @ref propgrid_usage2 @li @ref propgrid_subclassing @@ -555,8 +556,17 @@ This example reverse-iterates through all visible items: @endcode -wxPython Note: Instead of ++ operator, use Next() method, and instead of +@beginWxPythonOnly +PropertyGridInterface has some useful pythonic iterators as attributes. +@c Properties lets you iterate through all items that are not category +captions or private children. @c Items lets you iterate through everything +except private children. Also, there are GetPyIterator() and GetPyVIterator(), +which return pythonic iterators instead of normal wxPropertyGridIterator. + +If you need to use C++ style iterators in wxPython code, note that +Instead of ++ operator, use Next() method, and instead of * operator, use GetProperty() method. +@endWxPythonOnly GetIterator() only works with wxPropertyGrid and the individual pages of wxPropertyGridManager. In order to iterate through an arbitrary @@ -716,7 +726,7 @@ message. event.Veto(); event.SetValidationFailureBehavior(wxPG_VFB_STAY_IN_PROPERTY | wxPG_VFB_BEEP | - wxPG_VFB_SHOW_MESSAGE); + wxPG_VFB_SHOW_MESSAGEBOX); } } } @@ -733,11 +743,58 @@ wxPGProperty::SetCell() for this purpose. In addition, it is possible to control these characteristics for wxPGChoices list items. See wxPGChoices class reference for more info. +@section propgrid_keyhandling Customizing Keyboard Handling + +There is probably one preference for keyboard handling for every developer +out there, and as a conveniency control wxPropertyGrid tries to cater for +that. By the default arrow keys are used for navigating between properties, +and TAB key is used to move focus between the property editor and the +first column. When the focus is in the editor, arrow keys usually no longer +work for navigation since they are consumed by the editor. + +There are mainly two functions which you can use this customize things, +wxPropertyGrid::AddActionTrigger() and wxPropertyGrid::DedicateKey(). +First one can be used to set a navigation event to occur on a specific key +press and the second is used to divert a key from property editors, making it +possible for the grid to use keys normally consumed by the focused editors. + +For example, let's say you want to have an ENTER-based editing scheme. That +is, editor is focused on ENTER press and the next property is selected when +the user finishes editing and presses ENTER again. Code like this would +accomplish the task: + +@code + // Have property editor focus on Enter + propgrid->AddActionTrigger( wxPG_ACTION_EDIT, WXK_RETURN ); + + // Have Enter work as action trigger even when editor is focused + propgrid->DedicateKey( WXK_RETURN ); + + // Let Enter also navigate to the next property + propgrid->AddActionTrigger( wxPG_ACTION_NEXT_PROPERTY, WXK_RETURN ); + +@endcode + +wxPG_ACTION_EDIT is prioritized above wxPG_ACTION_NEXT_PROPERTY so that the +above code can work without conflicts. For a complete list of available +actions, see @ref propgrid_keyboard_actions. + +Here's another trick. Normally the up and down cursor keys are consumed by +the focused wxTextCtrl editor and as such can't be used for navigating between +properties when that editor is focused. However, using DedicateKey() we can +change this so that instead of the cursor keys moving the caret inside the +wxTextCtrl, they navigate between adjacent properties. As such: + +@code + propgrid->DedicateKey(WXK_UP); + propgrid->DedicateKey(WXK_DOWN); +@endcode + @section propgrid_customizing Customizing Properties (without sub-classing) In this section are presented miscellaneous ways to have custom appearance -and behavior for your properties without all the necessary hassle +and behaviour for your properties without all the necessary hassle of sub-classing a property class etc. @subsection propgrid_customimage Setting Value Image @@ -900,7 +957,7 @@ wxPropertyGrid::CenterSplitter() method. However, be sure to call it after the sizer setup and SetSize calls! (ie. usually at the end of the frame/dialog constructor) - Splitter centering behavior can be customized using + Splitter centering behaviour can be customized using wxPropertyGridInterface::SetColumnProportion(). Usually it is used to set non-equal column proportions, which in essence stops the splitter(s) from being 'centered' as such, and instead just auto-resized. @@ -937,7 +994,7 @@ Version of wxPropertyGrid bundled with wxWidgets 2.9+ has various backward- incompatible changes from version 1.4, which had a stable API and will remain as the last separate branch. -Note that in general any behavior-breaking changes should not compile or run +Note that in general any behaviour-breaking changes should not compile or run without warnings or errors. @subsection propgrid_compat_general General Changes @@ -948,10 +1005,14 @@ without warnings or errors. with keyboard. This change allowed fixing broken tab traversal on wxGTK (which is open issue in wxPropertyGrid 1.4). + - wxPG_EX_UNFOCUS_ON_ENTER style is removed and is now default behaviour. + That is, when enter is pressed, editing is considered done and focus + moves back to the property grid from the editor control. + - A few member functions were removed from wxPropertyGridInterface. Please use wxPGProperty's counterparts from now on. - - wxPGChoices now has proper Copy-On-Write behavior. + - wxPGChoices now has proper Copy-On-Write behaviour. - wxPGChoices::SetExclusive() was renamed to AllocExclusive(). @@ -965,17 +1026,27 @@ without warnings or errors. now use wxPropertyGridInterface::GetEditableState() instead. - wxPG_EX_DISABLE_TLP_TRACKING is now enabled by default. To get the old - behavior (recommended if you don't use a system that reparents the grid + behaviour (recommended if you don't use a system that reparents the grid on its own), use the wxPG_EX_ENABLE_TLP_TRACKING extra style. - Extended window style wxPG_EX_LEGACY_VALIDATORS was removed. + - Default property validation failure behaviour has been changed to + (wxPG_VFB_MARK_CELL | wxPG_VFB_SHOW_MESSAGEBOX), which means that the + cell is marked red and wxMessageBox is shown. This is more user-friendly + than the old behaviour, which simply beeped and prevented leaving the + property editor until a valid value was entered. + - wxPropertyGridManager now has same Get/SetSelection() semantics as wxPropertyGrid. - Various wxPropertyGridManager page-related functions now return pointer to the page object instead of index. + - wxArrayEditorDialog used by wxArrayStringProperty and some sample + properties has been renamed to wxPGArrayEditorDialog. Also, it now uses + wxEditableListBox for editing. + - Instead of calling wxPropertyGrid::SetButtonShortcut(), use wxPropertyGrid::SetActionTrigger(wxPG_ACTION_PRESS_BUTTON). @@ -992,6 +1063,14 @@ without warnings or errors. - wxPropertyGrid::CanClose() has been removed. Call wxPropertyGridInterface::EditorValidate() instead. + - wxPGProperty::SetFlag() has been moved to private API. This was done to + underline the fact that it was not the preferred method to change a + property's state since it never had any desired side-effects. ChangeFlag() + still exists for those who really need to achieve the same effect. + + - wxArrayStringProperty default delimiter is now comma (','), and it can + be changed by setting the new "Delimiter" attribute. + @subsection propgrid_compat_propdev Property and Editor Sub-classing Changes - Confusing custom property macros have been eliminated.