#ifndef GledCore_Gled_H
#define GledCore_Gled_H
#include <Gled/GledTypes.h>
#include <Gled/GMutex.h>
class Saturn;
class SaturnInfo;
class EyeInfo;
class ShellInfo;
class Forest;
class Mountain;
class Eye;
class GCondition;
class GThread;
class Fl_SWM_Manager;
class Fl_Window;
class Fl_Tile;
class Fl_Browser;
class TRint;
class TCanvas;
class Gled
{
protected:
void next_arg_or_die(lStr_t& args, lStr_i& i);
TString mCmdName;
lStr_t mArgs;
SaturnInfo* mSaturnInfo;
Saturn* mSaturn;
Bool_t bIsSun;
Bool_t bQuit;
Bool_t bShowSplash;
Bool_t bPreExec;
TString mPreExecString;
Bool_t bAutoSpawn;
Bool_t bAllowMoons;
Bool_t bRintRunning;
TRint *mRint;
GMutex mLoggingMutex;
TString mLogFileName;
FILE* mLogFile;
TString mOutFileName;
FILE* mOutFile;
TString mLibDir;
TString mDataDir;
TString mHomeDir;
TString mAuthDir;
TString mDefEyeIdentity;
TString mRenderers;
GCondition* mExitCondVar;
GThread* mRintThread;
GThread* mExitThread;
public:
Gled();
void AddArgument(const char* arg);
void ReadArguments(int argc, char **argv);
virtual void ParseArguments();
virtual void InitLogging();
virtual void InitGledCore();
virtual void ProcessCmdLineMacros();
virtual void StopLogging();
virtual ~Gled();
void SetExitCondVar(GCondition* cond) { mExitCondVar = cond; }
void PreExec();
void SpawnSunOrSaturn();
void SpawnSun();
void SpawnSaturn();
void CheckAuthDir();
const char* PubKeyFile(TString& id);
const char* PrivKeyFile(TString& id);
const char* GetPubKeyFile(TString& id, Bool_t use_exc=true);
const char* GetPrivKeyFile(TString& id, Bool_t use_exc=true);
Bool_t IsIdentityInGroup(const char* id, const char* group);
void WaitUntillQueensLoaded();
void AllowMoonConnections();
virtual void Run() {}
void Exit();
static void* Exit_tl(void*);
virtual void ExitVirtual();
virtual Int_t LoadLibSet(const Text_t* lib_set);
virtual Int_t LoadLibSet(LID_t lid);
virtual void SetDebugLevel(Int_t d=0);
virtual void output(const char* s);
virtual void message(const char* s);
virtual void warning(const char* s);
virtual void error(const char* s);
virtual Bool_t HasGUILibs() const { return false; }
virtual EyeInfo* SpawnEye(const char* libset, const char* eyector);
virtual EyeInfo* SpawnEye(EyeInfo* ei, ZGlass* ud,
const char* libset, const char* eyector)
{ return 0; }
virtual TCanvas*
NewCanvas(const Text_t* name ="Gled Canvas",
const Text_t* title="Default Gled Canvas",
int w=640, int h=480, int npx=1, int npy=1)
{ return 0; }
static void AssertLibSet(const Text_t* lib_set);
static void AssertMacro(const Text_t* mac);
static void Macro(const Text_t* mac);
static void LoadMacro(const Text_t* mac);
GThread* SpawnTRintThread(const TString& name_prefix);
static void* TRint_runner_tl(void*);
static void TRint_cleanup_tl(void*);
virtual void LockFltk() {}
virtual void UnlockFltk() {}
static Gled* theOne;
#include "Gled.h7"
ClassDef(Gled, 0);
};
extern Gled* gGled;
#endif