//
// qtpendel.h
//
// Das eigentliche Pendel, enthaelt Oberflaechenelemente (von Qt und
// Klase QtPendelTabs), Taktgeber (QtPendelPuls) und Pendel-Daten
// (QtPendelData) als Members. Wird von main() erzeugt, und steuert
// Taktgeber ueber start/stop/step Buttons. Pendel-Daten werden ueber
// die beiden Bump-Buttons (links/rechts) beeinflusst. 
// 
//  - Hubert Feyrer <hubert@feyrer.de>
// 

#ifndef _QTPENDEL_H
#define _QTPENDEL_H

#include <qapplication.h>
#include <qhbuttongroup.h>
#include <qvbuttongroup.h>
#include <qwidget.h>
#include <qvbox.h>
#include <qhbox.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qpixmap.h>
#include <qpushbutton.h>

#include "qtpendel-tab.h"
#include "qtpendel-puls.h"
#include "qtpendel-data.h"

class QtPendel : public QVBox //QWidget
{
	Q_OBJECT

 protected:
	virtual void resizeEvent(QResizeEvent *);

 public slots:
	void start_slot();
	void stop_slot();
	void step_slot();
	void bumpleft_slot();
	void bumpright_slot();

 public:
	QVBox *box;
	QLabel *title;
	QHButtonGroup *bumpbox;
	QPushButton *bumpleft;
	QPixmap *pendelbuf;
	QLabel *pendelmap;
	QPushButton *bumpright;
	QHButtonGroup *winkelbox;
	QPixmap *winkelbuf;
	QLabel *winkelmap;
	QHButtonGroup *tabbox;
	QtPendelTab *alpha_tab;
	QtPendelTab *alphaDot_tab;
	QtPendelTab *a_tab;
	QHButtonGroup *buttonbox;
	QPushButton *start;
	QPushButton *step;
	QPushButton *stop;
	
	QtPendelPuls *herz;	// Taktgeber
	QtPendelData *data;	// Pendel- und FuzzyControl-Daten
	
	QtPendel(QWidget *parent = 0);
	void update_pendel(void);
	void update_winkel(void);
};

#endif /* _QTPENDEL_H */
