]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/statusbr.h
Added another hyphen in "wxObject-derived" for consistency.
[wxWidgets.git] / interface / wx / statusbr.h
index bc3d8fa4513c7bd8123d88045ebf8b234aadbd87..7fef6ce07944e29c057b5a1f828cb0ef21229f3e 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 
 /**
-    @class wxStatusBar
+    @class wxStatusBarPane
+    
+    A status bar pane data container used by wxStatusBar.
 
-    A status bar is a narrow window that can be placed along the bottom of a frame
-    to give
-    small amounts of status information. It can contain one or more fields, one or
-    more of which can
-    be variable length according to the size of the window.
+    @library{wxcore}
+    @category{data}
 
-    wxWindow
+    @see wxStatusBar
+*/
+class wxStatusBarPane
+{
+public:
+    /**
+        Constructs the pane with the given @a style and @a width.
+    */
+    wxStatusBarPane(int style = wxSB_NORMAL, size_t width = 0);
 
-    wxEvtHandler
+    /**
+        Returns the pane width; it maybe negative, indicating a variable-width field.
+    */
+    int GetWidth() const;
 
-    wxObject
+    /**
+        Returns the pane style.
+    */
+    int GetStyle() const;
+    
+    /**
+        Returns the stack of strings pushed on this pane.
+        
+        Note that this stack does include also the string currently displayed in this pane
+        as the version stored in the native status bar control is possibly ellipsized.
+        
+        Also note that GetStack().Last() is the top of the stack (i.e. the string shown 
+        in the status bar).
+    */
+    const wxArrayString& GetStack() const;
+};
+
+/**
+    @class wxStatusBar
+
+    A status bar is a narrow window that can be placed along the bottom of a frame
+    to give small amounts of status information. It can contain one or more fields,
+    one or more of which can be variable length according to the size of the window.
+    
+    wxStatusBar also maintains an independent stack of status texts for each field
+    (see PushStatusText() and PopStatusText()).
+
+    Note that in wxStatusBar context, the terms @e pane and @e field are synonyms.
 
     @beginStyleTable
-    @style{wxST_SIZEGRIP}
-           On Windows 95, displays a gripper at right-hand side of the status
-           bar.
+    @style{wxSTB_SIZEGRIP}
+        Displays a gripper at the right-hand side of the status bar which can be used
+        to resize the parent window.
+    @style{wxSTB_SHOW_TIPS}
+        Displays tooltips for those panes whose status text has been ellipsized/truncated
+        because the status text doesn't fit the pane width.
+        Note that this style has effect only on wxGTK (with GTK+ >= 2.12) currently.
+    @style{wxSTB_ELLIPSIZE_START}
+        Replace the beginning of the status texts with an ellipsis when the status text
+        widths exceed the status bar pane's widths (uses wxControl::Ellipsize).
+    @style{wxSTB_ELLIPSIZE_MIDDLE}
+        Replace the middle of the status texts with an ellipsis when the status text
+        widths exceed the status bar pane's widths (uses wxControl::Ellipsize).
+    @style{wxSTB_ELLIPSIZE_END}
+        Replace the end of the status texts with an ellipsis when the status text
+        widths exceed the status bar pane's widths (uses wxControl::Ellipsize).
+    @style{wxSTB_DEFAULT_STYLE}
+        The default style: includes 
+        @c wxSTB_SIZEGRIP|wxSTB_SHOW_TIPS|wxSTB_ELLIPSIZE_END|wxFULL_REPAINT_ON_RESIZE. 
     @endStyleTable
 
+    @remarks
+    It is possible to create controls and other windows on the status bar.
+    Position these windows from an OnSize() event handler.
+
     @library{wxcore}
     @category{miscwnd}
 
-    @see wxFrame, @ref overview_samplestatbar "Status bar sample"
+    @see wxStatusBarPane, wxFrame, @ref page_samples_statbar
 */
 class wxStatusBar : public wxWindow
 {
 public:
-    //@{
+    /**
+        Default ctor.
+    */
+    wxStatusBar();
+
     /**
         Constructor, creating the window.
 
         @param parent
             The window parent, usually a frame.
         @param id
-            The window identifier. It may take a value of -1 to indicate a default
-        value.
+            The window identifier.
+            It may take a value of -1 to indicate a default value.
         @param style
             The window style. See wxStatusBar.
         @param name
             The name of the window. This parameter is used to associate a name with the
-        item,
-            allowing the application user to set Motif resource values for
+            item, allowing the application user to set Motif resource values for
             individual windows.
 
         @see Create()
     */
-    wxStatusBar();
     wxStatusBar(wxWindow* parent, wxWindowID id = wxID_ANY,
-                long style = wxST_SIZEGRIP,
-                const wxString& name = "statusBar");
-    //@}
+                long style = wxSTB_DEFAULT_STYLE,
+                const wxString& name = wxStatusBarNameStr);
 
     /**
         Destructor.
     */
