/* ui/ui.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_H__ #define __INCLUDED_UI_H__ #include "ui/palette.h" #include "ui/widget.h" #include "ui/window.h" namespace ui { class UI : public Window { public: /// constructor UI(); /// destructor ~UI(); /// list widgets void list(); /// list meus void list_menus(); /// reload menu files void load(); /// make a window the active window void show_window(char const *label); /// hide the active window void hide_window(); /// return the active window Window *active() { return ui_active_window; } /// handle mouse cursor virtual void event_mousecursor(float x, float y); /// handle keyboard input virtual void event_keypress(unsigned int key, unsigned int modifier); virtual void event_keyrelease(unsigned int key, unsigned int modifier); /// run a user interface frame void frame(); /// return the widget that has the focus inline Widget *focus() { return ui_focus; } protected: virtual void add_window(Window *window); virtual void remove_window(Window *window); private: Window *ui_active_window; Widget *ui_focus; math::Vector2f mouse_cursor; }; /// initialize the user interface void init(); /// shutdown the user interface void shutdown(); /// the global root window UI *root(); } #endif // __INCLUDED_UI_H__