update
This commit is contained in:
parent
70b7466f70
commit
885065d38e
|
@ -30,3 +30,7 @@ ActionNodeConfiguration::ActionNodeConfiguration(QWidget* p)
|
|||
_output_model->setHorizontalHeaderLabels(QStringList()
|
||||
<< u8"变量名" << u8"变量类型" << u8"关联变量序列" << u8"关联转换器类型");
|
||||
}
|
||||
|
||||
void ActionNodeConfiguration::setTarget(NodePresent* ins)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -5,8 +5,9 @@
|
|||
#include <QTabWidget>
|
||||
#include <QTableView>
|
||||
#include <qstandarditemmodel.h>
|
||||
#include "sims_world.h"
|
||||
|
||||
class ActionNodeConfiguration : public QFrame
|
||||
class ActionNodeConfiguration : public QFrame, public NodeConfiguration
|
||||
{
|
||||
private:
|
||||
QComboBox *const _execute_select;
|
||||
|
@ -17,5 +18,7 @@ private:
|
|||
|
||||
public:
|
||||
ActionNodeConfiguration(QWidget *p = nullptr);
|
||||
|
||||
void setTarget(NodePresent* ins) override;
|
||||
};
|
||||
|
||||
|
|
|
@ -33,13 +33,14 @@ BehaviorMapConfigurationPanel::BehaviorMapConfigurationPanel(QWidget* p)
|
|||
});
|
||||
}
|
||||
|
||||
void BehaviorMapConfigurationPanel::setTarget(std::shared_ptr<LogicalNode> map_root, NodePresent* ins)
|
||||
#include <BehaviorEditor.h>
|
||||
void BehaviorMapConfigurationPanel::setTarget(NodePresent* ins)
|
||||
{
|
||||
this->_bind_graph = ins;
|
||||
this->_bind_node = std::dynamic_pointer_cast<BehaviorMapNode>(map_root);
|
||||
this->_bind_node = std::dynamic_pointer_cast<BehaviorMapNode>(ins->logicalBind());
|
||||
_variable_model->removeRows(0, _variable_model->rowCount());
|
||||
|
||||
_root_name->setText(map_root->typeName());
|
||||
_root_name->setText(_bind_node->typeName());
|
||||
for (auto key : _bind_node->inputVariableKeys()) {
|
||||
auto ins_prop = _bind_node->getVariable(key);
|
||||
QList<QStandardItem*> row;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <QStandardItemModel>
|
||||
#include <QDialog>
|
||||
#include <QComboBox>
|
||||
#include "sims_world.h"
|
||||
|
||||
class VariableAdd : public QDialog {
|
||||
private:
|
||||
|
@ -23,7 +24,7 @@ public:
|
|||
};
|
||||
|
||||
class NodePresent;
|
||||
class BehaviorMapConfigurationPanel : public QFrame
|
||||
class BehaviorMapConfigurationPanel : public QFrame, public NodeConfiguration
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
|
@ -37,6 +38,6 @@ private:
|
|||
public:
|
||||
BehaviorMapConfigurationPanel(QWidget *p = nullptr);
|
||||
|
||||
void setTarget(std::shared_ptr<LogicalNode> map_root, NodePresent *ins);
|
||||
void setTarget(NodePresent *ins) override;
|
||||
};
|
||||
|
||||
|
|
|
@ -411,6 +411,16 @@ QPointF BehaviorsPresent::nodeRelayout(QHash<std::shared_ptr<LogicalNode>, std::
|
|||
return origin_offset + QPointF(0, node_outline.height());
|
||||
}
|
||||
|
||||
#include <QMouseEvent>
|
||||
void BehaviorsPresent::mousePressEvent(QMouseEvent* e)
|
||||
{
|
||||
QWidget::mousePressEvent(e);
|
||||
|
||||
auto item_ptr = itemAt(e->pos());
|
||||
if (item_ptr && dynamic_cast<NodePresent*>(item_ptr))
|
||||
emit this->clickedUponAtItem(dynamic_cast<NodePresent*>(item_ptr));
|
||||
}
|
||||
|
||||
#include <QJsonDocument>
|
||||
void BehaviorEditor::open_behavior_map()
|
||||
{
|
||||
|
@ -455,6 +465,33 @@ void BehaviorEditor::new_behavior_map()
|
|||
#include <QGridLayout>
|
||||
#include <QComboBox>
|
||||
|
||||
void BehaviorEditor::configurationPanel(NodePresent* n)
|
||||
{
|
||||
switch (n->logicalBind()->nodeKind())
|
||||
{
|
||||
case NodeKind::MAPNODE:
|
||||
_stacked_panel->setCurrentIndex(4);
|
||||
break;
|
||||
case NodeKind::MODIFYNODE:
|
||||
_stacked_panel->setCurrentIndex(1);
|
||||
break;
|
||||
case NodeKind::ACTIONNODE:
|
||||
_stacked_panel->setCurrentIndex(2);
|
||||
break;
|
||||
case NodeKind::COMPARENODE:
|
||||
_stacked_panel->setCurrentIndex(3);
|
||||
break;
|
||||
|
||||
default:
|
||||
_stacked_panel->setCurrentIndex(0);
|
||||
break;
|
||||
}
|
||||
|
||||
auto current_panel = dynamic_cast<NodeConfiguration*>(_stacked_panel->currentWidget());
|
||||
if (current_panel)
|
||||
current_panel->setTarget(n);
|
||||
}
|
||||
|
||||
BehaviorEditor::BehaviorEditor(QWidget* parent /*= nullptr*/)
|
||||
: QMainWindow(parent),
|
||||
_type_view(new NodeTypesView(this)),
|
||||
|
@ -500,17 +537,19 @@ BehaviorEditor::BehaviorEditor(QWidget* parent /*= nullptr*/)
|
|||
|
||||
_type_view->setModel(_type_model);
|
||||
nodeTypesViewInit(_type_model);
|
||||
_default_configuration->setFrameStyle(QFrame::WinPanel|QFrame::Sunken);
|
||||
_default_configuration->setFrameStyle(QFrame::WinPanel | QFrame::Sunken);
|
||||
_default_configuration->setAlignment(Qt::AlignCenter);
|
||||
|
||||
// 下方堆叠面板
|
||||
_message_panel->addTab(_logs_present, u8"控制台");
|
||||
_message_panel->addTab(_stacked_panel, u8"属性配置");
|
||||
_stacked_panel->addWidget(_modify_configuration);
|
||||
_stacked_panel->addWidget(_action_configuration);
|
||||
_stacked_panel->addWidget(_compare_configuration);
|
||||
_stacked_panel->addWidget(_map_configuration);
|
||||
_stacked_panel->addWidget(_default_configuration);
|
||||
_stacked_panel->addWidget(_default_configuration);// 0
|
||||
_stacked_panel->addWidget(_modify_configuration); // 1
|
||||
_stacked_panel->addWidget(_action_configuration); // 2
|
||||
_stacked_panel->addWidget(_compare_configuration);// 3
|
||||
_stacked_panel->addWidget(_map_configuration); // 4
|
||||
|
||||
connect(_logical_present, &BehaviorsPresent::clickedUponAtItem, this, &BehaviorEditor::configurationPanel);
|
||||
}
|
||||
|
||||
void BehaviorEditor::nodeTypesViewInit(QStandardItemModel* m)
|
||||
|
|
|
@ -77,6 +77,7 @@ public:
|
|||
/// </summary>
|
||||
class BehaviorsPresent : public QGraphicsView
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
QGraphicsScene _bind_scene;
|
||||
|
||||
|
@ -90,6 +91,9 @@ private:
|
|||
/// </summary>
|
||||
std::shared_ptr<BehaviorMapNode> _bind_maproot = nullptr;
|
||||
|
||||
signals:
|
||||
void clickedUponAtItem(NodePresent *node);
|
||||
|
||||
public:
|
||||
uint64_t _node_id_max = 0;
|
||||
BehaviorsPresent(QWidget* parent = nullptr);
|
||||
|
@ -128,6 +132,8 @@ public:
|
|||
QPointF nodeRelayout(QHash<std::shared_ptr<LogicalNode>, std::pair<QSizeF, QSizeF>>& _outline_occupy,
|
||||
std::shared_ptr<LogicalNode> ins, const QPointF& origin_offset);
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *e) override;
|
||||
};
|
||||
|
||||
|
||||
|
@ -183,7 +189,7 @@ private:
|
|||
// ==============================================
|
||||
QTextBrowser* const _logs_present;
|
||||
|
||||
void configurationPanel();
|
||||
void configurationPanel(NodePresent *n);
|
||||
|
||||
public:
|
||||
BehaviorEditor(QWidget* parent = nullptr);
|
||||
|
|
|
@ -26,3 +26,7 @@ CompareNodeConfiguration::CompareNodeConfiguration(QWidget* p)
|
|||
p_layout->setColumnStretch(1, 1);
|
||||
p_layout->setRowStretch(4, 1);
|
||||
}
|
||||
|
||||
void CompareNodeConfiguration::setTarget(NodePresent* ins)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#pragma once
|
||||
#include <QFrame>
|
||||
#include <QComboBox>
|
||||
#include "sims_world.h"
|
||||
|
||||
class CompareNodeConfiguration : public QFrame
|
||||
class CompareNodeConfiguration : public QFrame, public NodeConfiguration
|
||||
{
|
||||
private:
|
||||
QComboBox *const _type_select;
|
||||
|
@ -13,5 +14,6 @@ private:
|
|||
public:
|
||||
CompareNodeConfiguration(QWidget *p = nullptr);
|
||||
|
||||
void setTarget(NodePresent* ins) override;
|
||||
};
|
||||
|
||||
|
|
|
@ -15,3 +15,7 @@ ModifyNodeConfiguration::ModifyNodeConfiguration(QWidget* p)
|
|||
p_layout->setRowStretch(1, 1);
|
||||
p_layout->setColumnStretch(1, 1);
|
||||
}
|
||||
|
||||
void ModifyNodeConfiguration::setTarget(NodePresent* ins)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -2,13 +2,16 @@
|
|||
#include <qframe.h>
|
||||
#include <qlabel.h>
|
||||
#include <qcombobox.h>
|
||||
#include "sims_world.h"
|
||||
|
||||
class ModifyNodeConfiguration : public QFrame
|
||||
class ModifyNodeConfiguration : public QFrame, public NodeConfiguration
|
||||
{
|
||||
private:
|
||||
QComboBox *const _modify_types;
|
||||
|
||||
public:
|
||||
ModifyNodeConfiguration(QWidget *p = nullptr);
|
||||
|
||||
void setTarget(NodePresent* ins) override;
|
||||
};
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
<ClInclude Include="CompareNodeConfiguration.h" />
|
||||
<ClInclude Include="ModifyNodeConfiguration.h" />
|
||||
<QtMoc Include="BehaviorConfigurationPanel.h" />
|
||||
<ClInclude Include="BehaviorEditor.h" />
|
||||
<QtMoc Include="BehaviorEditor.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Condition="Exists('$(QtMsBuild)\qt.targets')">
|
||||
|
|
|
@ -78,11 +78,11 @@
|
|||
<QtMoc Include="BehaviorConfigurationPanel.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</QtMoc>
|
||||
<QtMoc Include="BehaviorEditor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</QtMoc>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="BehaviorEditor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="CompareNodeConfiguration.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
|
|
@ -4,6 +4,12 @@
|
|||
#include "ui_sims_world.h"
|
||||
#include <DeduceFramework.h>
|
||||
|
||||
class NodePresent;
|
||||
class NodeConfiguration {
|
||||
public:
|
||||
virtual void setTarget(NodePresent* ins) = 0;
|
||||
};
|
||||
|
||||
class SimsWorld : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
Loading…
Reference in New Issue