aboutsummaryrefslogtreecommitdiff
path: root/qml/CommandInput.qml
blob: e7defbffd9c1646ac95036e5ca29599cd0a7041a (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
import QtQuick 2.0
import QtQuick.Layouts 1.1
import Qt.labs.settings 1.0

import "commands.js" as Commands

Item {
	id: item

	visible: false

	Settings {
		id: settings
		category: "command"

		property color  background : "black"
		property int    fontSize   : 12
		property string fontFamily : "Monospace"
		property color  fontColor  : "white"
	}

	function focus(prefix) {
		visible      = true;
		command.text = prefix;
		command.forceActiveFocus();
	}

	function unfocus() {
		visible = false;
	}

	Rectangle {
		anchors.fill: parent
		color: settings.background

		TextInput {
			id: command

			font {
				family:    settings.fontFamily
				pointSize: settings.fontSize
			}

			color:             settings.fontColor
			selectionColor:    settings.fontColor
			selectedTextColor: settings.background
			selectByMouse:     true

			function reset() { text = '' }

			onAccepted: {
				const prefix = String(text).charAt(0);
				const cmd    = String(text).substring(1, String(text).length);

				switch ( prefix ) {
					case ':': {
						Commands.execute(cmd);
						reset();
						break;
					}
					default: {
						console.log('"' + prefix + '"' + " is not a command prefix");
					}
				}
			}
		}
	}
}