X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FLineEditor.hh;h=0360cd9c5d26fb7f721d3862c385e0db0f8e418f;hb=c5d0e492a701a054b1f3d56e128b2c4675b0d50b;hp=840ce5a0c71d1a414bdb145903a745ecd8980a7c;hpb=368058ef8f5eb65ea7e210351af25f49ddd0f342;p=senf.git diff --git a/Utils/Console/LineEditor.hh b/Utils/Console/LineEditor.hh index 840ce5a..0360cd9 100644 --- a/Utils/Console/LineEditor.hh +++ b/Utils/Console/LineEditor.hh @@ -39,6 +39,15 @@ namespace senf { namespace console { namespace detail { + /** \brief Internal: Client reader switching between LineEditorClientReader or DumbClientReader + + This ClientReader implementation will try to initialize a LineEditorClientReader. If the + setup fails, a DumbClientReader is initialized instead. LineEditor support may fail to be + initialized if + + \li The telnet client does not support necessary functionality + \li or the terminal type of the client is missing some functionality. + */ class LineEditorSwitcher : public ClientReader { @@ -51,10 +60,15 @@ namespace detail { virtual void v_disablePrompt(); virtual void v_enablePrompt(); virtual void v_write(std::string const & data); + virtual unsigned v_width() const; boost::scoped_ptr reader_; }; + /** \brief Internal: ClientReader using senf::term::LineEditor for interactive input + + This ClientReader implementation uses a senf::term::LineEditor for interactive input. + */ class LineEditorClientReader : public ClientReader, public term::TelnetTerminal { @@ -70,13 +84,17 @@ namespace detail { virtual void v_disablePrompt(); virtual void v_enablePrompt(); virtual void v_write(std::string const & data); + virtual unsigned v_width() const; // Editor callbacks void executeLine(std::string const & text); void deleteCharOrExit(term::LineEditor & editor); + void completePath(term::LineEditor & editor, unsigned & b, unsigned & e, + std::string & prefix, std::vector & completions); term::LineEditor editor_; LineEditorSwitcher * switcher_; + std::string default_; }; }}}