blob: 76185948bba06c81ef9b8ac78a7ad2f8047d37df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
import QtQuick 2.0
import QMLTermWidget 1.0
import QtQuick.Controls 1.2
Rectangle {
id: root
anchors.fill: parent
color: "#161616"
Flickable {
id: terminalListFlickable
boundsBehavior: Flickable.StopAtBounds
anchors.fill: parent
Column {
id: terminalList
spacing: 10
property int activeItem : 0
function createItem() {
var terminalItem = Qt.createComponent("TerminalItem.qml");
var instantiateTerminal = function() {
var instance = terminalItem.createObject(terminalList, {
"width": terminalListFlickable.width
});
instance.onExecuted.connect(createItem);
}
if ( terminalItem.status == Component.Ready ) {
instantiateTerminal();
} else {
terminalItem.statusChanged.connect(instantiateTerminal);
}
}
function nextItem() {
if ( activeItem < (children.length - 1) ) {
children[ activeItem].deselect();
children[++activeItem].select();
}
}
function prevItem() {
if ( activeItem > 0 ) {
children[ activeItem].deselect();
children[--activeItem].select();
}
}
function focusItem() {
children[activeItem].forceActiveFocus();
}
function unfocusItem() {
children[activeItem].unfocus();
}
TerminalItem {
width: terminalListFlickable.width
onExecuted: terminalList.createItem()
}
}
contentHeight: terminalList.height
contentWidth: terminalList.width
}
Action {
id: insertTerminalAction
shortcut: "i"
enabled: false
onTriggered: {
escapeTerminalAction.enabled = true;
insertTerminalAction.enabled = false;
nextTerminalAction.enabled = false;
prevTerminalAction.enabled = false;
terminalList.focusItem();
}
}
Action {
id: escapeTerminalAction
shortcut: "Shift+ESC"
onTriggered: {
escapeTerminalAction.enabled = false;
insertTerminalAction.enabled = true;
nextTerminalAction.enabled = true;
prevTerminalAction.enabled = true;
root.forceActiveFocus();
terminalList.unfocusItem();
}
}
Action {
id: nextTerminalAction
shortcut: "j"
enabled: false
onTriggered: terminalList.nextItem()
}
Action {
id: prevTerminalAction
shortcut: "k"
enabled: false
onTriggered: terminalList.prevItem()
}
ScrollBar {
flickable: terminalListFlickable
handleSize: 10
}
Component.onCompleted: terminalList.focusItem()
}
|