/**
 * @file Actions.cc
 * @author stephen
 * @brief Describe Actions.cc here
 *
 */

/* Standard headers */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <stdint.h>

#include <iostream>

/* Toolkit headers */
#include <Ph.h>
#include <Pt.h>
#include <Ap.h>

typedef bool BOOLEAN;
typedef int32_t INT32;

#include "abimport.h"
#include "proto.h"

int XXXSummary ( PtWidget_t *widget , ApInfo_t *apinfo , PtCallbackInfo_t *cbinfo )
{
	//Create XXX Summary module on the main gui pane
	PtClearWidget( ABW_Main_Pane );
	PtReRealizeWidget( ABW_Main_Pane );
	std::cerr << "re-realize empty main pane\n";
	ApCreateModule( ABM_XXX_Summary_Module, ABW_Main_Pane, NULL);
	std::cerr << "re-realize main pane with " << ABW_XXX_Summary_Pane << "\n";
	PtReRealizeWidget( ABW_Main_Pane );

	//Initialise Button3
	PtClearWidget( ABW_Button3_Pane );

	//Initialise Button4
	PtClearWidget( ABW_Button4_Pane );

	//Initialise Button 5
	PtClearWidget( ABW_Button5_Pane );
	ApCreateModule( ABM_XXX_Diagnostics_Button_Module, ABW_Button5_Pane, NULL);
	PtReRealizeWidget( ABW_Button5_Pane );

	return Pt_CONTINUE;
}

int SelectDiagnostics ( PtWidget_t *widget , ApInfo_t *apinfo , PtCallbackInfo_t *cbinfo )
{
	std::cerr <<
			"SelectDiagnostics - Display the diagnostics tabs for the selected sub system\n";

	PtClearWidget(ABW_Child_Tabs_Pane);
	ApCreateModule(ABM_XXX_Diagnostics_Tabs_Module, ABW_Child_Tabs_Pane, NULL);
	PtReRealizeWidget( ABW_Child_Tabs_Pane );
	PtSetResource (ABW_XXX_Diagnostics_Info_Tab, Pt_ARG_FLAGS, Pt_TRUE, Pt_SET);

	return Pt_CONTINUE;
}

int Info ( PtWidget_t *widget , ApInfo_t *apinfo , PtCallbackInfo_t *cbinfo )
{
	std::cerr << "Info - XXX Diagnostics Info tab armed\n";

	//Create XXX Diagnostics Info module on the main gui pane
	PtClearWidget( ABW_Main_Pane );
	std::cerr << "cleared\n";

	ApCreateModule( ABM_XXX_Diagnostics_Info_Module, ABW_Main_Pane, NULL);
	PtReRealizeWidget( ABW_Main_Pane );
	if(ABW_XXX_Summary_Timer && PtWidgetIsRealized(ABW_XXX_Summary_Timer))
	{
		std::cerr << "summary timer was still going\n";
		unsigned long* eflags;
		PtGetResource(ABW_XXX_Summary_Timer, Pt_ARG_EFLAGS, &eflags, 0);
		if(*eflags && Pt_TIMER_PENDING)
			std::cerr << "and timer pending\n";
		abort();
	}

	return Pt_CONTINUE;
}

int Setup ( PtWidget_t *link_instance , ApInfo_t *apinfo , PtCallbackInfo_t *cbinfo )
{
	PtClearWidget(ABW_Child_Tabs_Pane);
	ApCreateModule(ABM_XXX_Tabs_Module, ABW_Child_Tabs_Pane, NULL);
	PtReRealizeWidget( ABW_Child_Tabs_Pane );
	PtSetResource (ABW_XXX_Summary_Tab, Pt_ARG_FLAGS, Pt_TRUE, Pt_SET);

	return Pt_CONTINUE;
}
