view gui-main.h @ 8:7c4b04a6346d

clean up include files in gui-main.h
author John W. Eaton <jwe@octave.org>
date Thu, 23 May 2019 11:26:44 -0400
parents 04867eba6428
children 822a2fe5bb51
line wrap: on
line source

#if ! defined (calc_gui_main_h)
#define calc_gui_main_h 1

#include <string>

#include <QTextDocument>
#include <QTextEdit>

#include "qt-interpreter.h"

namespace gui
{
  class command_window : public QTextEdit
  {
    Q_OBJECT

  public:

    command_window (QWidget *p = nullptr);

    virtual ~command_window (void) = default;

    // Accept an input line, parse and possibly execute it.

    void accept_line (const std::string& line);

    // 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 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;
  };

  extern int main (int argc, char **argv);
}

#endif