The macro defined namespaces confused the hell out of lupdate and more or less broke translations permanently. Looks like the only way we can do it is to have a hardcoded namespace, which goes against my instinct, but honestly how likely is it that we'll change the namespace anyway (I guess forks might want to do it, but that's their problem ;) )
112 lines
2.8 KiB
C++
112 lines
2.8 KiB
C++
#include "nodetreeview.h"
|
|
|
|
namespace olive {
|
|
|
|
NodeTreeView::NodeTreeView(QWidget *parent) :
|
|
QTreeWidget(parent),
|
|
only_show_keyframable_(false)
|
|
{
|
|
connect(this, &NodeTreeView::itemChanged, this, &NodeTreeView::ItemCheckStateChanged);
|
|
|
|
Retranslate();
|
|
}
|
|
|
|
bool NodeTreeView::IsNodeEnabled(Node *n) const
|
|
{
|
|
return !disabled_nodes_.contains(n);
|
|
}
|
|
|
|
bool NodeTreeView::IsInputEnabled(NodeInput *i) const
|
|
{
|
|
return !disabled_inputs_.contains(i);
|
|
}
|
|
|
|
void NodeTreeView::SetNodes(const QVector<Node *> &nodes)
|
|
{
|
|
nodes_ = nodes;
|
|
|
|
this->clear();
|
|
|
|
foreach (Node* n, nodes_) {
|
|
QTreeWidgetItem* node_item = new QTreeWidgetItem();
|
|
node_item->setText(0, n->Name());
|
|
node_item->setCheckState(0, disabled_nodes_.contains(n) ? Qt::Unchecked : Qt::Checked);
|
|
node_item->setData(0, kItemType, kItemTypeNode);
|
|
node_item->setData(0, kItemPointer, reinterpret_cast<quintptr>(n));
|
|
|
|
QVector<NodeInput*> inputs = n->GetInputsIncludingArrays();
|
|
foreach (NodeInput* i, inputs) {
|
|
if (only_show_keyframable_ && !i->is_keyframable()) {
|
|
continue;
|
|
}
|
|
|
|
QTreeWidgetItem* input_item = new QTreeWidgetItem(node_item);
|
|
input_item->setText(0, i->name());
|
|
input_item->setCheckState(0, disabled_inputs_.contains(i) ? Qt::Unchecked : Qt::Checked);
|
|
input_item->setData(0, kItemType, kItemTypeInput);
|
|
input_item->setData(0, kItemPointer, reinterpret_cast<quintptr>(i));
|
|
}
|
|
|
|
// Add at the end to prevent unnecessary signalling while we're setting these objects up
|
|
if (node_item->childCount() > 0) {
|
|
this->addTopLevelItem(node_item);
|
|
} else {
|
|
delete node_item;
|
|
}
|
|
}
|
|
}
|
|
|
|
void NodeTreeView::changeEvent(QEvent *e)
|
|
{
|
|
QTreeWidget::changeEvent(e);
|
|
|
|
if (e->type() == QEvent::LanguageChange) {
|
|
Retranslate();
|
|
}
|
|
}
|
|
|
|
void NodeTreeView::Retranslate()
|
|
{
|
|
setHeaderLabel(tr("Nodes"));
|
|
}
|
|
|
|
void NodeTreeView::ItemCheckStateChanged(QTreeWidgetItem *item, int column)
|
|
{
|
|
Q_UNUSED(column)
|
|
|
|
switch (item->data(0, kItemType).toInt()) {
|
|
case kItemTypeNode:
|
|
{
|
|
Node* n = reinterpret_cast<Node*>(item->data(0, kItemPointer).value<quintptr>());
|
|
|
|
if (item->checkState(0) == Qt::Checked) {
|
|
if (disabled_nodes_.contains(n)) {
|
|
disabled_nodes_.removeOne(n);
|
|
emit NodeEnableChanged(n, true);
|
|
}
|
|
} else if (!disabled_nodes_.contains(n)) {
|
|
disabled_nodes_.append(n);
|
|
emit NodeEnableChanged(n, false);
|
|
}
|
|
break;
|
|
}
|
|
case kItemTypeInput:
|
|
{
|
|
NodeInput* i = reinterpret_cast<NodeInput*>(item->data(0, kItemPointer).value<quintptr>());
|
|
|
|
if (item->checkState(0) == Qt::Checked) {
|
|
if (disabled_inputs_.contains(i)) {
|
|
disabled_inputs_.removeOne(i);
|
|
emit InputEnableChanged(i, true);
|
|
}
|
|
} else if (!disabled_inputs_.contains(i)) {
|
|
disabled_inputs_.append(i);
|
|
emit InputEnableChanged(i, false);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|