annotate tk/types.d @ 26:06c30d250c0a

Cleanup
author "David Bryant <bagnose@gmail.com>"
date Thu, 16 Jul 2009 00:12:02 +0930
parents 9e63308b749c
children
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
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
3 public {
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
4 import std.string;
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
5 }
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
6
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
7 private {
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
8 import std.typecons;
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
9 import std.algorithm;
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
10 }
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
11
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
12 mixin(defineEnum!("ButtonAction",
8
bf7903435f58 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 7
diff changeset
13 "SINGLE_PRESS", "DOUBLE_PRESS", "TRIPLE_PRESS", "RELEASE"));
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
14
7
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
15 mixin(defineEnum!("ButtonName",
936feb16eed4 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 6
diff changeset
16 "LEFT", "MIDDLE", "RIGHT", "FOUR", "FIVE"));
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
17
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
18 mixin(defineEnum!("ScrollDirection",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
19 "UP", "DOWN", "LEFT", "RIGHT"));
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
20
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
21 mixin(defineEnum!("Modifier",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
22 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META",
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
23 "SCROLL_LOCK", "LEFT_BUTTON", "MIDDLE_BUTTON", "RIGHT_BUTTON",
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
24 "UNUSED_BUTTON_1", "UNUSED_BUTTON_2"));
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
25
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
26 struct Mask {
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
27 this(in Modifier[] modifiers) {
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
28 foreach (ref m; modifiers) {
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
29 _bits |= 1 << m;
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
30 }
5
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
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
33 string toString() {
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
34 string s;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
35
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
36 // FIXME this is terrible
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
37 for (int i = 0; i < uint.sizeof * 8; ++i) {
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
38 if (_bits & (1 << i)) {
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
39 if (s != "") s ~= "|";
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
40 s ~= enumToString(cast(Modifier)i);
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
41 }
5
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
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
44 return s;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
45 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
46
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
47 bool is_set(in Modifier m) const {
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
48 return _bits & (1 << m);
5
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
26
06c30d250c0a Cleanup
"David Bryant <bagnose@gmail.com>"
parents: 16
diff changeset
51 bool is_unset(in Modifier m) const {
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
52 return !is_set(m);
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
53 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
54
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
55 private {
16
9e63308b749c * Fix up public/private includes
David Bryant <daveb@acres.com.au>
parents: 13
diff changeset
56 uint _bits;
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
57 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
58 }