| 1 | /////////////////////////////////////////////////////////////////////////////// |
| 2 | // Name: wx/generic/infobar.h |
| 3 | // Purpose: generic wxInfoBar class declaration |
| 4 | // Author: Vadim Zeitlin |
| 5 | // Created: 2009-07-28 |
| 6 | // RCS-ID: $Id$ |
| 7 | // Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org> |
| 8 | // Licence: wxWindows licence |
| 9 | /////////////////////////////////////////////////////////////////////////////// |
| 10 | |
| 11 | #ifndef _WX_GENERIC_INFOBAR_H_ |
| 12 | #define _WX_GENERIC_INFOBAR_H_ |
| 13 | |
| 14 | class WXDLLIMPEXP_FWD_CORE wxBitmapButton; |
| 15 | class WXDLLIMPEXP_FWD_CORE wxStaticBitmap; |
| 16 | class WXDLLIMPEXP_FWD_CORE wxStaticText; |
| 17 | |
| 18 | // ---------------------------------------------------------------------------- |
| 19 | // wxInfoBar |
| 20 | // ---------------------------------------------------------------------------- |
| 21 | |
| 22 | class WXDLLIMPEXP_CORE wxInfoBarGeneric : public wxInfoBarBase |
| 23 | { |
| 24 | public: |
| 25 | // the usual ctors and Create() but remember that info bar is created |
| 26 | // hidden |
| 27 | wxInfoBarGeneric() { Init(); } |
| 28 | |
| 29 | wxInfoBarGeneric(wxWindow *parent, wxWindowID winid = wxID_ANY) |
| 30 | { |
| 31 | Init(); |
| 32 | Create(parent, winid); |
| 33 | } |
| 34 | |
| 35 | bool Create(wxWindow *parent, wxWindowID winid = wxID_ANY); |
| 36 | |
| 37 | |
| 38 | // implement base class methods |
| 39 | // ---------------------------- |
| 40 | |
| 41 | virtual void ShowMessage(const wxString& msg, |
| 42 | int flags = wxICON_INFORMATION); |
| 43 | |
| 44 | virtual void Dismiss(); |
| 45 | |
| 46 | virtual void AddButton(wxWindowID btnid, const wxString& label = wxString()); |
| 47 | |
| 48 | virtual void RemoveButton(wxWindowID btnid); |
| 49 | |
| 50 | // methods specific to this version |
| 51 | // -------------------------------- |
| 52 | |
| 53 | // set the effect(s) to use when showing/hiding the bar, may be |
| 54 | // wxSHOW_EFFECT_NONE to disable any effects entirely |
| 55 | // |
| 56 | // by default, slide to bottom/top is used when it's positioned on the top |
| 57 | // of the window for showing/hiding it and top/bottom when it's positioned |
| 58 | // at the bottom |
| 59 | void SetShowHideEffects(wxShowEffect showEffect, wxShowEffect hideEffect) |
| 60 | { |
| 61 | m_showEffect = showEffect; |
| 62 | m_hideEffect = hideEffect; |
| 63 | } |
| 64 | |
| 65 | // get effect used when showing/hiding the window |
| 66 | wxShowEffect GetShowEffect() const; |
| 67 | wxShowEffect GetHideEffect() const; |
| 68 | |
| 69 | // set the duration of animation used when showing/hiding the bar, in ms |
| 70 | void SetEffectDuration(int duration) { m_effectDuration = duration; } |
| 71 | |
| 72 | // get the currently used effect animation duration |
| 73 | int GetEffectDuration() const { return m_effectDuration; } |
| 74 | |
| 75 | |
| 76 | // overridden base class methods |
| 77 | // ----------------------------- |
| 78 | |
| 79 | // setting the font of this window sets it for the text control inside it |
| 80 | // (default font is a larger and bold version of the normal one) |
| 81 | virtual bool SetFont(const wxFont& font); |
| 82 | |
| 83 | protected: |
| 84 | // info bar shouldn't have any border by default, the colour difference |
| 85 | // between it and the main window separates it well enough |
| 86 | virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; } |
| 87 | |
| 88 | |
| 89 | // update the parent to take our new or changed size into account (notably |
| 90 | // should be called when we're shown or hidden) |
| 91 | void UpdateParent(); |
| 92 | |
| 93 | private: |
| 94 | // common part of all ctors |
| 95 | void Init(); |
| 96 | |
| 97 | // handler for the close button |
| 98 | void OnButton(wxCommandEvent& event); |
| 99 | |
| 100 | // show/hide the bar |
| 101 | void DoShow(); |
| 102 | void DoHide(); |
| 103 | |
| 104 | // determine the placement of the bar from its position in the containing |
| 105 | // sizer |
| 106 | enum BarPlacement |
| 107 | { |
| 108 | BarPlacement_Top, |
| 109 | BarPlacement_Bottom, |
| 110 | BarPlacement_Unknown |
| 111 | }; |
| 112 | |
| 113 | BarPlacement GetBarPlacement() const; |
| 114 | |
| 115 | |
| 116 | // different controls making up the bar |
| 117 | wxStaticBitmap *m_icon; |
| 118 | wxStaticText *m_text; |
| 119 | wxBitmapButton *m_button; |
| 120 | |
| 121 | // the effects to use when showing/hiding and duration for them: by default |
| 122 | // the effect is determined by the info bar automatically depending on its |
| 123 | // position and the default duration is used |
| 124 | wxShowEffect m_showEffect, |
| 125 | m_hideEffect; |
| 126 | int m_effectDuration; |
| 127 | |
| 128 | DECLARE_EVENT_TABLE() |
| 129 | wxDECLARE_NO_COPY_CLASS(wxInfoBarGeneric); |
| 130 | }; |
| 131 | |
| 132 | #endif // _WX_GENERIC_INFOBAR_H_ |
| 133 | |