/* 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/font.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(const char *label); /// hide the active window void hide_window(); /// return the active window Window *active() { return ui_active_window; } /// handle mouse cursor void event_mousemove(float x, float y); /// handle keyboard input void event_keypress(unsigned int key, unsigned int modifier); 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: Window *find_window(const char *label); virtual void add_window(Window *window); virtual void remove_window(Window *window); private: Palette *ui_palette; Font *ui_font_small; Font *ui_font_medium; Font *ui_font_large; 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__