mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 15:54:57 +01:00
implement region marker deletion
This commit is contained in:
parent
bd2d8b8c87
commit
60a972a7de
7 changed files with 62 additions and 8 deletions
|
|
@ -48,6 +48,7 @@
|
||||||
#include "gui_thread.h"
|
#include "gui_thread.h"
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
#include "editor_drag.h"
|
#include "editor_drag.h"
|
||||||
|
#include "region_view.h"
|
||||||
|
|
||||||
#include "pbd/i18n.h"
|
#include "pbd/i18n.h"
|
||||||
|
|
||||||
|
|
@ -791,7 +792,21 @@ gint
|
||||||
Editor::really_remove_region_marker (ArdourMarker* marker)
|
Editor::really_remove_region_marker (ArdourMarker* marker)
|
||||||
{
|
{
|
||||||
begin_reversible_command (_("remove region marker"));
|
begin_reversible_command (_("remove region marker"));
|
||||||
cerr << "would remove this region marker\n";
|
RegionView* rv = marker->region_view();
|
||||||
|
|
||||||
|
if (!rv) {
|
||||||
|
abort_reversible_command ();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
CueMarker cm = rv->find_model_cue_marker (marker);
|
||||||
|
if (cm.text().empty()) {
|
||||||
|
abort_reversible_command ();
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
rv->region()->remove_cue_marker (cm);
|
||||||
|
|
||||||
commit_reversible_command ();
|
commit_reversible_command ();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ void ArdourMarker::setup_sizes(const double timebar_height)
|
||||||
}
|
}
|
||||||
|
|
||||||
ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Container& parent, guint32 rgba, const string& annotation,
|
ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Container& parent, guint32 rgba, const string& annotation,
|
||||||
Type type, samplepos_t sample, bool handle_events)
|
Type type, samplepos_t sample, bool handle_events, RegionView* rv)
|
||||||
|
|
||||||
: editor (ed)
|
: editor (ed)
|
||||||
, _parent (&parent)
|
, _parent (&parent)
|
||||||
|
|
@ -88,7 +88,7 @@ ArdourMarker::ArdourMarker (PublicEditor& ed, ArdourCanvas::Container& parent, g
|
||||||
, _right_label_limit (DBL_MAX)
|
, _right_label_limit (DBL_MAX)
|
||||||
, _label_offset (0)
|
, _label_offset (0)
|
||||||
, _line_height (-1)
|
, _line_height (-1)
|
||||||
|
, _region_view (rv)
|
||||||
{
|
{
|
||||||
|
|
||||||
const double MH = marker_height - .5;
|
const double MH = marker_height - .5;
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ namespace ARDOUR {
|
||||||
}
|
}
|
||||||
|
|
||||||
class PublicEditor;
|
class PublicEditor;
|
||||||
|
class RegionView;
|
||||||
|
|
||||||
/** Location Marker
|
/** Location Marker
|
||||||
*
|
*
|
||||||
|
|
@ -66,7 +67,7 @@ public:
|
||||||
|
|
||||||
|
|
||||||
ArdourMarker (PublicEditor& editor, ArdourCanvas::Container &, guint32 rgba, const std::string& text, Type,
|
ArdourMarker (PublicEditor& editor, ArdourCanvas::Container &, guint32 rgba, const std::string& text, Type,
|
||||||
samplepos_t sample = 0, bool handle_events = true);
|
samplepos_t sample = 0, bool handle_events = true, RegionView* rv = 0);
|
||||||
|
|
||||||
virtual ~ArdourMarker ();
|
virtual ~ArdourMarker ();
|
||||||
|
|
||||||
|
|
@ -106,6 +107,10 @@ public:
|
||||||
|
|
||||||
bool label_on_left () const;
|
bool label_on_left () const;
|
||||||
|
|
||||||
|
/* this will be null for all global markers; non-null for region markers */
|
||||||
|
|
||||||
|
RegionView* region_view() const { return _region_view; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
PublicEditor& editor;
|
PublicEditor& editor;
|
||||||
|
|
||||||
|
|
@ -137,6 +142,8 @@ protected:
|
||||||
double _label_offset;
|
double _label_offset;
|
||||||
double _line_height;
|
double _line_height;
|
||||||
|
|
||||||
|
RegionView* _region_view;
|
||||||
|
|
||||||
void reposition ();
|
void reposition ();
|
||||||
void setup_line_x ();
|
void setup_line_x ();
|
||||||
void setup_name_display ();
|
void setup_name_display ();
|
||||||
|
|
|
||||||
|
|
@ -590,7 +590,7 @@ RegionView::update_cue_markers ()
|
||||||
|
|
||||||
/* Create a new ViewCueMarker */
|
/* Create a new ViewCueMarker */
|
||||||
|
|
||||||
ArdourMarker* mark = new ArdourMarker (trackview.editor(), *group, color , c->text(), ArdourMarker::RegionCue, c->position() - start, true);
|
ArdourMarker* mark = new ArdourMarker (trackview.editor(), *group, color , c->text(), ArdourMarker::RegionCue, c->position() - start, true, this);
|
||||||
mark->set_points_color (color);
|
mark->set_points_color (color);
|
||||||
mark->set_show_line (true);
|
mark->set_show_line (true);
|
||||||
/* make sure the line has a clean end, before the frame
|
/* make sure the line has a clean end, before the frame
|
||||||
|
|
@ -1204,3 +1204,15 @@ RegionView::maybe_raise_cue_markers ()
|
||||||
(*v)->view_marker->the_item().raise_to_top ();
|
(*v)->view_marker->the_item().raise_to_top ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CueMarker
|
||||||
|
RegionView::find_model_cue_marker (ArdourMarker* m)
|
||||||
|
{
|
||||||
|
for (ViewCueMarkers::iterator v = _cue_markers.begin(); v != _cue_markers.end(); ++v) {
|
||||||
|
if ((*v)->view_marker == m) {
|
||||||
|
return (*v)->model_marker;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return CueMarker (string(), 0); /* empty string signifies invalid */
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,8 @@ public:
|
||||||
|
|
||||||
void update_visibility ();
|
void update_visibility ();
|
||||||
|
|
||||||
|
ARDOUR::CueMarker find_model_cue_marker (ArdourMarker*);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/** Allows derived types to specify their visibility requirements
|
/** Allows derived types to specify their visibility requirements
|
||||||
|
|
|
||||||
|
|
@ -375,6 +375,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_cue_markers (CueMarkers&, bool abs = false) const;
|
void get_cue_markers (CueMarkers&, bool abs = false) const;
|
||||||
|
void remove_cue_marker (CueMarker&);
|
||||||
|
void clear_cue_markers ();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual XMLNode& state ();
|
virtual XMLNode& state ();
|
||||||
|
|
|
||||||
|
|
@ -1925,8 +1925,8 @@ void
|
||||||
Region::get_cue_markers (CueMarkers& cues, bool abs) const
|
Region::get_cue_markers (CueMarkers& cues, bool abs) const
|
||||||
{
|
{
|
||||||
bool was_empty = cues.empty ();
|
bool was_empty = cues.empty ();
|
||||||
for (SourceList::const_iterator i = _sources.begin (); i != _sources.end(); ++i) {
|
for (SourceList::const_iterator s = _sources.begin (); s != _sources.end(); ++s) {
|
||||||
CueMarkers const& x = (*i)->cue_markers ();
|
CueMarkers const& x = (*s)->cue_markers ();
|
||||||
for (CueMarkers::const_iterator p = x.begin (); p != x.end (); ++p) {
|
for (CueMarkers::const_iterator p = x.begin (); p != x.end (); ++p) {
|
||||||
if (abs) {
|
if (abs) {
|
||||||
cues.insert (*p);
|
cues.insert (*p);
|
||||||
|
|
@ -1937,6 +1937,22 @@ Region::get_cue_markers (CueMarkers& cues, bool abs) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Region::remove_cue_marker (CueMarker& cm)
|
||||||
|
{
|
||||||
|
for (SourceList::iterator s = _sources.begin (); s != _sources.end(); ++s) {
|
||||||
|
(*s)->remove_cue_marker (cm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Region::clear_cue_markers ()
|
||||||
|
{
|
||||||
|
for (SourceList::iterator s = _sources.begin (); s != _sources.end(); ++s) {
|
||||||
|
(*s)->clear_cue_markers ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Region::drop_sources ()
|
Region::drop_sources ()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue