annotate tk/types.d @ 7:936feb16eed4

Checkpoint
author "David Bryant <bagnose@gmail.com>"
date Sat, 11 Jul 2009 21:29:03 +0930
parents a27d2093991c
children bf7903435f58
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
1 module tk.types;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
2
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
3 private import std.string;
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
4 private import std.typecons;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
5 private import std.algorithm;
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
6
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
7 mixin(defineEnum!("ButtonAction",
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
8 "PRESS_SINGLE", "PRESS_DOUBLE", "PRESS_TRIPLE", "RELEASE"));
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
9 mixin(defineEnum!("ButtonName",
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
10 "LEFT", "MIDDLE", "RIGHT", "FOUR", "FIVE"));
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
11 mixin(defineEnum!("ScrollDirection",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
12 "UP", "DOWN", "LEFT", "RIGHT"));
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
13 mixin(defineEnum!("Modifier",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
14 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META",
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
15 "SCROLL_LOCK", "BUTTON_LEFT", "BUTTON_MIDDLE", "BUTTON_RIGHT", "BUTTON_FOUR", "BUTTON_FIVE"));
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
16
6
a27d2093991c Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 5
diff changeset
17 class Mask {
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
18 this(in Modifier[] modifiers) {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
19 _modifiers = modifiers.dup;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
20 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
21
6
a27d2093991c Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 5
diff changeset
22 override string toString() const {
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
23 string s;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
24
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
25 foreach (Modifier m; _modifiers) {
6
a27d2093991c Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 5
diff changeset
26 if (s != "") s ~= "|";
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
27 s ~= enumToString(m);
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
28 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
29
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
30 return s;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
31 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
32
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
33 bool is_set(Modifier m) const {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
34 foreach (Modifier m2; _modifiers) {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
35 if (m == m2) {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
36 return true;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
37 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
38 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
39
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
40 return false;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
41 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
42
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
43 bool is_unset(Modifier m) const {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
44 return !is_set(m);
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
45 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
46
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
47 private {
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
48 Modifier[] _modifiers;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
49 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
50 }