Mercurial > octave-nkf
view libgui/qterminal/libqterminal/QTerminal.cc @ 19724:bd1369a2a651
add extra action for interrupting with Ctrl-C (bug #44204)
* QTerminal.cc (notice_settings): check if copy-shortcut is Ctrl-C and set flag
for slots and enable/disable new interrupt-action accordingly
* QTerminal.h: new function setting flag (purely virtual);
(constructor): new interrupt-action with shortcut Ctrl-C
* QUnixTerminalImpl.cpp (copyClipboard): call internal function with flag;
(has_extra_interrupt): new function for setting flag for copy-/interrupt-
slots
* QUnixTerminalImpl.h new flag for slots and function setting flag
* TerminalView.cpp (copyClipboard): gets flag as parameter, only interrupts
if Ctrl-C is shortcut for copy
* TerminalView.h: copyClipboard with boolean parameter
* QWinTerminalImpl.cpp (copyClipboard): only interrupts if Ctrl-C is shortcut
for copy;
(has_extra_interrupt): function for setting flag for copy-/interrupts-slots
* QWinTerminalImpl.h: new flag and function setting the flag
author | Torsten <ttl@justmail.de> |
---|---|
date | Mon, 09 Feb 2015 09:56:25 +0100 |
parents | 6113e0c6920b |
children | 4197fc428c7d |
line wrap: on
line source
/* Copyright (C) 2012-2013 Michael Goffioul. Copyright (C) 2012-2013 Jacob Dawid. This file is part of QTerminal. This program 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. This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */ #include "QTerminal.h" #if defined (Q_OS_WIN32) # include "win32/QWinTerminalImpl.h" #else # include "unix/QUnixTerminalImpl.h" #endif QTerminal * QTerminal::create (QWidget *xparent) { #if defined (Q_OS_WIN32) return new QWinTerminalImpl (xparent); #else return new QUnixTerminalImpl (xparent); #endif } QList<QColor> QTerminal::default_colors (void) { static QList<QColor> colors; if (colors.isEmpty ()) { colors << QColor(0,0,0) << QColor(255,255,255) << QColor(192,192,192) << QColor(128,128,128); } return colors; } QStringList QTerminal::color_names (void) { static QStringList names; if (names.isEmpty ()) { names << QObject::tr ("foreground") << QObject::tr ("background") << QObject::tr ("selection") << QObject::tr ("cursor"); } return names; } void QTerminal::notice_settings (const QSettings *settings) { // QSettings pointer is checked before emitting. // Set terminal font: QFont term_font = QFont (); term_font.setStyleHint (QFont::TypeWriter); term_font.setFamily (settings->value ("terminal/fontName", "Courier New").toString ()); term_font.setPointSize (settings->value ("terminal/fontSize", 10).toInt ()); setTerminalFont (term_font); QString cursorType = settings->value ("terminal/cursorType", "ibeam").toString (); bool cursorBlinking = settings->value ("terminal/cursorBlinking", true).toBool (); if (cursorType == "ibeam") setCursorType (QTerminal::IBeamCursor, cursorBlinking); else if (cursorType == "block") setCursorType (QTerminal::BlockCursor, cursorBlinking); else if (cursorType == "underline") setCursorType (QTerminal::UnderlineCursor, cursorBlinking); bool cursorUseForegroundColor = settings->value ("terminal/cursorUseForegroundColor", true).toBool (); QList<QColor> colors = default_colors (); setForegroundColor (settings->value ("terminal/color_f", QVariant (colors.at (0))).value<QColor> ()); setBackgroundColor (settings->value ("terminal/color_b", QVariant (colors.at (1))).value<QColor> ()); setSelectionColor (settings->value ("terminal/color_s", QVariant (colors.at (2))).value<QColor> ()); setCursorColor (cursorUseForegroundColor, settings->value ("terminal/color_c", QVariant (colors.at (3))).value<QColor> ()); setScrollBufferSize (settings->value ("terminal/history_buffer",1000).toInt () ); // check whether Copy shoretcut is Ctrl-C int set = settings->value ("shortcuts/set",0).toInt (); QKeySequence copy; QString key = QString ("shortcuts/main_edit:copy"); if (set) key.append ("_1"); // if second set is active copy = QKeySequence (settings->value (key).toString ()); // the copy shortcut // dis- or enable extra interrupt action QKeySequence ctrl; ctrl = Qt::ControlModifier; bool extra_ir_action = (copy != QKeySequence (ctrl + Qt::Key_C)); _interrupt_action->setEnabled (extra_ir_action); has_extra_interrupt (extra_ir_action); }