diff options
author | Pavel Labath <pavelo@centrum.sk> | 2011-06-11 11:00:45 (GMT) |
---|---|---|
committer | Paul Tagliamonte <paultag@fluxbox.org> | 2012-04-07 02:10:40 (GMT) |
commit | cc0f1196a5632cd7de035e51d4f5204591f1359d (patch) | |
tree | edaf534c913f1427f59e6a09ceb5387e30bbba16 /src/Screen.cc | |
parent | 5f91d3183a1407222bb6929de0eb2bdc314a0bad (diff) | |
download | fluxbox_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.cc | 66 |
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 | ||
218 | const 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[] = { | |||
238 | namespace FbTk { | 224 | namespace FbTk { |
239 | 225 | ||
240 | template<> | 226 | template<> |
241 | string FbTk::Resource<FbWinFrame::TabPlacement>:: | 227 | const EnumTraits<FbWinFrame::TabPlacement>::Pair EnumTraits<FbWinFrame::TabPlacement>::s_map[] = { |
242 | getString() 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 }, | |
250 | template<> | 236 | { "LeftTop", FbWinFrame::LEFTTOP }, |
251 | void FbTk::Resource<FbWinFrame::TabPlacement>:: | 237 | { "RightBottom", FbWinFrame::RIGHTBOTTOM }, |
252 | setFromString(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 | |||
264 | template<> | ||
265 | void 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 | |||
272 | template<> | ||
273 | void 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; |