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
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) return imp;
66 }
67 }
68
69 return new TCanvasImp(c, title, width, height);
70}
71
72////////////////////////////////////////////////////////////////////////////////
73/// Create a batch version of TCanvasImp.
74
76{
77 if (gROOT->IsWebDisplay()) {
78 auto ph = gROOT->GetPluginManager()->FindHandler("TCanvasImp", "TWebCanvas");
79
80 if (ph && ph->LoadPlugin() != -1) {
81 auto imp = (TCanvasImp *) ph->ExecPlugin(6, c, title, x, y, width, height);
82 if (imp) return imp;
83 }
84 }
85
86 return new TCanvasImp(c, title, x, y, width, height);
87}
88
89////////////////////////////////////////////////////////////////////////////////
90/// Create a batch version of TBrowserImp.
91
93{
94 const char *browserName = nullptr;
95
96 if (gROOT->IsWebDisplay() && !gROOT->IsWebDisplayBatch())
97 browserName = "ROOT::RWebBrowserImp";
98 else if (!gROOT->IsBatch())
99 browserName = gEnv->GetValue("Browser.Name", "");
100
101 if (browserName && *browserName) {
102 auto ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp", browserName);
103
104 if (ph && ph->LoadPlugin() != -1) {
105 TBrowserImp *imp = (TBrowserImp *)ph->ExecPlugin(5, b, title, width, height, opt);
106 if (imp) return imp;
107 }
108 }
109
110 return new TBrowserImp(b, title, width, height);
111}
112
113////////////////////////////////////////////////////////////////////////////////
114/// Create a batch version of TBrowserImp.
115
117{
118 const char *browserName = nullptr;
119
120 if (gROOT->IsWebDisplay() && !gROOT->IsWebDisplayBatch())
121 browserName = "ROOT::RWebBrowserImp";
122 else if (!gROOT->IsBatch())
123 browserName = gEnv->GetValue("Browser.Name", "");
124
125 if (browserName && *browserName) {
126 auto ph = gROOT->GetPluginManager()->FindHandler("TBrowserImp", browserName);
127
128 if (ph && ph->LoadPlugin() != -1) {
129 TBrowserImp *imp = (TBrowserImp *)ph->ExecPlugin(7, b, title, x, y, width, height, opt);
130 if (imp) return imp;
131 }
132 }
133
134 return new TBrowserImp(b, title, x, y, width, height);
135}
136
137////////////////////////////////////////////////////////////////////////////////
138/// Create a batch version of TContextMenuImp.
139
141{
142 return new TContextMenuImp(c);
143}
144
145////////////////////////////////////////////////////////////////////////////////
146/// Create a batch version of TControlBarImp.
147
149{
150 if (gROOT->IsWebDisplay()) {
151 auto ph = gROOT->GetPluginManager()->FindHandler("TControlBarImp", "TWebControlBar");
152
153 if (ph && ph->LoadPlugin() != -1) {
154 auto imp = (TControlBarImp *) ph->ExecPlugin(4, c, title, 0, 0);
155 if (imp) return imp;
156 }
157 }
158
159 return new TControlBarImp(c, title);
160}
161
162////////////////////////////////////////////////////////////////////////////////
163/// Create a batch version of TControlBarImp.
164
166{
167 if (gROOT->IsWebDisplay()) {
168 auto ph = gROOT->GetPluginManager()->FindHandler("TControlBarImp", "TWebControlBar");
169
170 if (ph && ph->LoadPlugin() != -1) {
171 auto imp = (TControlBarImp *) ph->ExecPlugin(4, c, title, x, y);
172 if (imp) return imp;
173 }
174 }
175
176 return new TControlBarImp(c, title, x, y);
177}
178
179////////////////////////////////////////////////////////////////////////////////
180/// Create a batch version of TInspectorImp.
181
183{
184 if (gROOT->IsBatch())
185 return new TInspectorImp(obj, width, height);
186
187 gROOT->ProcessLine(TString::Format("TInspectCanvas::Inspector((TObject*)0x%zx);", (size_t)obj).Data());
188 return nullptr;
189}
#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
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
virtual Longptr_t ExecPlugin(const char *, const char *, const char *, Int_t, Int_t)
Definition TBrowserImp.h:59
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
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