Mercurial > jwe > qt-gui-with-push-parser
view command-window.h @ 11:b652a5528fb1
handle EOF on input; more misc refactoring
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 23 May 2019 13:42:57 -0400 |
parents | 822a2fe5bb51 |
children | 2ddf3fe6fa33 |
line wrap: on
line source
#if ! defined (calc_command_window_h) #define calc_command_window_h 1 #include <string> #include <QTextDocument> #include <QTextEdit> #include "qt-interpreter.h" namespace calc { class command_window : public QTextEdit { Q_OBJECT public: static command_window *the_command_window; command_window (QWidget *p = nullptr); ~command_window (void); // Accept an input line, parse and possibly execute it. void accept_line (const std::string& line); // Handle EOF on input. void eof (void); // Redisplay current command line. void insert_at_end (const std::string& text); void emit_error (const std::string& msg); void emit_result (double value); signals: void input_char_available (int key); void accept_line_signal (const QString& line); void eof_signal (void); void redisplay_signal (void); public slots: void handle_input_char (int key); void handle_error (const QString& msg); void handle_result (double value); void redisplay (void); protected: void keyPressEvent (QKeyEvent *event); int do_arrow_key (int arrow_key); // Retrieve a command from the history list and insert it on the // current command. void history (bool up); void erase_line (void); void insert_at_cursor (const std::string& text); void insert_line (const std::string& prompt, const std::string& line); int set_mark (void); void insert_result (double value); void scroll_to_bottom (void); // Child widgets: QTextDocument *m_buffer; calc::qt_interpreter *m_interpreter; int beg_mark; int prompt_mark; }; } #endif