Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2012-01-29 13:52:15 +0000
committerStijn Buys <ingar@osirion.org>2012-01-29 13:52:15 +0000
commit1a6fe945e73b97b19df115829f801e860c81ad5d (patch)
tree5644ef38dba5661d1d5a3117fe43cc3d08e661e2 /src/ui/scrollbar.h
parent398f3df8af02047a76ab7172c69d93313250260c (diff)
FS#79 Added the actual files for the ui::Scrollbar class.
Diffstat (limited to 'src/ui/scrollbar.h')
-rw-r--r--src/ui/scrollbar.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/ui/scrollbar.h b/src/ui/scrollbar.h
new file mode 100644
index 0000000..0689969
--- /dev/null
+++ b/src/ui/scrollbar.h
@@ -0,0 +1,121 @@
+/*
+ ui/scrollbar.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_UI_SCROLLBAR_H__
+#define __INCLUDED_UI_SCROLLBAR_H__
+
+#include <string>
+#include "ui/button.h"
+#include "ui/widget.h"
+
+namespace ui
+{
+
+/**
+ * @brief a scrollbar widget
+ */
+class ScrollBar : public Widget
+{
+public:
+ ScrollBar(Widget *parent, const float minimum = 0.0f, const float maximum = 1.0f);
+
+ ~ScrollBar();
+
+ /**
+ * @brief the current slider value
+ */
+ inline const float value() const {
+ return scrollbar_value;
+ }
+
+ /**
+ * @brief the minimum value
+ */
+ inline const float minimum() const {
+ return scrollbar_minimum;
+ }
+
+ /**
+ * @brief the maximum value
+ */
+ inline const float maximum() const {
+ return scrollbar_maximum;
+ }
+
+ /**
+ * @brief print widget description to console
+ */
+ virtual void print(const size_t indent) const;
+
+ /**
+ * @brief set the current slider value
+ * @see value
+ */
+ void set_value(const float value);
+
+ /**
+ * @brief set the minimum slider value
+ * @see minimum
+ */
+ void set_minimum(const float minimum);
+
+ /**
+ * @brief set the maximum slider value
+ * @see maximum
+ */
+ void set_maximum(const float maximum);
+
+ /**
+ * @brief set the minimum and maximum slider values
+ * @see minimum
+ * @see maximum
+ */
+ void set_range(const float minimum, const float maximum);
+
+ /// show the widget
+ virtual void show();
+
+protected:
+
+ /// resize event handler
+ virtual void resize();
+
+ /// draw event handler
+ virtual void draw();
+
+ /// emit event handler
+ virtual bool on_emit(Widget *sender, const Event event, void *data=0);
+
+ /// keypress event handler
+ virtual bool on_keypress(const int key, const unsigned int modifier);
+
+ /// keyrelease event handler
+ virtual bool on_keyrelease(const int key, const unsigned int modifier);
+
+ virtual void on_mouseover(const math::Vector2f &cursor);
+
+ /// mouse movement handler
+ virtual void on_mousemove(const math::Vector2f &cursor);
+
+private:
+ /// validate slider value
+ void validate();
+
+ float scrollbar_minimum;
+ float scrollbar_maximum;
+ float scrollbar_value;
+ bool scrollbar_dragging;
+
+ Button *scrollbar_minbutton;
+ Button *scrollbar_decbutton;
+ Button *scrollbar_incbutton;
+ Button *scrollbar_maxbutton;
+};
+
+}
+
+#endif // __INCLUDED_UI_SCROLLBAR_H__
+