98 auto separ = str.find(
"x");
99 if ((separ == std::string::npos) || (separ == 0) || (separ == str.length()-1))
return false;
104 width = std::stoi(str.substr(0,separ));
105 height = std::stoi(str.substr(separ+1));
122 auto separ = str.find(
",");
123 if ((separ == std::string::npos) || (separ == 0) || (separ == str.length()-1))
return false;
128 x = std::stoi(str.substr(0,separ));
129 y = std::stoi(str.substr(separ+1));
134 if ((
x < 0) || (
y < 0))
161 std::string kind = _kind;
163 auto pos = kind.find(
"?");
167 }
else if (pos != std::string::npos) {
172 pos = kind.find(
"size:");
173 if (pos != std::string::npos) {
174 auto epos = kind.find_first_of(
" ;", pos+5);
175 if (epos == std::string::npos) epos = kind.length();
177 kind.erase(pos, epos-pos);
180 pos = kind.find(
"pos:");
181 if (pos != std::string::npos) {
182 auto epos = kind.find_first_of(
" ;", pos+4);
183 if (epos == std::string::npos) epos = kind.length();
185 kind.erase(pos, epos-pos);
188 pos = kind.rfind(
"headless");
189 if ((pos != std::string::npos) && (pos == kind.length() - 8)) {
192 if ((pos > 0) && (kind[pos-1] ==
';')) kind.resize(pos-1);
196 if ((kind.find(
"qt5:") == 0) || (kind.find(
"qt6:") == 0)) {
202 while ((kind.length() > 0) && (kind[kind.length()-1] ==
' '))
203 kind.resize(kind.length()-1);
209 kind =
gROOT->GetWebDisplay().Data();
213 else if (kind ==
"native")
215 else if (kind.empty() || (kind ==
"on"))
217 else if ((kind ==
"dflt") || (kind ==
"default") || (kind ==
"browser"))
219 else if (kind ==
"firefox")
221 else if ((kind ==
"chrome") || (kind ==
"chromium"))
224 else if ((kind ==
"edge") || (kind ==
"msedge"))
227 else if ((kind ==
"cef") || (kind ==
"cef3"))
229 else if ((kind ==
"qt") || (kind ==
"qt5"))
231 else if (kind ==
"qt6")
233 else if ((kind ==
"embed") || (kind ==
"embedded"))
235 else if (kind ==
"server")
237 else if (kind ==
"off")
252 case kEdge:
return "edge";
255 case kCEF:
return "cef";
256 case kQt5:
return "qt5";
257 case kQt6:
return "qt6";
258 case kLocal:
return "local";
262 case kOff:
return "off";
263 case kOn:
return "on";
265 auto pos =
fExec.find(
" ");
266 return (pos == std::string::npos) ?
fExec :
fExec.substr(0,pos);
289 if (opt.empty())
return;
304 if (url.empty() || urlopt.empty())
return url;
306 auto rpos = url.find(
"#");
307 if (rpos == std::string::npos) rpos = url.length();
309 if (url.find(
"?") != std::string::npos)
310 url.insert(rpos,
"&");
312 url.insert(rpos,
"?");
313 url.insert(rpos+1, urlopt);
338 if ((
fExec ==
"safari") || (
fExec ==
"Safari"))
339 return "open -a Safari";
355 std::string where = (qtversion >= 0x60000) ?
"qt6" :
"qt5";
358 where.append(std::to_string((uintptr_t) qparent));
360 if (!urlopt.empty()) {
362 where.append(urlopt);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
A log configuration for a channel, e.g.
Holds different arguments for starting browser with RWebDisplayHandle::Display() method.
std::string GetBrowserName() const
Returns configured browser name.
virtual ~RWebDisplayArgs()
Destructor.
EBrowserKind GetBrowserKind() const
returns configured browser kind, see EBrowserKind for supported values
RWebDisplayArgs & SetUrlOpt(const std::string &opt)
set window url options
bool SetPosAsStr(const std::string &str)
Set position of web browser window as string like "100,100".
std::string fExec
! string to run browser, used with kCustom type
RWebDisplayArgs & SetSize(int w, int h)
set preferable web window width and height
std::string fUrlOpt
! extra URL options, which are append to window URL
const std::string & GetUrl() const
returns window url
void SetCustomExec(const std::string &exec)
set custom executable to start web browser
void SetMasterWindow(std::shared_ptr< RWebWindow > master, unsigned connid=0, int channel=-1)
Assign window, connection and channel id where other window will be embed.
void AppendUrlOpt(const std::string &opt)
append extra url options, add "&" as separator if required
std::string GetFullUrl() const
returns window url with append options
RWebDisplayArgs & SetBrowserKind(const std::string &kind)
Set browser kind as string argument.
std::string GetCustomExec() const
returns custom executable to start web browser
unsigned fMasterConnection
! used master connection
static std::string GetQt5EmbedQualifier(const void *qparent, const std::string &urlopt="", unsigned qtversion=0x50000)
Returns string which can be used as argument in RWebWindow::Show() method to display web window in pr...
RWebDisplayArgs & SetPos(int x=-1, int y=-1)
set preferable web window x and y position, negative is default
int fMasterChannel
! used master channel
void SetDriverData(void *data)
[internal] set web-driver data, used to start window
std::shared_ptr< RWebWindow > fMaster
! master window
const std::string & GetUrlOpt() const
returns window url options
bool SetSizeAsStr(const std::string &str)
Set size of web browser window as string like "800x600".
@ kOn
web display enable, first try use embed displays like Qt or CEF, then native browsers and at the end ...
@ kDefault
default system web browser, can not be used in batch mode
@ kFirefox
Mozilla Firefox browser.
@ kNative
either Chrome or Firefox - both support major functionality
@ kLocal
either CEF or Qt5 - both runs on local display without real http server
@ kServer
indicates that ROOT runs as server and just printouts window URL, browser should be started by the us...
@ kOff
disable web display, do not start any browser
@ kEmbedded
window will be embedded into other, no extra browser need to be started
@ kCEF
Chromium Embedded Framework - local display with CEF libs.
@ kQt5
Qt5 QWebEngine libraries - Chromium code packed in qt5.
@ kQt6
Qt6 QWebEngine libraries - Chromium code packed in qt6.
@ kCustom
custom web browser, execution string should be provided
@ kChrome
Google Chrome browser.
@ kEdge
Microsoft Edge browser (Windows only)
void SetHeadless(bool on=true)
set headless mode
RWebDisplayArgs()
Default constructor.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
ROOT::Experimental::RLogChannel & WebGUILog()
Log channel for WebGUI diagnostics.