Mercurial > octave
view libgui/src/command-widget.h @ 31080:56ee6a223c51
use QScintilla instead of QTextEdit for new terminal widget
* command-widget.cc (ctor): pass qobj to console;
(insert_interpreter_output): just append output message to console text;
(console::console): initialize QScintilla, remove obsolete document;
(console::new_command_line): append new line, add prompt, remember current
cursor pos for later use, append possibly given command string;
(console::accept_command_line): just get last line, and append a new line;
(console::append_block): removed;
(console::append_string): new function appending a string and moving
cursor to the end;
(console::keyPressEvent): process QsciScintilla::keyPressEvent
* command-widget.h: include Qsci/qsciscintilla.h, console inherits from
QsciScintilla and gets oct_qobj for later use, new function
append_string, new class variable m_command_position for storing
the begin of the active command line
author | Torsten Lilge <ttl-octave@mailbox.org> |
---|---|
date | Tue, 07 Jun 2022 23:03:11 +0200 |
parents | 0b402f523f09 |
children | b818d4ec035e |
line wrap: on
line source
//////////////////////////////////////////////////////////////////////// // // Copyright (C) 2021-2022 The Octave Project Developers // // See the file COPYRIGHT.md in the top-level directory of this // distribution or <https://octave.org/copyright/>. // // This file is part of Octave. // // Octave is free software: you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Octave is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Octave; see the file COPYING. If not, see // <https://www.gnu.org/licenses/>. // //////////////////////////////////////////////////////////////////////// #if ! defined (octave_command_widget_h) #define octave_command_widget_h 1 #include <QWidget> #include <Qsci/qsciscintilla.h> #include "octave-qobject.h" #include "gui-settings.h" class QsciScintilla; namespace octave { class base_qobject; class command_widget; class console : public QsciScintilla { Q_OBJECT public: console (command_widget *p, base_qobject& oct_qobj); public slots: void new_command_line (const QString& command = QString ()); void execute_command (const QString& command); protected: void keyPressEvent (QKeyEvent *e); private: void append_string (const QString& string); void accept_command_line (void); int m_command_position; command_widget *m_command_widget; QTextDocument *m_document; }; class command_widget : public QWidget { Q_OBJECT public: command_widget (base_qobject& oct_qobj, QWidget *p); console * get_console ( ) { return m_console; }; void init_command_prompt (); QString prompt (void); signals: void clear_line_edit (void); void interpreter_pause (void); void interpreter_resume (void); void interpreter_stop (void); void interpreter_event (const fcn_callback& fcn); void interpreter_event (const meth_callback& meth); void new_command_line_signal (const QString& command = QString ()); public slots: void process_input_line (const QString& input_line); void update_prompt (const QString& prompt); void insert_interpreter_output (const QString& msg); void notice_settings (const gui_settings *settings); private: bool m_incomplete_parse; QString m_prompt; console *m_console; }; } #endif