// This may look like C code, but it is really -*- C++ -*-

// $Revision: 1.4 $
// $Author: roman $
// $Date: 90/07/20 03:24:47 $

#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Shell.h>

#include "Widget.h"

#ifndef _World_h
#define _World_h 1

class System;

class World : public AWidget {
   friend class System;

 public:

   void Popup() { XtPopup(widget,0); }

   World(char* name, AWidgetClass& wc, AWidget& parent);
   World(char* name, char* className, AWidgetClass& wc, System& sys);

};

class System  {
   friend class World;

   // system resources
   Boolean     debug;
 public:   
   XtResource resources[] = {
      {"debug", "Debug", XtRBoolean, sizeof(Boolean),
       0, XtRString, "true"},
   };

   XrmOptionDescRec options[] = {
      {"-debug", "debug",      XrmoptionNoArg,  (caddr_t) "false" },
   };


   World*       world;

   char*        systemName;
   XtAppContext appContext;
   Display*     dpy;
 public:
   System(char* name) 
     : systemName(name), world(0), dpy(0)
       {
	  resources[0].resource_offset = XtOffsetOf(System,debug);
       }
   World*  Initialize(int,char**);
   virtual void    Create() {}
   virtual void    Realize();
   void    Start();

};

#endif
