#include "pbd/openuri.h"
#include "gtkmm2ext/utils.h"
+#include "gtkmm2ext/keyboard.h"
#include "ardour/audioengine.h"
#include "ardour/filesystem_paths.h"
#include "session_dialog.h"
#include "opts.h"
#include "engine_dialog.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
#include "tooltips.h"
#include "ui_config.h"
#include "utils.h"
open_button = add_button (Stock::OPEN, RESPONSE_ACCEPT);
back_button->signal_button_press_event().connect (sigc::mem_fun (*this, &SessionDialog::back_button_pressed), false);
+ open_button->signal_button_press_event().connect (sigc::mem_fun (*this, &SessionDialog::open_button_pressed), false);
open_button->set_sensitive (false);
back_button->set_sensitive (false);
recent_session_display.show();
recent_session_display.signal_row_activated().connect (sigc::mem_fun (*this, &SessionDialog::recent_row_activated));
+ recent_session_display.signal_button_press_event().connect (sigc::mem_fun (*this, &SessionDialog::recent_button_press), false);
}
void
string image_path;
- if (find_file (ardour_data_search_path(), "small-splash.png", image_path)) {
+ Searchpath rc (ARDOUR::ardour_data_search_path());
+ rc.add_subdirectory_to_paths ("resources");
+
+ if (find_file (rc, PROGRAM_NAME "-small-splash.png", image_path)) {
Gtk::Image* image;
if ((image = manage (new Gtk::Image (image_path))) != 0) {
hbox->pack_start (*image, false, false);
return true;
}
+bool
+SessionDialog::open_button_pressed (GdkEventButton* ev)
+{
+ if (Gtkmm2ext::Keyboard::modifier_state_equals (ev->state, Gtkmm2ext::Keyboard::PrimaryModifier)) {
+ _disable_plugins.set_active();
+ }
+ response (RESPONSE_ACCEPT);
+ return true;
+}
+
void
SessionDialog::populate_session_templates ()
{
response (RESPONSE_ACCEPT);
}
+bool
+SessionDialog::recent_button_press (GdkEventButton* ev)
+{
+ if ((ev->type == GDK_BUTTON_PRESS) && (ev->button == 3) ) {
+
+ TreeModel::Path path;
+ TreeViewColumn* column;
+ int cellx, celly;
+ if (recent_session_display.get_path_at_pos ((int)ev->x, (int)ev->y, path, column, cellx, celly)) {
+ Glib::RefPtr<Gtk::TreeView::Selection> selection = recent_session_display.get_selection();
+ if (selection) {
+ selection->unselect_all();
+ selection->select(path);
+ }
+ }
+
+ if (recent_session_display.get_selection()->count_selected_rows() > 0) {
+ recent_context_mennu (ev);
+ }
+ }
+ return false;
+}
+
+void
+SessionDialog::recent_context_mennu (GdkEventButton *ev)
+{
+ using namespace Gtk::Menu_Helpers;
+
+ TreeIter iter = recent_session_display.get_selection()->get_selected();
+ assert (iter);
+ string s = (*iter)[recent_session_columns.fullpath];
+ if (Glib::file_test (s, Glib::FILE_TEST_IS_REGULAR)) {
+ s = Glib::path_get_dirname (s);
+ }
+ if (!Glib::file_test (s, Glib::FILE_TEST_IS_DIR)) {
+ return;
+ }
+
+ Gtk::Menu* m = manage (new Menu);
+ MenuList& items = m->items ();
+ items.push_back (MenuElem (s));
+ items.push_back (SeparatorElem());
+ items.push_back (MenuElem (_("Remove from recent"), sigc::mem_fun (*this, &SessionDialog::recent_remove_selected)));
+ m->popup (ev->button, ev->time);
+}
+
+void
+SessionDialog::recent_remove_selected ()
+{
+ TreeIter iter = recent_session_display.get_selection()->get_selected();
+ assert (iter);
+ string s = (*iter)[recent_session_columns.fullpath];
+ if (Glib::file_test (s, Glib::FILE_TEST_IS_REGULAR)) {
+ s = Glib::path_get_dirname (s);
+ }
+ ARDOUR::remove_recent_sessions (s);
+ redisplay_recent_sessions ();
+}
+
void
SessionDialog::disable_plugins_clicked ()
{