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 if (canvName == "TWebCanvas") {
83 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
84
85 if (ph && ph->LoadPlugin() != -1) {
87 auto imp = (TCanvasImp *) ph->ExecPlugin(6, c, title, 0, 0, width, height);
88 if (imp) return imp;
89 }
90 }
91
92 return new TRootCanvas(c, title, width, height);
93}
94
95////////////////////////////////////////////////////////////////////////////////
96/// Create a ROOT native GUI version of TCanvasImp
97
100{
101 TString canvName = gEnv->GetValue("Canvas.Name", "TRootCanvas");
102 if (canvName == "TWebCanvas") {
103 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
104
105 if (ph && ph->LoadPlugin() != -1) {
107 auto imp = (TCanvasImp *) ph->ExecPlugin(6, c, title, x, y, width, height);
108 if (imp) return imp;
109 }
110 }
111
112 return new TRootCanvas(c, title, x, y, width, height);
113}
114
115////////////////////////////////////////////////////////////////////////////////
116/// Create a ROOT native GUI version of TBrowserImp
117
120 Option_t *opt)
121{
122 TString browserVersion(gEnv->GetValue("Browser.Name", "TRootBrowserLite"));
123 TPluginHandler *ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp",
124 browserVersion);
125 TString browserOptions(gEnv->GetValue("Browser.Options", "FECI"));
126 if (opt && strlen(opt))
127 browserOptions = opt;
128 browserOptions.ToUpper();
129 if (browserOptions.Contains("LITE"))
130 return new TRootBrowserLite(b, title, width, height);
131 if (ph && ph->LoadPlugin() != -1) {
132 TBrowserImp *imp = (TBrowserImp *)ph->ExecPlugin(5, b, title, width,
133 height, browserOptions.Data());
134 if (imp) return imp;
135 }
136 if (browserVersion.Contains("Lite", TString::kIgnoreCase))
137 return new TRootBrowserLite(b, title, width, height);
138 else
139 return new TRootBrowser(b, title, width, height, browserOptions.Data());
140}
141
142////////////////////////////////////////////////////////////////////////////////
143/// Create a ROOT native GUI version of TBrowserImp
144
147 UInt_t height, Option_t *opt)
148{
149 TString browserVersion(gEnv->GetValue("Browser.Name", "TRootBrowserLite"));
150 TPluginHandler *ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp",
151 browserVersion);
152 TString browserOptions(gEnv->GetValue("Browser.Options", "FECI"));
153 if (opt && strlen(opt))
154 browserOptions = opt;
155 browserOptions.ToUpper();
156 if (browserOptions.Contains("LITE"))
157 return new TRootBrowserLite(b, title, width, height);
158 if (ph && ph->LoadPlugin() != -1) {
159 TBrowserImp *imp = (TBrowserImp *)ph->ExecPlugin(7, b, title, x, y, width,
160 height, browserOptions.Data());
161 if (imp) return imp;
162 }
163 if (browserVersion.Contains("Lite", TString::kIgnoreCase))
164 return new TRootBrowserLite(b, title, x, y, width, height);
165 else
166 return new TRootBrowser(b, title, x, y, width, height, browserOptions.Data());
167}
168
169////////////////////////////////////////////////////////////////////////////////
170/// Create a ROOT native GUI version of TContextMenuImp
171
173 const char *name, const char *)
174{
175 return new TRootContextMenu(c, name);
176}
177
178////////////////////////////////////////////////////////////////////////////////
179/// Create a ROOT native GUI version of TControlBarImp
180
182{
183 if (gROOT->IsWebDisplay())
184 return TGuiFactory::CreateControlBarImp(c, title);
185
186 return new TRootControlBar(c, title);
187}
188
189////////////////////////////////////////////////////////////////////////////////
190/// Create a ROOT native GUI version of TControlBarImp
191
193 Int_t x, Int_t y)
194{
195 if (gROOT->IsWebDisplay())
196 return TGuiFactory::CreateControlBarImp(c, title, x, y);
197
198 return new TRootControlBar(c, title, x, y);
199}
#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:406
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:376
@ kIgnoreCase
Definition TString.h:277
void ToUpper()
Change string to upper case.
Definition TString.cxx:1195
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Definition TString.h:632
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17