From 2fef25747f1010ad965ddb2a483da9a94732b530 Mon Sep 17 00:00:00 2001 From: fluxgen Date: Sun, 12 Sep 2004 14:01:03 +0000 Subject: holds main resource functions --- src/Resources.cc | 228 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 228 insertions(+) create mode 100644 src/Resources.cc diff --git a/src/Resources.cc b/src/Resources.cc new file mode 100644 index 0000000..9fd1dd6 --- /dev/null +++ b/src/Resources.cc @@ -0,0 +1,228 @@ +// holds main resource functions + +#include "fluxbox.hh" +#include "FbTk/StringUtil.hh" + +#include +#include + +using namespace std; +using namespace FbTk; + +//----------------------------------------------------------------- +//---- accessors for int, bool, and some enums with Resource ------ +//----------------------------------------------------------------- + +template<> +void FbTk::Resource:: +setFromString(const char* strval) { + int val; + if (sscanf(strval, "%d", &val)==1) + *this = val; +} + +template<> +void FbTk::Resource:: +setFromString(const char *strval) { + *this = strval; +} + +template<> +void FbTk::Resource:: +setFromString(char const *strval) { + *this = (bool)!strcasecmp(strval, "true"); +} + +template<> +void FbTk::Resource:: +setFromString(char const *strval) { + vector val; + StringUtil::stringtok(val, strval); + int size=val.size(); + //clear old values + m_value.clear(); + + for (int i=0; i +void FbTk::Resource:: +setFromString(char const *strval) { + if (strcasecmp(strval, "Titlebar")==0) + m_value= Fluxbox::ATTACH_AREA_TITLEBAR; + else + m_value= Fluxbox::ATTACH_AREA_WINDOW; +} + +template<> +void FbTk::Resource:: +setFromString(const char *strval) { + if (sscanf(strval, "%ul", &m_value) != 1) + setDefaultValue(); +} + +template<> +void FbTk::Resource:: +setFromString(const char *strval) { + if (sscanf(strval, "%ul", &m_value) != 1) + setDefaultValue(); +} + + +//----------------------------------------------------------------- +//---- manipulators for int, bool, and some enums with Resource --- +//----------------------------------------------------------------- +template<> +std::string FbTk::Resource:: +getString() { + return std::string(**this == true ? "true" : "false"); +} + +template<> +std::string FbTk::Resource:: +getString() { + char strval[256]; + sprintf(strval, "%d", **this); + return std::string(strval); +} + +template<> +std::string FbTk::Resource:: +getString() { return **this; } + + +template<> +std::string FbTk::Resource:: +getString() { + string retval; + int size=m_value.size(); + for (int i=0; i +std::string FbTk::Resource:: +getString() { + if (m_value == Fluxbox::ATTACH_AREA_TITLEBAR) + return "Titlebar"; + else + return "Window"; +} + +template<> +string FbTk::Resource:: +getString() { + char tmpstr[128]; + sprintf(tmpstr, "%ul", m_value); + return string(tmpstr); +} + +template<> +string FbTk::Resource:: +getString() { + char tmpstr[128]; + sprintf(tmpstr, "%ul", m_value); + return string(tmpstr); +} + +template<> +void FbTk::Resource:: +setFromString(const char *strval) { + int tempnum = 0; + if (sscanf(strval, "%d", &tempnum) == 1) + m_value = tempnum; + else if (strcasecmp(strval, "Menu") == 0) + m_value = Fluxbox::instance()->getMenuLayer(); + else if (strcasecmp(strval, "AboveDock") == 0) + m_value = Fluxbox::instance()->getAboveDockLayer(); + else if (strcasecmp(strval, "Dock") == 0) + m_value = Fluxbox::instance()->getDockLayer(); + else if (strcasecmp(strval, "Top") == 0) + m_value = Fluxbox::instance()->getTopLayer(); + else if (strcasecmp(strval, "Normal") == 0) + m_value = Fluxbox::instance()->getNormalLayer(); + else if (strcasecmp(strval, "Bottom") == 0) + m_value = Fluxbox::instance()->getBottomLayer(); + else if (strcasecmp(strval, "Desktop") == 0) + m_value = Fluxbox::instance()->getDesktopLayer(); + else + setDefaultValue(); +} + + +template<> +string FbTk::Resource:: +getString() { + + if (m_value.getNum() == Fluxbox::instance()->getMenuLayer()) + return string("Menu"); + else if (m_value.getNum() == Fluxbox::instance()->getAboveDockLayer()) + return string("AboveDock"); + else if (m_value.getNum() == Fluxbox::instance()->getDockLayer()) + return string("Dock"); + else if (m_value.getNum() == Fluxbox::instance()->getTopLayer()) + return string("Top"); + else if (m_value.getNum() == Fluxbox::instance()->getNormalLayer()) + return string("Normal"); + else if (m_value.getNum() == Fluxbox::instance()->getBottomLayer()) + return string("Bottom"); + else if (m_value.getNum() == Fluxbox::instance()->getDesktopLayer()) + return string("Desktop"); + else { + char tmpstr[128]; + sprintf(tmpstr, "%d", m_value.getNum()); + return string(tmpstr); + } +} +template<> +void FbTk::Resource:: +setFromString(const char *strval) { + if (sscanf(strval, "%ld", &m_value) != 1) + setDefaultValue(); +} + +template<> +string FbTk::Resource:: +getString() { + char tmpstr[128]; + sprintf(tmpstr, "%ld", m_value); + return string(tmpstr); +} -- cgit v0.11.2