/* 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; } /// mouse cursor input void input_mouse(float x, float y); /// keyboard input void input_key(bool pressed, unsigned int key, unsigned int modifier); /// run a user interface frame void frame(); /// return the widget which has the focus inline Widget *focus() { return ui_focus; } /* -- Fonts ------------------------------------------------ */ /// default small font inline Font *font_small() { return ui_font_small; } /// default medium font inline Font *font_large() { return ui_font_large; } protected: Window *find_window(const char *label); virtual void add_window(Window *window); virtual void remove_window(Window *window); /// handle keyboard input virtual bool keypress(unsigned int key, unsigned int modifier); virtual bool keyrelease(unsigned int key, unsigned int modifier); private: Palette *ui_palette; Font *ui_font_small; 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__