]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/listctrl.h
Interface fixes for Phoenix
[wxWidgets.git] / interface / wx / listctrl.h
index 90af91932b49a7795c8e1e025efb2d2777d3a83c..0e746bde7a369db539803a1464c98036f18e5b4b 100644 (file)
@@ -6,6 +6,123 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // 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
 
 /**
     @class wxListCtrl
 
@@ -197,6 +314,19 @@ public:
     */
     virtual ~wxListCtrl();
 
     */
     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,
+                      int 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:
     /**
         Arranges the items in icon or small icon view.
         This only has effect on Win32. @a flag is one of:
@@ -643,16 +773,53 @@ public:
     long HitTest(const wxPoint& point, int& flags, long* ptrSubItem = NULL) const;
 
     /**
     long HitTest(const wxPoint& point, int& flags, long* ptrSubItem = NULL) const;
 
     /**
-        For report view mode (only), inserts a column. For more details, see SetItem().
+        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, wxListItem& info);
+    long InsertColumn(long col, const wxListItem& info);
 
     /**
 
     /**
-        For report view mode (only), inserts a column. For more details, see SetItem().
+        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,
     */
     long InsertColumn(long col, const wxString& heading,
                       int format = wxLIST_FORMAT_LEFT,
-                      int width = -1);
+                      int width = wxLIST_AUTOSIZE);
 
     /**
         Inserts an item, returning the index of the new item if successful, -1 otherwise.
 
     /**
         Inserts an item, returning the index of the new item if successful, -1 otherwise.
@@ -707,6 +874,11 @@ public:
     long InsertItem(long index, const wxString& label,
                     int imageIndex);
 
     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.
 
     /**
         Redraws the given @e item.
 
@@ -813,7 +985,7 @@ public:
 
         @see GetColumnsOrder()
     */
 
         @see GetColumnsOrder()
     */
-    bool SetColumnsOrder(const wxArrayInt& orders) const;
+    bool SetColumnsOrder(const wxArrayInt& orders);
 
     /**
         Sets the image list associated with the control.
 
     /**
         Sets the image list associated with the control.
@@ -889,15 +1061,6 @@ public:
     */
     bool SetItemImage(long item, int image, int selImage = -1);
 
     */
     bool SetItemImage(long item, int image, int selImage = -1);
 
-    /**
-        Sets the unselected and selected images associated with the item.
-        The images are indices into the image list associated with the list control.
-
-        @deprecated
-        This form is deprecated: @a selImage is not used; use the other
-        SetItemImage() overload.
-    */
-    bool SetItemImage(long item, int image, int selImage = -1);
 
     /**
         Sets the position of the item, in icon or small icon view. Windows only.
 
     /**
         Sets the position of the item, in icon or small icon view. Windows only.
@@ -916,8 +1079,24 @@ public:
     bool SetItemPtrData(long item, wxUIntPtr data);
 
     /**
     bool SetItemPtrData(long item, wxUIntPtr data);
 
     /**
-        Sets the item state. For a list of state flags, see SetItem().
-        The @b stateMask indicates which state flags are valid.
+        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);
 
     */
     bool SetItemState(long item, long state, long stateMask);
 
@@ -1194,6 +1373,27 @@ public:
 };
 
 
 };
 
 
+wxEventType wxEVT_COMMAND_LIST_BEGIN_DRAG;
+wxEventType wxEVT_COMMAND_LIST_BEGIN_RDRAG;
+wxEventType wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT;
+wxEventType wxEVT_COMMAND_LIST_END_LABEL_EDIT;
+wxEventType wxEVT_COMMAND_LIST_DELETE_ITEM;
+wxEventType wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS;
+wxEventType wxEVT_COMMAND_LIST_ITEM_SELECTED;
+wxEventType wxEVT_COMMAND_LIST_ITEM_DESELECTED;
+wxEventType wxEVT_COMMAND_LIST_KEY_DOWN;
+wxEventType wxEVT_COMMAND_LIST_INSERT_ITEM;
+wxEventType wxEVT_COMMAND_LIST_COL_CLICK;
+wxEventType wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK;
+wxEventType wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK;
+wxEventType wxEVT_COMMAND_LIST_ITEM_ACTIVATED;
+wxEventType wxEVT_COMMAND_LIST_CACHE_HINT;
+wxEventType wxEVT_COMMAND_LIST_COL_RIGHT_CLICK;
+wxEventType wxEVT_COMMAND_LIST_COL_BEGIN_DRAG;
+wxEventType wxEVT_COMMAND_LIST_COL_DRAGGING;
+wxEventType wxEVT_COMMAND_LIST_COL_END_DRAG;
+wxEventType wxEVT_COMMAND_LIST_ITEM_FOCUSED;
+
 
 /**
     @class wxListItemAttr
 
 /**
     @class wxListItemAttr
@@ -1364,16 +1564,6 @@ public:
 };
 
 
 };
 
 
-/**
-    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
-};
 
 /**
     @class wxListItem
 
 /**
     @class wxListItem