Adding upstream version 0.7.0.

upstream/0.7.0
Alf Gaida 8 years ago
parent c844d2379a
commit 8876f8d930

@ -0,0 +1,184 @@
qtermwidget-0.7.0 / 2016-09-24
==============================
* Bump version to 0.7.0 (#92)
* Add Solarized Color Schemes
* Update README.md
* qtermwidget: Unify title & icon propagation
* lib: Fix FTBFS (struct vs. class mismatch)
* Add 'const' decorators
* Expose titleChanged() signal
* Fix building instructions
* cmake support changes
* Make addCustomColorSchemeDir() static and check for duplicates
* Address review comments
* Allow app to add custom color sheme locations
* Avoid enums duplication
* Add support for setting keyboard cursor shape
* Remove assignment to self
* Backport konsole changes to fix memory leaks
* Remove __FILE__ macros
* Replace assert() with Q_ASSERT()
* Fix ASan error about delete size mismatch
* Add support for GNU/Hurd to kpty.cpp.
* fixes kfreebsd builds on debian and derivatives
* Fix indenations (misleading-indentation warning)
* Remove Q_DECL_OVERRIDE macros
* typo Higlight
* Remove noisy qDebugs
* Bracketed paste mode implementation
* Use function setWorldTranfer for Qpainter instead of setWorldMatrix
* Modify treatment drawing double width character
* pyqt5 bindings
* pyqt5 bindings
* Avoid checking uninitialized member + simplify condition
* Use markdown for README and improve it a bit
* Remove support for Qt <= 5.4
* Remove Designer plugin
* Fix LICENSE text and name
* Remove Changelog
* Remove empty TODO file
* Remove PyQt4 bindings
* Sort out terminal resizing
* Rebase Vt102Emulation to Konsole
* Enable terminal resizing from the emulator
* Clean up trailing whitespaces
* implemented start TTY for external recipient;
* Fix: typo in TerminalDisplay
* add method for get pty slave fd;
* add method for get pty slave fd;
* Use GNUInstallDirs in CMakeLists.txt to stop hardcoding paths
* Set the '_notifiedActivity' flag early
* Also expose signals and slots to pyqt
* Get/set selection end in python bindings
* Avoid calling winId() on Qt5.
* Fix TerminalDisplay::getCharacterPosition for proportional fonts
* Handle proportional fonts a bit better
* Expose more functionality through the python bindings (#23)
* Allow stopping test.py with ctrl-C
* Fix 'getSelectionEnd'
* Make whitespace consistent (tabs->spaces)
* Fix python binding compile errors #23
* Add event to notify the application that the shell application uses mouse.
* Change mouseMarks only when needed. This might be useful if an application wants to be notified of the event.
* Prevents deleting the last line when resizing.
0.6.0 / 2014-10-21
==================
* Release 0.6.0
* Update AUTHORS
* Update INSTALL instructions
* CMakeLists.txt cleanup
* osx: link fixes
* fixed #57 Linux emulation does not seem to support Ctrl+Arrows (warning: I have no clue what I did...)
* Fix Qt4 compilation
* qterminal #64 No drag & drop support
* fixed qterminal #71 qt5 version ignoring page up / down
* Fixed a typo in CMakeLists.txt.
0.5.1 / 2014-07-14
==================
* fixed 'make dist'; version bump
* Url activation & filters #21
* Proxy activity/silence methods to Session in QTermWidget.
* Emit activity() and silence() signals instead of KNotification.
* Support bells.
* Support bells.
* Added QTermWidget::urlActivated(QUrl) signal.
* Emit UrlFilter::activated() instead of QDesktopServices::openUrl().
* Derive Filter from QObject.
* Add UrlFilter.
* Activate link filters on ctrl+click.
* Update filters on resize and screen events.
* Const-correctness for QTermWidget API.
* Load arbitrary schemes by path via setColorScheme().
* ColorSchemeManager::loadCustomColorScheme(const QString& path).
* Unified schemeName() usage.
* fixed #17 lib/ShellCommand.cpp:66: possible =/== mixup
* Delete CMakeLists.txt.user
* new API selectedText()
* new API methods (thanks to William Brumley)
* fixed #11 compile against Qt 5 (Qt4 and Qt5 supported and waguely tested)
* build simplified: qtermwidget is versioned (libqtermwidget4 for Qt4, 5 for Qt5...). Better cmake support.
* fixed broken API for sendText() - const missing
* mail address change
* Current Working Directory for linux. Part of #8. More implementations welcomed...
* Add a method for get working directory in class QTermWidget
* Fix missing cleanup for temporary history files
* a potential improvement for #9 font fractional pixels causes spacing errors
* fix #2 update various documentations for debian packaging
* fix #10 Update FSF address
0.4.0 / 2013-04-16
==================
* readme updated
* Added pasteSelection-slot and corrected two nonsense comments
* qt/embedded doesn't ship with a Monospace font (and it won't use system fonts even if they exist). Using 'fixed' instead works fine
* Without this, the terminal display area will permanently lose focus when consoleq's Find dialog is called up.
* This is only needed when using Qt/E built for DirectFB display. DirectFB blocks SIGINT and some other signals, so any terminal app (be it Qt or otherwise) must call sigprocmask() to unblock them. Without this, ^C doesn't work.
* The control and tab keys don't work in Qt/E. This fixes it, but maybe not in the most elegant way. The trouble seems to be that _codec->fromUnicode(event->text()) doesn't handle control characters in qt-embedded.
* Fix resize label
* Search code cleanup
* Change searchbar background color to red(ish) when no match found
* Fix search, find-next when selection is one character long
* Hotkeys for search: Return->find-next, Shift-Return->find-previous, Escape->hide searchbar
* Added search functionality
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Fix logical error
* Add zoom. Add choice action after paste clipboard
* Add zoom. Add choice action after paste clipboard
* Add Shift+KeyEnd and Shift+KeyHome to go line 0 and line end. No move screenwindow when copy and paste with keyboard
* fix for text drawing in qt>=4.8,x
* constructor for Qt Designer
* test commit
* clear() slot implemented
* fix the scroll at the end again
* The escape key is always needed for terminal programs like vim.
* Add resource files and the appropriate paths to enable bundling of color schemes and keyboard layouts into the actual executable.
* Add a define which will be used to bundle the color schemes and keyboard layouts as resource files with the executable itself instead of putting them on disk.
* scrollToEnd() method provided to trigger 'snapping' the terminal to cursor tracked position (typically the extreme value of the scrollbar, or the 'end') Some signal-fu particular to keyPressEvent(QKeyEvent *) done to make the above usable, no existing dependent implementations should be disturbed by this.
* revert workaround for key on end
* scroll to bottom on input
* scrollToEnd() method provided to trigger 'snapping' the terminal to cursor tracked position (typically the extreme value of the scrollbar, or the 'end') Some signal-fu particular to keyPressEvent(QKeyEvent *) done to make the above usable, no existing dependent implementations should be disturbed by this.
* improved sample app for testing
* macosx compile fix
* arguments work correctly for custom shells too
* lib has to be built first in any case
* merge changes from the experimental "bundle" repository
* fix for kb-layout location on mac (mainly)
* rpm builds
* mac universal build helper
* build cleanup; make dist; various readmes updated
* make availableKeyBindings static
* transparency support
* font display fix on mac (widths in int)
* qt designer plugin
* correct lib ID for mac
* remove the KDE legacy code
* code reformatted after resync
* display stuff synced from konsole again to improve color scheme handling
* focus in/out signals
* correct shell detection (BSD, Christopher VdoP)
* library location on BSD
* patches to build on BSD by Christopher VdoP
* K&R formatting
* K&R formatting
* merge with qscite
* fixed KB finding + sort
* key layouts can be read and provided to widget
* install keyboard bindings; handle KB in src code; allow to get and set KB
* fix for includes and 64bit builds
* port to macosx
* initial import

@ -8,7 +8,7 @@ include(CheckFunctionExists)
option(BUILD_TEST "Build test application. Default OFF." OFF) option(BUILD_TEST "Build test application. Default OFF." OFF)
# just change version for releases # just change version for releases
set(QTERMWIDGET_VERSION_MAJOR "0") set(QTERMWIDGET_VERSION_MAJOR "0")
set(QTERMWIDGET_VERSION_MINOR "6") set(QTERMWIDGET_VERSION_MINOR "7")
set(QTERMWIDGET_VERSION_PATCH "0") set(QTERMWIDGET_VERSION_PATCH "0")
set(QTERMWIDGET_VERSION "${QTERMWIDGET_VERSION_MAJOR}.${QTERMWIDGET_VERSION_MINOR}.${QTERMWIDGET_VERSION_PATCH}") set(QTERMWIDGET_VERSION "${QTERMWIDGET_VERSION_MAJOR}.${QTERMWIDGET_VERSION_MINOR}.${QTERMWIDGET_VERSION_PATCH}")

@ -1,34 +1,28 @@
# QTermWidget # QTermWidget
A terminal emulator widget for Qt 5. ## Overview
QTermWidget is an opensource project originally based on KDE4 Konsole application, A terminal emulator widget for Qt 5.
but it took its own direction later.
The main goal of this project is to provide unicode-enabled, embeddable
Qt widget for using as a built-in console (or terminal emulation widget).
# Installation QTermWidget is an open-source project originally based on KDE4 Konsole application, but it took its own direction later.
The main goal of this project is to provide a unicode-enabled, embeddable Qt widget for using as a built-in console (or terminal emulation widget).
Requirements: It is compatible with BSD, Linux and OS X.
* Qt >= 5.4
* cmake >= 3.0
Supported platforms: This project is licensed under the terms of the [GPLv2](https://www.gnu.org/licenses/gpl-2.0.en.html) or any later version. See the LICENSE file for the full text of the license.
* Linux
* BSD
* OS X
Building ## Installation
1. `mkdir -p build && cd build` ### Compiling sources
2. `cmake <path/to/source>`
3. `make`
Run `make install` to install. The only runtime dependency is qtbase ≥ 5.4.
In order to build CMake ≥ 3.0 is needed as well as optionally Git to pull latest VCS checkouts.
# License Code configuration is handled by CMake. Building out of source is strongly recommended. CMake variable `CMAKE_INSTALL_PREFIX` will normally have to be set to `/usr`, depending on the way library paths are dealt with on 64bit systems variables like `CMAKE_INSTALL_LIBDIR` may have to be set as well.
This project is licensed under the terms of the To build run `make`, to install `make install` which accepts variable `DESTDIR` as usual.
[GPLv2](https://www.gnu.org/licenses/gpl-2.0.en.html) or any later version.
See the LICENSE file for the full text of the license. ### Binary packages
The library is provided by all major Linux distributions like Arch Linux, Debian, Fedora and openSUSE.
Just use the distributions' package managers to search for string `qtermwidget`.

@ -58,6 +58,7 @@ Session::Session(QObject* parent) :
, _autoClose(true) , _autoClose(true)
, _wantedClose(false) , _wantedClose(false)
, _silenceSeconds(10) , _silenceSeconds(10)
, _isTitleChanged(false)
, _addToUtmp(false) // disabled by default because of a bug encountered on certain systems , _addToUtmp(false) // disabled by default because of a bug encountered on certain systems
// which caused Konsole to hang when closing a tab and then opening a new // which caused Konsole to hang when closing a tab and then opening a new
// one. A 'QProcess destroyed while still running' warning was being // one. A 'QProcess destroyed while still running' warning was being
@ -332,6 +333,7 @@ void Session::setUserTitle( int what, const QString & caption )
// (btw: what=0 changes _userTitle and icon, what=1 only icon, what=2 only _nameTitle // (btw: what=0 changes _userTitle and icon, what=1 only icon, what=2 only _nameTitle
if ((what == 0) || (what == 2)) { if ((what == 0) || (what == 2)) {
_isTitleChanged = true;
if ( _userTitle != caption ) { if ( _userTitle != caption ) {
_userTitle = caption; _userTitle = caption;
modified = true; modified = true;
@ -339,6 +341,7 @@ void Session::setUserTitle( int what, const QString & caption )
} }
if ((what == 0) || (what == 1)) { if ((what == 0) || (what == 1)) {
_isTitleChanged = true;
if ( _iconText != caption ) { if ( _iconText != caption ) {
_iconText = caption; _iconText = caption;
modified = true; modified = true;
@ -364,6 +367,7 @@ void Session::setUserTitle( int what, const QString & caption )
} }
if (what == 30) { if (what == 30) {
_isTitleChanged = true;
if ( _nameTitle != caption ) { if ( _nameTitle != caption ) {
setTitle(Session::NameRole,caption); setTitle(Session::NameRole,caption);
return; return;
@ -378,6 +382,7 @@ void Session::setUserTitle( int what, const QString & caption )
// change icon via \033]32;Icon\007 // change icon via \033]32;Icon\007
if (what == 32) { if (what == 32) {
_isTitleChanged = true;
if ( _iconName != caption ) { if ( _iconName != caption ) {
_iconName = caption; _iconName = caption;
@ -681,6 +686,11 @@ QString Session::iconText() const
return _iconText; return _iconText;
} }
bool Session::isTitleChanged() const
{
return _isTitleChanged;
}
void Session::setHistoryType(const HistoryType & hType) void Session::setHistoryType(const HistoryType & hType)
{ {
_emulation->setHistory(hType); _emulation->setHistory(hType);

@ -282,6 +282,9 @@ public:
/** Returns the text of the icon associated with this session. */ /** Returns the text of the icon associated with this session. */
QString iconText() const; QString iconText() const;
/** Flag if the title/icon was changed by user/shell. */
bool isTitleChanged() const;
/** Specifies whether a utmp entry should be created for the pty used by this session. */ /** Specifies whether a utmp entry should be created for the pty used by this session. */
void setAddToUtmp(bool); void setAddToUtmp(bool);
@ -529,6 +532,7 @@ private:
QString _iconName; QString _iconName;
QString _iconText; // as set by: echo -en '\033]1;IconText\007 QString _iconText; // as set by: echo -en '\033]1;IconText\007
bool _isTitleChanged; ///< flag if the title/icon was changed by user
bool _addToUtmp; bool _addToUtmp;
bool _flowControl; bool _flowControl;
bool _fullScripting; bool _fullScripting;

@ -0,0 +1,93 @@
[Color0]
Color=7,54,66
[Color0Intense]
Color=0,43,54
[Color0Faint]
Color=6,48,59
[Color1]
Color=220,50,47
[Color1Intense]
Color=203,75,22
[Color1Faint]
Color=147,33,31
[Color2]
Color=133,153,0
[Color2Intense]
Color=88,110,117
[Color2Faint]
Color=94,106,0
[Color3]
Color=181,137,0
[Color3Intense]
Color=101,123,131
[Color3Faint]
Color=138,103,0
[Color4]
Color=38,139,210
[Color4Intense]
Color=131,148,150
[Color4Faint]
Color=20,77,115
[Color5]
Color=211,54,130
[Color5Intense]
Color=108,113,196
[Color5Faint]
Color=120,30,75
[Color6]
Color=42,161,152
[Color6Intense]
Color=147,161,161
[Color6Faint]
Color=24,94,88
[Color7]
Color=238,232,213
[Color7Intense]
Color=253,246,227
[Color7Faint]
Color=171,167,154
[Background]
Color=0,43,54
[BackgroundIntense]
Color=7,54,66
[BackgroundFaint]
Color=0,43,54
[Foreground]
Color=131,148,150
[ForegroundIntense]
Color=147,161,161
[ForegroundFaint]
Color=106,119,121
[General]
Description=Solarized
Opacity=1

@ -0,0 +1,93 @@
[Color0]
Color=7,54,66
[Color0Intense]
Color=0,43,54
[Color0Faint]
Color=8,65,80
[Color1]
Color=220,50,47
[Color1Intense]
Color=203,75,22
[Color1Faint]
Color=222,81,81
[Color2]
Color=133,153,0
[Color2Intense]
Color=88,110,117
[Color2Faint]
Color=153,168,39
[Color3]
Color=181,137,0
[Color3Intense]
Color=101,123,131
[Color3Faint]
Color=213,170,49
[Color4]
Color=38,139,210
[Color4Intense]
Color=131,148,150
[Color4Faint]
Color=80,173,226
[Color5]
Color=211,54,130
[Color5Intense]
Color=108,113,196
[Color5Faint]
Color=223,92,158
[Color6]
Color=42,161,152
[Color6Intense]
Color=147,161,161
[Color6Faint]
Color=78,211,200
[Color7]
Color=238,232,213
[Color7Intense]
Color=253,246,227
[Color7Faint]
Color=238,232,213
[Background]
Color=253,246,227
[BackgroundIntense]
Color=238,232,213
[BackgroundFaint]
Color=253,246,227
[Foreground]
Color=101,123,131
[ForegroundIntense]
Color=88,110,117
[ForegroundFaint]
Color=141,172,182
[General]
Description=Solarized Light
Opacity=1

@ -302,7 +302,7 @@ void QTermWidget::init(int startnow)
connect(m_impl->m_session, SIGNAL(resizeRequest(QSize)), this, SLOT(setSize(QSize))); connect(m_impl->m_session, SIGNAL(resizeRequest(QSize)), this, SLOT(setSize(QSize)));
connect(m_impl->m_session, SIGNAL(finished()), this, SLOT(sessionFinished())); connect(m_impl->m_session, SIGNAL(finished()), this, SLOT(sessionFinished()));
connect(m_impl->m_session, SIGNAL(titleChanged()), this, SLOT(sessionTitleChanged())); connect(m_impl->m_session, &Session::titleChanged, this, &QTermWidget::titleChanged);
} }
@ -485,12 +485,6 @@ void QTermWidget::sessionFinished()
emit finished(); emit finished();
} }
void QTermWidget::sessionTitleChanged()
{
emit titleChanged();
}
void QTermWidget::copyClipboard() void QTermWidget::copyClipboard()
{ {
m_impl->m_terminalDisplay->copyClipboard(); m_impl->m_terminalDisplay->copyClipboard();
@ -661,12 +655,23 @@ void QTermWidget::setKeyboardCursorShape(KeyboardCursorShape shape)
m_impl->m_terminalDisplay->setKeyboardCursorShape(shape); m_impl->m_terminalDisplay->setKeyboardCursorShape(shape);
} }
QString QTermWidget::userTitle() const QString QTermWidget::title() const
{
QString title = m_impl->m_session->userTitle();
if (title.isEmpty())
title = m_impl->m_session->title(Konsole::Session::NameRole);
return title;
}
QString QTermWidget::icon() const
{ {
return m_impl->m_session->userTitle(); QString icon = m_impl->m_session->iconText();
if (icon.isEmpty())
icon = m_impl->m_session->iconName();
return icon;
} }
QString QTermWidget::iconText() const bool QTermWidget::isTitleChanged() const
{ {
return m_impl->m_session->iconText(); return m_impl->m_session->isTitleChanged();
} }

@ -205,8 +205,11 @@ public:
*/ */
void setKeyboardCursorShape(KeyboardCursorShape shape); void setKeyboardCursorShape(KeyboardCursorShape shape);
QString userTitle() const; QString title() const;
QString iconText() const; QString icon() const;
/** True if the title() or icon() was (ever) changed by the session. */
bool isTitleChanged() const;
signals: signals:
void finished(); void finished();
@ -265,7 +268,6 @@ protected:
protected slots: protected slots:
void sessionFinished(); void sessionFinished();
void sessionTitleChanged();
void selectionChanged(bool textSelected); void selectionChanged(bool textSelected);
private slots: private slots:

Loading…
Cancel
Save