annotate tk/types.d @ 6:a27d2093991c

Checkpoint
author "David Bryant <bagnose@gmail.com>"
date Sat, 11 Jul 2009 20:44:14 +0930
parents 8a39b13cd3e6
children 936feb16eed4
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
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
7 mixin(defineEnum!("ButtonPress",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
8 "SINGLE", "DOUBLE", "TRIPLE", "RELEASE"));
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
9 mixin(defineEnum!("ButtonNumber",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
10 "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_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",
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
15 "SCROLL_LOCK", "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_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 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
51
6
a27d2093991c Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 5
diff changeset
52 /*
5
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
53 class Mask {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
54 this() {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
55 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
56
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
57 this(in Mask other) {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
58 mBits = other.mBits;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
59 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
60
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
61 void add(Modifier modifier) { mBits |= to_bit(modifier); }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
62 void remove(Modifier modifier) { mBits &= ~to_bit(modifier); }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
63 bool query(Modifier modifier) const { return cast(bool)(mBits & to_bit(modifier)); }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
64
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
65 override string toString() const {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
66 Modifier m = Modifier.SHIFT;
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
67 return enumToString(m);
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
68 }
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
69
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
70 private {
8a39b13cd3e6 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 2
diff changeset
71 static int to_bit(Modifier modifier) { return 1 << cast(int)modifier; }
0
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
72 int mBits;
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
73 }
e907d2c54ec3 Initial import
David Bryant <daveb@acres.com.au>
parents:
diff changeset
74 }
6
a27d2093991c Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 5
diff changeset
75 */