added wxListCtrl::AssignImageList

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2000-09-28 22:29:26 +00:00
parent 0377efa2e9
commit 2e12c11a90
5 changed files with 86 additions and 0 deletions

View File

@@ -129,6 +129,19 @@ Arranges the items in icon or small icon view. This only has effect on Win32. {\
\twocolitem{wxLIST\_ALIGN\_SNAP\_TO\_GRID}{Snap to grid.} \twocolitem{wxLIST\_ALIGN\_SNAP\_TO\_GRID}{Snap to grid.}
\end{twocollist} \end{twocollist}
\membersection{wxListCtrl::AssignImageList}\label{wxlistctrlassignimagelist}
\func{void}{AssignImageList}{\param{wxImageList*}{ imageList}, \param{int }{which}}
Sets the image list associated with the control and
takes ownership of it (i.e. the control will, unlike when using
SetImageList, delete the list when destroyed). {\it which} is one of
wxIMAGE\_LIST\_NORMAL, wxIMAGE\_LIST\_SMALL, wxIMAGE\_LIST\_STATE (the last is unimplemented).
\wxheading{See also}
\helpref{wxListCtrl::SetImageList}{wxlistctrlsetimagelist}
\membersection{wxListCtrl::Create}\label{wxlistctrlcreate} \membersection{wxListCtrl::Create}\label{wxlistctrlcreate}
\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id},\rtfsp \func{bool}{Create}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id},\rtfsp
@@ -523,6 +536,14 @@ In small or normal icon view, {\it col} must be -1, and the column width is set
Sets the image list associated with the control. {\it which} is one of Sets the image list associated with the control. {\it which} is one of
wxIMAGE\_LIST\_NORMAL, wxIMAGE\_LIST\_SMALL, wxIMAGE\_LIST\_STATE (the last is unimplemented). wxIMAGE\_LIST\_NORMAL, wxIMAGE\_LIST\_SMALL, wxIMAGE\_LIST\_STATE (the last is unimplemented).
This method does not take ownership of the image list, you have to
delete it yourself.
\wxheading{See also}
\helpref{wxListCtrl::AssignImageList}{wxlistctrlassignimagelist}
\membersection{wxListCtrl::SetItem}\label{wxlistctrlsetitem} \membersection{wxListCtrl::SetItem}\label{wxlistctrlsetitem}
\func{bool}{SetItem}{\param{wxListItem\& }{info}} \func{bool}{SetItem}{\param{wxListItem\& }{info}}

View File

@@ -113,6 +113,7 @@ public:
long GetNextItem( long item, int geometry = wxLIST_NEXT_ALL, int state = wxLIST_STATE_DONTCARE ) const; long GetNextItem( long item, int geometry = wxLIST_NEXT_ALL, int state = wxLIST_STATE_DONTCARE ) const;
wxImageList *GetImageList( int which ) const; wxImageList *GetImageList( int which ) const;
void SetImageList( wxImageList *imageList, int which ); void SetImageList( wxImageList *imageList, int which );
void AssignImageList( wxImageList *imageList, int which );
bool Arrange( int flag = wxLIST_ALIGN_DEFAULT ); // always wxLIST_ALIGN_LEFT in wxGLC bool Arrange( int flag = wxLIST_ALIGN_DEFAULT ); // always wxLIST_ALIGN_LEFT in wxGLC
void ClearAll(); void ClearAll();
@@ -166,6 +167,9 @@ public:
wxImageList *m_imageListNormal; wxImageList *m_imageListNormal;
wxImageList *m_imageListSmall; wxImageList *m_imageListSmall;
wxImageList *m_imageListState; // what's that ? wxImageList *m_imageListState; // what's that ?
bool m_ownsImageListNormal,
m_ownsImageListSmall,
m_ownsImageListState;
wxListHeaderWindow *m_headerWin; wxListHeaderWindow *m_headerWin;
wxListMainWindow *m_mainWin; wxListMainWindow *m_mainWin;

