diff options
author | Adrian Kummerlaender | 2015-08-29 22:12:49 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2015-08-29 22:12:49 +0200 |
commit | 0dd49584e26c294e3fb25347969f61bca84afb5f (patch) | |
tree | e84adbe9014d155a185cc2f6539ef34732b6474f /src/list | |
parent | 77d4b29ffd337b747448ce0f1a6f6e3457d8cd05 (diff) | |
download | MetaTerm-0dd49584e26c294e3fb25347969f61bca84afb5f.tar MetaTerm-0dd49584e26c294e3fb25347969f61bca84afb5f.tar.gz MetaTerm-0dd49584e26c294e3fb25347969f61bca84afb5f.tar.bz2 MetaTerm-0dd49584e26c294e3fb25347969f61bca84afb5f.tar.lz MetaTerm-0dd49584e26c294e3fb25347969f61bca84afb5f.tar.xz MetaTerm-0dd49584e26c294e3fb25347969f61bca84afb5f.tar.zst MetaTerm-0dd49584e26c294e3fb25347969f61bca84afb5f.zip |
Automatically destroy terminal when killed and display history
Child processes of _MetaTerm_ may be terminated using other ways that the integrated kill command.
Automatic terminal widget destruction in such a event prevents the user from viewing the output of non-interactive applications.
This requires _MetaTerm_ to display the application's output after it was terminated.
This requirement is implemented via the new `HistoryViewer` widget that is instantiated after the terminal widget instance has been destroyed.
Diffstat (limited to 'src/list')
-rw-r--r-- | src/list/TerminalItem.qml | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/list/TerminalItem.qml b/src/list/TerminalItem.qml index febd116..cfffd86 100644 --- a/src/list/TerminalItem.qml +++ b/src/list/TerminalItem.qml @@ -6,6 +6,7 @@ Item { id: item property EmbeddedTerminal terminal : null + property HistoryViewer history : null property int index : 0 signal executed (int index) @@ -96,12 +97,22 @@ Item { function createTerminal(program) { var terminalComponent = Qt.createComponent("qrc:/EmbeddedTerminal.qml"); var instantiateTerminal = function() { + if ( item.history !== null ) { + item.history.destroy(); + item.history = null; + } + item.terminal = terminalComponent.createObject(elementList, { "settings" : settings, "program" : program, "workingDirectory" : "$HOME", "focus" : true }); + item.terminal.onFinished.connect(function() { + var history = item.terminal.history; + item.reset(); + createHistoryViewer(history); + }); } if ( terminalComponent.status === Component.Ready ) { @@ -111,6 +122,21 @@ Item { } } + function createHistoryViewer(history) { + var historyComponent = Qt.createComponent("qrc:/HistoryViewer.qml"); + var instantiateHistory = function() { + item.history = historyComponent.createObject(elementList, { + "history" : history + }); + } + + if ( historyComponent.status === Component.Ready ) { + instantiateHistory(); + } else { + historyComponent.statusChanged.connect(instantiateHistory); + } + } + RowLayout { anchors { left: parent.left |