/* ui/console.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_CONSOLE_H__ #define __INCLUDED_UI_CONSOLE_H__ #include "sys/consoleinterface.h" #include "ui/inputbox.h" #include "ui/scrollbar.h" #include "ui/scrollpane.h" #include "ui/window.h" #include "ui/label.h" namespace ui { /* -- class ConsoleBuffer ------------------------------------------ */ /// client console buffer /** stores incoming console messages */ class ConsoleBuffer : public sys::ConsoleInterface { public: ConsoleBuffer(); virtual ~ConsoleBuffer(); }; /* -- class Console ------------------------------------------------ */ /// client system console widget class Console : public Window { public: Console(Widget *parent); virtual ~Console(); /// load input history void load_history(); /// save input history void save_history(); /// show console virtual void show(); /// hide console virtual void hide(); void toggle(); protected: /// draw the client console virtual void draw(); /// resize event handler virtual void resize(); /// handle keypress events virtual bool on_keypress(const int key, const unsigned int modifier); /// handle mousewheel events virtual bool on_mousewheel(const math::Vector2f & direction); /// handle emit events virtual bool on_emit(Widget *sender, const Event event, void *data); private: // input history Text history; Text::reverse_iterator history_pos; // console widget InputBox *console_input; ScrollBar *console_scrollbar; ScrollPane *console_scrollpane; Label *console_versionlabel; // console buffer static ConsoleBuffer con_buffer; }; } #endif // __INCLUDED_UI_CONSOLE_H__