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	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)
 
--- 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 ();
--- 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 <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
--- 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 <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	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 <termios.h>
 
 QUnixTerminalImpl::QUnixTerminalImpl(QWidget *parent)
-    : QTerminalInterface(parent) {
+    : QTerminal(parent) {
     setMinimumSize(300, 200);
     initialize();
 }
--- 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
 
--- 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))
 {
 }
 
--- 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 <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	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);