// pupappdlg.h : header file
//

#ifndef PUPAPPDLG_H
#define PUPAPPDLG_H

#include "pupapp.h"
#include "datafiledlg.h"
#include "modelessdlg.h"
#include "motordlg.h"
#include "macroprogramdlg.h"
#include "motorindicator.h"

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

	
#define GREEN_COLOR RGB(0,255,0) 
#define RED_COLOR RGB(255,0,0)	
#define SYS_GRAY_COLOR RGB(192,192,192)

#define MOTOR_HOME		1

class Motor;
class MotionController;
class MacroInterpreter;
class PupApp;

/////////////////////////////////////////////////////////////////////////////
// CPupAppDlg dialog

class CPupAppDlg : public CDialog
{
// Construction
public:	
	void StartTimers();
	CPupAppDlg(CWnd* pParent = NULL, PupApp *pPupApp = NULL);
	~CPupAppDlg();
// Dialog Data
	//{{AFX_DATA(CPupAppDlg)
	enum { IDD = IDD_PUP_DIALOG };
	CString	m_SyringeDisp;
	Flt32	m_DesiredTemp;
	short	m_HeatDuration;
	int		m_CarouselLoadTube;
	int		m_CarouselManualLoadTube;
	int		m_CarouselUnloadTube;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CPupAppDlg)
	public:
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;
	Int16 m_nTimer1,m_nTimer2;
	CDatafileDlg *pFileDlg;
	CMacroProgramDlg *pMacroProgramDlg;
	CModelessDlg *pModelessDlg;
	CMotorDlg *pMotorDlg[NUM_AXIS];
	CMotorIndicator *pMotorIndicator[NUM_AXIS];	

	void UpdateDisplay();

	// Generated message map functions
	//{{AFX_MSG(CPupAppDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnTimer(UINT nIDEvent);	
	afx_msg void OnExit();
	afx_msg void OnControllerReset();
	afx_msg void OnSendCtrlCmd();
	afx_msg void OnFileDlg();
	afx_msg void OnProgramDlg();
	afx_msg void OnZMotorDlg();
	afx_msg void OnRMotorDlg();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
private:				

	PupApp *pTheApp;
	LRESULT OnModelessExit(WPARAM wParam, LPARAM lParam);
	LRESULT OnModelessOk(WPARAM wParam, LPARAM lParam);
	CBitmap	stopbitmap;
	void UpdateMotorStatus();
	void UpdateBitmap(UINT id, CBitmap &bitmap);
	void UpdateStopCodeBmp(Nat16 id,Int32 code);
	void UpdateStatusWnd(char *text);	
	void UpdateAlarmDisplay();
	CTime time;
	Axis *pAxis[NUM_AXIS];
	MotionController *pCtrl;
	MBool toggleColor;
	MBool fFileDlg;
	MBool fMacroDlg;
	MBool fModelessDlg;
	MBool fMotorDlg[NUM_AXIS];
	DataManager *pDM;
	AlarmManager *pAM;
	char szDataResponse[256];	//was 4096
public:
	afx_msg void OnEnChangeStatus();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif
