Mercurial > octave
changeset 29525:d6b2d9f9e1e0
use terminal settings for the experimental command widget
* QTerminal.cc (construct): do not connect settings signal here
* command-widget.cc: include gui-preferences-cs.h, gui-preferences-global.h,
and gui-utils.h;
(command_widget): initialize class variable for input color, move input
widget to the bottom, line edit gets focus proxy;
(accept_input_line): style input and output text,
(notice_settings): new function for reading terminal font and colors
from the settings file
* command-widget.h: include gui-settings.h, new slot notice:settings,
new class variable for the input color
* terminal-dock-widget.cc (terminal_dock_widget): connect main windows
settings signal with the related slot in QTerminal or command_widget
author | Torsten Lilge <ttl-octave@mailbox.org> |
---|---|
date | Mon, 12 Apr 2021 23:03:11 +0200 |
parents | 730cac3d6d5a |
children | b65824235c7f |
files | libgui/qterminal/libqterminal/QTerminal.cc libgui/src/command-widget.cc libgui/src/command-widget.h libgui/src/terminal-dock-widget.cc |
diffstat | 4 files changed, 55 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/qterminal/libqterminal/QTerminal.cc Sun Apr 11 19:22:31 2021 +0200 +++ b/libgui/qterminal/libqterminal/QTerminal.cc Mon Apr 12 23:03:11 2021 +0200 @@ -335,9 +335,6 @@ connect (this, SIGNAL (execute_command_in_terminal_signal (const QString&)), xparent, SLOT (execute_command_in_terminal (const QString&))); - connect (xparent, SIGNAL (settings_changed (const gui_settings *)), - this, SLOT (notice_settings (const gui_settings *))); - connect (xparent, SIGNAL (init_terminal_size_signal ()), this, SLOT (init_terminal_size ()));
--- a/libgui/src/command-widget.cc Sun Apr 11 19:22:31 2021 +0200 +++ b/libgui/src/command-widget.cc Mon Apr 12 23:03:11 2021 +0200 @@ -39,6 +39,9 @@ #include "cmd-edit.h" #include "event-manager.h" +#include "gui-preferences-cs.h" +#include "gui-preferences-global.h" +#include "gui-utils.h" #include "input.h" #include "interpreter.h" @@ -51,7 +54,8 @@ : QWidget (p), m_incomplete_parse (false), m_prompt (new QLabel ("", this)), m_line_edit (new QLineEdit (this)), - m_output_display (new QTextBrowser (this)) + m_output_display (new QTextBrowser (this)), + m_input_color (QColor ()) { QPushButton *pause_button = new QPushButton (tr("Pause"), this); QPushButton *stop_button = new QPushButton (tr("Stop"), this); @@ -72,11 +76,13 @@ output_group_box->setLayout (output_layout); QVBoxLayout *main_layout = new QVBoxLayout (); + main_layout->addWidget (output_group_box); main_layout->addWidget (input_group_box); - main_layout->addWidget (output_group_box); setLayout (main_layout); + setFocusProxy (m_line_edit); + connect (m_line_edit, SIGNAL (returnPressed (void)), this, SLOT (accept_input_line (void))); @@ -114,12 +120,16 @@ QString input_line = m_line_edit->text (); + QString style; if (! m_incomplete_parse) - cursor.insertHtml ("<b>[in]:</b> "); - cursor.insertText (input_line); - cursor.insertHtml ("<br>"); - - m_output_display->setTextCursor (cursor); + { + style = QString ("<div style=\"color:%1; font-weight:bold;\">[in]:</div> ") + .arg (m_input_color.name ()); + m_output_display->insertHtml (style); + } + style = QString ("<div style=\"color:%1\">%2</div><br>\n") + .arg (m_input_color.name ()).arg (input_line); + m_output_display->insertHtml (style); emit interpreter_event ([=] (interpreter& interp) @@ -140,4 +150,32 @@ emit clear_line_edit (); } + + void command_widget::notice_settings (const gui_settings *settings) + { + // Set terminal font: + QFont term_font = QFont (); + term_font.setStyleHint (QFont::TypeWriter); + QString default_font = settings->value (global_mono_font).toString (); + term_font.setFamily + (settings->value (cs_font.key, default_font).toString ()); + term_font.setPointSize + (settings->value (cs_font_size).toInt ()); + + m_line_edit->setFont (term_font); + m_output_display->setFont (term_font); + + // Colors + int mode = settings->value (cs_color_mode).toInt (); + QColor fgc = settings->color_value (cs_colors[0], mode); + QColor bgc = settings->color_value (cs_colors[1], mode); + + m_output_display->setStyleSheet (QString ("color: %1; background-color:%2;") + .arg (fgc.name ()).arg (bgc.name ())); + m_line_edit->setStyleSheet (QString ("color: %1; background-color:%2;") + .arg (fgc.name ()).arg (bgc.name ())); + + m_input_color = interpolate_color (fgc, bgc, 0.75, 0.5); + } + }
--- a/libgui/src/command-widget.h Sun Apr 11 19:22:31 2021 +0200 +++ b/libgui/src/command-widget.h Mon Apr 12 23:03:11 2021 +0200 @@ -29,6 +29,7 @@ #include <QWidget> #include "octave-qobject.h" +#include "gui-settings.h" class QLabel; class QLineEdit; @@ -54,6 +55,10 @@ void interpreter_event (const fcn_callback& fcn); void interpreter_event (const meth_callback& meth); + public slots: + + void notice_settings (const gui_settings *settings); + protected slots: void accept_input_line (void); @@ -66,6 +71,7 @@ QLabel *m_prompt; QLineEdit *m_line_edit; QTextBrowser *m_output_display; + QColor m_input_color; }; }
--- a/libgui/src/terminal-dock-widget.cc Sun Apr 11 19:22:31 2021 +0200 +++ b/libgui/src/terminal-dock-widget.cc Mon Apr 12 23:03:11 2021 +0200 @@ -64,6 +64,9 @@ setWidget (m_terminal); setFocusProxy (m_terminal); + connect (p, SIGNAL (settings_changed (const gui_settings *)), + m_terminal, SLOT (notice_settings (const gui_settings *))); + if (m_experimental_terminal_widget) { // Any interpreter_event signal from the terminal widget is @@ -131,4 +134,5 @@ if (m_experimental_terminal_widget) emit update_prompt_signal (prompt); } + }