Gracefully handle templates that lack contents in their description or created_with...
[ardour.git] / gtk2_ardour / sfdb_ui.cc
index bd64df19d707d1ca768ba425855cca56998a7035..c9788c8314fcb79a341e433ac42461e53c5570b0 100644 (file)
@@ -31,6 +31,7 @@
 #include <limits.h>
 
 #include <gtkmm/box.h>
+#include <gtkmm/scrolledwindow.h>
 #include <gtkmm/stock.h>
 
 #include "pbd/gstdio_compat.h"
@@ -62,7 +63,6 @@
 #include "ardour_ui.h"
 #include "editing.h"
 #include "gui_thread.h"
-#include "prompter.h"
 #include "sfdb_ui.h"
 #include "editing.h"
 #include "gain_meter.h"
@@ -237,6 +237,9 @@ SoundFileBox::SoundFileBox (bool /*persistent*/)
        play_btn.signal_clicked().connect (sigc::mem_fun (*this, &SoundFileBox::audition));
        stop_btn.signal_clicked().connect (sigc::mem_fun (*this, &SoundFileBox::stop_audition));
 
+       update_autoplay ();
+       autoplay_btn.signal_toggled().connect(sigc::mem_fun (*this, &SoundFileBox::autoplay_toggled));
+
        stop_btn.set_sensitive (false);
 
        channels_value.set_alignment (0.0f, 0.5f);
@@ -433,6 +436,22 @@ SoundFileBox::setup_labels (const string& filename)
        return true;
 }
 
+void
+SoundFileBox::update_autoplay ()
+{
+       const bool config_autoplay = UIConfiguration::instance().get_autoplay_files();
+
+       if (autoplay_btn.get_active() != config_autoplay) {
+               autoplay_btn.set_active (config_autoplay);
+       }
+}
+
+void
+SoundFileBox::autoplay_toggled()
+{
+       UIConfiguration::instance().set_autoplay_files(autoplay_btn.get_active());
+}
+
 bool
 SoundFileBox::autoplay() const
 {
@@ -819,6 +838,12 @@ SoundFileBrowser::set_action_sensitive (bool yn)
        import_button.set_sensitive (yn);
 }
 
+bool
+SoundFileBrowser::get_action_sensitive () const
+{
+       return import_button.get_sensitive ();
+}
+
 void
 SoundFileBrowser::do_something (int action)
 {
@@ -840,6 +865,12 @@ SoundFileBrowser::on_key_press_event (GdkEventKey* ev)
                do_something (RESPONSE_CLOSE);
                return true;
        }
+       if (ev->keyval == GDK_space && ev->type == GDK_KEY_PRESS) {
+               if (get_action_sensitive()) {
+                       preview.audition();
+                       return true;
+               }
+       }
        return ArdourWindow::on_key_press_event (ev);
 }
 
@@ -853,7 +884,7 @@ SoundFileBrowser::clear_selection ()
 void
 SoundFileBrowser::chooser_file_activated ()
 {
-       preview.audition ();
+       do_something (RESPONSE_OK);
 }
 
 void