aboutsummaryrefslogtreecommitdiff
path: root/src/ScreenPlacement.cc
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-06-11 11:00:45 (GMT)
committerPavel Labath <pavelo@centrum.sk>2011-11-01 09:52:46 (GMT)
commit8c208459910f1dddcfdeb00567b990eebfc218b8 (patch)
tree47c442f906124306a52e13641d28fc6cd1ac513e /src/ScreenPlacement.cc
parent60cd98604ae0ee62d64e3bc852898f69dae221d4 (diff)
downloadfluxbox_paul-8c208459910f1dddcfdeb00567b990eebfc218b8.zip
fluxbox_paul-8c208459910f1dddcfdeb00567b990eebfc218b8.tar.bz2
Simplify FbTk::Resource template class
by outsourcing the conversion from string/lua to the specific type (and back) to a separate class. This change touches a lot of files because the interface of FbTk::Resource changed slightly. However, the changes are minor.
Diffstat (limited to 'src/ScreenPlacement.cc')
-rw-r--r--src/ScreenPlacement.cc143
1 files changed, 19 insertions, 124 deletions
diff --git a/src/ScreenPlacement.cc b/src/ScreenPlacement.cc
index cd7ce15..2a743ce 100644
--- a/src/ScreenPlacement.cc
+++ b/src/ScreenPlacement.cc
@@ -182,133 +182,28 @@ void ScreenPlacement::placeAndShowMenu(FbTk::Menu& menu, int x, int y, bool resp
182namespace FbTk { 182namespace FbTk {
183 183
184template <> 184template <>
185std::string FbTk::Resource<ScreenPlacement::PlacementPolicy>::getString() const { 185const EnumTraits<ScreenPlacement::PlacementPolicy>::Pair EnumTraits<ScreenPlacement::PlacementPolicy>::s_map[] = {
186 switch (*(*this)) { 186 { "RowSmartPlacement", ScreenPlacement::ROWSMARTPLACEMENT },
187 case ScreenPlacement::ROWSMARTPLACEMENT: 187 { "ColSmartPlacement", ScreenPlacement::COLSMARTPLACEMENT },
188 return "RowSmartPlacement"; 188 { "RowMinOverlapPlacement", ScreenPlacement::ROWMINOVERLAPPLACEMENT },
189 case ScreenPlacement::COLSMARTPLACEMENT: 189 { "ColMinOverlapPlacement", ScreenPlacement::COLMINOVERLAPPLACEMENT },
190 return "ColSmartPlacement"; 190 { "UnderMousePlacement", ScreenPlacement::UNDERMOUSEPLACEMENT },
191 case ScreenPlacement::ROWMINOVERLAPPLACEMENT: 191 { "CascadePlacement", ScreenPlacement::CASCADEPLACEMENT },
192 return "RowMinOverlapPlacement"; 192 { NULL, ScreenPlacement::CASCADEPLACEMENT }
193 case ScreenPlacement::COLMINOVERLAPPLACEMENT: 193};
194 return "ColMinOverlapPlacement";
195 case ScreenPlacement::UNDERMOUSEPLACEMENT:
196 return "UnderMousePlacement";
197 case ScreenPlacement::CASCADEPLACEMENT:
198 return "CascadePlacement";
199 }
200
201 return "RowSmartPlacement";
202}
203 194
204template <> 195template <>
205void FbTk::Resource<ScreenPlacement::PlacementPolicy>::setFromString(const char *str) { 196const EnumTraits<ScreenPlacement::RowDirection>::Pair EnumTraits<ScreenPlacement::RowDirection>::s_map[] = {
206 if (strcasecmp("RowSmartPlacement", str) == 0) 197 { "LeftToRight", ScreenPlacement::LEFTRIGHT },
207 *(*this) = ScreenPlacement::ROWSMARTPLACEMENT; 198 { "RightToLeft", ScreenPlacement::RIGHTLEFT },
208 else if (strcasecmp("ColSmartPlacement", str) == 0) 199 { NULL, ScreenPlacement::RIGHTLEFT },
209 *(*this) = ScreenPlacement::COLSMARTPLACEMENT; 200};
210 else if (strcasecmp("RowMinOverlapPlacement", str) == 0)
211 *(*this) = ScreenPlacement::ROWMINOVERLAPPLACEMENT;
212 else if (strcasecmp("ColMinOverlapPlacement", str) == 0)
213 *(*this) = ScreenPlacement::COLMINOVERLAPPLACEMENT;
214 else if (strcasecmp("UnderMousePlacement", str) == 0)
215 *(*this) = ScreenPlacement::UNDERMOUSEPLACEMENT;
216 else if (strcasecmp("CascadePlacement", str) == 0)
217 *(*this) = ScreenPlacement::CASCADEPLACEMENT;
218 else
219 setDefaultValue();
220}
221
222template<>
223void FbTk::Resource<ScreenPlacement::PlacementPolicy>::setFromLua(lua::state &l) {
224 lua::stack_sentry s(l, -1);
225 if(l.isstring(-1))
226 setFromString(l.tostring(-1).c_str());
227 else
228 setDefaultValue();
229 l.pop();
230}
231
232template<>
233void FbTk::Resource<ScreenPlacement::PlacementPolicy>::pushToLua(lua::state &l) const {
234 l.pushstring(getString());
235}
236
237 201
238template <> 202template <>
239std::string FbTk::Resource<ScreenPlacement::RowDirection>::getString() const { 203const EnumTraits<ScreenPlacement::ColumnDirection>::Pair EnumTraits<ScreenPlacement::ColumnDirection>::s_map[] = {
240 switch (*(*this)) { 204 { "TopToBottom", ScreenPlacement::TOPBOTTOM },
241 case ScreenPlacement::LEFTRIGHT: 205 { "BottomToTop", ScreenPlacement::BOTTOMTOP },
242 return "LeftToRight"; 206 { NULL, ScreenPlacement::BOTTOMTOP },
243 case ScreenPlacement::RIGHTLEFT: 207};
244 return "RightToLeft";
245 }
246
247 return "LeftToRight";
248}
249
250
251template <>
252void FbTk::Resource<ScreenPlacement::RowDirection>::setFromString(const char *str) {
253 if (strcasecmp("LeftToRight", str) == 0)
254 *(*this) = ScreenPlacement::LEFTRIGHT;
255 else if (strcasecmp("RightToLeft", str) == 0)
256 *(*this) = ScreenPlacement::RIGHTLEFT;
257 else
258 setDefaultValue();
259}
260
261template<>
262void FbTk::Resource<ScreenPlacement::RowDirection>::setFromLua(lua::state &l) {
263 lua::stack_sentry s(l, -1);
264 if(l.isstring(-1))
265 setFromString(l.tostring(-1).c_str());
266 else
267 setDefaultValue();
268 l.pop();
269}
270
271template<>
272void FbTk::Resource<ScreenPlacement::RowDirection>::pushToLua(lua::state &l) const {
273 l.pushstring(getString());
274}
275
276template <>
277std::string FbTk::Resource<ScreenPlacement::ColumnDirection>::getString() const {
278 switch (*(*this)) {
279 case ScreenPlacement::TOPBOTTOM:
280 return "TopToBottom";
281 case ScreenPlacement::BOTTOMTOP:
282 return "BottomToTop";
283 }
284
285 return "TopToBottom";
286}
287
288
289template <>
290void FbTk::Resource<ScreenPlacement::ColumnDirection>::setFromString(const char *str) {
291 if (strcasecmp("TopToBottom", str) == 0)
292 *(*this) = ScreenPlacement::TOPBOTTOM;
293 else if (strcasecmp("BottomToTop", str) == 0)
294 *(*this) = ScreenPlacement::BOTTOMTOP;
295 else
296 setDefaultValue();
297}
298
299template<>
300void FbTk::Resource<ScreenPlacement::ColumnDirection>::setFromLua(lua::state &l) {
301 lua::stack_sentry s(l, -1);
302 if(l.isstring(-1))
303 setFromString(l.tostring(-1).c_str());
304 else
305 setDefaultValue();
306 l.pop();
307}
308
309template<>
310void FbTk::Resource<ScreenPlacement::ColumnDirection>::pushToLua(lua::state &l) const {
311 l.pushstring(getString());
312}
313 208
314} // end namespace FbTk 209} // end namespace FbTk