Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TRootGuiFactory.cxx
Go to the documentation of this file.
1// @(#)root/gui:$Id$
2// Author: Fons Rademakers 15/01/98
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12
13/** \class TRootGuiFactory
14 \ingroup guiwidgets
15
16This class is a factory for ROOT GUI components. It overrides
17the member functions of the ABS TGuiFactory.
18
19*/
20
21
22#include "TRootGuiFactory.h"
23#include "TRootApplication.h"
24#include "TRootCanvas.h"
25#include "TRootBrowser.h"
26#include "TRootBrowserLite.h"
27#include "TRootContextMenu.h"
28#include "TRootControlBar.h"
29#include "TROOT.h"
30#include "TPluginManager.h"
31#include "TEnv.h"
32
33#include <iostream>
34
36
37////////////////////////////////////////////////////////////////////////////////
38/// TRootGuiFactory ctor.
39
40TRootGuiFactory::TRootGuiFactory(const char *name, const char *title)
41 : TGuiFactory(name, title)
42{
43}
44
45////////////////////////////////////////////////////////////////////////////////
46/// Create a ROOT native GUI version of TApplicationImp
47
49 Int_t *argc, char **argv)
50{
51 TRootApplication *app = new TRootApplication(classname, argc, argv);
52 if (!app->Client()) {
53 delete app;
54 app = nullptr;
55 }
56 return app;
57}
58
59////////////////////////////////////////////////////////////////////////////////////////
60/// Show warning that TWebCanvas will be started by default
61
63{
64 static bool show_warn = true;
65 if (!show_warn || gROOT->IsWebDisplay()) return;
66 show_warn = false;
67
68 std::cout << "\n"
69 "ROOT comes with a web-based canvas, which is now being started. \n"
70 "Revert to the legacy canvas by setting \"Canvas.Name: TRootCanvas\" in rootrc file or\n"
71 "by starting \"root --web=off\".\n"
72 "Find more info on https://root.cern/for_developers/root7/#twebcanvas\n";
73}
74
75////////////////////////////////////////////////////////////////////////////////
76/// Create a ROOT native GUI version of TCanvasImp
77
80{
81 TString canvName = gEnv->GetValue("Canvas.Name", "TRootCanvas");
82
83 if ((canvName == "TWebCanvas") && !gROOT->IsWebDisplay()) {
84 printf("\nWARNING!\n");
85 printf("rootrc parameter \"Canvas.Name\" with web canvas disabled for security reason.\n");
86 printf("See https://root.cern/about/security/#2023-11-26-open-port-for-control-of-web-gui-allows-read-and-write-access-to-file-system for more information.\n");
87 printf("For environments controlling the security issues you can enable web display by calling\n");
88 printf("gROOT->SetWebDisplay(); in ROOT prompt or in startup scripts\n\n");
89
90 canvName = "TRootCanvas";
91 }
92
93 if (canvName == "TWebCanvas") {
94 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
95
96 if (ph && ph->LoadPlugin() != -1) {
98 auto imp = (TCanvasImp *) ph->ExecPlugin(6, c, title, 0, 0, width, height);
99 if (imp) return imp;
100 }
101 }
102
103 return new TRootCanvas(c, title, width, height);
104}
105
106////////////////////////////////////////////////////////////////////////////////
107/// Create a ROOT native GUI version of TCanvasImp
108
111{
112 TString canvName = gEnv->GetValue("Canvas.Name", "TRootCanvas");
113
114 if ((canvName == "TWebCanvas") && !gROOT->IsWebDisplay()) {
115 printf("\nWARNING!\n");
116 printf("rootrc parameter \"Canvas.Name\" with web canvas disabled for security reason.\n");
117 printf("See https://root.cern/about/security/#2023-11-26-open-port-for-control-of-web-gui-allows-read-and-write-access-to-file-system for more information.\n");
118 printf("For environments controlling the security issues you can enable web display by calling\n");
119 printf("gROOT->SetWebDisplay(); in ROOT prompt or in startup scripts\n\n");
120
121 canvName = "TRootCanvas";
122 }
123
124 if (canvName == "TWebCanvas") {
125 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
126
127 if (ph && ph->LoadPlugin() != -1) {
129 auto imp = (TCanvasImp *) ph->ExecPlugin(6, c, title, x, y, width, height);
130 if (imp) return imp;
131 }
132 }
133
134 return new TRootCanvas(c, title, x, y, width, height);
135}
136
137////////////////////////////////////////////////////////////////////////////////
138/// Create a ROOT native GUI version of TBrowserImp
139
142 Option_t *opt)
143{
144 TString browserVersion(gEnv->GetValue("Browser.Name", "TRootBrowserLite"));
145
146 if ((browserVersion == "ROOT::RWebBrowserImp") && !gROOT->IsWebDisplay()) {
147 printf("\nWARNING!\n");
148 printf("rootrc parameter \"Browser.Name\" with web browser disabled for security reasons.\n");
149 printf("See https://root.cern/about/security/#2023-11-26-open-port-for-control-of-web-gui-allows-read-and-write-access-to-file-system for more information.\n");
150 printf("For environments controlling the security issues you can enable web display by calling\n");
151 printf("gROOT->SetWebDisplay(); in ROOT prompt or in startup scripts\n\n");
152
153 browserVersion = "TRootBrowser";
154 }
155
156 TPluginHandler *ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp",
157 browserVersion);
158 TString browserOptions(gEnv->GetValue("Browser.Options", "FECI"));
159 if (opt && strlen(opt))
160 browserOptions = opt;
161 browserOptions.ToUpper();
162 if (browserOptions.Contains("LITE"))
163 return new TRootBrowserLite(b, title, width, height);
164 if (ph && ph->LoadPlugin() != -1) {
165 TBrowserImp *imp = (TBrowserImp *)ph->ExecPlugin(5, b, title, width,
166 height, browserOptions.Data());
167 if (imp) return imp;
168 }
169 if (browserVersion.Contains("Lite", TString::kIgnoreCase))
170 return new TRootBrowserLite(b, title, width, height);
171 else
172 return new TRootBrowser(b, title, width, height, browserOptions.Data());
173}
174
175////////////////////////////////////////////////////////////////////////////////
176/// Create a ROOT native GUI version of TBrowserImp
177
180 UInt_t height, Option_t *opt)
181{
182 TString browserVersion(gEnv->GetValue("Browser.Name", "TRootBrowserLite"));
183
184 if ((browserVersion == "ROOT::RWebBrowserImp") && !gROOT->IsWebDisplay()) {
185 printf("\nWARNING!\n");
186 printf("rootrc parameter \"Browser.Name\" with web browser disabled for security reasons.\n");
187 printf("See https://root.cern/about/security/#2023-11-26-open-port-for-control-of-web-gui-allows-read-and-write-access-to-file-system for more information.\n");
188 printf("For environments controlling the security issues you can enable web display by calling\n");
189 printf("gROOT->SetWebDisplay(); in ROOT prompt or in startup scripts\n\n");
190
191 browserVersion = "TRootBrowser";
192 }
193
194 TPluginHandler *ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp",
195 browserVersion);
196 TString browserOptions(gEnv->GetValue("Browser.Options", "FECI"));
197 if (opt && strlen(opt))
198 browserOptions = opt;
199 browserOptions.ToUpper();
200 if (browserOptions.Contains("LITE"))
201 return new TRootBrowserLite(b, title, width, height);
202 if (ph && ph->LoadPlugin() != -1) {
203 TBrowserImp *imp = (TBrowserImp *)ph->ExecPlugin(7, b, title, x, y, width,
204 height, browserOptions.Data());
205 if (imp) return imp;
206 }
207 if (browserVersion.Contains("Lite", TString::kIgnoreCase))
208 return new TRootBrowserLite(b, title, x, y, width, height);
209 else
210 return new TRootBrowser(b, title, x, y, width, height, browserOptions.Data());
211}
212
213////////////////////////////////////////////////////////////////////////////////
214/// Create a ROOT native GUI version of TContextMenuImp
215
217 const char *name, const char *)
218{
219 return new TRootContextMenu(c, name);
220}
221
222////////////////////////////////////////////////////////////////////////////////
223/// Create a ROOT native GUI version of TControlBarImp
224
226{
227 if (gROOT->IsWebDisplay())
228 return TGuiFactory::CreateControlBarImp(c, title);
229
230 return new TRootControlBar(c, title);
231}
232
233////////////////////////////////////////////////////////////////////////////////
234/// Create a ROOT native GUI version of TControlBarImp
235
237 Int_t x, Int_t y)
238{
239 if (gROOT->IsWebDisplay())
240 return TGuiFactory::CreateControlBarImp(c, title, x, y);
241
242 return new TRootControlBar(c, title, x, y);
243}
#define b(i)
Definition RSha256.hxx:100
#define c(i)
Definition RSha256.hxx:101
const char Option_t
Definition RtypesCore.h:66
#define ClassImp(name)
Definition Rtypes.h:377
R__EXTERN TEnv * gEnv
Definition TEnv.h:170
Option_t Option_t width
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
char name[80]
Definition TGX11.cxx:110
#define gROOT
Definition TROOT.h:407
ABC describing GUI independent application implementation protocol.
ABC describing GUI independent browser implementation protocol.
Definition TBrowserImp.h:29
Using a TBrowser one can browse all ROOT objects.
Definition TBrowser.h:37
ABC describing GUI independent main window (with menubar, scrollbars and a drawing area).
Definition TCanvasImp.h:30
The Canvas class.
Definition TCanvas.h:23
This class provides an interface to GUI independent context sensitive popup menus.
This class provides an interface to context sensitive popup menus.
ABC describing GUI independent control bar.
A Control Bar is a fully user configurable tool which provides fast access to frequently used operati...
Definition TControlBar.h:26
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
Definition TEnv.cxx:491
This ABC is a factory for GUI components.
Definition TGuiFactory.h:42
virtual TControlBarImp * CreateControlBarImp(TControlBar *c, const char *title)
Create a batch version of TControlBarImp.
Longptr_t ExecPlugin(int nargs)
Int_t LoadPlugin()
Load the plugin library for this handler.
This class create the ROOT native GUI version of the ROOT application environment.
TGClient * Client() const
This class creates a ROOT object browser (looking like Windows Explorer).
This class creates a ROOT object browser, constituted by three main tabs.
This class creates a main window with menubar, scrollbars and a drawing area.
Definition TRootCanvas.h:34
This class provides an interface to context sensitive popup menus.
This class provides an interface to the GUI dependent functions of the TControlBar class.
This class is a factory for ROOT GUI components.
TCanvasImp * CreateCanvasImp(TCanvas *c, const char *title, UInt_t width, UInt_t height) override
Create a ROOT native GUI version of TCanvasImp.
void ShowWebCanvasWarning()
Show warning that TWebCanvas will be started by default.
TControlBarImp * CreateControlBarImp(TControlBar *c, const char *title) override
Create a ROOT native GUI version of TControlBarImp.
TRootGuiFactory(const char *name="Root", const char *title="ROOT GUI Factory")
TRootGuiFactory ctor.
TApplicationImp * CreateApplicationImp(const char *classname, int *argc, char **argv) override
Create a ROOT native GUI version of TApplicationImp.
TContextMenuImp * CreateContextMenuImp(TContextMenu *c, const char *name, const char *title) override
Create a ROOT native GUI version of TContextMenuImp.
TBrowserImp * CreateBrowserImp(TBrowser *b, const char *title, UInt_t width, UInt_t height, Option_t *opt="") override
Create a ROOT native GUI version of TBrowserImp.
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:380
@ kIgnoreCase
Definition TString.h:279
void ToUpper()
Change string to upper case.
Definition TString.cxx:1183
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Definition TString.h:636
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17