view libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h @ 19303:c6615ca0a11d gui-release

horizontal scrollbar for GUI terminal on Windows systems * QTerminal.h (QTerminal::init_terminal_size): New public virtual slot. (QTerminal::QTerminal): Connect main_window::init_terminal_size_signal to QTerminal::init_terminal_size slot. * QWinTerminalImpl.h, QWinTerminalImpl.cc (QConsolePrivate::updateConsoleSize): New parameter allow_smaller_width. Call updateHorizontalScrollBar and updateVerticalScrollBar instead of updateScrollBar. (QConsolePrivate::updateVerticalScrollBar): Rename from QConsolePrivate::updateScrollBar. Change all uses. (QConsolePrivate::setVerticalScrollValue): Rename from QConsolePrivate::setScrollValue. Change all uses. (QConsolePrivate::m_verticalScrollBar): Rename from QConsolePrivate::m_scrollBar. Change all uses. (QConsolePrivate::m_horizontalScrollBar): New data member. (QConsolePrivate::updateHorizontalScrollBar, QConsolePrivate::setHorizontalScrollValue): New functions. (QConsolePrivate::QConsolePrivate): Create horizontal scroll bar. Call updateHorizontalScrollBar and updateVerticalScrollBar instead of updateScrollBar. Connect signal for horizontal scrolling. (QConsolePrivate::selectWord, QConsolePrivate::drawSelection): Handle horizontal offset. (QWinTerminalImpl::init_terminal_size): New slot. (QWinTerminalImpl::verticalScrollValueChanged): Rename from QWinTerminalImpl::scrollValueChanged. (QWinTerminalImpl::horizontalScrollValueChanged): New slot. * main-window.h, main-window.cc (main_window::init_terminal_size): New slot. (main_window::init_terminal_size_signal): New signal.
author John W. Eaton <jwe@octave.org>
date Thu, 30 Oct 2014 13:38:02 -0400
parents 37159a873c96
children bd1369a2a651
line wrap: on
line source

/*

Copyright (C) 2011, 2013 Michael Goffioul.

This file is part of QConsole.

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/>.

*/

#ifndef __QConsole_h__
#define __QConsole_h__ 1

#include <QWidget>
#include "QTerminal.h"
class QFocusEvent;
class QKeyEvent;
class QPainter;
class QPaintEvent;
class QResizeEvent;
class QWheelEvent;
class QPoint;
class QDragEnterEvent;
class QDropEvent;

class QConsolePrivate;
class QConsoleThread;
class QConsoleView;

//////////////////////////////////////////////////////////////////////////////

class QWinTerminalImpl : public QTerminal
{
  Q_OBJECT
  friend class QConsolePrivate;
  friend class QConsoleThread;
  friend class QConsoleView;

public:
  QWinTerminalImpl (QWidget* parent = 0);
  QWinTerminalImpl (const QString& cmd, QWidget* parent = 0);
  ~QWinTerminalImpl (void);

  void setTerminalFont (const QFont& font);
  void setSize (int columns, int lines);
  void sendText (const QString& s);
  void setCursorType (CursorType type, bool blinking);

  void setBackgroundColor (const QColor& color);
  void setForegroundColor (const QColor& color);
  void setSelectionColor (const QColor& color);
  void setCursorColor (bool useForegoundColor, const QColor& color);
  void setScrollBufferSize(int value);

  QString selectedText ();

public slots:
  void copyClipboard (void);
  void pasteClipboard (void);
  void selectAll (void);
  void blinkCursorEvent (void);
  void init_terminal_size (void);

signals:
  void terminated (void);
  void titleChanged (const QString&);
  void set_global_shortcuts_signal (bool);
  void set_screen_size_signal (int, int);

protected:
  void viewPaintEvent (QConsoleView*, QPaintEvent*);
  void setBlinkingCursor (bool blink);
  void setBlinkingCursorState (bool blink);
  void viewResizeEvent (QConsoleView*, QResizeEvent*);
  void wheelEvent (QWheelEvent*);
  void focusInEvent (QFocusEvent*);
  void focusOutEvent (QFocusEvent*);
  void keyPressEvent (QKeyEvent*);
  virtual void start (void);
  void mouseMoveEvent (QMouseEvent *event);
  void mousePressEvent (QMouseEvent *event);
  void mouseReleaseEvent (QMouseEvent *event);
  void mouseDoubleClickEvent (QMouseEvent* event);
  void mouseTripleClickEvent (QMouseEvent* event);

  bool eventFilter(QObject *obj, QEvent *ev);

  void dragEnterEvent(QDragEnterEvent *event);
  void dropEvent(QDropEvent *event);

private slots:
  void horizontalScrollValueChanged (int value);
  void verticalScrollValueChanged (int value);
  void monitorConsole (void);
  void updateSelection (void);
  void tripleClickTimeout (void);

private:
  QConsolePrivate* d;
  bool allowTripleClick;
};

//////////////////////////////////////////////////////////////////////////////

#endif // __QConsole_h__