/////////////////////////////////////////////////////////////////////////////// // Name: wx/generic/infobar.h // Purpose: generic wxInfoBar class declaration // Author: Vadim Zeitlin // Created: 2009-07-28 // Copyright: (c) 2009 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_GENERIC_INFOBAR_H_ #define _WX_GENERIC_INFOBAR_H_ class WXDLLIMPEXP_FWD_CORE wxBitmapButton; class WXDLLIMPEXP_FWD_CORE wxStaticBitmap; class WXDLLIMPEXP_FWD_CORE wxStaticText; // ---------------------------------------------------------------------------- // wxInfoBar // ---------------------------------------------------------------------------- class WXDLLIMPEXP_CORE wxInfoBarGeneric : public wxInfoBarBase { public: // the usual ctors and Create() but remember that info bar is created // hidden wxInfoBarGeneric() { Init(); } wxInfoBarGeneric(wxWindow *parent, wxWindowID winid = wxID_ANY) { Init(); Create(parent, winid); } bool Create(wxWindow *parent, wxWindowID winid = wxID_ANY); // implement base class methods // ---------------------------- virtual void ShowMessage(const wxString& msg, int flags = wxICON_INFORMATION) wxOVERRIDE; virtual void Dismiss() wxOVERRIDE; virtual void AddButton(wxWindowID btnid, const wxString& label = wxString()) wxOVERRIDE; virtual void RemoveButton(wxWindowID btnid) wxOVERRIDE; virtual size_t GetButtonCount() const wxOVERRIDE; virtual wxWindowID GetButtonId(size_t idx) const wxOVERRIDE; virtual bool HasButtonId(wxWindowID btnid) const wxOVERRIDE; // methods specific to this version // -------------------------------- // set the effect(s) to use when showing/hiding the bar, may be // wxSHOW_EFFECT_NONE to disable any effects entirely // // by default, slide to bottom/top is used when it's positioned on the top // of the window for showing/hiding it and top/bottom when it's positioned // at the bottom void SetShowHideEffects(wxShowEffect showEffect, wxShowEffect hideEffect) { m_showEffect = showEffect; m_hideEffect = hideEffect; } // get effect used when showing/hiding the window wxShowEffect GetShowEffect() const; wxShowEffect GetHideEffect() const; // set the duration of animation used when showing/hiding the bar, in ms void SetEffectDuration(int duration) { m_effectDuration = duration; } // get the currently used effect animation duration int GetEffectDuration() const { return m_effectDuration; } // overridden base class methods // ----------------------------- // setting the font of this window sets it for the text control inside it // (default font is a larger and bold version of the normal one) virtual bool SetFont(const wxFont& font) wxOVERRIDE; // same thing with the colour: this affects the text colour virtual bool SetForegroundColour(const wxColor& colour) wxOVERRIDE; protected: // info bar shouldn't have any border by default, the colour difference // between it and the main window separates it well enough virtual wxBorder GetDefaultBorder() const wxOVERRIDE { return wxBORDER_NONE; } // update the parent to take our new or changed size into account (notably // should be called when we're shown or hidden) void UpdateParent(); private: // common part of all ctors void Init(); // handler for the close button void OnButton(wxCommandEvent& event); // show/hide the bar void DoShow(); void DoHide(); // determine the placement of the bar from its position in the containing // sizer enum BarPlacement { BarPlacement_Top, BarPlacement_Bottom, BarPlacement_Unknown }; BarPlacement GetBarPlacement() const; // different controls making up the bar wxStaticBitmap *m_icon; wxStaticText *m_text; wxBitmapButton *m_button; // the effects to use when showing/hiding and duration for them: by default // the effect is determined by the info bar automatically depending on its // position and the default duration is used wxShowEffect m_showEffect, m_hideEffect; int m_effectDuration; wxDECLARE_EVENT_TABLE(); wxDECLARE_NO_COPY_CLASS(wxInfoBarGeneric); }; #endif // _WX_GENERIC_INFOBAR_H_