diff options
author | Sampo Savolainen <v2@iki.fi> | 2009-01-02 15:27:19 +0000 |
---|---|---|
committer | Sampo Savolainen <v2@iki.fi> | 2009-01-02 15:27:19 +0000 |
commit | 9d6d7f8b815fc975d159c83cfcba4d20047dc166 (patch) | |
tree | a2598aeaf3afd897a965ccbd463cfe9e4ed5da67 | |
parent | cdb391d1f137117dc6ee1a8a091beed0a9735734 (diff) |
GC from style utility function
git-svn-id: svn://localhost/ardour2/branches/3.0@4378 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/utils.cc | 55 | ||||
-rw-r--r-- | gtk2_ardour/utils.h | 2 |
2 files changed, 57 insertions, 0 deletions
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index f625ae958e..5b83cddbc9 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -384,6 +384,61 @@ color_from_style (string widget_style_name, int state, string attr) return Gdk::Color ("red"); } +Glib::RefPtr<Gdk::GC> +gc_from_style (string widget_style_name, int state, string attr) +{ + GtkStyle* style; + + style = gtk_rc_get_style_by_paths (gtk_settings_get_default(), + widget_style_name.c_str(), + 0, G_TYPE_NONE); + + if (!style) { + error << string_compose (_("no style found for %1, using red"), style) << endmsg; + Glib::RefPtr<Gdk::GC> ret = Gdk::GC::create(); + ret->set_rgb_fg_color(Gdk::Color("red")); + return ret; + } + + if (attr == "fg") { + return Glib::wrap(style->fg_gc[state]); + } + + if (attr == "bg") { + return Glib::wrap(style->bg_gc[state]); + } + + if (attr == "light") { + return Glib::wrap(style->light_gc[state]); + } + + if (attr == "dark") { + return Glib::wrap(style->dark_gc[state]); + } + + if (attr == "mid") { + return Glib::wrap(style->mid_gc[state]); + } + + if (attr == "text") { + return Glib::wrap(style->text_gc[state]); + } + + if (attr == "base") { + return Glib::wrap(style->base_gc[state]); + } + + if (attr == "text_aa") { + return Glib::wrap(style->text_aa_gc[state]); + } + + error << string_compose (_("unknown style attribute %1 requested for color; using \"red\""), attr) << endmsg; + Glib::RefPtr<Gdk::GC> ret = Gdk::GC::create(); + ret->set_rgb_fg_color(Gdk::Color("red")); + return ret; +} + + bool canvas_item_visible (ArdourCanvas::Item* item) { diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h index 29c6bda403..65a3e0a960 100644 --- a/gtk2_ardour/utils.h +++ b/gtk2_ardour/utils.h @@ -68,6 +68,8 @@ Pango::FontDescription* get_font_for_style (std::string widgetname); uint32_t rgba_from_style (std::string, uint32_t, uint32_t, uint32_t, uint32_t, std::string = "fg", int = Gtk::STATE_NORMAL, bool = true); Gdk::Color color_from_style (std::string widget_style_name, int state, std::string attr); +Glib::RefPtr<Gdk::GC> gc_from_style (string widget_style_name, int state, string attr); + void decorate (Gtk::Window& w, Gdk::WMDecoration d); |