#ifndef CUBEGUI_H
#define CUBEGUI_H

#include <cube.h>
#include <cubedraw2d.h>
#include <cubedraw3d.h>
#include <cubepermanent.h>
#include <gobj.h>

/*
\brief The front end/interface for the cube program. 
*/
class cubegui
{
  /** Global graphics stream. */
  gobjContainer xGraphics;

  /** Toggle the help menu. */
  bool menuhelp;

  /** Toggle the 2D display. */
  bool display2D;
  /** Toggle the 3D display. */
  bool display3D;

  /** The cube model/engine. */
  cube cb;

  /** 2D view of the cube. */
  cubedraw2d cb2d;

  /** 3D view of the cube. */
  cubedraw3d cb3d;

  /** Save and restore the current cube. */
  cubepermanent cbperm;

public:

  /** Constructor. */
  cubegui();

  /** The static functions access the current cubegui. */
  static cubegui * member;

  /** Default keyboard handler - ESC to quit. */
  static void keyboard01(unsigned char key, int x, int y);
  /** Displays the gobj::global with double buffering. */
  static void display01();

  /** Launch the main program. */
  void prog01(int argc, char** argv);

};


#endif



