16 this->setLayoutSizeAware(
true);
17 this->setOverflow(Wt::Overflow::Auto);
21 auto layout = this->setLayout(std::make_unique<Wt::WVBoxLayout>());
22 layout->setContentsMargins(0, 0, 0, 0);
24 mCodeEditor = layout->addWidget(std::make_unique<Wt::WText>(), 1);
32 ref +
".editor = ace.edit(" + ref +
");" +
33 ref +
".editor.setTheme(\"ace/theme/monokai\");" +
34 ref +
".editor.getSession().setMode(\"ace/mode/python\");" +
35 ref +
".editor.setFontSize(14);" +
36 "ace.require(\"ace/ext/language_tools\");" +
37 ref +
".editor.setOptions({enableBasicAutocompletion: true,enableSnippets : true,enableLiveAutocompletion : true});" +
38 ref +
".editor.setOption(\"wrap\",\"free\")";
42 auto jsignal =
new Wt::JSignal<std::string>(
mCodeEditor,
"update");
45 auto str = jsignal->createCall({ ref +
".editor.getValue()" });
46 command =
"function(object, event) {" + str +
";}";
47 auto btn = layout->addWidget(std::make_unique<Wt::WPushButton>(
"Update"), 0);
48 btn->clicked().connect(command);
51 std::string source = R
"====(# dyno sample
52import PyPeridyno as dyno
54class VolumeTest(dyno.Node):
57 dyno = __import__('PyPeridyno')
59 self.state_LevelSet = dyno.FInstanceLevelSet3f("LevelSet", "", dyno.FieldTypeEnum.State, self)
61 self.set_auto_hidden(True)
62 mapper = dyno.VolumeToTriangleSet3f()
63 self.state_level_set().connect(mapper.io_volume())
64 self.graphics_pipeline().push_module(mapper)
66 renderer = dyno.GLSurfaceVisualModule()
67 mapper.out_triangle_set().connect(renderer.in_triangle_set())
68 self.graphics_pipeline().push_module(renderer)
70 def get_node_type(self):
73 def state_level_set(self):
74 return self.state_LevelSet
77scn = dyno.SceneGraph()
103 py::scoped_interpreter guard{};
106 auto locals = py::dict();
107 py::exec(src, py::globals(), locals);
109 if (locals.contains(
"scn"))
111 auto scene = locals[
"scn"].cast<std::shared_ptr<dyno::SceneGraph>>();
112 if (scene)
mSignal.emit(scene);
116 Wt::WMessageBox::show(
"Error",
"Please define 'scn = dyno.SceneGraph()'", Wt::StandardButton::Ok);
119 catch (
const std::exception& e) {
120 Wt::WMessageBox::show(
"Error", e.what(), Wt::StandardButton::Ok);