int GetToolId() const { return tool_id; }
void SetToolId(int id) { tool_id = id; }
-public:
+private:
+
bool is_dropdown_clicked;
wxPoint click_pt;
wxRect rect;
class WXDLLIMPEXP_AUI wxAuiToolBarItem
{
+ friend class wxAuiToolBar;
+
public:
wxAuiToolBarItem()
{
window = NULL;
sizer_item = NULL;
- space_pixels = 0;
+ spacer_pixels = 0;
id = 0;
kind = wxITEM_NORMAL;
state = 0; // normal, enabled
long_help = c.long_help;
sizer_item = c.sizer_item;
min_size = c.min_size;
- space_pixels = c.space_pixels;
+ spacer_pixels = c.spacer_pixels;
id = c.id;
kind = c.kind;
state = c.state;
sticky = c.sticky;
user_data = c.user_data;
}
+
+
+ wxWindow* GetWindow() { return window; }
+ int GetId() const { return id; }
+ int GetKind() const { return kind; }
+ int GetState() const { return state; }
+ wxSizerItem* GetSizerItem() const { return sizer_item; }
+
+ void SetLabel(const wxString& s) { label = s; }
+ const wxString& GetLabel() const { return label; }
+
+ void SetBitmap(const wxBitmap& bmp) { bitmap = bmp; }
+ const wxBitmap& GetBitmap() const { return bitmap; }
+
+ void SetDisabledBitmap(const wxBitmap& bmp) { disabled_bitmap = bmp; }
+ const wxBitmap& GetDisabledBitmap() const { return disabled_bitmap; }
+
+ void SetHoverBitmap(const wxBitmap& bmp) { hover_bitmap = bmp; }
+ const wxBitmap& GetHoverBitmap() const { return hover_bitmap; }
+
+ void SetShortHelp(const wxString& s) { short_help = s; }
+ const wxString& GetShortHelp() const { return short_help; }
+
+ void SetLongHelp(const wxString& s) { long_help = s; }
+ const wxString& GetLongHelp() const { return long_help; }
+
+ void SetMinSize(const wxSize& s) { min_size = s; }
+ const wxSize& GetMinSize() const { return min_size; }
+
+ void SetSpacerPixels(int s) { spacer_pixels = s; }
+ int GetSpacerPixels() const { return spacer_pixels; }
+
+ void SetProportion(int p) { proportion = p; }
+ int GetProportion() const { return proportion; }
+
+ void SetActive(bool b) { active = b; }
+ bool IsActive() const { return active; }
+
+ void SetHasDropDown(bool b) { dropdown = b; }
+ bool HasDropDown() const { return dropdown; }
+
+ void SetSticky(bool b) { sticky = b; }
+ bool IsSticky() const { return sticky; }
+
+ void SetUserData(long l) { user_data = l; }
+ long GetUserData() const { return user_data; }
-public:
+private:
wxWindow* window; // item's associated window
wxString label; // label displayed on the item
wxString long_help; // long help (for status bar)
wxSizerItem* sizer_item; // sizer item
wxSize min_size; // item's minimum size
- int space_pixels; // size of a spacer
+ int spacer_pixels; // size of a spacer
int id; // item's id
int kind; // item's kind
int state; // state
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;
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;
+ if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED)
+ bmp = item.GetDisabledBitmap();
else
- bmp = item.bitmap;
+ 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.empty() )
+ 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;
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
{
- 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.empty() )
+ 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.empty() )
+ 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.empty() )
+ 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.empty() )
+ !item.GetLabel().empty() )
{
width += 3; // space between left border and bitmap
width += 3; // space between bitmap and text
- if ( !item.label.empty() )
+ 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);
{
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();
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 = 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.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.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.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;
if (item.proportion > 0)
sizer_item = sizer->AddStretchSpacer(item.proportion);
else
- sizer_item = sizer->Add(item.space_pixels, 1);
+ 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.empty() )
+ if ( (m_style & wxAUI_TB_TEXT) && !item.GetLabel().empty() )
{
- wxSize s = GetLabelSize(item.label);
+ wxSize s = GetLabelSize(item.GetLabel());
vert_sizer->Add(1, s.y);
}