2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: clntdata.h
|
2008-04-08 01:34:11 -04:00
|
|
|
// Purpose: interface of wxClientData[Container] and wxStringClientData
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxClientDataContainer
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
This class is a mixin that provides storage and management of "client
|
|
|
|
data." This data can either be of type void - in which case the data
|
2008-04-08 01:34:11 -04:00
|
|
|
@e container does not take care of freeing the data again or it is of
|
|
|
|
type wxClientData or its derivatives. In that case the container will free
|
|
|
|
the memory itself later. Note that you @e must not assign both void data
|
|
|
|
and data derived from the wxClientData class to a container.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-04-08 01:34:11 -04:00
|
|
|
@note This functionality is currently duplicated in wxEvtHandler in order
|
|
|
|
to avoid having more than one vtable in that class hierarchy.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxbase}
|
2008-04-08 01:34:11 -04:00
|
|
|
@category{containers}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxEvtHandler, wxClientData
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-08 09:43:31 -05:00
|
|
|
class wxClientDataContainer
|
2008-03-08 08:52:38 -05:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2008-04-08 01:34:11 -04:00
|
|
|
Default constructor.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
wxClientDataContainer();
|
|
|
|
|
|
|
|
/**
|
2008-04-08 01:34:11 -04:00
|
|
|
Destructor.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-09-22 15:01:17 -04:00
|
|
|
virtual ~wxClientDataContainer();
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Get the untyped client data.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
void* GetClientData() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Get a pointer to the client data object.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
wxClientData* GetClientObject() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Set the untyped client data.
|
|
|
|
*/
|
|
|
|
void SetClientData(void* data);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Set the client data object. Any previous object will be deleted.
|
|
|
|
*/
|
|
|
|
void SetClientObject(wxClientData* data);
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxClientData
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-04-08 01:34:11 -04:00
|
|
|
All classes deriving from wxEvtHandler (such as all controls and wxApp) can
|
|
|
|
hold arbitrary data which is here referred to as "client data". This is
|
|
|
|
useful e.g. for scripting languages which need to handle shadow objects for
|
|
|
|
most of wxWidgets' classes and which store a handle to such a shadow class
|
|
|
|
as client data in that class. This data can either be of type void - in
|
|
|
|
which case the data @e container does not take care of freeing the data
|
|
|
|
again or it is of type wxClientData or its derivatives. In that case the
|
|
|
|
container (e.g. a control) will free the memory itself later. Note that you
|
|
|
|
@e must not assign both void data and data derived from the wxClientData
|
|
|
|
class to a container.
|
|
|
|
|
|
|
|
Some controls can hold various items and these controls can additionally
|
|
|
|
hold client data for each item. This is the case for wxChoice, wxComboBox
|
|
|
|
and wxListBox. wxTreeCtrl has a specialized class wxTreeItemData for each
|
|
|
|
item in the tree.
|
|
|
|
|
|
|
|
If you want to add client data to your own classes, you may use the mix-in
|
|
|
|
class wxClientDataContainer.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxbase}
|
2008-04-08 01:34:11 -04:00
|
|
|
@category{containers}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-04-08 01:34:11 -04:00
|
|
|
@see wxEvtHandler, wxTreeItemData, wxStringClientData,
|
|
|
|
wxClientDataContainer
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-08 09:43:31 -05:00
|
|
|
class wxClientData
|
2008-03-08 08:52:38 -05:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Constructor.
|
|
|
|
*/
|
|
|
|
wxClientData();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Virtual destructor.
|
|
|
|
*/
|
2008-09-22 15:01:17 -04:00
|
|
|
virtual ~wxClientData();
|
2008-03-08 08:52:38 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxStringClientData
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
Predefined client data class for holding a string.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxbase}
|
2008-04-08 01:34:11 -04:00
|
|
|
@category{containers}
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxStringClientData : public wxClientData
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2008-04-08 01:34:11 -04:00
|
|
|
Default constructor.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
wxStringClientData();
|
2008-04-08 01:34:11 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
Create client data with string.
|
|
|
|
*/
|
2008-03-08 09:43:31 -05:00
|
|
|
wxStringClientData(const wxString& data);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Get string client data.
|
|
|
|
*/
|
2008-09-24 19:29:43 -04:00
|
|
|
const wxString& GetData() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Set string client data.
|
|
|
|
*/
|
|
|
|
void SetData(const wxString& data);
|
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|