From 999e841bc7733e13d80f60d6350bc1faace21793 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Wed, 29 Apr 2020 14:33:57 +1000 Subject: [PATCH] nodes: implemented short name Nodes can provide "short" names for use in the node graph, distinct from their full names shown everywhere else. --- app/node/block/transition/externaltransition.cpp | 5 +++++ app/node/block/transition/externaltransition.h | 1 + app/node/external.cpp | 5 +++++ app/node/external.h | 1 + app/node/generator/matrix/matrix.cpp | 5 +++++ app/node/generator/matrix/matrix.h | 1 + app/node/metareader.cpp | 12 ++++++++++++ app/node/metareader.h | 2 ++ app/node/node.cpp | 5 +++++ app/node/node.h | 7 +++++++ app/widget/nodeview/nodeviewitem.cpp | 2 +- 11 files changed, 45 insertions(+), 1 deletion(-) diff --git a/app/node/block/transition/externaltransition.cpp b/app/node/block/transition/externaltransition.cpp index 3de007d4d..74bbf817d 100644 --- a/app/node/block/transition/externaltransition.cpp +++ b/app/node/block/transition/externaltransition.cpp @@ -40,6 +40,11 @@ QString ExternalTransition::Name() const return meta_.Name(); } +QString ExternalTransition::ShortName() const +{ + return meta_.ShortName(); +} + QString ExternalTransition::id() const { return meta_.id(); diff --git a/app/node/block/transition/externaltransition.h b/app/node/block/transition/externaltransition.h index de16936f9..91cbd0ca9 100644 --- a/app/node/block/transition/externaltransition.h +++ b/app/node/block/transition/externaltransition.h @@ -35,6 +35,7 @@ public: virtual Node* copy() const override; virtual QString Name() const override; + virtual QString ShortName() const override; virtual QString id() const override; virtual QString Category() const override; virtual QString Description() const override; diff --git a/app/node/external.cpp b/app/node/external.cpp index 7bafc30e9..6d6a20ac9 100644 --- a/app/node/external.cpp +++ b/app/node/external.cpp @@ -42,6 +42,11 @@ QString ExternalNode::Name() const return meta_.Name(); } +QString ExternalNode::ShortName() const +{ + return meta_.ShortName(); +} + QString ExternalNode::id() const { return meta_.id(); diff --git a/app/node/external.h b/app/node/external.h index a20b11c15..b9a50a313 100644 --- a/app/node/external.h +++ b/app/node/external.h @@ -39,6 +39,7 @@ public: virtual Node* copy() const override; virtual QString Name() const override; + virtual QString ShortName() const override; virtual QString id() const override; virtual QString Category() const override; virtual QString Description() const override; diff --git a/app/node/generator/matrix/matrix.cpp b/app/node/generator/matrix/matrix.cpp index c967869ed..ac406d47f 100644 --- a/app/node/generator/matrix/matrix.cpp +++ b/app/node/generator/matrix/matrix.cpp @@ -59,6 +59,11 @@ QString MatrixGenerator::Name() const return tr("Orthographic Matrix"); } +QString MatrixGenerator::ShortName() const +{ + return tr("Ortho"); +} + QString MatrixGenerator::id() const { return QStringLiteral("org.olivevideoeditor.Olive.transform"); diff --git a/app/node/generator/matrix/matrix.h b/app/node/generator/matrix/matrix.h index 53c5c5356..7f723e4ab 100644 --- a/app/node/generator/matrix/matrix.h +++ b/app/node/generator/matrix/matrix.h @@ -34,6 +34,7 @@ public: virtual Node* copy() const override; virtual QString Name() const override; + virtual QString ShortName() const override; virtual QString id() const override; virtual QString Category() const override; virtual QString Description() const override; diff --git a/app/node/metareader.cpp b/app/node/metareader.cpp index b88b3d2e1..007d7ec7b 100644 --- a/app/node/metareader.cpp +++ b/app/node/metareader.cpp @@ -57,6 +57,15 @@ QString NodeMetaReader::Name() const return GetStringForCurrentLanguage(&names_); } +QString NodeMetaReader::ShortName() const +{ + if (short_names_.isEmpty()) { + return Name(); + } else { + return GetStringForCurrentLanguage(&short_names_); + } +} + const QString &NodeMetaReader::id() const { return id_; @@ -173,6 +182,9 @@ void NodeMetaReader::XMLReadEffect(QXmlStreamReader* reader) if (reader->name() == QStringLiteral("name")) { // Pick up name XMLReadLanguageString(reader, &names_); + } else if (reader->name() == QStringLiteral("shortnames")) { + // Pick up short name + XMLReadLanguageString(reader, &short_names_); } else if (reader->name() == QStringLiteral("category")) { // Pick up category XMLReadLanguageString(reader, &categories_); diff --git a/app/node/metareader.h b/app/node/metareader.h index dda052c83..13c965a87 100644 --- a/app/node/metareader.h +++ b/app/node/metareader.h @@ -35,6 +35,7 @@ public: NodeMetaReader(const QString& xml_meta_filename); QString Name() const; + QString ShortName() const; const QString& id() const; QString Category() const; QString Description() const; @@ -67,6 +68,7 @@ private: QString xml_filename_; LanguageMap names_; + LanguageMap short_names_; LanguageMap descriptions_; LanguageMap categories_; QMap param_names_; diff --git a/app/node/node.cpp b/app/node/node.cpp index cea3c1417..0aa807240 100644 --- a/app/node/node.cpp +++ b/app/node/node.cpp @@ -116,6 +116,11 @@ void Node::Save(QXmlStreamWriter *writer, const QString &custom_name) const writer->writeEndElement(); // node } +QString Node::ShortName() const +{ + return Name(); +} + QString Node::Category() const { // Return an empty category for any nodes that don't use one diff --git a/app/node/node.h b/app/node/node.h index 0aec6ecb1..6497082cb 100644 --- a/app/node/node.h +++ b/app/node/node.h @@ -91,6 +91,13 @@ public: */ virtual QString Name() const = 0; + /** + * @brief Returns a shortened name of this node if applicable + * + * Defaults to returning Name() but can be overridden. + */ + virtual QString ShortName() const; + /** * @brief Return the unique identifier of the node * diff --git a/app/widget/nodeview/nodeviewitem.cpp b/app/widget/nodeview/nodeviewitem.cpp index 3e848911a..f4569dcf0 100644 --- a/app/widget/nodeview/nodeviewitem.cpp +++ b/app/widget/nodeview/nodeviewitem.cpp @@ -263,7 +263,7 @@ void NodeViewItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opti painter->setPen(app_pal.color(QPalette::Text)); // Draw the text in a rect (the rect is sized around text already in the constructor) - painter->drawText(title_bar_rect_, Qt::AlignCenter, node_->Name()); + painter->drawText(title_bar_rect_, Qt::AlignCenter, node_->ShortName()); }