-    ~wxStatusBar();
+    virtual ~wxStatusBar();
 
     /**
         Creates the window, for two-step construction.
         See wxStatusBar() for details.
     */
     bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
-                long style = wxST_SIZEGRIP,
-                const wxString& name = "statusBar");
+                long style = wxSTB_DEFAULT_STYLE,
+                const wxString& name = wxStatusBarNameStr);
 
     /**
         Returns the size and position of a field's internal bounding rectangle.
@@ -86,12 +144,26 @@ public:
         @see wxRect
     */
     virtual bool GetFieldRect(int i, wxRect& rect) const;
-
+    
     /**
-        Returns the number of fields in the status bar.
+        Returns the number of fields in the status bar. 
     */
     int GetFieldsCount() const;
-
+    
+    /**
+        Returns the wxStatusBarPane representing the @a n-th field.
+    */
+    const wxStatusBarPane& GetField(int n) const;
+    
+    /**
+        Returns the horizontal and vertical borders used when rendering the field
+        text inside the field area.
+        
+        Note that the rect returned by GetFieldRect() already accounts for the
+        presence of horizontal and vertical border returned by this function.
+    */
+    wxSize GetBorders() const;
+    
     /**
         Returns the string associated with a status bar field.
 
@@ -99,12 +171,34 @@ public:
             The number of the status field to retrieve, starting from zero.
 
         @return The status field string if the field is valid, otherwise the
-                 empty string.
+                empty string.
 
         @see SetStatusText()
     */
     virtual wxString GetStatusText(int i = 0) const;
 
+    /**
+        Returns the stack of strings pushed (see PushStatusText()) on the
+        @a n-th field.
+        
+        See wxStatusBarPane::GetStack() for more info.
+    */
+    const wxArrayString& GetStatusStack(int n) const;
+
+    /**
+        Returns the width of the @a n-th field.
+        
+        See wxStatusBarPane::GetWidth() for more info.
+    */
+    int GetStatusWidth(int n) const;
+
+    /**
+        Returns the style of the @a n-th field.
+        
+        See wxStatusBarPane::GetStyle() for more info.
+    */
+    int GetStatusStyle(int n) const;
+        
     /**
         Sets the field text to the top of the stack, and pops the stack of saved
         strings.
@@ -114,8 +208,10 @@ public:
     void PopStatusText(int field = 0);
 
     /**
-        Saves the current field text in a per field stack, and sets the field text
+        Saves the current field text in a per-field stack, and sets the field text
         to the string passed as argument.
+
+        @see PopStatusText()
     */
     void PushStatusText(const wxString& string, int field = 0);
 
@@ -123,72 +219,44 @@ public:
         Sets the number of fields, and optionally the field widths.
 
         @param number
-            The number of fields.
+            The number of fields. If this is greater than the previous number,
+            then new fields with empty strings will be added to the status bar.
         @param widths
             An array of n integers interpreted in the same way as
-            in SetStatusWidths
+            in SetStatusWidths().
     */
