diff options
Diffstat (limited to 'src/interface/Checkbox.cpp')
| -rw-r--r-- | src/interface/Checkbox.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/interface/Checkbox.cpp b/src/interface/Checkbox.cpp index c0dd47b..d7be324 100644 --- a/src/interface/Checkbox.cpp +++ b/src/interface/Checkbox.cpp @@ -9,9 +9,10 @@ using namespace ui; -Checkbox::Checkbox(ui::Point position, ui::Point size, std::string text): +Checkbox::Checkbox(ui::Point position, ui::Point size, std::string text, std::string toolTip): Component(position, size), text(text), + toolTip(toolTip), isMouseOver(false), checked(false), actionCallback(NULL) @@ -30,6 +31,13 @@ std::string Checkbox::GetText() return text; } +void Checkbox::SetIcon(Icon icon) +{ + Appearance.icon = icon; + iconPosition.X = 19; + iconPosition.Y = 3; +} + void Checkbox::OnMouseClick(int x, int y, unsigned int button) { if(checked) @@ -53,6 +61,10 @@ void Checkbox::OnMouseUp(int x, int y, unsigned int button) void Checkbox::OnMouseEnter(int x, int y) { isMouseOver = true; + if(toolTip.length()>0 && GetParentWindow()) + { + GetParentWindow()->ToolTip(this, ui::Point(x, y), toolTip); + } } void Checkbox::OnMouseLeave(int x, int y) @@ -71,12 +83,18 @@ void Checkbox::Draw(const Point& screenPos) { g->drawrect(screenPos.X+2, screenPos.Y+2, 12, 12, 255, 255, 255, 255); g->fillrect(screenPos.X+5, screenPos.Y+5, 6, 6, 255, 255, 255, 170); - g->drawtext(screenPos.X+18, screenPos.Y+4, text, 255, 255, 255, 255); + if (!Appearance.icon) + g->drawtext(screenPos.X+18, screenPos.Y+4, text, 255, 255, 255, 255); + else + g->draw_icon(screenPos.X+15, screenPos.Y+iconPosition.Y, Appearance.icon); } else { g->drawrect(screenPos.X+2, screenPos.Y+2, 12, 12, 255, 255, 255, 200); - g->drawtext(screenPos.X+18, screenPos.Y+4, text, 255, 255, 255, 200); + if (!Appearance.icon) + g->drawtext(screenPos.X+18, screenPos.Y+4, text, 255, 255, 255, 200); + else + g->draw_icon(screenPos.X+15, screenPos.Y+iconPosition.Y, Appearance.icon); } } |
