big progress on graph editor

This commit is contained in:
itsmattkc
2018-12-28 22:06:38 +11:00
parent c3ea55faf4
commit e101739214
25 changed files with 607 additions and 84 deletions
+2
View File
@@ -10,6 +10,7 @@
#include "project/clip.h"
#include "panels/timeline.h"
#include "panels/effectcontrols.h"
#include "panels/grapheditor.h"
#include "ui/checkboxex.h"
#include "debug.h"
#include "io/path.h"
@@ -489,6 +490,7 @@ void Effect::refresh() {}
void Effect::field_changed() {
panel_sequence_viewer->viewer_widget->update();
panel_graph_editor->update_panel();
}
void Effect::show_context_menu(const QPoint& pos) {
+1
View File
@@ -28,6 +28,7 @@ EffectField::EffectField(EffectRow *parent, int t, const QString &i) :
LabelSlider* ls = new LabelSlider();
ui_element = ls;
connect(ls, SIGNAL(valueChanged()), this, SLOT(ui_element_change()));
connect(ls, SIGNAL(clicked()), this, SIGNAL(clicked()));
}
break;
case EFFECT_FIELD_COLOR:
+1
View File
@@ -69,6 +69,7 @@ private slots:
signals:
void changed();
void toggled(bool);
void clicked();
};
#endif // EFFECTFIELD_H
+19 -5
View File
@@ -1,6 +1,5 @@
#include "effectrow.h"
#include <QLabel>
#include <QHBoxLayout>
#include <QPushButton>
#include <QMessageBox>
@@ -11,9 +10,11 @@
#include "panels/panels.h"
#include "panels/effectcontrols.h"
#include "panels/viewer.h"
#include "panels/grapheditor.h"
#include "effect.h"
#include "ui/viewerwidget.h"
#include "ui/keyframenavigator.h"
#include "ui/clickablelabel.h"
EffectRow::EffectRow(Effect *parent, bool save, QGridLayout *uilayout, const QString &n, int row) :
parent_effect(parent),
@@ -24,15 +25,19 @@ EffectRow::EffectRow(Effect *parent, bool save, QGridLayout *uilayout, const QSt
ui_row(row),
just_made_unsafe_keyframe(false)
{
label = new QLabel(name);
label = new ClickableLabel(name);
ui->addWidget(label, row, 0);
if (parent_effect->meta->type != EFFECT_TYPE_TRANSITION) {
connect(label, SIGNAL(clicked()), this, SLOT(focus_row()));
keyframe_nav = new KeyframeNavigator();
connect(keyframe_nav, SIGNAL(goto_previous_key()), this, SLOT(goto_previous_key()));
connect(keyframe_nav, SIGNAL(toggle_key()), this, SLOT(toggle_key()));
connect(keyframe_nav, SIGNAL(goto_next_key()), this, SLOT(goto_next_key()));
connect(keyframe_nav, SIGNAL(set_keyframe_enabled(bool)), this, SLOT(set_keyframe_enabled(bool)));
connect(keyframe_nav, SIGNAL(keyframe_enabled_changed(bool)), this, SLOT(set_keyframe_enabled(bool)));
connect(keyframe_nav, SIGNAL(clicked()), this, SLOT(focus_row()));
ui->addWidget(keyframe_nav, row, 6);
}
}
@@ -114,11 +119,16 @@ void EffectRow::goto_next_key() {
key = qMin(comp, key);
}
}
if (key != LONG_MAX) panel_sequence_viewer->seek(key);
if (key != LONG_MAX) panel_sequence_viewer->seek(key);
}
void EffectRow::focus_row() {
panel_graph_editor->set_row(this);
}
EffectField* EffectRow::add_field(int type, const QString& id, int colspan) {
EffectField* field = new EffectField(this, type, id);
if (parent_effect->meta->type != EFFECT_TYPE_TRANSITION) connect(field, SIGNAL(clicked()), this, SLOT(focus_row()));
fields.append(field);
QWidget* element = field->get_ui_element();
ui->addWidget(element, ui_row, fields.size(), 1, colspan);
@@ -162,7 +172,11 @@ void EffectRow::delete_keyframe_at_time(KeyframeDelete* kd, long time) {
delete_keyframe(kd, i);
break;
}
}
}
}
const QString &EffectRow::get_name() {
return name;
}
void EffectRow::delete_keyframe(KeyframeDelete* kd, int index) {
+9 -5
View File
@@ -13,6 +13,7 @@ class QPushButton;
class ComboAction;
class QHBoxLayout;
class KeyframeNavigator;
class ClickableLabel;
class EffectRow : public QObject {
Q_OBJECT
@@ -25,20 +26,23 @@ public:
void set_keyframe_now(ComboAction *ca);
void delete_keyframe(KeyframeDelete *kd, int index);
void delete_keyframe_at_time(KeyframeDelete* kd, long time);
QLabel* label;
ClickableLabel* label;
Effect* parent_effect;
bool savable;
const QString& get_name();
bool isKeyframing();
void setKeyframing(bool);
QVector<long> keyframe_times;
QVector<int> keyframe_types;
public slots:
void goto_previous_key();
void toggle_key();
void goto_next_key();
void focus_row();
private slots:
void set_keyframe_enabled(bool);
void goto_previous_key();
void toggle_key();
void goto_next_key();
void set_keyframe_enabled(bool);
private:
bool keyframing;
QGridLayout* ui;
+2
View File
@@ -0,0 +1,2 @@
#include "keyframe.h"
+17
View File
@@ -0,0 +1,17 @@
#ifndef KEYFRAME_H
#define KEYFRAME_H
#include <QVariant>
#include <QPoint>
class KeyframeData
{
public:
QVariant data;
QPoint handle_pre;
QPoint handle_post;
};
#endif // KEYFRAME_H