# HG changeset patch # User John W. Eaton # Date 1368386594 14400 # Node ID ba808cd9d86cdb03e46de36117a9a50297436408 # Parent 3c2e457eeb72988e3559539956297611e97ba3c7 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. diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/qterminal-module.mk --- a/libgui/qterminal-module.mk Sat May 11 18:20:31 2013 +0200 +++ b/libgui/qterminal-module.mk Sun May 12 15:23:14 2013 -0400 @@ -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) diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/qterminal/libqterminal/QTerminal.cc --- a/libgui/qterminal/libqterminal/QTerminal.cc Sat May 11 18:20:31 2013 +0200 +++ b/libgui/qterminal/libqterminal/QTerminal.cc Sun May 12 15:23:14 2013 -0400 @@ -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 (); diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/qterminal/libqterminal/QTerminal.h --- a/libgui/qterminal/libqterminal/QTerminal.h Sat May 11 18:20:31 2013 +0200 +++ b/libgui/qterminal/libqterminal/QTerminal.h Sun May 12 15:23:14 2013 -0400 @@ -25,33 +25,86 @@ #include #include +#include +#include +#include -#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 diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/qterminal/libqterminal/QTerminalInterface.h --- a/libgui/qterminal/libqterminal/QTerminalInterface.h Sat May 11 18:20:31 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 . - -*/ - -#ifndef QTERMINALINTERFACE_H -#define QTERMINALINTERFACE_H - -#include -#include -#include - -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 diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp --- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp Sat May 11 18:20:31 2013 +0200 +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp Sun May 12 15:23:14 2013 -0400 @@ -25,7 +25,7 @@ #include QUnixTerminalImpl::QUnixTerminalImpl(QWidget *parent) - : QTerminalInterface(parent) { + : QTerminal(parent) { setMinimumSize(300, 200); initialize(); } diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h --- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h Sat May 11 18:20:31 2013 +0200 +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h Sun May 12 15:23:14 2013 -0400 @@ -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 diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp --- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Sat May 11 18:20:31 2013 +0200 +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Sun May 12 15:23:14 2013 -0400 @@ -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)) { } diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h --- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h Sat May 11 18:20:31 2013 +0200 +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h Sun May 12 15:23:14 2013 -0400 @@ -23,7 +23,7 @@ #define __QConsole_h__ 1 #include -#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; diff -r 3c2e457eeb72 -r ba808cd9d86c libgui/src/terminal-dock-widget.cc --- a/libgui/src/terminal-dock-widget.cc Sat May 11 18:20:31 2013 +0200 +++ b/libgui/src/terminal-dock-widget.cc Sun May 12 15:23:14 2013 -0400 @@ -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);