Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/tooltip.h')
-rw-r--r--src/ui/tooltip.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/ui/tooltip.h b/src/ui/tooltip.h
new file mode 100644
index 0000000..629863a
--- /dev/null
+++ b/src/ui/tooltip.h
@@ -0,0 +1,80 @@
+/*
+ ui/tooltip.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_TOOLTIP_H__
+#define __INCLUDED_UI_TOOLTIP_H__
+
+#include "ui/label.h"
+
+namespace ui
+{
+ /**
+ * @brief a widget displaying a tooltip.
+ * This class makes sure only one Tooltip is globally visible.
+ */
+class Tooltip : public Label
+{
+ public:
+ Tooltip(Widget *parent);
+ virtual ~Tooltip();
+
+ /**
+ * @brief resize the tooltip
+ * */
+ virtual void resize();
+
+ /**
+ * @brief show the tooltip
+ * */
+ virtual void show();
+
+ /**
+ * @brief hide the tooltip
+ * */
+ virtual void hide();
+
+ /**
+ * @brief draw event distributor
+ * The default draw event distributor is overwritten to do nothing.
+ * Tooltips are drawn separately because the need to be on top of everything else.
+ * @see event_draw_global
+ * */
+ virtual void event_draw();
+
+ /**
+ * @brief global draw event distributor
+ * This is called by the user interface to draw the tooltip after everything else.
+ * */
+ static void event_draw_global();
+
+ /**
+ * @brief the tooltip that is currently visible, nullptr if no tooltip is currently shown
+ *
+ * */
+ static inline Tooltip *global()
+ {
+ return tooltip_global;
+ }
+
+ protected:
+ /**
+ * @brief draw the tooltip
+ */
+ virtual void draw();
+
+ /**
+ * @brief draw the tooltip background
+ */
+ virtual void draw_background();
+
+ private:
+
+ static Tooltip *tooltip_global;
+};
+
+}
+
+#endif // __INCLUDED_UI_TOOLTIP_H__