aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-06-12 18:24:14 (GMT)
committerPavel Labath <pavelo@centrum.sk>2011-06-15 23:12:53 (GMT)
commit0271b1421c8caf9eb929a64e073fa3f57f697ed9 (patch)
treedc8ac9b58fc962da455cf5db520f7c3fbfdd0e3b
parent2ab8a36685b20d830be53454a2a2375a370ae8aa (diff)
downloadfluxbox_pavel-0271b1421c8caf9eb929a64e073fa3f57f697ed9.zip
fluxbox_pavel-0271b1421c8caf9eb929a64e073fa3f57f697ed9.tar.bz2
Add a function for converting from XResources to lua ones
-rw-r--r--src/FbTk/LResource.cc16
-rw-r--r--src/FbTk/LResource.hh1
-rw-r--r--src/FbTk/Resource.hh4
3 files changed, 21 insertions, 0 deletions
diff --git a/src/FbTk/LResource.cc b/src/FbTk/LResource.cc
index 78511eb..2e2a7c7 100644
--- a/src/FbTk/LResource.cc
+++ b/src/FbTk/LResource.cc
@@ -82,6 +82,22 @@ void LResourceManager::initState(lua::state &l) {
82 l.setfield(lua::REGISTRYINDEX, make_root); 82 l.setfield(lua::REGISTRYINDEX, make_root);
83} 83}
84 84
85void LResourceManager::convert(ResourceManager &old, const std::string &new_file) {
86 lua::state l;
87 initState(l);
88
89 LResourceManager new_rm(old.root(), l);
90 for(ResourceList::const_iterator i = old.begin(); i != old.end(); ++i) {
91 // adding the resource to new_rm will set it to default value
92 // we save the value to a temp variable so we can restore it later
93 const std::string &t = (*i)->getString();
94 new_rm.addResource(**i);
95 (*i)->setFromString(t.c_str());
96 }
97
98 new_rm.save(new_file.c_str(), NULL);
99}
100
85LResourceManager::LResourceManager(const std::string &root, lua::state &l) 101LResourceManager::LResourceManager(const std::string &root, lua::state &l)
86 : ResourceManager_base(root), m_l(&l) { 102 : ResourceManager_base(root), m_l(&l) {
87 l.checkstack(2); 103 l.checkstack(2);
diff --git a/src/FbTk/LResource.hh b/src/FbTk/LResource.hh
index 185a029..1125707 100644
--- a/src/FbTk/LResource.hh
+++ b/src/FbTk/LResource.hh
@@ -38,6 +38,7 @@ namespace FbTk {
38class LResourceManager: public ResourceManager_base { 38class LResourceManager: public ResourceManager_base {
39public: 39public:
40 static void initState(lua::state &l); 40 static void initState(lua::state &l);
41 static void convert(ResourceManager &old, const std::string &new_file);
41 42
42 LResourceManager(const std::string &root, lua::state &l); 43 LResourceManager(const std::string &root, lua::state &l);
43 virtual bool save(const char *filename, const char *); 44 virtual bool save(const char *filename, const char *);
diff --git a/src/FbTk/Resource.hh b/src/FbTk/Resource.hh
index 744178b..00f8769 100644
--- a/src/FbTk/Resource.hh
+++ b/src/FbTk/Resource.hh
@@ -123,6 +123,10 @@ public:
123 template <typename ResourceType, typename Traits> 123 template <typename ResourceType, typename Traits>
124 Resource<ResourceType, Traits> &getResource(const std::string &resource); 124 Resource<ResourceType, Traits> &getResource(const std::string &resource);
125 125
126 const std::string &root() const { return m_root; }
127 ResourceList::const_iterator begin() { return m_resourcelist.begin(); }
128 ResourceList::const_iterator end() { return m_resourcelist.end(); }
129
126protected: 130protected:
127 ResourceList m_resourcelist; 131 ResourceList m_resourcelist;
128 const std::string m_root; 132 const std::string m_root;