]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/headerctrl.h
clarify wxFlexSizerGrowMode description
[wxWidgets.git] / interface / wx / headerctrl.h
index d7fbc1af95eb7ce9a9b9ddeec203aee83f1a146a..ce8dd8b2ca2283d81bac047a28eef657d87acf69 100644 (file)
             with the specified index (this can only happen for the columns for
             which wxHeaderColumn::IsResizeable() returns true). The event can
             be vetoed to prevent the column from being resized. If it isn't,
-            the resizing and end resize events will be generated later.
+            the resizing and end resize (or dragging cancelled) events will be
+            generated later.
         @event{EVT_HEADER_RESIZING(id, func)}
             The user is dragging the column with the specified index resizing
             it and its current width is wxHeaderCtrlEvent::GetWidth(). The
             event can be vetoed to stop the dragging operation completely at
             any time.
         @event{EVT_HEADER_END_RESIZE(id, func)}
-            Either the user stopped dragging the column by releasing the mouse
-            or the resizing was cancelled. If wxHeaderCtrlEvent::IsCancelled()
-            returns @true, nothing should be done, otherwise the column should
-            normally be resized to the value of wxHeaderCtrlEvent::GetWidth().
+            The user stopped dragging the column by releasing the mouse. The
+            column should normally be resized to the value of
+            wxHeaderCtrlEvent::GetWidth().
+
+        @event{EVT_HEADER_BEGIN_REORDER(id, func)}
+            The user started to drag the column with the specified index (this
+            can only happen for the controls with wxHD_DRAGDROP style). This
+            event can be vetoed to prevent the column from being reordered,
+            otherwise the end reorder message will be generated later.
+        @event{EVT_HEADER_END_REORDER(id, func)}
+            The user dropped the column in its new location. The event can be
+            vetoed to prevent the column from being placed at the new position
+            or handled to update the display of the data in the associated
+            control to match the new column location (available from
+            wxHeaderCtrlEvent::GetNewOrder()).
+
+        @event{EVT_HEADER_DRAGGING_CANCELLED(id, func)}
+            The resizing or reordering operation currently in progress was
+            cancelled. This can happen if the user pressed Esc key while
+            dragging the mouse or the mouse capture was lost for some other
+            reason. You only need to handle this event if your application
+            entered into some modal mode when resizing or reordering began, in
+            which case it should handle this event in addition to the matching
+            end resizing or reordering ones.
     @endEventTable
 
     @library{wxcore}
@@ -183,6 +204,74 @@ public:
      */
     bool IsEmpty() const;
 
+    /**
+        Update the column with the given index.
+
+        When the value returned by GetColumn() changes, this method must be
+        called to notify the control about the change and update the visual
+        display to match the new column data.
+
+        @param idx
+            The column index, must be less than GetColumnCount().
+     */
+    void UpdateColumn(unsigned int idx);
+
+    /**
+        Change the columns display order.
+
+        The display order defines the order in which the columns appear on the
+        screen and does @em not affect the interpretation of indices by all the
+        other class methods.
+
+        The @a order array specifies the column indices corresponding to the
+        display positions.
+
+        @param order
+            A permutation of all column indices, i.e. an array of size
+            GetColumnsOrder() containing all column indices exactly once. The
+            n-th element of this array defines the index of the column shown at
+            the n-th position from left (for the default left-to-right writing
+            direction).
+
+        @see wxListCtrl::SetColumnsOrder()
+     */
+    void SetColumnsOrder(const wxArrayInt& order);
+
+    /**
+        Return the array describing the columns display order.
+
+        For the controls without wxHD_DRAGDROP style the returned array will be
+        the same as was passed to SetColumnsOrder() previously or define the
+        default order (with n-th element being n) if it hadn't been called. But
+        for the controls with wxHD_DRAGDROP style, the columns can be also
+        reordered by user.
+     */
+    wxArrayInt GetColumnsOrder() const;
+
+    /**
+        Return the index of the column displayed at the given position.
+
+        @param pos
+            The display position, e.g. 0 for the left-most column, 1 for the
+            next one and so on until GetColumnCount() - 1.
+
+        @see GetColumnPos()
+     */
+    unsigned int GetColumnAt(unsigned int pos) const;
+
+    /**
+        Get the position at which this column is currently displayed.
+
+        Notice that a valid position is returned even for the hidden columns
+        currently.
+
+        @param idx
+            The column index, must be less than GetColumnCount().
+
+        @see GetColumnAt()
+     */
+    unsigned int GetColumnPos(unsigned int idx) const;
+
 protected:
     /**
         Method to be implemented by the derived classes to return the
@@ -419,9 +508,12 @@ public:
     int GetWidth() const;
 
     /**
-        Return @true if the drag operation was cancelled.
+        Return the new order of the column.
 
-        This method can only be called for the end drag event.
+        This method can only be called for end reorder event for which it
+        indicates the tentative new position for the column GetColumn()
+        selected by the user. If the event is not vetoed, this will become the
+        new column position in wxHeaderCtrl::GetColumnsOrder().
      */
-    bool IsCancelled() const;
+    unsigned int GetNewOrder() const;
 };