From 334a78fa7ad59941e7aeb261113dbcb72635b534 Mon Sep 17 00:00:00 2001
From: fluxgen <fluxgen>
Date: Mon, 11 Aug 2003 15:49:56 +0000
Subject: theme item for iconbutton

---
 src/IconButtonTheme.cc | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++
 src/IconButtonTheme.hh | 63 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 131 insertions(+)
 create mode 100644 src/IconButtonTheme.cc
 create mode 100644 src/IconButtonTheme.hh

diff --git a/src/IconButtonTheme.cc b/src/IconButtonTheme.cc
new file mode 100644
index 0000000..d881329
--- /dev/null
+++ b/src/IconButtonTheme.cc
@@ -0,0 +1,68 @@
+// IconButtonTheme.cc
+// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.net)
+//                and Simon Bowden    (rathnor 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: IconButtonTheme.cc,v 1.1 2003/08/11 15:49:56 fluxgen Exp $
+
+#include "IconButtonTheme.hh"
+
+#include "FbTk/App.hh"
+
+IconButtonTheme::IconButtonTheme(int screen_num):
+    FbTk::Theme(screen_num),
+    m_selected_texture(*this, "iconButton.selected", "IconButton.Selected"),
+    m_unselected_texture(*this, "iconButton.unselected", "IconButton.Unselected"),
+    m_selected_font(*this, "iconButton.selectedFont", "IconButton.SelectedFont"),
+    m_unselected_font(*this, "iconButton.unselectedFont", "IconButton.UnselectedFont"),
+    m_selected_color(*this, "iconButton.selectedTextColor", "IconButton.SelectedTextColor"),
+    m_unselected_color(*this, "iconButton.unselectedTextColor", "IconButton.UnselectedTextColor") {
+
+    // load default font
+    selectedFont().load("fixed");
+    unselectedFont().load("fixed");
+
+    // create graphic context
+    Display *disp = FbTk::App::instance()->display();
+    m_selected_gc = XCreateGC(disp, RootWindow(disp, screen_num), 0, 0);
+    m_unselected_gc = XCreateGC(disp, RootWindow(disp, screen_num), 0, 0);
+}
+
+IconButtonTheme::~IconButtonTheme() {
+    Display *disp = FbTk::App::instance()->display();
+    XFreeGC(disp, m_selected_gc);
+    XFreeGC(disp, m_unselected_gc);
+}
+
+void IconButtonTheme::reconfigTheme() {
+
+    XGCValues gcv;
+    unsigned long gc_value_mask = GCForeground;
+    Display *disp = FbTk::App::instance()->display();
+
+    gcv.foreground = m_selected_color->pixel();    
+    XChangeGC(disp, m_selected_gc, gc_value_mask, &gcv);
+
+    gcv.foreground = m_unselected_color->pixel();    
+    XChangeGC(disp, m_unselected_gc, gc_value_mask, &gcv);
+
+    m_theme_change.notify();
+}
+
diff --git a/src/IconButtonTheme.hh b/src/IconButtonTheme.hh
new file mode 100644
index 0000000..ba78212
--- /dev/null
+++ b/src/IconButtonTheme.hh
@@ -0,0 +1,63 @@
+// IconButtonTheme.hh
+// Copyright (c) 2003 Henrik Kinnunen (fluxgen at users.sourceforge.net)
+//                and Simon Bowden    (rathnor 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: IconButtonTheme.hh,v 1.1 2003/08/11 15:49:56 fluxgen Exp $
+
+#ifndef ICONBUTTONTHEME_HH
+#define ICONBUTTONTHEME_HH
+
+#include "FbTk/Theme.hh"
+#include "FbTk/Font.hh"
+#include "FbTk/Color.hh"
+#include "FbTk/Texture.hh"
+#include "FbTk/Subject.hh"
+
+class IconButtonTheme: public FbTk::Theme {
+public:
+    explicit IconButtonTheme(int screen_num);
+    virtual ~IconButtonTheme();
+
+    void reconfigTheme();
+
+    const FbTk::Texture &selectedTexture() const { return *m_selected_texture; }
+    const FbTk::Texture &unselectedTexture() const { return *m_unselected_texture; }
+
+    FbTk::Font &selectedFont() { return *m_selected_font; }
+    const FbTk::Font &selectedFont() const { return *m_selected_font; }
+    FbTk::Font &unselectedFont() { return *m_unselected_font; }
+    const FbTk::Font &unselectedFont() const { return *m_unselected_font; }
+
+    GC selectedGC() const { return m_selected_gc; }
+    GC unselectedGC() const { return m_unselected_gc; }
+
+    FbTk::Subject &themeChangeSig() { return m_theme_change; }
+
+private:
+    FbTk::ThemeItem<FbTk::Texture> m_selected_texture, m_unselected_texture;
+    FbTk::ThemeItem<FbTk::Font> m_selected_font, m_unselected_font;
+    FbTk::ThemeItem<FbTk::Color> m_selected_color, m_unselected_color;
+    GC m_selected_gc, m_unselected_gc;
+
+    FbTk::Subject m_theme_change;
+};
+
+#endif // ICONBUTTONTHEME_HH
-- 
cgit v0.11.2