most clip marker work completed #333
This commit is contained in:
+13
-4
@@ -915,6 +915,13 @@ void Project::load_project(bool autorecovery) {
|
||||
ld.exec();
|
||||
}
|
||||
|
||||
void save_marker(QXmlStreamWriter& stream, const Marker& m) {
|
||||
stream.writeStartElement("marker");
|
||||
stream.writeAttribute("frame", QString::number(m.frame));
|
||||
stream.writeAttribute("name", m.name);
|
||||
stream.writeEndElement();
|
||||
}
|
||||
|
||||
void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, const QModelIndex& parent) {
|
||||
for (int i=0;i<project_model.rowCount(parent);i++) {
|
||||
const QModelIndex& item = project_model.index(i, 0, parent);
|
||||
@@ -1045,6 +1052,11 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only,
|
||||
}
|
||||
}
|
||||
|
||||
// save markers
|
||||
for (int k=0;k<c->markers.size();k++) {
|
||||
save_marker(stream, c->markers.at(k));
|
||||
}
|
||||
|
||||
stream.writeStartElement("linked"); // linked
|
||||
for (int k=0;k<c->linked.size();k++) {
|
||||
stream.writeStartElement("link"); // link
|
||||
@@ -1063,10 +1075,7 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only,
|
||||
}
|
||||
}
|
||||
for (int j=0;j<s->markers.size();j++) {
|
||||
stream.writeStartElement("marker");
|
||||
stream.writeAttribute("frame", QString::number(s->markers.at(j).frame));
|
||||
stream.writeAttribute("name", s->markers.at(j).name);
|
||||
stream.writeEndElement();
|
||||
save_marker(stream, s->markers.at(j));
|
||||
}
|
||||
stream.writeEndElement();
|
||||
}
|
||||
|
||||
+30
-3
@@ -1426,7 +1426,14 @@ bool Timeline::snap_to_timeline(long* l, bool use_playhead, bool use_markers, bo
|
||||
} else if (c->get_closing_transition() != nullptr
|
||||
&& snap_to_point(c->timeline_out - c->get_closing_transition()->get_true_length(), l)) {
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
// try to snap to clip markers
|
||||
for (int j=0;j<c->markers.size();j++) {
|
||||
if (snap_to_point(c->markers.at(j).frame + c->timeline_in - c->clip_in, l)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1446,9 +1453,29 @@ void Timeline::set_marker() {
|
||||
marker_name = d.textValue();
|
||||
}
|
||||
|
||||
|
||||
if (add_marker) {
|
||||
undo_stack.push(new AddMarkerAction(sequence, sequence->playhead, marker_name));
|
||||
ComboAction* ca = new ComboAction();
|
||||
|
||||
// see if any clips are selected, and if so add a marker to them
|
||||
bool clip_mode = false;
|
||||
for (int i=0;i<sequence->clips.size();i++) {
|
||||
Clip* c = sequence->clips.at(i);
|
||||
if (c != nullptr
|
||||
&& is_clip_selected(c, true)) {
|
||||
ca->append(new AddMarkerAction(false,
|
||||
c,
|
||||
sequence->playhead - c->timeline_in + c->clip_in,
|
||||
marker_name));
|
||||
clip_mode = true;
|
||||
}
|
||||
}
|
||||
|
||||
// if no clips are selected, we're adding a marker to the sequence
|
||||
if (!clip_mode) {
|
||||
ca->append(new AddMarkerAction(true, sequence, sequence->playhead, marker_name));
|
||||
}
|
||||
|
||||
undo_stack.push(ca);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user