Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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
38
39////////////////////////////////////////////////////////////////////////////////
40/// TGuiFactory ctor only called by derived classes.
41
42TGuiFactory::TGuiFactory(const char *name, const char *title)
43 : TNamed(name, title)
44{
45}
46
47////////////////////////////////////////////////////////////////////////////////
48/// Create a batch version of TApplicationImp.
49
50TApplicationImp *TGuiFactory::CreateApplicationImp(const char *classname, int *argc, char **argv)
51{
52 return new TApplicationImp(classname, argc, argv);
53}
54
55////////////////////////////////////////////////////////////////////////////////
56/// Create a batch version of TCanvasImp.
57
59{
60 if (gROOT->IsWebDisplay()) {
61 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
62
63 if (ph && ph->LoadPlugin() != -1) {
64 auto imp = (TCanvasImp *)ph->ExecPlugin(6, c, title, 0, 0, width, height);
65 if (imp)
66 return imp;
67 }
68
69 Error("CreateCanvasImp", "Fail to create TWebCanvas, please provide missing libWebGui6 or run 'root --web=off'");
70 }
71
72 return new TCanvasImp(c, title, width, height);
73}
74
75////////////////////////////////////////////////////////////////////////////////
76/// Create a batch version of TCanvasImp.
77
79{
80 if (gROOT->IsWebDisplay()) {
81 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
82
83 if (ph && ph->LoadPlugin() != -1) {
84 auto imp = (TCanvasImp *)ph->ExecPlugin(6, c, title, x, y, width, height);
85 if (imp)
86 return imp;
87 }
88
89 Error("CreateCanvasImp", "Fail to create TWebCanvas, please provide missing libWebGui6 or run 'root --web=off'");
90 }
91
92 return new TCanvasImp(c, title, x, y, width, height);
93}
94
95////////////////////////////////////////////////////////////////////////////////
96/// Create a batch version of TBrowserImp.
97
99{
100 const char *browserName = nullptr;
101
102 if (gROOT->IsWebDisplay() && !gROOT->IsWebDisplayBatch())
103 browserName = "ROOT::RWebBrowserImp";
104 else if (!gROOT->IsBatch())
105 browserName = gEnv->GetValue("Browser.Name", "");
106
107 if (browserName && *browserName) {
108 auto ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp", browserName);
109
110 if (ph && ph->LoadPlugin() != -1) {
111 auto imp = (TBrowserImp *)ph->ExecPlugin(5, b, title, width, height, opt);
112 if (imp)
113 return imp;
114 }
115
116 Error("CreateBrowserImp", "Fail to create %s, please provide missing libraries or run 'root --web=off'",
118 }
119
120 return new TBrowserImp(b, title, width, height);
121}
122
123////////////////////////////////////////////////////////////////////////////////
124/// Create a batch version of TBrowserImp.
125
127{
128 const char *browserName = nullptr;
129
130 if (gROOT->IsWebDisplay() && !gROOT->IsWebDisplayBatch())
131 browserName = "ROOT::RWebBrowserImp";
132 else if (!gROOT->IsBatch())
133 browserName = gEnv->GetValue("Browser.Name", "");
134
135 if (browserName && *browserName) {
136 auto ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp", browserName);
137
138 if (ph && ph->LoadPlugin() != -1) {
139 auto imp = (TBrowserImp *)ph->ExecPlugin(7, b, title, x, y, width, height, opt);
140 if (imp)
141 return imp;
142 }
143
144 Error("CreateBrowserImp", "Fail to create %s, please provide missing libraries or run 'root --web=off'",
146 }
147
148 return new TBrowserImp(b, title, x, y, width, height);
149}
150
151////////////////////////////////////////////////////////////////////////////////
152/// Create a batch version of TContextMenuImp.
153
155{
156 return new TContextMenuImp(c);
157}
158
159////////////////////////////////////////////////////////////////////////////////
160/// Create a batch version of TControlBarImp.
161
163{
164 if (gROOT->IsWebDisplay()) {
165 auto ph = gROOT->GetPluginManager()->FindHandler("TControlBarImp", "TWebControlBar");
166
167 if (ph && ph->LoadPlugin() != -1) {
168 auto imp = (TControlBarImp *)ph->ExecPlugin(4, c, title, 0, 0);
169 if (imp)
170 return imp;
171 }
172
173 Error("CreateControlBarImp",
174 "Fail to create TWebControlBar, please provide missing libWebGui6 or run 'root --web=off'");
175 }
176
177 return new TControlBarImp(c, title);
178}
179
180////////////////////////////////////////////////////////////////////////////////
181/// Create a batch version of TControlBarImp.
182
184{
185 if (gROOT->IsWebDisplay()) {
186 auto ph = gROOT->GetPluginManager()->FindHandler("TControlBarImp", "TWebControlBar");
187
188 if (ph && ph->LoadPlugin() != -1) {
189 auto imp = (TControlBarImp *)ph->ExecPlugin(4, c, title, x, y);
190 if (imp)
191 return imp;
192 }
193
194 Error("CreateControlBarImp",
195 "Fail to create TWebControlBar, please provide missing libWebGui6 or run 'root --web=off'");
196 }
197
198 return new TControlBarImp(c, title, x, y);
199}
200
201////////////////////////////////////////////////////////////////////////////////
202/// Create a batch version of TInspectorImp.
203
205{
206 if (gROOT->IsBatch())
207 return new TInspectorImp(obj, width, height);
208
209 gROOT->ProcessLine(TString::Format("TInspectCanvas::Inspector((TObject*)0x%zx);", (size_t)obj).Data());
210 return nullptr;
211}
#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:374
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: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 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:2378
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17