ROOT logo
#ifndef __TGMrbProfile_h__
#define __TGMrbProfile_h__

//_________________________________________________[C++ CLASS DEFINITION FILE]
//////////////////////////////////////////////////////////////////////////////
// Name:           gutils/inc/TGMrbProfile.h
// Purpose:        Define utilities to be used with the MARaBOU GUI
// Description:    Graphic utilities for the MARaBOU GUI.
// Author:         R. Lutter
// Revision:       $Id: TGMrbProfile.h,v 1.2 2007-07-30 12:25:32 Rudolf.Lutter Exp $       
// Date:           
// Keywords:
//////////////////////////////////////////////////////////////////////////////

#include "Rtypes.h"
#include "GuiTypes.h"

#include "TGClient.h"
#include "TGGC.h"
#include "TGLayout.h"
#include "TGFont.h"
#include "TSystem.h"
#include "TObjArray.h"
#include "TEnv.h"

#include "TMrbNamedX.h"
#include "TMrbLofNamedX.h"

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TGMrbGC
// Purpose:        A wrapper around TGGC object
// Description:    Handles graphics contexts.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TGMrbGC : public TObject {

	public:
		enum EGMrbButtonType		{	kGMrbTextButton 			= BIT(0),
										kGMrbRadioButton			= BIT(1),
										kGMrbCheckButton			= BIT(2),
										kGMrbPictureButton			= BIT(3)
									};

		enum EGMrbButtonFrameType 	{	kGMrbButtonList 			= BIT(4),
										kGMrbButtonGroup			= BIT(5),
										kGMrbButtonExpand			= BIT(6)
									};

		enum EGMrbGCType			{	kGMrbGCFrame				= BIT(7),
										kGMrbGCLabel				= BIT(8),
										kGMrbGCButton				= BIT(9),
										kGMrbGCEntry				= BIT(10),
										kGMrbGCTextButton			= kGMrbGCButton | kGMrbTextButton,
										kGMrbGCRadioButton			= kGMrbGCButton | kGMrbRadioButton,
										kGMrbGCCheckButton			= kGMrbGCButton | kGMrbCheckButton,
										kGMrbGCPictureButton		= kGMrbGCButton | kGMrbPictureButton,
										kGMrbGCTextEntry			= kGMrbGCEntry | (kGMrbPictureButton << 1),
										kGMrbGCLBEntry				= kGMrbGCEntry | (kGMrbPictureButton << 2)
							};

	public:
		TGMrbGC(const Char_t * Font = "Gui.NormalFont",
					const Char_t * Foreground = "Gui.Foreground",
					const Char_t * Background = "Gui.Background",
					UInt_t Options = 0);

		TGMrbGC(const Char_t * Font, Pixel_t Foreground, Pixel_t Background, UInt_t Options = 0);

		TGMrbGC(TGMrbGC::EGMrbGCType Type, UInt_t Options = 0);

		~TGMrbGC() {};						// dtor

		inline TGGC * GCAddr() const { return(fGC); };
		inline GContext_t GC() const { return(fGC->GetGC()); };

		Bool_t SetFont(const Char_t * Font);
		inline TGFont * Font() const { return(fFont); };
		inline const Char_t * GetFontName() { return(fFontName.Data()); };

		Bool_t SetFG(const Char_t * Foreground);
		inline void SetFG(Pixel_t Foreground) { fForeground = Foreground; };
		inline Pixel_t FG() const { return(fForeground); };
		inline const Char_t * GetForegroundName() { return(fForegroundName.Data()); };

		Bool_t SetBG(const Char_t * Background);
		inline void SetBG(Pixel_t Background) { fBackground = Background; };
		inline Pixel_t BG() const { return(fBackground); };
		inline const Char_t * GetBackgroundName() { return(fBackgroundName.Data()); };

		inline void SetOptions(UInt_t Options) { fOptions = Options; };
		inline UInt_t GetOptions() { return(fOptions); };

		inline void Help() const { gSystem->Exec("kdehelp /usr/local/Marabou/doc/html/TGMrbGC.html&"); };

	protected:
		TGGC * fGC;
		TString fFontName;
		TString fForegroundName;
		TString fBackgroundName;
		TGFont * fFont;
		Pixel_t fForeground;
		Pixel_t fBackground;
		UInt_t fOptions;

	ClassDef(TGMrbGC, 0)		// [GraphUtils] Graphics context (colors, fonts)
};

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TGMrbProfile
// Purpose:        Graphics profile
// Description:    Handles a list of TGMrbGC objects
//                 together with global graphics options.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TGMrbProfile : public TNamed {

	public:
		TGMrbProfile(const Char_t * Name, const Char_t * Title, TEnv * Env = NULL);

		~TGMrbProfile() {};						// dtor

		Bool_t SetGC(TGMrbGC::EGMrbGCType Type, TGMrbGC * GC);
		Bool_t SetGC(TGMrbGC::EGMrbGCType Type,	const Char_t * Font = "Gui.NormalFont",
										const Char_t * Foreground = "Gui.Foreground",
										const Char_t * Background = "Gui.Background");
		Bool_t SetGC(TGMrbGC::EGMrbGCType Type, const Char_t * Font, Pixel_t Foreground, Pixel_t Background);

		TGMrbGC * GetGC(TGMrbGC::EGMrbGCType Type);

		void SetOptions(TGMrbGC::EGMrbGCType Type, UInt_t Options);
		void SetOptions(const Char_t * Type, UInt_t Options);
		UInt_t GetOptions(TGMrbGC::EGMrbGCType Type);
		UInt_t GetOptions(const Char_t * Type);

		inline UInt_t GetFrameOptions() {
				return(((TGMrbGC *) ((TMrbNamedX *) fLofGCs[TGMrbGC::kGMrbGCFrame])->GetAssignedObject())->GetOptions());
		};

		void Print(Option_t * Option) const { TObject::Print(Option); };
		void Print(ostream & Out, const Char_t * Type = NULL) const;
		inline void Print() const { Print(cout); };

	protected:
		TGMrbGC * AddGC(TMrbNamedX * GCSpecs, TEnv * Env = NULL, TGMrbGC * DefaultGC = NULL);

	protected:
		TMrbLofNamedX fLofGCs;			// graphics contexts

	ClassDef(TGMrbProfile, 0)		// [GraphUtils] A graphics profile: a set of graphics contexts and options
};

