move show_gdk_event_state() utility function from gtk2_ardour to libs/gtkmm2ext
[ardour.git] / libs / gtkmm2ext / utils.cc
index 2b0eb86a9ca1fc6b6349810875c6690992ef51f8..0f85cd07d0ecf0055c9a049216fa06ef0ace458d 100644 (file)
@@ -33,8 +33,9 @@
 #include <gtkmm/tooltip.h>
 
 #include "gtkmm2ext/utils.h"
+#include "gtkmm2ext/persistent_tooltip.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 
@@ -836,12 +837,14 @@ void
 Gtkmm2ext::enable_tooltips ()
 {
        gtk_rc_parse_string ("gtk-enable-tooltips = 1");
+       PersistentTooltip::set_tooltips_enabled (true);
 }
 
 void
 Gtkmm2ext::disable_tooltips ()
 {
        gtk_rc_parse_string ("gtk-enable-tooltips = 0");
+       PersistentTooltip::set_tooltips_enabled (false);
 }
 
 bool
@@ -989,3 +992,81 @@ Gtkmm2ext::add_volume_shortcuts (Gtk::FileChooser& c)
        }
 #endif
 }
+
+float
+Gtkmm2ext::paned_position_as_fraction (Gtk::Paned& paned, bool h)
+{
+       const guint pos = gtk_paned_get_position (const_cast<GtkPaned*>(static_cast<const Gtk::Paned*>(&paned)->gobj()));
+       return (double) pos / (h ? paned.get_allocation().get_height() : paned.get_allocation().get_width());
+}
+
+void
+Gtkmm2ext::paned_set_position_as_fraction (Gtk::Paned& paned, float fraction, bool h)
+{
+       gint v = (h ? paned.get_allocation().get_height() : paned.get_allocation().get_width());
+
+       if (v < 1) {
+               return;
+       }
+
+       paned.set_position ((guint) floor (fraction * v));
+}
+
+string
+Gtkmm2ext::show_gdk_event_state (int state)
+{
+       string s;
+       if (state & GDK_SHIFT_MASK) {
+               s += "+SHIFT";
+       }
+       if (state & GDK_LOCK_MASK) {
+               s += "+LOCK";
+       }
+       if (state & GDK_CONTROL_MASK) {
+               s += "+CONTROL";
+       }
+       if (state & GDK_MOD1_MASK) {
+               s += "+MOD1";
+       }
+       if (state & GDK_MOD2_MASK) {
+               s += "+MOD2";
+       }
+       if (state & GDK_MOD3_MASK) {
+               s += "+MOD3";
+       }
+       if (state & GDK_MOD4_MASK) {
+               s += "+MOD4";
+       }
+       if (state & GDK_MOD5_MASK) {
+               s += "+MOD5";
+       }
+       if (state & GDK_BUTTON1_MASK) {
+               s += "+BUTTON1";
+       }
+       if (state & GDK_BUTTON2_MASK) {
+               s += "+BUTTON2";
+       }
+       if (state & GDK_BUTTON3_MASK) {
+               s += "+BUTTON3";
+       }
+       if (state & GDK_BUTTON4_MASK) {
+               s += "+BUTTON4";
+       }
+       if (state & GDK_BUTTON5_MASK) {
+               s += "+BUTTON5";
+       }
+       if (state & GDK_SUPER_MASK) {
+               s += "+SUPER";
+       }
+       if (state & GDK_HYPER_MASK) {
+               s += "+HYPER";
+       }
+       if (state & GDK_META_MASK) {
+               s += "+META";
+       }
+       if (state & GDK_RELEASE_MASK) {
+               s += "+RELEASE";
+       }
+
+       return s;
+}