forked from qt-creator/qt-creator
QmlDesigner: Inline timelineanimationform.ui
Change-Id: I0f41837cf51c09ca753aae0c68bdc9775f66beeb Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -969,7 +969,7 @@ extend_qtc_plugin(QmlDesigner
|
||||
timeline.qrc
|
||||
timelineabstracttool.cpp timelineabstracttool.h
|
||||
timelineactions.cpp timelineactions.h
|
||||
timelineanimationform.cpp timelineanimationform.h timelineanimationform.ui
|
||||
timelineanimationform.cpp timelineanimationform.h
|
||||
timelineconstants.h
|
||||
timelinecontext.cpp timelinecontext.h
|
||||
timelinecontrols.cpp timelinecontrols.h
|
||||
|
@@ -2,7 +2,6 @@
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "timelineanimationform.h"
|
||||
#include "ui_timelineanimationform.h"
|
||||
|
||||
#include <abstractview.h>
|
||||
#include <bindingproperty.h>
|
||||
@@ -18,42 +17,118 @@
|
||||
#include <coreplugin/messagebox.h>
|
||||
|
||||
#include <utils/algorithm.h>
|
||||
#include <utils/layoutbuilder.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QSpinBox>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QComboBox>
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
TimelineAnimationForm::TimelineAnimationForm(QWidget *parent)
|
||||
: QWidget(parent)
|
||||
, ui(new Ui::TimelineAnimationForm)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
constexpr int minimumLabelWidth = 160;
|
||||
constexpr int spinBoxWidth = 80;
|
||||
|
||||
connectSpinBox(ui->duration, "duration");
|
||||
connectSpinBox(ui->loops, "loops");
|
||||
auto mainL = new QLabel(tr("Animation Settings"));
|
||||
QFont f = mainL->font();
|
||||
f.setBold(true);
|
||||
mainL->setFont(f);
|
||||
|
||||
connectSpinBox(ui->startFrame, "from");
|
||||
connectSpinBox(ui->endFrame, "to");
|
||||
auto idL = new QLabel(tr("Animation ID:"));
|
||||
idL->setToolTip(tr("Name for the animation."));
|
||||
idL->setMinimumWidth(minimumLabelWidth);
|
||||
m_idLineEdit = new QLineEdit;
|
||||
|
||||
connect(ui->loops, &QSpinBox::valueChanged, this, [this] {
|
||||
ui->continuous->setChecked(ui->loops->value() == -1);
|
||||
auto runningL = new QLabel(tr("Running in base state"));
|
||||
runningL->setToolTip(
|
||||
tr("Runs the animation automatically when the base state is active."));
|
||||
m_running = new QCheckBox;
|
||||
m_running->setEnabled(false);
|
||||
|
||||
auto startFrameL = new QLabel(tr("Start frame:"));
|
||||
startFrameL->setToolTip(tr("First frame of the animation."));
|
||||
m_startFrame = new QSpinBox;
|
||||
m_startFrame->setFixedWidth(spinBoxWidth);
|
||||
m_startFrame->setRange(-100000, 100000);
|
||||
|
||||
auto endFrameL = new QLabel(tr("End frame:"));
|
||||
endFrameL->setToolTip(tr("Last frame of the animation."));
|
||||
m_endFrame = new QSpinBox;
|
||||
m_endFrame->setFixedWidth(spinBoxWidth);
|
||||
m_endFrame->setRange(-100000, 100000);
|
||||
|
||||
auto durationL = new QLabel(tr("Duration:"));
|
||||
durationL->setToolTip(tr("Length of the animation in milliseconds. If you set a shorter duration than the number of frames, frames are left out from the end of the animation."));
|
||||
m_duration = new QSpinBox;
|
||||
m_duration->setFixedWidth(spinBoxWidth);
|
||||
m_duration->setRange(0, 100000);
|
||||
|
||||
auto continuousL = new QLabel(tr("Continuous"));
|
||||
continuousL->setToolTip(tr("Sets the animation to loop indefinitely."));
|
||||
m_continuous = new QCheckBox;
|
||||
|
||||
auto loopsL = new QLabel(tr("Loops:"));
|
||||
loopsL->setToolTip(tr("Number of times the animation runs before it stops."));
|
||||
m_loops = new QSpinBox;
|
||||
m_loops->setFixedWidth(spinBoxWidth);
|
||||
m_loops->setRange(-1, 1000);
|
||||
|
||||
auto pingPongL = new QLabel(tr("Ping pong"));
|
||||
pingPongL->setToolTip(
|
||||
tr("Runs the animation backwards to the beginning when it reaches the end."));
|
||||
m_pingPong = new QCheckBox;
|
||||
|
||||
auto transitionToStateL = new QLabel(tr("Finished:"));
|
||||
transitionToStateL->setToolTip(tr("State to activate when the animation finishes."));
|
||||
m_transitionToState = new QComboBox;
|
||||
m_transitionToState->addItem(tr("none"));
|
||||
|
||||
auto str = new QWidget;
|
||||
QSizePolicy sp(QSizePolicy::MinimumExpanding, QSizePolicy::Ignored);
|
||||
sp.setHorizontalStretch(2);
|
||||
str->setSizePolicy(sp);
|
||||
|
||||
using namespace Layouting;
|
||||
Grid {
|
||||
Span(4, mainL), br,
|
||||
empty(), br,
|
||||
idL, Span(2, m_idLineEdit), Span(2, Row{ runningL, m_running }), br,
|
||||
empty(), startFrameL, m_startFrame, endFrameL, m_endFrame, durationL, m_duration, br,
|
||||
empty(), continuousL, m_continuous, loopsL, m_loops, pingPongL, m_pingPong, str, br,
|
||||
tr("Transition to state:"), transitionToStateL, m_transitionToState, br,
|
||||
}.attachTo(this);
|
||||
|
||||
connectSpinBox(m_duration, "duration");
|
||||
connectSpinBox(m_loops, "loops");
|
||||
|
||||
connectSpinBox(m_startFrame, "from");
|
||||
connectSpinBox(m_endFrame, "to");
|
||||
|
||||
connect(m_loops, &QSpinBox::valueChanged, this, [this] {
|
||||
m_continuous->setChecked(m_loops->value() == -1);
|
||||
});
|
||||
|
||||
connect(ui->continuous, &QCheckBox::toggled, this, [this](bool checked) {
|
||||
connect(m_continuous, &QCheckBox::toggled, this, [this](bool checked) {
|
||||
if (checked) {
|
||||
setProperty("loops", -1);
|
||||
ui->loops->setValue(-1);
|
||||
m_loops->setValue(-1);
|
||||
} else {
|
||||
setProperty("loops", 1);
|
||||
ui->loops->setValue(1);
|
||||
m_loops->setValue(1);
|
||||
}
|
||||
});
|
||||
|
||||
connect(ui->idLineEdit, &QLineEdit::editingFinished, this, [this] {
|
||||
connect(m_idLineEdit, &QLineEdit::editingFinished, this, [this] {
|
||||
QTC_ASSERT(m_timeline.isValid(), return );
|
||||
|
||||
static QString lastString;
|
||||
|
||||
const QString newId = ui->idLineEdit->text();
|
||||
const QString newId = m_idLineEdit->text();
|
||||
|
||||
if (lastString == newId)
|
||||
return;
|
||||
@@ -79,11 +154,11 @@ TimelineAnimationForm::TimelineAnimationForm(QWidget *parent)
|
||||
|
||||
if (error) {
|
||||
lastString.clear();
|
||||
ui->idLineEdit->setText(animation().id());
|
||||
m_idLineEdit->setText(animation().id());
|
||||
}
|
||||
});
|
||||
|
||||
connect(ui->running, &QCheckBox::clicked, this, [this](bool checked) {
|
||||
connect(m_running, &QCheckBox::clicked, this, [this](bool checked) {
|
||||
if (checked) {
|
||||
setProperty("running", true);
|
||||
} else {
|
||||
@@ -91,7 +166,7 @@ TimelineAnimationForm::TimelineAnimationForm(QWidget *parent)
|
||||
}
|
||||
});
|
||||
|
||||
connect(ui->pingPong, &QCheckBox::clicked, this, [this](bool checked) {
|
||||
connect(m_pingPong, &QCheckBox::clicked, this, [this](bool checked) {
|
||||
if (checked) {
|
||||
setProperty("pingPong", true);
|
||||
} else {
|
||||
@@ -99,7 +174,7 @@ TimelineAnimationForm::TimelineAnimationForm(QWidget *parent)
|
||||
}
|
||||
});
|
||||
|
||||
connect(ui->transitionToState, &QComboBox::activated, this, [this](int index) {
|
||||
connect(m_transitionToState, &QComboBox::activated, this, [this](int index) {
|
||||
if (!m_animation.isValid())
|
||||
return;
|
||||
if (!m_animation.view()->rootModelNode().hasId())
|
||||
@@ -116,16 +191,11 @@ TimelineAnimationForm::TimelineAnimationForm(QWidget *parent)
|
||||
} else {
|
||||
m_animation.signalHandlerProperty("onFinished")
|
||||
.setSource(rootNode.id() + ".state = \""
|
||||
+ ui->transitionToState->currentText() + "\"");
|
||||
+ m_transitionToState->currentText() + "\"");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
TimelineAnimationForm::~TimelineAnimationForm()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void TimelineAnimationForm::setup(const ModelNode &animation)
|
||||
{
|
||||
m_timeline = QmlTimeline(animation.parentProperty().parentModelNode());
|
||||
@@ -151,40 +221,40 @@ void TimelineAnimationForm::setupAnimation()
|
||||
if (m_animation.isValid()) {
|
||||
setEnabled(true);
|
||||
|
||||
ui->idLineEdit->setText(m_animation.id());
|
||||
m_idLineEdit->setText(m_animation.id());
|
||||
|
||||
if (m_animation.hasVariantProperty("duration"))
|
||||
ui->duration->setValue(m_animation.variantProperty("duration").value().toInt());
|
||||
m_duration->setValue(m_animation.variantProperty("duration").value().toInt());
|
||||
else
|
||||
ui->duration->setValue(0);
|
||||
m_duration->setValue(0);
|
||||
|
||||
ui->startFrame->setValue(m_animation.variantProperty("from").value().toInt());
|
||||
ui->endFrame->setValue(m_animation.variantProperty("to").value().toInt());
|
||||
m_startFrame->setValue(m_animation.variantProperty("from").value().toInt());
|
||||
m_endFrame->setValue(m_animation.variantProperty("to").value().toInt());
|
||||
|
||||
if (m_animation.hasVariantProperty("loops"))
|
||||
ui->loops->setValue(m_animation.variantProperty("loops").value().toInt());
|
||||
m_loops->setValue(m_animation.variantProperty("loops").value().toInt());
|
||||
else
|
||||
ui->loops->setValue(0);
|
||||
m_loops->setValue(0);
|
||||
|
||||
if (m_animation.hasVariantProperty("running"))
|
||||
ui->running->setChecked(m_animation.variantProperty("running").value().toBool());
|
||||
m_running->setChecked(m_animation.variantProperty("running").value().toBool());
|
||||
else
|
||||
ui->running->setChecked(false);
|
||||
m_running->setChecked(false);
|
||||
|
||||
if (m_animation.hasVariantProperty("pingPong"))
|
||||
ui->pingPong->setChecked(m_animation.variantProperty("pingPong").value().toBool());
|
||||
m_pingPong->setChecked(m_animation.variantProperty("pingPong").value().toBool());
|
||||
else
|
||||
ui->pingPong->setChecked(false);
|
||||
m_pingPong->setChecked(false);
|
||||
|
||||
ui->continuous->setChecked(ui->loops->value() == -1);
|
||||
m_continuous->setChecked(m_loops->value() == -1);
|
||||
}
|
||||
|
||||
populateStateComboBox();
|
||||
|
||||
ui->duration->setEnabled(m_animation.isValid());
|
||||
ui->running->setEnabled(m_animation.isValid());
|
||||
ui->continuous->setEnabled(m_animation.isValid());
|
||||
ui->loops->setEnabled(m_animation.isValid());
|
||||
m_duration->setEnabled(m_animation.isValid());
|
||||
m_running->setEnabled(m_animation.isValid());
|
||||
m_continuous->setEnabled(m_animation.isValid());
|
||||
m_loops->setEnabled(m_animation.isValid());
|
||||
}
|
||||
|
||||
void TimelineAnimationForm::setProperty(const PropertyName &propertyName, const QVariant &value)
|
||||
@@ -207,15 +277,15 @@ void TimelineAnimationForm::connectSpinBox(QSpinBox *spinBox, const PropertyName
|
||||
|
||||
void TimelineAnimationForm::populateStateComboBox()
|
||||
{
|
||||
ui->transitionToState->clear();
|
||||
ui->transitionToState->addItem(tr("none"));
|
||||
ui->transitionToState->addItem(tr("Base State"));
|
||||
m_transitionToState->clear();
|
||||
m_transitionToState->addItem(tr("none"));
|
||||
m_transitionToState->addItem(tr("Base State"));
|
||||
if (!m_animation.isValid())
|
||||
return;
|
||||
QmlObjectNode rootNode = QmlObjectNode(m_animation.view()->rootModelNode());
|
||||
if (rootNode.isValid() && rootNode.modelNode().hasId()) {
|
||||
for (const QmlModelState &state : QmlVisualNode(rootNode).states().allStates()) {
|
||||
ui->transitionToState
|
||||
m_transitionToState
|
||||
->addItem(state.modelNode().variantProperty("name").value().toString(),
|
||||
QVariant::fromValue<ModelNode>(state.modelNode()));
|
||||
}
|
||||
@@ -227,9 +297,9 @@ void TimelineAnimationForm::populateStateComboBox()
|
||||
name.chop(1);
|
||||
name.remove(0, 1);
|
||||
if (name.isEmpty())
|
||||
ui->transitionToState->setCurrentIndex(1);
|
||||
m_transitionToState->setCurrentIndex(1);
|
||||
else
|
||||
ui->transitionToState->setCurrentText(name);
|
||||
m_transitionToState->setCurrentText(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -7,21 +7,21 @@
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QSpinBox)
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QCheckBox;
|
||||
class QComboBox;
|
||||
class QLineEdit;
|
||||
class QSpinBox;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
namespace Ui {
|
||||
class TimelineAnimationForm;
|
||||
}
|
||||
|
||||
class TimelineAnimationForm : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit TimelineAnimationForm(QWidget *parent);
|
||||
~TimelineAnimationForm() override;
|
||||
void setup(const ModelNode &animation);
|
||||
ModelNode animation() const;
|
||||
|
||||
@@ -33,7 +33,15 @@ private:
|
||||
void connectSpinBox(QSpinBox *spinBox, const PropertyName &propertyName);
|
||||
void populateStateComboBox();
|
||||
|
||||
Ui::TimelineAnimationForm *ui;
|
||||
QLineEdit *m_idLineEdit;
|
||||
QCheckBox *m_running;
|
||||
QSpinBox *m_startFrame;
|
||||
QSpinBox *m_endFrame;
|
||||
QSpinBox *m_duration;
|
||||
QCheckBox *m_continuous;
|
||||
QSpinBox *m_loops;
|
||||
QCheckBox *m_pingPong;
|
||||
QComboBox *m_transitionToState;
|
||||
|
||||
QmlTimeline m_timeline;
|
||||
ModelNode m_animation;
|
||||
|
@@ -1,354 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>QmlDesigner::TimelineAnimationForm</class>
|
||||
<widget class="QWidget" name="QmlDesigner::TimelineAnimationForm">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>641</width>
|
||||
<height>176</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="4" column="3">
|
||||
<widget class="QLabel" name="label_16">
|
||||
<property name="toolTip">
|
||||
<string>Number of times the animation runs before it stops.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Loops:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="4" colspan="2">
|
||||
<widget class="QSpinBox" name="loops">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>80</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>80</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QLabel" name="label_15">
|
||||
<property name="toolTip">
|
||||
<string>Sets the animation to loop indefinitely.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Continuous</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2">
|
||||
<widget class="QCheckBox" name="continuous">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="2">
|
||||
<widget class="QComboBox" name="transitionToState">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>none</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>160</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Animation Settings</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="9">
|
||||
<spacer name="horizontalSpacer_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>213</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_11">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>140</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Name for the animation.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Animation ID:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="9">
|
||||
<spacer name="horizontalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>213</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="8">
|
||||
<widget class="QSpinBox" name="duration">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>80</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>80</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QLabel" name="label_23">
|
||||
<property name="toolTip">
|
||||
<string>State to activate when the animation finishes.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Finished:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="7">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="toolTip">
|
||||
<string>Runs the animation backwards to the beginning when it reaches the end.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Ping pong</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="8">
|
||||
<widget class="QCheckBox" name="pingPong">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="9">
|
||||
<spacer name="horizontalSpacer_8">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>213</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_20">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>140</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Transition to state:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="2">
|
||||
<widget class="QLineEdit" name="idLineEdit">
|
||||
<property name="text">
|
||||
<string>animation02</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="3" colspan="2">
|
||||
<widget class="QLabel" name="label_18">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="toolTip">
|
||||
<string>Runs the animation automatically when the base state is active.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Running in base state</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="2">
|
||||
<widget class="QSpinBox" name="startFrame">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>80</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>80</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-100000</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLabel" name="label_12">
|
||||
<property name="toolTip">
|
||||
<string>First frame of the animation.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Start frame:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="5">
|
||||
<widget class="QCheckBox" name="running">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="9">
|
||||
<spacer name="horizontalSpacer_6">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Expanding</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>213</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="7">
|
||||
<widget class="QLabel" name="label_14">
|
||||
<property name="toolTip">
|
||||
<string>Length of the animation in milliseconds. If you set a shorter duration than the number of frames, frames are left out from the end of the animation.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Duration:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="3">
|
||||
<widget class="QLabel" name="label_13">
|
||||
<property name="toolTip">
|
||||
<string>Last frame of the animation.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>End frame:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="4" colspan="3">
|
||||
<widget class="QSpinBox" name="endFrame">
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>80</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>80</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>-100000</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100000</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
Reference in New Issue
Block a user