0
|
1 module tk.types;
|
|
2
|
|
3 private import std.string;
|
5
|
4 private import std.typecons;
|
|
5 private import std.algorithm;
|
0
|
6
|
7
|
7 mixin(defineEnum!("ButtonAction",
|
|
8 "PRESS_SINGLE", "PRESS_DOUBLE", "PRESS_TRIPLE", "RELEASE"));
|
|
9 mixin(defineEnum!("ButtonName",
|
|
10 "LEFT", "MIDDLE", "RIGHT", "FOUR", "FIVE"));
|
5
|
11 mixin(defineEnum!("ScrollDirection",
|
|
12 "UP", "DOWN", "LEFT", "RIGHT"));
|
|
13 mixin(defineEnum!("Modifier",
|
|
14 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META",
|
7
|
15 "SCROLL_LOCK", "BUTTON_LEFT", "BUTTON_MIDDLE", "BUTTON_RIGHT", "BUTTON_FOUR", "BUTTON_FIVE"));
|
5
|
16
|
6
|
17 class Mask {
|
5
|
18 this(in Modifier[] modifiers) {
|
|
19 _modifiers = modifiers.dup;
|
|
20 }
|
|
21
|
6
|
22 override string toString() const {
|
5
|
23 string s;
|
|
24
|
|
25 foreach (Modifier m; _modifiers) {
|
6
|
26 if (s != "") s ~= "|";
|
5
|
27 s ~= enumToString(m);
|
|
28 }
|
|
29
|
|
30 return s;
|
|
31 }
|
|
32
|
|
33 bool is_set(Modifier m) const {
|
|
34 foreach (Modifier m2; _modifiers) {
|
|
35 if (m == m2) {
|
|
36 return true;
|
|
37 }
|
|
38 }
|
|
39
|
|
40 return false;
|
|
41 }
|
|
42
|
|
43 bool is_unset(Modifier m) const {
|
|
44 return !is_set(m);
|
0
|
45 }
|
|
46
|
|
47 private {
|
5
|
48 Modifier[] _modifiers;
|
|
49 }
|
|
50 }
|