removed disable in/out, fixes #426
This commit is contained in:
@@ -63,7 +63,7 @@ ExportDialog::ExportDialog(QWidget *parent) :
|
||||
rangeCombobox->setCurrentIndex(0);
|
||||
if (sequence->using_workarea) {
|
||||
rangeCombobox->setEnabled(true);
|
||||
if (sequence->enable_workarea) rangeCombobox->setCurrentIndex(1);
|
||||
rangeCombobox->setCurrentIndex(1);
|
||||
}
|
||||
|
||||
format_strings.resize(FORMAT_SIZE);
|
||||
|
||||
+53
-55
@@ -185,34 +185,34 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) {
|
||||
int folder = 0;
|
||||
|
||||
Media* item = new Media(0);
|
||||
Footage* f = new Footage();
|
||||
Footage* f = new Footage();
|
||||
|
||||
f->using_inout = false;
|
||||
f->using_inout = false;
|
||||
|
||||
for (int j=0;j<stream.attributes().size();j++) {
|
||||
const QXmlStreamAttribute& attr = stream.attributes().at(j);
|
||||
if (attr.name() == "id") {
|
||||
f->save_id = attr.value().toInt();
|
||||
f->save_id = attr.value().toInt();
|
||||
} else if (attr.name() == "folder") {
|
||||
folder = attr.value().toInt();
|
||||
} else if (attr.name() == "name") {
|
||||
f->name = attr.value().toString();
|
||||
f->name = attr.value().toString();
|
||||
} else if (attr.name() == "url") {
|
||||
f->url = attr.value().toString();
|
||||
f->url = attr.value().toString();
|
||||
|
||||
if (!QFileInfo::exists(f->url)) { // if path is not absolute
|
||||
QString proj_dir_test = proj_dir.absoluteFilePath(f->url);
|
||||
QString internal_proj_dir_test = internal_proj_dir.absoluteFilePath(f->url);
|
||||
if (!QFileInfo::exists(f->url)) { // if path is not absolute
|
||||
QString proj_dir_test = proj_dir.absoluteFilePath(f->url);
|
||||
QString internal_proj_dir_test = internal_proj_dir.absoluteFilePath(f->url);
|
||||
|
||||
if (QFileInfo::exists(proj_dir_test)) { // if path is relative to the project's current dir
|
||||
f->url = proj_dir_test;
|
||||
f->url = proj_dir_test;
|
||||
qInfo() << "Matched" << attr.value().toString() << "relative to project's current directory";
|
||||
} else if (QFileInfo::exists(internal_proj_dir_test)) { // if path is relative to the last directory the project was saved in
|
||||
f->url = internal_proj_dir_test;
|
||||
f->url = internal_proj_dir_test;
|
||||
qInfo() << "Matched" << attr.value().toString() << "relative to project's internal directory";
|
||||
} else if (f->url.contains('%')) {
|
||||
} else if (f->url.contains('%')) {
|
||||
// hack for image sequences (qt won't be able to find the URL with %, but ffmpeg may)
|
||||
f->url = internal_proj_dir_test;
|
||||
f->url = internal_proj_dir_test;
|
||||
qInfo() << "Guess image sequence" << attr.value().toString() << "path to project's internal directory";
|
||||
} else {
|
||||
qInfo() << "Failed to match" << attr.value().toString() << "to file";
|
||||
@@ -221,41 +221,41 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) {
|
||||
qInfo() << "Matched" << attr.value().toString() << "with absolute path";
|
||||
}
|
||||
} else if (attr.name() == "duration") {
|
||||
f->length = attr.value().toLongLong();
|
||||
f->length = attr.value().toLongLong();
|
||||
} else if (attr.name() == "using_inout") {
|
||||
f->using_inout = (attr.value() == "1");
|
||||
f->using_inout = (attr.value() == "1");
|
||||
} else if (attr.name() == "in") {
|
||||
f->in = attr.value().toLong();
|
||||
f->in = attr.value().toLong();
|
||||
} else if (attr.name() == "out") {
|
||||
f->out = attr.value().toLong();
|
||||
f->out = attr.value().toLong();
|
||||
} else if (attr.name() == "speed") {
|
||||
f->speed = attr.value().toDouble();
|
||||
f->speed = attr.value().toDouble();
|
||||
} else if (attr.name() == "alphapremul") {
|
||||
f->alpha_is_premultiplied = (attr.value() == "1");
|
||||
f->alpha_is_premultiplied = (attr.value() == "1");
|
||||
} else if (attr.name() == "proxy") {
|
||||
f->proxy = (attr.value() == "1");
|
||||
f->proxy = (attr.value() == "1");
|
||||
} else if (attr.name() == "proxypath") {
|
||||
f->proxy_path = attr.value().toString();
|
||||
f->proxy_path = attr.value().toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while (!cancelled && !(stream.name() == child_search && stream.isEndElement()) && !stream.atEnd()) {
|
||||
read_next_start_element(stream);
|
||||
if (stream.name() == "marker" && stream.isStartElement()) {
|
||||
Marker m;
|
||||
for (int j=0;j<stream.attributes().size();j++) {
|
||||
const QXmlStreamAttribute& attr = stream.attributes().at(j);
|
||||
if (attr.name() == "frame") {
|
||||
m.frame = attr.value().toLong();
|
||||
} else if (attr.name() == "name") {
|
||||
m.name = attr.value().toString();
|
||||
}
|
||||
}
|
||||
f->markers.append(m);
|
||||
}
|
||||
}
|
||||
while (!cancelled && !(stream.name() == child_search && stream.isEndElement()) && !stream.atEnd()) {
|
||||
read_next_start_element(stream);
|
||||
if (stream.name() == "marker" && stream.isStartElement()) {
|
||||
Marker m;
|
||||
for (int j=0;j<stream.attributes().size();j++) {
|
||||
const QXmlStreamAttribute& attr = stream.attributes().at(j);
|
||||
if (attr.name() == "frame") {
|
||||
m.frame = attr.value().toLong();
|
||||
} else if (attr.name() == "name") {
|
||||
m.name = attr.value().toString();
|
||||
}
|
||||
}
|
||||
f->markers.append(m);
|
||||
}
|
||||
}
|
||||
|
||||
item->set_footage(f);
|
||||
item->set_footage(f);
|
||||
|
||||
if (folder == 0) {
|
||||
project_model.appendChild(nullptr, item);
|
||||
@@ -296,8 +296,6 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) {
|
||||
open_seq = s;
|
||||
} else if (attr.name() == "workarea") {
|
||||
s->using_workarea = (attr.value() == "1");
|
||||
} else if (attr.name() == "workareaEnabled") {
|
||||
s->enable_workarea = (attr.value() == "1");
|
||||
} else if (attr.name() == "workareaIn") {
|
||||
s->workarea_in = attr.value().toLong();
|
||||
} else if (attr.name() == "workareaOut") {
|
||||
@@ -429,24 +427,24 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) {
|
||||
}
|
||||
}
|
||||
if (cancelled) return false;
|
||||
} else if (stream.isStartElement()
|
||||
&& (stream.name() == "effect"
|
||||
|| stream.name() == "opening"
|
||||
|| stream.name() == "closing")) {
|
||||
} else if (stream.isStartElement()
|
||||
&& (stream.name() == "effect"
|
||||
|| stream.name() == "opening"
|
||||
|| stream.name() == "closing")) {
|
||||
// "opening" and "closing" are backwards compatibility code
|
||||
load_effect(stream, c);
|
||||
} else if (stream.name() == "marker" && stream.isStartElement()) {
|
||||
Marker m;
|
||||
for (int j=0;j<stream.attributes().size();j++) {
|
||||
const QXmlStreamAttribute& attr = stream.attributes().at(j);
|
||||
if (attr.name() == "frame") {
|
||||
m.frame = attr.value().toLong();
|
||||
} else if (attr.name() == "name") {
|
||||
m.name = attr.value().toString();
|
||||
}
|
||||
}
|
||||
c->get_markers().append(m);
|
||||
}
|
||||
} else if (stream.name() == "marker" && stream.isStartElement()) {
|
||||
Marker m;
|
||||
for (int j=0;j<stream.attributes().size();j++) {
|
||||
const QXmlStreamAttribute& attr = stream.attributes().at(j);
|
||||
if (attr.name() == "frame") {
|
||||
m.frame = attr.value().toLong();
|
||||
} else if (attr.name() == "name") {
|
||||
m.name = attr.value().toString();
|
||||
}
|
||||
}
|
||||
c->get_markers().append(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cancelled) return false;
|
||||
|
||||
@@ -268,7 +268,6 @@ void MainWindow::make_new_menu(QMenu *parent) {
|
||||
void MainWindow::make_inout_menu(QMenu *parent) {
|
||||
parent->addAction(tr("Set In Point"), this, SLOT(set_in_point()), QKeySequence("I"))->setProperty("id", "setinpoint");
|
||||
parent->addAction(tr("Set Out Point"), this, SLOT(set_out_point()), QKeySequence("O"))->setProperty("id", "setoutpoint");
|
||||
parent->addAction(tr("Enable/Disable In/Out Point"), this, SLOT(enable_inout()))->setProperty("id", "enableinout");
|
||||
parent->addSeparator();
|
||||
parent->addAction(tr("Reset In Point"), this, SLOT(clear_in()))->setProperty("id", "resetin");
|
||||
parent->addAction(tr("Reset Out Point"), this, SLOT(clear_out()))->setProperty("id", "resetout");
|
||||
@@ -1465,14 +1464,6 @@ void MainWindow::ripple_delete_inout()
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::enable_inout() {
|
||||
if (panel_timeline->focused() || panel_sequence_viewer->is_focused()) {
|
||||
panel_sequence_viewer->toggle_enable_inout();
|
||||
} else if (panel_footage_viewer->is_focused()) {
|
||||
panel_footage_viewer->toggle_enable_inout();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::set_tsa_default() {
|
||||
config.show_title_safe_area = true;
|
||||
config.use_custom_title_safe_ratio = false;
|
||||
|
||||
@@ -115,7 +115,6 @@ private slots:
|
||||
void clear_inout();
|
||||
void delete_inout();
|
||||
void ripple_delete_inout();
|
||||
void enable_inout();
|
||||
|
||||
// title safe area functions
|
||||
void set_tsa_disable();
|
||||
|
||||
+12
-13
@@ -970,7 +970,7 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only,
|
||||
stream.writeAttribute("proxy", QString::number(f->proxy));
|
||||
stream.writeAttribute("proxypath", f->proxy_path);
|
||||
|
||||
// save video stream metadata
|
||||
// save video stream metadata
|
||||
for (int j=0;j<f->video_tracks.size();j++) {
|
||||
const FootageStream& ms = f->video_tracks.at(j);
|
||||
stream.writeStartElement("video");
|
||||
@@ -979,10 +979,10 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only,
|
||||
stream.writeAttribute("height", QString::number(ms.video_height));
|
||||
stream.writeAttribute("framerate", QString::number(ms.video_frame_rate, 'f', 10));
|
||||
stream.writeAttribute("infinite", QString::number(ms.infinite_length));
|
||||
stream.writeEndElement(); // video
|
||||
stream.writeEndElement(); // video
|
||||
}
|
||||
|
||||
// save audio stream metadata
|
||||
// save audio stream metadata
|
||||
for (int j=0;j<f->audio_tracks.size();j++) {
|
||||
const FootageStream& ms = f->audio_tracks.at(j);
|
||||
stream.writeStartElement("audio");
|
||||
@@ -990,15 +990,15 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only,
|
||||
stream.writeAttribute("channels", QString::number(ms.audio_channels));
|
||||
stream.writeAttribute("layout", QString::number(ms.audio_layout));
|
||||
stream.writeAttribute("frequency", QString::number(ms.audio_frequency));
|
||||
stream.writeEndElement(); // audio
|
||||
stream.writeEndElement(); // audio
|
||||
}
|
||||
|
||||
// save footage markers
|
||||
for (int j=0;j<f->markers.size();j++) {
|
||||
save_marker(stream, f->markers.at(j));
|
||||
}
|
||||
// save footage markers
|
||||
for (int j=0;j<f->markers.size();j++) {
|
||||
save_marker(stream, f->markers.at(j));
|
||||
}
|
||||
|
||||
stream.writeEndElement(); // footage
|
||||
stream.writeEndElement(); // footage
|
||||
media_id++;
|
||||
} else if (type == MEDIA_TYPE_SEQUENCE) {
|
||||
Sequence* s = m->to_sequence();
|
||||
@@ -1019,7 +1019,6 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only,
|
||||
stream.writeAttribute("open", "1");
|
||||
}
|
||||
stream.writeAttribute("workarea", QString::number(s->using_workarea));
|
||||
stream.writeAttribute("workareaEnabled", QString::number(s->enable_workarea));
|
||||
stream.writeAttribute("workareaIn", QString::number(s->workarea_in));
|
||||
stream.writeAttribute("workareaOut", QString::number(s->workarea_out));
|
||||
|
||||
@@ -1071,8 +1070,8 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only,
|
||||
}
|
||||
|
||||
// save markers
|
||||
// only necessary for null media clips, since media has its own markers
|
||||
if (c->media == nullptr) {
|
||||
// only necessary for null media clips, since media has its own markers
|
||||
if (c->media == nullptr) {
|
||||
for (int k=0;k<c->get_markers().size();k++) {
|
||||
save_marker(stream, c->get_markers().at(k));
|
||||
}
|
||||
@@ -1096,7 +1095,7 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only,
|
||||
stream.writeEndElement(); // clip
|
||||
}
|
||||
}
|
||||
for (int j=0;j<s->markers.size();j++) {
|
||||
for (int j=0;j<s->markers.size();j++) {
|
||||
save_marker(stream, s->markers.at(j));
|
||||
}
|
||||
stream.writeEndElement();
|
||||
|
||||
+26
-26
@@ -143,15 +143,15 @@ void ripple_clips(ComboAction* ca, Sequence *s, long point, long length, const Q
|
||||
}
|
||||
|
||||
void Timeline::toggle_show_all() {
|
||||
if (sequence != nullptr) {
|
||||
showing_all = !showing_all;
|
||||
if (showing_all) {
|
||||
old_zoom = zoom;
|
||||
set_zoom_value(double(timeline_area->width() - 200) / double(sequence->getEndFrame()));
|
||||
} else {
|
||||
set_zoom_value(old_zoom);
|
||||
}
|
||||
}
|
||||
if (sequence != nullptr) {
|
||||
showing_all = !showing_all;
|
||||
if (showing_all) {
|
||||
old_zoom = zoom;
|
||||
set_zoom_value(double(timeline_area->width() - 200) / double(sequence->getEndFrame()));
|
||||
} else {
|
||||
set_zoom_value(old_zoom);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Timeline::create_ghosts_from_media(Sequence* seq, long entry_point, QVector<Media*>& media_list) {
|
||||
@@ -235,7 +235,7 @@ void Timeline::create_ghosts_from_media(Sequence* seq, long entry_point, QVector
|
||||
case MEDIA_TYPE_SEQUENCE:
|
||||
g.out = entry_point + sequence_length - default_clip_in;
|
||||
|
||||
if (s->using_workarea && s->enable_workarea) {
|
||||
if (s->using_workarea) {
|
||||
g.out -= (sequence_length - default_clip_out);
|
||||
}
|
||||
|
||||
@@ -1430,8 +1430,8 @@ bool Timeline::snap_to_timeline(long* l, bool use_playhead, bool use_markers, bo
|
||||
return true;
|
||||
} else {
|
||||
// try to snap to clip markers
|
||||
for (int j=0;j<c->get_markers().size();j++) {
|
||||
if (snap_to_point(c->get_markers().at(j).frame + c->timeline_in - c->clip_in, l)) {
|
||||
for (int j=0;j<c->get_markers().size();j++) {
|
||||
if (snap_to_point(c->get_markers().at(j).frame + c->timeline_in - c->clip_in, l)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1444,7 +1444,7 @@ bool Timeline::snap_to_timeline(long* l, bool use_playhead, bool use_markers, bo
|
||||
|
||||
void Timeline::set_marker() {
|
||||
// determine if any clips are selected, and if so add markers to clips rather than the sequence
|
||||
QVector<int> clips_selected;
|
||||
QVector<int> clips_selected;
|
||||
bool clip_mode = false;
|
||||
|
||||
for (int i=0;i<sequence->clips.size();i++) {
|
||||
@@ -1452,26 +1452,26 @@ void Timeline::set_marker() {
|
||||
if (c != nullptr
|
||||
&& is_clip_selected(c, true)) {
|
||||
|
||||
// only add markers if the playhead is inside the clip
|
||||
if (sequence->playhead >= c->timeline_in
|
||||
&& sequence->playhead <= c->timeline_out) {
|
||||
clips_selected.append(i);
|
||||
}
|
||||
// only add markers if the playhead is inside the clip
|
||||
if (sequence->playhead >= c->timeline_in
|
||||
&& sequence->playhead <= c->timeline_out) {
|
||||
clips_selected.append(i);
|
||||
}
|
||||
|
||||
// we are definitely adding markers to clips though
|
||||
// we are definitely adding markers to clips though
|
||||
clip_mode = true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// if we've selected clips but none of the clips are within the playhead,
|
||||
// nothing to do here
|
||||
if (clip_mode && clips_selected.size() == 0) {
|
||||
return;
|
||||
}
|
||||
// if we've selected clips but none of the clips are within the playhead,
|
||||
// nothing to do here
|
||||
if (clip_mode && clips_selected.size() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// pass off to internal set marker function
|
||||
set_marker_internal(sequence, clips_selected);
|
||||
// pass off to internal set marker function
|
||||
set_marker_internal(sequence, clips_selected);
|
||||
|
||||
}
|
||||
|
||||
|
||||
+14
-21
@@ -282,7 +282,7 @@ void Viewer::close_media() {
|
||||
|
||||
void Viewer::go_to_in() {
|
||||
if (seq != nullptr) {
|
||||
if (seq->using_workarea && seq->enable_workarea) {
|
||||
if (seq->using_workarea) {
|
||||
seek(seq->workarea_in);
|
||||
} else {
|
||||
go_to_start();
|
||||
@@ -300,7 +300,7 @@ void Viewer::next_frame() {
|
||||
|
||||
void Viewer::go_to_out() {
|
||||
if (seq != nullptr) {
|
||||
if (seq->using_workarea && seq->enable_workarea) {
|
||||
if (seq->using_workarea) {
|
||||
seek(seq->workarea_out);
|
||||
} else {
|
||||
go_to_end();
|
||||
@@ -363,7 +363,7 @@ void Viewer::play(bool in_to_out) {
|
||||
uncue_recording();
|
||||
}
|
||||
|
||||
bool seek_to_in = (seq->using_workarea && config.loop);
|
||||
bool seek_to_in = (seq->using_workarea && (config.loop || playing_in_to_out));
|
||||
if (!is_recording_cued()
|
||||
&& (playing_in_to_out
|
||||
|| seq->playhead >= seq->getEndFrame()
|
||||
@@ -471,16 +471,16 @@ void Viewer::update_parents(bool reload_fx) {
|
||||
update_ui(reload_fx);
|
||||
} else {
|
||||
update_viewer();
|
||||
panel_timeline->repaint_timeline();
|
||||
panel_timeline->repaint_timeline();
|
||||
}
|
||||
}
|
||||
|
||||
int Viewer::get_playback_speed() {
|
||||
return playback_speed;
|
||||
return playback_speed;
|
||||
}
|
||||
|
||||
void Viewer::set_marker() {
|
||||
set_marker_internal(seq);
|
||||
set_marker_internal(seq);
|
||||
}
|
||||
|
||||
void Viewer::resizeEvent(QResizeEvent *) {
|
||||
@@ -518,13 +518,6 @@ void Viewer::clear_inout_point() {
|
||||
}
|
||||
}
|
||||
|
||||
void Viewer::toggle_enable_inout() {
|
||||
if (seq != nullptr && seq->using_workarea) {
|
||||
undo_stack.push(new SetBool(&seq->enable_workarea, !seq->enable_workarea));
|
||||
update_parents();
|
||||
}
|
||||
}
|
||||
|
||||
void Viewer::set_in_point() {
|
||||
headers->set_in_point(seq->playhead);
|
||||
}
|
||||
@@ -580,13 +573,13 @@ void Viewer::set_playback_speed(int s) {
|
||||
}
|
||||
|
||||
long Viewer::get_seq_in() {
|
||||
return ((config.loop || playing_in_to_out) && seq->using_workarea && seq->enable_workarea)
|
||||
return ((config.loop || playing_in_to_out) && seq->using_workarea)
|
||||
? seq->workarea_in
|
||||
: 0;
|
||||
}
|
||||
|
||||
long Viewer::get_seq_out() {
|
||||
return ((config.loop || playing_in_to_out) && seq->using_workarea && seq->enable_workarea && previous_playhead < seq->workarea_out)
|
||||
return ((config.loop || playing_in_to_out) && seq->using_workarea && previous_playhead < seq->workarea_out)
|
||||
? seq->workarea_out
|
||||
: seq->getEndFrame();
|
||||
}
|
||||
@@ -690,16 +683,16 @@ void Viewer::setup_ui() {
|
||||
|
||||
void Viewer::set_media(Media* m) {
|
||||
main_sequence = false;
|
||||
media = m;
|
||||
media = m;
|
||||
|
||||
clean_created_seq();
|
||||
clean_created_seq();
|
||||
if (media != nullptr) {
|
||||
switch (media->get_type()) {
|
||||
case MEDIA_TYPE_FOOTAGE:
|
||||
{
|
||||
Footage* footage = media->to_footage();
|
||||
|
||||
marker_ref = &footage->markers;
|
||||
marker_ref = &footage->markers;
|
||||
|
||||
seq = new Sequence();
|
||||
created_sequence = true;
|
||||
@@ -865,9 +858,9 @@ void Viewer::set_sequence(bool main, Sequence *s) {
|
||||
|
||||
viewer_container->adjust();
|
||||
|
||||
if (!created_sequence) {
|
||||
marker_ref = &seq->markers;
|
||||
}
|
||||
if (!created_sequence) {
|
||||
marker_ref = &seq->markers;
|
||||
}
|
||||
} else {
|
||||
update_playhead_timecode(0);
|
||||
update_end_timecode();
|
||||
|
||||
+4
-5
@@ -42,7 +42,6 @@ public:
|
||||
void clear_in();
|
||||
void clear_out();
|
||||
void clear_inout_point();
|
||||
void toggle_enable_inout();
|
||||
void set_in_point();
|
||||
void set_out_point();
|
||||
void set_zoom(bool in);
|
||||
@@ -73,12 +72,12 @@ public:
|
||||
ViewerWidget* viewer_widget;
|
||||
|
||||
Media* media;
|
||||
Sequence* seq;
|
||||
QVector<Marker>* marker_ref;
|
||||
Sequence* seq;
|
||||
QVector<Marker>* marker_ref;
|
||||
|
||||
void set_marker();
|
||||
void set_marker();
|
||||
|
||||
TimelineHeader* headers;
|
||||
TimelineHeader* headers;
|
||||
|
||||
void resizeEvent(QResizeEvent *event);
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
Sequence::Sequence() :
|
||||
playhead(0),
|
||||
using_workarea(false),
|
||||
enable_workarea(true),
|
||||
workarea_in(0),
|
||||
workarea_out(0),
|
||||
wrapper_sequence(false)
|
||||
@@ -26,7 +25,7 @@ Sequence::~Sequence() {
|
||||
|
||||
Sequence* Sequence::copy() {
|
||||
Sequence* s = new Sequence();
|
||||
s->name = QCoreApplication::translate("Sequence", "%1 (copy)").arg(name);
|
||||
s->name = QCoreApplication::translate("Sequence", "%1 (copy)").arg(name);
|
||||
s->width = width;
|
||||
s->height = height;
|
||||
s->frame_rate = frame_rate;
|
||||
|
||||
@@ -28,7 +28,6 @@ struct Sequence {
|
||||
long playhead;
|
||||
|
||||
bool using_workarea;
|
||||
bool enable_workarea;
|
||||
long workarea_in;
|
||||
long workarea_out;
|
||||
|
||||
|
||||
@@ -210,7 +210,6 @@ SetTimelineInOutCommand::SetTimelineInOutCommand(Sequence *s, bool enabled, long
|
||||
|
||||
void SetTimelineInOutCommand::undo() {
|
||||
seq->using_workarea = old_enabled;
|
||||
seq->enable_workarea = old_workarea_enabled;
|
||||
seq->workarea_in = old_in;
|
||||
seq->workarea_out = old_out;
|
||||
|
||||
@@ -227,11 +226,9 @@ void SetTimelineInOutCommand::undo() {
|
||||
|
||||
void SetTimelineInOutCommand::redo() {
|
||||
old_enabled = seq->using_workarea;
|
||||
old_workarea_enabled = seq->enable_workarea;
|
||||
old_in = seq->workarea_in;
|
||||
old_out = seq->workarea_out;
|
||||
|
||||
if (!seq->using_workarea) seq->enable_workarea = true;
|
||||
seq->using_workarea = new_enabled;
|
||||
seq->workarea_in = new_in;
|
||||
seq->workarea_out = new_out;
|
||||
|
||||
@@ -174,8 +174,6 @@ public:
|
||||
private:
|
||||
Sequence* seq;
|
||||
|
||||
bool old_workarea_enabled;
|
||||
|
||||
bool old_enabled;
|
||||
long old_in;
|
||||
long old_out;
|
||||
|
||||
+17
-17
@@ -143,8 +143,8 @@ void TimelineHeader::mousePressEvent(QMouseEvent* event) {
|
||||
if (event->pos().y() > get_marker_offset()
|
||||
&& (event->pos().x() < playhead_x-PLAYHEAD_SIZE
|
||||
|| event->pos().x() > playhead_x+PLAYHEAD_SIZE)) {
|
||||
for (int i=0;i<viewer->marker_ref->size();i++) {
|
||||
int marker_pos = getHeaderScreenPointFromFrame(viewer->marker_ref->at(i).frame);
|
||||
for (int i=0;i<viewer->marker_ref->size();i++) {
|
||||
int marker_pos = getHeaderScreenPointFromFrame(viewer->marker_ref->at(i).frame);
|
||||
if (event->pos().x() > marker_pos - MARKER_SIZE && event->pos().x() < marker_pos + MARKER_SIZE) {
|
||||
bool found = false;
|
||||
for (int j=0;j<selected_markers.size();j++) {
|
||||
@@ -172,7 +172,7 @@ void TimelineHeader::mousePressEvent(QMouseEvent* event) {
|
||||
if (clicked_on_marker) {
|
||||
selected_marker_original_times.resize(selected_markers.size());
|
||||
for (int i=0;i<selected_markers.size();i++) {
|
||||
selected_marker_original_times[i] = viewer->marker_ref->at(selected_markers.at(i)).frame;
|
||||
selected_marker_original_times[i] = viewer->marker_ref->at(selected_markers.at(i)).frame;
|
||||
}
|
||||
drag_start = event->pos().x();
|
||||
dragging_markers = true;
|
||||
@@ -225,7 +225,7 @@ void TimelineHeader::mouseMoveEvent(QMouseEvent* event) {
|
||||
|
||||
// move markers
|
||||
for (int i=0;i<selected_markers.size();i++) {
|
||||
viewer->marker_ref[0][selected_markers.at(i)].frame = selected_marker_original_times.at(i) + frame_movement;
|
||||
viewer->marker_ref[0][selected_markers.at(i)].frame = selected_marker_original_times.at(i) + frame_movement;
|
||||
}
|
||||
|
||||
update_parents();
|
||||
@@ -264,7 +264,7 @@ void TimelineHeader::mouseReleaseEvent(QMouseEvent*) {
|
||||
bool moved = false;
|
||||
ComboAction* ca = new ComboAction();
|
||||
for (int i=0;i<selected_markers.size();i++) {
|
||||
Marker* m = &viewer->marker_ref[0][selected_markers.at(i)];
|
||||
Marker* m = &viewer->marker_ref[0][selected_markers.at(i)];
|
||||
if (selected_marker_original_times.at(i) != m->frame) {
|
||||
ca->append(new MoveMarkerAction(m, selected_marker_original_times.at(i), m->frame));
|
||||
moved = true;
|
||||
@@ -305,7 +305,7 @@ double TimelineHeader::get_zoom() {
|
||||
|
||||
void TimelineHeader::delete_markers() {
|
||||
if (selected_markers.size() > 0) {
|
||||
DeleteMarkerAction* dma = new DeleteMarkerAction(viewer->marker_ref);
|
||||
DeleteMarkerAction* dma = new DeleteMarkerAction(viewer->marker_ref);
|
||||
for (int i=0;i<selected_markers.size();i++) {
|
||||
dma->markers.append(selected_markers.at(i));
|
||||
}
|
||||
@@ -397,27 +397,27 @@ void TimelineHeader::paintEvent(QPaintEvent*) {
|
||||
if (viewer->seq->using_workarea) {
|
||||
in_x = getHeaderScreenPointFromFrame((resizing_workarea ? temp_workarea_in : viewer->seq->workarea_in));
|
||||
int out_x = getHeaderScreenPointFromFrame((resizing_workarea ? temp_workarea_out : viewer->seq->workarea_out));
|
||||
p.fillRect(QRect(in_x, 0, out_x-in_x, height()), viewer->seq->enable_workarea ? QColor(0, 192, 255, 128) : QColor(255, 255, 255, 64));
|
||||
p.fillRect(QRect(in_x, 0, out_x-in_x, height()), QColor(0, 192, 255, 128));
|
||||
p.setPen(Qt::white);
|
||||
p.drawLine(in_x, 0, in_x, height());
|
||||
p.drawLine(out_x, 0, out_x, height());
|
||||
}
|
||||
|
||||
// draw markers
|
||||
for (int i=0;i<viewer->marker_ref->size();i++) {
|
||||
const Marker& m = viewer->marker_ref->at(i);
|
||||
for (int i=0;i<viewer->marker_ref->size();i++) {
|
||||
const Marker& m = viewer->marker_ref->at(i);
|
||||
|
||||
int marker_x = getHeaderScreenPointFromFrame(m.frame);
|
||||
|
||||
bool selected = false;
|
||||
for (int j=0;j<selected_markers.size();j++) {
|
||||
if (selected_markers.at(j) == i) {
|
||||
selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
bool selected = false;
|
||||
for (int j=0;j<selected_markers.size();j++) {
|
||||
if (selected_markers.at(j) == i) {
|
||||
selected = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
draw_marker(p, marker_x, yoff, height()-1, selected, false);
|
||||
draw_marker(p, marker_x, yoff, height()-1, selected, false);
|
||||
}
|
||||
|
||||
// draw playhead triangle
|
||||
|
||||
Reference in New Issue
Block a user