SConsignFile()
EnsureSConsVersion(0, 96)
-ardour_version = '2.0.5'
+ardour_version = '2.1'
subst_dict = { }
open_session_selector = new Gtk::FileChooserDialog (_("open session"), FILE_CHOOSER_ACTION_OPEN);
open_session_selector->add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
open_session_selector->add_button (Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
+ open_session_selector->set_default_response(Gtk::RESPONSE_ACCEPT);
FileFilter session_filter;
session_filter.add_pattern ("*.ardour");
#undef DISPLAYCONTROL
#define DISPLAYCONTROL(a) /*empty*/
-//IMPORTMODE
-#undef IMPORTMODE
-#define IMPORTMODE(s) N_(#s),
-const char *importmodestrs[] = {
- #include "editing_syms.h"
- 0
-};
-#undef IMPORTMODE
-#define IMPORTMODE(a) /*empty*/
-
-//IMPORTPOSITION
-#undef IMPORTPOSITION
-#define IMPORTPOSITION(s) N_(#s),
-const char *importpositionstrs[] = {
- #include "editing_syms.h"
- 0
-};
-#undef IMPORTPOSITION
-#define IMPORTPOSITION(a) /*empty*/
-
-//IMPORTCHANNEL
-#undef IMPORTCHANNEL
-#define IMPORTCHANNEL(s) N_(#s),
-const char *importchannelstrs[] = {
- #include "editing_syms.h"
- 0
-};
-#undef IMPORTCHANNEL
-#define IMPORTCHANNEL(a) /*empty*/
-
} // namespace Editing
#include "editing_syms.h"
};
-extern const char *importpositionstrs[];
-inline const char* enum2str(ImportPosition m) {return importpositionstrs[m];}
-ImportPosition str2importposition (const std::string &);
-
#undef IMPORTPOSITION
#define IMPORTPOSITION(a) /*empty*/
#include "editing_syms.h"
};
-extern const char *importdispositionstrs[];
-inline const char* enum2str(ImportDisposition m) {return importdispositionstrs[m];}
-ImportDisposition str2importdisposition (const std::string &);
-
#undef IMPORTDISPOSITION
#define IMPORTDISPOSITION(a) /*empty*/
ActionManager::register_action (editor_actions, X_("addExistingAudioFiles"), _("Add Existing Audio"), mem_fun (*this, &Editor::external_audio_dialog));
-
act = ActionManager::register_action (editor_actions, X_("addExternalAudioToRegionList"), _("Add External Audio"), bind (mem_fun(*this, &Editor::add_external_audio_action), ImportAsRegion));
ActionManager::session_sensitive_actions.push_back (act);
- act = ActionManager::register_action (editor_actions, X_("addExternalAudioAsRegion"), _("as Region(s)"), bind (mem_fun(*this, &Editor::add_external_audio_action), ImportAsRegion));
- ActionManager::session_sensitive_actions.push_back (act);
- act = ActionManager::register_action (editor_actions, X_("addExternalAudioAsTrack"), _("as Tracks"), bind (mem_fun(*this, &Editor::add_external_audio_action), ImportAsTrack));
- ActionManager::session_sensitive_actions.push_back (act);
- act = ActionManager::register_action (editor_actions, X_("addExternalAudioAsTapeTrack"), _("as Tape Tracks"), bind (mem_fun(*this, &Editor::add_external_audio_action), ImportAsTapeTrack));
- ActionManager::session_sensitive_actions.push_back (act);
- act = ActionManager::register_action (editor_actions, X_("addExternalAudioToTrack"), _("to Tracks"), bind (mem_fun(*this, &Editor::add_external_audio_action), ImportToTrack));
- ActionManager::session_sensitive_actions.push_back (act);
ActionManager::register_toggle_action (editor_actions, X_("ToggleWaveformVisibility"), _("Show Waveforms"), mem_fun (*this, &Editor::toggle_waveform_visibility));
ActionManager::register_toggle_action (editor_actions, X_("ToggleWaveformsWhileRecording"), _("Show Waveforms While Recording"), mem_fun (*this, &Editor::toggle_waveforms_while_recording));
/* Functions supporting the incorporation of external (non-captured) audio material into ardour */
void
-Editor::add_external_audio_action (ImportMode mode)
+Editor::add_external_audio_action (ImportMode mode_hint)
{
+ if (session == 0) {
+ MessageDialog msg (0, _("You can't import or embed an audiofile until you have a session loaded."));
+ msg.run ();
+ return;
+ }
+
+ if (sfbrowser == 0) {
+ sfbrowser = new SoundFileOmega (*this, _("Add existing audio"), session, 0, mode_hint);
+ } else {
+ sfbrowser->set_mode (mode_hint);
+ }
+
+ external_audio_dialog ();
}
void
for (vector<RegionPoint>::iterator p = interesting_points.begin(); p != interesting_points.end(); ++p) {
if ((r = find_next_region (pos, *p, 1, tlist, &ontrack)) == 0) {
- at_end = true;
+ if (*p == interesting_points.back()) {
+ at_end = true;
+ }
/* move to next point type */
continue;
}
-
switch (*p) {
case Start:
rpos = r->first_frame();
#include <pbd/enumwriter.h>
#include "audio_clock.h"
+#include "editing.h"
#include "enums.h"
using namespace std;
using namespace PBD;
using namespace ARDOUR;
+using namespace Editing;
void
setup_gtk_ardour_enums ()
AudioClock::Mode clock_mode;
Width width;
+ ImportMode import_mode;
#define REGISTER(e) enum_writer.register_distinct (typeid(e).name(), i, s); i.clear(); s.clear()
#define REGISTER_BITS(e) enum_writer.register_bits (typeid(e).name(), i, s); i.clear(); s.clear()
REGISTER_ENUM (Wide);
REGISTER_ENUM (Narrow);
REGISTER (width);
+
+ REGISTER_ENUM (ImportAsTrack);
+ REGISTER_ENUM (ImportToTrack);
+ REGISTER_ENUM (ImportAsRegion);
+ REGISTER_ENUM (ImportAsTapeTrack);
+ REGISTER (import_mode);
}
#include <pbd/convert.h>
#include <pbd/tokenizer.h>
+#include <pbd/enumwriter.h>
#include <gtkmm2ext/utils.h>
ustring SoundFileBrowser::persistent_folder;
+static ImportMode
+string2importmode (string str)
+{
+ if (str == "as new tracks") {
+ return ImportAsTrack;
+ } else if (str == "to selected tracks") {
+ return ImportToTrack;
+ } else if (str == "to region list") {
+ return ImportAsRegion;
+ } else if (str == "as new tape tracks") {
+ return ImportAsTapeTrack;
+ }
+
+ warning << string_compose (_("programming error: unknown import mode string %1"), str) << endmsg;
+
+ return ImportAsTrack;
+}
+
+static string
+importmode2string (ImportMode mode)
+{
+ switch (mode) {
+ case ImportAsTrack:
+ return _("as new tracks");
+ case ImportToTrack:
+ return _("to selected tracks");
+ case ImportAsRegion:
+ return _("to region list");
+ case ImportAsTapeTrack:
+ return _("as new tape tracks");
+ }
+}
+
SoundFileBox::SoundFileBox ()
: _session(0),
table (6, 2),
switch (id) {
case Editing::ImportDistinctFiles:
if (selected_track_cnt == paths.size()) {
- action_strings.push_back (_("to selected tracks"));
+ action_strings.push_back (importmode2string (ImportToTrack));
}
break;
break;
default:
- action_strings.push_back (_("to selected tracks"));
+ action_strings.push_back (importmode2string (ImportToTrack));
break;
}
}
}
- action_strings.push_back (_("as new tracks"));
- action_strings.push_back (_("to the region list"));
- action_strings.push_back (_("as new tape tracks"));
+ action_strings.push_back (importmode2string (ImportAsTrack));
+ action_strings.push_back (importmode2string (ImportAsRegion));
+ action_strings.push_back (importmode2string (ImportAsTapeTrack));
resetting_ourselves = true;
return paths.front();
}
-SoundFileOmega::SoundFileOmega (Gtk::Window& parent, string title, ARDOUR::Session* s, int selected_tracks)
+SoundFileOmega::SoundFileOmega (Gtk::Window& parent, string title, ARDOUR::Session* s, int selected_tracks, Editing::ImportMode mode_hint)
: SoundFileBrowser (parent, title, s),
copy_files_btn ( _("Copy files to session")),
selected_track_cnt (selected_tracks)
*/
str.clear ();
- str.push_back (_("as new tracks"));
+ str.push_back (importmode2string (mode_hint));
set_popdown_strings (action_combo, str);
action_combo.set_active_text (str.front());
action_combo.set_sensitive (false);
chooser.signal_selection_changed().connect (mem_fun (*this, &SoundFileOmega::file_selection_changed));
}
+void
+SoundFileOmega::set_mode (ImportMode mode)
+{
+ action_combo.set_active_text (importmode2string (mode));
+}
+
ImportMode
SoundFileOmega::get_mode () const
{
- ustring str = action_combo.get_active_text();
-
- if (str == _("as new tracks")) {
- return ImportAsTrack;
- } else if (str == _("to the region list")) {
- return ImportAsRegion;
- } else if (str == _("to selected tracks")) {
- return ImportToTrack;
- } else {
- return ImportAsTapeTrack;
- }
+ return string2importmode (action_combo.get_active_text());
}
void
{
public:
- SoundFileOmega (Gtk::Window& parent, std::string title, ARDOUR::Session* _s, int selected_tracks);
+ SoundFileOmega (Gtk::Window& parent, std::string title, ARDOUR::Session* _s, int selected_tracks,
+ Editing::ImportMode mode_hint = Editing::ImportAsTrack);
void reset (int selected_tracks);
Gtk::CheckButton copy_files_btn;
+ void set_mode (Editing::ImportMode);
Editing::ImportMode get_mode() const;
Editing::ImportPosition get_position() const;
Editing::ImportDisposition get_channel_disposition() const;
void
MIDIControllable::drop_external_control ()
{
- cerr << "Dropping existing control using " << connections << " connections\n";
-
if (connections > 0) {
midi_sense_connection[0].disconnect ();
}
default:
break;
}
-
- cerr << "MIDI bound with " << connections << endl;
}
void