ActionNode的Delegate配置
This commit is contained in:
parent
20ae77bc20
commit
c47d8e5c77
|
@ -50,8 +50,11 @@ QString BehaviorPerformPlugin::name() const
|
||||||
}
|
}
|
||||||
|
|
||||||
#include <MessageLoader.h>
|
#include <MessageLoader.h>
|
||||||
|
#include "exec_delegate.h"
|
||||||
MapKernel::MapKernel(std::shared_ptr<MessageLoader> ins)
|
MapKernel::MapKernel(std::shared_ptr<MessageLoader> ins)
|
||||||
:_bind_loader(ins) {
|
:_bind_loader(ins) {
|
||||||
|
auto output = std::make_shared<ConsolePresent>();
|
||||||
|
this->_execute_types[output->typeName()] = output;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QString> MapKernel::compareTypes() const
|
QList<QString> MapKernel::compareTypes() const
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'" Label="QtSettings">
|
||||||
<QtInstall>5.12.11_msvc2017_64</QtInstall>
|
<QtInstall>5.12.11_msvc2017_64</QtInstall>
|
||||||
<QtModules>core;xml;gui;qml;concurrent</QtModules>
|
<QtModules>core;xml;network;gui;qml;concurrent</QtModules>
|
||||||
<QtBuildConfig>debug</QtBuildConfig>
|
<QtBuildConfig>debug</QtBuildConfig>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'" Label="QtSettings">
|
||||||
|
@ -105,6 +105,7 @@
|
||||||
<ClCompile Include="componentbasic.cpp" />
|
<ClCompile Include="componentbasic.cpp" />
|
||||||
<ClCompile Include="DeduceFramework.cpp" />
|
<ClCompile Include="DeduceFramework.cpp" />
|
||||||
<ClCompile Include="ComponentsInfoPull.cpp" />
|
<ClCompile Include="ComponentsInfoPull.cpp" />
|
||||||
|
<ClCompile Include="exec_delegate.cpp" />
|
||||||
<ClCompile Include="RouteManage.cpp" />
|
<ClCompile Include="RouteManage.cpp" />
|
||||||
<ClCompile Include="SurfaceMotion.cpp" />
|
<ClCompile Include="SurfaceMotion.cpp" />
|
||||||
<ClCompile Include="VisibleCube.cpp" />
|
<ClCompile Include="VisibleCube.cpp" />
|
||||||
|
@ -113,6 +114,7 @@
|
||||||
<ClInclude Include="componentbasic.h" />
|
<ClInclude Include="componentbasic.h" />
|
||||||
<QtMoc Include="DeduceFramework.h" />
|
<QtMoc Include="DeduceFramework.h" />
|
||||||
<ClInclude Include="ComponentsInfoPull.h" />
|
<ClInclude Include="ComponentsInfoPull.h" />
|
||||||
|
<ClInclude Include="exec_delegate.h" />
|
||||||
<ClInclude Include="RouteManage.h" />
|
<ClInclude Include="RouteManage.h" />
|
||||||
<ClInclude Include="SurfaceMotion.h" />
|
<ClInclude Include="SurfaceMotion.h" />
|
||||||
<ClInclude Include="VisibleCube.h" />
|
<ClInclude Include="VisibleCube.h" />
|
||||||
|
|
|
@ -41,6 +41,9 @@
|
||||||
<ClInclude Include="SurfaceMotion.h">
|
<ClInclude Include="SurfaceMotion.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="exec_delegate.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="VisibleCube.cpp">
|
<ClCompile Include="VisibleCube.cpp">
|
||||||
|
@ -64,6 +67,9 @@
|
||||||
<ClCompile Include="BehaviorPerform.cpp">
|
<ClCompile Include="BehaviorPerform.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="exec_delegate.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<QtMoc Include="DeduceFramework.h">
|
<QtMoc Include="DeduceFramework.h">
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
#include "exec_delegate.h"
|
||||||
|
|
||||||
|
ConsolePresent::ConsolePresent()
|
||||||
|
: _write_port(new QUdpSocket()){
|
||||||
|
_input_list[u8"Êä³ö±äÁ¿"] = std::shared_ptr<GeneralData>();
|
||||||
|
}
|
||||||
|
|
||||||
|
ConsolePresent::~ConsolePresent()
|
||||||
|
{
|
||||||
|
delete _write_port;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ConsolePresent::typeName() const
|
||||||
|
{
|
||||||
|
return NAME(ConsolePresent);
|
||||||
|
}
|
||||||
|
|
||||||
|
QHash<QString, std::shared_ptr<TopicData>> ConsolePresent::inputList() const
|
||||||
|
{
|
||||||
|
return _input_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
QHash<QString, std::shared_ptr<TopicData>> ConsolePresent::outputList() const
|
||||||
|
{
|
||||||
|
return QHash<QString, std::shared_ptr<TopicData>>();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConsolePresent::reset()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <QJsonDocument>
|
||||||
|
#include <QJsonObject>
|
||||||
|
ExecuteResult ConsolePresent::execute()
|
||||||
|
{
|
||||||
|
QJsonObject obj;
|
||||||
|
_input_list[u8"Êä³ö±äÁ¿"]->saveTo(obj);
|
||||||
|
QJsonDocument doc(obj);
|
||||||
|
|
||||||
|
auto cnt = _write_port->writeDatagram(doc.toJson(), QHostAddress::LocalHost, 6000);
|
||||||
|
if(cnt < 0)
|
||||||
|
return ExecuteResult::FAILURE;
|
||||||
|
return ExecuteResult::SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<Serializable> ConsolePresent::newDefault() const
|
||||||
|
{
|
||||||
|
return std::make_shared<ConsolePresent>();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConsolePresent::recoveryFrom(const QJsonObject& obj)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConsolePresent::saveTo(QJsonObject& obj) const
|
||||||
|
{
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
#pragma once
|
||||||
|
#include "BehaviorPerform.h"
|
||||||
|
#include <QUdpSocket>
|
||||||
|
|
||||||
|
class ConsolePresent : public ExecuteDelegate
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
QHash<QString, std::shared_ptr<TopicData>> _input_list;
|
||||||
|
QUdpSocket *const _write_port;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ConsolePresent();
|
||||||
|
virtual ~ConsolePresent();
|
||||||
|
|
||||||
|
QString typeName() const override;
|
||||||
|
QHash<QString, std::shared_ptr<TopicData>> inputList() const override;
|
||||||
|
QHash<QString, std::shared_ptr<TopicData>> outputList() const override;
|
||||||
|
|
||||||
|
|
||||||
|
void reset() override;
|
||||||
|
ExecuteResult execute() override;
|
||||||
|
|
||||||
|
|
||||||
|
std::shared_ptr<Serializable> newDefault() const override;
|
||||||
|
|
||||||
|
|
||||||
|
void recoveryFrom(const QJsonObject& obj) override;
|
||||||
|
void saveTo(QJsonObject& obj) const override;
|
||||||
|
|
||||||
|
};
|
|
@ -1,8 +1,10 @@
|
||||||
#include "ActionNodeConfiguration.h"
|
#include "ActionNodeConfiguration.h"
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
|
|
||||||
|
#include "BehaviorEditor.h"
|
||||||
ActionNodeConfiguration::ActionNodeConfiguration(QWidget* p)
|
ActionNodeConfiguration::ActionNodeConfiguration(QWidget* p)
|
||||||
:QFrame(p),
|
:QFrame(p),
|
||||||
|
_current_present(nullptr),
|
||||||
_execute_select(new QComboBox(this)),
|
_execute_select(new QComboBox(this)),
|
||||||
_vars_configuration(new VariablesConfigurationPanel(this))
|
_vars_configuration(new VariablesConfigurationPanel(this))
|
||||||
{
|
{
|
||||||
|
@ -14,10 +16,29 @@ ActionNodeConfiguration::ActionNodeConfiguration(QWidget* p)
|
||||||
p_layout->addWidget(_vars_configuration, 1, 0, 3, 5);
|
p_layout->addWidget(_vars_configuration, 1, 0, 3, 5);
|
||||||
|
|
||||||
p_layout->setColumnStretch(1, 1);
|
p_layout->setColumnStretch(1, 1);
|
||||||
|
connect(this->_execute_select, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int v){
|
||||||
|
if(v < 1 || !_current_node) return;
|
||||||
|
|
||||||
|
auto inst = this->_current_node->getKernal()->getExecute(this->_execute_select->currentText());
|
||||||
|
auto new_inst = std::dynamic_pointer_cast<ExecuteDelegate>(inst->newDefault());
|
||||||
|
_current_node->bindDelegate(new_inst);
|
||||||
|
|
||||||
|
_current_present->itemUpdate();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "BehaviorEditor.h"
|
|
||||||
void ActionNodeConfiguration::setTarget(NodePresent* ins)
|
void ActionNodeConfiguration::setTarget(NodePresent* ins)
|
||||||
{
|
{
|
||||||
|
this->_current_present = ins;
|
||||||
|
auto logic_node = ins->logicalBind();
|
||||||
|
this->_current_node = std::dynamic_pointer_cast<ExecuteNode>(logic_node);
|
||||||
|
|
||||||
|
auto kernel = logic_node->getKernal();
|
||||||
|
this->_execute_select->clear();
|
||||||
|
auto types = kernel->executeTypes();
|
||||||
|
types.prepend(u8"δѡ¶¨");
|
||||||
|
this->_execute_select->addItems(types);
|
||||||
|
|
||||||
|
this->_execute_select->setCurrentText(_current_node->delegateName());
|
||||||
this->_vars_configuration->bindNode(ins->logicalBind());
|
this->_vars_configuration->bindNode(ins->logicalBind());
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,11 +14,14 @@
|
||||||
class ActionNodeConfiguration : public QFrame, public NodeConfiguration
|
class ActionNodeConfiguration : public QFrame, public NodeConfiguration
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
QComboBox *const _execute_select;
|
QComboBox* const _execute_select;
|
||||||
VariablesConfigurationPanel *const _vars_configuration;
|
NodePresent * _current_present;
|
||||||
|
std::shared_ptr<ExecuteNode> _current_node;
|
||||||
|
VariablesConfigurationPanel* const _vars_configuration;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ActionNodeConfiguration(QWidget *p = nullptr);
|
ActionNodeConfiguration(QWidget* p = nullptr);
|
||||||
|
|
||||||
void setTarget(NodePresent* ins) override;
|
void setTarget(NodePresent* ins) override;
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,6 +29,11 @@ std::shared_ptr<LogicalNode> NodePresent::logicalBind() const
|
||||||
return _node_bind;
|
return _node_bind;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NodePresent::itemUpdate()
|
||||||
|
{
|
||||||
|
this->prepareGeometryChange();
|
||||||
|
}
|
||||||
|
|
||||||
QRectF NodePresent::contentMeasure() const
|
QRectF NodePresent::contentMeasure() const
|
||||||
{
|
{
|
||||||
auto metrics = this->_widget_p->fontMetrics();
|
auto metrics = this->_widget_p->fontMetrics();
|
||||||
|
|
|
@ -30,6 +30,7 @@ public:
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
std::shared_ptr<LogicalNode> logicalBind() const;
|
std::shared_ptr<LogicalNode> logicalBind() const;
|
||||||
|
void itemUpdate();
|
||||||
|
|
||||||
QRectF contentMeasure() const;
|
QRectF contentMeasure() const;
|
||||||
AcceptType testAccept(const QPointF& local_pos, const QString& kind_str) const;
|
AcceptType testAccept(const QPointF& local_pos, const QString& kind_str) const;
|
||||||
|
|
|
@ -89,14 +89,14 @@
|
||||||
<ClInclude Include="CompareNodeConfiguration.h">
|
<ClInclude Include="CompareNodeConfiguration.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="ActionNodeConfiguration.h">
|
|
||||||
<Filter>Header Files</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="ModifyNodeConfiguration.h">
|
<ClInclude Include="ModifyNodeConfiguration.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="VariablesConfiguration.h">
|
<ClInclude Include="VariablesConfiguration.h">
|
||||||
<Filter>Header Files</Filter>
|
<Filter>Header Files</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="ActionNodeConfiguration.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
Loading…
Reference in New Issue