| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/listctrl.h
- // Purpose: interface of wxListCtrl
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /// style flags
- #define wxLC_VRULES 0x0001
- #define wxLC_HRULES 0x0002
- #define wxLC_ICON 0x0004
- #define wxLC_SMALL_ICON 0x0008
- #define wxLC_LIST 0x0010
- #define wxLC_REPORT 0x0020
- #define wxLC_ALIGN_TOP 0x0040
- #define wxLC_ALIGN_LEFT 0x0080
- #define wxLC_AUTOARRANGE 0x0100
- #define wxLC_VIRTUAL 0x0200
- #define wxLC_EDIT_LABELS 0x0400
- #define wxLC_NO_HEADER 0x0800
- #define wxLC_NO_SORT_HEADER 0x1000
- #define wxLC_SINGLE_SEL 0x2000
- #define wxLC_SORT_ASCENDING 0x4000
- #define wxLC_SORT_DESCENDING 0x8000
- #define wxLC_MASK_TYPE (wxLC_ICON | wxLC_SMALL_ICON | wxLC_LIST | wxLC_REPORT)
- #define wxLC_MASK_ALIGN (wxLC_ALIGN_TOP | wxLC_ALIGN_LEFT)
- #define wxLC_MASK_SORT (wxLC_SORT_ASCENDING | wxLC_SORT_DESCENDING)
- /// Mask flags to tell app/GUI what fields of wxListItem are valid
- #define wxLIST_MASK_STATE 0x0001
- #define wxLIST_MASK_TEXT 0x0002
- #define wxLIST_MASK_IMAGE 0x0004
- #define wxLIST_MASK_DATA 0x0008
- #define wxLIST_SET_ITEM 0x0010
- #define wxLIST_MASK_WIDTH 0x0020
- #define wxLIST_MASK_FORMAT 0x0040
- /// State flags for indicating the state of an item
- #define wxLIST_STATE_DONTCARE 0x0000
- #define wxLIST_STATE_DROPHILITED 0x0001 // MSW only
- #define wxLIST_STATE_FOCUSED 0x0002
- #define wxLIST_STATE_SELECTED 0x0004
- #define wxLIST_STATE_CUT 0x0008 // MSW only
- #define wxLIST_STATE_DISABLED 0x0010 // OS2 only
- #define wxLIST_STATE_FILTERED 0x0020 // OS2 only
- #define wxLIST_STATE_INUSE 0x0040 // OS2 only
- #define wxLIST_STATE_PICKED 0x0080 // OS2 only
- #define wxLIST_STATE_SOURCE 0x0100 // OS2 only
- /// Hit test flags, used in HitTest
- #define wxLIST_HITTEST_ABOVE 0x0001 // Above the client area.
- #define wxLIST_HITTEST_BELOW 0x0002 // Below the client area.
- #define wxLIST_HITTEST_NOWHERE 0x0004 // In the client area but below the last item.
- #define wxLIST_HITTEST_ONITEMICON 0x0020 // On the bitmap associated with an item.
- #define wxLIST_HITTEST_ONITEMLABEL 0x0080 // On the label (string) associated with an item.
- #define wxLIST_HITTEST_ONITEMRIGHT 0x0100 // In the area to the right of an item.
- #define wxLIST_HITTEST_ONITEMSTATEICON 0x0200 // On the state icon for a tree view item that is in a user-defined state.
- #define wxLIST_HITTEST_TOLEFT 0x0400 // To the left of the client area.
- #define wxLIST_HITTEST_TORIGHT 0x0800 // To the right of the client area.
- #define wxLIST_HITTEST_ONITEM (wxLIST_HITTEST_ONITEMICON | wxLIST_HITTEST_ONITEMLABEL | wxLIST_HITTEST_ONITEMSTATEICON)
- /// GetSubItemRect constants
- #define wxLIST_GETSUBITEMRECT_WHOLEITEM -1l
- /// Flags for GetNextItem (MSW only except wxLIST_NEXT_ALL)
- enum
- {
- wxLIST_NEXT_ABOVE, // Searches for an item above the specified item
- wxLIST_NEXT_ALL, // Searches for subsequent item by index
- wxLIST_NEXT_BELOW, // Searches for an item below the specified item
- wxLIST_NEXT_LEFT, // Searches for an item to the left of the specified item
- wxLIST_NEXT_RIGHT // Searches for an item to the right of the specified item
- };
- /// Alignment flags for Arrange (MSW only except wxLIST_ALIGN_LEFT)
- enum
- {
- wxLIST_ALIGN_DEFAULT,
- wxLIST_ALIGN_LEFT,
- wxLIST_ALIGN_TOP,
- wxLIST_ALIGN_SNAP_TO_GRID
- };
- /// Column format (MSW only except wxLIST_FORMAT_LEFT)
- enum wxListColumnFormat
- {
- wxLIST_FORMAT_LEFT,
- wxLIST_FORMAT_RIGHT,
- wxLIST_FORMAT_CENTRE,
- wxLIST_FORMAT_CENTER = wxLIST_FORMAT_CENTRE
- };
- /// Autosize values for SetColumnWidth
- enum
- {
- wxLIST_AUTOSIZE = -1,
- wxLIST_AUTOSIZE_USEHEADER = -2 // partly supported by generic version
- };
- /// Flag values for GetItemRect
- enum
- {
- wxLIST_RECT_BOUNDS,
- wxLIST_RECT_ICON,
- wxLIST_RECT_LABEL
- };
- /// Flag values for FindItem (MSW only)
- enum
- {
- wxLIST_FIND_UP,
- wxLIST_FIND_DOWN,
- wxLIST_FIND_LEFT,
- wxLIST_FIND_RIGHT
- };
- /**
- @class wxListCtrl
- A list control presents lists in a number of formats: list view, report view,
- icon view and small icon view. In any case, elements are numbered from zero.
- For all these modes, the items are stored in the control and must be added to
- it using wxListCtrl::InsertItem method.
- A special case of report view quite different from the other modes of the list
- control is a virtual control in which the items data (including text, images
- and attributes) is managed by the main program and is requested by the control
- itself only when needed which allows to have controls with millions of items
- without consuming much memory. To use virtual list control you must use
- wxListCtrl::SetItemCount first and override at least wxListCtrl::OnGetItemText
- (and optionally wxListCtrl::OnGetItemImage or wxListCtrl::OnGetItemColumnImage and
- wxListCtrl::OnGetItemAttr) to return the information about the items when the
- control requests it.
- Virtual list control can be used as a normal one except that no operations
- which can take time proportional to the number of items in the control happen
- -- this is required to allow having a practically infinite number of items.
- For example, in a multiple selection virtual list control, the selections won't
- be sent when many items are selected at once because this could mean iterating
- over all the items.
- Using many of wxListCtrl features is shown in the
- @ref page_samples_listctrl "corresponding sample".
- To intercept events from a list control, use the event table macros described
- in wxListEvent.
- <b>wxMac Note</b>: Starting with wxWidgets 2.8, wxListCtrl uses a native
- implementation for report mode, and uses a generic implementation for other
- modes. You can use the generic implementation for report mode as well by setting
- the @c mac.listctrl.always_use_generic system option (see wxSystemOptions) to 1.
- @beginStyleTable
- @style{wxLC_LIST}
- Multicolumn list view, with optional small icons. Columns are
- computed automatically, i.e. you don't set columns as in
- @c wxLC_REPORT. In other words, the list wraps, unlike a wxListBox.
- @style{wxLC_REPORT}
- Single or multicolumn report view, with optional header.
- @style{wxLC_VIRTUAL}
- The application provides items text on demand. May only be used
- with @c wxLC_REPORT.
- @style{wxLC_ICON}
- Large icon view, with optional labels.
- @style{wxLC_SMALL_ICON}
- Small icon view, with optional labels.
- @style{wxLC_ALIGN_TOP}
- Icons align to the top. Win32 default, Win32 only.
- @style{wxLC_ALIGN_LEFT}
- Icons align to the left.
- @style{wxLC_AUTOARRANGE}
- Icons arrange themselves. Win32 only.
- @style{wxLC_EDIT_LABELS}
- Labels are editable: the application will be notified when editing
- starts.
- @style{wxLC_NO_HEADER}
- No header in report mode.
- @style{wxLC_SINGLE_SEL}
- Single selection (default is multiple).
- @style{wxLC_SORT_ASCENDING}
- Sort in ascending order. (You must still supply a comparison callback
- in wxListCtrl::SortItems.)
- @style{wxLC_SORT_DESCENDING}
- Sort in descending order. (You must still supply a comparison callback
- in wxListCtrl::SortItems.)
- @style{wxLC_HRULES}
- Draws light horizontal rules between rows in report mode.
- @style{wxLC_VRULES}
- Draws light vertical rules between columns in report mode.
- @endStyleTable
- @beginEventEmissionTable{wxListEvent}
- @event{EVT_LIST_BEGIN_DRAG(id, func)}
- Begin dragging with the left mouse button.
- Processes a @c wxEVT_LIST_BEGIN_DRAG event type.
- @event{EVT_LIST_BEGIN_RDRAG(id, func)}
- Begin dragging with the right mouse button.
- Processes a @c wxEVT_LIST_BEGIN_RDRAG event type.
- @event{EVT_BEGIN_LABEL_EDIT(id, func)}
- Begin editing a label. This can be prevented by calling Veto().
- Processes a @c wxEVT_LIST_BEGIN_LABEL_EDIT event type.
- @event{EVT_LIST_END_LABEL_EDIT(id, func)}
- Finish editing a label. This can be prevented by calling Veto().
- Processes a @c wxEVT_LIST_END_LABEL_EDIT event type.
- @event{EVT_LIST_DELETE_ITEM(id, func)}
- An item was deleted.
- Processes a @c wxEVT_LIST_DELETE_ITEM event type.
- @event{EVT_LIST_DELETE_ALL_ITEMS(id, func)}
- All items were deleted.
- Processes a @c wxEVT_LIST_DELETE_ALL_ITEMS event type.
- @event{EVT_LIST_ITEM_SELECTED(id, func)}
- The item has been selected.
- Processes a @c wxEVT_LIST_ITEM_SELECTED event type.
- @event{EVT_LIST_ITEM_DESELECTED(id, func)}
- The item has been deselected.
- Processes a @c wxEVT_LIST_ITEM_DESELECTED event type.
- @event{EVT_LIST_ITEM_ACTIVATED(id, func)}
- The item has been activated (ENTER or double click).
- Processes a @c wxEVT_LIST_ITEM_ACTIVATED event type.
- @event{EVT_LIST_ITEM_FOCUSED(id, func)}
- The currently focused item has changed.
- Processes a @c wxEVT_LIST_ITEM_FOCUSED event type.
- @event{EVT_LIST_ITEM_MIDDLE_CLICK(id, func)}
- The middle mouse button has been clicked on an item. This is
- only supported by the generic control.
- Processes a @c wxEVT_LIST_ITEM_MIDDLE_CLICK event type.
- @event{EVT_LIST_ITEM_RIGHT_CLICK(id, func)}
- The right mouse button has been clicked on an item.
- Processes a @c wxEVT_LIST_ITEM_RIGHT_CLICK event type.
- @event{EVT_LIST_KEY_DOWN(id, func)}
- A key has been pressed.
- Processes a @c wxEVT_LIST_KEY_DOWN event type.
- @event{EVT_LIST_INSERT_ITEM(id, func)}
- An item has been inserted.
- Processes a @c wxEVT_LIST_INSERT_ITEM event type.
- @event{EVT_LIST_COL_CLICK(id, func)}
- A column (m_col) has been left-clicked.
- Processes a @c wxEVT_LIST_COL_CLICK event type.
- @event{EVT_LIST_COL_RIGHT_CLICK(id, func)}
- A column (m_col) has been right-clicked.
- Processes a @c wxEVT_LIST_COL_RIGHT_CLICK event type.
- @event{EVT_LIST_COL_BEGIN_DRAG(id, func)}
- The user started resizing a column - can be vetoed.
- Processes a @c wxEVT_LIST_COL_BEGIN_DRAG event type.
- @event{EVT_LIST_COL_DRAGGING(id, func)}
- The divider between columns is being dragged.
- Processes a @c wxEVT_LIST_COL_DRAGGING event type.
- @event{EVT_LIST_COL_END_DRAG(id, func)}
- A column has been resized by the user.
- Processes a @c wxEVT_LIST_COL_END_DRAG event type.
- @event{EVT_LIST_CACHE_HINT(id, func)}
- Prepare cache for a virtual list control.
- Processes a @c wxEVT_LIST_CACHE_HINT event type.
- @endEventTable
- @library{wxcore}
- @category{ctrl}
- @appearance{listctrl}
- @see @ref overview_listctrl, wxListView, wxListBox, wxTreeCtrl, wxImageList,
- wxListEvent, wxListItem, wxEditableListBox
- */
- class wxListCtrl : public wxControl
- {
- public:
- /**
- Default constructor.
- */
- wxListCtrl();
- /**
- Constructor, creating and showing a list control.
- @param parent
- Parent window. Must not be @NULL.
- @param id
- Window identifier. The value wxID_ANY indicates a default value.
- @param pos
- Window position.
- If ::wxDefaultPosition is specified then a default position is chosen.
- @param size
- Window size.
- If ::wxDefaultSize is specified then the window is sized appropriately.
- @param style
- Window style. See wxListCtrl.
- @param validator
- Window validator.
- @param name
- Window name.
- @see Create(), wxValidator
- */
- wxListCtrl(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxLC_ICON,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxListCtrlNameStr);
- /**
- Destructor, destroying the list control.
- */
- virtual ~wxListCtrl();
- /**
- Adds a new column to the list control in report view mode.
- This is just a convenient wrapper for InsertColumn() which adds the new
- column after all the existing ones without having to specify its
- position explicitly.
- @since 2.9.4
- */
- long AppendColumn(const wxString& heading,
- wxListColumnFormat format = wxLIST_FORMAT_LEFT,
- int width = -1);
- /**
- Arranges the items in icon or small icon view.
- This only has effect on Win32. @a flag is one of:
- - wxLIST_ALIGN_DEFAULT: Default alignment.
- - wxLIST_ALIGN_LEFT: Align to the left side of the control.
- - wxLIST_ALIGN_TOP: Align to the top side of the control.
- - wxLIST_ALIGN_SNAP_TO_GRID: Snap to grid.
- */
- bool Arrange(int flag = wxLIST_ALIGN_DEFAULT);
- /**
- 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). @a which is one of @c wxIMAGE_LIST_NORMAL, @c wxIMAGE_LIST_SMALL,
- @c wxIMAGE_LIST_STATE (the last is unimplemented).
- @see SetImageList()
- */
- void AssignImageList(wxImageList* imageList, int which);
- /**
- Deletes all items and all columns.
- @note This sends an event of type @c wxEVT_LIST_DELETE_ALL_ITEMS
- under all platforms.
- */
- void ClearAll();
- /**
- Creates the list control. See wxListCtrl() for further details.
- */
- bool Create(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxLC_ICON,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxListCtrlNameStr);
- /**
- Deletes all items in the list control.
- This function does @e not send the @c wxEVT_LIST_DELETE_ITEM
- event because deleting many items from the control would be too slow
- then (unlike wxListCtrl::DeleteItem) but it does send the special @c
- wxEVT_LIST_DELETE_ALL_ITEMS event if the control was not empty.
- If it was already empty, nothing is done and no event is sent.
- @return @true if the items were successfully deleted or if the control
- was already empty, @false if an error occurred while deleting the
- items.
- */
- bool DeleteAllItems();
- /**
- Deletes a column.
- */
- bool DeleteColumn(int col);
- /**
- Deletes the specified item.
- This function sends the @c wxEVT_LIST_DELETE_ITEM event for the
- item being deleted.
- @see DeleteAllItems()
- */
- bool DeleteItem(long item);
- /**
- Starts editing the label of the given item.
- This function generates a @c EVT_LIST_BEGIN_LABEL_EDIT event which can be
- vetoed so that no text control will appear for in-place editing.
- If the user changed the label (i.e. s/he does not press ESC or leave
- the text control without changes, a @c EVT_LIST_END_LABEL_EDIT event
- will be sent which can be vetoed as well.
- */
- wxTextCtrl* EditLabel(long item,
- wxClassInfo* textControlClass = wxCLASSINFO(wxTextCtrl));
- /**
- Enable alternating row background colours (also called zebra striping).
- This method can only be called for the control in virtual report mode,
- i.e. having ::wxLC_REPORT and ::wxLC_VIRTUAL styles.
- When enabling alternating colours, the appropriate colour for the even
- rows is chosen automatically depending on the default foreground and
- background colours which are used for the odd rows.
- @param enable
- If @true, enable alternating row background colours, i.e. different
- colours for the odd and even rows. If @false, disable this feature
- and use the same background colour for all rows.
- @since 2.9.5
- @see SetAlternateRowColour()
- */
- void EnableAlternateRowColours(bool enable = true);
- /**
- Enable or disable a beep if there is no match for the currently
- entered text when searching for the item from keyboard.
- The default is to not beep in this case except in wxMSW where the
- beep is always generated by the native control and cannot be disabled,
- i.e. calls to this function do nothing there.
- @since 2.9.5
- */
- void EnableBellOnNoMatch(bool on = true);
- /**
- Finish editing the label.
- This method allows to programmatically end editing a list control item
- in place. Usually it will only be called when editing is in progress,
- i.e. if GetEditControl() returns non-NULL. In particular, do not call
- it from EVT_LIST_BEGIN_LABEL_EDIT handler as the edit control is not
- yet fully created by then, just veto the event in this handler instead
- to prevent the editing from even starting.
- Notice that calling this method will result in EVT_LIST_END_LABEL_EDIT
- event being generated.
- Currently only implemented in wxMSW.
- @param cancel If @true, discard the changes made by user, as if @c
- Escape key was pressed. Otherwise, accept the changes as if @c
- Return was pressed.
- @return @true if item editing was finished or @false if no item as
- being edited.
- */
- bool EndEditLabel(bool cancel);
- /**
- Ensures this item is visible.
- */
- bool EnsureVisible(long item);
- /**
- Find an item whose label matches this string, starting from start or the
- beginning if start is @c -1. The string comparison is case insensitive.
- If @a partial is @true then this method will look for items which begin with @a str.
- @return The next matching item if any or @c -1 (wxNOT_FOUND) otherwise.
- */
- long FindItem(long start, const wxString& str,
- bool partial = false);
- /**
- Find an item whose data matches this data, starting from start or the
- beginning if 'start' is @c -1.
- @beginWxPerlOnly
- In wxPerl this method is implemented as FindItemData(start, data).
- @endWxPerlOnly
- @return The next matching item if any or @c -1 (wxNOT_FOUND) otherwise.
- */
- long FindItem(long start, wxUIntPtr data);
- /**
- Find an item nearest this position in the specified direction,
- starting from @a start or the beginning if @a start is -1.
- @beginWxPerlOnly
- In wxPerl this method is implemented as FindItemAtPos(start, pt, direction).
- @endWxPerlOnly
- @return The next matching item if any or @c -1 (wxNOT_FOUND) otherwise.
- */
- long FindItem(long start, const wxPoint& pt, int direction);
- /**
- Gets information about this column.
- See SetItem() for more information.
- @beginWxPerlOnly
- In wxPerl this method takes only the @a col parameter and
- returns a @c Wx::ListItem (or @c undef).
- @endWxPerlOnly
- */
- bool GetColumn(int col, wxListItem& item) const;
- /**
- Returns the number of columns.
- */
- int GetColumnCount() const;
- /**
- Gets the column index from its position in visual order.
- After calling SetColumnsOrder(), the index returned by this function
- corresponds to the value of the element number @a pos in the array
- returned by GetColumnsOrder().
- Please see SetColumnsOrder() documentation for an example and
- additional remarks about the columns ordering.
- @see GetColumnOrder()
- */
- int GetColumnIndexFromOrder(int pos) const;
- /**
- Gets the column visual order position.
- This function returns the index of the column which appears at the
- given visual position, e.g. calling it with @a col equal to 0 returns
- the index of the first shown column.
- Please see SetColumnsOrder() documentation for an example and
- additional remarks about the columns ordering.
- @see GetColumnsOrder(), GetColumnIndexFromOrder()
- */
- int GetColumnOrder(int col) const;
- /**
- Gets the column width (report view only).
- */
- int GetColumnWidth(int col) const;
- /**
- Returns the array containing the orders of all columns.
- On error, an empty array is returned.
- Please see SetColumnsOrder() documentation for an example and
- additional remarks about the columns ordering.
- @see GetColumnOrder(), GetColumnIndexFromOrder()
- */
- wxArrayInt GetColumnsOrder() const;
- /**
- 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() const;
- /**
- Returns the edit control being currently used to edit a label.
- Returns @NULL if no label is being edited.
- @note It is currently only implemented for wxMSW and the generic version,
- not for the native Mac OS X version.
- */
- wxTextCtrl* GetEditControl() const;
- /**
- Returns the specified image list. @a which may be one of:
- - wxIMAGE_LIST_NORMAL: The normal (large icon) image list.
- - wxIMAGE_LIST_SMALL: The small icon image list.
- - wxIMAGE_LIST_STATE: The user-defined state image list (unimplemented).
- */
- wxImageList* GetImageList(int which) const;
- /**
- Gets information about the item. See SetItem() for more information.
- You must call @e info.SetId() to set the ID of item you're interested in
- before calling this method, and @e info.SetMask() with the flags indicating
- what fields you need to retrieve from @a info.
- @beginWxPerlOnly
- In wxPerl this method takes as parameter the ID of the item
- and (optionally) the column, and returns a Wx::ListItem object.
- @endWxPerlOnly
- */
- bool GetItem(wxListItem& info) const;
- /**
- Returns the colour for this item.
- If the item has no specific colour, returns an invalid colour
- (and not the default background control of the control itself).
- @see GetItemTextColour()
- */
- wxColour GetItemBackgroundColour(long item) const;
- /**
- Returns the number of items in the list control.
- */
- int GetItemCount() const;
- /**
- Gets the application-defined data associated with this item.
- */
- wxUIntPtr GetItemData(long item) const;
- /**
- Returns the item's font.
- */
- wxFont GetItemFont(long item) const;
- /**
- Returns the position of the item, in icon or small icon view.
- @beginWxPerlOnly
- In wxPerl this method takes only the @a item parameter and
- returns a @c Wx::Point (or @c undef).
- @endWxPerlOnly
- */
- bool GetItemPosition(long item, wxPoint& pos) const;
- /**
- Returns the rectangle representing the item's size and position, in physical
- coordinates.
- @a code is one of wxLIST_RECT_BOUNDS, wxLIST_RECT_ICON, wxLIST_RECT_LABEL.
- @beginWxPerlOnly
- In wxPerl this method takes only the @a item and @a code parameters and
- returns a @c Wx::Rect (or @c undef).
- @endWxPerlOnly
- */
- bool GetItemRect(long item, wxRect& rect,
- int code = wxLIST_RECT_BOUNDS) const;
- /**
- Retrieves the spacing between icons in pixels: horizontal spacing is
- returned as @c x component of the wxSize object and the vertical spacing
- as its @c y component.
- */
- wxSize GetItemSpacing() const;
- /**
- Gets the item state. For a list of state flags, see SetItem().
- The @a stateMask indicates which state flags are of interest.
- */
- int GetItemState(long item, long stateMask) const;
- /**
- Gets the item text for this item.
- @param item
- Item (zero-based) index.
- @param col
- Item column (zero-based) index. Column 0 is the default. This
- parameter is new in wxWidgets 2.9.1.
- */
- wxString GetItemText(long item, int col = 0) const;
- /**
- Returns the colour for this item.
- If the item has no specific colour, returns an invalid colour (and not the
- default foreground control of the control itself as this wouldn't allow
- distinguishing between items having the same colour as the current control
- foreground and items with default colour which, hence, have always the
- same colour as the control).
- */
- wxColour GetItemTextColour(long item) const;
- /**
- Searches for an item with the given geometry or state, starting from
- @a item but excluding the @a item itself.
- If @a item is -1, the first item that matches the specified flags will be returned.
- Returns the first item with given state following @a item or -1 if no such item found.
- This function may be used to find all selected items in the control like this:
- @code
- long item = -1;
- for ( ;; )
- {
- item = listctrl->GetNextItem(item,
- wxLIST_NEXT_ALL,
- wxLIST_STATE_SELECTED);
- if ( item == -1 )
- break;
- // this item is selected - do whatever is needed with it
- wxLogMessage("Item %ld is selected.", item);
- }
- @endcode
- @a geometry can be one of:
- - wxLIST_NEXT_ABOVE: Searches for an item above the specified item.
- - wxLIST_NEXT_ALL: Searches for subsequent item by index.
- - wxLIST_NEXT_BELOW: Searches for an item below the specified item.
- - wxLIST_NEXT_LEFT: Searches for an item to the left of the specified item.
- - wxLIST_NEXT_RIGHT: Searches for an item to the right of the specified item.
- @note this parameter is only supported by wxMSW currently and ignored on
- other platforms.
- @a state can be a bitlist of the following:
- - wxLIST_STATE_DONTCARE: Don't care what the state is.
- - wxLIST_STATE_DROPHILITED: The item indicates it is a drop target.
- - wxLIST_STATE_FOCUSED: The item has the focus.
- - wxLIST_STATE_SELECTED: The item is selected.
- - wxLIST_STATE_CUT: The item is selected as part of a cut and paste operation.
- */
- long GetNextItem(long item, int geometry = wxLIST_NEXT_ALL,
- int state = wxLIST_STATE_DONTCARE) const;
- /**
- Returns the number of selected items in the list control.
- */
- int GetSelectedItemCount() const;
- /**
- Returns the rectangle representing the size and position, in physical
- coordinates, of the given subitem, i.e. the part of the row @a item in the
- column @a subItem.
- This method is only meaningful when the wxListCtrl is in the report mode.
- If @a subItem parameter is equal to the special value
- @c wxLIST_GETSUBITEMRECT_WHOLEITEM the return value is the same as
- for GetItemRect().
- @a code can be one of @c wxLIST_RECT_BOUNDS, @c wxLIST_RECT_ICON or
- @c wxLIST_RECT_LABEL.
- @since 2.7.0
- */
- bool GetSubItemRect(long item, long subItem, wxRect& rect,
- int code = wxLIST_RECT_BOUNDS) const;
- /**
- Gets the text colour of the list control.
- */
- wxColour GetTextColour() const;
- /**
- Gets the index of the topmost visible item when in list or report view.
- */
- long GetTopItem() const;
- /**
- Returns the rectangle taken by all items in the control. In other words, if the
- controls client size were equal to the size of this rectangle, no scrollbars
- would be needed and no free space would be left.
- Note that this function only works in the icon and small icon views, not in
- list or report views (this is a limitation of the native Win32 control).
- */
- wxRect GetViewRect() const;
- /**
- Set the alternative row background colour to a specific colour.
- It is recommended to call EnableAlternateRowColours() instead of using
- these methods as native implementations of this control might support
- alternating row colours but not setting the exact colour to be used for
- them.
- As EnableAlternateRowColours(), this method can only be used with
- controls having ::wxLC_REPORT and ::wxLC_VIRTUAL styles.
- @param colour
- A valid alternative row background colour to enable alternating
- rows or invalid colour to disable them and use the same colour for
- all rows.
- @since 2.9.5
- */
- void SetAlternateRowColour(const wxColour& colour);
- /**
- Determines which item (if any) is at the specified point, giving details
- in @a flags. Returns index of the item or @c wxNOT_FOUND if no item is at
- the specified point.
- @a flags will be a combination of the following flags:
- - wxLIST_HITTEST_ABOVE: Above the client area.
- - wxLIST_HITTEST_BELOW: Below the client area.
- - wxLIST_HITTEST_NOWHERE: In the client area but below the last item.
- - wxLIST_HITTEST_ONITEMICON: On the bitmap associated with an item.
- - wxLIST_HITTEST_ONITEMLABEL: On the label (string) associated with an item.
- - wxLIST_HITTEST_ONITEMRIGHT: In the area to the right of an item.
- - wxLIST_HITTEST_ONITEMSTATEICON: On the state icon for a tree view item
- that is in a user-defined state.
- - wxLIST_HITTEST_TOLEFT: To the right of the client area.
- - wxLIST_HITTEST_TORIGHT: To the left of the client area.
- - wxLIST_HITTEST_ONITEM: Combination of @c wxLIST_HITTEST_ONITEMICON,
- @c wxLIST_HITTEST_ONITEMLABEL, @c wxLIST_HITTEST_ONITEMSTATEICON.
- If @a ptrSubItem is not @NULL and the wxListCtrl is in the report
- mode the subitem (or column) number will also be provided.
- This feature is only available in version 2.7.0 or higher and is currently only
- implemented under wxMSW and requires at least comctl32.dll of version 4.70 on
- the host system or the value stored in @a ptrSubItem will be always -1.
- To compile this feature into wxWidgets library you need to have access to
- commctrl.h of version 4.70 that is provided by Microsoft.
- @beginWxPerlOnly
- In wxPerl this method only takes the @a point parameter
- and returns a 2-element list (item, flags).
- @endWxPerlOnly
- */
- long HitTest(const wxPoint& point, int& flags, long* ptrSubItem = NULL) const;
- /**
- Returns true if the control is currently using ::wxLC_REPORT style.
- */
- bool InReportView() const;
- /**
- For report view mode (only), inserts a column.
- For more details, see SetItem(). Also see InsertColumn(long, const
- wxString&, int, int) overload for a usually more convenient
- alternative to this method and the description of how the item width
- is interpreted by this method.
- */
- long InsertColumn(long col, const wxListItem& info);
- /**
- For report view mode (only), inserts a column.
- Insert a new column in the list control in report view mode at the
- given position specifying its most common attributes.
- Notice that to set the image for the column you need to use
- Insert(long, const wxListItem&) overload and specify ::wxLIST_MASK_IMAGE
- in the item mask.
- @param col
- The index where the column should be inserted. Valid indices are
- from 0 up to GetColumnCount() inclusive and the latter can be used
- to append the new column after the last existing one.
- @param heading
- The string specifying the column heading.
- @param format
- The flags specifying the control heading text alignment.
- @param width
- If positive, the width of the column in pixels. Otherwise it can be
- @c wxLIST_AUTOSIZE to choose the default size for the column or @c
- wxLIST_AUTOSIZE_USEHEADER to fit the column width to @a heading or
- to extend to fill all the remaining space for the last column.
- Notice that in case of @c wxLIST_AUTOSIZE fixed width is used as
- there are no items in this column to use for determining its best
- size yet. If you want to fit the column to its contents, use
- SetColumnWidth() after adding the items with values in this column.
- @return
- The index of the inserted column or -1 if adding it failed.
- */
- long InsertColumn(long col, const wxString& heading,
- int format = wxLIST_FORMAT_LEFT,
- int width = wxLIST_AUTOSIZE);
- /**
- Inserts an item, returning the index of the new item if successful, -1 otherwise.
- @param info
- wxListItem object
- */
- long InsertItem(wxListItem& info);
- /**
- Insert an string item.
- @param index
- Index of the new item, supplied by the application
- @param label
- String label
- @beginWxPerlOnly
- In wxPerl this method is implemented as InsertStringItem(index, label).
- @endWxPerlOnly
- */
- long InsertItem(long index, const wxString& label);
- /**
- Insert an image item.
- @param index
- Index of the new item, supplied by the application
- @param imageIndex
- Index into the image list associated with this control and view style
- @beginWxPerlOnly
- In wxPerl this method is implemented as InsertImageItem(index, imageIndex).
- @endWxPerlOnly
- */
- long InsertItem(long index, int imageIndex);
- /**
- Insert an image/string item.
- @param index
- Index of the new item, supplied by the application
- @param label
- String label
- @param imageIndex
- Index into the image list associated with this control and view style
- @beginWxPerlOnly
- In wxPerl this method is implemented as InsertImageStringItem(index, label, imageIndex).
- @endWxPerlOnly
- */
- long InsertItem(long index, const wxString& label,
- int imageIndex);
- /**
- Returns true if the control is currently in virtual report view.
- */
- bool IsVirtual() const;
- /**
- Redraws the given @e item.
- This is only useful for the virtual list controls as without calling this
- function the displayed value of the item doesn't change even when the
- underlying data does change.
- @see RefreshItems()
- */
- void RefreshItem(long item);
- /**
- Redraws the items between @a itemFrom and @e itemTo.
- The starting item must be less than or equal to the ending one.
- Just as RefreshItem() this is only useful for virtual list controls.
- */
- void RefreshItems(long itemFrom, long itemTo);
- /**
- Scrolls the list control. If in icon, small icon or report view mode,
- @a dx specifies the number of pixels to scroll. If in list view mode,
- @a dx specifies the number of columns to scroll. @a dy always specifies
- the number of pixels to scroll vertically.
- @note This method is currently only implemented in the Windows version.
- */
- bool ScrollList(int dx, int dy);
- /**
- Sets the background colour.
- Note that the wxWindow::GetBackgroundColour() function of wxWindow base
- class can be used to retrieve the current background colour.
- */
- virtual bool SetBackgroundColour(const wxColour& col);
- /**
- Sets information about this column.
- See SetItem() for more information.
- */
- bool SetColumn(int col, wxListItem& item);
- /**
- Sets the column width.
- @a width can be a width in pixels or @c wxLIST_AUTOSIZE (-1) or
- @c wxLIST_AUTOSIZE_USEHEADER (-2).
- @c wxLIST_AUTOSIZE will resize the column to the length of its longest item.
- @c wxLIST_AUTOSIZE_USEHEADER will resize the column to the length of the
- header (Win32) or 80 pixels (other platforms).
- In small or normal icon view, @a col must be -1, and the column width is set
- for all columns.
- */
- bool SetColumnWidth(int col, int width);
- /**
- Changes the order in which the columns are shown.
- By default, the columns of a list control appear on the screen in order
- of their indices, i.e. the column 0 appears first, the column 1 next
- and so on. However by using this function it is possible to arbitrarily
- reorder the columns visual order and the user can also rearrange the
- columns interactively by dragging them. In this case, the index of the
- column is not the same as its order and the functions GetColumnOrder()
- and GetColumnIndexFromOrder() should be used to translate between them.
- Notice that all the other functions still work with the column indices,
- i.e. the visual positioning of the columns on screen doesn't affect the
- code setting or getting their values for example.
- The @a orders array must have the same number elements as the number of
- columns and contain each position exactly once. Its n-th element
- contains the index of the column to be shown in n-th position, so for a
- control with three columns passing an array with elements 2, 0 and 1
- results in the third column being displayed first, the first one next
- and the second one last.
- Example of using it:
- @code
- wxListCtrl *list = new wxListCtrl(...);
- for ( int i = 0; i < 3; i++ )
- list->InsertColumn(i, wxString::Format("Column %d", i));
- wxArrayInt order(3);
- order[0] = 2;
- order[1] = 0;
- order[2] = 1;
- list->SetColumnsOrder(order);
- // now list->GetColumnsOrder() will return order and
- // list->GetColumnIndexFromOrder(n) will return order[n] and
- // list->GetColumnOrder() will return 1, 2 and 0 for the column 0,
- // 1 and 2 respectively
- @endcode
- Please notice that this function makes sense for report view only and
- currently is only implemented in wxMSW port. To avoid explicit tests
- for @c __WXMSW__ in your code, please use @c wxHAS_LISTCTRL_COLUMN_ORDER
- as this will allow it to start working under the other platforms when
- support for the column reordering is added there.
- @see GetColumnsOrder()
- */
- bool SetColumnsOrder(const wxArrayInt& orders);
- /**
- Sets the image list associated with the control.
- @a which is one of @c wxIMAGE_LIST_NORMAL, @c wxIMAGE_LIST_SMALL,
- @c wxIMAGE_LIST_STATE (the last is unimplemented).
- This method does not take ownership of the image list, you have to
- delete it yourself.
- @see AssignImageList()
- */
- void SetImageList(wxImageList* imageList, int which);
- /**
- Sets the data of an item.
- Using the wxListItem's mask and state mask, you can change only selected
- attributes of a wxListCtrl item.
- */
- bool SetItem(wxListItem& info);
- /**
- Sets an item string field at a particular column.
- */
- long SetItem(long index, int column, const wxString& label, int imageId = -1);
- /**
- Sets the background colour for this item.
- This function only works in report view mode.
- The colour can be retrieved using GetItemBackgroundColour().
- */
- void SetItemBackgroundColour(long item, const wxColour& col);
- /**
- Sets the image associated with the item.
- In report view, you can specify the column.
- The image is an index into the image list associated with the list control.
- */
- bool SetItemColumnImage(long item, long column, int image);
- /**
- This method can only be used with virtual list controls.
- It is used to indicate to the control the number of items it contains.
- After calling it, the main program should be ready to handle calls to
- various item callbacks (such as wxListCtrl::OnGetItemText) for all
- items in the range from 0 to @a count.
- Notice that the control is not necessarily redrawn after this call as
- it may be undesirable if an item which is not visible on the screen
- anyhow was added to or removed from a control displaying many items, if
- you do need to refresh the display you can just call Refresh() manually.
- */
- void SetItemCount(long count);
- /**
- Associates application-defined data with this item.
- Notice that this function cannot be used to associate pointers with the control
- items, use SetItemPtrData() instead.
- */
- bool SetItemData(long item, long data);
- /**
- Sets the item's font.
- */
- void SetItemFont(long item, const wxFont& font);
- /**
- Sets the unselected and selected images associated with the item.
- The images are indices into the image list associated with the list control.
- */
- bool SetItemImage(long item, int image, int selImage = -1);
- /**
- Sets the position of the item, in icon or small icon view. Windows only.
- */
- bool SetItemPosition(long item, const wxPoint& pos);
- /**
- Associates application-defined data with this item.
- The @a data parameter may be either an integer or a pointer cast to the
- @c wxUIntPtr type which is guaranteed to be large enough to be able to
- contain all integer types and pointers.
- @since 2.8.4
- */
- bool SetItemPtrData(long item, wxUIntPtr data);
- /**
- Sets the item state.
- The @a stateMask is a combination of @c wxLIST_STATE_XXX constants
- described in wxListItem documentation. For each of the bits specified
- in @a stateMask, the corresponding state is set or cleared depending on
- whether @a state argument contains the same bit or not.
- So to select an item you can use
- @code
- list->SetItemState(item, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
- @endcode
- while to deselect it you should use
- @code
- list->SetItemState(item, 0, wxLIST_STATE_SELECTED);
- @endcode
- Consider using wxListView if possible to avoid dealing with this
- error-prone and confusing method.
- */
- bool SetItemState(long item, long state, long stateMask);
- /**
- Sets the item text for this item.
- */
- void SetItemText(long item, const wxString& text);
- /**
- Sets the colour for this item.
- This function only works in report view.
- The colour can be retrieved using GetItemTextColour().
- */
- void SetItemTextColour(long item, const wxColour& col);
- /**
- Adds or removes a single window style.
- */
- void SetSingleStyle(long style, bool add = true);
- /**
- Sets the text colour of the list control.
- */
- void SetTextColour(const wxColour& col);
- /**
- Sets the whole window style, deleting all items.
- */
- void SetWindowStyleFlag(long style);
- /**
- Call this function to sort the items in the list control. Sorting is done
- using the specified @a fnSortCallBack function. This function must have the
- following prototype:
- @code
- int wxCALLBACK wxListCompareFunction(wxIntPtr item1, wxIntPtr item2, wxIntPtr sortData)
- @endcode
- It is called each time when the two items must be compared and should return 0
- if the items are equal, negative value if the first item is less than the
- second one and positive value if the first one is greater than the second one
- (the same convention as used by @c qsort(3)).
- The parameter @e item1 is the client data associated with the first item (NOT the index).
- The parameter @e item2 is the client data associated with the second item (NOT the index).
- The parameter @e data is the value passed to SortItems() itself.
- Notice that the control may only be sorted on client data associated with
- the items, so you must use SetItemData if you want to be able to sort the
- items in the control.
- Please see the @ref page_samples_listctrl for an example of using this function.
- @beginWxPerlOnly
- In wxPerl the comparison function must take just two parameters;
- however, you may use a closure to achieve an effect similar to the
- SortItems third parameter.
- @endWxPerlOnly
- */
- bool SortItems(wxListCtrlCompare fnSortCallBack, wxIntPtr data);
- protected:
- /**
- This function may be overridden in the derived class for a control with
- @c wxLC_VIRTUAL style. It should return the attribute for the specified
- @c item or @NULL to use the default appearance parameters.
- wxListCtrl will not delete the pointer or keep a reference of it.
- You can return the same wxListItemAttr pointer for every OnGetItemAttr() call.
- The base class version always returns @NULL.
- @see OnGetItemImage(), OnGetItemColumnImage(), OnGetItemText(),
- OnGetItemColumnAttr()
- */
- virtual wxListItemAttr* OnGetItemAttr(long item) const;
- /**
- This function may be overridden in the derived class for a control with
- @c wxLC_VIRTUAL style.
- It should return the attribute for the for the specified @a item and @a
- column or @NULL to use the default appearance parameters.
- The base class version returns @c OnGetItemAttr(item).
- @note Currently this function is only called under wxMSW, the other
- ports only support OnGetItemAttr()
- @see OnGetItemAttr(), OnGetItemText(),
- OnGetItemImage(), OnGetItemColumnImage(),
- */
- virtual wxListItemAttr* OnGetItemColumnAttr(long item, long column) const;
- /**
- Override this function in the derived class for a control with
- @c wxLC_VIRTUAL and @c wxLC_REPORT styles in order to specify the image
- index for the given line and column.
- The base class version always calls OnGetItemImage() for the first column, else
- it returns -1.
- @see OnGetItemText(), OnGetItemImage(), OnGetItemAttr(),
- OnGetItemColumnAttr()
- */
- virtual int OnGetItemColumnImage(long item, long column) const;
- /**
- This function must be overridden in the derived class for a control with
- @c wxLC_VIRTUAL style having an "image list" (see SetImageList(); if the
- control doesn't have an image list, it is not necessary to override it).
- It should return the index of the items image in the controls image list
- or -1 for no image.
- In a control with @c wxLC_REPORT style, OnGetItemImage() only gets called for
- the first column of each line.
- The base class version always returns -1.
- @see OnGetItemText(), OnGetItemColumnImage(), OnGetItemAttr()
- */
- virtual int OnGetItemImage(long item) const;
- /**
- This function @b must be overridden in the derived class for a control with
- @c wxLC_VIRTUAL style. It should return the string containing the text of
- the given @a column for the specified @c item.
- @see SetItemCount(), OnGetItemImage(), OnGetItemColumnImage(), OnGetItemAttr()
- */
- virtual wxString OnGetItemText(long item, long column) const;
- };
- /**
- @class wxListEvent
- A list event holds information about events associated with wxListCtrl objects.
- @beginEventTable{wxListEvent}
- @event{EVT_LIST_BEGIN_DRAG(id, func)}
- Begin dragging with the left mouse button.
- @event{EVT_LIST_BEGIN_RDRAG(id, func)}
- Begin dragging with the right mouse button.
- @event{EVT_LIST_BEGIN_LABEL_EDIT(id, func)}
- Begin editing a label. This can be prevented by calling Veto().
- @event{EVT_LIST_END_LABEL_EDIT(id, func)}
- Finish editing a label. This can be prevented by calling Veto().
- @event{EVT_LIST_DELETE_ITEM(id, func)}
- Delete an item.
- @event{EVT_LIST_DELETE_ALL_ITEMS(id, func)}
- Delete all items.
- @event{EVT_LIST_ITEM_SELECTED(id, func)}
- The item has been selected.
- @event{EVT_LIST_ITEM_DESELECTED(id, func)}
- The item has been deselected.
- @event{EVT_LIST_ITEM_ACTIVATED(id, func)}
- The item has been activated (ENTER or double click).
- @event{EVT_LIST_ITEM_FOCUSED(id, func)}
- The currently focused item has changed.
- @event{EVT_LIST_ITEM_MIDDLE_CLICK(id, func)}
- The middle mouse button has been clicked on an item.
- @event{EVT_LIST_ITEM_RIGHT_CLICK(id, func)}
- The right mouse button has been clicked on an item.
- @event{EVT_LIST_KEY_DOWN(id, func)}
- A key has been pressed. GetIndex() may be -1 if no item is selected.
- @event{EVT_LIST_INSERT_ITEM(id, func)}
- An item has been inserted.
- @event{EVT_LIST_COL_CLICK(id, func)}
- A column (m_col) has been left-clicked.
- @event{EVT_LIST_COL_RIGHT_CLICK(id, func)}
- A column (m_col) (which can be -1 if the click occurred outside any column)
- has been right-clicked.
- @event{EVT_LIST_COL_BEGIN_DRAG(id, func)}
- The user started resizing a column - can be vetoed.
- @event{EVT_LIST_COL_DRAGGING(id, func)}
- The divider between columns is being dragged.
- @event{EVT_LIST_COL_END_DRAG(id, func)}
- A column has been resized by the user.
- @event{EVT_LIST_CACHE_HINT(id, func)}
- Prepare cache for a virtual list control
- @endEventTable
- @library{wxcore}
- @category{events}
- @see wxListCtrl
- */
- class wxListEvent : public wxNotifyEvent
- {
- public:
- /**
- Constructor.
- */
- wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
- /**
- For @c EVT_LIST_CACHE_HINT event only: return the first item which the
- list control advises us to cache.
- */
- long GetCacheFrom() const;
- /**
- For @c EVT_LIST_CACHE_HINT event only: return the last item (inclusive)
- which the list control advises us to cache.
- */
- long GetCacheTo() const;
- /**
- The column position: it is only used with @c COL events.
- For the column dragging events, it is the column to the left of the divider
- being dragged, for the column click events it may be -1 if the user clicked
- in the list control header outside any column.
- */
- int GetColumn() const;
- /**
- The data.
- */
- wxUIntPtr GetData() const;
- /**
- The image.
- */
- int GetImage() const;
- /**
- The item index.
- */
- long GetIndex() const;
- /**
- An item object, used by some events. See also wxListCtrl::SetItem.
- */
- const wxListItem& GetItem() const;
- /**
- Key code if the event is a keypress event.
- */
- int GetKeyCode() const;
- /**
- The (new) item label for @c EVT_LIST_END_LABEL_EDIT event.
- */
- const wxString& GetLabel() const;
- /**
- The mask.
- */
- long GetMask() const;
- /**
- The position of the mouse pointer if the event is a drag event.
- */
- wxPoint GetPoint() const;
- /**
- The text.
- */
- const wxString& GetText() const;
- /**
- This method only makes sense for @c EVT_LIST_END_LABEL_EDIT message and
- returns @true if it the label editing has been cancelled by the user
- (GetLabel() returns an empty string in this case but it doesn't allow the
- application to distinguish between really cancelling the edit and the
- admittedly rare case when the user wants to rename it to an empty string).
- */
- bool IsEditCancelled() const;
- };
- wxEventType wxEVT_LIST_BEGIN_DRAG;
- wxEventType wxEVT_LIST_BEGIN_RDRAG;
- wxEventType wxEVT_LIST_BEGIN_LABEL_EDIT;
- wxEventType wxEVT_LIST_END_LABEL_EDIT;
- wxEventType wxEVT_LIST_DELETE_ITEM;
- wxEventType wxEVT_LIST_DELETE_ALL_ITEMS;
- wxEventType wxEVT_LIST_ITEM_SELECTED;
- wxEventType wxEVT_LIST_ITEM_DESELECTED;
- wxEventType wxEVT_LIST_KEY_DOWN;
- wxEventType wxEVT_LIST_INSERT_ITEM;
- wxEventType wxEVT_LIST_COL_CLICK;
- wxEventType wxEVT_LIST_ITEM_RIGHT_CLICK;
- wxEventType wxEVT_LIST_ITEM_MIDDLE_CLICK;
- wxEventType wxEVT_LIST_ITEM_ACTIVATED;
- wxEventType wxEVT_LIST_CACHE_HINT;
- wxEventType wxEVT_LIST_COL_RIGHT_CLICK;
- wxEventType wxEVT_LIST_COL_BEGIN_DRAG;
- wxEventType wxEVT_LIST_COL_DRAGGING;
- wxEventType wxEVT_LIST_COL_END_DRAG;
- wxEventType wxEVT_LIST_ITEM_FOCUSED;
- /**
- @class wxListItemAttr
- Represents the attributes (color, font, ...) of a wxListCtrl's wxListItem.
- @library{wxcore}
- @category{data}
- @see @ref overview_listctrl, wxListCtrl, wxListItem
- */
- class wxListItemAttr
- {
- public:
- /**
- Default Constructor.
- */
- wxListItemAttr();
- /**
- Construct a wxListItemAttr with the specified foreground and
- background colors and font.
- */
- wxListItemAttr(const wxColour& colText,
- const wxColour& colBack,
- const wxFont& font);
- /**
- Returns the currently set background color.
- */
- const wxColour& GetBackgroundColour() const;
- /**
- Returns the currently set font.
- */
- const wxFont& GetFont() const;
- /**
- Returns the currently set text color.
- */
- const wxColour& GetTextColour() const;
- /**
- Returns @true if the currently set background color is valid.
- */
- bool HasBackgroundColour() const;
- /**
- Returns @true if the currently set font is valid.
- */
- bool HasFont() const;
- /**
- Returns @true if the currently set text color is valid.
- */
- bool HasTextColour() const;
- /**
- Sets a new background color.
- */
- void SetBackgroundColour(const wxColour& colour);
- /**
- Sets a new font.
- */
- void SetFont(const wxFont& font);
- /**
- Sets a new text color.
- */
- void SetTextColour(const wxColour& colour);
- };
- /**
- @class wxListView
- This class currently simply presents a simpler to use interface for the
- wxListCtrl -- it can be thought of as a @e façade for that complicated class.
- Using it is preferable to using wxListCtrl directly whenever possible because
- in the future some ports might implement wxListView but not the full set of
- wxListCtrl features.
- Other than different interface, this class is identical to wxListCtrl.
- In particular, it uses the same events, same window styles and so on.
- @library{wxcore}
- @category{ctrl}
- @appearance{listctrl}
- @see wxListView::SetColumnImage
- */
- class wxListView : public wxListCtrl
- {
- public:
- /**
- Default constructor.
- */
- wxListView();
- /**
- Constructor, creating and showing a listview control.
- @param parent
- Parent window. Must not be @NULL.
- @param id
- Window identifier. The value wxID_ANY indicates a default value.
- @param pos
- Window position.
- If ::wxDefaultPosition is specified then a default position is chosen.
- @param size
- Window size.
- If ::wxDefaultSize is specified then the window is sized appropriately.
- @param style
- Window style. See wxListCtrl.
- @param validator
- Window validator.
- @param name
- Window name.
- @see Create(), wxValidator
- */
- wxListView(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxLC_ICON,
- const wxValidator& validator = wxDefaultValidator,
- const wxString& name = wxListCtrlNameStr);
- /**
- Destructor, destroying the listview control.
- */
- virtual ~wxListView();
- /**
- Resets the column image -- after calling this function, no image will be shown.
- @param col
- the column to clear image for
- @see SetColumnImage()
- */
- void ClearColumnImage(int col);
- /**
- Sets focus to the item with the given @a index.
- */
- void Focus(long index);
- /**
- Returns the first selected item in a (presumably) multiple selection control.
- Together with GetNextSelected() it can be used to iterate over all selected
- items in the control.
- @return The first selected item, if any, -1 otherwise.
- */
- long GetFirstSelected() const;
- /**
- Returns the currently focused item or -1 if none.
- @see IsSelected(), Focus()
- */
- long GetFocusedItem() const;
- /**
- Used together with GetFirstSelected() to iterate over all selected items
- in the control.
- @return Returns the next selected item or -1 if there are no more of them.
- */
- long GetNextSelected(long item) const;
- /**
- Returns @true if the item with the given @a index is selected,
- @false otherwise.
- @see GetFirstSelected(), GetNextSelected()
- */
- bool IsSelected(long index) const;
- /**
- Selects or unselects the given item.
- @param n
- the item to select or unselect
- @param on
- if @true (default), selects the item, otherwise unselects it
- @see wxListCtrl::SetItemState
- */
- void Select(long n, bool on = true);
- /**
- Sets the column image for the specified column.
- To use the column images, the control must have a valid image list with
- at least one image.
- @param col
- the column to set image for
- @param image
- the index of the column image in the controls image list
- */
- void SetColumnImage(int col, int image);
- };
- /**
- @class wxListItem
- This class stores information about a wxListCtrl item or column.
- wxListItem is a class which contains information about:
- - Zero based item position; see SetId() and GetId().
- - Zero based column index; see SetColumn() and GetColumn().
- - The label (or header for columns); see SetText() and GetText().
- - The zero based index into an image list; see GetImage() and SetImage().
- - Application defined data; see SetData() and GetData().
- - For columns only: the width of the column; see SetWidth() and GetWidth().
- - For columns only: the format of the column; one of @c wxLIST_FORMAT_LEFT,
- @c wxLIST_FORMAT_RIGHT, @c wxLIST_FORMAT_CENTRE. See SetAlign() and GetAlign().
- - The state of the item; see SetState() and GetState().
- This is a bitlist of the following flags:
- - @c wxLIST_STATE_FOCUSED: The item has the focus.
- - @c wxLIST_STATE_SELECTED: The item is selected.
- - @c wxLIST_STATE_DONTCARE: Don't care what the state is. Win32 only.
- - @c wxLIST_STATE_DROPHILITED: The item is highlighted to receive a drop event. Win32 only.
- - @c wxLIST_STATE_CUT: The item is in the cut state. Win32 only.
- - A mask indicating which state flags are valid; this is a bitlist of the
- flags reported above for the item state. See SetStateMask() and GetStateMask().
- - A mask indicating which fields of this class are valid; see SetMask() and GetMask().
- This is a bitlist of the following flags:
- - @c wxLIST_MASK_STATE: The state field is valid.
- - @c wxLIST_MASK_TEXT: The label field is valid.
- - @c wxLIST_MASK_IMAGE: The image field is valid.
- - @c wxLIST_MASK_DATA: The application-defined data field is valid.
- - @c wxLIST_MASK_WIDTH: The column width field is valid.
- - @c wxLIST_MASK_FORMAT: The column format field is valid.
- The wxListItem object can also contain item-specific colour and font
- information: for this you need to call one of SetTextColour(), SetBackgroundColour()
- or SetFont() functions on it passing it the colour/font to use.
- If the colour/font is not specified, the default list control colour/font is used.
- @library{wxcore}
- @category{data}
- @see wxListCtrl
- */
- class wxListItem : public wxObject
- {
- public:
- /**
- Constructor.
- */
- wxListItem();
- /**
- Resets the item state to the default.
- */
- void Clear();
- /**
- Returns the alignment for this item.
- Can be one of @c wxLIST_FORMAT_LEFT, @c wxLIST_FORMAT_RIGHT or @c wxLIST_FORMAT_CENTRE.
- */
- wxListColumnFormat GetAlign() const;
- /**
- Returns the background colour for this item.
- */
- wxColour GetBackgroundColour() const;
- /**
- Returns the zero-based column; meaningful only in report mode.
- */
- int GetColumn() const;
- /**
- Returns client data associated with the control.
- Please note that client data is associated with the item and not with subitems.
- */
- wxUIntPtr GetData() const;
- /**
- Returns the font used to display the item.
- */
- wxFont GetFont() const;
- /**
- Returns the zero-based item position.
- */
- long GetId() const;
- /**
- Returns the zero-based index of the image associated with the item into
- the image list.
- */
- int GetImage() const;
- /**
- Returns a bit mask indicating which fields of the structure are valid.
- Can be any combination of the following values:
- - wxLIST_MASK_STATE: @b GetState is valid.
- - wxLIST_MASK_TEXT: @b GetText is valid.
- - wxLIST_MASK_IMAGE: @b GetImage is valid.
- - wxLIST_MASK_DATA: @b GetData is valid.
- - wxLIST_MASK_WIDTH: @b GetWidth is valid.
- - wxLIST_MASK_FORMAT: @b GetFormat is valid.
- */
- long GetMask() const;
- /**
- Returns a bit field representing the state of the item.
- Can be any combination of:
- - wxLIST_STATE_DONTCARE: Don't care what the state is. Win32 only.
- - wxLIST_STATE_DROPHILITED: The item is highlighted to receive a drop event. Win32 only.
- - wxLIST_STATE_FOCUSED: The item has the focus.
- - wxLIST_STATE_SELECTED: The item is selected.
- - wxLIST_STATE_CUT: The item is in the cut state. Win32 only.
- */
- long GetState() const;
- /**
- Returns the label/header text.
- */
- const wxString& GetText() const;
- /**
- Returns the text colour.
- */
- wxColour GetTextColour() const;
- /**
- Meaningful only for column headers in report mode. Returns the column width.
- */
- int GetWidth() const;
- /**
- Sets the alignment for the item. See also GetAlign()
- */
- void SetAlign(wxListColumnFormat align);
- /**
- Sets the background colour for the item.
- */
- void SetBackgroundColour(const wxColour& colBack);
- /**
- Sets the zero-based column. Meaningful only in report mode.
- */
- void SetColumn(int col);
- //@{
- /**
- Sets client data for the item.
- Please note that client data is associated with the item and not with subitems.
- */
- void SetData(long data);
- void SetData(void* data);
- //@}
- /**
- Sets the font for the item.
- */
- void SetFont(const wxFont& font);
- /**
- Sets the zero-based item position.
- */
- void SetId(long id);
- /**
- Sets the zero-based index of the image associated with the item
- into the image list.
- */
- void SetImage(int image);
- /**
- Sets the mask of valid fields. See GetMask().
- */
- void SetMask(long mask);
- /**
- Sets the item state flags (note that the valid state flags are influenced
- by the value of the state mask, see wxListItem::SetStateMask).
- See GetState() for valid flag values.
- */
- void SetState(long state);
- /**
- Sets the bitmask that is used to determine which of the state flags
- are to be set. See also SetState().
- */
- void SetStateMask(long stateMask);
- /**
- Sets the text label for the item.
- */
- void SetText(const wxString& text);
- /**
- Sets the text colour for the item.
- */
- void SetTextColour(const wxColour& colText);
- /**
- Meaningful only for column headers in report mode. Sets the column width.
- */
- void SetWidth(int width);
- };
|