aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-06-11 11:00:45 (GMT)
committerPaul Tagliamonte <paultag@fluxbox.org>2012-04-07 02:10:40 (GMT)
commitcc0f1196a5632cd7de035e51d4f5204591f1359d (patch)
treeedaf534c913f1427f59e6a09ceb5387e30bbba16 /src/Screen.cc
parent5f91d3183a1407222bb6929de0eb2bdc314a0bad (diff)
downloadfluxbox_paul-cc0f1196a5632cd7de035e51d4f5204591f1359d.zip
fluxbox_paul-cc0f1196a5632cd7de035e51d4f5204591f1359d.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 6b8efe9..f0d5d4a 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
@@ -1609,7 +1575,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1609 try { 1575 try {
1610 focus_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusNew, 1576 focus_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusNew,
1611 "Focus New Windows", "Focus newly created windows"), 1577 "Focus New Windows", "Focus newly created windows"),
1612 m_resource_manager.getResource<bool>(name() + ".focusNewWindows"), 1578 m_resource_manager.getResource<bool, FbTk::BoolTraits>(name() + ".focusNewWindows"),
1613 saverc_cmd)); 1579 saverc_cmd));
1614 } catch (FbTk::ResourceException & e) { 1580 } catch (FbTk::ResourceException & e) {
1615 cerr<<e.what()<<endl; 1581 cerr<<e.what()<<endl;