Mercurial > projects > doodle
view tk/types.d @ 8:bf7903435f58
Checkpoint
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sat, 11 Jul 2009 21:49:04 +0930 |
parents | 936feb16eed4 |
children | f0ade1b49fe7 |
line wrap: on
line source
module tk.types; private import std.string; private import std.typecons; private import std.algorithm; mixin(defineEnum!("ButtonAction", "SINGLE_PRESS", "DOUBLE_PRESS", "TRIPLE_PRESS", "RELEASE")); mixin(defineEnum!("ButtonName", "LEFT", "MIDDLE", "RIGHT", "FOUR", "FIVE")); mixin(defineEnum!("ScrollDirection", "UP", "DOWN", "LEFT", "RIGHT")); mixin(defineEnum!("Modifier", "SHIFT", "CAPS_LOCK", "CONTROL", "ALT", "NUM_LOCK", "META", "SCROLL_LOCK", "BUTTON_LEFT", "BUTTON_MIDDLE", "BUTTON_RIGHT", "BUTTON_FOUR", "BUTTON_FIVE")); class Mask { this(in Modifier[] modifiers) { _modifiers = modifiers.dup; } override string toString() const { string s; foreach (Modifier m; _modifiers) { if (s != "") s ~= "|"; s ~= enumToString(m); } return s; } bool is_set(Modifier m) const { foreach (Modifier m2; _modifiers) { if (m == m2) { return true; } } return false; } bool is_unset(Modifier m) const { return !is_set(m); } private { Modifier[] _modifiers; } }