Playlist UI Tweaks: assign a pgroup_id on Import (gtk part)

This commit is contained in:
Ben Loftis 2021-06-25 16:19:42 -05:00 committed by Robin Gareus
parent 42d9e88263
commit 730a0954d7
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
7 changed files with 28 additions and 21 deletions

View File

@ -4343,10 +4343,7 @@ Editor::restore_editing_space ()
bool
Editor::stamp_new_playlist (string &name, string &pgroup, bool copy)
{
time_t now;
time (&now);
Glib::DateTime tm (Glib::DateTime::create_now_local (now));
string gid (tm.format ("%F %H.%M.%S"));
string gid = Playlist::generate_pgroup_id();
pgroup = gid;
if (name.length()==0) {

View File

@ -456,6 +456,7 @@ public:
ARDOUR::MidiTrackNameSource mts,
ARDOUR::MidiTempoMapDisposition mtd,
samplepos_t& pos,
std::string pgroup_id,
boost::shared_ptr<ARDOUR::PluginInfo> instrument = boost::shared_ptr<ARDOUR::PluginInfo>(),
bool with_markers = false
);
@ -464,6 +465,7 @@ public:
Editing::ImportDisposition disposition,
Editing::ImportMode mode,
samplepos_t& pos,
std::string pgroup_id,
boost::shared_ptr<ARDOUR::PluginInfo> instrument = boost::shared_ptr<ARDOUR::PluginInfo>());
void get_regionview_corresponding_to (boost::shared_ptr<ARDOUR::Region> region, std::vector<RegionView*>& regions);

View File

@ -348,6 +348,7 @@ Editor::do_import (vector<string> paths,
MidiTrackNameSource midi_track_name_source,
MidiTempoMapDisposition smf_tempo_disposition,
samplepos_t& pos,
string pgroup_id,
ARDOUR::PluginInfoPtr instrument,
bool with_markers)
{
@ -497,11 +498,13 @@ Editor::do_import (vector<string> paths,
}
}
track->playlist()->set_pgroup_id(pgroup_id);
import_status.all_done = true;
}
void
Editor::do_embed (vector<string> paths, ImportDisposition import_as, ImportMode mode, samplepos_t& pos, ARDOUR::PluginInfoPtr instrument)
Editor::do_embed (vector<string> paths, ImportDisposition import_as, ImportMode mode, samplepos_t& pos, string pgroup_id, ARDOUR::PluginInfoPtr instrument)
{
boost::shared_ptr<Track> track;
bool check_sample_rate = true;

View File

@ -417,6 +417,7 @@ Editor::drop_paths_part_two (const vector<string>& paths, samplepos_t sample, do
}
}
string gid = Playlist::generate_pgroup_id();
std::pair<TimeAxisView*, int> const tvp = trackview_by_y_position (ypos, false);
if (tvp.first == 0) {
@ -424,13 +425,13 @@ Editor::drop_paths_part_two (const vector<string>& paths, samplepos_t sample, do
/* drop onto canvas background: create new tracks */
InstrumentSelector is; // instantiation builds instrument-list and sets default.
do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, SMFTrackName, SMFTempoIgnore, sample, is.selected_instrument(), false);
do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, SMFTrackName, SMFTempoIgnore, sample, gid, is.selected_instrument(), false);
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
do_import (audio_paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack,
SrcBest, SMFTrackName, SMFTempoIgnore, sample);
SrcBest, SMFTrackName, SMFTempoIgnore, sample, gid);
} else {
do_embed (audio_paths, Editing::ImportDistinctFiles, ImportAsTrack, sample);
do_embed (audio_paths, Editing::ImportDistinctFiles, ImportAsTrack, sample, gid);
}
} else if ((tv = dynamic_cast<RouteTimeAxisView*> (tvp.first)) != 0) {
@ -442,13 +443,13 @@ Editor::drop_paths_part_two (const vector<string>& paths, samplepos_t sample, do
selection->set (tv);
do_import (midi_paths, Editing::ImportSerializeFiles, ImportToTrack,
SrcBest, SMFTrackName, SMFTempoIgnore, sample);
SrcBest, SMFTrackName, SMFTempoIgnore, sample, gid);
if (UIConfiguration::instance().get_only_copy_imported_files() || copy) {
do_import (audio_paths, Editing::ImportSerializeFiles, Editing::ImportToTrack,
SrcBest, SMFTrackName, SMFTempoIgnore, sample, boost::shared_ptr<PluginInfo>(), false);
SrcBest, SMFTrackName, SMFTempoIgnore, sample, gid, boost::shared_ptr<PluginInfo>(), false);
} else {
do_embed (audio_paths, Editing::ImportSerializeFiles, ImportToTrack, sample);
do_embed (audio_paths, Editing::ImportSerializeFiles, ImportToTrack, sample, gid);
}
}
}

