//---------------------------------------------------------
bool CWKSP_Shapes::Edit_On_Mouse_Move(wxWindow *pMap, CSG_Rect rWorld, wxPoint pt, wxPoint ptLast, int Key)
{
	switch( m_Edit_Mode )
	{
	case EDIT_SHAPE_MODE_Split:
	case EDIT_SHAPE_MODE_Move:
		{
			CSG_Shape	*pShape	= m_Edit_Shapes.Get_Shape(1);

			if( pShape && pShape->Get_Point_Count() > 0 && (pt.x != ptLast.x || pt.y != ptLast.y) )
			{
				wxClientDC	dc(pMap);	dc.SetLogicalFunction(wxINVERT);

				Edit_Shape_Draw_Move(dc, rWorld, ptLast, pShape->Get_Point(0, 0, false));
				Edit_Shape_Draw_Move(dc, rWorld, pt    , pShape->Get_Point(0, 0, false));
			}

			return( true );
		}

	//-----------------------------------------------------
	case EDIT_SHAPE_MODE_Normal: default:
		if( m_Edit_pShape )
		{
			//---------------------------------------------
			if( m_Edit_iPart >= 0 && (m_Edit_iPoint < 0 || Key & MODULE_INTERACTIVE_KEY_LEFT) && (pt.x != ptLast.x || pt.y != ptLast.y) )
			{
				wxClientDC	dc(pMap);	dc.SetLogicalFunction(wxINVERT);

				Edit_Shape_Draw_Move(dc, rWorld, ptLast);
				Edit_Shape_Draw_Move(dc, rWorld, pt);

				return( true );
			}

			//---------------------------------------------
			else
			{
				int			iPart, iPoint;
				double		ClientToWorld	= rWorld.Get_XRange() / (double)pMap->GetClientSize().x;
				CSG_Point	Point(rWorld.Get_XMin() + pt.x * ClientToWorld, rWorld.Get_YMax() - pt.y * ClientToWorld);

				switch( Edit_Shape_HitTest(Point, EDIT_TICKMARK_SIZE * ClientToWorld, iPart, iPoint) )
				{
				default:	pMap->SetCursor(IMG_Get_Cursor(ID_IMG_CRS_SELECT         ));	break;
				case  1:	pMap->SetCursor(IMG_Get_Cursor(ID_IMG_CRS_EDIT_POINT_MOVE));	break;
				case  2:	pMap->SetCursor(IMG_Get_Cursor(ID_IMG_CRS_EDIT_POINT_ADD ));	break;
				}

				return( true );
			}
		}
	}

	return( false );
}
//---------------------------------------------------------
bool CVIEW_Map_Control::Set_Mode(int Mode)
{
	if( m_Mode != Mode )
	{
		if( m_Mode == MAP_MODE_DISTANCE )
		{
			_Distance_Reset();
		}

		m_Mode	= Mode;

		switch( m_Mode )
		{
		case MAP_MODE_ZOOM: default:
			SetCursor(IMG_Get_Cursor(ID_IMG_CRS_SELECT));
			break;

		case MAP_MODE_PAN:
			SetCursor(IMG_Get_Cursor(ID_IMG_CRS_HAND));
			break;

		case MAP_MODE_PAN_DOWN:
			SetCursor(IMG_Get_Cursor(ID_IMG_CRS_HAND_GRAP));
			break;

		case MAP_MODE_SELECT:
			SetCursor(IMG_Get_Cursor(ID_IMG_CRS_INFO));
			break;

		case MAP_MODE_DISTANCE:
			SetCursor(IMG_Get_Cursor(ID_IMG_CRS_SELECT));
			_Distance_Reset();
			break;
		}

		return( true );
	}

	return( false );
}