Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGuiFactory.cxx
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Fons Rademakers 15/11/95
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/** \class TGuiFactory
13\ingroup Base
14
15This ABC is a factory for GUI components. Depending on which
16factory is active one gets either ROOT native (X11 based with Win95
17look and feel), Win32 or Mac components.
18
19In case there is no platform dependent implementation on can run in
20batch mode directly using an instance of this base class.
21*/
22
23#include "TGuiFactory.h"
24#include "TApplicationImp.h"
25#include "TCanvasImp.h"
26#include "TBrowserImp.h"
27#include "TContextMenuImp.h"
28#include "TControlBarImp.h"
29#include "TInspectorImp.h"
30#include "TROOT.h"
31#include "TEnv.h"
32#include "TPluginManager.h"
33
36
37
38////////////////////////////////////////////////////////////////////////////////
39/// TGuiFactory ctor only called by derived classes.
40
41TGuiFactory::TGuiFactory(const char *name, const char *title)
42 : TNamed(name, title)
43{
44}
45
46////////////////////////////////////////////////////////////////////////////////
47/// Create a batch version of TApplicationImp.
48
49TApplicationImp *TGuiFactory::CreateApplicationImp(const char *classname, int *argc, char **argv)
50{
51 return new TApplicationImp(classname, argc, argv);
52}
53
54////////////////////////////////////////////////////////////////////////////////
55/// Create a batch version of TCanvasImp.
56
58{
59 if (gROOT->IsWebDisplay()) {
60 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
61
62 if (ph && ph->LoadPlugin() != -1) {
63 auto imp = (TCanvasImp *)ph->ExecPlugin(6, c, title, 0, 0, width, height);
64 if (imp)
65 return imp;
66 }
67
68 Error("CreateCanvasImp", "Fail to create TWebCanvas, please provide missing libWebGui6 or run 'root --web=off'");
69 }
70
71 return new TCanvasImp(c, title, width, height);
72}
73
74////////////////////////////////////////////////////////////////////////////////
75/// Create a batch version of TCanvasImp.
76
78{
79 if (gROOT->IsWebDisplay()) {
80 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
81
82 if (ph && ph->LoadPlugin() != -1) {
83 auto imp = (TCanvasImp *)ph->ExecPlugin(6, c, title, x, y, width, height);
84 if (imp)
85 return imp;
86 }
87
88 Error("CreateCanvasImp", "Fail to create TWebCanvas, please provide missing libWebGui6 or run 'root --web=off'");
89 }
90
91 return new TCanvasImp(c, title, x, y, width, height);
92}
93
94////////////////////////////////////////////////////////////////////////////////
95/// Create a batch version of TBrowserImp.
96
98{
99 const char *browserName = nullptr;
100
101 if (gROOT->IsWebDisplay() && !gROOT->IsWebDisplayBatch())
102 browserName = "ROOT::RWebBrowserImp";
103 else if (!gROOT->IsBatch())
104 browserName = gEnv->GetValue("Browser.Name", "");
105
106 if (browserName && *browserName) {
107 auto ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp", browserName);
108
109 if (ph && ph->LoadPlugin() != -1) {
110 auto imp = (TBrowserImp *)ph->ExecPlugin(5, b, title, width, height, opt);
111 if (imp)
112 return imp;
113 }
114
115 Error("CreateBrowserImp", "Fail to create %s, please provide missing libraries or run 'root --web=off'",
117 }
118
119 return new TBrowserImp(b, title, width, height);
120}
121
122////////////////////////////////////////////////////////////////////////////////
123/// Create a batch version of TBrowserImp.
124
126{
127 const char *browserName = nullptr;
128
129 if (gROOT->IsWebDisplay() && !gROOT->IsWebDisplayBatch())
130 browserName = "ROOT::RWebBrowserImp";
131 else if (!gROOT->IsBatch())
132 browserName = gEnv->GetValue("Browser.Name", "");
133
134 if (browserName && *browserName) {
135 auto ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp", browserName);
136
137 if (ph && ph->LoadPlugin() != -1) {
138 auto imp = (TBrowserImp *)ph->ExecPlugin(7, b, title, x, y, width, height, opt);
139 if (imp)
140 return imp;
141 }
142
143 Error("CreateBrowserImp", "Fail to create %s, please provide missing libraries or run 'root --web=off'",
145 }
146
147 return new TBrowserImp(b, title, x, y, width, height);
148}
149
150////////////////////////////////////////////////////////////////////////////////
151/// Create a batch version of TContextMenuImp.
152
154{
155 return new TContextMenuImp(c);
156}
157
158////////////////////////////////////////////////////////////////////////////////
159/// Create a batch version of TControlBarImp.
160
162{
163 if (gROOT->IsWebDisplay()) {
164 auto ph = gROOT->GetPluginManager()->FindHandler("TControlBarImp", "TWebControlBar");
165
166 if (ph && ph->LoadPlugin() != -1) {
167 auto imp = (TControlBarImp *)ph->ExecPlugin(4, c, title, 0, 0);
168 if (imp)
169 return imp;
170 }
171
172 Error("CreateControlBarImp",
173 "Fail to create TWebControlBar, please provide missing libWebGui6 or run 'root --web=off'");
174 }
175
176 return new TControlBarImp(c, title);
177}
178
179////////////////////////////////////////////////////////////////////////////////
180/// Create a batch version of TControlBarImp.
181
183{
184 if (gROOT->IsWebDisplay()) {
185 auto ph = gROOT->GetPluginManager()->FindHandler("TControlBarImp", "TWebControlBar");
186
187 if (ph && ph->LoadPlugin() != -1) {
188 auto imp = (TControlBarImp *)ph->ExecPlugin(4, c, title, x, y);
189 if (imp)
190 return imp;
191 }
192
193 Error("CreateControlBarImp",
194 "Fail to create TWebControlBar, please provide missing libWebGui6 or run 'root --web=off'");
195 }
196
197 return new TControlBarImp(c, title, x, y);
198}
199
200////////////////////////////////////////////////////////////////////////////////
201/// Create a batch version of TInspectorImp.
202
204{
205 if (gROOT->IsBatch())
206 return new TInspectorImp(obj, width, height);
207
208 gROOT->ProcessLine(TString::Format("TInspectCanvas::Inspector((TObject*)0x%zx);", (size_t)obj).Data());
209 return nullptr;
210}
#define b(i)
Definition RSha256.hxx:100
#define c(i)
Definition RSha256.hxx:101
const char Option_t
Option string (const char)
Definition RtypesCore.h:80
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
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
TGuiFactory * gGuiFactory
TGuiFactory * gBatchGuiFactory
#define gROOT
Definition TROOT.h:411
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:490
This ABC is a factory for GUI components.
Definition TGuiFactory.h:42
virtual TApplicationImp * CreateApplicationImp(const char *classname, int *argc, char **argv)
Create a batch version of TApplicationImp.
TGuiFactory(const char *name="Batch", const char *title="Batch GUI Factory")
TGuiFactory ctor only called by derived classes.
virtual TContextMenuImp * CreateContextMenuImp(TContextMenu *c, const char *name, const char *title)
Create a batch version of TContextMenuImp.
virtual TInspectorImp * CreateInspectorImp(const TObject *obj, UInt_t width, UInt_t height)
Create a batch version of TInspectorImp.
virtual TBrowserImp * CreateBrowserImp(TBrowser *b, const char *title, UInt_t width, UInt_t height, Option_t *opt="")
Create a batch version of TBrowserImp.
virtual TCanvasImp * CreateCanvasImp(TCanvas *c, const char *title, UInt_t width, UInt_t height)
Create a batch version of TCanvasImp.
virtual TControlBarImp * CreateControlBarImp(TControlBar *c, const char *title)
Create a batch version of TControlBarImp.
ABC describing GUI independent object inspector (abstraction mainly needed for Win32.
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
Mother of all ROOT objects.
Definition TObject.h:41
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition TObject.cxx:1071
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
Definition TString.cxx:2384
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17