12 parser::parser(keytree
*kt
)
13 : _kt(kt
), _mask(0), _action(Action::noaction
), _key(""), _arg("")
19 // nothing to see here. move along.
22 void parser::parse(string rc_file
)
24 extern int yyparse(void *);
27 yyin
= fopen(rc_file
.c_str(), "r");
35 void parser::setAction(string act
)
39 Action::ActionType act
;
42 { "noaction", Action::noaction
},
43 { "execute", Action::execute
},
44 { "iconify", Action::iconify
},
45 { "raise", Action::raise
},
46 { "lower", Action::lower
},
47 { "close", Action::close
},
48 { "toggleshade", Action::toggleshade
},
49 { "toggleomnipresent", Action::toggleomnipresent
},
50 { "moveWindowUp", Action::moveWindowUp
},
51 { "moveWindowDown", Action::moveWindowDown
},
52 { "moveWindowLeft", Action::moveWindowLeft
},
53 { "moveWindowRight", Action::moveWindowRight
},
54 { "resizeWindowWidth", Action::resizeWindowWidth
},
55 { "resizeWindowHeight", Action::resizeWindowHeight
},
56 { "toggleMaximizeFull", Action::toggleMaximizeFull
},
57 { "toggleMaximizeVertical", Action::toggleMaximizeVertical
},
58 { "toggleMaximizeHorizontal", Action::toggleMaximizeHorizontal
},
59 { "sendToWorkspace", Action::sendToWorkspace
},
60 { "nextWindow", Action::nextWindow
},
61 { "prevWindow", Action::prevWindow
},
62 { "nextWindowOnAllWorkspaces", Action::nextWindowOnAllWorkspaces
},
63 { "prevWindowOnAllWorkspaces", Action::prevWindowOnAllWorkspaces
},
64 { "nextWindowOnAllScreens", Action::nextWindowOnAllScreens
},
65 { "prevWindowOnAllScreens", Action::prevWindowOnAllScreens
},
66 { "nextWindowOfClass", Action::nextWindowOfClass
},
67 { "prevWindowOfClass", Action::prevWindowOfClass
},
68 { "nextWindowOfClassOnAllWorkspaces", Action::nextWindowOfClassOnAllWorkspaces
},
69 { "prevWindowOfClassOnAllWorkspaces", Action::prevWindowOfClassOnAllWorkspaces
},
70 { "changeWorkspace", Action::changeWorkspace
},
71 { "nextWorkspace", Action::nextWorkspace
},
72 { "prevWorkspace", Action::prevWorkspace
},
73 { "nextScreen", Action::nextScreen
},
74 { "prevScreen", Action::prevScreen
},
75 { "showRootMenu", Action::showRootMenu
},
76 { "showWorkspaceMenu", Action::showWorkspaceMenu
},
77 { "stringChain", Action::stringChain
},
78 { "keyChain", Action::keyChain
},
79 { "numberChain", Action::numberChain
},
80 { "cancel", Action::cancel
},
81 { "", Action::noaction
}
86 for (int i
= 0; actions
[i
].str
!= ""; ++i
) {
87 if (actions
[i
].str
== act
) {
88 _action
= actions
[i
].act
;
94 _action
= Action::noaction
;
97 void parser::addModifier(string mod
)
104 { "Mod1", Mod1Mask
},
105 { "Mod2", Mod2Mask
},
106 { "Mod3", Mod3Mask
},
107 { "Control", ControlMask
},
108 { "Shift", ShiftMask
},
112 for (int i
= 0; modifiers
[i
].str
!= ""; ++i
) {
113 if (modifiers
[i
].str
== mod
)
114 _mask
|= modifiers
[i
].mask
;
118 void parser::endAction()
120 _kt
->addAction(_action
, _mask
, _key
, _arg
);
124 void parser::startChain()
126 _kt
->advanceOnNewNode();
131 void parser::endChain()
137 void parser::setChainBinding()
139 if (_mask
!= 0 && _key
!= "") {
140 _kt
->setCurrentNodeProps(Action::noaction
, _mask
, _key
, "");
148 _action
= Action::noaction
;