-    virtual void SetFieldsCount(int number = 1, int* widths = NULL);
+    virtual void SetFieldsCount(int number = 1, const int* widths = NULL);
 
     /**
-        Sets the minimal possible height for the status bar. The real height may be
-        bigger than the height specified here depending on the size of the font used by
-        the status bar.
+        Sets the minimal possible height for the status bar.
+
+        The real height may be bigger than the height specified here depending
+        on the size of the font used by the status bar.
     */
-    void SetMinHeight(int height);
+    virtual void SetMinHeight(int height);
 
     /**
         Sets the styles of the fields in the status line which can make fields appear
-        flat
-        or raised instead of the standard sunken 3D border.
+        flat or raised instead of the standard sunken 3D border.
 
         @param n
             The number of fields in the status bar. Must be equal to the
-            number passed to SetFieldsCount the last
-            time it was called.
+            number passed to SetFieldsCount() the last time it was called.
         @param styles
-            Contains an array of n integers with the styles for each field. There
-            are three possible styles:
-
-
-
-
-
-
-
-            wxSB_NORMAL
-
-
-
-
-            (default) The field appears sunken with a standard 3D border.
-
-
-
-
-
-            wxSB_FLAT
-
-
-
-
-            No border is painted around the field so that it appears flat.
-
-
-
-
-
-            wxSB_RAISED
-
-
-
-
-            A raised 3D border is painted around the field.
+            Contains an array of @a n integers with the styles for each field. 
+            There are three possible styles:
+            - @c wxSB_NORMAL (default): The field appears sunken with a standard 3D border.
+            - @c wxSB_FLAT: No border is painted around the field so that it appears flat.
+            - @c wxSB_RAISED: A raised 3D border is painted around the field.
     */
-    virtual void SetStatusStyles(int n, int* styles);
+    virtual void SetStatusStyles(int n, const int* styles);
 
     /**
-        Sets the text for one field.
+        Sets the status text for the @a i-th field.
+        
+        The given text will replace the current text. Note that unlike PushStatusText()
+        this function won't save the current text (and calling PopStatusText() won't
+        restore it!).
 
         @param text
             The text to be set. Use an empty string ("") to clear the field.
@@ -201,32 +269,32 @@ public:
 
     /**
         Sets the widths of the fields in the status line. There are two types of
-        fields: fixed widths one and variable width fields. For the fixed width fields
+        fields: @b fixed widths and @b variable width fields. For the fixed width fields
         you should specify their (constant) width in pixels. For the variable width
         fields, specify a negative number which indicates how the field should expand:
         the space left for all variable width fields is divided between them according
         to the absolute value of this number. A variable width field with width of -2
         gets twice as much of it as a field with width -1 and so on.
+
         For example, to create one fixed width field of width 100 in the right part of
         the status bar and two more fields which get 66% and 33% of the remaining
         space correspondingly, you should use an array containing -2, -1 and 100.
 
         @param n
             The number of fields in the status bar. Must be equal to the
-            number passed to SetFieldsCount the last
-            time it was called.
-        @param widths
-            Contains an array of n integers, each of which is
-            either an absolute status field width in pixels if positive or indicates a
+            number passed to SetFieldsCount() the last time it was called.
+        @param widths_field
+            Contains an array of n integers, each of which is either an
+            absolute status field width in pixels if positive or indicates a
             variable width field if negative.
+            The special value @NULL means that all fields should get the same width.
 
         @remarks The widths of the variable fields are calculated from the total
                  width of all fields, minus the sum of widths of the
-                 non-variable fields, divided by the number of variable
-                 fields.
+                 non-variable fields, divided by the number of variable fields.
 
-        @see SetFieldsCount(), wxFrame::SetStatusWidths
+        @see SetFieldsCount(), wxFrame::SetStatusWidths()
     */
-    virtual void SetStatusWidths(int n, int* widths);
+    virtual void SetStatusWidths(int n, const int* widths_field);
 };