renaming cue markers (via dbl-click)

This commit is contained in:
Paul Davis 2021-05-24 20:22:32 -06:00
parent 3a1cfc837e
commit 54e0b7f230
3 changed files with 42 additions and 0 deletions

View File

@ -35,6 +35,8 @@
#include "pbd/basename.h"
#include "pbd/stateful_diff_command.h"
#include <gtkmm/stock.h>
#include "gtkmm2ext/utils.h"
#include "ardour/audioengine.h"
@ -7195,6 +7197,33 @@ RegionMarkerDrag::finished (GdkEvent *, bool did_move)
{
if (did_move) {
rv->region()->move_cue_marker (model, dragging_model.position());
} else if (was_double_click()) {
/* edit name */
ArdourDialog d (_("Edit Cue Marker Name"), true, false);
Gtk::Entry e;
d.get_vbox()->pack_start (e);
e.set_text (model.text());
e.select_region (0, -1);
e.show ();
e.set_activates_default ();
d.add_button (Stock::CANCEL, RESPONSE_CANCEL);
d.add_button (Stock::OK, RESPONSE_OK);
d.set_default_response (RESPONSE_OK);
d.set_position (WIN_POS_MOUSE);
int result = d.run();
string str = e.get_text();
if (result == RESPONSE_OK && !str.empty()) {
/* explicitly remove the existing (GUI) marker, because
we will not find a match when handing the
CueMarkersChanged signal.
*/
rv->drop_cue_marker (view);
rv->region()->rename_cue_marker (model, str);
}
}
}

View File

@ -1216,3 +1216,15 @@ RegionView::find_model_cue_marker (ArdourMarker* m)
return CueMarker (string(), 0); /* empty string signifies invalid */
}
void
RegionView::drop_cue_marker (ArdourMarker* m)
{
for (ViewCueMarkers::iterator v = _cue_markers.begin(); v != _cue_markers.end(); ++v) {
if ((*v)->view_marker == m) {
delete m;
_cue_markers.erase (v);
return;
}
}
}

View File

@ -134,6 +134,7 @@ public:
void update_visibility ();
ARDOUR::CueMarker find_model_cue_marker (ArdourMarker*);
void drop_cue_marker (ArdourMarker*);
protected: