]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/tbarbase.h
destroy m_impl even if an exception is thrown from the main loop
[wxWidgets.git] / include / wx / tbarbase.h
index f3c9b161fe9b5f0b40a84af984de8c77a00daa20..50cc2bc2173d6b6b51e83d822f0c612ae7ca4f0f 100644 (file)
@@ -32,7 +32,7 @@ class WXDLLEXPORT wxImage;
 // constants
 // ----------------------------------------------------------------------------
 
-extern WXDLLEXPORT_DATA(const wxChar*) wxToolBarNameStr;
+extern WXDLLEXPORT_DATA(const wxChar) wxToolBarNameStr[];
 extern WXDLLEXPORT_DATA(const wxSize) wxDefaultSize;
 extern WXDLLEXPORT_DATA(const wxPoint) wxDefaultPosition;
 
@@ -91,7 +91,10 @@ public:
                                            : wxTOOL_STYLE_BUTTON;
     }
 
-    wxToolBarToolBase(wxToolBarBase *tbar, wxControl *control)
+    wxToolBarToolBase(wxToolBarBase *tbar,
+                      wxControl *control,
+                      const wxString& label)
+        : m_label(label)
     {
         m_tbar = tbar;
         m_control = control;
@@ -105,7 +108,7 @@ public:
         m_toolStyle = wxTOOL_STYLE_CONTROL;
     }
 
-    ~wxToolBarToolBase(){}
+    virtual ~wxToolBarToolBase(){}
 
     // accessors
     // ---------
@@ -194,15 +197,6 @@ public:
     virtual void Detach() { m_tbar = (wxToolBarBase *)NULL; }
     virtual void Attach(wxToolBarBase *tbar) { m_tbar = tbar; }
 
-    // compatibility only, don't use
-#if WXWIN_COMPATIBILITY_2_2
-    wxDEPRECATED( const wxBitmap& GetBitmap1() const );
-    wxDEPRECATED( const wxBitmap& GetBitmap2() const );
-
-    wxDEPRECATED( void SetBitmap1(const wxBitmap& bmp) );
-    wxDEPRECATED( void SetBitmap2(const wxBitmap& bmp) );
-#endif // WXWIN_COMPATIBILITY_2_2
-
 protected:
     wxToolBarBase *m_tbar;  // the toolbar to which we belong (may be NULL)
 
@@ -325,13 +319,17 @@ public:
     virtual wxToolBarToolBase *AddTool (wxToolBarToolBase *tool);
     virtual wxToolBarToolBase *InsertTool (size_t pos, wxToolBarToolBase *tool);
 
-    // add an arbitrary control to the toolbar (notice that
-    // the control will be deleted by the toolbar and that it will also adjust
-    // its position/size)
+    // add an arbitrary control to the toolbar (notice that the control will be
+    // deleted by the toolbar and that it will also adjust its position/size)
     //
+    // the label is optional and, if specified, will be shown near the control
     // NB: the control should have toolbar as its parent
-    virtual wxToolBarToolBase *AddControl(wxControl *control);
-    virtual wxToolBarToolBase *InsertControl(size_t pos, wxControl *control);
+    virtual wxToolBarToolBase *
+    AddControl(wxControl *control, const wxString& label = wxEmptyString);
+
+    virtual wxToolBarToolBase *
+    InsertControl(size_t pos, wxControl *control,
+                  const wxString& label = wxEmptyString);
 
     // get the control with the given id or return NULL
     virtual wxControl *FindControl( int toolid );
@@ -381,6 +379,12 @@ public:
     virtual void SetToolLongHelp(int toolid, const wxString& helpString);
     virtual wxString GetToolLongHelp(int toolid) const;
 
+    virtual void SetToolNormalBitmap(int WXUNUSED(id),
+                                     const wxBitmap& WXUNUSED(bitmap)) {}
+    virtual void SetToolDisabledBitmap(int WXUNUSED(id),
+                                       const wxBitmap& WXUNUSED(bitmap)) {}
+
+    
     // margins/packing/separation
     // --------------------------
 
@@ -429,7 +433,7 @@ public:
     wxToolBarToolBase *FindById(int toolid) const;
 
     // return true if this is a vertical toolbar, otherwise false
-    bool IsVertical() const { return HasFlag(wxTB_VERTICAL); }
+    bool IsVertical() const { return HasFlag(wxTB_LEFT | wxTB_RIGHT); }
 
 
     // the old versions of the various methods kept for compatibility
@@ -568,11 +572,19 @@ protected:
                                           const wxString& shortHelp,
                                           const wxString& longHelp) = 0;
 
-    virtual wxToolBarToolBase *CreateTool(wxControl *control) = 0;
+    virtual wxToolBarToolBase *CreateTool(wxControl *control,
+                                          const wxString& label) = 0;
 
     // helper functions
     // ----------------
 
+    // call this from derived class ctor/Create() to ensure that we have either
+    // wxTB_HORIZONTAL or wxTB_VERTICAL style, there is a lot of existing code
+    // which randomly checks either one or the other of them and gets confused
+    // if neither is set (and making one of them 0 is not an option neither as
+    // then the existing tests would break down)
+    void FixupStyle();
+
     // un-toggle all buttons in the same radio group
     void UnToggleRadioGroup(wxToolBarToolBase *tool);
 
@@ -599,8 +611,14 @@ private:
     DECLARE_NO_COPY_CLASS(wxToolBarBase)
 };
 
-// Helper function for creating the image for disabled buttons
-bool wxCreateGreyedImage(const wxImage& in, wxImage& out) ;
+// deprecated function for creating the image for disabled buttons, use
+// wxImage::ConvertToGreyscale() instead
+#if WXWIN_COMPATIBILITY_2_8
+
+wxDEPRECATED( bool wxCreateGreyedImage(const wxImage& in, wxImage& out) );
+
+#endif // WXWIN_COMPATIBILITY_2_8
+
 
 #endif // wxUSE_TOOLBAR