X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fgtkmm2ext%2Fgtkmm2ext%2Futils.h;h=188da0862d3a01df075c52c7cc6a8124c2c28ef3;hb=b9c9777b9a2be6fab826fd1236820bb67859d292;hp=e7c36d19e01f5f70f4df6f531dc1f21c754926a8;hpb=664e715a002450ac0f079411f6f051c122a4322a;p=ardour.git diff --git a/libs/gtkmm2ext/gtkmm2ext/utils.h b/libs/gtkmm2ext/gtkmm2ext/utils.h index e7c36d19e0..188da0862d 100644 --- a/libs/gtkmm2ext/gtkmm2ext/utils.h +++ b/libs/gtkmm2ext/gtkmm2ext/utils.h @@ -1,5 +1,5 @@ /* - Copyright (C) 1999 Paul Barton-Davis + Copyright (C) 1999 Paul Barton-Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -28,10 +28,14 @@ #include #include +#include +#include #include #include /* for WMDecoration */ #include +#include "gtkmm2ext/visibility.h" + namespace Cairo { class Context; } @@ -45,81 +49,140 @@ namespace Gtk { } namespace Gtkmm2ext { - void init (const char*); + LIBGTKMM2EXT_API void init (const char*); + + LIBGTKMM2EXT_API bool event_inside_widget_window (Gtk::Widget& widget, GdkEvent* ev); + + LIBGTKMM2EXT_API std::string fit_to_pixels (const std::string&, int pixel_width, Pango::FontDescription& font, int& actual_width, bool with_ellipses = false); + LIBGTKMM2EXT_API std::pair fit_to_pixels (cairo_t *, std::string, double); + LIBGTKMM2EXT_API int pixel_width (const std::string& str, const Pango::FontDescription& font); + LIBGTKMM2EXT_API void pixel_size (const std::string& str, const Pango::FontDescription& font, int& width, int& height); + + LIBGTKMM2EXT_API void get_ink_pixel_size (Glib::RefPtr, + int& width, int& height); + - std::string fit_to_pixels (const std::string&, int pixel_width, Pango::FontDescription& font, int& actual_width, bool with_ellipses = false); - std::pair fit_to_pixels (cairo_t *, std::string, double); - int pixel_width (const std::string& str, Pango::FontDescription& font); + LIBGTKMM2EXT_API void get_pixel_size (Glib::RefPtr, + int& width, int& height); - void get_ink_pixel_size (Glib::RefPtr, - int& width, int& height); + LIBGTKMM2EXT_API void set_size_request_to_display_given_text (Gtk::Widget &w, + const gchar *text, + gint hpadding, + gint vpadding); - void set_size_request_to_display_given_text (Gtk::Widget &w, - const gchar *text, - gint hpadding, - gint vpadding); + LIBGTKMM2EXT_API void set_size_request_to_display_given_text_width (Gtk::Widget& w, + const gchar* htext, + gint hpadding, + gint vpadding); - void set_size_request_to_display_given_text (Gtk::Widget &w, - const std::vector&, - gint hpadding, - gint vpadding); + LIBGTKMM2EXT_API void set_height_request_to_display_any_text (Gtk::Widget& w, gint vpadding); - Glib::RefPtr pixbuf_from_string (const std::string& name, - const Pango::FontDescription& font, - int clip_width, - int clip_height, - Gdk::Color fg); + LIBGTKMM2EXT_API void set_size_request_to_display_given_text (Gtk::Widget &w, + std::string const & text, + gint hpadding, + gint vpadding); + LIBGTKMM2EXT_API void set_size_request_to_display_given_text (Gtk::Widget &w, + const std::vector&, + gint hpadding, + gint vpadding); + LIBGTKMM2EXT_API void set_size_request_to_display_given_text (Gtk::Widget &w, + const std::vector&, + const std::string& hpadding, + gint vpadding); - void set_popdown_strings (Gtk::ComboBoxText&, + + LIBGTKMM2EXT_API Glib::RefPtr pixbuf_from_string (const std::string& name, + const Pango::FontDescription& font, + int clip_width, + int clip_height, + Gdk::Color fg); + + LIBGTKMM2EXT_API void anchored_menu_popup (Gtk::Menu* const menu, + Gtk::Widget* const anchor, + const std::string& selected, + guint button, guint32 time); + + LIBGTKMM2EXT_API void set_popdown_strings (Gtk::ComboBoxText&, const std::vector&); - template void deferred_delete (void *ptr) { + LIBGTKMM2EXT_API void get_popdown_strings (Gtk::ComboBoxText&, + std::vector&); + + LIBGTKMM2EXT_API size_t get_popdown_string_count (Gtk::ComboBoxText&); + + LIBGTKMM2EXT_API bool contains_value (Gtk::ComboBoxText&, + const std::string); + + LIBGTKMM2EXT_API bool set_active_text_if_present (Gtk::ComboBoxText&, + const std::string); + + template /*LIBGTKMM2EXT_API*/ void deferred_delete (void *ptr) { delete static_cast (ptr); } - GdkWindow* get_paned_handle (Gtk::Paned& paned); - void set_decoration (Gtk::Window* win, Gdk::WMDecoration decor); - void set_treeview_header_as_default_label(Gtk::TreeViewColumn *c); - Glib::RefPtr get_bogus_drawable(); - void detach_menu (Gtk::Menu&); + LIBGTKMM2EXT_API GdkWindow* get_paned_handle (Gtk::Paned& paned); + LIBGTKMM2EXT_API void set_decoration (Gtk::Window* win, Gdk::WMDecoration decor); + LIBGTKMM2EXT_API void set_treeview_header_as_default_label(Gtk::TreeViewColumn *c); + LIBGTKMM2EXT_API Glib::RefPtr get_bogus_drawable(); + LIBGTKMM2EXT_API void detach_menu (Gtk::Menu&); - Glib::RefPtr window_to_draw_on (Gtk::Widget& w, Gtk::Widget** parent); + LIBGTKMM2EXT_API Glib::RefPtr window_to_draw_on (Gtk::Widget& w, Gtk::Widget** parent); - bool possibly_translate_keyval_to_make_legal_accelerator (uint32_t& keyval); - uint32_t possibly_translate_legal_accelerator_to_real_key (uint32_t keyval); + LIBGTKMM2EXT_API bool possibly_translate_keyval_to_make_legal_accelerator (uint32_t& keyval); + LIBGTKMM2EXT_API uint32_t possibly_translate_legal_accelerator_to_real_key (uint32_t keyval); - int physical_screen_height (Glib::RefPtr); - int physical_screen_width (Glib::RefPtr); + LIBGTKMM2EXT_API int physical_screen_height (Glib::RefPtr); + LIBGTKMM2EXT_API int physical_screen_width (Glib::RefPtr); - void container_clear (Gtk::Container&); + LIBGTKMM2EXT_API void container_clear (Gtk::Container&); /* C++ API for rounded rectangles */ - - void rounded_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); - void rounded_top_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); - void rounded_top_left_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); - void rounded_top_right_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); - void rounded_top_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); - void rounded_bottom_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); - void rounded_right_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); + + LIBGTKMM2EXT_API void rounded_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_left_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_right_rectangle (Cairo::RefPtr context, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_bottom_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_right_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_left_half_rectangle (Cairo::RefPtr, double x, double y, double w, double h, double r=10); /* C API for rounded rectangles */ - void rounded_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); - void rounded_top_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); - void rounded_top_left_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); - void rounded_top_right_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); - void rounded_top_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); - void rounded_bottom_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); - void rounded_right_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_left_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_right_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_top_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_bottom_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_right_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_left_half_rectangle (cairo_t* cr, double x, double y, double w, double h, double r=10); + + LIBGTKMM2EXT_API Gtk::Label* left_aligned_label (std::string const &); + LIBGTKMM2EXT_API Gtk::Label* right_aligned_label (std::string const &); + + LIBGTKMM2EXT_API void set_no_tooltip_whatsoever (Gtk::Widget &); + LIBGTKMM2EXT_API void enable_tooltips (); + LIBGTKMM2EXT_API void disable_tooltips (); + + LIBGTKMM2EXT_API void convert_bgra_to_rgba (guint8 const *, guint8 * dst, int, int); + LIBGTKMM2EXT_API const char* event_type_string (int event_type); + + /* glibmm ustring workaround + * + * Glib::operator<<(std::ostream&, Glib::ustring const&) internally calls + * g_locale_from_utf8() which uses loadlocale which is not thread-safe on OSX + * + * use a std::string + */ + LIBGTKMM2EXT_API std::string markup_escape_text (std::string const& s); - Gtk::Label* left_aligned_label (std::string const &); + LIBGTKMM2EXT_API void add_volume_shortcuts (Gtk::FileChooser& c); - void set_no_tooltip_whatsoever (Gtk::Widget &); - void enable_tooltips (); - void disable_tooltips (); + LIBGTKMM2EXT_API float paned_position_as_fraction (Gtk::Paned& paned, bool h); + LIBGTKMM2EXT_API void paned_set_position_as_fraction (Gtk::Paned& paned, float fraction, bool h); - void convert_bgra_to_rgba (guint8 const *, guint8 * dst, int, int); + LIBGTKMM2EXT_API std::string show_gdk_event_state (int state); }; #endif /* __gtkmm2ext_utils_h__ */