e211a451fe
The layout of the toolbar depends on the size of its bitmaps, which changes when the DPI does, so call Realize() again when this happens. This fixes the layout of the toolbars in the aui sample when moving it between screens using different DPI.
773 lines
25 KiB
C++
773 lines
25 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/aui/toolbar.h
|
|
// Purpose: wxaui: wx advanced user interface - docking window manager
|
|
// Author: Benjamin I. Williams
|
|
// Modified by:
|
|
// Created: 2008-08-04
|
|
// Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved.
|
|
// Licence: wxWindows Library Licence, Version 3.1
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_AUIBAR_H_
|
|
#define _WX_AUIBAR_H_
|
|
|
|
#include "wx/defs.h"
|
|
|
|
#if wxUSE_AUI
|
|
|
|
#include "wx/bmpbndl.h"
|
|
#include "wx/control.h"
|
|
#include "wx/sizer.h"
|
|
#include "wx/pen.h"
|
|
|
|
class WXDLLIMPEXP_FWD_CORE wxClientDC;
|
|
class WXDLLIMPEXP_FWD_AUI wxAuiPaneInfo;
|
|
|
|
enum wxAuiToolBarStyle
|
|
{
|
|
wxAUI_TB_TEXT = 1 << 0,
|
|
wxAUI_TB_NO_TOOLTIPS = 1 << 1,
|
|
wxAUI_TB_NO_AUTORESIZE = 1 << 2,
|
|
wxAUI_TB_GRIPPER = 1 << 3,
|
|
wxAUI_TB_OVERFLOW = 1 << 4,
|
|
// using this style forces the toolbar to be vertical and
|
|
// be only dockable to the left or right sides of the window
|
|
// whereas by default it can be horizontal or vertical and
|
|
// be docked anywhere
|
|
wxAUI_TB_VERTICAL = 1 << 5,
|
|
wxAUI_TB_HORZ_LAYOUT = 1 << 6,
|
|
// analogous to wxAUI_TB_VERTICAL, but forces the toolbar
|
|
// to be horizontal
|
|
wxAUI_TB_HORIZONTAL = 1 << 7,
|
|
wxAUI_TB_PLAIN_BACKGROUND = 1 << 8,
|
|
wxAUI_TB_HORZ_TEXT = (wxAUI_TB_HORZ_LAYOUT | wxAUI_TB_TEXT),
|
|
wxAUI_ORIENTATION_MASK = (wxAUI_TB_VERTICAL | wxAUI_TB_HORIZONTAL),
|
|
wxAUI_TB_DEFAULT_STYLE = 0
|
|
};
|
|
|
|
enum wxAuiToolBarArtSetting
|
|
{
|
|
wxAUI_TBART_SEPARATOR_SIZE = 0,
|
|
wxAUI_TBART_GRIPPER_SIZE = 1,
|
|
wxAUI_TBART_OVERFLOW_SIZE = 2,
|
|
wxAUI_TBART_DROPDOWN_SIZE = 3
|
|
};
|
|
|
|
enum wxAuiToolBarToolTextOrientation
|
|
{
|
|
wxAUI_TBTOOL_TEXT_LEFT = 0, // unused/unimplemented
|
|
wxAUI_TBTOOL_TEXT_RIGHT = 1,
|
|
wxAUI_TBTOOL_TEXT_TOP = 2, // unused/unimplemented
|
|
wxAUI_TBTOOL_TEXT_BOTTOM = 3
|
|
};
|
|
|
|
|
|
// aui toolbar event class
|
|
|
|
class WXDLLIMPEXP_AUI wxAuiToolBarEvent : public wxNotifyEvent
|
|
{
|
|
public:
|
|
wxAuiToolBarEvent(wxEventType commandType = wxEVT_NULL,
|
|
int winId = 0)
|
|
: wxNotifyEvent(commandType, winId)
|
|
, m_clickPt(-1, -1)
|
|
, m_rect(-1, -1, 0, 0)
|
|
{
|
|
m_isDropdownClicked = false;
|
|
m_toolId = -1;
|
|
}
|
|
wxEvent *Clone() const wxOVERRIDE { return new wxAuiToolBarEvent(*this); }
|
|
|
|
bool IsDropDownClicked() const { return m_isDropdownClicked; }
|
|
void SetDropDownClicked(bool c) { m_isDropdownClicked = c; }
|
|
|
|
wxPoint GetClickPoint() const { return m_clickPt; }
|
|
void SetClickPoint(const wxPoint& p) { m_clickPt = p; }
|
|
|
|
wxRect GetItemRect() const { return m_rect; }
|
|
void SetItemRect(const wxRect& r) { m_rect = r; }
|
|
|
|
int GetToolId() const { return m_toolId; }
|
|
void SetToolId(int toolId) { m_toolId = toolId; }
|
|
|
|
private:
|
|
|
|
bool m_isDropdownClicked;
|
|
wxPoint m_clickPt;
|
|
wxRect m_rect;
|
|
int m_toolId;
|
|
|
|
private:
|
|
wxDECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxAuiToolBarEvent);
|
|
};
|
|
|
|
|
|
class WXDLLIMPEXP_AUI wxAuiToolBarItem
|
|
{
|
|
friend class wxAuiToolBar;
|
|
|
|
public:
|
|
|
|
wxAuiToolBarItem()
|
|
{
|
|
m_window = NULL;
|
|
m_sizerItem = NULL;
|
|
m_spacerPixels = 0;
|
|
m_toolId = 0;
|
|
m_kind = wxITEM_NORMAL;
|
|
m_state = 0; // normal, enabled
|
|
m_proportion = 0;
|
|
m_active = true;
|
|
m_dropDown = true;
|
|
m_sticky = true;
|
|
m_userData = 0;
|
|
m_alignment = wxALIGN_CENTER;
|
|
}
|
|
|
|
void Assign(const wxAuiToolBarItem& c)
|
|
{
|
|
m_window = c.m_window;
|
|
m_label = c.m_label;
|
|
m_bitmap = c.m_bitmap;
|
|
m_disabledBitmap = c.m_disabledBitmap;
|
|
m_hoverBitmap = c.m_hoverBitmap;
|
|
m_shortHelp = c.m_shortHelp;
|
|
m_longHelp = c.m_longHelp;
|
|
m_sizerItem = c.m_sizerItem;
|
|
m_minSize = c.m_minSize;
|
|
m_spacerPixels = c.m_spacerPixels;
|
|
m_toolId = c.m_toolId;
|
|
m_kind = c.m_kind;
|
|
m_state = c.m_state;
|
|
m_proportion = c.m_proportion;
|
|
m_active = c.m_active;
|
|
m_dropDown = c.m_dropDown;
|
|
m_sticky = c.m_sticky;
|
|
m_userData = c.m_userData;
|
|
m_alignment = c.m_alignment;
|
|
}
|
|
|
|
|
|
void SetWindow(wxWindow* w) { m_window = w; }
|
|
wxWindow* GetWindow() { return m_window; }
|
|
|
|
void SetId(int newId) { m_toolId = newId; }
|
|
int GetId() const { return m_toolId; }
|
|
|
|
void SetKind(int newKind) { m_kind = newKind; }
|
|
int GetKind() const { return m_kind; }
|
|
|
|
void SetState(int newState) { m_state = newState; }
|
|
int GetState() const { return m_state; }
|
|
|
|
void SetSizerItem(wxSizerItem* s) { m_sizerItem = s; }
|
|
wxSizerItem* GetSizerItem() const { return m_sizerItem; }
|
|
|
|
void SetLabel(const wxString& s) { m_label = s; }
|
|
const wxString& GetLabel() const { return m_label; }
|
|
|
|
void SetBitmap(const wxBitmapBundle& bmp) { m_bitmap = bmp; }
|
|
const wxBitmapBundle& GetBitmapBundle() const { return m_bitmap; }
|
|
wxBitmap GetBitmapFor(wxWindow* wnd) const { return m_bitmap.GetBitmapFor(wnd); }
|
|
wxBitmap GetBitmap() const { return GetBitmapFor(m_window); }
|
|
|
|
void SetDisabledBitmap(const wxBitmapBundle& bmp) { m_disabledBitmap = bmp; }
|
|
const wxBitmapBundle& GetDisabledBitmapBundle() const { return m_disabledBitmap; }
|
|
wxBitmap GetDisabledBitmapFor(wxWindow* wnd) const { return m_disabledBitmap.GetBitmapFor(wnd); }
|
|
wxBitmap GetDisabledBitmap() const { return GetBitmapFor(m_window); }
|
|
|
|
// Return the bitmap for the current state, normal or disabled.
|
|
wxBitmap GetCurrentBitmapFor(wxWindow* wnd) const;
|
|
|
|
void SetHoverBitmap(const wxBitmapBundle& bmp) { m_hoverBitmap = bmp; }
|
|
const wxBitmapBundle& GetHoverBitmapBundle() const { return m_hoverBitmap; }
|
|
wxBitmap GetHoverBitmap() const { return m_hoverBitmap.GetBitmapFor(m_window); }
|
|
|
|
void SetShortHelp(const wxString& s) { m_shortHelp = s; }
|
|
const wxString& GetShortHelp() const { return m_shortHelp; }
|
|
|
|
void SetLongHelp(const wxString& s) { m_longHelp = s; }
|
|
const wxString& GetLongHelp() const { return m_longHelp; }
|
|
|
|
void SetMinSize(const wxSize& s) { m_minSize = s; }
|
|
const wxSize& GetMinSize() const { return m_minSize; }
|
|
|
|
void SetSpacerPixels(int s) { m_spacerPixels = s; }
|
|
int GetSpacerPixels() const { return m_spacerPixels; }
|
|
|
|
void SetProportion(int p) { m_proportion = p; }
|
|
int GetProportion() const { return m_proportion; }
|
|
|
|
void SetActive(bool b) { m_active = b; }
|
|
bool IsActive() const { return m_active; }
|
|
|
|
void SetHasDropDown(bool b)
|
|
{
|
|
wxCHECK_RET( !b || m_kind == wxITEM_NORMAL,
|
|
wxS("Only normal tools can have drop downs") );
|
|
|
|
m_dropDown = b;
|
|
}
|
|
|
|
bool HasDropDown() const { return m_dropDown; }
|
|
|
|
void SetSticky(bool b) { m_sticky = b; }
|
|
bool IsSticky() const { return m_sticky; }
|
|
|
|
void SetUserData(long l) { m_userData = l; }
|
|
long GetUserData() const { return m_userData; }
|
|
|
|
void SetAlignment(int l) { m_alignment = l; }
|
|
int GetAlignment() const { return m_alignment; }
|
|
|
|
bool CanBeToggled() const
|
|
{
|
|
return m_kind == wxITEM_CHECK || m_kind == wxITEM_RADIO;
|
|
}
|
|
|
|
private:
|
|
|
|
wxWindow* m_window; // item's associated window
|
|
wxString m_label; // label displayed on the item
|
|
wxBitmapBundle m_bitmap; // item's bitmap
|
|
wxBitmapBundle m_disabledBitmap; // item's disabled bitmap
|
|
wxBitmapBundle m_hoverBitmap; // item's hover bitmap
|
|
wxString m_shortHelp; // short help (for tooltip)
|
|
wxString m_longHelp; // long help (for status bar)
|
|
wxSizerItem* m_sizerItem; // sizer item
|
|
wxSize m_minSize; // item's minimum size
|
|
int m_spacerPixels; // size of a spacer
|
|
int m_toolId; // item's id
|
|
int m_kind; // item's kind
|
|
int m_state; // state
|
|
int m_proportion; // proportion
|
|
bool m_active; // true if the item is currently active
|
|
bool m_dropDown; // true if the item has a dropdown button
|
|
bool m_sticky; // overrides button states if true (always active)
|
|
long m_userData; // user-specified data
|
|
int m_alignment; // sizer alignment flag, defaults to wxCENTER, may be wxEXPAND or any other
|
|
};
|
|
|
|
#ifndef SWIG
|
|
WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiToolBarItem, wxAuiToolBarItemArray, WXDLLIMPEXP_AUI);
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// tab art class
|
|
|
|
class WXDLLIMPEXP_AUI wxAuiToolBarArt
|
|
{
|
|
public:
|
|
|
|
wxAuiToolBarArt() { }
|
|
virtual ~wxAuiToolBarArt() { }
|
|
|
|
virtual wxAuiToolBarArt* Clone() = 0;
|
|
virtual void SetFlags(unsigned int flags) = 0;
|
|
virtual unsigned int GetFlags() = 0;
|
|
virtual void SetFont(const wxFont& font) = 0;
|
|
virtual wxFont GetFont() = 0;
|
|
virtual void SetTextOrientation(int orientation) = 0;
|
|
virtual int GetTextOrientation() = 0;
|
|
|
|
virtual void DrawBackground(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect) = 0;
|
|
|
|
virtual void DrawPlainBackground(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect) = 0;
|
|
|
|
virtual void DrawLabel(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item,
|
|
const wxRect& rect) = 0;
|
|
|
|
virtual void DrawButton(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item,
|
|
const wxRect& rect) = 0;
|
|
|
|
virtual void DrawDropDownButton(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item,
|
|
const wxRect& rect) = 0;
|
|
|
|
virtual void DrawControlLabel(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item,
|
|
const wxRect& rect) = 0;
|
|
|
|
virtual void DrawSeparator(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect) = 0;
|
|
|
|
virtual void DrawGripper(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect) = 0;
|
|
|
|
virtual void DrawOverflowButton(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect,
|
|
int state) = 0;
|
|
|
|
virtual wxSize GetLabelSize(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item) = 0;
|
|
|
|
virtual wxSize GetToolSize(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item) = 0;
|
|
|
|
// Note that these functions work with the size in DIPs, not physical
|
|
// pixels.
|
|
virtual int GetElementSize(int elementId) = 0;
|
|
virtual void SetElementSize(int elementId, int size) = 0;
|
|
|
|
virtual int ShowDropDown(
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItemArray& items) = 0;
|
|
|
|
// Provide opportunity for subclasses to recalculate colours
|
|
virtual void UpdateColoursFromSystem() {}
|
|
|
|
};
|
|
|
|
|
|
|
|
class WXDLLIMPEXP_AUI wxAuiGenericToolBarArt : public wxAuiToolBarArt
|
|
{
|
|
|
|
public:
|
|
|
|
wxAuiGenericToolBarArt();
|
|
virtual ~wxAuiGenericToolBarArt();
|
|
|
|
virtual wxAuiToolBarArt* Clone() wxOVERRIDE;
|
|
virtual void SetFlags(unsigned int flags) wxOVERRIDE;
|
|
virtual unsigned int GetFlags() wxOVERRIDE;
|
|
virtual void SetFont(const wxFont& font) wxOVERRIDE;
|
|
virtual wxFont GetFont() wxOVERRIDE;
|
|
virtual void SetTextOrientation(int orientation) wxOVERRIDE;
|
|
virtual int GetTextOrientation() wxOVERRIDE;
|
|
|
|
virtual void DrawBackground(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect) wxOVERRIDE;
|
|
|
|
virtual void DrawPlainBackground(wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect) wxOVERRIDE;
|
|
|
|
virtual void DrawLabel(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item,
|
|
const wxRect& rect) wxOVERRIDE;
|
|
|
|
virtual void DrawButton(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item,
|
|
const wxRect& rect) wxOVERRIDE;
|
|
|
|
virtual void DrawDropDownButton(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item,
|
|
const wxRect& rect) wxOVERRIDE;
|
|
|
|
virtual void DrawControlLabel(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item,
|
|
const wxRect& rect) wxOVERRIDE;
|
|
|
|
virtual void DrawSeparator(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect) wxOVERRIDE;
|
|
|
|
virtual void DrawGripper(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect) wxOVERRIDE;
|
|
|
|
virtual void DrawOverflowButton(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxRect& rect,
|
|
int state) wxOVERRIDE;
|
|
|
|
virtual wxSize GetLabelSize(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item) wxOVERRIDE;
|
|
|
|
virtual wxSize GetToolSize(
|
|
wxDC& dc,
|
|
wxWindow* wnd,
|
|
const wxAuiToolBarItem& item) wxOVERRIDE;
|
|
|
|
virtual int GetElementSize(int element) wxOVERRIDE;
|
|
virtual void SetElementSize(int elementId, int size) wxOVERRIDE;
|
|
|
|
virtual int ShowDropDown(wxWindow* wnd,
|
|
const wxAuiToolBarItemArray& items) wxOVERRIDE;
|
|
|
|
virtual void UpdateColoursFromSystem() wxOVERRIDE;
|
|
|
|
protected:
|
|
|
|
wxBitmapBundle m_buttonDropDownBmp;
|
|
wxBitmapBundle m_disabledButtonDropDownBmp;
|
|
wxBitmapBundle m_overflowBmp;
|
|
wxBitmapBundle m_disabledOverflowBmp;
|
|
wxColour m_baseColour;
|
|
wxColour m_highlightColour;
|
|
wxFont m_font;
|
|
unsigned int m_flags;
|
|
int m_textOrientation;
|
|
|
|
wxPen m_gripperPen1;
|
|
wxPen m_gripperPen2;
|
|
wxPen m_gripperPen3;
|
|
|
|
// These values are in DIPs and not physical pixels.
|
|
int m_separatorSize;
|
|
int m_gripperSize;
|
|
int m_overflowSize;
|
|
int m_dropdownSize;
|
|
};
|
|
|
|
|
|
|
|
|
|
class WXDLLIMPEXP_AUI wxAuiToolBar : public wxControl
|
|
{
|
|
public:
|
|
wxAuiToolBar() { Init(); }
|
|
|
|
wxAuiToolBar(wxWindow* parent,
|
|
wxWindowID id = wxID_ANY,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = wxAUI_TB_DEFAULT_STYLE)
|
|
{
|
|
Init();
|
|
Create(parent, id, pos, size, style);
|
|
}
|
|
|
|
virtual ~wxAuiToolBar();
|
|
|
|
bool Create(wxWindow* parent,
|
|
wxWindowID id = wxID_ANY,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = wxAUI_TB_DEFAULT_STYLE);
|
|
|
|
virtual void SetWindowStyleFlag(long style) wxOVERRIDE;
|
|
|
|
void SetArtProvider(wxAuiToolBarArt* art);
|
|
wxAuiToolBarArt* GetArtProvider() const;
|
|
|
|
bool SetFont(const wxFont& font) wxOVERRIDE;
|
|
|
|
|
|
wxAuiToolBarItem* AddTool(int toolId,
|
|
const wxString& label,
|
|
const wxBitmapBundle& bitmap,
|
|
const wxString& shortHelpString = wxEmptyString,
|
|
wxItemKind kind = wxITEM_NORMAL);
|
|
|
|
wxAuiToolBarItem* AddTool(int toolId,
|
|
const wxString& label,
|
|
const wxBitmapBundle& bitmap,
|
|
const wxBitmapBundle& disabledBitmap,
|
|
wxItemKind kind,
|
|
const wxString& shortHelpString,
|
|
const wxString& longHelpString,
|
|
wxObject* clientData);
|
|
|
|
wxAuiToolBarItem* AddTool(int toolId,
|
|
const wxBitmapBundle& bitmap,
|
|
const wxBitmapBundle& disabledBitmap,
|
|
bool toggle = false,
|
|
wxObject* clientData = NULL,
|
|
const wxString& shortHelpString = wxEmptyString,
|
|
const wxString& longHelpString = wxEmptyString)
|
|
{
|
|
return AddTool(toolId,
|
|
wxEmptyString,
|
|
bitmap,
|
|
disabledBitmap,
|
|
toggle ? wxITEM_CHECK : wxITEM_NORMAL,
|
|
shortHelpString,
|
|
longHelpString,
|
|
clientData);
|
|
}
|
|
|
|
wxAuiToolBarItem* AddLabel(int toolId,
|
|
const wxString& label = wxEmptyString,
|
|
const int width = -1);
|
|
wxAuiToolBarItem* AddControl(wxControl* control,
|
|
const wxString& label = wxEmptyString);
|
|
wxAuiToolBarItem* AddSeparator();
|
|
wxAuiToolBarItem* AddSpacer(int pixels);
|
|
wxAuiToolBarItem* AddStretchSpacer(int proportion = 1);
|
|
|
|
bool Realize();
|
|
|
|
wxControl* FindControl(int windowId);
|
|
wxAuiToolBarItem* FindToolByPosition(wxCoord x, wxCoord y) const;
|
|
wxAuiToolBarItem* FindToolByIndex(int idx) const;
|
|
wxAuiToolBarItem* FindTool(int toolId) const;
|
|
|
|
void ClearTools() { Clear() ; }
|
|
void Clear();
|
|
|
|
bool DestroyTool(int toolId);
|
|
bool DestroyToolByIndex(int idx);
|
|
|
|
// Note that these methods do _not_ delete the associated control, if any.
|
|
// Use DestroyTool() or DestroyToolByIndex() if this is wanted.
|
|
bool DeleteTool(int toolId);
|
|
bool DeleteByIndex(int toolId);
|
|
|
|
size_t GetToolCount() const;
|
|
int GetToolPos(int toolId) const { return GetToolIndex(toolId); }
|
|
int GetToolIndex(int toolId) const;
|
|
bool GetToolFits(int toolId) const;
|
|
wxRect GetToolRect(int toolId) const;
|
|
bool GetToolFitsByIndex(int toolId) const;
|
|
bool GetToolBarFits() const;
|
|
|
|
void SetMargins(const wxSize& size) { SetMargins(size.x, size.x, size.y, size.y); }
|
|
void SetMargins(int x, int y) { SetMargins(x, x, y, y); }
|
|
void SetMargins(int left, int right, int top, int bottom);
|
|
|
|
void SetToolBitmapSize(const wxSize& size);
|
|
wxSize GetToolBitmapSize() const;
|
|
|
|
bool GetOverflowVisible() const;
|
|
void SetOverflowVisible(bool visible);
|
|
|
|
bool GetGripperVisible() const;
|
|
void SetGripperVisible(bool visible);
|
|
|
|
void ToggleTool(int toolId, bool state);
|
|
bool GetToolToggled(int toolId) const;
|
|
|
|
void EnableTool(int toolId, bool state);
|
|
bool GetToolEnabled(int toolId) const;
|
|
|
|
void SetToolDropDown(int toolId, bool dropdown);
|
|
bool GetToolDropDown(int toolId) const;
|
|
|
|
void SetToolBorderPadding(int padding);
|
|
int GetToolBorderPadding() const;
|
|
|
|
void SetToolTextOrientation(int orientation);
|
|
int GetToolTextOrientation() const;
|
|
|
|
void SetToolPacking(int packing);
|
|
int GetToolPacking() const;
|
|
|
|
void SetToolProportion(int toolId, int proportion);
|
|
int GetToolProportion(int toolId) const;
|
|
|
|
void SetToolSeparation(int separation);
|
|
int GetToolSeparation() const;
|
|
|
|
void SetToolSticky(int toolId, bool sticky);
|
|
bool GetToolSticky(int toolId) const;
|
|
|
|
wxString GetToolLabel(int toolId) const;
|
|
void SetToolLabel(int toolId, const wxString& label);
|
|
|
|
wxBitmap GetToolBitmap(int toolId) const;
|
|
void SetToolBitmap(int toolId, const wxBitmapBundle& bitmap);
|
|
|
|
wxString GetToolShortHelp(int toolId) const;
|
|
void SetToolShortHelp(int toolId, const wxString& helpString);
|
|
|
|
wxString GetToolLongHelp(int toolId) const;
|
|
void SetToolLongHelp(int toolId, const wxString& helpString);
|
|
|
|
void SetCustomOverflowItems(const wxAuiToolBarItemArray& prepend,
|
|
const wxAuiToolBarItemArray& append);
|
|
|
|
// get size of hint rectangle for a particular dock location
|
|
wxSize GetHintSize(int dockDirection) const;
|
|
bool IsPaneValid(const wxAuiPaneInfo& pane) const;
|
|
|
|
// Override to call DoIdleUpdate().
|
|
virtual void UpdateWindowUI(long flags = wxUPDATE_UI_NONE) wxOVERRIDE;
|
|
|
|
protected:
|
|
void Init();
|
|
|
|
virtual void OnCustomRender(wxDC& WXUNUSED(dc),
|
|
const wxAuiToolBarItem& WXUNUSED(item),
|
|
const wxRect& WXUNUSED(rect)) { }
|
|
|
|
protected:
|
|
|
|
void DoIdleUpdate();
|
|
void SetOrientation(int orientation);
|
|
void SetHoverItem(wxAuiToolBarItem* item);
|
|
void SetPressedItem(wxAuiToolBarItem* item);
|
|
void RefreshOverflowState();
|
|
|
|
int GetOverflowState() const;
|
|
wxRect GetOverflowRect() const;
|
|
wxSize GetLabelSize(const wxString& label);
|
|
wxAuiToolBarItem* FindToolByPositionWithPacking(wxCoord x, wxCoord y) const;
|
|
|
|
protected: // handlers
|
|
|
|
void OnSize(wxSizeEvent& evt);
|
|
void OnIdle(wxIdleEvent& evt);
|
|
void OnDPIChanged(wxDPIChangedEvent& evt);
|
|
void OnPaint(wxPaintEvent& evt);
|
|
void OnEraseBackground(wxEraseEvent& evt);
|
|
void OnLeftDown(wxMouseEvent& evt);
|
|
void OnLeftUp(wxMouseEvent& evt);
|
|
void OnRightDown(wxMouseEvent& evt);
|
|
void OnRightUp(wxMouseEvent& evt);
|
|
void OnMiddleDown(wxMouseEvent& evt);
|
|
void OnMiddleUp(wxMouseEvent& evt);
|
|
void OnMotion(wxMouseEvent& evt);
|
|
void OnLeaveWindow(wxMouseEvent& evt);
|
|
void OnCaptureLost(wxMouseCaptureLostEvent& evt);
|
|
void OnSetCursor(wxSetCursorEvent& evt);
|
|
void OnSysColourChanged(wxSysColourChangedEvent& event);
|
|
|
|
protected:
|
|
|
|
wxAuiToolBarItemArray m_items; // array of toolbar items
|
|
wxAuiToolBarArt* m_art; // art provider
|
|
wxBoxSizer* m_sizer; // main sizer for toolbar
|
|
wxAuiToolBarItem* m_actionItem; // item that's being acted upon (pressed)
|
|
wxAuiToolBarItem* m_tipItem; // item that has its tooltip shown
|
|
wxBitmap m_bitmap; // double-buffer bitmap
|
|
wxSizerItem* m_gripperSizerItem;
|
|
wxSizerItem* m_overflowSizerItem;
|
|
wxSize m_absoluteMinSize;
|
|
wxPoint m_actionPos; // position of left-mouse down
|
|
wxAuiToolBarItemArray m_customOverflowPrepend;
|
|
wxAuiToolBarItemArray m_customOverflowAppend;
|
|
|
|
int m_buttonWidth;
|
|
int m_buttonHeight;
|
|
int m_sizerElementCount;
|
|
int m_leftPadding;
|
|
int m_rightPadding;
|
|
int m_topPadding;
|
|
int m_bottomPadding;
|
|
int m_toolPacking;
|
|
int m_toolBorderPadding;
|
|
int m_toolTextOrientation;
|
|
int m_overflowState;
|
|
bool m_dragging;
|
|
bool m_gripperVisible;
|
|
bool m_overflowVisible;
|
|
|
|
bool RealizeHelper(wxClientDC& dc, bool horizontal);
|
|
static bool IsPaneValid(long style, const wxAuiPaneInfo& pane);
|
|
bool IsPaneValid(long style) const;
|
|
void SetArtFlags() const;
|
|
wxOrientation m_orientation;
|
|
wxSize m_horzHintSize;
|
|
wxSize m_vertHintSize;
|
|
|
|
private:
|
|
// Common part of OnLeaveWindow() and OnCaptureLost().
|
|
void DoResetMouseState();
|
|
|
|
wxDECLARE_EVENT_TABLE();
|
|
wxDECLARE_CLASS(wxAuiToolBar);
|
|
};
|
|
|
|
|
|
|
|
|
|
// wx event machinery
|
|
|
|
#ifndef SWIG
|
|
|
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUITOOLBAR_TOOL_DROPDOWN, wxAuiToolBarEvent );
|
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUITOOLBAR_OVERFLOW_CLICK, wxAuiToolBarEvent );
|
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUITOOLBAR_RIGHT_CLICK, wxAuiToolBarEvent );
|
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUITOOLBAR_MIDDLE_CLICK, wxAuiToolBarEvent );
|
|
wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUITOOLBAR_BEGIN_DRAG, wxAuiToolBarEvent );
|
|
|
|
typedef void (wxEvtHandler::*wxAuiToolBarEventFunction)(wxAuiToolBarEvent&);
|
|
|
|
#define wxAuiToolBarEventHandler(func) \
|
|
wxEVENT_HANDLER_CAST(wxAuiToolBarEventFunction, func)
|
|
|
|
#define EVT_AUITOOLBAR_TOOL_DROPDOWN(winid, fn) \
|
|
wx__DECLARE_EVT1(wxEVT_AUITOOLBAR_TOOL_DROPDOWN, winid, wxAuiToolBarEventHandler(fn))
|
|
#define EVT_AUITOOLBAR_OVERFLOW_CLICK(winid, fn) \
|
|
wx__DECLARE_EVT1(wxEVT_AUITOOLBAR_OVERFLOW_CLICK, winid, wxAuiToolBarEventHandler(fn))
|
|
#define EVT_AUITOOLBAR_RIGHT_CLICK(winid, fn) \
|
|
wx__DECLARE_EVT1(wxEVT_AUITOOLBAR_RIGHT_CLICK, winid, wxAuiToolBarEventHandler(fn))
|
|
#define EVT_AUITOOLBAR_MIDDLE_CLICK(winid, fn) \
|
|
wx__DECLARE_EVT1(wxEVT_AUITOOLBAR_MIDDLE_CLICK, winid, wxAuiToolBarEventHandler(fn))
|
|
#define EVT_AUITOOLBAR_BEGIN_DRAG(winid, fn) \
|
|
wx__DECLARE_EVT1(wxEVT_AUITOOLBAR_BEGIN_DRAG, winid, wxAuiToolBarEventHandler(fn))
|
|
|
|
#else
|
|
|
|
// wxpython/swig event work
|
|
%constant wxEventType wxEVT_AUITOOLBAR_TOOL_DROPDOWN;
|
|
%constant wxEventType wxEVT_AUITOOLBAR_OVERFLOW_CLICK;
|
|
%constant wxEventType wxEVT_AUITOOLBAR_RIGHT_CLICK;
|
|
%constant wxEventType wxEVT_AUITOOLBAR_MIDDLE_CLICK;
|
|
%constant wxEventType wxEVT_AUITOOLBAR_BEGIN_DRAG;
|
|
|
|
%pythoncode {
|
|
EVT_AUITOOLBAR_TOOL_DROPDOWN = wx.PyEventBinder( wxEVT_AUITOOLBAR_TOOL_DROPDOWN, 1 )
|
|
EVT_AUITOOLBAR_OVERFLOW_CLICK = wx.PyEventBinder( wxEVT_AUITOOLBAR_OVERFLOW_CLICK, 1 )
|
|
EVT_AUITOOLBAR_RIGHT_CLICK = wx.PyEventBinder( wxEVT_AUITOOLBAR_RIGHT_CLICK, 1 )
|
|
EVT_AUITOOLBAR_MIDDLE_CLICK = wx.PyEventBinder( wxEVT_AUITOOLBAR_MIDDLE_CLICK, 1 )
|
|
EVT_AUITOOLBAR_BEGIN_DRAG = wx.PyEventBinder( wxEVT_AUITOOLBAR_BEGIN_DRAG, 1 )
|
|
}
|
|
#endif // SWIG
|
|
|
|
// old wxEVT_COMMAND_* constants
|
|
#define wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN wxEVT_AUITOOLBAR_TOOL_DROPDOWN
|
|
#define wxEVT_COMMAND_AUITOOLBAR_OVERFLOW_CLICK wxEVT_AUITOOLBAR_OVERFLOW_CLICK
|
|
#define wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK wxEVT_AUITOOLBAR_RIGHT_CLICK
|
|
#define wxEVT_COMMAND_AUITOOLBAR_MIDDLE_CLICK wxEVT_AUITOOLBAR_MIDDLE_CLICK
|
|
#define wxEVT_COMMAND_AUITOOLBAR_BEGIN_DRAG wxEVT_AUITOOLBAR_BEGIN_DRAG
|
|
|
|
#if defined(__WXMSW__) && wxUSE_UXTHEME
|
|
#define wxHAS_NATIVE_TOOLBAR_ART
|
|
#include "wx/aui/barartmsw.h"
|
|
#define wxAuiDefaultToolBarArt wxAuiMSWToolBarArt
|
|
#endif
|
|
|
|
#ifndef wxHAS_NATIVE_TOOLBAR_ART
|
|
#define wxAuiDefaultToolBarArt wxAuiGenericToolBarArt
|
|
#endif
|
|
|
|
#endif // wxUSE_AUI
|
|
#endif // _WX_AUIBAR_H_
|
|
|