From c5b97e70befa4a755feafdd50557562a883e681d Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 1 Jun 2016 23:54:54 +0200 Subject: [PATCH] add Open Target Folder button to Export Dialog --- gtk2_ardour/export_filename_selector.cc | 16 ++++++++++++++++ gtk2_ardour/export_filename_selector.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/gtk2_ardour/export_filename_selector.cc b/gtk2_ardour/export_filename_selector.cc index fd41171925..317e52b605 100644 --- a/gtk2_ardour/export_filename_selector.cc +++ b/gtk2_ardour/export_filename_selector.cc @@ -20,6 +20,7 @@ #include +#include "pbd/openuri.h" #include "export_filename_selector.h" #include "i18n.h" @@ -36,6 +37,7 @@ ExportFilenameSelector::ExportFilenameSelector () : path_label (_("Folder:"), Gtk::ALIGN_LEFT), browse_button (_("Browse")), + open_button (_("Open Folder")), example_filename_label ("", Gtk::ALIGN_LEFT), _require_timespan (false) @@ -61,6 +63,7 @@ ExportFilenameSelector::ExportFilenameSelector () : path_hbox.pack_start (path_label, false, false, 3); path_hbox.pack_start (path_entry, true, true, 3); path_hbox.pack_start (browse_button, false, false, 3); + path_hbox.pack_start (open_button, false, false, 3); // maybe Mixbus only ? path_entry.set_activates_default (); @@ -104,6 +107,7 @@ ExportFilenameSelector::ExportFilenameSelector () : revision_spinbutton.signal_value_changed().connect (sigc::mem_fun (*this, &ExportFilenameSelector::change_revision_value)); browse_button.signal_clicked().connect (sigc::mem_fun (*this, &ExportFilenameSelector::open_browse_dialog)); + open_button.signal_clicked().connect (sigc::mem_fun (*this, &ExportFilenameSelector::open_folder)); } ExportFilenameSelector::~ExportFilenameSelector () @@ -366,6 +370,18 @@ ExportFilenameSelector::change_revision_value () CriticalSelectionChanged(); } +void +ExportFilenameSelector::open_folder () +{ + const std::string& dir (path_entry.get_text()); + if (!Glib::file_test (dir, Glib::FILE_TEST_IS_DIR|Glib::FILE_TEST_EXISTS)) { + Gtk::MessageDialog msg (string_compose (_("%1: this is not a valid directory/folder."), dir)); + msg.run (); + return; + } + PBD::open_folder (dir); +} + void ExportFilenameSelector::open_browse_dialog () { diff --git a/gtk2_ardour/export_filename_selector.h b/gtk2_ardour/export_filename_selector.h index 54ed296bfe..4c4c7d2014 100644 --- a/gtk2_ardour/export_filename_selector.h +++ b/gtk2_ardour/export_filename_selector.h @@ -61,6 +61,7 @@ class ExportFilenameSelector : public Gtk::VBox, public ARDOUR::SessionHandlePtr void change_revision_value (); void open_browse_dialog (); + void open_folder (); boost::shared_ptr filename; @@ -85,6 +86,7 @@ class ExportFilenameSelector : public Gtk::VBox, public ARDOUR::SessionHandlePtr Gtk::Entry path_entry; Gtk::Button browse_button; Gtk::Label example_filename_label; + Gtk::Button open_button; /* Date combo */