2015-05-18 11:48:10 +00:00
|
|
|
/*
|
|
|
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
|
|
*
|
|
|
|
* Copyright (C) 2012 Torsten Hueter, torstenhtr <at> gmx.de
|
|
|
|
* Copyright (C) 2013-2015 CERN
|
|
|
|
* @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
|
|
|
* @author Maciej Suminski <maciej.suminski@cern.ch>
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version 2
|
|
|
|
* of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program; if not, you may find one here:
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
* or you may search the http://www.gnu.org website for the version 2 license,
|
|
|
|
* or you may write to the Free Software Foundation, Inc.,
|
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
*/
|
|
|
|
|
2020-01-10 13:17:35 +00:00
|
|
|
#include <gal/graphics_abstraction_layer.h>
|
|
|
|
#include <tool/actions.h>
|
2015-05-18 11:48:10 +00:00
|
|
|
#include <view/view.h>
|
|
|
|
#include <view/view_controls.h>
|
|
|
|
|
|
|
|
using namespace KIGFX;
|
|
|
|
|
|
|
|
void VIEW_CONTROLS::ShowCursor( bool aEnabled )
|
|
|
|
{
|
2017-02-11 19:54:44 +00:00
|
|
|
m_settings.m_showCursor = aEnabled;
|
2015-05-18 11:48:10 +00:00
|
|
|
m_view->GetGAL()->SetCursorEnabled( aEnabled );
|
|
|
|
}
|
|
|
|
|
2015-07-24 08:58:47 +00:00
|
|
|
|
2017-02-11 19:54:44 +00:00
|
|
|
bool VIEW_CONTROLS::IsCursorShown() const
|
|
|
|
{
|
2017-03-18 20:03:24 +00:00
|
|
|
// this only says if the VIEW_CONTROLS say the cursor should be
|
|
|
|
// shown: m_view->GetGAL()->IsCursorEnabled() will say if the GAL is
|
|
|
|
// actually going to do show the cursor or not
|
2017-02-11 19:54:44 +00:00
|
|
|
return m_settings.m_showCursor;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-07-24 08:58:47 +00:00
|
|
|
void VIEW_CONTROLS::Reset()
|
|
|
|
{
|
2017-02-11 19:54:44 +00:00
|
|
|
// Get the default settings from the default constructor
|
2017-03-06 10:41:06 +00:00
|
|
|
VC_SETTINGS dummy;
|
2017-02-11 19:54:44 +00:00
|
|
|
ApplySettings( dummy );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-03-06 10:41:06 +00:00
|
|
|
void VC_SETTINGS::Reset()
|
2017-02-11 19:54:44 +00:00
|
|
|
{
|
2020-05-17 00:19:48 +00:00
|
|
|
m_showCursor = false;
|
|
|
|
m_forceCursorPosition = false;
|
|
|
|
m_cursorCaptured = false;
|
|
|
|
m_snappingEnabled = true;
|
|
|
|
m_grabMouse = false;
|
2023-02-20 08:16:33 +00:00
|
|
|
m_focusFollowSchPcb = false;
|
2020-05-17 00:19:48 +00:00
|
|
|
m_autoPanEnabled = false;
|
|
|
|
m_autoPanSettingEnabled = false;
|
|
|
|
m_autoPanMargin = 0.02f;
|
|
|
|
m_autoPanSpeed = 0.15f;
|
|
|
|
m_autoPanAcceleration = 5.0f;
|
|
|
|
m_warpCursor = false;
|
|
|
|
m_horizontalPan = false;
|
|
|
|
m_zoomAcceleration = false;
|
|
|
|
m_zoomSpeed = 5;
|
|
|
|
m_zoomSpeedAuto = true;
|
|
|
|
m_scrollModifierZoom = 0;
|
|
|
|
m_scrollModifierPanH = WXK_CONTROL;
|
|
|
|
m_scrollModifierPanV = WXK_SHIFT;
|
2021-01-18 18:34:19 +00:00
|
|
|
m_dragLeft = MOUSE_DRAG_ACTION::NONE;
|
2020-05-17 00:19:48 +00:00
|
|
|
m_dragMiddle = MOUSE_DRAG_ACTION::PAN;
|
|
|
|
m_dragRight = MOUSE_DRAG_ACTION::PAN;
|
2019-01-03 03:45:09 +00:00
|
|
|
m_lastKeyboardCursorPositionValid = false;
|
2020-05-17 00:19:48 +00:00
|
|
|
m_lastKeyboardCursorPosition = { 0.0, 0.0 };
|
|
|
|
m_lastKeyboardCursorCommand = ACTIONS::CURSOR_NONE;
|
2023-09-20 15:59:39 +00:00
|
|
|
m_scrollReversePanH = false;
|
2017-02-11 19:54:44 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-03-06 10:41:06 +00:00
|
|
|
void VIEW_CONTROLS::ApplySettings( const VC_SETTINGS& aSettings )
|
2017-02-11 19:54:44 +00:00
|
|
|
{
|
|
|
|
ShowCursor( aSettings.m_showCursor );
|
|
|
|
CaptureCursor( aSettings.m_cursorCaptured );
|
|
|
|
SetGrabMouse( aSettings.m_grabMouse );
|
|
|
|
SetAutoPan( aSettings.m_autoPanEnabled );
|
|
|
|
SetAutoPanMargin( aSettings.m_autoPanMargin );
|
|
|
|
SetAutoPanSpeed( aSettings.m_autoPanSpeed );
|
2017-08-02 13:29:45 +00:00
|
|
|
ForceCursorPosition( aSettings.m_forceCursorPosition, aSettings.m_forcedPosition );
|
2015-07-24 08:58:47 +00:00
|
|
|
}
|