/* 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/scrollpane.h" #include "ui/window.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(); /// handle keypress events virtual bool on_keypress(const int key, const unsigned int modifier); private: // input history Text history; Text::reverse_iterator history_pos; // console widget InputBox *console_input; ScrollPane *console_scrollpane; // console buffer static ConsoleBuffer con_buffer; }; } #endif // __INCLUDED_UI_CONSOLE_H__