summaryrefslogtreecommitdiff
path: root/util/epist/actions.cc
diff options
context:
space:
mode:
authorScott Moynes <smoynes@nexus.carleton.ca>2002-08-06 22:37:06 +0000
committerScott Moynes <smoynes@nexus.carleton.ca>2002-08-06 22:37:06 +0000
commit6d40002093a5d8e665d4f310ea028d22e93e88cb (patch)
tree6a537e4ee4625df1b57a651357e913b8ff71a996 /util/epist/actions.cc
parent00391787e32111fa5c9de606b5edf595846e7513 (diff)
Big fat merge for epist.
This adds a config parser, chaining, and a tonne of other stuff. Still need to fix up build system for the lex and yacc stuff.
Diffstat (limited to 'util/epist/actions.cc')
-rw-r--r--util/epist/actions.cc34
1 files changed, 25 insertions, 9 deletions
diff --git a/util/epist/actions.cc b/util/epist/actions.cc
index 35ddbb80..82e61ae3 100644
--- a/util/epist/actions.cc
+++ b/util/epist/actions.cc
@@ -23,13 +23,29 @@
#include "actions.hh"
Action::Action(enum ActionType type, KeyCode keycode, unsigned int modifierMask,
- int num)
- : _type(type), _keycode(keycode),
- _modifierMask(modifierMask), _numberParam(num)
-{ }
-
-Action::Action(enum ActionType type, KeyCode keycode, unsigned int modifierMask,
const std::string &str)
- : _type(type), _keycode(keycode),
- _modifierMask(modifierMask), _stringParam(str)
-{ }
+ : _type(type), _keycode(keycode), _modifierMask(modifierMask)
+{
+ // These are the action types that take string arguments. This
+ // should probably be moved to a static member
+ ActionType str_types[] = {
+ execute,
+ nextWindowOfClass,
+ prevWindowOfClass,
+ nextWindowOfClassOnAllWorkspaces,
+ prevWindowOfClassOnAllWorkspaces,
+ noaction
+ };
+
+ for (int i = 0; str_types[i] != noaction; ++i) {
+ if (type == str_types[i]) {
+ _stringParam = str;
+ return;
+ }
+ }
+
+ _numberParam = atoi( str.c_str() );
+
+ if (type == changeWorkspace)
+ _numberParam;
+}