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
34
35////////////////////////////////////////////////////////////////////////////////
36/// TRootGuiFactory ctor.
37
38TRootGuiFactory::TRootGuiFactory(const char *name, const char *title)
39 : TGuiFactory(name, title)
40{
41}
42
43////////////////////////////////////////////////////////////////////////////////
44/// Create a ROOT native GUI version of TApplicationImp
45
47 Int_t *argc, char **argv)
48{
49 TRootApplication *app = new TRootApplication(classname, argc, argv);
50 if (!app->Client()) {
51 delete app;
52 app = 0;
53 }
54 return app;
55}
56
57////////////////////////////////////////////////////////////////////////////////
58/// Create a ROOT native GUI version of TCanvasImp
59
62{
63 return new TRootCanvas(c, title, width, height);
64}
65
66////////////////////////////////////////////////////////////////////////////////
67/// Create a ROOT native GUI version of TCanvasImp
68
71{
72 return new TRootCanvas(c, title, x, y, width, height);
73}
74
75////////////////////////////////////////////////////////////////////////////////
76/// Create a ROOT native GUI version of TBrowserImp
77
80 Option_t *opt)
81{
82 TString browserVersion(gEnv->GetValue("Browser.Name", "TRootBrowserLite"));
83
84 if ((browserVersion == "ROOT::Experimental::RWebBrowserImp") && !gROOT->IsWebDisplay()) {
85 printf("\nWARNING!\n");
86 printf("rootrc parameter \"Browser.Name\" with web browser disabled for security reasons.\n");
87 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");
88 printf("For environments controlling the security issues you can enable web display by calling\n");
89 printf("gROOT->SetWebDisplay(); in ROOT prompt or in startup scripts\n\n");
90
91 browserVersion = "TRootBrowser";
92 }
93
94 TPluginHandler *ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp",
95 browserVersion);
96 TString browserOptions(gEnv->GetValue("Browser.Options", "FECI"));
97 if (opt && strlen(opt))
98 browserOptions = opt;
99 browserOptions.ToUpper();
100 if (browserOptions.Contains("LITE"))
101 return new TRootBrowserLite(b, title, width, height);
102 if (ph && ph->LoadPlugin() != -1) {
103 TBrowserImp *imp = (TBrowserImp *)ph->ExecPlugin(5, b, title, width,
104 height, browserOptions.Data());
105 if (imp) return imp;
106 }
107 if (browserVersion.Contains("Lite", TString::kIgnoreCase))
108 return new TRootBrowserLite(b, title, width, height);
109 else
110 return new TRootBrowser(b, title, width, height, browserOptions.Data());
111}
112
113////////////////////////////////////////////////////////////////////////////////
114/// Create a ROOT native GUI version of TBrowserImp
115
118 UInt_t height, Option_t *opt)
119{
120 TString browserVersion(gEnv->GetValue("Browser.Name", "TRootBrowserLite"));
121
122 if ((browserVersion == "ROOT::Experimental::RWebBrowserImp") && !gROOT->IsWebDisplay()) {
123 printf("\nWARNING!\n");
124 printf("rootrc parameter \"Browser.Name\" with web browser disabled for security reasons.\n");
125 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");
126 printf("For environments controlling the security issues you can enable web display by calling\n");
127 printf("gROOT->SetWebDisplay(); in ROOT prompt or in startup scripts\n\n");
128
129 browserVersion = "TRootBrowser";
130 }
131
132 TPluginHandler *ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp",
133 browserVersion);
134 TString browserOptions(gEnv->GetValue("Browser.Options", "FECI"));
135 if (opt && strlen(opt))
136 browserOptions = opt;
137 browserOptions.ToUpper();
138 if (browserOptions.Contains("LITE"))
139 return new TRootBrowserLite(b, title, width, height);
140 if (ph && ph->LoadPlugin() != -1) {
141 TBrowserImp *imp = (TBrowserImp *)ph->ExecPlugin(7, b, title, x, y, width,
142 height, browserOptions.Data());
143 if (imp) return imp;
144 }
145 if (browserVersion.Contains("Lite", TString::kIgnoreCase))
146 return new TRootBrowserLite(b, title, x, y, width, height);
147 else
148 return new TRootBrowser(b, title, x, y, width, height, browserOptions.Data());
149}
150
151////////////////////////////////////////////////////////////////////////////////
152/// Create a ROOT native GUI version of TContextMenuImp
153
155 const char *name, const char *)
156{
157 return new TRootContextMenu(c, name);
158}
159
160////////////////////////////////////////////////////////////////////////////////
161/// Create a ROOT native GUI version of TControlBarImp
162
164{
165 return new TRootControlBar(c, title);
166}
167
168////////////////////////////////////////////////////////////////////////////////
169/// Create a ROOT native GUI version of TControlBarImp
170
172 Int_t x, Int_t y)
173{
174 return new TRootControlBar(c, title, x, y);
175}
#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:405
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
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.
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