diff options
Diffstat (limited to 'src/FbTk/Theme.cc')
-rw-r--r-- | src/FbTk/Theme.cc | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/src/FbTk/Theme.cc b/src/FbTk/Theme.cc index 1efc8a1..ca80ab5 100644 --- a/src/FbTk/Theme.cc +++ b/src/FbTk/Theme.cc | |||
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: Theme.cc,v 1.2 2003/02/23 00:47:34 fluxgen Exp $ | 22 | // $Id: Theme.cc,v 1.3 2003/04/28 22:25:13 fluxgen Exp $ |
23 | 23 | ||
24 | #include "Theme.hh" | 24 | #include "Theme.hh" |
25 | 25 | ||
@@ -29,6 +29,15 @@ | |||
29 | #include "Texture.hh" | 29 | #include "Texture.hh" |
30 | #include "App.hh" | 30 | #include "App.hh" |
31 | 31 | ||
32 | |||
33 | #ifdef HAVE_CONFIG_H | ||
34 | #include "config.h" | ||
35 | #endif // HAVE_CONFIG_H | ||
36 | |||
37 | #ifdef HAVE_XPM | ||
38 | #include <X11/xpm.h> | ||
39 | #endif // HAVE_XPM | ||
40 | |||
32 | #include <iostream> | 41 | #include <iostream> |
33 | 42 | ||
34 | using namespace std; | 43 | using namespace std; |
@@ -71,10 +80,36 @@ void ThemeItem<FbTk::Texture>::setDefaultValue() { | |||
71 | 80 | ||
72 | template <> | 81 | template <> |
73 | void ThemeItem<FbTk::Texture>::load() { | 82 | void ThemeItem<FbTk::Texture>::load() { |
74 | string color_name(ThemeManager::instance().resourceValue(name()+".color", altName()+".Color")); | 83 | string color_name(ThemeManager::instance(). |
75 | string colorto_name(ThemeManager::instance().resourceValue(name()+".colorTo", altName()+".ColorTo")); | 84 | resourceValue(name()+".color", altName()+".Color")); |
85 | string colorto_name(ThemeManager::instance(). | ||
86 | resourceValue(name()+".colorTo", altName()+".ColorTo")); | ||
87 | string pixmap_name(ThemeManager::instance(). | ||
88 | resourceValue(name()+".pixmap", altName()+".Pixmap")); | ||
89 | |||
76 | m_value.color().setFromString(color_name.c_str(), m_tm.screenNum()); | 90 | m_value.color().setFromString(color_name.c_str(), m_tm.screenNum()); |
77 | m_value.colorTo().setFromString(colorto_name.c_str(), m_tm.screenNum()); | 91 | m_value.colorTo().setFromString(colorto_name.c_str(), m_tm.screenNum()); |
92 | |||
93 | #ifdef HAVE_XPM | ||
94 | XpmAttributes xpm_attr; | ||
95 | xpm_attr.valuemask = 0; | ||
96 | Display *dpy = FbTk::App::instance()->display(); | ||
97 | Pixmap pm = 0, mask = 0; | ||
98 | int retvalue = XpmReadFileToPixmap(dpy, | ||
99 | RootWindow(dpy, m_tm.screenNum()), | ||
100 | const_cast<char *>(pixmap_name.c_str()), | ||
101 | &pm, | ||
102 | &mask, &xpm_attr); | ||
103 | if (retvalue == 0) { // success | ||
104 | m_value.pixmap() = pm; | ||
105 | if (mask != 0) | ||
106 | XFreePixmap(dpy, mask); | ||
107 | } else { // failure | ||
108 | // create empty pixmap | ||
109 | m_value.pixmap() = FbTk::FbPixmap(); | ||
110 | } | ||
111 | #endif // HAVE_XPM | ||
112 | |||
78 | } | 113 | } |
79 | 114 | ||
80 | 115 | ||
@@ -179,7 +214,7 @@ std::string ThemeManager::resourceValue(const std::string &name, const std::stri | |||
179 | char *value_type; | 214 | char *value_type; |
180 | 215 | ||
181 | if (*m_database != 0 && XrmGetResource(*m_database, name.c_str(), | 216 | if (*m_database != 0 && XrmGetResource(*m_database, name.c_str(), |
182 | altname.c_str(), &value_type, &value) && value.addr != 0) { | 217 | altname.c_str(), &value_type, &value) && value.addr != 0) { |
183 | return string(value.addr); | 218 | return string(value.addr); |
184 | } | 219 | } |
185 | return ""; | 220 | return ""; |