17using namespace std::string_literals;
29 fWebWindow->SetDefaultPage(
"file:rootui5sys/geom/index.html");
32 if (use_server_threads)
35 fDesc.AddSignalHandler(
this, [
this](
const std::string &kind) {
ProcessSignal(kind); });
43 fDesc.RemoveSignalHandler(
this);
51 if (arg.compare(0, 6,
"BRREQ:") == 0) {
53 auto json =
fDesc.ProcessBrowserRequest(arg.substr(6));
54 if (json.length() > 0)
56 }
else if (arg.compare(0, 7,
"SEARCH:") == 0) {
58 std::string query = arg.substr(7);
61 std::string hjson, json;
62 fDesc.SearchVisibles(query, hjson, json);
66 if (
fDesc.SetSearch(query, json))
67 fDesc.IssueSignal(
this, json.empty() ?
"ClearSearch" :
"ChangeSearch");
69 fDesc.SetSearch(
""s,
""s);
70 fDesc.IssueSignal(
this,
"ClearSearch");
73 auto connids =
fWebWindow->GetConnections(connid);
75 for (
auto id : connids)
78 }
else if (arg.compare(0, 7,
"SETTOP:") == 0) {
80 if (path &&
fDesc.SelectTop(*path)) {
81 fDesc.IssueSignal(
this,
"SelectTop");
82 auto connids =
fWebWindow->GetConnections(connid);
84 for (
auto id : connids)
87 }
else if (arg.compare(0, 6,
"HOVER:") == 0) {
90 auto stack =
fDesc.MakeStackByPath(*path);
91 if (
fDesc.SetHighlightedItem(stack))
92 fDesc.IssueSignal(
this,
"HighlightItem");
94 }
else if (arg.compare(0, 6,
"CLICK:") == 0) {
97 auto stack =
fDesc.MakeStackByPath(*path);
98 if (
fDesc.SetClickedItem(stack))
99 fDesc.IssueSignal(
this,
"ClickItem");
101 }
else if ((arg.compare(0, 7,
"SETVI0:") == 0) || (arg.compare(0, 7,
"SETVI1:") == 0)) {
106 bool on = (arg[5] ==
'1');
108 if (path &&
fDesc.ChangeNodeVisibility(*path,
on))
109 fDesc.IssueSignal(
this,
"NodeVisibility");
111 }
else if ((arg.compare(0, 5,
"SHOW:") == 0) || (arg.compare(0, 5,
"HIDE:") == 0)) {
113 if (path &&
fDesc.SetPhysNodeVisibility(*path, arg.compare(0, 5,
"SHOW:") == 0))
114 fDesc.IssueSignal(
this,
"NodeVisibility");
115 }
else if (arg.compare(0, 6,
"CLEAR:") == 0) {
117 if (path &&
fDesc.ClearPhysNodeVisibility(*path))
118 fDesc.IssueSignal(
this,
"NodeVisibility");
119 }
else if (arg ==
"CLEARALL"s) {
120 if (
fDesc.ClearAllPhysVisibility())
121 fDesc.IssueSignal(
this,
"NodeVisibility");
133 fWebWindow->SetUserArgs(
"{ show_columns: true, only_hierarchy: true }");
160 if (kind ==
"HighlightItem") {
161 auto stack =
fDesc.GetHighlightedItem();
162 auto path =
fDesc.MakePathByStack(stack);
167 }
else if (kind ==
"NodeVisibility") {
171 }
else if (kind ==
"ActiveItem") {
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void on
void Show(const RWebDisplayArgs &args="")
Show hierarchy in web window.
void Update()
Update client - reload hierarchy.
RGeomHierarchy(RGeomDescription &desc, bool use_server_threads=false)
constructor
std::shared_ptr< RWebWindow > fWebWindow
! web window to show geometry
virtual ~RGeomHierarchy()
destructor
void ClearOnClose(const std::shared_ptr< void > &handle)
Set handle which will be cleared when connection is closed Must be called after window is shown.
void BrowseTo(const std::string &itemname)
Let browse to specified location.
void ProcessSignal(const std::string &kind)
Process signals from geometry description object.
void WebWindowCallback(unsigned connid, const std::string &arg)
Process data from client.
RGeomDescription & fDesc
! geometry description, shared with external
Holds different arguments for starting browser with RWebDisplayHandle::Display() method.
const std::string & GetWidgetKind() const
returns widget kind
static std::shared_ptr< RWebWindow > Create()
Create new RWebWindow Using default RWebWindowsManager.
static unsigned ShowWindow(std::shared_ptr< RWebWindow > window, const RWebDisplayArgs &args="")
Static method to show web window Has to be used instead of RWebWindow::Show() when window potentially...
static TString ToJSON(const T *obj, Int_t compact=0, const char *member_name=nullptr)
static Bool_t FromJSON(T *&obj, const char *json)
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...