View File

@ -1015,28 +1015,30 @@ void
EditorRegions::drag_data_received (const RefPtr<Gdk::DragContext>& context,
int x, int y,
const SelectionData& data,
guint info, guint time)
guint info, guint dtime)
{
vector<string> paths;
if (data.get_target () == "GTK_TREE_MODEL_ROW") {
/* something is being dragged over the region list */
_editor->_drags->abort ();
_display.on_drag_data_received (context, x, y, data, info, time);
_display.on_drag_data_received (context, x, y, data, info, dtime);
return;
}
if (_editor->convert_drop_to_paths (paths, context, x, y, data, info, time) == 0) {
string gid = Playlist::generate_pgroup_id();
if (_editor->convert_drop_to_paths (paths, context, x, y, data, info, dtime) == 0) {
samplepos_t pos = 0;
bool copy = ((context->get_actions () & (Gdk::ACTION_COPY | Gdk::ACTION_LINK | Gdk::ACTION_MOVE)) == Gdk::ACTION_COPY);
if (UIConfiguration::instance ().get_only_copy_imported_files () || copy) {
_editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion,
SrcBest, SMFTrackName, SMFTempoIgnore, pos);
SrcBest, SMFTrackName, SMFTempoIgnore, pos, gid);
} else {
_editor->do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos);
_editor->do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos, gid);
}
context->drag_finish (true, false, time);
context->drag_finish (true, false, dtime);
}
}

View File

@ -261,11 +261,11 @@ public:
/** Import existing media */
virtual void do_import (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality,
ARDOUR::MidiTrackNameSource, ARDOUR::MidiTempoMapDisposition, samplepos_t&,
ARDOUR::MidiTrackNameSource, ARDOUR::MidiTempoMapDisposition, samplepos_t&, std::string pgroup_id,
boost::shared_ptr<ARDOUR::PluginInfo> instrument = boost::shared_ptr<ARDOUR::PluginInfo>(),
bool with_markers = false) = 0;
virtual void do_embed (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode,
samplepos_t&,
samplepos_t&, std::string pgroup_id,
boost::shared_ptr<ARDOUR::PluginInfo> instrument = boost::shared_ptr<ARDOUR::PluginInfo>()) = 0;
/** Open main export dialog */

View File

@ -2098,10 +2098,12 @@ SoundFileOmega::do_something (int action)
_import_active = true;
string gid = Playlist::generate_pgroup_id();
if (copy_files_btn.get_active()) {
PublicEditor::instance().do_import (paths, chns, mode, quality, mts, mtd, where, instrument, with_midi_markers);
PublicEditor::instance().do_import (paths, chns, mode, quality, mts, mtd, where, gid, instrument, with_midi_markers);
} else {
PublicEditor::instance().do_embed (paths, chns, mode, where, instrument);
PublicEditor::instance().do_embed (paths, chns, mode, where, gid, instrument);
}
_import_active = false;