Skip to content

Commit ea80f3f

Browse files
committed
Add an example of a single view and openui5 dark theme
1 parent 4286fa4 commit ea80f3f

File tree

2 files changed

+94
-4
lines changed

2 files changed

+94
-4
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
2+
3+
#include "TRandom.h"
4+
#include <ROOT/REveElement.hxx>
5+
#include <ROOT/REveScene.hxx>
6+
#include <ROOT/REveManager.hxx>
7+
#include <ROOT/REveJetCone.hxx>
8+
#include <ROOT/RWebDisplayArgs.hxx>
9+
#include <ROOT/RWebWindow.hxx>
10+
11+
12+
const Double_t kR_min = 240;
13+
const Double_t kR_max = 250;
14+
const Double_t kZ_d = 300;
15+
16+
using namespace ROOT::Experimental;
17+
18+
void makeJets(int N_Jets, REveElement *jetHolder)
19+
{
20+
TRandom &r = *gRandom;
21+
22+
for (int i = 0; i < N_Jets; i++) {
23+
auto jet = new REveJetCone(Form("Jet_%d", i));
24+
jet->SetCylinder(2 * kR_max, 2 * kZ_d);
25+
jet->AddEllipticCone(r.Uniform(-0.5, 0.5), r.Uniform(0, TMath::TwoPi()), 0.1, 0.2);
26+
jet->SetFillColor(kPink - 8);
27+
jet->SetLineColor(kViolet - 7);
28+
29+
jetHolder->AddElement(jet);
30+
}
31+
}
32+
33+
void single_dark()
34+
{
35+
auto eveMng = REveManager::Create();
36+
eveMng->AllowMultipleRemoteConnections(false, false);
37+
38+
// openui5 theme
39+
gEnv->SetValue("WebGui.DarkMode", "yes");
40+
41+
// default viewer, event scene
42+
eveMng->GetDefaultViewer()->SetBlackBackground(true);
43+
REveElement *jetHolder = new REveElement("Jets");
44+
eveMng->GetEventScene()->AddElement(jetHolder);
45+
makeJets(7, jetHolder);
46+
47+
// projected view
48+
auto view = eveMng->SpawnNewViewer("RPhiView", "");
49+
view->SetBlackBackground(true);
50+
view->SetCameraType(REveViewer::kCameraOrthoXOY);
51+
auto eventScene = eveMng->SpawnNewScene("RPZScene");
52+
view->AddScene(eventScene);
53+
view->SetMandatory(false);
54+
55+
auto mngRhoZ = new REveProjectionManager(REveProjection::kPT_RhoZ);
56+
mngRhoZ->ImportElements(jetHolder, eventScene);
57+
58+
auto text = new REveText();
59+
text->SetText("Single View");
60+
text->SetTextColor(kWhite);
61+
text->SetPosition(REveVector(0.02, 0.9, 0.2));
62+
text->SetFontSize(0.05);
63+
text->SetFont("LiberationSerif-Regular");
64+
text->SetFillAlpha(228);
65+
std::string rf_dir = gSystem->ExpandPathName("${ROOTSYS}/fonts/");
66+
text->AssertSdfFont("LiberationSerif-Regular", rf_dir + "LiberationSerif-Regular.ttf");
67+
eventScene->AddElement(text);
68+
69+
// append ?Single=RPhiView"
70+
std::string url = eveMng->GetWebWindow()->GetUrl();
71+
url += "?Single=RPhiView";
72+
std::cout << "Single view URL" << url << "\n";
73+
ROOT::RWebDisplayArgs args;
74+
args.SetUrlOpt("Single=RPhiView");
75+
76+
eveMng->GetWebWindow()->Show();
77+
eveMng->GetWebWindow()->Show(args);
78+
}

ui5/eve7/controller/MainMini.controller.js

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,15 @@ sap.ui.define(['rootui5/eve7/controller/Main.controller','sap/ui/core/Component'
4242
if (staged.length == 0) return;
4343

4444
let vMenu = this.getView().byId("menuViewId");
45-
46-
for (let n=0;n<staged.length;++n) {
45+
for (let n = 0; n < staged.length; ++n) {
4746
let eveView = staged[n];
47+
4848
eveView.$view_created = true;
49-
if(eveView.subscribed) this.makeEveViewController(eveView);
49+
50+
if (eveView.subscribed)
51+
this.makeEveViewController(eveView);
52+
else
53+
this.subscribeView(eveView);
5054
}
5155
},
5256

@@ -92,7 +96,15 @@ sap.ui.define(['rootui5/eve7/controller/Main.controller','sap/ui/core/Component'
9296

9397
onEveManagerInit: function() {
9498
this.updateViewers();
95-
},
99+
},
100+
101+
subscribeView: function(viewer)
102+
{
103+
viewer.subscribed = true;
104+
viewer.pendInstance = true;
105+
this.mgr.SendMIR("ConnectClient()", viewer.fElementId, "ROOT::Experimental::REveViewer");
106+
}
107+
96108

97109
});
98110
});

0 commit comments

Comments
 (0)