#ifndef Programm_H
#define Programm_H

#include <Bildschirm.h>
#include <InitDatei.h>
#include <Fenster.h>
#include <Array.h>
#include <Knopf.h>
#include "..\Ressourcen\Ressourcen.h"
#include "Basic\Abschnitt.h"
#include <MausEreignis.h>

using namespace Framework;

class Programm
{
private:
	Bildschirm *bildschirm;
	Schrift *schrift;
	Fenster *kFenster;
	Fenster *mFenster;
	LRahmen *auswahlRahmen;
	RCArray< Text > *name;
	RCArray< Knopf > *knopf;
	RCArray< Abschnitt > *abschnitte;
	int abschnittAnzahl;
	int sichtbar;
	int ref;

public:
	// Konstruktor
	Programm( Bildschirm *b, Schrift *s );
	// Destruktor
	~Programm();
	// nicht constant
	bool addAbschnitt( const char *name, Abschnitt *abschnitt );
	bool removeAbschnitt( const char *name );
	bool renameAbschnitt( const char *name, const char *newName );
	bool abschnittAuswählen( const char *name );
	bool abschnittMausEreignis( void *obj, MausEreignis me );
	// constant
	Text *getSichtbarAbschnittName() const;
	Text *zSichtbarAbschnittName() const;
	// Reference Counting
	Programm *getThis();
	Programm *release();
};

// Ereignis
bool programmAbschnittME( void *p, void *obj, MausEreignis me );

#endif