view libgui/qterminal/libqterminal/QTerminalInterface.h @ 16620:818eef7b2618

allow terminal colors to be set from preferences dialog * QTerminalInterface.h (QTerminalInterface::setBackgroundColor, QTerminalInterface::setForeroundColor, QTerminalInterface::setSelectionColor, QTerminalInterface::setCursorColor): New functions. * QUnixTerminalImpl.h, QUnixTerminalImpl.cpp QUnixTerminalImpl::setBackgroundColor, QUnixTerminalImpl::setForeroundColor, QUnixTerminalImpl::setSelectionColor, QUnixTerminalImpl::setCursorColor): New functions. * QWinTerminalImpl.h, QWinTerminalImpl.cpp (QConsolePrivate::setCursorColor): New argument, useForegroundColor. (QConsolePrivate::m_selectionColor, QConsolePrivate::m_cursorColor): New member variablebs. (QConsolePrivate::selectionColor, QConsolePrivate::cursorColor, QConsolePrivate::setSelectionColor, QConsolePrivate::setCursorColor): Use member variables instead of Windows console color map. (QConsolePrivate::cursorColor): Return foreground color if stored color is invalid. (QConsolePrivate::setCursorColor): Store invalid color if useForegroundcolor. (QConsolePrivate::QConsolePrivate): Set default selection and cursor colors. * QTerminal.cc (QTerminal::notice_settings): Handle terminal color settings. * resource-manager.h, resource-manager.cc (resource_manager::terminal_color_names, resource_manager::terminal_default_colors, resource_manager::terminal_color_chars): New functions. * settings-dialog.h, settings-dialog.cc (settings_dialog::read_terminal_colors): New function. (settings_dialog::settings_dialog): Call read_terminal_colors. Read valud for using foreground color for cursor color. (settings_dialog::write_terminal_colors): New function. (settings_dialog::write_changed_settings): Call write_terminal_colors. Handle setting for using foreground color for cursor color. * settings-dialog.ui: Add color selection to terminal settings dialog.
author John W. Eaton <jwe@octave.org>
date Mon, 06 May 2013 06:00:44 -0400
parents 9cd14e53e906
children
line wrap: on
line source

/*

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