18 ComboBoxItem() =
default;
19 ComboBoxItem(
const std::string &
id,
const std::string &name) : fId(id), fName(name) {}
23 struct TestPanelModel {
24 std::string fSampleText;
25 std::vector<ComboBoxItem> fComboItems;
26 std::string fSelectId;
27 std::string fButtonText;
30 std::shared_ptr<ROOT::Experimental::RWebWindow> window;
31 std::unique_ptr<TestPanelModel> model;
34 void ProcessConnection(
unsigned connid)
36 printf(
"connection established %u\n", connid);
37 TString json = TBufferJSON::ToJSON(model.get());
38 window->Send(connid, std::string(
"MODEL:") + json.Data());
41 void ProcessCloseConnection(
unsigned connid)
43 printf(
"connection closed %u\n", connid);
46 void ProcessData(
unsigned connid,
const std::string &arg)
48 if (arg ==
"REFRESH") {
50 printf(
"Resend model\n");
51 TString json = TBufferJSON::ToJSON(model.get());
52 window->Send(connid, std::string(
"MODEL:") + json.Data());
53 }
else if (arg.find(
"MODEL:") == 0) {
54 printf(
"Decode model %s\n", arg.c_str());
56 auto m = TBufferJSON::FromJSON<TestPanelModel>(arg.substr(6));
58 printf(
"New model, selected: %s\n", m->fSelectId.c_str());
67 model = std::make_unique<TestPanelModel>();
68 model->fSampleText =
"This is openui5 widget";
69 model->fComboItems = {{
"item1",
"Text 1"}, {
"item2",
"Text 2"}, {
"item3",
"Text 3"}, {
"item4",
"Text 4"}};
70 model->fSelectId =
"item2";
71 model->fButtonText =
"Custom button";
74 window = ROOT::Experimental::RWebWindow::Create();
79 window->SetPanelName(
"localapp.view.TestPanel");
87 window->SetCallBacks(ProcessConnection, ProcessData, ProcessCloseConnection);
89 window->SetGeometry(400, 500);