various: moved time from viewer UI to viewer node

This commit is contained in:
itsmattkc
2022-10-23 20:56:04 -07:00
parent fc56058e8a
commit d1545745d8
47 changed files with 259 additions and 418 deletions
+20 -34
View File
@@ -83,7 +83,6 @@ TimelineWidget::TimelineWidget(QWidget *parent) :
timecode_label_->SetDisplayType(RationalSlider::kTime);
timecode_label_->setVisible(false);
timecode_label_->SetMinimum(0);
connect(timecode_label_, &RationalSlider::ValueChanged, this, &TimelineWidget::SetTimeAndSignal);
ruler_and_time_layout->addWidget(timecode_label_);
ruler_and_time_layout->addWidget(ruler());
@@ -144,11 +143,10 @@ TimelineWidget::TimelineWidget(QWidget *parent) :
view_splitter_->addWidget(tview);
ConnectTimelineView(view, false);
ConnectTimelineView(view);
connect(view->horizontalScrollBar(), &QScrollBar::valueChanged, ruler(), &TimeRuler::SetScroll);
connect(view, &TimelineView::ScaleChanged, this, &TimelineWidget::SetScale);
connect(view, &TimelineView::TimeChanged, this, &TimelineWidget::SetTimeAndSignal);
connect(view, &TimelineView::customContextMenuRequested, this, &TimelineWidget::ShowContextMenu);
connect(scrollbar(), &QScrollBar::valueChanged, view->horizontalScrollBar(), &QScrollBar::setValue);
connect(view->horizontalScrollBar(), &QScrollBar::valueChanged, scrollbar(), &QScrollBar::setValue);
@@ -244,15 +242,6 @@ void TimelineWidget::resizeEvent(QResizeEvent *event)
UpdateTimecodeWidthFromSplitters(views_.first()->splitter());
}
void TimelineWidget::TimeChangedEvent(const rational &time)
{
super::TimeChangedEvent(time);
SetViewTime(time);
timecode_label_->SetValue(time);
}
void TimelineWidget::ScaleChangedEvent(const double &scale)
{
super::ScaleChangedEvent(scale);
@@ -271,6 +260,9 @@ void TimelineWidget::ConnectNodeEvent(ViewerOutput *n)
connect(s, &Sequence::FrameRateChanged, this, &TimelineWidget::FrameRateChanged);
connect(s, &Sequence::SampleRateChanged, this, &TimelineWidget::SampleRateChanged);
connect(timecode_label_, &RationalSlider::ValueChanged, s, &Sequence::SetPlayhead);
connect(s, &Sequence::PlayheadChanged, timecode_label_, &RationalSlider::SetValue);
ruler()->SetPlaybackCache(n->video_frame_cache());
SetTimebase(n->GetVideoParams().frame_rate_as_time_base());
@@ -301,6 +293,8 @@ void TimelineWidget::DisconnectNodeEvent(ViewerOutput *n)
disconnect(s, &Sequence::FrameRateChanged, this, &TimelineWidget::FrameRateChanged);
disconnect(s, &Sequence::SampleRateChanged, this, &TimelineWidget::SampleRateChanged);
disconnect(timecode_label_, &RationalSlider::ValueChanged, s, &Sequence::SetPlayhead);
DeselectAll();
foreach (Track* track, s->GetTracks()) {
@@ -371,7 +365,7 @@ void TimelineWidget::SplitAtPlayhead()
return;
}
const rational &playhead_time = GetTime();
const rational &playhead_time = GetConnectedNode()->GetPlayhead();
QVector<Block*> selected_blocks = GetSelectedBlocks();
@@ -513,7 +507,7 @@ void TimelineWidget::DeleteSelected(bool ripple)
ClearGhosts();
if (ripple_command && ripple_command->HasCommands() && new_playhead != RATIONAL_MAX) {
SetTimeAndSignal(new_playhead);
GetConnectedNode()->SetPlayhead(new_playhead);
}
}
@@ -544,14 +538,14 @@ void TimelineWidget::DecreaseTrackHeight()
void TimelineWidget::InsertFootageAtPlayhead(const QVector<ViewerOutput*>& footage)
{
auto command = new MultiUndoCommand();
import_tool_->PlaceAt(footage, GetTime(), true, command);
import_tool_->PlaceAt(footage, GetConnectedNode()->GetPlayhead(), true, command);
Core::instance()->undo_stack()->push(command);
}
void TimelineWidget::OverwriteFootageAtPlayhead(const QVector<ViewerOutput *> &footage)
{
auto command = new MultiUndoCommand();
import_tool_->PlaceAt(footage, GetTime(), false, command);
import_tool_->PlaceAt(footage, GetConnectedNode()->GetPlayhead(), false, command);
Core::instance()->undo_stack()->push(command);
}
@@ -714,7 +708,7 @@ void TimelineWidget::DeleteInToOut(bool ripple)
false));
if (ripple) {
SetTimeAndSignal(GetConnectedNode()->GetWorkArea()->in());
GetConnectedNode()->SetPlayhead(GetConnectedNode()->GetWorkArea()->in());
}
Core::instance()->undo_stack()->push(command);
@@ -1325,14 +1319,6 @@ void TimelineWidget::SetUseAudioTimeUnits(bool use)
UpdateViewTimebases();
}
void TimelineWidget::SetViewTime(const rational &time)
{
for (int i=0;i<views_.size();i++) {
TimelineAndTrackView* view = views_.at(i);
view->view()->SetTime(time);
}
}
void TimelineWidget::ToolChanged()
{
HideSnaps();
@@ -1618,7 +1604,7 @@ void TimelineWidget::MoveToPlayheadInternal(bool out)
}
foreach (Block *b, selected_blocks_) {
rational shift_amt = GetTime() - earliest_pts.value(b->track());
rational shift_amt = GetConnectedNode()->GetPlayhead() - earliest_pts.value(b->track());
rational new_in = b->in() + shift_amt;
bool can_shift = true;
@@ -1641,7 +1627,7 @@ void TimelineWidget::MoveToPlayheadInternal(bool out)
// Shift selections
TimelineWidgetSelections new_sel = GetSelections();
for (auto it=new_sel.begin(); it!=new_sel.end(); it++) {
rational track_adj = GetTime() - earliest_pts.value(GetTrackFromReference(it.key()), GetTime());
rational track_adj = GetConnectedNode()->GetPlayhead() - earliest_pts.value(GetTrackFromReference(it.key()), GetConnectedNode()->GetPlayhead());
if (!track_adj.isNull()) {
it.value().shift(track_adj);
}
@@ -1794,7 +1780,7 @@ void TimelineWidget::RippleTo(Timeline::MovementMode mode)
return;
}
rational playhead_time = GetTime();
rational playhead_time = GetConnectedNode()->GetPlayhead();
QVector<Timeline::EditToInfo> tracks = GetEditToInfo(playhead_time, mode);
@@ -1842,15 +1828,15 @@ void TimelineWidget::RippleTo(Timeline::MovementMode mode)
// If we rippled, ump to where new cut is if applicable
if (mode == Timeline::kTrimIn) {
SetTimeAndSignal(closest_point_to_playhead);
} else if (mode == Timeline::kTrimOut && closest_point_to_playhead == GetTime()) {
SetTimeAndSignal(playhead_time);
GetConnectedNode()->SetPlayhead(closest_point_to_playhead);
} else if (mode == Timeline::kTrimOut && closest_point_to_playhead == GetConnectedNode()->GetPlayhead()) {
GetConnectedNode()->SetPlayhead(playhead_time);
}
}
void TimelineWidget::EditTo(Timeline::MovementMode mode)
{
const rational playhead_time = GetTime();
const rational playhead_time = GetConnectedNode()->GetPlayhead();
// Get list of unlocked tracks
QVector<Timeline::EditToInfo> tracks = GetEditToInfo(playhead_time, mode);
@@ -1952,10 +1938,10 @@ bool TimelineWidget::PasteInternal(bool insert)
command->add_child(new NodeAddCommand(GetConnectedNode()->project(), n));
}
rational paste_start = GetTime();
rational paste_start = GetConnectedNode()->GetPlayhead();
if (insert) {
rational paste_end = GetTime();
rational paste_end = paste_start;
for (auto it=res.GetLoadData().properties.cbegin(); it!=res.GetLoadData().properties.cend(); it++) {
rational length = static_cast<Block*>(it.key())->length();