

#ifndef SIMUQT_H
#define SIMUQT_H

#include <qmainwindow.h>
#include <qthread.h>
#include <qtextedit.h>
#include <deque.h>


class QjbThread : public QThread
{
    protected:
        void run();
};


class QjbTextEdit : public QTextEdit {
		
		Q_OBJECT

		public:

			QjbTextEdit (QWidget* w, const char* s) : QTextEdit(w,s) {};
			~QjbTextEdit () {};

		protected:
	
		bool x11Event ( XEvent* );

};

class simuqt: public QMainWindow
{
    Q_OBJECT

public:
    simuqt();
    ~simuqt();

		void customEvent (QCustomEvent * ev);

protected:
    void closeEvent( QCloseEvent* );


private slots:
    void newDoc();
    void choose();
    void load( const QString &fileName );
    void save();
    void saveAs();
    void print();

		void stopSimu();

    void about();
    void aboutQt();

private:
    QPrinter *printer;
    QjbTextEdit *e;
    QString filename;
};


class QxycEvent : public QCustomEvent {

	public:

	QxycEvent (int xa, int ya, int ca) : QCustomEvent(65432), x(xa), y(ya), c(ca) {};

		int x;
		int y;
		int c;

};

static int max_lines = 54;
static int max_cols = 133;



extern simuqt * mw_global;

extern "C" int put_xy_c (int x, int y, int c);
extern "C" void simu_register();
extern "C" void main_simu ();
extern "C" void cwin_calltf_cpp ();
extern "C" int getcdata_calltf(char *user_data);

extern "C" int stopSimuFlag;

extern "C" int getKeyPressed ();
extern "C" int getKeyReleased ();

#endif
