35 auto layout = this->setLayout(std::make_unique<Wt::WBorderLayout>());
36 layout->setContentsMargins(0, 0, 0, 0);
38 viewportHeight = Wt::WApplication::instance()->environment().screenHeight();
39 viewportWidth = Wt::WApplication::instance()->environment().screenWidth();
46 rightWidget = layout->addWidget(std::make_unique<Wt::WContainerWidget>(), Wt::LayoutPosition::East);
125 auto centerContainer = layout->addWidget(std::make_unique<Wt::WContainerWidget>(), Wt::LayoutPosition::Center);
126 centerContainer->setMargin(0);
128 auto centerVbox = centerContainer->setLayout(std::make_unique<Wt::WVBoxLayout>());
129 centerVbox->setContentsMargins(0, 0, 0, 0);
132 mSceneCanvas = centerVbox->addWidget(std::make_unique<WSimulationCanvas>());
135 controlContainer = centerVbox->addWidget(std::make_unique<WSimulationControl>());
142 auto layout =
rightWidget->setLayout(std::make_unique<Wt::WVBoxLayout>());
143 layout->setContentsMargins(0, 0, 0, 0);
144 parent->setMargin(0);
146 auto widget0 = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
147 widget0->resize(
"100%",
"100%");
148 widget0->setMargin(0);
149 tab = widget0->addNew<Wt::WTabWidget>();
150 tab->resize(
"100%",
"100%");
153 tab->addTab(
initPython(),
"Python", Wt::ContentLoading::Lazy);
154 tab->addTab(
initSample(),
"Sample", Wt::ContentLoading::Lazy);
155 tab->addTab(
initSave(),
"Save", Wt::ContentLoading::Lazy);
156 tab->addTab(
initLog(),
"Log", Wt::ContentLoading::Lazy);
161 auto widget3 = panel->setCentralWidget(std::make_unique<Wt::WContainerWidget>());
162 auto layout3 = widget3->setLayout(std::make_unique<Wt::WHBoxLayout>());
163 layout3->setContentsMargins(0, 0, 0, 0);
165 Wt::WSuggestionPopup::Options nodeOptions;
166 nodeOptions.highlightBeginTag =
"<span class=\"highlight\">";
167 nodeOptions.highlightEndTag =
"</span>";
169 Wt::WSuggestionPopup* sp = layout3->addChild(std::make_unique<Wt::WSuggestionPopup>(
170 Wt::WSuggestionPopup::generateMatcherJS(nodeOptions),
171 Wt::WSuggestionPopup::generateReplacerJS(nodeOptions)
175 for (
auto iPage = pages.begin(); iPage != pages.end(); iPage++)
177 auto& groups = iPage->second->groups();
179 for (
auto iGroup = groups.begin(); iGroup != groups.end(); iGroup++)
181 auto& actions = iGroup->second->actions();
182 for (
auto action : actions)
184 sp->addSuggestion(action->caption());
191 for (
auto it = nodeMap->begin(); it != nodeMap->end(); ++it)
194 std::shared_ptr<dyno::Node> new_node(
dynamic_cast<dyno::Node*
>(node_obj));
195 if (new_node ==
nullptr)
201 sp->addSuggestion(it->second->m_className);
204 auto name = layout3->addWidget(std::make_unique<Wt::WLineEdit>());
205 name->setPlaceholderText(
"node name");
209 auto addNodeButton = layout3->addWidget(std::make_unique<Wt::WPushButton>(
"Add"));
211 addNodeButton->clicked().connect([=] {
214 for (
auto iPage = pages.begin(); iPage != pages.end(); iPage++)
216 auto& groups = iPage->second->groups();
218 for (
auto iGroup = groups.begin(); iGroup != groups.end(); iGroup++)
220 auto& actions = iGroup->second->actions();
221 for (
auto action : actions)
223 if (action->caption() == name->text().toUTF8())
225 auto new_node =
mScene->addNode(action->action()());
242 std::shared_ptr<dyno::Node> new_node(
dynamic_cast<dyno::Node*
>(node_obj));
243 if (new_node !=
nullptr)
245 mScene->addNode(new_node);
250 std::cout <<
"!!!!!!!!!!!" << std::endl;
259 auto reorderNodeButton = layout3->addWidget(std::make_unique<Wt::WPushButton>(
"Reorder"));
261 reorderNodeButton->clicked().connect([=] {
272 auto painteContainer =
nodeGraphicsWidget->nodePanel->setCentralWidget(std::make_unique<Wt::WContainerWidget>());
273 painteContainer->setMargin(0);
279 auto parameterWidget =
nodeGraphicsWidget->layout->addWidget(std::make_unique<Wt::WContainerWidget>());;
287 for (
auto it =
mScene->begin(); it !=
mScene->end(); it++)
290 if (m->objectId() == selectNum)
311 mSceneCanvas->selectNodeSignal().connect([=](std::shared_ptr<dyno::Node> node)
413 sampleWidget->setStyleClass(
"scrollable-content-sample");
417 sampleWidget->clicked().connect([=](
Sample* sample)
422 std::string path = sample->
source();
423 std::ifstream ifs(path);
426 std::string content((std::istreambuf_iterator<char>(ifs)),
427 (std::istreambuf_iterator<char>()));
434 std::string content =
"Error: Not Find The Python File";
440 return std::unique_ptr<WSampleWidget>(sampleWidget);
std::unique_ptr< Wt::WWidget > initPython()
WSimulationCanvas * mSceneCanvas
WtModuleFlowWidget * mModuleFlowWidget
std::unique_ptr< WModuleGraphics > moduleGraphicsWidget
std::shared_ptr< WNodeDataModel > mNodeDataModel
Wt::WContainerWidget * rightWidget
void onKeyWentDown(const Wt::WKeyEvent &event)
std::unique_ptr< WNodeGraphics > nodeGraphicsWidget
std::unique_ptr< Wt::WWidget > initLog()
std::unique_ptr< Wt::WWidget > initSample()
std::shared_ptr< dyno::SceneGraph > mScene
void initCenterContainer(Wt::WBorderLayout *)
std::unique_ptr< Wt::WWidget > initNodeGraphics()
std::unique_ptr< Wt::WWidget > initModuleGraphics()
void initAddNodePanel(Wt::WPanel *parent)
std::unique_ptr< Wt::WWidget > initSave()
std::shared_ptr< WParameterDataNode > mParameterDataNode
WSimulationControl * controlContainer
WtNodeFlowWidget * mNodeFlowWidget
void initNavigationBar(Wt::WBorderLayout *)
std::shared_ptr< dyno::SceneGraph > getScene()
void initRightPanel(Wt::WContainerWidget *)
WPythonWidget * pythonWidget
void setScene(std::shared_ptr< dyno::SceneGraph > scene)
std::shared_ptr< WModuleDataModel > mModuleDataModel
void updateNodeGraphics()