X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Futils.cc;h=5ddd044b801bdfd0c1a02aae5782030efe48e551;hb=2dc3c8b3650266eba09cf7fe53c39c6728d4d5b6;hp=7ddccc0f7e9467c99cc2f1c1d178275644956401;hpb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;p=ardour.git diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 7ddccc0f7e..5ddd044b80 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -28,26 +28,31 @@ #include #include #include -#include -#include + +#include + +#include #include #include #include -#include -#include +#include +#include +#include #include "pbd/basename.h" #include "pbd/file_utils.h" #include "pbd/stacktrace.h" -#include - +#include "ardour/audioengine.h" #include "ardour/filesystem_paths.h" #include "ardour/search_paths.h" +#include "gtkmm2ext/colors.h" +#include "gtkmm2ext/utils.h" + #include "canvas/item.h" -#include "canvas/utils.h" +#include "actions.h" #include "debug.h" #include "public_editor.h" #include "keyboard.h" @@ -96,6 +101,39 @@ ARDOUR_UI_UTILS::just_hide_it (GdkEventAny */*ev*/, Gtk::Window *win) return 0; } +static bool +idle_notify_engine_stopped () +{ + Glib::RefPtr act = ActionManager::get_action ("Window", "toggle-audio-midi-setup"); + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + + MessageDialog msg ( + _("The current operation is not possible because of an error communicating with the audio hardware."), + false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE, true); + + msg.add_button (_("Cancel"), Gtk::RESPONSE_CANCEL); + + if (tact && !tact->get_active()) { + msg.add_button (_("Configure Hardware"), Gtk::RESPONSE_OK); + } + + if (msg.run () == Gtk::RESPONSE_OK) { + tact->set_active (); + } + return false; /* do not call again */ +} + +bool +ARDOUR_UI_UTILS::engine_is_running () +{ + if (ARDOUR::AudioEngine::instance()->running ()) { + return true; + } + Glib::signal_idle().connect (sigc::ptr_fun (&idle_notify_engine_stopped)); + return false; +} + + /* xpm2rgb copied from nixieclock, which bore the legend: nixieclock - a nixie desktop timepiece @@ -276,7 +314,7 @@ Gdk::Color ARDOUR_UI_UTILS::gdk_color_from_rgba (uint32_t rgba) { Gdk::Color c; - set_color_from_rgb (c, rgba); + set_color_from_rgb (c, rgba >> 8); return c; } @@ -350,65 +388,6 @@ ARDOUR_UI_UTILS::emulate_key_event (unsigned int keyval) return relay_key_press(&ev, &main_window); } -string -ARDOUR_UI_UTILS::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; -} - Glib::RefPtr ARDOUR_UI_UTILS::get_xpm (std::string name) { @@ -462,7 +441,12 @@ ARDOUR_UI_UTILS::get_color_themes (map& themes) continue; } - themes.insert (make_pair (prop->value(), Glib::filename_to_utf8 (basename_nosuffix(*e)))); + std::string color_name = basename_nosuffix(*e); + size_t sep = color_name.find_first_of("-"); + if (sep != string::npos) { + color_name = color_name.substr (0, sep); + } + themes.insert (make_pair (prop->value(), color_name)); } } }