+/* $Id$
+
+This file is part of libmspgltk
+Copyright © 2007 Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+
+#include "part.h"
+#include "toggle.h"
+
+namespace Msp {
+namespace GLtk {
+
+Toggle::Toggle(const Resources &r):
+ Widget(r),
+ value(false)
+{
+ update_style();
+}
+
+void Toggle::button_release(int x, int y, unsigned btn)
+{
+ if(btn==1)
+ {
+ if(geom.is_inside_relative(x, y))
+ {
+ value=!value;
+ state=(value ? ACTIVE : HOVER);
+ signal_toggled.emit(value);
+ }
+ else
+ state=NORMAL;
+ }
+}
+
+void Toggle::pointer_enter()
+{
+ if(!value)
+ state=HOVER;
+}
+
+void Toggle::pointer_leave()
+{
+ if(!value)
+ state=NORMAL;
+}
+
+void Toggle::render_special(const Part &part) const
+{
+ if(part.get_name()=="text")
+ render_text(part, text);
+}
+
+
+Toggle::Loader::Loader(Toggle &t):
+ Widget::Loader(t)
+{
+ add("text", &Toggle::text);
+ add("value", &Toggle::value);
+}
+
+Toggle &Toggle::Loader::get_object() const
+{
+ return static_cast<Toggle &>(wdg);
+}
+
+} // namespace GLtk
+} // namespace Msp