Try this again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18883 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
06e8e72d84
commit
c4f4cf895c
522
include/wx/os2/listctrl.h
Normal file
522
include/wx/os2/listctrl.h
Normal file
@ -0,0 +1,522 @@
|
||||
#ifndef _WX_LISTCTRL_H_
|
||||
#define _WX_LISTCTRL_H_
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma interface "listctrl.h"
|
||||
#endif
|
||||
|
||||
#if wxUSE_LISTCTRL
|
||||
|
||||
#include "wx/control.h"
|
||||
#include "wx/event.h"
|
||||
#include "wx/hash.h"
|
||||
#include "wx/textctrl.h"
|
||||
|
||||
|
||||
class WXDLLEXPORT wxImageList;
|
||||
|
||||
typedef int (wxCALLBACK *wxListCtrlCompare)(long lItem1, long lItem2, long lSortData);
|
||||
|
||||
class WXDLLEXPORT wxListCtrl: public wxControl
|
||||
{
|
||||
public:
|
||||
wxListCtrl() { Init(); }
|
||||
wxListCtrl( wxWindow* pParent
|
||||
,wxWindowID vId = -1
|
||||
,const wxPoint& rPos = wxDefaultPosition
|
||||
,const wxSize& rSize = wxDefaultSize
|
||||
,long lStyle = wxLC_ICON
|
||||
,const wxValidator& rValidator = wxDefaultValidator
|
||||
,const wxString& rsName = _T("wxListCtrl"))
|
||||
{
|
||||
Init();
|
||||
Create( pParent
|
||||
,vId
|
||||
,rPos
|
||||
,rSize
|
||||
,lStyle
|
||||
,rValidator
|
||||
,rsName
|
||||
);
|
||||
}
|
||||
virtual ~wxListCtrl();
|
||||
|
||||
bool Create( wxWindow* pParent
|
||||
,wxWindowID vId = -1
|
||||
,const wxPoint& rPos = wxDefaultPosition
|
||||
,const wxSize& rSize = wxDefaultSize
|
||||
,long lStyle = wxLC_ICON
|
||||
,const wxValidator& rValidator = wxDefaultValidator
|
||||
,const wxString& rsName = _T("wxListCtrl")
|
||||
);
|
||||
|
||||
|
||||
// Attributes
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Set the control colours
|
||||
//
|
||||
bool SetForegroundColour(const wxColour& rCol);
|
||||
bool SetBackgroundColour(const wxColour& rCol);
|
||||
|
||||
//
|
||||
// Information about this column
|
||||
//
|
||||
bool GetColumn( int nCol
|
||||
,wxListItem& rItem
|
||||
) const;
|
||||
bool SetColumn( int nCol
|
||||
,wxListItem& rItem
|
||||
);
|
||||
|
||||
//
|
||||
// Column width
|
||||
//
|
||||
int GetColumnWidth(int nCol) const;
|
||||
bool SetColumnWidth( int nCol
|
||||
,int nWidth
|
||||
);
|
||||
|
||||
//
|
||||
// Gets the number of items that can fit vertically in the
|
||||
// visible area of the list control (list or report view)
|
||||
// or the total number of items in the list control (icon
|
||||
// or small icon view)
|
||||
//
|
||||
int GetCountPerPage(void) const;
|
||||
|
||||
//
|
||||
// Gets the edit control for editing labels.
|
||||
//
|
||||
wxTextCtrl* GetEditControl(void) const;
|
||||
|
||||
//
|
||||
// Information about the item
|
||||
//
|
||||
bool GetItem(wxListItem& rInfo) const;
|
||||
bool SetItem(wxListItem& rInfo);
|
||||
|
||||
//
|
||||
// Sets a string field at a particular column
|
||||
//
|
||||
long SetItem( long lIndex
|
||||
,int nCol
|
||||
,const wxString& rsLabel
|
||||
,int nImageId = -1
|
||||
);
|
||||
|
||||
//
|
||||
// Item state
|
||||
//
|
||||
int GetItemState( long lItem
|
||||
,long lStateMask
|
||||
) const;
|
||||
bool SetItemState( long lItem
|
||||
,long lState
|
||||
,long lStateMask
|
||||
);
|
||||
|
||||
//
|
||||
// Sets the item image
|
||||
//
|
||||
bool SetItemImage( long lItem
|
||||
,int nImage
|
||||
,int lSelImage
|
||||
);
|
||||
|
||||
//
|
||||
// Item text
|
||||
//
|
||||
wxString GetItemText(long lItem) const;
|
||||
void SetItemText( long lItem
|
||||
,const wxString& rsStr
|
||||
);
|
||||
|
||||
//
|
||||
// Item data
|
||||
//
|
||||
long GetItemData(long lItem) const;
|
||||
bool SetItemData( long lItem
|
||||
,long lData
|
||||
);
|
||||
|
||||
//
|
||||
// Gets the item rectangle
|
||||
//
|
||||
bool GetItemRect( long lItem
|
||||
,wxRect& rRect
|
||||
,int nCode = wxLIST_RECT_BOUNDS
|
||||
) const;
|
||||
|
||||
//
|
||||
// Item position
|
||||
//
|
||||
bool GetItemPosition( long lItem
|
||||
,wxPoint& rPos
|
||||
) const;
|
||||
bool SetItemPosition( long lItem
|
||||
,const wxPoint& rPos
|
||||
);
|
||||
|
||||
//
|
||||
// Gets the number of items in the list control
|
||||
//
|
||||
int GetItemCount(void) const;
|
||||
|
||||
//
|
||||
// Gets the number of columns in the list control
|
||||
//
|
||||
inline int GetColumnCount(void) const { return m_nColCount; }
|
||||
|
||||
//
|
||||
// Retrieves the spacing between icons in pixels.
|
||||
// If small is TRUE, gets the spacing for the small icon
|
||||
// view, otherwise the large icon view.
|
||||
//
|
||||
int GetItemSpacing(bool bIsSmall) const;
|
||||
|
||||
//
|
||||
// Foreground colour of an item.
|
||||
//
|
||||
wxColour GetItemTextColour(long lItem) const;
|
||||
void SetItemTextColour( long lItem
|
||||
,const wxColour& rCol
|
||||
);
|
||||
|
||||
//
|
||||
// Background colour of an item.
|
||||
//
|
||||
wxColour GetItemBackgroundColour(long lItem ) const;
|
||||
void SetItemBackgroundColour( long lItem
|
||||
,const wxColour& rCol
|
||||
);
|
||||
|
||||
//
|
||||
// Gets the number of selected items in the list control
|
||||
//
|
||||
int GetSelectedItemCount(void) const;
|
||||
|
||||
//
|
||||
// Text colour of the listview
|
||||
//
|
||||
wxColour GetTextColour(void) const;
|
||||
void SetTextColour(const wxColour& rCol);
|
||||
|
||||
//
|
||||
// Gets the index of the topmost visible item when in
|
||||
// list or report view
|
||||
//
|
||||
long GetTopItem(void) const;
|
||||
|
||||
//
|
||||
// Add or remove a single window style
|
||||
void SetSingleStyle( long lStyle
|
||||
,bool bAdd = TRUE
|
||||
);
|
||||
|
||||
//
|
||||
// Set the whole window style
|
||||
//
|
||||
void SetWindowStyleFlag(long lStyle);
|
||||
|
||||
//
|
||||
// Searches for an item, starting from 'item'.
|
||||
// item can be -1 to find the first item that matches the
|
||||
// specified flags.
|
||||
// Returns the item or -1 if unsuccessful.
|
||||
long GetNextItem( long lItem
|
||||
,int nGeometry = wxLIST_NEXT_ALL
|
||||
,int lState = wxLIST_STATE_DONTCARE
|
||||
) const;
|
||||
|
||||
//
|
||||
// Gets one of the three image lists
|
||||
//
|
||||
wxImageList* GetImageList(int nWhich) const;
|
||||
|
||||
//
|
||||
// Sets the image list
|
||||
//
|
||||
void SetImageList( wxImageList* pImageList
|
||||
,int nWhich
|
||||
);
|
||||
void AssignImageList( wxImageList* pImageList
|
||||
,int nWhich
|
||||
);
|
||||
|
||||
//
|
||||
// Returns true if it is a virtual list control
|
||||
//
|
||||
inline bool IsVirtual() const { return (GetWindowStyle() & wxLC_VIRTUAL) != 0; }
|
||||
|
||||
//
|
||||
// Refresh items selectively (only useful for virtual list controls)
|
||||
//
|
||||
void RefreshItem(long lItem);
|
||||
void RefreshItems( long lItemFrom
|
||||
,long lItemTo
|
||||
);
|
||||
|
||||
//
|
||||
// Operations
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
||||
//
|
||||
// Arranges the items
|
||||
//
|
||||
bool Arrange(int nFlag = wxLIST_ALIGN_DEFAULT);
|
||||
|
||||
//
|
||||
// Deletes an item
|
||||
//
|
||||
bool DeleteItem(long lItem);
|
||||
|
||||
//
|
||||
// Deletes all items
|
||||
bool DeleteAllItems(void);
|
||||
|
||||
//
|
||||
// Deletes a column
|
||||
//
|
||||
bool DeleteColumn(int nCol);
|
||||
|
||||
//
|
||||
// Deletes all columns
|
||||
//
|
||||
bool DeleteAllColumns(void);
|
||||
|
||||
//
|
||||
// Clears items, and columns if there are any.
|
||||
//
|
||||
void ClearAll(void);
|
||||
|
||||
//
|
||||
// Edit the label
|
||||
//
|
||||
wxTextCtrl* EditLabel( long lItem
|
||||
,wxClassInfo* pTextControlClass = CLASSINFO(wxTextCtrl)
|
||||
);
|
||||
|
||||
//
|
||||
// End label editing, optionally cancelling the edit
|
||||
//
|
||||
bool EndEditLabel(bool bCancel);
|
||||
|
||||
//
|
||||
// Ensures this item is visible
|
||||
//
|
||||
bool EnsureVisible(long lItem);
|
||||
|
||||
//
|
||||
// Find an item whose label matches this string, starting from the item after 'start'
|
||||
// or the beginning if 'start' is -1.
|
||||
//
|
||||
long FindItem( long lStart
|
||||
,const wxString& rsStr
|
||||
,bool bPartial = FALSE
|
||||
);
|
||||
|
||||
//
|
||||
// Find an item whose data matches this data, starting from the item after 'start'
|
||||
// or the beginning if 'start' is -1.
|
||||
//
|
||||
long FindItem( long lStart
|
||||
,long lData
|
||||
);
|
||||
|
||||
//
|
||||
// Find an item nearest this position in the specified direction, starting from
|
||||
// the item after 'start' or the beginning if 'start' is -1.
|
||||
//
|
||||
long FindItem( long lStart
|
||||
,const wxPoint& rPoint
|
||||
,int lDirection
|
||||
);
|
||||
|
||||
//
|
||||
// Determines which item (if any) is at the specified point,
|
||||
// giving details in 'flags' (see wxLIST_HITTEST_... flags above)
|
||||
//
|
||||
long HitTest( const wxPoint& rPoint
|
||||
,int& rFlags
|
||||
);
|
||||
|
||||
//
|
||||
// Inserts an item, returning the index of the new item if successful,
|
||||
// -1 otherwise.
|
||||
//
|
||||
long InsertItem(wxListItem& rInfo);
|
||||
|
||||
//
|
||||
// Insert a string item
|
||||
//
|
||||
long InsertItem( long lIndex
|
||||
,const wxString& rsLabel
|
||||
);
|
||||
|
||||
//
|
||||
// Insert an image item
|
||||
//
|
||||
long InsertItem( long lIndex
|
||||
,int nImageIndex
|
||||
);
|
||||
|
||||
//
|
||||
// Insert an image/string item
|
||||
//
|
||||
long InsertItem( long lIndex
|
||||
,const wxString& rsLabel
|
||||
,int nImageIndex
|
||||
);
|
||||
|
||||
//
|
||||
// For list view mode (only), inserts a column.
|
||||
//
|
||||
long InsertColumn( long lCol
|
||||
,wxListItem& rInfo
|
||||
);
|
||||
|
||||
long InsertColumn( long lCol
|
||||
,const wxString& rsHeading
|
||||
,int nFormat = wxLIST_FORMAT_LEFT
|
||||
,int lWidth = -1
|
||||
);
|
||||
|
||||
//
|
||||
// set the number of items in a virtual list control
|
||||
//
|
||||
void SetItemCount(long lCount);
|
||||
|
||||
//
|
||||
// Scrolls the list control. If in icon, small icon or report view mode,
|
||||
// x specifies the number of pixels to scroll. If in list view mode, x
|
||||
// specifies the number of columns to scroll.
|
||||
// If in icon, small icon or list view mode, y specifies the number of pixels
|
||||
// to scroll. If in report view mode, y specifies the number of lines to scroll.
|
||||
//
|
||||
bool ScrollList( int nDx
|
||||
,int nDy
|
||||
);
|
||||
|
||||
// Sort items.
|
||||
|
||||
//
|
||||
// fn is a function which takes 3 long arguments: item1, item2, data.
|
||||
// item1 is the long data associated with a first item (NOT the index).
|
||||
// item2 is the long data associated with a second item (NOT the index).
|
||||
// data is the same value as passed to SortItems.
|
||||
// The return value is a negative number if the first item should precede the second
|
||||
// item, a positive number of the second item should precede the first,
|
||||
// or zero if the two items are equivalent.
|
||||
//
|
||||
// data is arbitrary data to be passed to the sort function.
|
||||
//
|
||||
bool SortItems( wxListCtrlCompare fn
|
||||
,long lData
|
||||
);
|
||||
|
||||
//
|
||||
// IMPLEMENTATION
|
||||
// --------------
|
||||
//
|
||||
virtual bool OS2Command( WXUINT uParam
|
||||
,WXWORD wId
|
||||
);
|
||||
//
|
||||
// Bring the control in sync with current m_windowStyle value
|
||||
//
|
||||
void UpdateStyle(void);
|
||||
|
||||
//
|
||||
// Implementation: converts wxWindows style to MSW style.
|
||||
// Can be a single style flag or a bit list.
|
||||
// oldStyle is 'normalised' so that it doesn't contain
|
||||
// conflicting styles.
|
||||
//
|
||||
long ConvertToOS2Style( long& lOldStyle
|
||||
,long lStyle
|
||||
) const;
|
||||
long ConvertArrangeToOS2Style(long lStyle);
|
||||
long ConvertViewToOS2Style(long lStyle);
|
||||
|
||||
virtual MRESULT OS2WindowProc( WXUINT uMsg
|
||||
,WXWPARAM wParam
|
||||
,WXLPARAM lParam
|
||||
);
|
||||
|
||||
// Event handlers
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// Necessary for drawing hrules and vrules, if specified
|
||||
void OnPaint(wxPaintEvent& rEvent);
|
||||
|
||||
protected:
|
||||
//
|
||||
// common part of all ctors
|
||||
//
|
||||
void Init(void);
|
||||
|
||||
//
|
||||
// Free memory taken by all internal data
|
||||
//
|
||||
void FreeAllInternalData(void);
|
||||
|
||||
wxTextCtrl* m_pTextCtrl; // The control used for editing a label
|
||||
wxImageList* m_pImageListNormal; // The image list for normal icons
|
||||
wxImageList* m_pImageListSmall; // The image list for small icons
|
||||
wxImageList* m_pImageListState; // The image list state icons (not implemented yet)
|
||||
bool m_bOwnsImageListNormal;
|
||||
bool m_bOwnsImageListSmall;
|
||||
bool m_bOwnsImageListState;
|
||||
long m_lBaseStyle; // Basic PM style flags, for recreation purposes
|
||||
int m_nColCount; // PM doesn't have GetColumnCount so must
|
||||
// keep track of inserted/deleted columns
|
||||
|
||||
//
|
||||
// TRUE if we have any internal data (user data & attributes)
|
||||
//
|
||||
bool m_bAnyInternalData;
|
||||
|
||||
//
|
||||
// TRUE if we have any items with custom attributes
|
||||
//
|
||||
bool m_bHasAnyAttr;
|
||||
|
||||
//
|
||||
// These functions are only used for virtual list view controls, i.e. the
|
||||
// ones with wxLC_VIRTUAL style
|
||||
//
|
||||
// return the text for the given column of the given item
|
||||
//
|
||||
virtual wxString OnGetItemText( long lItem
|
||||
,long lColumn
|
||||
) const;
|
||||
|
||||
//
|
||||
// Return the icon for the given item
|
||||
//
|
||||
virtual int OnGetItemImage(long lItem) const;
|
||||
|
||||
//
|
||||
// Return the attribute for the item (may return NULL if none)
|
||||
//
|
||||
virtual wxListItemAttr* OnGetItemAttr(long lItem) const;
|
||||
|
||||
private:
|
||||
bool DoCreateControl( int nX
|
||||
,int nY
|
||||
,int nWidth
|
||||
,int nHeight
|
||||
);
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxListCtrl)
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_NO_COPY_CLASS(wxListCtrl)
|
||||
}; // end of CLASS wxListCtrl
|
||||
|
||||
#endif // wxUSE_LISTCTRL
|
||||
|
||||
#endif // _WX_LISTCTRL_H_
|
||||
|
2747
src/os2/listctrl.cpp
Normal file
2747
src/os2/listctrl.cpp
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user