From 9911b38f8df93871542e3a7cdd5611e42e9bd106 Mon Sep 17 00:00:00 2001 From: fluxgen <fluxgen> Date: Mon, 13 Oct 2003 23:41:07 +0000 Subject: extends tooltheme with picColor and pressed texture for toolbar buttons --- src/ButtonTheme.cc | 33 +++++++++++++++++++++++++++++++++ src/ButtonTheme.hh | 25 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/ButtonTheme.cc create mode 100644 src/ButtonTheme.hh diff --git a/src/ButtonTheme.cc b/src/ButtonTheme.cc new file mode 100644 index 0000000..225bbb7 --- /dev/null +++ b/src/ButtonTheme.cc @@ -0,0 +1,33 @@ +#include "ButtonTheme.hh" +#include "FbTk/App.hh" + +//!! TODO: still missing *.pressed.picColor +ButtonTheme::ButtonTheme(int screen_num, + const std::string &name, + const std::string &alt_name): + ToolTheme(screen_num, name, alt_name), + m_pic_color(*this, name + ".picColor", alt_name + ".PicColor"), + m_pressed_texture(*this, name + ".pressed", alt_name + ".Pressed"), + m_gc(RootWindow(FbTk::App::instance()->display(), screen_num)) { + +} + +bool ButtonTheme::fallback(FbTk::ThemeItem_base &item) { + + if (item.name().find(".borderWidth") != std::string::npos) { + return FbTk::ThemeManager::instance().loadItem(item, "borderWidth", "BorderWidth"); + } + + if (item.name().find(".borderColor") != std::string::npos) { + return FbTk::ThemeManager::instance().loadItem(item, "borderColor", "BorderColor"); + } + + return ToolTheme::fallback(item); +} + +void ButtonTheme::reconfigTheme() { + m_gc.setForeground(*m_pic_color); +} + + + diff --git a/src/ButtonTheme.hh b/src/ButtonTheme.hh new file mode 100644 index 0000000..2636960 --- /dev/null +++ b/src/ButtonTheme.hh @@ -0,0 +1,25 @@ +#ifndef BUTTONTHEME_HH +#define BUTTONTHEME_HH + +#include "ToolTheme.hh" + +#include "FbTk/GContext.hh" + +class ButtonTheme: public ToolTheme { +public: + ButtonTheme(int screen_num, + const std::string &name, const std::string &alt_name); + virtual ~ButtonTheme() { } + + bool fallback(FbTk::ThemeItem_base &item); + void reconfigTheme(); + + inline const FbTk::Texture &pressed() const { return *m_pressed_texture; } + inline GC gc() const { return m_gc.gc(); } +private: + FbTk::ThemeItem<FbTk::Color> m_pic_color; + FbTk::ThemeItem<FbTk::Texture> m_pressed_texture; + FbTk::GContext m_gc; +}; + +#endif // BUTTONTHEME_HH -- cgit v0.11.2