Mercurial > hg > octave-nkf
changeset 16639:ba808cd9d86c
simplify QTerminal inheritance scheme
* Qterminal.h, Qterminal.cc: Merge QTerminalInterface class into
QTerminal.
(QTerminal::create): New function.
(QTerminal::Qterminal): Now protected.
* QUnixTerminal.h, QUnixTerminal.cpp, QWinTerminal.h,
QWinTerminal.cpp: Derive from QTerminal, not QTerminalInterface.
* QTerminalInterface.h: Delete.
* libgui/qterminal-module.mk: Update file lists.
* terminal-dock-widget.cc
(terminal_dock_widget::terminal_dock_widget): Use QTerminal::create to
create terminal object.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Sun, 12 May 2013 15:23:14 -0400 |
parents | 3c2e457eeb72 |
children | 0ee7b4d1b940 |
files | libgui/qterminal-module.mk libgui/qterminal/libqterminal/QTerminal.cc libgui/qterminal/libqterminal/QTerminal.h libgui/qterminal/libqterminal/QTerminalInterface.h libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h libgui/src/terminal-dock-widget.cc |
diffstat | 9 files changed, 105 insertions(+), 122 deletions(-) [+] |
line wrap: on
line diff
--- a/libgui/qterminal-module.mk +++ b/libgui/qterminal-module.mk @@ -3,7 +3,6 @@ noinst_HEADERS += \ qterminal/libqterminal/QTerminal.h \ - qterminal/libqterminal/QTerminalInterface.h \ qterminal/libqterminal/win32/QTerminalColors.h \ qterminal/libqterminal/win32/QWinTerminalImpl.h \ qterminal/libqterminal/unix/BlockArray.h \ @@ -28,8 +27,7 @@ qterminal/libqterminal/unix/TerminalView.h qterminal_libqterminal_la_MOC = \ - qterminal/libqterminal/moc-QTerminal.cc \ - qterminal/libqterminal/moc-QTerminalInterface.cc + qterminal/libqterminal/moc-QTerminal.cc nodist_qterminal_libqterminal_la_SOURCES = $(qterminal_libqterminal_la_MOC)
--- a/libgui/qterminal/libqterminal/QTerminal.cc +++ b/libgui/qterminal/libqterminal/QTerminal.cc @@ -22,6 +22,22 @@ #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 +} + void QTerminal::notice_settings (const QSettings *settings) { @@ -36,11 +52,11 @@ QString cursorType = settings->value ("terminal/cursorType","ibeam").toString (); bool cursorBlinking = settings->value ("terminal/cursorBlinking",true).toBool (); if (cursorType == "ibeam") - setCursorType(QTerminalInterface::IBeamCursor, cursorBlinking); + setCursorType(QTerminal::IBeamCursor, cursorBlinking); else if (cursorType == "block") - setCursorType(QTerminalInterface::BlockCursor, cursorBlinking); + setCursorType(QTerminal::BlockCursor, cursorBlinking); else if (cursorType == "underline") - setCursorType(QTerminalInterface::UnderlineCursor, cursorBlinking); + setCursorType(QTerminal::UnderlineCursor, cursorBlinking); bool cursorUseForegroundColor = settings->value ("terminal/cursorUseForegroundColor",true).toBool ();
--- a/libgui/qterminal/libqterminal/QTerminal.h +++ b/libgui/qterminal/libqterminal/QTerminal.h @@ -25,33 +25,86 @@ #include <QSettings> #include <QtGlobal> +#include <QWidget> +#include <QColor> +#include <QMenu> -#ifdef Q_OS_WIN32 - #include "win32/QWinTerminalImpl.h" - class QTerminal : public QWinTerminalImpl +class QTerminal : public QWidget +{ + Q_OBJECT + +public: + + static QTerminal *create (QWidget *xparent = 0); + + virtual ~QTerminal (void) { } + + virtual void setTerminalFont(const QFont& font) = 0; + + virtual void setSize(int h, int v) = 0; + + virtual void sendText(const QString& text) = 0; + + enum CursorType { - Q_OBJECT - public: - QTerminal(QWidget *xparent = 0) - : QWinTerminalImpl(xparent) { } - ~QTerminal() { } - - public slots: - void notice_settings (const QSettings *settings); + UnderlineCursor, + BlockCursor, + IBeamCursor }; -#else - #include "unix/QUnixTerminalImpl.h" - class QTerminal : public QUnixTerminalImpl - { - Q_OBJECT - public: - QTerminal(QWidget *xparent = 0) - : QUnixTerminalImpl(xparent) { } - ~QTerminal() { } + + virtual void setCursorType (CursorType type, bool blinking) + { + // Provide empty default impl in order to avoid conflicts with the + // win impl. + + Q_UNUSED (type); + Q_UNUSED (blinking); + } + + virtual void setBackgroundColor (const QColor& color) = 0; + + virtual void setForegroundColor (const QColor& color) = 0; + + virtual void setSelectionColor (const QColor& color) = 0; + + virtual void setCursorColor (bool useForegroundColor, + const QColor& color) = 0; + +public slots: + + virtual void copyClipboard (void) = 0; + + virtual void pasteClipboard (void) = 0; - public slots: - void notice_settings (const QSettings *settings); - }; -#endif + virtual void handleCustomContextMenuRequested (const QPoint& at) + { + _contextMenu->move (mapToGlobal (at)); + _contextMenu->show (); + } + + void notice_settings (const QSettings *settings); + +protected: + + QTerminal (QWidget *xparent = 0) : QWidget (xparent) + { + connect (this, SIGNAL (customContextMenuRequested (QPoint)), + this, SLOT (handleCustomContextMenuRequested (QPoint))); + + setContextMenuPolicy (Qt::CustomContextMenu); + + _contextMenu = new QMenu (this); + + QAction *copyAction = _contextMenu->addAction ("Copy"); + QAction *pasteAction = _contextMenu->addAction ("Paste"); + + connect (copyAction, SIGNAL (triggered()), this, SLOT (copyClipboard())); + connect (pasteAction, SIGNAL (triggered()), this, SLOT (pasteClipboard())); + } + +private: + + QMenu *_contextMenu; +}; #endif // QTERMINAL_H
deleted file mode 100644 --- a/libgui/qterminal/libqterminal/QTerminalInterface.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - -Copyright (C) 2012 Michael Goffioul. -Copyright (C) 2012 Jacob Dawid. - -This file is part of QTerminal. - -Foobar 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. - -QTerminal 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 Foobar. If not, see <http://www.gnu.org/licenses/>. - -*/ - -#ifndef QTERMINALINTERFACE_H -#define QTERMINALINTERFACE_H - -#include <QWidget> -#include <QColor> -#include <QMenu> - -class QTerminalInterface : public QWidget -{ - Q_OBJECT -public: - QTerminalInterface(QWidget *xparent = 0) : QWidget(xparent) { - connect (this, SIGNAL(customContextMenuRequested(QPoint)), - this, SLOT(handleCustomContextMenuRequested(QPoint))); - - setContextMenuPolicy (Qt::CustomContextMenu); - - _contextMenu = new QMenu (this); - QAction *copyAction = _contextMenu->addAction ("Copy"); - QAction *pasteAction = _contextMenu->addAction ("Paste"); - - connect (copyAction, SIGNAL (triggered()), this, SLOT (copyClipboard())); - connect (pasteAction, SIGNAL (triggered()), this, SLOT (pasteClipboard())); - } - virtual ~QTerminalInterface() { } - - virtual void setTerminalFont(const QFont& font) = 0; - virtual void setSize(int h, int v) = 0; - virtual void sendText(const QString& text) = 0; - - enum CursorType { - UnderlineCursor, - BlockCursor, - IBeamCursor - }; - - virtual void setCursorType(CursorType type, bool blinking) { - // Provide empty default impl in order to avoid conflicts with the win impl. - Q_UNUSED(type); - Q_UNUSED(blinking); - } - - virtual void setBackgroundColor (const QColor& color) = 0; - virtual void setForegroundColor (const QColor& color) = 0; - virtual void setSelectionColor (const QColor& color) = 0; - virtual void setCursorColor (bool useForegroundColor, - const QColor& color) = 0; - - public slots: - virtual void copyClipboard() = 0; - virtual void pasteClipboard() = 0; - - virtual void handleCustomContextMenuRequested(QPoint at) { - _contextMenu->move (mapToGlobal(at)); - _contextMenu->show (); - } - -private: - QMenu *_contextMenu; -}; - -#endif // QTERMINALINTERFACE_H
--- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp @@ -25,7 +25,7 @@ #include <termios.h> QUnixTerminalImpl::QUnixTerminalImpl(QWidget *parent) - : QTerminalInterface(parent) { + : QTerminal(parent) { setMinimumSize(300, 200); initialize(); }
--- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h @@ -25,9 +25,9 @@ #include "unix/kpty.h" #include "unix/TerminalModel.h" #include "unix/TerminalView.h" -#include "QTerminalInterface.h" +#include "QTerminal.h" -class QUnixTerminalImpl : public QTerminalInterface +class QUnixTerminalImpl : public QTerminal { Q_OBJECT
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp @@ -1157,14 +1157,14 @@ ////////////////////////////////////////////////////////////////////////////// QWinTerminalImpl::QWinTerminalImpl (QWidget* parent) - : QTerminalInterface (parent), d (new QConsolePrivate (this)) + : QTerminal (parent), d (new QConsolePrivate (this)) { } ////////////////////////////////////////////////////////////////////////////// QWinTerminalImpl::QWinTerminalImpl (const QString& cmd, QWidget* parent) - : QTerminalInterface (parent), d (new QConsolePrivate (this, cmd)) + : QTerminal (parent), d (new QConsolePrivate (this, cmd)) { }
--- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h @@ -23,7 +23,7 @@ #define __QConsole_h__ 1 #include <QWidget> -#include "QTerminalInterface.h" +#include "QTerminal.h" class QFocusEvent; class QKeyEvent; class QPainter; @@ -38,7 +38,7 @@ ////////////////////////////////////////////////////////////////////////////// -class QWinTerminalImpl : public QTerminalInterface +class QWinTerminalImpl : public QTerminal { Q_OBJECT friend class QConsolePrivate;
--- a/libgui/src/terminal-dock-widget.cc +++ b/libgui/src/terminal-dock-widget.cc @@ -28,7 +28,7 @@ #include "terminal-dock-widget.h" terminal_dock_widget::terminal_dock_widget (QWidget *p) - : octave_dock_widget (p), terminal (new QTerminal (p)) + : octave_dock_widget (p), terminal (QTerminal::create (p)) { terminal->setObjectName ("OctaveTerminal"); terminal->setFocusPolicy (Qt::StrongFocus);