use QObject property system now that i know how to signal them
This commit is contained in:
@@ -28,9 +28,9 @@ PanNode::PanNode()
|
|||||||
AddInput(samples_input_);
|
AddInput(samples_input_);
|
||||||
|
|
||||||
panning_input_ = new NodeInput("panning_in", NodeParam::kFloat, 0.0);
|
panning_input_ = new NodeInput("panning_in", NodeParam::kFloat, 0.0);
|
||||||
panning_input_->set_property("min", -1.0);
|
panning_input_->setProperty("min", -1.0);
|
||||||
panning_input_->set_property("max", 1.0);
|
panning_input_->setProperty("max", 1.0);
|
||||||
panning_input_->set_property("view", "percent");
|
panning_input_->setProperty("view", QStringLiteral("percent"));
|
||||||
AddInput(panning_input_);
|
AddInput(panning_input_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,13 +24,13 @@ namespace olive {
|
|||||||
|
|
||||||
VolumeNode::VolumeNode()
|
VolumeNode::VolumeNode()
|
||||||
{
|
{
|
||||||
samples_input_ = new NodeInput("samples_in", NodeParam::kSamples);
|
samples_input_ = new NodeInput(QStringLiteral("samples_in"), NodeParam::kSamples);
|
||||||
samples_input_->set_is_keyframable(false);
|
samples_input_->set_is_keyframable(false);
|
||||||
AddInput(samples_input_);
|
AddInput(samples_input_);
|
||||||
|
|
||||||
volume_input_ = new NodeInput("volume_in", NodeParam::kFloat, 1.0);
|
volume_input_ = new NodeInput(QStringLiteral("volume_in"), NodeParam::kFloat, 1.0);
|
||||||
volume_input_->set_property("min", 0.0);
|
volume_input_->setProperty("min", 0.0);
|
||||||
volume_input_->set_property("view", "db");
|
volume_input_->setProperty("view", QStringLiteral("db"));
|
||||||
AddInput(volume_input_);
|
AddInput(volume_input_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ Block::Block() :
|
|||||||
|
|
||||||
speed_input_ = new NodeInput("speed_in", NodeParam::kFloat);
|
speed_input_ = new NodeInput("speed_in", NodeParam::kFloat);
|
||||||
speed_input_->set_standard_value(1.0);
|
speed_input_->set_standard_value(1.0);
|
||||||
speed_input_->set_property(QStringLiteral("view"), QStringLiteral("percent"));
|
speed_input_->setProperty("view", QStringLiteral("percent"));
|
||||||
AddInput(speed_input_);
|
AddInput(speed_input_);
|
||||||
|
|
||||||
// A block's length must be greater than 0
|
// A block's length must be greater than 0
|
||||||
|
|||||||
@@ -30,31 +30,31 @@ CropDistortNode::CropDistortNode()
|
|||||||
AddInput(texture_input_);
|
AddInput(texture_input_);
|
||||||
|
|
||||||
left_input_ = new NodeInput(QStringLiteral("left_in"), NodeParam::kFloat, 0.0);
|
left_input_ = new NodeInput(QStringLiteral("left_in"), NodeParam::kFloat, 0.0);
|
||||||
left_input_->set_property(QStringLiteral("min"), 0.0);
|
left_input_->setProperty("min", 0.0);
|
||||||
left_input_->set_property(QStringLiteral("max"), 1.0);
|
left_input_->setProperty("max", 1.0);
|
||||||
left_input_->set_property(QStringLiteral("view"), QStringLiteral("percent"));
|
left_input_->setProperty("view", QStringLiteral("percent"));
|
||||||
AddInput(left_input_);
|
AddInput(left_input_);
|
||||||
|
|
||||||
top_input_ = new NodeInput(QStringLiteral("top_in"), NodeParam::kFloat, 0.0);
|
top_input_ = new NodeInput(QStringLiteral("top_in"), NodeParam::kFloat, 0.0);
|
||||||
top_input_->set_property(QStringLiteral("min"), 0.0);
|
top_input_->setProperty("min", 0.0);
|
||||||
top_input_->set_property(QStringLiteral("max"), 1.0);
|
top_input_->setProperty("max", 1.0);
|
||||||
top_input_->set_property(QStringLiteral("view"), QStringLiteral("percent"));
|
top_input_->setProperty("view", QStringLiteral("percent"));
|
||||||
AddInput(top_input_);
|
AddInput(top_input_);
|
||||||
|
|
||||||
right_input_ = new NodeInput(QStringLiteral("right_in"), NodeParam::kFloat, 0.0);
|
right_input_ = new NodeInput(QStringLiteral("right_in"), NodeParam::kFloat, 0.0);
|
||||||
right_input_->set_property(QStringLiteral("min"), 0.0);
|
right_input_->setProperty("min", 0.0);
|
||||||
right_input_->set_property(QStringLiteral("max"), 1.0);
|
right_input_->setProperty("max", 1.0);
|
||||||
right_input_->set_property(QStringLiteral("view"), QStringLiteral("percent"));
|
right_input_->setProperty("view", QStringLiteral("percent"));
|
||||||
AddInput(right_input_);
|
AddInput(right_input_);
|
||||||
|
|
||||||
bottom_input_ = new NodeInput(QStringLiteral("bottom_in"), NodeParam::kFloat, 0.0);
|
bottom_input_ = new NodeInput(QStringLiteral("bottom_in"), NodeParam::kFloat, 0.0);
|
||||||
bottom_input_->set_property(QStringLiteral("min"), 0.0);
|
bottom_input_->setProperty("min", 0.0);
|
||||||
bottom_input_->set_property(QStringLiteral("max"), 1.0);
|
bottom_input_->setProperty("max", 1.0);
|
||||||
bottom_input_->set_property(QStringLiteral("view"), QStringLiteral("percent"));
|
bottom_input_->setProperty("view", QStringLiteral("percent"));
|
||||||
AddInput(bottom_input_);
|
AddInput(bottom_input_);
|
||||||
|
|
||||||
feather_input_ = new NodeInput(QStringLiteral("feather_in"), NodeParam::kFloat, 0.0);
|
feather_input_ = new NodeInput(QStringLiteral("feather_in"), NodeParam::kFloat, 0.0);
|
||||||
feather_input_->set_property(QStringLiteral("min"), 0.0);
|
feather_input_->setProperty("min", 0.0);
|
||||||
AddInput(feather_input_);
|
AddInput(feather_input_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -437,8 +437,8 @@ void TransformDistortNode::DrawGizmos(NodeValueDatabase &db, QPainter *p)
|
|||||||
|
|
||||||
// Use offsets to make the appearance of values that start in the top left, even though we
|
// Use offsets to make the appearance of values that start in the top left, even though we
|
||||||
// really anchor around the center
|
// really anchor around the center
|
||||||
position_input()->set_property(QStringLiteral("offset"), sequence_res * 0.5);
|
position_input()->setProperty("offset", sequence_res * 0.5);
|
||||||
anchor_input()->set_property(QStringLiteral("offset"), tex_sz * 0.5);
|
anchor_input()->setProperty("offset", tex_sz * 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ BlurFilterNode::BlurFilterNode()
|
|||||||
AddInput(method_input_);
|
AddInput(method_input_);
|
||||||
|
|
||||||
radius_input_ = new NodeInput("radius_in", NodeParam::kFloat, 10.0f);
|
radius_input_ = new NodeInput("radius_in", NodeParam::kFloat, 10.0f);
|
||||||
radius_input_->set_property(QStringLiteral("min"), 0.0f);
|
radius_input_->setProperty("min", 0.0f);
|
||||||
AddInput(radius_input_);
|
AddInput(radius_input_);
|
||||||
|
|
||||||
horiz_input_ = new NodeInput("horiz_in", NodeParam::kBoolean, true);
|
horiz_input_ = new NodeInput("horiz_in", NodeParam::kBoolean, true);
|
||||||
|
|||||||
@@ -27,12 +27,12 @@ MosaicFilterNode::MosaicFilterNode()
|
|||||||
tex_input_ = new NodeInput(QStringLiteral("tex_in"), NodeParam::kTexture);
|
tex_input_ = new NodeInput(QStringLiteral("tex_in"), NodeParam::kTexture);
|
||||||
AddInput(tex_input_);
|
AddInput(tex_input_);
|
||||||
|
|
||||||
horiz_input_ = new NodeInput(QStringLiteral("horiz_in"), NodeParam::kFloat);
|
horiz_input_ = new NodeInput(QStringLiteral("horiz_in"), NodeParam::kFloat, 32.0);
|
||||||
horiz_input_->set_property(QStringLiteral("min"), 1.0);
|
horiz_input_->setProperty("min", 1.0);
|
||||||
AddInput(horiz_input_);
|
AddInput(horiz_input_);
|
||||||
|
|
||||||
vert_input_ = new NodeInput(QStringLiteral("vert_in"), NodeParam::kFloat);
|
vert_input_ = new NodeInput(QStringLiteral("vert_in"), NodeParam::kFloat, 18.0);
|
||||||
vert_input_->set_property(QStringLiteral("min"), 1.0);
|
vert_input_->setProperty("min", 1.0);
|
||||||
AddInput(vert_input_);
|
AddInput(vert_input_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -35,13 +35,13 @@ StrokeFilterNode::StrokeFilterNode()
|
|||||||
AddInput(color_input_);
|
AddInput(color_input_);
|
||||||
|
|
||||||
radius_input_ = new NodeInput("radius_in", NodeParam::kFloat, 10.0f);
|
radius_input_ = new NodeInput("radius_in", NodeParam::kFloat, 10.0f);
|
||||||
radius_input_->set_property("min", 0.0f);
|
radius_input_->setProperty("min", 0.0f);
|
||||||
AddInput(radius_input_);
|
AddInput(radius_input_);
|
||||||
|
|
||||||
opacity_input_ = new NodeInput("opacity_in", NodeParam::kFloat, 1.0f);
|
opacity_input_ = new NodeInput("opacity_in", NodeParam::kFloat, 1.0f);
|
||||||
opacity_input_->set_property("view", "percent");
|
opacity_input_->setProperty("view", QStringLiteral("percent"));
|
||||||
opacity_input_->set_property("min", 0.0f);
|
opacity_input_->setProperty("min", 0.0f);
|
||||||
opacity_input_->set_property("max", 1.0f);
|
opacity_input_->setProperty("max", 1.0f);
|
||||||
AddInput(opacity_input_);
|
AddInput(opacity_input_);
|
||||||
|
|
||||||
inner_input_ = new NodeInput("inner_in", NodeParam::kBoolean, false);
|
inner_input_ = new NodeInput("inner_in", NodeParam::kBoolean, false);
|
||||||
|
|||||||
@@ -34,9 +34,9 @@ MatrixGenerator::MatrixGenerator()
|
|||||||
AddInput(rotation_input_);
|
AddInput(rotation_input_);
|
||||||
|
|
||||||
scale_input_ = new NodeInput("scale_in", NodeParam::kVec2, QVector2D(1.0f, 1.0f));
|
scale_input_ = new NodeInput("scale_in", NodeParam::kVec2, QVector2D(1.0f, 1.0f));
|
||||||
scale_input_->set_property("min", QVector2D(0, 0));
|
scale_input_->setProperty("min", QVector2D(0, 0));
|
||||||
scale_input_->set_property("view", "percent");
|
scale_input_->setProperty("view", QStringLiteral("percent"));
|
||||||
scale_input_->set_property("disabley", true);
|
scale_input_->setProperty("disabley", true);
|
||||||
AddInput(scale_input_);
|
AddInput(scale_input_);
|
||||||
|
|
||||||
uniform_scale_input_ = new NodeInput("uniform_scale_in", NodeParam::kBoolean, true);
|
uniform_scale_input_ = new NodeInput("uniform_scale_in", NodeParam::kBoolean, true);
|
||||||
@@ -183,7 +183,7 @@ QMatrix4x4 MatrixGenerator::GenerateMatrix(const QVector2D& pos,
|
|||||||
|
|
||||||
void MatrixGenerator::UniformScaleChanged()
|
void MatrixGenerator::UniformScaleChanged()
|
||||||
{
|
{
|
||||||
scale_input_->set_property("disabley", uniform_scale_input_->get_standard_value().toBool());
|
scale_input_->setProperty("disabley", uniform_scale_input_->get_standard_value().toBool());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-31
@@ -192,13 +192,13 @@ void NodeInput::Load(QXmlStreamReader *reader, XMLNodeData &xml_node_data, const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (reader->name() == QStringLiteral("csinput")) {
|
} else if (reader->name() == QStringLiteral("csinput")) {
|
||||||
set_property(QStringLiteral("col_input"), reader->readElementText());
|
setProperty("col_input", reader->readElementText());
|
||||||
} else if (reader->name() == QStringLiteral("csdisplay")) {
|
} else if (reader->name() == QStringLiteral("csdisplay")) {
|
||||||
set_property(QStringLiteral("col_display"), reader->readElementText());
|
setProperty("col_display", reader->readElementText());
|
||||||
} else if (reader->name() == QStringLiteral("csview")) {
|
} else if (reader->name() == QStringLiteral("csview")) {
|
||||||
set_property(QStringLiteral("col_view"), reader->readElementText());
|
setProperty("col_view", reader->readElementText());
|
||||||
} else if (reader->name() == QStringLiteral("cslook")) {
|
} else if (reader->name() == QStringLiteral("cslook")) {
|
||||||
set_property(QStringLiteral("col_look"), reader->readElementText());
|
setProperty("col_look", reader->readElementText());
|
||||||
} else if (reader->name() == QStringLiteral("custom")) {
|
} else if (reader->name() == QStringLiteral("custom")) {
|
||||||
LoadInternal(reader, xml_node_data, cancelled);
|
LoadInternal(reader, xml_node_data, cancelled);
|
||||||
} else {
|
} else {
|
||||||
@@ -250,10 +250,10 @@ void NodeInput::Save(QXmlStreamWriter *writer) const
|
|||||||
|
|
||||||
if (data_type_ == NodeParam::kColor) {
|
if (data_type_ == NodeParam::kColor) {
|
||||||
// Save color management information
|
// Save color management information
|
||||||
writer->writeTextElement(QStringLiteral("csinput"), get_property(QStringLiteral("col_input")).toString());
|
writer->writeTextElement(QStringLiteral("csinput"), property("col_input").toString());
|
||||||
writer->writeTextElement(QStringLiteral("csdisplay"), get_property(QStringLiteral("col_display")).toString());
|
writer->writeTextElement(QStringLiteral("csdisplay"), property("col_display").toString());
|
||||||
writer->writeTextElement(QStringLiteral("csview"), get_property(QStringLiteral("col_view")).toString());
|
writer->writeTextElement(QStringLiteral("csview"), property("col_view").toString());
|
||||||
writer->writeTextElement(QStringLiteral("cslook"), get_property(QStringLiteral("col_look")).toString());
|
writer->writeTextElement(QStringLiteral("cslook"), property("col_look").toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveConnections(writer);
|
SaveConnections(writer);
|
||||||
@@ -289,6 +289,17 @@ void NodeInput::SaveInternal(QXmlStreamWriter*) const
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NodeInput::event(QEvent *e)
|
||||||
|
{
|
||||||
|
if (e->type() == QEvent::DynamicPropertyChange) {
|
||||||
|
QByteArray key = static_cast<QDynamicPropertyChangeEvent*>(e)->propertyName();
|
||||||
|
emit PropertyChanged(key, property(key));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return QObject::event(e);
|
||||||
|
}
|
||||||
|
|
||||||
void NodeInput::Init(DataType type)
|
void NodeInput::Init(DataType type)
|
||||||
{
|
{
|
||||||
keyframable_ = true;
|
keyframable_ = true;
|
||||||
@@ -1106,27 +1117,6 @@ void NodeInput::CopyValues(NodeInput *source, NodeInput *dest, bool include_conn
|
|||||||
emit dest->ValueChanged(TimeRange(RATIONAL_MIN, RATIONAL_MAX));
|
emit dest->ValueChanged(TimeRange(RATIONAL_MIN, RATIONAL_MAX));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeInput::set_property(const QString &key, const QVariant &value)
|
|
||||||
{
|
|
||||||
properties_.insert(key, value);
|
|
||||||
emit PropertyChanged(key, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant NodeInput::get_property(const QString &key) const
|
|
||||||
{
|
|
||||||
return properties_.value(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool NodeInput::has_property(const QString &key) const
|
|
||||||
{
|
|
||||||
return properties_.contains(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
const QHash<QString, QVariant> &NodeInput::properties() const
|
|
||||||
{
|
|
||||||
return properties_;
|
|
||||||
}
|
|
||||||
|
|
||||||
QVector<QVariant> NodeInput::split_normal_value_into_track_values(const QVariant &value) const
|
QVector<QVariant> NodeInput::split_normal_value_into_track_values(const QVariant &value) const
|
||||||
{
|
{
|
||||||
QVector<QVariant> vals(get_number_of_keyframe_tracks());
|
QVector<QVariant> vals(get_number_of_keyframe_tracks());
|
||||||
@@ -1207,12 +1197,12 @@ QVariant NodeInput::combine_track_values_into_normal_value(const QVector<QVarian
|
|||||||
|
|
||||||
QStringList NodeInput::get_combobox_strings() const
|
QStringList NodeInput::get_combobox_strings() const
|
||||||
{
|
{
|
||||||
return get_property(QStringLiteral("combo_str")).toStringList();
|
return property("combo_str").toStringList();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NodeInput::set_combobox_strings(const QStringList &strings)
|
void NodeInput::set_combobox_strings(const QStringList &strings)
|
||||||
{
|
{
|
||||||
set_property(QStringLiteral("combo_str"), strings);
|
setProperty("combo_str", strings);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-38
@@ -237,39 +237,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
static void CopyValues(NodeInput* source, NodeInput* dest, bool include_connections = true, bool traverse_arrays = true);
|
static void CopyValues(NodeInput* source, NodeInput* dest, bool include_connections = true, bool traverse_arrays = true);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Set an arbitrary property on this input to influence a UI representation's behavior
|
|
||||||
*
|
|
||||||
* NodeInputs also utilize QObject's property key/value system for arbitrary properties that can influence the UI
|
|
||||||
* representation's behavior.
|
|
||||||
*
|
|
||||||
* Currently supported properties:
|
|
||||||
*
|
|
||||||
* - `min` - For any numeral type represented with a slider, prevents values going BELOW this number
|
|
||||||
* - `max` - For any numeral type represented with a slider, prevents values going ABOVE this number
|
|
||||||
* - `view` - For any numeral type represented with a slider, shows number either as `db`, `percent`, or `normal`
|
|
||||||
* - `disablex` - For kVec2, kVec3, kVec4 and kColor types, disables the first/X/R UI widget
|
|
||||||
* - `disabley` - For kVec2, kVec3, kVec4 and kColor types, disables the second/Y/G UI widget
|
|
||||||
* - `disablez` - For kVec3, kVec4 and kColor types, disables the third/Z/B UI widget
|
|
||||||
* - `disablew` - For kVec4 and kColor types, disables the fourth/W/A UI widget
|
|
||||||
*/
|
|
||||||
void set_property(const QString& key, const QVariant& value);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Retrieve a property (or an empty QVariant if it hasn't been set)
|
|
||||||
*/
|
|
||||||
QVariant get_property(const QString& key) const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Return whether a certain property has been set or not
|
|
||||||
*/
|
|
||||||
bool has_property(const QString& key) const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get properties hashmap (useful for iterating)
|
|
||||||
*/
|
|
||||||
const QHash<QString, QVariant>& properties() const;
|
|
||||||
|
|
||||||
QVector<QVariant> split_normal_value_into_track_values(const QVariant &value) const;
|
QVector<QVariant> split_normal_value_into_track_values(const QVariant &value) const;
|
||||||
|
|
||||||
QVariant combine_track_values_into_normal_value(const QVector<QVariant>& split) const;
|
QVariant combine_track_values_into_normal_value(const QVector<QVariant>& split) const;
|
||||||
@@ -310,6 +277,8 @@ protected:
|
|||||||
|
|
||||||
virtual void SaveInternal(QXmlStreamWriter* writer) const;
|
virtual void SaveInternal(QXmlStreamWriter* writer) const;
|
||||||
|
|
||||||
|
virtual bool event(QEvent* e) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void Init(NodeParam::DataType type);
|
void Init(NodeParam::DataType type);
|
||||||
|
|
||||||
@@ -398,11 +367,6 @@ private:
|
|||||||
*/
|
*/
|
||||||
bool keyframing_;
|
bool keyframing_;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Internal properties variable
|
|
||||||
*/
|
|
||||||
QHash<QString, QVariant> properties_;
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
/**
|
/**
|
||||||
* @brief Slot when a keyframe's time changes to keep the keyframes correctly sorted by time
|
* @brief Slot when a keyframe's time changes to keep the keyframes correctly sorted by time
|
||||||
|
|||||||
@@ -74,17 +74,17 @@ void NodeInputDragger::Drag(QVariant value)
|
|||||||
{
|
{
|
||||||
Q_ASSERT(input_);
|
Q_ASSERT(input_);
|
||||||
|
|
||||||
if (!input_->get_property(QStringLiteral("min")).isNull()) {
|
if (input_->property("min").isValid()) {
|
||||||
// Assumes the value is a double of some kind
|
// Assumes the value is a double of some kind
|
||||||
double min = input_->get_property(QStringLiteral("min")).toDouble();
|
double min = input_->property("min").toDouble();
|
||||||
double v = value.toDouble();
|
double v = value.toDouble();
|
||||||
if (v < min) {
|
if (v < min) {
|
||||||
value = min;
|
value = min;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!input_->get_property(QStringLiteral("max")).isNull()) {
|
if (input_->property("max").isValid()) {
|
||||||
double max = input_->get_property(QStringLiteral("max")).toDouble();
|
double max = input_->property("max").toDouble();
|
||||||
double v = value.toDouble();
|
double v = value.toDouble();
|
||||||
if (v > max) {
|
if (v > max) {
|
||||||
value = max;
|
value = max;
|
||||||
|
|||||||
@@ -30,13 +30,13 @@ MathNode::MathNode()
|
|||||||
AddInput(method_in_);
|
AddInput(method_in_);
|
||||||
|
|
||||||
param_a_in_ = new NodeInput(QStringLiteral("param_a_in"), NodeParam::kFloat, 0.0);
|
param_a_in_ = new NodeInput(QStringLiteral("param_a_in"), NodeParam::kFloat, 0.0);
|
||||||
param_a_in_->set_property(QStringLiteral("decimalplaces"), 8);
|
param_a_in_->setProperty("decimalplaces", 8);
|
||||||
param_a_in_->set_property(QStringLiteral("autotrim"), true);
|
param_a_in_->setProperty("autotrim", true);
|
||||||
AddInput(param_a_in_);
|
AddInput(param_a_in_);
|
||||||
|
|
||||||
param_b_in_ = new NodeInput(QStringLiteral("param_b_in"), NodeParam::kFloat, 0.0);
|
param_b_in_ = new NodeInput(QStringLiteral("param_b_in"), NodeParam::kFloat, 0.0);
|
||||||
param_b_in_->set_property(QStringLiteral("decimalplaces"), 8);
|
param_b_in_->setProperty("decimalplaces", 8);
|
||||||
param_b_in_->set_property(QStringLiteral("autotrim"), true);
|
param_b_in_->setProperty("autotrim", true);
|
||||||
AddInput(param_b_in_);
|
AddInput(param_b_in_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -180,10 +180,8 @@ void NodeParamViewWidgetBridge::CreateWidgets()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check all properties
|
// Check all properties
|
||||||
QHash<QString, QVariant>::const_iterator iterator;
|
foreach (const QByteArray& key, input_->dynamicPropertyNames()) {
|
||||||
|
PropertyChanged(key, input_->property(key));
|
||||||
for (iterator=input_->properties().begin();iterator!=input_->properties().end();iterator++) {
|
|
||||||
PropertyChanged(iterator.key(), iterator.value());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateWidgetValues();
|
UpdateWidgetValues();
|
||||||
@@ -281,7 +279,7 @@ void NodeParamViewWidgetBridge::WidgetCallback()
|
|||||||
// Widget is a IntegerSlider
|
// Widget is a IntegerSlider
|
||||||
IntegerSlider* slider = static_cast<IntegerSlider*>(sender());
|
IntegerSlider* slider = static_cast<IntegerSlider*>(sender());
|
||||||
|
|
||||||
int64_t offset = input_->get_property(QStringLiteral("offset")).toLongLong();
|
int64_t offset = input_->property("offset").toLongLong();
|
||||||
|
|
||||||
ProcessSlider(slider, QVariant::fromValue(slider->GetValue() - offset));
|
ProcessSlider(slider, QVariant::fromValue(slider->GetValue() - offset));
|
||||||
break;
|
break;
|
||||||
@@ -291,7 +289,7 @@ void NodeParamViewWidgetBridge::WidgetCallback()
|
|||||||
// Widget is a FloatSlider
|
// Widget is a FloatSlider
|
||||||
FloatSlider* slider = static_cast<FloatSlider*>(sender());
|
FloatSlider* slider = static_cast<FloatSlider*>(sender());
|
||||||
|
|
||||||
double offset = input_->get_property(QStringLiteral("offset")).toDouble();
|
double offset = input_->property("offset").toDouble();
|
||||||
|
|
||||||
ProcessSlider(slider, slider->GetValue() - offset);
|
ProcessSlider(slider, slider->GetValue() - offset);
|
||||||
break;
|
break;
|
||||||
@@ -301,7 +299,7 @@ void NodeParamViewWidgetBridge::WidgetCallback()
|
|||||||
// Widget is a FloatSlider
|
// Widget is a FloatSlider
|
||||||
FloatSlider* slider = static_cast<FloatSlider*>(sender());
|
FloatSlider* slider = static_cast<FloatSlider*>(sender());
|
||||||
|
|
||||||
QVector2D offset = input_->get_property(QStringLiteral("offset")).value<QVector2D>();
|
QVector2D offset = input_->property("offset").value<QVector2D>();
|
||||||
|
|
||||||
ProcessSlider(slider, slider->GetValue() - offset[widgets_.indexOf(slider)]);
|
ProcessSlider(slider, slider->GetValue() - offset[widgets_.indexOf(slider)]);
|
||||||
break;
|
break;
|
||||||
@@ -311,7 +309,7 @@ void NodeParamViewWidgetBridge::WidgetCallback()
|
|||||||
// Widget is a FloatSlider
|
// Widget is a FloatSlider
|
||||||
FloatSlider* slider = static_cast<FloatSlider*>(sender());
|
FloatSlider* slider = static_cast<FloatSlider*>(sender());
|
||||||
|
|
||||||
QVector3D offset = input_->get_property(QStringLiteral("offset")).value<QVector3D>();
|
QVector3D offset = input_->property("offset").value<QVector3D>();
|
||||||
|
|
||||||
ProcessSlider(slider, slider->GetValue() - offset[widgets_.indexOf(slider)]);
|
ProcessSlider(slider, slider->GetValue() - offset[widgets_.indexOf(slider)]);
|
||||||
break;
|
break;
|
||||||
@@ -321,7 +319,7 @@ void NodeParamViewWidgetBridge::WidgetCallback()
|
|||||||
// Widget is a FloatSlider
|
// Widget is a FloatSlider
|
||||||
FloatSlider* slider = static_cast<FloatSlider*>(sender());
|
FloatSlider* slider = static_cast<FloatSlider*>(sender());
|
||||||
|
|
||||||
QVector4D offset = input_->get_property(QStringLiteral("offset")).value<QVector4D>();
|
QVector4D offset = input_->property("offset").value<QVector4D>();
|
||||||
|
|
||||||
ProcessSlider(slider, slider->GetValue() - offset[widgets_.indexOf(slider)]);
|
ProcessSlider(slider, slider->GetValue() - offset[widgets_.indexOf(slider)]);
|
||||||
break;
|
break;
|
||||||
@@ -342,10 +340,10 @@ void NodeParamViewWidgetBridge::WidgetCallback()
|
|||||||
SetInputValueInternal(c.alpha(), 3, command);
|
SetInputValueInternal(c.alpha(), 3, command);
|
||||||
|
|
||||||
input_->blockSignals(true);
|
input_->blockSignals(true);
|
||||||
input_->set_property(QStringLiteral("col_input"), c.color_input());
|
input_->setProperty("col_input", c.color_input());
|
||||||
input_->set_property(QStringLiteral("col_display"), c.color_output().display());
|
input_->setProperty("col_display", c.color_output().display());
|
||||||
input_->set_property(QStringLiteral("col_view"), c.color_output().view());
|
input_->setProperty("col_view", c.color_output().view());
|
||||||
input_->set_property(QStringLiteral("col_look"), c.color_output().look());
|
input_->setProperty("col_look", c.color_output().look());
|
||||||
input_->blockSignals(false);
|
input_->blockSignals(false);
|
||||||
|
|
||||||
Core::instance()->undo_stack()->pushIfHasChildren(command);
|
Core::instance()->undo_stack()->pushIfHasChildren(command);
|
||||||
@@ -433,14 +431,14 @@ void NodeParamViewWidgetBridge::UpdateWidgetValues()
|
|||||||
break;
|
break;
|
||||||
case NodeParam::kInt:
|
case NodeParam::kInt:
|
||||||
{
|
{
|
||||||
int64_t offset = input_->get_property(QStringLiteral("offset")).toLongLong();
|
int64_t offset = input_->property("offset").toLongLong();
|
||||||
|
|
||||||
static_cast<IntegerSlider*>(widgets_.first())->SetValue(input_->get_value_at_time(node_time).toLongLong() + offset);
|
static_cast<IntegerSlider*>(widgets_.first())->SetValue(input_->get_value_at_time(node_time).toLongLong() + offset);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case NodeParam::kFloat:
|
case NodeParam::kFloat:
|
||||||
{
|
{
|
||||||
double offset = input_->get_property(QStringLiteral("offset")).toDouble();
|
double offset = input_->property("offset").toDouble();
|
||||||
|
|
||||||
static_cast<FloatSlider*>(widgets_.first())->SetValue(input_->get_value_at_time(node_time).toDouble() + offset);
|
static_cast<FloatSlider*>(widgets_.first())->SetValue(input_->get_value_at_time(node_time).toDouble() + offset);
|
||||||
break;
|
break;
|
||||||
@@ -448,7 +446,7 @@ void NodeParamViewWidgetBridge::UpdateWidgetValues()
|
|||||||
case NodeParam::kVec2:
|
case NodeParam::kVec2:
|
||||||
{
|
{
|
||||||
QVector2D vec2 = input_->get_value_at_time(node_time).value<QVector2D>();
|
QVector2D vec2 = input_->get_value_at_time(node_time).value<QVector2D>();
|
||||||
QVector2D offset = input_->get_property(QStringLiteral("offset")).value<QVector2D>();
|
QVector2D offset = input_->property("offset").value<QVector2D>();
|
||||||
|
|
||||||
static_cast<FloatSlider*>(widgets_.at(0))->SetValue(static_cast<double>(vec2.x() + offset.x()));
|
static_cast<FloatSlider*>(widgets_.at(0))->SetValue(static_cast<double>(vec2.x() + offset.x()));
|
||||||
static_cast<FloatSlider*>(widgets_.at(1))->SetValue(static_cast<double>(vec2.y() + offset.y()));
|
static_cast<FloatSlider*>(widgets_.at(1))->SetValue(static_cast<double>(vec2.y() + offset.y()));
|
||||||
@@ -457,7 +455,7 @@ void NodeParamViewWidgetBridge::UpdateWidgetValues()
|
|||||||
case NodeParam::kVec3:
|
case NodeParam::kVec3:
|
||||||
{
|
{
|
||||||
QVector3D vec3 = input_->get_value_at_time(node_time).value<QVector3D>();
|
QVector3D vec3 = input_->get_value_at_time(node_time).value<QVector3D>();
|
||||||
QVector3D offset = input_->get_property(QStringLiteral("offset")).value<QVector3D>();
|
QVector3D offset = input_->property("offset").value<QVector3D>();
|
||||||
|
|
||||||
static_cast<FloatSlider*>(widgets_.at(0))->SetValue(static_cast<double>(vec3.x() + offset.x()));
|
static_cast<FloatSlider*>(widgets_.at(0))->SetValue(static_cast<double>(vec3.x() + offset.x()));
|
||||||
static_cast<FloatSlider*>(widgets_.at(1))->SetValue(static_cast<double>(vec3.y() + offset.y()));
|
static_cast<FloatSlider*>(widgets_.at(1))->SetValue(static_cast<double>(vec3.y() + offset.y()));
|
||||||
@@ -467,7 +465,7 @@ void NodeParamViewWidgetBridge::UpdateWidgetValues()
|
|||||||
case NodeParam::kVec4:
|
case NodeParam::kVec4:
|
||||||
{
|
{
|
||||||
QVector4D vec4 = input_->get_value_at_time(node_time).value<QVector4D>();
|
QVector4D vec4 = input_->get_value_at_time(node_time).value<QVector4D>();
|
||||||
QVector4D offset = input_->get_property(QStringLiteral("offset")).value<QVector4D>();
|
QVector4D offset = input_->property("offset").value<QVector4D>();
|
||||||
|
|
||||||
static_cast<FloatSlider*>(widgets_.at(0))->SetValue(static_cast<double>(vec4.x() + offset.x()));
|
static_cast<FloatSlider*>(widgets_.at(0))->SetValue(static_cast<double>(vec4.x() + offset.x()));
|
||||||
static_cast<FloatSlider*>(widgets_.at(1))->SetValue(static_cast<double>(vec4.y() + offset.y()));
|
static_cast<FloatSlider*>(widgets_.at(1))->SetValue(static_cast<double>(vec4.y() + offset.y()));
|
||||||
@@ -482,11 +480,11 @@ void NodeParamViewWidgetBridge::UpdateWidgetValues()
|
|||||||
{
|
{
|
||||||
ManagedColor mc = input_->get_value_at_time(node_time).value<Color>();
|
ManagedColor mc = input_->get_value_at_time(node_time).value<Color>();
|
||||||
|
|
||||||
mc.set_color_input(input_->get_property(QStringLiteral("col_input")).toString());
|
mc.set_color_input(input_->property("col_input").toString());
|
||||||
|
|
||||||
QString d = input_->get_property(QStringLiteral("col_display")).toString();
|
QString d = input_->property("col_display").toString();
|
||||||
QString v = input_->get_property(QStringLiteral("col_view")).toString();
|
QString v = input_->property("col_view").toString();
|
||||||
QString l = input_->get_property(QStringLiteral("col_look")).toString();
|
QString l = input_->property("col_look").toString();
|
||||||
|
|
||||||
mc.set_color_output(ColorTransform(d, v, l));
|
mc.set_color_output(ColorTransform(d, v, l));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user