📄 propgrid.h
字号:
class WXDLLIMPEXP_PG wxPGValueType;
class WXDLLIMPEXP_PG wxPGEditor;
class WXDLLIMPEXP_PG wxPGProperty;
class WXDLLIMPEXP_PG wxPGPropertyWithChildren;
class WXDLLIMPEXP_PG wxPropertyCategoryClass;
class WXDLLIMPEXP_PG wxPGChoices;
class WXDLLIMPEXP_PG wxPropertyGridState;
class WXDLLIMPEXP_PG wxPropertyContainerMethods;
class WXDLLIMPEXP_PG wxPropertyGrid;
class WXDLLIMPEXP_PG wxPropertyGridEvent;
class WXDLLIMPEXP_PG wxPropertyGridManager;
class WXDLLIMPEXP_PG wxPGOwnerDrawnComboBox;
class WXDLLIMPEXP_PG wxPGCustomComboControl;
struct wxPGPaintData;
extern WXDLLIMPEXP_PG const wxChar *wxPropertyGridNameStr;
#endif // #ifndef SWIG
#ifdef __WXPYTHON__
class wxPGPyEditor;
#endif // #ifndef __WXPYTHON__
/** @defgroup miscellaneous wxPropertyGrid Miscellanous
This section describes some miscellanous values, types and macros.
@{
*/
#if wxPG_PGVARIANT_IS_VARIANT
#define wxPG_EMPTY_ARRAYINT wxArrayInt()
#define wxPG_EMPTY_ARRAYSTRING wxArrayString()
#elif !defined(SWIG)
#define wxPG_EMPTY_ARRAYINT (*((wxArrayInt*)NULL))
#define wxPG_EMPTY_ARRAYSTRING (*((wxArrayString*)NULL))
#else
#define wxPG_EMPTY_ARRAYINT wxArrayInt_wxPG_EMPTY
#define wxPG_EMPTY_ARRAYSTRING wxArrayString_wxPG_EMPTY
#endif
#if !defined(SWIG)
#define wxPG_LABEL (*((wxString*)NULL)) // Used to tell wxPGProperty to use label as name as well.
#define wxPG_NULL_BITMAP wxNullBitmap
#define wxPG_COLOUR_BLACK (*wxBLACK)
#else
#define wxPG_LABEL wxString_wxPG_LABEL
#define wxPG_NULL_BITMAP wxBitmap_NULL
#define wxPG_COLOUR_BLACK wxColour_BLACK
#endif // #ifndef SWIG
// Used to indicate wxPGChoices::Add etc that the value is actually not given
// by the caller.
#define wxPG_INVALID_VALUE INT_MAX
/** Convert Red, Green and Blue to a single 32-bit value.
*/
#define wxPG_COLOUR(R,G,B) ((wxUint32)(R+(G<<8)+(B<<16)))
/** Return this in GetImageSize() to indicate that the custom painted
property image is flexible. That is, it will paint (dropdown)
list item images with PREFWID,PREFHEI size.
*/
#define wxPG_FLEXIBLE_SIZE(PREFWID,PREFHEI) wxSize(-(PREFWID),-(PREFHEI))
#define wxPG_FULL_CUSTOM_PAINT_WIDTH -99999
/** Return this in GetImageSize() to indicate that the property is
custom painted completely (ie. the text as well).
*/
#define wxPG_FULL_CUSTOM_PAINT_SIZE(HEI) \
wxSize(wxPG_FULL_CUSTOM_PAINT_WIDTH,HEI)
/** Return this in GetImageSize() to indicate that the property is
custom painted completely (ie. the text as well), and with flexible
height.
*/
#define wxPG_FULL_CUSTOM_PAINT_FLEXIBLE_SIZE(PREFHEI) \
wxSize(wxPG_FULL_CUSTOM_PAINT_WIDTH,-(PREFHEI))
/** This callback function is used by atleast wxCustomProperty
to facilitiate easy custom action on button press.
\param propGrid
related wxPropertyGrid
\param property
related wxPGProperty
\param ctrl
If not NULL (for example, not selected), a wxWindow* or equivalent
\param data
Value depends on the context.
\retval
True if changed value of the property.
*/
typedef bool (*wxPropertyGridCallback)(wxPropertyGrid* propGrid,
wxPGProperty* property,
wxWindow* ctrl,
int data);
/** This callback function is used by atleast wxCustomProperty
to facilitiate drawing items in drop down list.
Works very much like wxPGProperty::OnCustomPaint.
*/
typedef void (*wxPGPaintCallback)(wxPGProperty* property,
wxDC& dc,
const wxRect& rect,
wxPGPaintData& paintdata);
/** Use this with wxPropertyGrid::IsPropertyKindOf. For example, as in
\code
pg->IsPropertyKindOf(WX_PG_CLASSINFO(wxStringProperty))
\endcode
*/
#define WX_PG_CLASSINFO(NAME) NAME##ClassInfo
/** @}
*/
// -----------------------------------------------------------------------
/** @defgroup wndflags wxPropertyGrid Window Styles
SetWindowStyleFlag method can be used to modify some of these at run-time.
@{
*/
/** This will cause Sort() automatically after an item is added.
When inserting a lot of items in this mode, it may make sense to
use Freeze() before operations and Thaw() afterwards to increase
performance.
*/
#define wxPG_AUTO_SORT 0x00000010
/** Categories are not initially shown (even if added).
IMPORTANT NOTE: If you do not plan to use categories, then this
style will waste resources.
This flag can also be changed using wxPropertyGrid::EnableCategories method.
*/
#define wxPG_HIDE_CATEGORIES 0x00000020
/* This style combines non-categoric mode and automatic sorting.
*/
#define wxPG_ALPHABETIC_MODE (wxPG_HIDE_CATEGORIES|wxPG_AUTO_SORT)
/** Modified values are shown in bold font. Changing this requires Refresh()
to show changes.
*/
#define wxPG_BOLD_MODIFIED 0x00000040
/** When wxPropertyGrid is resized, splitter moves to the center. This
behaviour stops once the user manually moves the splitter.
*/
#define wxPG_SPLITTER_AUTO_CENTER 0x00000080
/** Display tooltips for cell text that cannot be shown completely. If
wxUSE_TOOLTIPS is 0, then this doesn't have any effect.
*/
#define wxPG_TOOLTIPS 0x00000100
/** Disables margin and hides all expand/collapse buttons that would appear
outside the margin (for sub-properties). Toggling this style automatically
expands all collapsed items.
*/
#define wxPG_HIDE_MARGIN 0x00000200
/** This style prevents user from moving the splitter.
*/
#define wxPG_STATIC_SPLITTER 0x00000400
/** Combination of other styles that make it impossible for user to modify
the layout.
*/
#define wxPG_STATIC_LAYOUT (wxPG_HIDE_MARGIN|wxPG_STATIC_SPLITTER)
/** Disables wxTextCtrl based editors for properties which
can be edited in another way. Equals calling wxPropertyGrid::LimitPropertyEditing
for all added properties.
*/
#define wxPG_LIMITED_EDITING 0x00000800
#ifdef DOXYGEN
/** wxTAB_TRAVERSAL allows using Tab/Shift-Tab to travel between properties
in grid. Travelling forwards from last property will navigate to the
next control, and backwards from first will navigate to the previous one.
*/
#define wxTAB_TRAVERSAL 0x00080000
#endif
/** wxPropertyGridManager only: Show toolbar for mode and page selection. */
#define wxPG_TOOLBAR 0x00001000
/** wxPropertyGridManager only: Show adjustable text box showing description
or help text, if available, for currently selected property.
*/
#define wxPG_DESCRIPTION 0x00002000
/** wxPropertyGridManager only: Show compactor button that toggles hidden
state of low-priority properties.
*/
#define wxPG_COMPACTOR 0x00004000
/**
NOTE: wxPG_EX_xxx are extra window styles and must be set using SetExtraStyle()
member function.
Speeds up switching to wxPG_HIDE_CATEGORIES mode. Initially, if wxPG_HIDE_CATEGORIES
is not defined, the non-categorized data storage is not activated, and switching
the mode first time becomes somewhat slower. wxPG_EX_INIT_NOCAT activates the
non-categorized data storage right away. IMPORTANT NOTE: If you do plan not
switching to non-categoric mode, or if you don't plan to use categories at
all, then using this style will result in waste of resources.
*/
#define wxPG_EX_INIT_NOCAT 0x00001000
/** Extended window style that sets wxPropertyGridManager toolbar to not
use flat style.
*/
#define wxPG_EX_NO_FLAT_TOOLBAR 0x00002000
/** This extra style allows editing more similar to some Microsoft/Mono
provided property sheet controls. Currently this includes (but more may be
added later, incase I missed something):
* Pressing ENTER in control, in addition to confirming changes, will
unfocus it.
* Pressing ESC doesn't cancel edit (but still unfocuses the editor).
Note that ESC and ENTER events in editor controls are relayed to the
wxPropertyGrid itself, so that they can be detected by the application.
*/
//#define wxPG_EX_ALTERNATE_KEYS 0x00004000
/** Shows alphabetic/categoric mode buttons from toolbar.
*/
#define wxPG_EX_MODE_BUTTONS 0x00008000
/** Show property help strings as tool tips instead as text on the status bar.
You can set the help strings using SetPropertyHelpString member function.
*/
#define wxPG_EX_HELP_AS_TOOLTIPS 0x00010000
/** Prevent TAB from focusing to wxButtons. This behaviour was default
in version 1.2.0 and earlier.
NOTE! Tabbing to button doesn't work yet. Problem seems to be that on wxMSW
atleast the button doesn't properly propagate key events (yes, I'm using
wxWANTS_CHARS).
*/
//#define wxPG_EX_NO_TAB_TO_BUTTON 0x00020000
/** Set this style to have labels of disabled properties become greyed
along with the values.
*/
#define wxPG_EX_GREY_LABEL_WHEN_DISABLED 0x00040000
/** Allows relying on native double-buffering.
*/
#define wxPG_EX_NATIVE_DOUBLE_BUFFERING 0x00080000
/** Process all events immediately, if possible. That is, ProcessEvent is
called instead of AddPendingEvent.
*/
#define wxPG_EX_PROCESS_EVENTS_IMMEDIATELY 0x00100000
/** Set this style to let user have ability to set values of properties to
unspecified state. Currently, this applies to following properties:
- wxIntProperty, wxUIntProperty, and wxFloatProperty: Clear the
text field.
*/
#define wxPG_EX_AUTO_UNSPECIFIED_VALUES 0x00200000
/** Combines various styles.
*/
#define wxPG_DEFAULT_STYLE (0)
/** Combines various styles.
*/
#define wxPGMAN_DEFAULT_STYLE (0)
/** @}
*/
/** Flags for wxPropertyGrid::GetPropertyValues and wxPropertyGridManager::GetPropertyValues. */
#define wxPG_KEEP_STRUCTURE 0x00000010
/** Flags for wxPropertyGrid::SetPropertyAttribute etc */
#define wxPG_RECURSE 0x00000020
// -----------------------------------------------------------------------
// Property priorities
#define wxPG_LOW 1
#define wxPG_HIGH 2
// -----------------------------------------------------------------------
// Misc argument flags.
#define wxPG_FULL_VALUE 0x00000001 // Get/Store full value instead of displayed value.
#define wxPG_REPORT_ERROR 0x00000002
#define wxPG_PROPERTY_SPECIFIC 0x00000004
// -----------------------------------------------------------------------
#if defined(__WXPYTHON__)
#define wxPG_ID_IS_PTR 1
#else
#define wxPG_ID_IS_PTR 0
#endif
#if wxPG_ID_IS_PTR
#define wxNullProperty ((wxPGProperty*)NULL)
#define wxPGId wxPGProperty*
#define wxPGIdGen(PTR) PTR
#define wxPGIdToPtr(ID) ((wxPGProperty*)ID)
#define wxPGIdIsOk(ID) ( ID != ((wxPGProperty*)NULL) )
#else
#define wxNullProperty wxPGId(NULL)
/** \class wxPGId
\ingroup classes
\brief
Simple wrapper for the wxPGProperty pointer.
NB: This class exists because:
- Abstract wxPGId would allow both flexibility and speed
(for possible native'ish implementations, altough this doesn't make
sense anymore).
- wxPG methods should be mostly used for property manipulation
(or such vision I had at first), and since wxPGId id = pg->Append(...)
is faster tow write, it seemed useful.
*However* in future I may just start using wxPG_ID_IS_PTR by the default.
It might even result into slightly smaller code (altough I have checked out
some MSVC generated assembly, and it seems to optimize out the wrapper in
usual scenarios).
*/
class WXDLLIMPEXP_PG wxPGId
{
public:
inline wxPGId() { m_ptr = (wxPGProperty*) NULL; }
~wxPGId() {}
bool IsOk() const { return ( m_ptr != NULL ); }
bool operator == (const wxPGId& other)
{
return m_ptr == other.m_ptr;
}
inline const wxString& GetName() const;
#ifndef SWIG
inline wxPGId( wxPGProperty* ptr ) { m_ptr = ptr; }
inline wxPGId( wxPGProperty& ref ) { m_ptr = &ref; }
operator wxPGProperty* ()
{
return m_ptr;
}
wxPGProperty* GetPropertyPtr() const { return m_ptr; }
#endif // #ifndef SWIG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -