2009-11-09 14:00:22 +00:00
|
|
|
/****************/
|
|
|
|
/* controle.cpp */
|
|
|
|
/****************/
|
2007-05-06 16:03:28 +00:00
|
|
|
|
|
|
|
#include "fctsys.h"
|
|
|
|
#include "common.h"
|
2009-02-04 15:25:03 +00:00
|
|
|
#include "class_drawpanel.h"
|
|
|
|
#include "gerbview.h"
|
2007-05-06 16:03:28 +00:00
|
|
|
|
|
|
|
|
2011-02-22 16:43:03 +00:00
|
|
|
void WinEDA_GerberFrame::GeneralControl( wxDC* aDC, const wxPoint& aPosition, int aHotKey )
|
2007-05-06 16:03:28 +00:00
|
|
|
{
|
2011-02-01 15:46:25 +00:00
|
|
|
wxRealPoint gridSize;
|
|
|
|
wxPoint oldpos;
|
|
|
|
wxPoint pos = aPosition;
|
|
|
|
|
2011-02-11 20:48:13 +00:00
|
|
|
pos = GetScreen()->GetNearestGridPosition( pos );
|
2007-09-10 04:51:01 +00:00
|
|
|
|
2011-02-11 20:48:13 +00:00
|
|
|
oldpos = GetScreen()->GetCrossHairPosition();
|
2011-02-01 15:46:25 +00:00
|
|
|
gridSize = GetScreen()->GetGridSize();
|
2007-10-10 04:45:26 +00:00
|
|
|
|
2011-02-22 16:43:03 +00:00
|
|
|
switch( aHotKey )
|
2007-10-10 04:45:26 +00:00
|
|
|
{
|
2009-11-09 14:00:22 +00:00
|
|
|
case WXK_NUMPAD8:
|
2007-10-10 04:45:26 +00:00
|
|
|
case WXK_UP:
|
2011-02-01 15:46:25 +00:00
|
|
|
pos.y -= wxRound( gridSize.y );
|
|
|
|
DrawPanel->MoveCursor( pos );
|
2007-10-10 04:45:26 +00:00
|
|
|
break;
|
|
|
|
|
2009-11-09 14:00:22 +00:00
|
|
|
case WXK_NUMPAD2:
|
2007-10-10 04:45:26 +00:00
|
|
|
case WXK_DOWN:
|
2011-02-01 15:46:25 +00:00
|
|
|
pos.y += wxRound( gridSize.y );
|
|
|
|
DrawPanel->MoveCursor( pos );
|
2007-10-10 04:45:26 +00:00
|
|
|
break;
|
|
|
|
|
2009-11-09 14:00:22 +00:00
|
|
|
case WXK_NUMPAD4:
|
2007-10-10 04:45:26 +00:00
|
|
|
case WXK_LEFT:
|
2011-02-01 15:46:25 +00:00
|
|
|
pos.x -= wxRound( gridSize.x );
|
|
|
|
DrawPanel->MoveCursor( pos );
|
2007-10-10 04:45:26 +00:00
|
|
|
break;
|
|
|
|
|
2009-11-09 14:00:22 +00:00
|
|
|
case WXK_NUMPAD6:
|
2007-10-10 04:45:26 +00:00
|
|
|
case WXK_RIGHT:
|
2011-02-01 15:46:25 +00:00
|
|
|
pos.x += wxRound( gridSize.x );
|
|
|
|
DrawPanel->MoveCursor( pos );
|
2007-10-10 04:45:26 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2011-02-11 20:48:13 +00:00
|
|
|
GetScreen()->SetCrossHairPosition( pos );
|
2007-10-10 04:45:26 +00:00
|
|
|
|
2011-02-11 20:48:13 +00:00
|
|
|
if( oldpos != GetScreen()->GetCrossHairPosition() )
|
2007-10-10 04:45:26 +00:00
|
|
|
{
|
2011-02-11 20:48:13 +00:00
|
|
|
pos = GetScreen()->GetCrossHairPosition();
|
|
|
|
GetScreen()->SetCrossHairPosition( oldpos );
|
|
|
|
DrawPanel->CrossHairOff( aDC );
|
|
|
|
GetScreen()->SetCrossHairPosition( pos );
|
|
|
|
DrawPanel->CrossHairOn( aDC );
|
2007-05-06 16:03:28 +00:00
|
|
|
|
2011-02-11 20:48:13 +00:00
|
|
|
if( DrawPanel->IsMouseCaptured() )
|
2007-10-10 04:45:26 +00:00
|
|
|
{
|
2011-02-11 20:48:13 +00:00
|
|
|
DrawPanel->m_mouseCaptureCallback( DrawPanel, aDC, aPosition, true );
|
2007-10-10 04:45:26 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-02-22 16:43:03 +00:00
|
|
|
if( aHotKey )
|
2007-10-10 04:45:26 +00:00
|
|
|
{
|
2011-02-22 16:43:03 +00:00
|
|
|
OnHotKey( aDC, aHotKey, NULL );
|
2007-10-10 04:45:26 +00:00
|
|
|
}
|
|
|
|
|
2009-11-09 14:00:22 +00:00
|
|
|
UpdateStatusBar();
|
2007-10-10 04:45:26 +00:00
|
|
|
}
|