//______________________________________________________[C++ CLASS DEFINITION]
//////////////////////////////////////////////////////////////////////////////
// Name:           TGMrbLofProfiles
// Purpose:        A list of graphics profiles
// Description:    Handles a list of graphics profiles.
// Keywords:
//////////////////////////////////////////////////////////////////////////////

class TGMrbLofProfiles : public TMrbLofNamedX {

	public:
		TGMrbLofProfiles(const Char_t * Name = "LofGraphProfiles", const Char_t * Title = "");

		~TGMrbLofProfiles() {};						// dtor

		TGMrbProfile * AddProfile(const Char_t * Name, const Char_t * Title);
		TGMrbProfile * FindProfile(const Char_t * Name, Bool_t FallBack = kFALSE);

		TGMrbProfile * SetDefault(const Char_t * DefaultProfile = "standard");
		inline TGMrbProfile * GetDefault() { return(fDefault); };

		void Print(Option_t * Option) const { TObject::Print(Option); };
		void Print(ostream & Out, const Char_t * ProfileName = NULL) const;
		inline void Print() const { Print(cout); };

	protected:

		TString fRcFile;			// where graph envs are defined
		TEnv * fEnv;				// ptr to environment data
		TGMrbProfile * fDefault;	// default profile

	ClassDef(TGMrbLofProfiles, 0)		// [GraphUtils] A list of graphics profiles
};
#endif
 TGMrbProfile.h:1
 TGMrbProfile.h:2
 TGMrbProfile.h:3
 TGMrbProfile.h:4
 TGMrbProfile.h:5
 TGMrbProfile.h:6
 TGMrbProfile.h:7
 TGMrbProfile.h:8
 TGMrbProfile.h:9
 TGMrbProfile.h:10
 TGMrbProfile.h:11
 TGMrbProfile.h:12
 TGMrbProfile.h:13
 TGMrbProfile.h:14
 TGMrbProfile.h:15
 TGMrbProfile.h:16
 TGMrbProfile.h:17
 TGMrbProfile.h:18
 TGMrbProfile.h:19
 TGMrbProfile.h:20
 TGMrbProfile.h:21
 TGMrbProfile.h:22
 TGMrbProfile.h:23
 TGMrbProfile.h:24
 TGMrbProfile.h:25
 TGMrbProfile.h:26
 TGMrbProfile.h:27
 TGMrbProfile.h:28
 TGMrbProfile.h:29
 TGMrbProfile.h:30
 TGMrbProfile.h:31
 TGMrbProfile.h:32
 TGMrbProfile.h:33
 TGMrbProfile.h:34
 TGMrbProfile.h:35
 TGMrbProfile.h:36
 TGMrbProfile.h:37
 TGMrbProfile.h:38
 TGMrbProfile.h:39
 TGMrbProfile.h:40
 TGMrbProfile.h:41
 TGMrbProfile.h:42
 TGMrbProfile.h:43
 TGMrbProfile.h:44
 TGMrbProfile.h:45
 TGMrbProfile.h:46
 TGMrbProfile.h:47
 TGMrbProfile.h:48
 TGMrbProfile.h:49
 TGMrbProfile.h:50
 TGMrbProfile.h:51
 TGMrbProfile.h:52
 TGMrbProfile.h:53
 TGMrbProfile.h:54
 TGMrbProfile.h:55
 TGMrbProfile.h:56
 TGMrbProfile.h:57
 TGMrbProfile.h:58
 TGMrbProfile.h:59
 TGMrbProfile.h:60
 TGMrbProfile.h:61
 TGMrbProfile.h:62
 TGMrbProfile.h:63
 TGMrbProfile.h:64
 TGMrbProfile.h:65
 TGMrbProfile.h:66
 TGMrbProfile.h:67
 TGMrbProfile.h:68
 TGMrbProfile.h:69
 TGMrbProfile.h:70
 TGMrbProfile.h:71
 TGMrbProfile.h:72
 TGMrbProfile.h:73
 TGMrbProfile.h:74
 TGMrbProfile.h:75
 TGMrbProfile.h:76
 TGMrbProfile.h:77
 TGMrbProfile.h:78
 TGMrbProfile.h:79
 TGMrbProfile.h:80
 TGMrbProfile.h:81
 TGMrbProfile.h:82
 TGMrbProfile.h:83
 TGMrbProfile.h:84
 TGMrbProfile.h:85
 TGMrbProfile.h:86
 TGMrbProfile.h:87
 TGMrbProfile.h:88
 TGMrbProfile.h:89
 TGMrbProfile.h:90
 TGMrbProfile.h:91
 TGMrbProfile.h:92
 TGMrbProfile.h:93
 TGMrbProfile.h:94
 TGMrbProfile.h:95
 TGMrbProfile.h:96
 TGMrbProfile.h:97
 TGMrbProfile.h:98
 TGMrbProfile.h:99
 TGMrbProfile.h:100
 TGMrbProfile.h:101
 TGMrbProfile.h:102
 TGMrbProfile.h:103
 TGMrbProfile.h:104
 TGMrbProfile.h:105
 TGMrbProfile.h:106
 TGMrbProfile.h:107
 TGMrbProfile.h:108
 TGMrbProfile.h:109
 TGMrbProfile.h:110
 TGMrbProfile.h:111
 TGMrbProfile.h:112
 TGMrbProfile.h:113
 TGMrbProfile.h:114
 TGMrbProfile.h:115
 TGMrbProfile.h:116
 TGMrbProfile.h:117
 TGMrbProfile.h:118
 TGMrbProfile.h:119
 TGMrbProfile.h:120
 TGMrbProfile.h:121
 TGMrbProfile.h:122
 TGMrbProfile.h:123
 TGMrbProfile.h:124
 TGMrbProfile.h:125
 TGMrbProfile.h:126
 TGMrbProfile.h:127
 TGMrbProfile.h:128
 TGMrbProfile.h:129
 TGMrbProfile.h:130
 TGMrbProfile.h:131
 TGMrbProfile.h:132
 TGMrbProfile.h:133
 TGMrbProfile.h:134
 TGMrbProfile.h:135
 TGMrbProfile.h:136
 TGMrbProfile.h:137
 TGMrbProfile.h:138
 TGMrbProfile.h:139
 TGMrbProfile.h:140
 TGMrbProfile.h:141
 TGMrbProfile.h:142
 TGMrbProfile.h:143
 TGMrbProfile.h:144
 TGMrbProfile.h:145
 TGMrbProfile.h:146
 TGMrbProfile.h:147
 TGMrbProfile.h:148
 TGMrbProfile.h:149
 TGMrbProfile.h:150
 TGMrbProfile.h:151
 TGMrbProfile.h:152
 TGMrbProfile.h:153
 TGMrbProfile.h:154
 TGMrbProfile.h:155
 TGMrbProfile.h:156
 TGMrbProfile.h:157
 TGMrbProfile.h:158
 TGMrbProfile.h:159
 TGMrbProfile.h:160
 TGMrbProfile.h:161
 TGMrbProfile.h:162
 TGMrbProfile.h:163
 TGMrbProfile.h:164
 TGMrbProfile.h:165
 TGMrbProfile.h:166
 TGMrbProfile.h:167
 TGMrbProfile.h:168
 TGMrbProfile.h:169
 TGMrbProfile.h:170
 TGMrbProfile.h:171
 TGMrbProfile.h:172
 TGMrbProfile.h:173
 TGMrbProfile.h:174
 TGMrbProfile.h:175
 TGMrbProfile.h:176
 TGMrbProfile.h:177
 TGMrbProfile.h:178
 TGMrbProfile.h:179
 TGMrbProfile.h:180
 TGMrbProfile.h:181
 TGMrbProfile.h:182
 TGMrbProfile.h:183
 TGMrbProfile.h:184
 TGMrbProfile.h:185
 TGMrbProfile.h:186
 TGMrbProfile.h:187
 TGMrbProfile.h:188
 TGMrbProfile.h:189