restricted labelsliders to left mouse button
This commit is contained in:
+67
-65
@@ -12,17 +12,17 @@
|
||||
LabelSlider::LabelSlider(QWidget* parent) : QLabel(parent) {
|
||||
frame_rate = 30;
|
||||
decimal_places = 1;
|
||||
drag_start = false;
|
||||
drag_start = false;
|
||||
drag_proc = false;
|
||||
min_enabled = false;
|
||||
max_enabled = false;
|
||||
min_enabled = false;
|
||||
max_enabled = false;
|
||||
set_color();
|
||||
setCursor(Qt::SizeHorCursor);
|
||||
internal_value = -1;
|
||||
set = false;
|
||||
display_type = LABELSLIDER_NORMAL;
|
||||
setCursor(Qt::SizeHorCursor);
|
||||
internal_value = -1;
|
||||
set = false;
|
||||
display_type = LABELSLIDER_NORMAL;
|
||||
|
||||
set_default_value(0);
|
||||
set_default_value(0);
|
||||
}
|
||||
|
||||
void LabelSlider::set_frame_rate(double d) {
|
||||
@@ -35,23 +35,23 @@ void LabelSlider::set_display_type(int type) {
|
||||
}
|
||||
|
||||
void LabelSlider::set_value(double v, bool userSet) {
|
||||
set = true;
|
||||
if (v != internal_value) {
|
||||
if (min_enabled && v < min_value) {
|
||||
internal_value = min_value;
|
||||
} else if (max_enabled && v > max_value) {
|
||||
internal_value = max_value;
|
||||
} else {
|
||||
internal_value = v;
|
||||
}
|
||||
set = true;
|
||||
if (v != internal_value) {
|
||||
if (min_enabled && v < min_value) {
|
||||
internal_value = min_value;
|
||||
} else if (max_enabled && v > max_value) {
|
||||
internal_value = max_value;
|
||||
} else {
|
||||
internal_value = v;
|
||||
}
|
||||
|
||||
setText(valueToString(internal_value));
|
||||
if (userSet) emit valueChanged();
|
||||
}
|
||||
if (userSet) emit valueChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool LabelSlider::is_set() {
|
||||
return set;
|
||||
return set;
|
||||
}
|
||||
|
||||
bool LabelSlider::is_dragging() {
|
||||
@@ -71,7 +71,7 @@ QString LabelSlider::valueToString(double v) {
|
||||
}
|
||||
|
||||
double LabelSlider::getPreviousValue() {
|
||||
return previous_value;
|
||||
return previous_value;
|
||||
}
|
||||
|
||||
void LabelSlider::set_previous_value() {
|
||||
@@ -84,11 +84,11 @@ void LabelSlider::set_color(QString c) {
|
||||
}
|
||||
|
||||
double LabelSlider::value() {
|
||||
return internal_value;
|
||||
return internal_value;
|
||||
}
|
||||
|
||||
void LabelSlider::set_default_value(double v) {
|
||||
default_value = v;
|
||||
default_value = v;
|
||||
if (!set) {
|
||||
set_value(v, false);
|
||||
set = false;
|
||||
@@ -96,83 +96,85 @@ void LabelSlider::set_default_value(double v) {
|
||||
}
|
||||
|
||||
void LabelSlider::set_minimum_value(double v) {
|
||||
min_value = v;
|
||||
min_enabled = true;
|
||||
min_value = v;
|
||||
min_enabled = true;
|
||||
}
|
||||
|
||||
void LabelSlider::set_maximum_value(double v) {
|
||||
max_value = v;
|
||||
max_enabled = true;
|
||||
max_value = v;
|
||||
max_enabled = true;
|
||||
}
|
||||
|
||||
void LabelSlider::mousePressEvent(QMouseEvent *ev) {
|
||||
drag_start_value = internal_value;
|
||||
if (ev->modifiers() & Qt::AltModifier) {
|
||||
if (internal_value != default_value && !qIsNaN(default_value)) {
|
||||
set_previous_value();
|
||||
set_value(default_value, true);
|
||||
}
|
||||
} else {
|
||||
if (qIsNaN(internal_value)) internal_value = 0;
|
||||
if (ev->buttons() & Qt::LeftButton) {
|
||||
drag_start_value = internal_value;
|
||||
if (ev->modifiers() & Qt::AltModifier) {
|
||||
if (internal_value != default_value && !qIsNaN(default_value)) {
|
||||
set_previous_value();
|
||||
set_value(default_value, true);
|
||||
}
|
||||
} else {
|
||||
if (qIsNaN(internal_value)) internal_value = 0;
|
||||
|
||||
qApp->setOverrideCursor(Qt::BlankCursor);
|
||||
drag_start = true;
|
||||
drag_start_x = cursor().pos().x();
|
||||
drag_start_y = cursor().pos().y();
|
||||
}
|
||||
emit clicked();
|
||||
qApp->setOverrideCursor(Qt::BlankCursor);
|
||||
drag_start = true;
|
||||
drag_start_x = cursor().pos().x();
|
||||
drag_start_y = cursor().pos().y();
|
||||
}
|
||||
emit clicked();
|
||||
}
|
||||
}
|
||||
|
||||
void LabelSlider::mouseMoveEvent(QMouseEvent* event) {
|
||||
if (drag_start) {
|
||||
if (drag_start) {
|
||||
drag_proc = true;
|
||||
double diff = (cursor().pos().x()-drag_start_x) + (drag_start_y-cursor().pos().y());
|
||||
if (event->modifiers() & Qt::ControlModifier) diff *= 0.01;
|
||||
if (display_type == LABELSLIDER_PERCENT) diff *= 0.01;
|
||||
set_value(internal_value + diff, true);
|
||||
cursor().setPos(drag_start_x, drag_start_y);
|
||||
}
|
||||
double diff = (cursor().pos().x()-drag_start_x) + (drag_start_y-cursor().pos().y());
|
||||
if (event->modifiers() & Qt::ControlModifier) diff *= 0.01;
|
||||
if (display_type == LABELSLIDER_PERCENT) diff *= 0.01;
|
||||
set_value(internal_value + diff, true);
|
||||
cursor().setPos(drag_start_x, drag_start_y);
|
||||
}
|
||||
}
|
||||
|
||||
void LabelSlider::mouseReleaseEvent(QMouseEvent*) {
|
||||
if (drag_start) {
|
||||
qApp->restoreOverrideCursor();
|
||||
drag_start = false;
|
||||
if (drag_proc) {
|
||||
if (drag_start) {
|
||||
qApp->restoreOverrideCursor();
|
||||
drag_start = false;
|
||||
if (drag_proc) {
|
||||
drag_proc = false;
|
||||
previous_value = drag_start_value;
|
||||
emit valueChanged();
|
||||
emit valueChanged();
|
||||
} else {
|
||||
double d = internal_value;
|
||||
if (display_type == LABELSLIDER_FRAMENUMBER) {
|
||||
QString s = QInputDialog::getText(
|
||||
this,
|
||||
tr("Set Value"),
|
||||
tr("New value:"),
|
||||
tr("Set Value"),
|
||||
tr("New value:"),
|
||||
QLineEdit::Normal,
|
||||
valueToString(internal_value)
|
||||
);
|
||||
if (s.isEmpty()) return;
|
||||
if (s.isEmpty()) return;
|
||||
d = timecode_to_frame(s, config.timecode_view, frame_rate); // string to frame number
|
||||
} else {
|
||||
bool ok;
|
||||
bool ok;
|
||||
d = QInputDialog::getDouble(
|
||||
this,
|
||||
tr("Set Value"),
|
||||
tr("New value:"),
|
||||
tr("Set Value"),
|
||||
tr("New value:"),
|
||||
(display_type == LABELSLIDER_PERCENT) ? internal_value * 100 : internal_value,
|
||||
(min_enabled) ? min_value : INT_MIN,
|
||||
(max_enabled) ? max_value : INT_MAX,
|
||||
decimal_places,
|
||||
&ok
|
||||
decimal_places,
|
||||
&ok
|
||||
);
|
||||
if (!ok) return;
|
||||
if (display_type == LABELSLIDER_PERCENT) d *= 0.01;
|
||||
if (!ok) return;
|
||||
if (display_type == LABELSLIDER_PERCENT) d *= 0.01;
|
||||
}
|
||||
if (d != internal_value) {
|
||||
set_previous_value();
|
||||
set_previous_value();
|
||||
set_value(d, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user