View File

@@ -230,6 +230,7 @@ public:
// So you have to set a NULL small-icon image list to be sure that // So you have to set a NULL small-icon image list to be sure that
// the wxLC_LIST mode works without icons. Of course, you may want icons... // the wxLC_LIST mode works without icons. Of course, you may want icons...
void SetImageList(wxImageList *imageList, int which) ; void SetImageList(wxImageList *imageList, int which) ;
void AssignImageList(wxImageList *imageList, int which) ;
// Operations // Operations
//////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////
@@ -345,6 +346,9 @@ protected:
wxImageList * m_imageListNormal; // The image list for normal icons wxImageList * m_imageListNormal; // The image list for normal icons
wxImageList * m_imageListSmall; // The image list for small icons wxImageList * m_imageListSmall; // The image list for small icons
wxImageList * m_imageListState; // The image list state icons (not implemented yet) wxImageList * m_imageListState; // The image list state icons (not implemented yet)
bool m_ownsImageListNormal,
m_ownsImageListSmall,
m_ownsImageListState;
long m_baseStyle; // Basic Windows style flags, for recreation purposes long m_baseStyle; // Basic Windows style flags, for recreation purposes
wxStringList m_stringPool; // Pool of 3 strings to satisfy Windows callback requirements wxStringList m_stringPool; // Pool of 3 strings to satisfy Windows callback requirements

View File

