X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FLineEditor.hh;h=6fe3ea33bb1bbc432739c790cdee1ee7fce70f3a;hb=731a143df4de38d4c8b0a81121990951971cd858;hp=840ce5a0c71d1a414bdb145903a745ecd8980a7c;hpb=368058ef8f5eb65ea7e210351af25f49ddd0f342;p=senf.git diff --git a/Utils/Console/LineEditor.hh b/Utils/Console/LineEditor.hh index 840ce5a..6fe3ea3 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,10 +84,13 @@ 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::vector & completions); term::LineEditor editor_; LineEditorSwitcher * switcher_;