blob: 6add27a78ca06518186111e87856572e516cd7a8 (
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 QtQuick.Layouts 1.1
import Qt.labs.settings 1.0
import "commands.js" as Commands
Item {
id: item
signal executed
visible: false
Layout.preferredHeight: container.height
Settings {
id: settings
category: "command"
property color background : "black"
property int fontSize : 12
property string fontFamily : "Monospace"
property color fontColor : "white"
}
onVisibleChanged: container.reset()
function focus(prefix) {
visible = true;
command.text = prefix;
command.forceActiveFocus();
}
function unfocus() {
visible = false;
}
Rectangle {
anchors {
top: parent.top
left: parent.left
right: parent.right
}
height: container.height
color: settings.background
ColumnLayout {
id: container
function reset() {
command.text = '';
output.text = '';
}
TextInput {
id: command
Layout.fillWidth: true
font {
family: settings.fontFamily
pointSize: settings.fontSize
}
color: settings.fontColor
selectionColor: settings.fontColor
selectedTextColor: settings.background
selectByMouse: true
onAccepted: {
const prefix = String(text).charAt(0);
const cmd = String(text).substring(1, String(text).length);
switch ( prefix ) {
case ':': {
Commands.execute(output, cmd);
break;
}
default: {
output.log('"' + prefix + '"' + " is not a command prefix.");
}
}
if ( output.text === '' ) {
item.executed();
}
}
}
Text {
id: output
Layout.fillWidth: true
Layout.preferredHeight: 0
font {
family: settings.fontFamily
pointSize: settings.fontSize
}
color: settings.fontColor
function log(msg) {
text = msg;
}
onTextChanged: {
if ( text === '' ) {
Layout.preferredHeight = 0;
} else {
Layout.preferredHeight = contentHeight;
}
}
}
}
}
}
|