
#include <classes/Layouter/Windows.h>
#include <classes/Layouter/BoopsiGadgets.h>
#include <classes/Exec/Libraries.h>
#include <iostream.h>

class KnopfEventC : public GadgetEventC {
public:
	KnopfEventC() : GadgetEventC() { };
	VOID up(WindowC *, GadgetC *, IntuiMessageC * )
		{ cout << "Knopf gedrückt.\n"; };
};

class KnopfWindowC : public StandardWindowC {
public:
	KnopfWindowC(GTIDCMPortC &, ScreenC &);
	~KnopfWindowC();
private:
	KnopfEventC knopfEvent;
	LBIButtonC knopf;
	GeometryC knopfGeo;
	WindowCloseHandlerC wch;
};

KnopfWindowC::KnopfWindowC(GTIDCMPortC &p, ScreenC &s)
	: StandardWindowC(p,s,NULL,
		TAG_END),
	  knopf(&knopfEvent,*this,LAYOUT_AUTOSIZE,LAYOUT_AUTOSIZE,
	   GA_Text,"Ein Knopf",
	   GA_RelVerify,TRUE,
	   TAG_END),
	  knopfGeo(knopf,
	   LAYOUT_GROUP,NULL,2,LAYOUT_GROUP,NULL,-2,
	   LAYOUT_GROUP,NULL,2,LAYOUT_GROUP,NULL,-2),
	  wch(*this)
{
	gadgets.add(knopf);
	innerGeo.add(knopfGeo);
}

KnopfWindowC::~KnopfWindowC()
{
	close();
}

LibraryBaseErrC GadToolsBase("gadtools.library",37);
LibraryBaseErrC UtilityBase("utility.library",37);
LibraryBaseErrC CxBase("commodities.library",37);
LibraryBaseErrC LayersBase("layers.library",37);
LibraryBaseErrC WorkbenchBase("workbench.library",37);

int main()
{
	if (!LibraryBaseC::areAllOpen())
		return 20;

	SignalsC sc;

	PublicScreenC screen();
	if (!screen.lock(NULL))
		return 100;

	GTIDCMPortC port;
	sc.add(port);

	GadgetUpHandlerC uphandler;
	port.add(uphandler);

	KnopfWindowC window(port,screen);

	CtrlCHandlerC ctrlchandler;
	sc.add(ctrlchandler);

	window.open();

	sc.loop();

	return 0;
}

