comparison 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
comparison
equal deleted inserted replaced
5:8a39b13cd3e6 6:a27d2093991c
1 module tk.types; 1 module tk.types;
2 2
3 private import std.string; 3 private import std.string;
4 private import std.typecons; 4 private import std.typecons;
5 private import std.algorithm; 5 private import std.algorithm;
6
7 /*
8 enum ButtonPress {
9 SINGLE,
10 DOUBLE,
11 TRIPLE,
12 RELEASE
13 }
14
15 string toString(in ButtonPress bp) {
16 switch (bp) {
17 case ButtonPress.SINGLE: return "SINGLE";
18 case ButtonPress.DOUBLE: return "DOUBLE";
19 case ButtonPress.TRIPLE: return "TRIPLE";
20 case ButtonPress.RELEASE: return "RELEASE";
21 default: return std.string.format("<UNKNOWN ButtonPress: %s>", bp);
22 }
23 }
24
25 enum ButtonNumber {
26 BUTTON_1,
27 BUTTON_2,
28 BUTTON_3,
29 BUTTON_4,
30 BUTTON_5,
31 }
32
33 string toString(in ButtonNumber bn) {
34 switch (bn) {
35 case ButtonNumber.BUTTON_1: return "BUTTON_1";
36 case ButtonNumber.BUTTON_2: return "BUTTON_2";
37 case ButtonNumber.BUTTON_3: return "BUTTON_3";
38 case ButtonNumber.BUTTON_4: return "BUTTON_4";
39 case ButtonNumber.BUTTON_5: return "BUTTON_5";
40 default: return std.string.format("<UNKNOWN ButtonNumber: %s>", bn);
41 }
42 }
43
44 enum ScrollDirection {
45 UP,
46 DOWN,
47 LEFT,
48 RIGHT
49 }
50
51 string toString(in ScrollDirection sd) {
52 switch (sd) {
53 case ScrollDirection.UP: return "UP";
54 case ScrollDirection.DOWN: return "DOWN";
55 case ScrollDirection.LEFT: return "LEFT";
56 case ScrollDirection.RIGHT: return "RIGHT";
57 default: return std.string.format("<UNKNOWN ScrollDirection: %s>", sd);
58 }
59 }
60
61 enum Modifier {
62 SHIFT,
63 CAPS_LOCK,
64 CONTROL,
65 ALT,
66 NUM_LOCK,
67 META,
68 SCROLL_LOCK,
69 BUTTON_1,
70 BUTTON_2,
71 BUTTON_3,
72 BUTTON_4,
73 BUTTON_5
74 }
75
76 string toString(in Modifier m) {
77 switch (m) {
78 case Modifier.SHIFT: return "SHIFT";
79 case Modifier.CAPS_LOCK: return "CAPS_LOCK";
80 case Modifier.CONTROL: return "CONTROL";
81 case Modifier.ALT: return "ALT";
82 case Modifier.NUM_LOCK: return "NUM_LOCK";
83 case Modifier.META: return "META";
84 case Modifier.SCROLL_LOCK: return "SCROLL_LOCK";
85 case Modifier.BUTTON_1: return "BUTTON_1";
86 case Modifier.BUTTON_2: return "BUTTON_2";
87 case Modifier.BUTTON_3: return "BUTTON_3";
88 case Modifier.BUTTON_4: return "BUTTON_4";
89 case Modifier.BUTTON_5: return "BUTTON_5";
90 default: return std.string.format("<UNKNOWN Modifier: %s>", m);
91 }
92 }
93 */
94 6
95 mixin(defineEnum!("ButtonPress", 7 mixin(defineEnum!("ButtonPress",
96 "SINGLE", "DOUBLE", "TRIPLE", "RELEASE")); 8 "SINGLE", "DOUBLE", "TRIPLE", "RELEASE"));
97 mixin(defineEnum!("ButtonNumber", 9 mixin(defineEnum!("ButtonNumber",
98 "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5")); 10 "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5"));
100 "UP", "DOWN", "LEFT", "RIGHT")); 12 "UP", "DOWN", "LEFT", "RIGHT"));
101 mixin(defineEnum!("Modifier", 13 mixin(defineEnum!("Modifier",
102 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META", 14 "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META",
103 "SCROLL_LOCK", "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5")); 15 "SCROLL_LOCK", "BUTTON_1", "BUTTON_2", "BUTTON_3", "BUTTON_4", "BUTTON_5"));
104 16
105 struct Mask2 { 17 class Mask {
106 this(in Modifier[] modifiers) { 18 this(in Modifier[] modifiers) {
107 _modifiers = modifiers.dup; 19 _modifiers = modifiers.dup;
108 } 20 }
109 21
110 string toString() const { 22 override string toString() const {
111 string s; 23 string s;
112 24
113 foreach (Modifier m; _modifiers) { 25 foreach (Modifier m; _modifiers) {
26 if (s != "") s ~= "|";
114 s ~= enumToString(m); 27 s ~= enumToString(m);
115 } 28 }
116 29
117 return s; 30 return s;
118 } 31 }
134 private { 47 private {
135 Modifier[] _modifiers; 48 Modifier[] _modifiers;
136 } 49 }
137 } 50 }
138 51
52 /*
139 class Mask { 53 class Mask {
140 this() { 54 this() {
141 } 55 }
142 56
143 this(in Mask other) { 57 this(in Mask other) {
149 bool query(Modifier modifier) const { return cast(bool)(mBits & to_bit(modifier)); } 63 bool query(Modifier modifier) const { return cast(bool)(mBits & to_bit(modifier)); }
150 64
151 override string toString() const { 65 override string toString() const {
152 Modifier m = Modifier.SHIFT; 66 Modifier m = Modifier.SHIFT;
153 return enumToString(m); 67 return enumToString(m);
154 /*
155 return format("Mask: %s", m);
156 */
157 //return format("%d", mBits);
158 } 68 }
159 69
160 private { 70 private {
161 static int to_bit(Modifier modifier) { return 1 << cast(int)modifier; } 71 static int to_bit(Modifier modifier) { return 1 << cast(int)modifier; }
162 int mBits; 72 int mBits;
163 } 73 }
164 } 74 }
75 */