standardized gizmos and made them keyframable

This commit is contained in:
itsmattkc
2018-12-02 18:23:15 +11:00
parent cc41123106
commit 021a50477c
18 changed files with 188 additions and 139 deletions
+9 -11
View File
@@ -3,11 +3,11 @@
#include "project/undo.h"
#include "panels/viewer.h"
#include "io/config.h"
#include "debug.h"
#include <QMouseEvent>
#include <QInputDialog>
#include <QApplication>
#include <QDebug>
LabelSlider::LabelSlider(QWidget* parent) : QLabel(parent) {
frame_rate = 30;
@@ -46,7 +46,7 @@ void LabelSlider::set_value(double v, bool userSet) {
}
setText(valueToString(internal_value));
if (userSet) emit valueChanged();
if (userSet) emit valueChanged();
}
}
@@ -71,7 +71,11 @@ QString LabelSlider::valueToString(double v) {
}
double LabelSlider::getPreviousValue() {
return previous_value;
return previous_value;
}
void LabelSlider::set_previous_value() {
previous_value = internal_value;
}
double LabelSlider::value() {
@@ -79,8 +83,6 @@ double LabelSlider::value() {
}
void LabelSlider::set_default_value(double v) {
// if (internal_value == default_value) set = false; TODO: CONTROVERSIAL - disabled bc may lead undesirable behaviour
default_value = v;
if (!set) {
set_value(v, false);
@@ -98,15 +100,11 @@ void LabelSlider::set_maximum_value(double v) {
max_enabled = true;
}
double LabelSlider::get_drag_start_value() {
return drag_start_value;
}
void LabelSlider::mousePressEvent(QMouseEvent *ev) {
drag_start_value = internal_value;
if (ev->modifiers() & Qt::AltModifier) {
if (internal_value != default_value && !qIsNaN(default_value)) {
previous_value = internal_value;
set_previous_value();
set_value(default_value, true);
}
} else {
@@ -166,7 +164,7 @@ void LabelSlider::mouseReleaseEvent(QMouseEvent*) {
if (display_type == LABELSLIDER_PERCENT) d *= 0.01;
}
if (d != internal_value) {
previous_value = internal_value;
set_previous_value();
set_value(d, true);
}
}
+1 -1
View File
@@ -21,10 +21,10 @@ public:
void set_maximum_value(double v);
double value();
bool is_set();
double get_drag_start_value();
bool is_dragging();
QString valueToString(double v);
double getPreviousValue();
void set_previous_value();
int decimal_places;
protected:
void mousePressEvent(QMouseEvent *ev);
+26 -25
View File
@@ -170,6 +170,25 @@ EffectGizmo* ViewerWidget::get_gizmo_from_mouse(int x, int y) {
return NULL;
}
void ViewerWidget::move_gizmos(QMouseEvent *event, bool done) {
if (selected_gizmo != NULL) {
double multiplier = (double) viewer->seq->width / (double) width();
int x_movement = (event->pos().x() - drag_start_x)*multiplier;
int y_movement = (event->pos().y() - drag_start_y)*multiplier;
gizmos->gizmo_move(selected_gizmo, x_movement, y_movement, get_timecode(gizmos->parent_clip, gizmos->parent_clip->sequence->playhead), done);
gizmo_x_mvmt += x_movement;
gizmo_y_mvmt += y_movement;
drag_start_x = event->pos().x();
drag_start_y = event->pos().y();
gizmos->field_changed();
}
}
void ViewerWidget::mousePressEvent(QMouseEvent* event) {
if (waveform) {
seek_from_click(event->x());
@@ -181,6 +200,10 @@ void ViewerWidget::mousePressEvent(QMouseEvent* event) {
gizmo_y_mvmt = 0;
selected_gizmo = get_gizmo_from_mouse(event->pos().x(), event->pos().y());
if (selected_gizmo != NULL) {
selected_gizmo->set_previous_value();
}
}
dragging = true;
}
@@ -196,21 +219,8 @@ void ViewerWidget::mouseMoveEvent(QMouseEvent* event) {
drag->setMimeData(mimeData);
drag->exec();
dragging = false;
} else if (selected_gizmo != NULL) {
double multiplier = (double) viewer->seq->width / (double) width();
int x_movement = (event->pos().x() - drag_start_x)*multiplier;
int y_movement = (event->pos().y() - drag_start_y)*multiplier;
gizmos->gizmo_move(selected_gizmo, x_movement, y_movement, get_timecode(gizmos->parent_clip, gizmos->parent_clip->sequence->playhead));
gizmo_x_mvmt += x_movement;
gizmo_y_mvmt += y_movement;
drag_start_x = event->pos().x();
drag_start_y = event->pos().y();
gizmos->field_changed();
} else {
move_gizmos(event, false);
}
} else {
unsetCursor();
@@ -224,16 +234,7 @@ void ViewerWidget::mouseMoveEvent(QMouseEvent* event) {
}
void ViewerWidget::mouseReleaseEvent(QMouseEvent *event) {
if (selected_gizmo != NULL) {
/*undo_stack.push(new MoveGizmo(
gizmos,
selected_gizmo,
gizmo_x_mvmt,
gizmo_y_mvmt,
get_timecode(gizmos->parent_clip, gizmos->parent_clip->sequence->playhead)
));*/
}
move_gizmos(event, true);
dragging = false;
}
+1
View File
@@ -57,6 +57,7 @@ private:
EffectGizmo* selected_gizmo;
EffectGizmo* get_gizmo_from_mouse(int x, int y);
bool drawn_gizmos;
void move_gizmos(QMouseEvent *event, bool done);
private slots:
void retry();
void show_context_menu();