fixed the graph editor

This commit is contained in:
itsmattkc
2019-03-14 09:35:50 +11:00
parent 7b7ffc84d2
commit c6a4b9e8d6
5 changed files with 54 additions and 42 deletions
+20 -31
View File
@@ -130,6 +130,11 @@ GraphEditor::GraphEditor(QWidget* parent) : Panel(parent), row(nullptr) {
Retranslate();
}
EffectRow *GraphEditor::get_row()
{
return row;
}
void GraphEditor::Retranslate() {
setWindowTitle(tr("Graph Editor"));
linear_button->setText(tr("Linear"));
@@ -144,11 +149,7 @@ void GraphEditor::update_panel() {
for (int i=0;i<row->FieldCount();i++) {
EffectField* field = row->Field(i);
if (field->type() == EffectField::EFFECT_FIELD_DOUBLE) {
slider_proxies.at(slider_index)->SetValue(
row->Field(i)->GetValueAt(
playhead_to_clip_seconds(field->GetParentRow()->GetParentEffect()->parent_clip,
olive::ActiveSequence->playhead)).toDouble()
);
field->UpdateWidgetValue(field_sliders_.at(slider_index), field->Now());
slider_index++;
}
}
@@ -160,19 +161,18 @@ void GraphEditor::update_panel() {
}
void GraphEditor::set_row(EffectRow *r) {
for (int i=0;i<slider_proxies.size();i++) {
delete slider_proxies.at(i);
delete slider_proxy_buttons.at(i);
for (int i=0;i<field_sliders_.size();i++) {
delete field_sliders_.at(i);
delete field_enable_buttons.at(i);
}
slider_proxies.clear();
slider_proxy_buttons.clear();
slider_proxy_sources.clear();
field_sliders_.clear();
field_enable_buttons.clear();
if (row != nullptr) {
// clear old row connections
disconnect(keyframe_nav, SIGNAL(goto_previous_key()), row, SLOT(goto_previous_key()));
disconnect(keyframe_nav, SIGNAL(toggle_key()), row, SLOT(toggle_key()));
disconnect(keyframe_nav, SIGNAL(goto_next_key()), row, SLOT(goto_next_key()));
disconnect(keyframe_nav, SIGNAL(goto_previous_key()), row, SLOT(GoToPreviousKeyframe()));
disconnect(keyframe_nav, SIGNAL(toggle_key()), row, SLOT(ToggleKeyframe()));
disconnect(keyframe_nav, SIGNAL(goto_next_key()), row, SLOT(GoToNextKeyframe()));
}
bool found_vals = false;
@@ -188,17 +188,14 @@ void GraphEditor::set_row(EffectRow *r) {
slider_button->setProperty("field", i);
slider_button->setIconSize(slider_button->iconSize()*0.5);
connect(slider_button, SIGNAL(toggled(bool)), this, SLOT(set_field_visibility(bool)));
slider_proxy_buttons.append(slider_button);
field_enable_buttons.append(slider_button);
value_layout->addWidget(slider_button);
LabelSlider* slider = new LabelSlider();
LabelSlider* slider = static_cast<LabelSlider*>(field->CreateWidget());
slider->SetColor(get_curve_color(i, r->FieldCount()).name());
connect(slider, SIGNAL(valueChanged()), this, SLOT(passthrough_slider_value()));
slider_proxies.append(slider);
field_sliders_.append(slider);
value_layout->addWidget(slider);
//slider_proxy_sources.append(static_cast<LabelSlider*>(field->ui_element));
found_vals = true;
}
}
@@ -211,9 +208,9 @@ void GraphEditor::set_row(EffectRow *r) {
+ " :: " + row->name());
header->set_visible_in(r->GetParentEffect()->parent_clip->timeline_in());
connect(keyframe_nav, SIGNAL(goto_previous_key()), row, SLOT(goto_previous_key()));
connect(keyframe_nav, SIGNAL(toggle_key()), row, SLOT(toggle_key()));
connect(keyframe_nav, SIGNAL(goto_next_key()), row, SLOT(goto_next_key()));
connect(keyframe_nav, SIGNAL(goto_previous_key()), row, SLOT(GoToPreviousKeyframe()));
connect(keyframe_nav, SIGNAL(toggle_key()), row, SLOT(ToggleKeyframe()));
connect(keyframe_nav, SIGNAL(goto_next_key()), row, SLOT(GoToNextKeyframe()));
} else {
row = nullptr;
current_row_desc->setText(nullptr);
@@ -247,14 +244,6 @@ void GraphEditor::set_key_button_enabled(bool e, int type) {
hold_button->setChecked(type == EFFECT_KEYFRAME_HOLD);
}
void GraphEditor::passthrough_slider_value() {
for (int i=0;i<slider_proxies.size();i++) {
if (slider_proxies.at(i) == sender()) {
slider_proxy_sources.at(i)->SetValue(slider_proxies.at(i)->value());
}
}
}
void GraphEditor::set_keyframe_type() {
linear_button->setChecked(linear_button == sender());
bezier_button->setChecked(bezier_button == sender());