/*****************************************************/
	/* muwave_command.cpp: micro wave functions commands */
	/*****************************************************/

#include "fctsys.h"
#include "common.h"
#include "class_drawpanel.h"
#include "confirm.h"
#include "pcbnew.h"

#include "id.h"

#include "protos.h"


/*********************************************************************/
void WinEDA_PcbFrame::ProcessMuWaveFunctions(wxCommandEvent& event)
/*********************************************************************/
/* Traite les selections d'outils et les commandes appelees du menu POPUP
*/
{
int id = event.GetId();
wxPoint pos;
wxClientDC dc(DrawPanel);

	DrawPanel->PrepareGraphicContext(&dc);

	wxGetMousePosition(&pos.x, &pos.y);

	pos.y += 20;

	switch ( id )	// Arret eventuel de la commande de déplacement en cours
	{
		case ID_POPUP_COPY_BLOCK:
			break;

		default:	// Arret de la commande de déplacement en cours
			if( DrawPanel->ManageCurseur &&
				DrawPanel->ForceCloseManageCurseur )
			{
				DrawPanel->ForceCloseManageCurseur(DrawPanel, &dc);
			}
			SetToolID(0, wxCURSOR_ARROW,wxEmptyString);
			break;
	}

	switch ( id )	// Traitement des commandes
	{

		case ID_PCB_MUWAVE_TOOL_SELF_CMD:
			SetToolID( id, wxCURSOR_PENCIL, _("Add Line"));
			break;

		case ID_PCB_MUWAVE_TOOL_GAP_CMD:
			SetToolID( id, wxCURSOR_PENCIL, _("Add Gap"));
			break;

		case ID_PCB_MUWAVE_TOOL_STUB_CMD:
			SetToolID( id, wxCURSOR_PENCIL, _("Add Stub"));
			break;

		case ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD:
			SetToolID( id, wxCURSOR_PENCIL, _("Add Arc Stub"));
			break;

		case ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD:
			SetToolID( id, wxCURSOR_PENCIL, _("Add Polynomial Shape"));
			break;

		default:
			DisplayError(this, wxT("WinEDA_PcbFrame::ProcessMuWaveFunctions() id error"));
			break;
	}

	SetToolbars();
}



/***************************************************************************/
void WinEDA_PcbFrame::MuWaveCommand(wxDC * DC, const wxPoint& MousePos)
/***************************************************************************/
{
    MODULE* module = NULL;
	switch ( m_ID_current_state )
	{
		case ID_PCB_MUWAVE_TOOL_SELF_CMD:
			Begin_Self(DC);
			break;

		case ID_PCB_MUWAVE_TOOL_GAP_CMD:
			module = Create_MuWaveComponent( 0);
			break;

		case ID_PCB_MUWAVE_TOOL_STUB_CMD:
			module = Create_MuWaveComponent( 1);
			break;

		case ID_PCB_MUWAVE_TOOL_STUB_ARC_CMD:
			module = Create_MuWaveComponent( 2);
			break;

		case ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD:
			module = Create_MuWavePolygonShape();
			break;

		default :
			DrawPanel->SetCursor(wxCURSOR_ARROW);
			DisplayError(this, wxT("WinEDA_PcbFrame::MuWaveCommand() id error"));
			SetToolID(0, wxCURSOR_ARROW,wxEmptyString);
			break;
	}

    if ( module )
    {
        StartMove_Module( module, DC );
    }
    DrawPanel->MouseToCursorSchema();
}