@@ -3192,12 +3192,16 @@ wxListCtrl::wxListCtrl()
m_imageListNormal = (wxImageList *) NULL; m_imageListNormal = (wxImageList *) NULL;
m_imageListSmall = (wxImageList *) NULL; m_imageListSmall = (wxImageList *) NULL;
m_imageListState = (wxImageList *) NULL; m_imageListState = (wxImageList *) NULL;
m_ownsImageListNormal = m_ownsImageListSmall = m_ownsImageListState = FALSE;
m_mainWin = (wxListMainWindow*) NULL; m_mainWin = (wxListMainWindow*) NULL;
m_headerWin = (wxListHeaderWindow*) NULL; m_headerWin = (wxListHeaderWindow*) NULL;
} }
wxListCtrl::~wxListCtrl() wxListCtrl::~wxListCtrl()
{ {
if (m_ownsImageListNormal) delete m_imageListNormal;
if (m_ownsImageListSmall) delete m_imageListSmall;
if (m_ownsImageListState) delete m_imageListState;
} }
bool wxListCtrl::Create(wxWindow *parent, bool wxListCtrl::Create(wxWindow *parent,
@@ -3211,6 +3215,7 @@ bool wxListCtrl::Create(wxWindow *parent,
m_imageListNormal = (wxImageList *) NULL; m_imageListNormal = (wxImageList *) NULL;
m_imageListSmall = (wxImageList *) NULL; m_imageListSmall = (wxImageList *) NULL;
m_imageListState = (wxImageList *) NULL; m_imageListState = (wxImageList *) NULL;
m_ownsImageListNormal = m_ownsImageListSmall = m_ownsImageListState = FALSE;
m_mainWin = (wxListMainWindow*) NULL; m_mainWin = (wxListMainWindow*) NULL;
m_headerWin = (wxListHeaderWindow*) NULL; m_headerWin = (wxListHeaderWindow*) NULL;
@@ -3508,9 +3513,39 @@ wxImageList *wxListCtrl::GetImageList(int which) const
void wxListCtrl::SetImageList( wxImageList *imageList, int which ) void wxListCtrl::SetImageList( wxImageList *imageList, int which )
{ {
if ( which == wxIMAGE_LIST_NORMAL )
{
if (m_ownsImageListNormal) delete m_imageListNormal;
m_imageListNormal = imageList;
m_ownsImageListNormal = FALSE;
}
else if ( which == wxIMAGE_LIST_SMALL )
{
if (m_ownsImageListSmall) delete m_imageListSmall;
m_imageListSmall = imageList;
m_ownsImageListSmall = FALSE;
}
else if ( which == wxIMAGE_LIST_STATE )
{
if (m_ownsImageListState) delete m_imageListState;
m_imageListState = imageList;
m_ownsImageListState = FALSE;
}
m_mainWin->SetImageList( imageList, which ); m_mainWin->SetImageList( imageList, which );
} }
void wxListCtrl::AssignImageList(wxImageList *imageList, int which)
{
SetImageList(imageList, which);
if ( which == wxIMAGE_LIST_NORMAL )
m_ownsImageListNormal = TRUE;
else if ( which == wxIMAGE_LIST_SMALL )
m_ownsImageListSmall = TRUE;
else if ( which == wxIMAGE_LIST_STATE )
m_ownsImageListState = TRUE;
}
bool wxListCtrl::Arrange( int WXUNUSED(flag) ) bool wxListCtrl::Arrange( int WXUNUSED(flag) )
{ {
return 0; return 0;

View File

@@ -130,6 +130,7 @@ void wxListCtrl::Init()
m_imageListNormal = NULL; m_imageListNormal = NULL;
m_imageListSmall = NULL; m_imageListSmall = NULL;
m_imageListState = NULL; m_imageListState = NULL;
m_ownsImageListNormal = m_ownsImageListSmall = m_ownsImageListState = FALSE;
m_baseStyle = 0; m_baseStyle = 0;
m_colCount = 0; m_colCount = 0;
m_textCtrl = NULL; m_textCtrl = NULL;
@@ -284,6 +285,10 @@ wxListCtrl::~wxListCtrl()
delete m_textCtrl; delete m_textCtrl;
m_textCtrl = NULL; m_textCtrl = NULL;
} }
if (m_ownsImageListNormal) delete m_imageListNormal;
if (m_ownsImageListSmall) delete m_imageListSmall;
if (m_ownsImageListState) delete m_imageListState;
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -912,21 +917,38 @@ void wxListCtrl::SetImageList(wxImageList *imageList, int which)
if ( which == wxIMAGE_LIST_NORMAL ) if ( which == wxIMAGE_LIST_NORMAL )
{ {
flags = LVSIL_NORMAL; flags = LVSIL_NORMAL;
if (m_ownsImageListNormal) delete m_imageListNormal;
m_imageListNormal = imageList; m_imageListNormal = imageList;
m_ownsImageListNormal = FALSE;
} }
else if ( which == wxIMAGE_LIST_SMALL ) else if ( which == wxIMAGE_LIST_SMALL )
{ {
flags = LVSIL_SMALL; flags = LVSIL_SMALL;
if (m_ownsImageListSmall) delete m_imageListSmall;
m_imageListSmall = imageList; m_imageListSmall = imageList;
m_ownsImageListSmall = FALSE;
} }
else if ( which == wxIMAGE_LIST_STATE ) else if ( which == wxIMAGE_LIST_STATE )
{ {
flags = LVSIL_STATE; flags = LVSIL_STATE;
if (m_ownsImageListState) delete m_imageListState;
m_imageListState = imageList; m_imageListState = imageList;
m_ownsImageListState = FALSE;
} }
ListView_SetImageList(GetHwnd(), (HIMAGELIST) imageList ? imageList->GetHIMAGELIST() : 0, flags); ListView_SetImageList(GetHwnd(), (HIMAGELIST) imageList ? imageList->GetHIMAGELIST() : 0, flags);
} }
void wxListCtrl::AssignImageList(wxImageList *imageList, int which)
{
SetImageList(imageList, which);
if ( which == wxIMAGE_LIST_NORMAL )
m_ownsImageListNormal = TRUE;
else if ( which == wxIMAGE_LIST_SMALL )
m_ownsImageListSmall = TRUE;
else if ( which == wxIMAGE_LIST_STATE )
m_ownsImageListState = TRUE;
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Operations // Operations
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------