/* ui/button.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include "audio/audio.h" #include "auxiliary/functions.h" #include "ui/paint.h" #include "sys/sys.h" #include "ui/button.h" #include "core/commandbuffer.h" namespace ui { Button::Button (Widget *parent, const char *text, const char *command) : Label(parent, text) { set_label("button"); set_command(command); } Button::~Button() { } void Button::print(size_t indent) { std::string marker(""); con_print << aux::pad_left(marker, indent*2) << label() << " \"" << text() << "\" \"" << command() << "\"" << std::endl; } void Button::set_command(const char *command) { if (command) button_command.assign(command); else button_command.clear(); } void Button::set_command(std::string const &command) { button_command.assign(command); } void Button::draw_border() { if (!border()) return; if (has_focus()) paint::color(palette()->foreground()); else paint::color(palette()->border()); paint::border(global_location(), size()); } void Button::draw_text() { if (!text().size()) return; if (has_focus()) paint::color(palette()->highlight()); else paint::color(palette()->foreground()); paint::text_centered(global_location(), size(), text(), font()); } void Button::keypress(unsigned int key, unsigned int modifier) { } void Button::keyrelease(unsigned int key, unsigned int modifier) { if (key == 512 + SDL_BUTTON_LEFT) { core::cmd() << button_command << std::endl; audio::play("ui/button"); } } }