6 parser::parser(keytree
*kt
)
7 : _mask(0), _action(Action::noaction
), _key(""), _arg(""), _kt(kt
)
13 // nothing to see here. move along.
16 void parser::parse(string rc_file
)
18 extern int yyparse(void *);
21 yyin
= fopen(rc_file
.c_str(), "r");
29 void parser::setAction(string act
)
33 Action::ActionType act
;
36 { "noaction", Action::noaction
},
37 { "execute", Action::execute
},
38 { "iconify", Action::iconify
},
39 { "raise", Action::raise
},
40 { "lower", Action::lower
},
41 { "close", Action::close
},
42 { "toggleshade", Action::toggleshade
},
43 { "toggleomnipresent", Action::toggleomnipresent
},
44 { "moveWindowUp", Action::moveWindowUp
},
45 { "moveWindowDown", Action::moveWindowDown
},
46 { "moveWindowLeft", Action::moveWindowLeft
},
47 { "moveWindowRight", Action::moveWindowRight
},
48 { "resizeWindowWidth", Action::resizeWindowWidth
},
49 { "resizeWindowHeight", Action::resizeWindowHeight
},
50 { "toggleMaximizeFull", Action::toggleMaximizeFull
},
51 { "toggleMaximizeVertical", Action::toggleMaximizeVertical
},
52 { "toggleMaximizeHorizontal", Action::toggleMaximizeHorizontal
},
53 { "sendToWorkspace", Action::sendToWorkspace
},
54 { "nextWindow", Action::nextWindow
},
55 { "prevWindow", Action::prevWindow
},
56 { "nextWindowOnAllWorkspaces", Action::nextWindowOnAllWorkspaces
},
57 { "prevWindowOnAllWorkspaces", Action::prevWindowOnAllWorkspaces
},
58 { "nextWindowOnAllScreens", Action::nextWindowOnAllScreens
},
59 { "prevWindowOnAllScreens", Action::prevWindowOnAllScreens
},
60 { "nextWindowOfClass", Action::nextWindowOfClass
},
61 { "prevWindowOfClass", Action::prevWindowOfClass
},
62 { "nextWindowOfClassOnAllWorkspaces", Action::nextWindowOfClassOnAllWorkspaces
},
63 { "prevWindowOfClassOnAllWorkspaces", Action::prevWindowOfClassOnAllWorkspaces
},
64 { "changeWorkspace", Action::changeWorkspace
},
65 { "nextWorkspace", Action::nextWorkspace
},
66 { "prevWorkspace", Action::prevWorkspace
},
67 { "nextScreen", Action::nextScreen
},
68 { "prevScreen", Action::prevScreen
},
69 { "showRootMenu", Action::showRootMenu
},
70 { "showWorkspaceMenu", Action::showWorkspaceMenu
},
71 { "stringChain", Action::stringChain
},
72 { "keyChain", Action::keyChain
},
73 { "numberChain", Action::numberChain
},
74 { "cancel", Action::cancel
},
75 { "", Action::noaction
}
80 for (int i
= 0; actions
[i
].str
!= ""; ++i
) {
81 if (actions
[i
].str
== act
) {
82 _action
= actions
[i
].act
;
88 _action
= Action::noaction
;
91 void parser::addModifier(string mod
)
100 { "Mod3", Mod3Mask
},
101 { "Control", ControlMask
},
102 { "Shift", ShiftMask
},
106 for (int i
= 0; modifiers
[i
].str
!= ""; ++i
) {
107 if (modifiers
[i
].str
== mod
)
108 _mask
|= modifiers
[i
].mask
;
112 void parser::endAction()
114 _kt
->addAction(_action
, _mask
, _key
, _arg
);
118 void parser::startChain()
120 _kt
->advanceOnNewNode();
125 void parser::endChain()
131 void parser::setChainBinding()
133 if (_mask
!= 0 && _key
!= "") {
134 _kt
->setCurrentNodeProps(Action::noaction
, _mask
, _key
, "");
142 _action
= Action::noaction
;