From 3633489dbffbb798cfe0ce948cdf933e3fdb31a1 Mon Sep 17 00:00:00 2001 From: fluxgen Date: Mon, 2 Dec 2002 19:56:38 +0000 Subject: toolbar theme --- src/ToolbarTheme.cc | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/ToolbarTheme.hh | 87 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+) create mode 100644 src/ToolbarTheme.cc create mode 100644 src/ToolbarTheme.hh diff --git a/src/ToolbarTheme.cc b/src/ToolbarTheme.cc new file mode 100644 index 0000000..138104f --- /dev/null +++ b/src/ToolbarTheme.cc @@ -0,0 +1,109 @@ +// ToolbarTheme.cc a theme class for Toolbar +// Copyright (c) 2002 Henrik Kinnunen (fluxgen at users.sourceforge.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// $Id: ToolbarTheme.cc,v 1.1 2002/12/02 19:56:38 fluxgen Exp $ + +#include "ToolbarTheme.hh" + +#include "App.hh" +#include +using namespace std; + +ToolbarTheme::ToolbarTheme(int screen_num): + FbTk::Theme(screen_num), + m_label_textcolor(*this, + "toolbar.label.textColor", "Toolbar.Label.TextColor"), + m_window_textcolor(*this, + "toolbar.windowLabel.textColor", + "Toolbar.WindowLabel.TextColor"), + m_clock_textcolor(*this, + "toolbar.clock.textColor", "Toolbar.Clock.TextColor"), + m_button_color(*this, + "toolbar.button.picColor", "Toolbar.Button.PicColor"), + m_toolbar(*this, "toolbar", "Toolbar"), + m_label(*this, "toolbar.label", "Toolbar.Label"), + m_window(*this, "toolbar.windowLabel", "Toolbar.WindowLabel"), + m_button(*this, "toolbar.button", "Toolbar.Button"), + m_pressed_button(*this, + "toolbar.button.pressed", "Toolbar.Button.Pressed"), + m_clock(*this, "toolbar.clock", "Toolbar.Clock"), + m_font(*this, "toolbar.font", "Toolbar.Font"), + m_justify(*this, "toolbar.justify", "Toolbar.Justify"), + m_display(FbTk::App::instance()->display()){ + + Window rootwindow = RootWindow(m_display, screen_num); + + XGCValues gcv; + unsigned long gc_value_mask = GCForeground; + + gcv.foreground = m_label_textcolor->pixel(); + + m_label_text_gc = + XCreateGC(m_display, rootwindow, + gc_value_mask, &gcv); + + gcv.foreground = m_window_textcolor->pixel(); + m_window_text_gc = + XCreateGC(m_display, rootwindow, + gc_value_mask, &gcv); + + gcv.foreground = m_clock_textcolor->pixel(); + m_clock_text_gc = + XCreateGC(m_display, rootwindow, + gc_value_mask, &gcv); + + gcv.foreground = m_button_color->pixel(); + m_button_pic_gc = + XCreateGC(m_display, rootwindow, + gc_value_mask, &gcv); + // load from current database + FbTk::ThemeManager::instance().loadTheme(*this); +} + +ToolbarTheme::~ToolbarTheme() { + XFreeGC(m_display, m_button_pic_gc); + XFreeGC(m_display, m_clock_text_gc); + XFreeGC(m_display, m_label_text_gc); + XFreeGC(m_display, m_window_text_gc); +} + +void ToolbarTheme::reconfigTheme() { + + XGCValues gcv; + unsigned long gc_value_mask = GCForeground; + + + gcv.foreground = m_label_textcolor->pixel(); + XChangeGC(m_display, m_label_text_gc, + gc_value_mask, &gcv); + + gcv.foreground = m_window_textcolor->pixel(); + XChangeGC(m_display, m_window_text_gc, + gc_value_mask, &gcv); + + gcv.foreground = m_clock_textcolor->pixel(); + XChangeGC(m_display, m_clock_text_gc, + gc_value_mask, &gcv); + + gcv.foreground = m_button_color->pixel(); + XChangeGC(m_display, m_button_pic_gc, + gc_value_mask, &gcv); +} diff --git a/src/ToolbarTheme.hh b/src/ToolbarTheme.hh new file mode 100644 index 0000000..f40ed19 --- /dev/null +++ b/src/ToolbarTheme.hh @@ -0,0 +1,87 @@ +// ToolbarTheme.hh a theme class for Toolbar +// Copyright (c) 2002 Henrik Kinnunen (fluxgen at users.sourceforge.net) +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// $Id: ToolbarTheme.hh,v 1.1 2002/12/02 19:56:08 fluxgen Exp $ + +#ifndef TOOLBARTHEME_HH +#define TOOLBARTHEME_HH + +#include "FbTk/Theme.hh" +#include "Font.hh" +#include "Texture.hh" +#include "Color.hh" +#include "Text.hh" +/** + Toolbar theme class container +*/ +class ToolbarTheme: public FbTk::Theme { +public: + explicit ToolbarTheme(int screen_num); + virtual ~ToolbarTheme(); + + void reconfigTheme(); + + /** + @name colors + */ + ///@{ + const FbTk::Color &labelTextColor() const { return *m_label_textcolor; } + const FbTk::Color &windowTextColor() const { return *m_window_textcolor; } + const FbTk::Color &clockTextColor() const { return *m_clock_textcolor; } + const FbTk::Color &buttonColor() const { return *m_button_color; } + ///@} + /** + @name textures + */ + ///@{ + const FbTk::Texture &toolbar() const { return *m_toolbar; } + const FbTk::Texture &label() const { return *m_label; } + const FbTk::Texture &window() const { return *m_window; } + const FbTk::Texture &button() const { return *m_button; } + const FbTk::Texture &pressedButton() const { return *m_pressed_button; } + const FbTk::Texture &clock() const { return *m_clock; } + ///@} + const FbTk::Font &font() const { return *m_font; } + FbTk::Font &font() { return *m_font; } + /** + @name graphic context + */ + ///@{ + GC labelTextGC() const { return m_label_text_gc; } + GC windowTextGC() const { return m_window_text_gc; } + GC clockTextGC() const { return m_clock_text_gc; } + GC buttonPicGC() const { return m_button_pic_gc; } + ///@} + FbTk::Justify justify() const { return *m_justify; } +private: + // text colors + FbTk::ThemeItem m_label_textcolor, m_window_textcolor, m_clock_textcolor; + FbTk::ThemeItem m_button_color; + // textures + FbTk::ThemeItem m_toolbar, m_label, m_window, m_button, m_pressed_button, m_clock; + FbTk::ThemeItem m_font; + FbTk::ThemeItem m_justify; + // graphic context + GC m_label_text_gc, m_window_text_gc, m_clock_text_gc, m_button_pic_gc; + Display *m_display; +}; + +#endif // TOOLBARTHEME_HH -- cgit v0.11.2