aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.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/Screen.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/Screen.cc')
-rw-r--r--src/Screen.cc66
1 files changed, 16 insertions, 50 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 3435843..be65ac8 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -215,20 +215,6 @@ struct TabPlacementString {
215 const char* str; 215 const char* str;
216}; 216};
217 217
218const TabPlacementString placement_strings[] = {
219 { FbWinFrame::TOPLEFT, "TopLeft" },
220 { FbWinFrame::TOP, "Top" },
221 { FbWinFrame::TOPRIGHT, "TopRight" },
222 { FbWinFrame::BOTTOMLEFT, "BottomLeft" },
223 { FbWinFrame::BOTTOM, "Bottom" },
224 { FbWinFrame::BOTTOMRIGHT, "BottomRight" },
225 { FbWinFrame::LEFTBOTTOM, "LeftBottom" },
226 { FbWinFrame::LEFT, "Left" },
227 { FbWinFrame::LEFTTOP, "LeftTop" },
228 { FbWinFrame::RIGHTBOTTOM, "RightBottom" },
229 { FbWinFrame::RIGHT, "Right" },
230 { FbWinFrame::RIGHTTOP, "RightTop" }
231};
232 218
233 219
234} // end anonymous namespace 220} // end anonymous namespace
@@ -238,41 +224,21 @@ const TabPlacementString placement_strings[] = {
238namespace FbTk { 224namespace FbTk {
239 225
240template<> 226template<>
241string FbTk::Resource<FbWinFrame::TabPlacement>:: 227const EnumTraits<FbWinFrame::TabPlacement>::Pair EnumTraits<FbWinFrame::TabPlacement>::s_map[] = {
242getString() const { 228 { "TopLeft", FbWinFrame::TOPLEFT },
243 229 { "Top", FbWinFrame::TOP },
244 size_t i = (m_value == FbTk::Util::clamp(m_value, FbWinFrame::TOPLEFT, FbWinFrame::RIGHTTOP) 230 { "TopRight", FbWinFrame::TOPRIGHT },
245 ? m_value 231 { "BottomLeft", FbWinFrame::BOTTOMLEFT },
246 : FbWinFrame::DEFAULT) - 1; 232 { "Bottom", FbWinFrame::BOTTOM },
247 return placement_strings[i].str; 233 { "BottomRight", FbWinFrame::BOTTOMRIGHT },
248} 234 { "LeftBottom", FbWinFrame::LEFTBOTTOM },
249 235 { "Left", FbWinFrame::LEFT },
250template<> 236 { "LeftTop", FbWinFrame::LEFTTOP },
251void FbTk::Resource<FbWinFrame::TabPlacement>:: 237 { "RightBottom", FbWinFrame::RIGHTBOTTOM },
252setFromString(const char *strval) { 238 { "Right", FbWinFrame::RIGHT },
253 239 { "RightTop", FbWinFrame::RIGHTTOP },
254 size_t i; 240 { NULL, FbWinFrame::RIGHTTOP }
255 for (i = 0; i < sizeof(placement_strings)/sizeof(TabPlacementString); ++i) { 241};
256 if (strcasecmp(strval, placement_strings[i].str) == 0) {
257 m_value = placement_strings[i].placement;
258 return;
259 }
260 }
261 setDefaultValue();
262}
263
264template<>
265void FbTk::Resource<FbWinFrame::TabPlacement>::setFromLua(lua::state &l) {
266 lua::stack_sentry s(l, -1);
267
268 setFromString(l.isstring(-1) ? l.tostring(-1).c_str() : "");
269 l.pop();
270}
271
272template<>
273void FbTk::Resource<FbWinFrame::TabPlacement>::pushToLua(lua::state &l) const {
274 l.pushstring(getString());
275}
276 242
277} // end namespace FbTk 243} // end namespace FbTk
278 244
@@ -1560,7 +1526,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1560 try { 1526 try {
1561 focus_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusNew, 1527 focus_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusNew,
1562 "Focus New Windows", "Focus newly created windows"), 1528 "Focus New Windows", "Focus newly created windows"),
1563 m_resource_manager.getResource<bool>(name() + ".focusNewWindows"), 1529 m_resource_manager.getResource<bool, FbTk::BoolTraits>(name() + ".focusNewWindows"),
1564 saverc_cmd)); 1530 saverc_cmd));
1565 } catch (FbTk::ResourceException e) { 1531 } catch (FbTk::ResourceException e) {
1566 cerr<<e.what()<<endl; 1532 cerr<<e.what()<<endl;