/* client/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_CLIENT_CONSOLE_H__ #define __INCLUDED_CLIENT_CONSOLE_H__ #include "sys/consoleinterface.h" #include "ui/inputbox.h" #include "ui/scrollpane.h" #include "ui/window.h" namespace client { /* -- 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 ui::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 ui::Text history; ui::Text::reverse_iterator history_pos; // console widget ui::InputBox *console_input; ui::ScrollPane *console_scrollpane; // console buffer static ConsoleBuffer con_buffer; }; } #endif // __INCLUDED_CLIENT_CONSOLE_H__