all repos — fluxbox @ 9911b38f8df93871542e3a7cdd5611e42e9bd106

custom fork of the fluxbox windowmanager

extends tooltheme with picColor and pressed texture for toolbar buttons
fluxgen fluxgen
commit

9911b38f8df93871542e3a7cdd5611e42e9bd106

parent

ec1049e89458f67c040bff905e1df862ae1587d7

2 files changed, 58 insertions(+), 0 deletions(-)

jump to
A 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); +} + + +
A 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