// Author: Benjamin I. Williams
// Modified by:
// Created: 2005-05-17
-// RCS-ID: $Id: dockart.cpp 48848 2007-09-21 10:19:53Z SC $
+// RCS-ID: $Id$
// Copyright: (C) Copyright 2005-2006, Kirix Corporation, All Rights Reserved
// Licence: wxWindows Library Licence, Version 3.1
///////////////////////////////////////////////////////////////////////////////
#ifdef __WXMAC__
#include "wx/osx/private.h"
+// for themeing support
+#include <Carbon/Carbon.h>
#endif
#include "wx/arrimpl.cpp"
int text_x, text_y;
text_x = rect.x + 1;
text_y = rect.y + (rect.height-text_height)/2;
- dc.DrawText(item.label, text_x, text_y);
+ dc.DrawText(item.GetLabel(), text_x, text_y);
dc.DestroyClippingRegion();
}
dc.GetTextExtent(wxT("ABCDHgj"), &tx, &text_height);
text_width = 0;
- dc.GetTextExtent(item.label, &text_width, &ty);
+ dc.GetTextExtent(item.GetLabel(), &text_width, &ty);
}
int bmp_x = 0, bmp_y = 0;
{
bmp_x = rect.x +
(rect.width/2) -
- (item.bitmap.GetWidth()/2);
+ (item.GetBitmap().GetWidth()/2);
bmp_y = rect.y +
((rect.height-text_height)/2) -
- (item.bitmap.GetHeight()/2);
+ (item.GetBitmap().GetHeight()/2);
text_x = rect.x + (rect.width/2) - (text_width/2) + 1;
text_y = rect.y + rect.height - text_height - 1;
}
- else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT)
+ else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT)
{
bmp_x = rect.x + 3;
bmp_y = rect.y +
(rect.height/2) -
- (item.bitmap.GetHeight()/2);
+ (item.GetBitmap().GetHeight()/2);
- text_x = bmp_x + 3 + item.bitmap.GetWidth();
+ text_x = bmp_x + 3 + item.GetBitmap().GetWidth();
text_y = rect.y +
(rect.height/2) -
(text_height/2);
}
- if (!(item.state & wxAUI_BUTTON_STATE_DISABLED))
+ if (!(item.GetState() & wxAUI_BUTTON_STATE_DISABLED))
{
- if (item.state & wxAUI_BUTTON_STATE_PRESSED)
+ if (item.GetState() & wxAUI_BUTTON_STATE_PRESSED)
{
dc.SetPen(wxPen(m_highlight_colour));
dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 150)));
dc.DrawRectangle(rect);
}
- else if ((item.state & wxAUI_BUTTON_STATE_HOVER) || item.sticky == true)
+ else if ((item.GetState() & wxAUI_BUTTON_STATE_HOVER) || item.IsSticky())
{
dc.SetPen(wxPen(m_highlight_colour));
dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 170)));
// draw an even lighter background for checked item hovers (since
// the hover background is the same color as the check background)
- if (item.state & wxAUI_BUTTON_STATE_CHECKED)
+ if (item.GetState() & wxAUI_BUTTON_STATE_CHECKED)
dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 180)));
dc.DrawRectangle(rect);
}
- else if (item.state & wxAUI_BUTTON_STATE_CHECKED)
+ else if (item.GetState() & wxAUI_BUTTON_STATE_CHECKED)
{
// it's important to put this code in an else statment after the
// hover, otherwise hovers won't draw properly for checked items
}
wxBitmap bmp;
- if (item.state & wxAUI_BUTTON_STATE_DISABLED)
- bmp = item.disabled_bitmap;
- else
- bmp = item.bitmap;
+ if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
+ bmp = item.GetDisabledBitmap();
+ else
+ bmp = item.GetBitmap();
if (!bmp.IsOk())
return;
// set the item's text color based on if it is disabled
dc.SetTextForeground(*wxBLACK);
- if (item.state & wxAUI_BUTTON_STATE_DISABLED)
+ if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
dc.SetTextForeground(DISABLED_TEXT_COLOR);
- if ((m_flags & wxAUI_TB_TEXT) && item.label.Length() > 0)
+ if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() )
{
- dc.DrawText(item.label, text_x, text_y);
+ dc.DrawText(item.GetLabel(), text_x, text_y);
}
}
text_width = 0;
}
- dc.GetTextExtent(item.label, &text_width, &ty);
+ dc.GetTextExtent(item.GetLabel(), &text_width, &ty);
}
{
bmp_x = button_rect.x +
(button_rect.width/2) -
- (item.bitmap.GetWidth()/2);
+ (item.GetBitmap().GetWidth()/2);
bmp_y = button_rect.y +
((button_rect.height-text_height)/2) -
- (item.bitmap.GetHeight()/2);
+ (item.GetBitmap().GetHeight()/2);
text_x = rect.x + (rect.width/2) - (text_width/2) + 1;
text_y = rect.y + rect.height - text_height - 1;
}
- else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT)
+ else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT)
{
bmp_x = rect.x + 3;
bmp_y = rect.y +
(rect.height/2) -
- (item.bitmap.GetHeight()/2);
+ (item.GetBitmap().GetHeight()/2);
- text_x = bmp_x + 3 + item.bitmap.GetWidth();
+ text_x = bmp_x + 3 + item.GetBitmap().GetWidth();
text_y = rect.y +
(rect.height/2) -
(text_height/2);
}
- if (item.state & wxAUI_BUTTON_STATE_PRESSED)
+ if (item.GetState() & wxAUI_BUTTON_STATE_PRESSED)
{
dc.SetPen(wxPen(m_highlight_colour));
dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 140)));
dc.DrawRectangle(button_rect);
dc.DrawRectangle(dropdown_rect);
}
- else if (item.state & wxAUI_BUTTON_STATE_HOVER ||
- item.sticky == true)
+ else if (item.GetState() & wxAUI_BUTTON_STATE_HOVER ||
+ item.IsSticky())
{
dc.SetPen(wxPen(m_highlight_colour));
dc.SetBrush(wxBrush(wxAuiStepColour(m_highlight_colour, 170)));
wxBitmap bmp;
wxBitmap dropbmp;
- if (item.state & wxAUI_BUTTON_STATE_DISABLED)
+ if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
{
- bmp = item.disabled_bitmap;
+ bmp = item.GetDisabledBitmap();
dropbmp = m_disabled_button_dropdown_bmp;
}
- else
+ else
{
- bmp = item.bitmap;
+ bmp = item.GetBitmap();
dropbmp = m_button_dropdown_bmp;
}
// set the item's text color based on if it is disabled
dc.SetTextForeground(*wxBLACK);
- if (item.state & wxAUI_BUTTON_STATE_DISABLED)
+ if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
dc.SetTextForeground(DISABLED_TEXT_COLOR);
- if ((m_flags & wxAUI_TB_TEXT) && item.label.Length() > 0)
+ if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() )
{
- dc.DrawText(item.label, text_x, text_y);
+ dc.DrawText(item.GetLabel(), text_x, text_y);
}
}
text_width = 0;
}
- dc.GetTextExtent(item.label, &text_width, &ty);
+ dc.GetTextExtent(item.GetLabel(), &text_width, &ty);
// don't draw the label if it is wider than the item width
if (text_width > rect.width)
text_x = rect.x + (rect.width/2) - (text_width/2) + 1;
text_y = rect.y + rect.height - text_height - 1;
- if ((m_flags & wxAUI_TB_TEXT) && item.label.Length() > 0)
+ if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() )
{
- dc.DrawText(item.label, text_x, text_y);
+ dc.DrawText(item.GetLabel(), text_x, text_y);
}
}
dc.GetTextExtent(wxT("ABCDHgj"), &width, &height);
// get item's width
- width = item.min_size.GetWidth();
+ width = item.GetMinSize().GetWidth();
return wxSize(width, height);
}
wxWindow* WXUNUSED(wnd),
const wxAuiToolBarItem& item)
{
- if (!item.bitmap.IsOk() && !(m_flags & wxAUI_TB_TEXT))
+ if (!item.GetBitmap().IsOk() && !(m_flags & wxAUI_TB_TEXT))
return wxSize(16,16);
- int width = item.bitmap.GetWidth();
- int height = item.bitmap.GetHeight();
+ int width = item.GetBitmap().GetWidth();
+ int height = item.GetBitmap().GetHeight();
if (m_flags & wxAUI_TB_TEXT)
{
dc.GetTextExtent(wxT("ABCDHgj"), &tx, &ty);
height += ty;
- if (item.label.Length() > 0)
+ if ( !item.GetLabel().empty() )
{
- dc.GetTextExtent(item.label, &tx, &ty);
+ dc.GetTextExtent(item.GetLabel(), &tx, &ty);
width = wxMax(width, tx+6);
}
}
- else if (m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT && item.label.Length() > 0)
+ else if ( m_text_orientation == wxAUI_TBTOOL_TEXT_RIGHT &&
+ !item.GetLabel().empty() )
{
width += 3; // space between left border and bitmap
width += 3; // space between bitmap and text
- if (item.label.Length() > 0)
+ if ( !item.GetLabel().empty() )
{
- dc.GetTextExtent(item.label, &tx, &ty);
+ dc.GetTextExtent(item.GetLabel(), &tx, &ty);
width += tx;
height = wxMax(height, ty);
}
}
// if the tool has a dropdown button, add it to the width
- if (item.dropdown == true)
+ if (item.HasDropDown())
width += (BUTTON_DROPDOWN_WIDTH+4);
return wxSize(width, height);
rect.y += (rect.height/2) - (new_height/2);
rect.height = new_height;
}
- else
+ else
{
rect.y += (rect.height/2);
rect.height = 1;
if (x > rect.GetWidth()-5)
break;
}
- else
+ else
{
x = rect.x + 3;
y = rect.y + (i*4) + 5;
{
wxAuiToolBarItem& item = items.Item(i);
- if (item.kind == wxITEM_NORMAL)
+ if (item.GetKind() == wxITEM_NORMAL)
{
- wxString text = item.short_help;
+ wxString text = item.GetShortHelp();
if (text.empty())
- text = item.label;
+ text = item.GetLabel();
if (text.empty())
text = wxT(" ");
- wxMenuItem* m = new wxMenuItem(&menuPopup, item.id, text, item.short_help);
+ wxMenuItem* m = new wxMenuItem(&menuPopup, item.GetId(), text, item.GetShortHelp());
- m->SetBitmap(item.bitmap);
+ m->SetBitmap(item.GetBitmap());
menuPopup.Append(m);
items_added++;
}
- else if (item.kind == wxITEM_SEPARATOR)
+ else if (item.GetKind() == wxITEM_SEPARATOR)
{
if (items_added > 0)
menuPopup.AppendSeparator();
SetFont(*wxNORMAL_FONT);
m_art->SetFlags((unsigned int)m_style);
SetExtraStyle(wxWS_EX_PROCESS_IDLE);
- if (style & wxAUI_TB_HORZ_TEXT)
+ if (style & wxAUI_TB_HORZ_LAYOUT)
SetToolTextOrientation(wxAUI_TBTOOL_TEXT_RIGHT);
}
if (m_style & wxAUI_TB_GRIPPER)
m_gripper_visible = true;
- else
+ else
m_gripper_visible = false;
if (m_style & wxAUI_TB_OVERFLOW)
m_overflow_visible = true;
- else
+ else
m_overflow_visible = false;
- if (style & wxAUI_TB_HORZ_TEXT)
+ if (style & wxAUI_TB_HORZ_LAYOUT)
SetToolTextOrientation(wxAUI_TBTOOL_TEXT_RIGHT);
- else
+ else
SetToolTextOrientation(wxAUI_TBTOOL_TEXT_BOTTOM);
}
-void wxAuiToolBar::AddTool(int tool_id,
+wxAuiToolBarItem* wxAuiToolBar::AddTool(int tool_id,
const wxString& label,
const wxBitmap& bitmap,
const wxString& short_help_string,
wxItemKind kind)
{
- AddTool(tool_id,
+ return AddTool(tool_id,
label,
bitmap,
wxNullBitmap,
}
-void wxAuiToolBar::AddTool(int tool_id,
+wxAuiToolBarItem* wxAuiToolBar::AddTool(int tool_id,
const wxString& label,
const wxBitmap& bitmap,
const wxBitmap& disabled_bitmap,
wxItemKind kind,
- const wxString& WXUNUSED(short_help_string),
- const wxString& WXUNUSED(long_help_string),
+ const wxString& short_help_string,
+ const wxString& long_help_string,
wxObject* WXUNUSED(client_data))
{
wxAuiToolBarItem item;
item.label = label;
item.bitmap = bitmap;
item.disabled_bitmap = disabled_bitmap;
+ item.short_help = short_help_string;
+ item.long_help = long_help_string;
item.active = true;
item.dropdown = false;
- item.space_pixels = 0;
+ item.spacer_pixels = 0;
item.id = tool_id;
item.state = 0;
item.proportion = 0;
item.disabled_bitmap = MakeDisabledBitmap(item.bitmap);
}
}
-
m_items.Add(item);
+ return &m_items.Last();
}
-void wxAuiToolBar::AddControl(wxControl* control,
+wxAuiToolBarItem* wxAuiToolBar::AddControl(wxControl* control,
const wxString& label)
{
wxAuiToolBarItem item;
item.disabled_bitmap = wxNullBitmap;
item.active = true;
item.dropdown = false;
- item.space_pixels = 0;
+ item.spacer_pixels = 0;
item.id = control->GetId();
item.state = 0;
item.proportion = 0;
item.sticky = false;
m_items.Add(item);
+ return &m_items.Last();
}
-void wxAuiToolBar::AddLabel(int tool_id,
+wxAuiToolBarItem* wxAuiToolBar::AddLabel(int tool_id,
const wxString& label,
const int width)
{
item.disabled_bitmap = wxNullBitmap;
item.active = true;
item.dropdown = false;
- item.space_pixels = 0;
+ item.spacer_pixels = 0;
item.id = tool_id;
item.state = 0;
item.proportion = 0;
item.sticky = false;
m_items.Add(item);
+ return &m_items.Last();
}
-void wxAuiToolBar::AddSeparator()
+wxAuiToolBarItem* wxAuiToolBar::AddSeparator()
{
wxAuiToolBarItem item;
item.window = NULL;
item.sticky = false;
m_items.Add(item);
+ return &m_items.Last();
}
-void wxAuiToolBar::AddSpacer(int pixels)
+wxAuiToolBarItem* wxAuiToolBar::AddSpacer(int pixels)
{
wxAuiToolBarItem item;
item.window = NULL;
item.disabled_bitmap = wxNullBitmap;
item.active = true;
item.dropdown = false;
- item.space_pixels = pixels;
+ item.spacer_pixels = pixels;
item.id = -1;
item.state = 0;
item.proportion = 0;
item.sticky = false;
m_items.Add(item);
+ return &m_items.Last();
}
-void wxAuiToolBar::AddStretchSpacer(int proportion)
+wxAuiToolBarItem* wxAuiToolBar::AddStretchSpacer(int proportion)
{
wxAuiToolBarItem item;
item.window = NULL;
item.disabled_bitmap = wxNullBitmap;
item.active = true;
item.dropdown = false;
- item.space_pixels = 0;
+ item.spacer_pixels = 0;
item.id = -1;
item.state = 0;
item.proportion = proportion;
item.sticky = false;
m_items.Add(item);
+ return &m_items.Last();
}
void wxAuiToolBar::Clear()
{
if (m_art)
return m_art->GetElementSize(wxAUI_TBART_SEPARATOR_SIZE);
- else
+ else
return 5;
}
{
if (::wxGetMouseState().LeftDown())
overflow_state = wxAUI_BUTTON_STATE_PRESSED;
- else
+ else
overflow_state = wxAUI_BUTTON_STATE_HOVER;
}
if (state == true)
tool->state |= wxAUI_BUTTON_STATE_CHECKED;
- else
+ else
tool->state &= ~wxAUI_BUTTON_STATE_CHECKED;
}
}
{
if (state == true)
tool->state &= ~wxAUI_BUTTON_STATE_DISABLED;
- else
+ else
tool->state |= wxAUI_BUTTON_STATE_DISABLED;
}
}
if (rect.y+rect.height < cli_h)
return true;
}
- else
+ else
{
// take the dropdown size into account
if (m_overflow_visible)
{
if (horizontal)
m_gripper_sizer_item = sizer->Add(gripper_size, 1, 0, wxEXPAND);
- else
+ else
m_gripper_sizer_item = sizer->Add(1, gripper_size, 0, wxEXPAND);
}
- else
+ else
{
m_gripper_sizer_item = NULL;
}
{
if (horizontal)
sizer->Add(m_left_padding, 1);
- else
+ else
sizer->Add(1, m_left_padding);
}
{
if (horizontal)
sizer_item = sizer->Add(separator_size, 1, 0, wxEXPAND);
- else
+ else
sizer_item = sizer->Add(1, separator_size, 0, wxEXPAND);
// add tool packing
case wxITEM_SPACER:
if (item.proportion > 0)
sizer_item = sizer->AddStretchSpacer(item.proportion);
- else
- sizer_item = sizer->Add(item.space_pixels, 1);
+ else
+ sizer_item = sizer->Add(item.spacer_pixels, 1);
break;
case wxITEM_CONTROL:
vert_sizer->AddStretchSpacer(1);
ctrl_sizer_item = vert_sizer->Add(item.window, 0, wxEXPAND);
vert_sizer->AddStretchSpacer(1);
- if ((m_style & wxAUI_TB_TEXT) && item.label.Length() > 0)
+ if ( (m_style & wxAUI_TB_TEXT) &&
+ m_tool_text_orientation == wxAUI_TBTOOL_TEXT_BOTTOM &&
+ !item.GetLabel().empty() )
{
- wxSize s = GetLabelSize(item.label);
+ wxSize s = GetLabelSize(item.GetLabel());
vert_sizer->Add(1, s.y);
}
{
if (horizontal)
sizer->Add(m_right_padding, 1);
- else
+ else
sizer->Add(1, m_right_padding);
}
{
if (horizontal)
m_overflow_sizer_item = sizer->Add(overflow_size, 1, 0, wxEXPAND);
- else
+ else
m_overflow_sizer_item = sizer->Add(1, overflow_size, 0, wxEXPAND);
}
- else
+ else
{
m_overflow_sizer_item = NULL;
}
{
if (horizontal)
outside_sizer->Add(1, m_top_padding);
- else
+ else
outside_sizer->Add(m_top_padding, 1);
}
{
if (horizontal)
outside_sizer->Add(1, m_bottom_padding);
- else
+ else
outside_sizer->Add(m_bottom_padding, 1);
}
{
SetClientSize(new_size);
}
- else
+ else
{
m_sizer->SetDimension(0, 0, cur_size.x, cur_size.y);
}
}
- else
+ else
{
wxSize cur_size = GetClientSize();
m_sizer->SetDimension(0, 0, cur_size.x, cur_size.y);
overflow_rect.width = cli_rect.width;
overflow_rect.height = overflow_size;
}
- else
+ else
{
overflow_rect.x = cli_rect.width - overflow_size;
overflow_rect.y = 0;
bool is_enabled;
if (item.window)
is_enabled = item.window->IsEnabled();
- else
+ else
is_enabled = (item.state & wxAUI_BUTTON_STATE_DISABLED) ? false : true;
bool new_enabled = evt.GetEnabled();
{
item.window->Enable(new_enabled);
}
- else
+ else
{
if (new_enabled)
item.state &= ~wxAUI_BUTTON_STATE_DISABLED;
- else
+ else
item.state |= wxAUI_BUTTON_STATE_DISABLED;
}
need_refresh = true;
{
if (new_checked)
item.state |= wxAUI_BUTTON_STATE_CHECKED;
- else
+ else
item.state &= ~wxAUI_BUTTON_STATE_CHECKED;
need_refresh = true;
if (x > y)
SetOrientation(wxHORIZONTAL);
- else
+ else
SetOrientation(wxVERTICAL);
if (((x >= y) && m_absolute_min_size.x > x) ||
}
}
}
- else
+ else
{
// show all flexible items
size_t i, count;
wxRect gripper_rect = m_gripper_sizer_item->GetRect();
if (horizontal)
gripper_rect.width = gripper_size;
- else
+ else
gripper_rect.height = gripper_size;
m_art->DrawGripper(dc, this, gripper_rect);
}
int last_extent;
if (horizontal)
last_extent = cli_rect.width;
- else
+ else
last_extent = cli_rect.height;
if (m_overflow_visible)
last_extent -= dropdown_size;
// draw a separator
m_art->DrawSeparator(dc, this, item_rect);
}
- else if (item.kind == wxITEM_LABEL)
+ else if (item.kind == wxITEM_LABEL)
{
// draw a text label only
m_art->DrawLabel(dc, this, item, item_rect);
}
- else if (item.kind == wxITEM_NORMAL)
+ else if (item.kind == wxITEM_NORMAL)
{
// draw a regular button or dropdown button
if (!item.dropdown)
m_art->DrawButton(dc, this, item, item_rect);
- else
+ else
m_art->DrawDropDownButton(dc, this, item, item_rect);
}
- else if (item.kind == wxITEM_CHECK)
+ else if (item.kind == wxITEM_CHECK)
{
// draw a toggle button
m_art->DrawButton(dc, this, item, item_rect);
}
- else if (item.kind == wxITEM_CONTROL)
+ else if (item.kind == wxITEM_CONTROL)
{
// draw the control's label
m_art->DrawControlLabel(dc, this, item, item_rect);
{
DoIdleUpdate();
}
- else
+ else
{
size_t i, count;
wxAuiToolBarItemArray overflow_items;
m_action_item = NULL;
return;
}
- else
+ else
{
wxAuiToolBarItem* hit_item;
hit_item = FindToolByPosition(evt.GetX(), evt.GetY());
if (m_action_item && hit_item == m_action_item)
{
- SetToolTip(NULL);
+ UnsetToolTip();
if (hit_item->kind == wxITEM_CHECK)
{
if (m_action_item->state & wxAUI_BUTTON_STATE_CHECKED)
toggle = false;
- else
+ else
toggle = true;
ToggleTool(m_action_item->id, toggle);
ProcessEvent(e);
DoIdleUpdate();
}
- else
+ else
{
wxCommandEvent e(wxEVT_COMMAND_MENU_SELECTED, m_action_item->id);
e.SetEventObject(this);
DoIdleUpdate();
}
}
- else
+ else
{
// right-clicked on the invalid area of the toolbar
wxAuiToolBarEvent e(wxEVT_COMMAND_AUITOOLBAR_RIGHT_CLICK, -1);
m_action_pos != wxPoint(-1,-1) &&
abs(evt.m_x - m_action_pos.x) + abs(evt.m_y - m_action_pos.y) > 5)
{
- SetToolTip(NULL);
+ UnsetToolTip();
m_dragging = true;
{
if (!(hit_item->state & wxAUI_BUTTON_STATE_DISABLED))
SetHoverItem(hit_item);
- else
+ else
SetHoverItem(NULL);
}
- else
+ else
{
// no hit item, remove any hit item
SetHoverItem(hit_item);
{
m_tip_item = packing_hit_item;
- if (packing_hit_item->short_help.Length() > 0)
+ if ( !packing_hit_item->short_help.empty() )
SetToolTip(packing_hit_item->short_help);
- else
- SetToolTip(NULL);
+ else
+ UnsetToolTip();
}
}
- else
+ else
{
- SetToolTip(NULL);
+ UnsetToolTip();
m_tip_item = NULL;
}
{
if (m_action_item == hit_item)
SetPressedItem(m_action_item);
- else
+ else
SetPressedItem(NULL);
}