fixed the graph editor
This commit is contained in:
+20
-31
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user