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

// $Revision: 1.3 $
// $Author: roman $
// $Date: 90/07/20 03:24:52 $

#include "Factory.h"
#include "Widget.h"

extern WidgetFactory Factory;
extern CatalogIter   Symbols;

AWidgetClass::AWidgetClass(char* classname, WidgetClass wc)
: wc(wc)
{
   id = Factory.RegisterClass(classname, this);
}

char*  AWidgetClass::name()
{ 
   return Symbols.String(id); 
}

AWidgetClass::AWidgetClass(char* classname, char* systemname, WidgetClass wc)
: wc(wc)
{
   id = Factory.RegisterClass(classname, this);
   Factory.RegisterClass(systemname, this);
}

AWidgetClass::~AWidgetClass()
{
   Factory.UnRegisterClass(id);
}

AWidget* AWidgetClass::CreateWidget(char* name, AWidget& parent)
{
   return new AWidget(name, *this, parent);
}

AWidget::AWidget(char* name, AWidgetClass& wc, AWidget& parent)
: awc(wc)
	// add args later
{
   widget = XtCreateManagedWidget(name, awc.Class(), parent.Widget(),
				  (ArgList)0, (Cardinal)0);
}
