Move Show3DViewer to common action.
This commit is contained in:
parent
374a3feb3e
commit
6ac273264d
|
@ -1,45 +0,0 @@
|
||||||
/*
|
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2015-2016 Mario Luzeiro <mrluzeiro@ua.pt>
|
|
||||||
* Copyright (C) 2014 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
|
||||||
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
|
|
||||||
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file 3d_viewer.h
|
|
||||||
* @brief Declaration of the eda_3d_viewer class
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _3D_VIEWER_H_
|
|
||||||
#define _3D_VIEWER_H_
|
|
||||||
|
|
||||||
|
|
||||||
/// A variable name whose value holds the path of 3D shape files.
|
|
||||||
/// Currently an environment variable, eventually a project variable.
|
|
||||||
#define KISYS3DMOD wxT( "KISYS3DMOD" )
|
|
||||||
|
|
||||||
/// All 3D files are expected to be stored in LIB3D_FOLDER, or one of
|
|
||||||
/// its subdirectory.
|
|
||||||
#define LIB3D_FOLDER wxT( "packages3d" )
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _3D_VIEWER_H_
|
|
|
@ -39,6 +39,11 @@
|
||||||
#include <../common/dialogs/dialog_color_picker.h> // for CUSTOM_COLORS_LIST definition
|
#include <../common/dialogs/dialog_color_picker.h> // for CUSTOM_COLORS_LIST definition
|
||||||
|
|
||||||
|
|
||||||
|
/// A variable name whose value holds the path of 3D shape files.
|
||||||
|
/// Currently an environment variable, eventually a project variable.
|
||||||
|
#define KISYS3DMOD wxT( "KISYS3DMOD" )
|
||||||
|
|
||||||
|
|
||||||
#define KICAD_DEFAULT_3D_DRAWFRAME_STYLE (wxDEFAULT_FRAME_STYLE | wxWANTS_CHARS)
|
#define KICAD_DEFAULT_3D_DRAWFRAME_STYLE (wxDEFAULT_FRAME_STYLE | wxWANTS_CHARS)
|
||||||
|
|
||||||
#define VIEWER3D_FRAMENAME wxT( "Viewer3DFrameName" )
|
#define VIEWER3D_FRAMENAME wxT( "Viewer3DFrameName" )
|
||||||
|
|
|
@ -336,6 +336,12 @@ TOOL_ACTION ACTIONS::standardGraphics( "common.Control.standardGraphics",
|
||||||
_( "Standard Graphics" ), _( "Use software graphics (fall-back)" ),
|
_( "Standard Graphics" ), _( "Use software graphics (fall-back)" ),
|
||||||
tools_xpm );
|
tools_xpm );
|
||||||
|
|
||||||
|
TOOL_ACTION ACTIONS::show3DViewer( "pcbnew.Control.show3DViewer",
|
||||||
|
AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_3D_VIEWER ),
|
||||||
|
_( "3D Viewer" ), _( "Show 3D viewer window" ),
|
||||||
|
three_d_xpm );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// System-wide selection Events
|
// System-wide selection Events
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,6 @@ set( CVPCB_SRCS
|
||||||
menubar.cpp
|
menubar.cpp
|
||||||
readwrite_dlgs.cpp
|
readwrite_dlgs.cpp
|
||||||
toolbars_cvpcb.cpp
|
toolbars_cvpcb.cpp
|
||||||
tools/cvpcb_actions.cpp
|
|
||||||
tools/cvpcb_control.cpp
|
tools/cvpcb_control.cpp
|
||||||
tools/cvpcb_selection_tool.cpp
|
tools/cvpcb_selection_tool.cpp
|
||||||
)
|
)
|
||||||
|
|
|
@ -46,7 +46,6 @@ enum id_cvpcb_frm
|
||||||
ID_CVPCB_AUTO_ASSOCIE,
|
ID_CVPCB_AUTO_ASSOCIE,
|
||||||
ID_CVPCB_COMPONENT_LIST,
|
ID_CVPCB_COMPONENT_LIST,
|
||||||
ID_CVPCB_FOOTPRINT_LIST,
|
ID_CVPCB_FOOTPRINT_LIST,
|
||||||
ID_CVPCB_SHOW3D_FRAME,
|
|
||||||
ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST,
|
ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST,
|
||||||
ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST,
|
ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST,
|
||||||
ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST,
|
ID_CVPCB_FOOTPRINT_DISPLAY_PIN_FILTERED_LIST,
|
||||||
|
|
|
@ -36,20 +36,16 @@
|
||||||
#include <lib_id.h>
|
#include <lib_id.h>
|
||||||
#include <fp_lib_table.h>
|
#include <fp_lib_table.h>
|
||||||
#include <eda_dockart.h>
|
#include <eda_dockart.h>
|
||||||
|
|
||||||
#include <io_mgr.h>
|
#include <io_mgr.h>
|
||||||
#include <class_module.h>
|
#include <class_module.h>
|
||||||
#include <class_board.h>
|
#include <class_board.h>
|
||||||
#include <pcb_painter.h>
|
#include <pcb_painter.h>
|
||||||
|
|
||||||
#include <cvpcb_mainframe.h>
|
#include <cvpcb_mainframe.h>
|
||||||
#include <display_footprints_frame.h>
|
#include <display_footprints_frame.h>
|
||||||
#include <cvpcb_id.h>
|
#include <cvpcb_id.h>
|
||||||
#include <listboxes.h>
|
#include <listboxes.h>
|
||||||
|
|
||||||
#include <3d_viewer/eda_3d_viewer.h>
|
#include <3d_viewer/eda_3d_viewer.h>
|
||||||
#include <view/view.h>
|
#include <view/view.h>
|
||||||
|
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
#include <tool/tool_dispatcher.h>
|
#include <tool/tool_dispatcher.h>
|
||||||
#include <tool/common_tools.h>
|
#include <tool/common_tools.h>
|
||||||
|
@ -65,14 +61,9 @@ COLORS_DESIGN_SETTINGS g_ColorsSettings( FRAME_CVPCB_DISPLAY );
|
||||||
BEGIN_EVENT_TABLE( DISPLAY_FOOTPRINTS_FRAME, PCB_BASE_FRAME )
|
BEGIN_EVENT_TABLE( DISPLAY_FOOTPRINTS_FRAME, PCB_BASE_FRAME )
|
||||||
EVT_CLOSE( DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow )
|
EVT_CLOSE( DISPLAY_FOOTPRINTS_FRAME::OnCloseWindow )
|
||||||
EVT_TOOL( ID_OPTIONS_SETUP, DISPLAY_FOOTPRINTS_FRAME::InstallOptionsDisplay )
|
EVT_TOOL( ID_OPTIONS_SETUP, DISPLAY_FOOTPRINTS_FRAME::InstallOptionsDisplay )
|
||||||
EVT_TOOL( ID_CVPCB_SHOW3D_FRAME, DISPLAY_FOOTPRINTS_FRAME::Show3D_Frame )
|
|
||||||
EVT_CHOICE( ID_ON_ZOOM_SELECT, DISPLAY_FOOTPRINTS_FRAME::OnSelectZoom )
|
EVT_CHOICE( ID_ON_ZOOM_SELECT, DISPLAY_FOOTPRINTS_FRAME::OnSelectZoom )
|
||||||
EVT_CHOICE( ID_ON_GRID_SELECT, DISPLAY_FOOTPRINTS_FRAME::OnSelectGrid )
|
EVT_CHOICE( ID_ON_GRID_SELECT, DISPLAY_FOOTPRINTS_FRAME::OnSelectGrid )
|
||||||
|
|
||||||
EVT_UPDATE_UI( ID_NO_TOOL_SELECTED, DISPLAY_FOOTPRINTS_FRAME::OnUIToolSelection )
|
|
||||||
EVT_UPDATE_UI( ID_TB_MEASUREMENT_TOOL, DISPLAY_FOOTPRINTS_FRAME::OnUIToolSelection )
|
|
||||||
EVT_UPDATE_UI( ID_ZOOM_SELECTION, DISPLAY_FOOTPRINTS_FRAME::OnUIToolSelection )
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
EVT_TOOL and EVT_UPDATE_UI for:
|
EVT_TOOL and EVT_UPDATE_UI for:
|
||||||
ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH,
|
ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH,
|
||||||
|
@ -220,21 +211,15 @@ void DISPLAY_FOOTPRINTS_FRAME::ReCreateOptToolbar()
|
||||||
// TODO: these can be moved to the 'proper' right vertical toolbar if and when there are
|
// TODO: these can be moved to the 'proper' right vertical toolbar if and when there are
|
||||||
// actual tools to put there. That, or I'll get around to implementing configurable
|
// actual tools to put there. That, or I'll get around to implementing configurable
|
||||||
// toolbars.
|
// toolbars.
|
||||||
m_optionsToolBar->AddTool( ID_NO_TOOL_SELECTED, wxEmptyString,
|
m_optionsToolBar->Add( CVPCB_ACTIONS::selectionTool, ACTION_TOOLBAR::TOGGLE );
|
||||||
KiScaledBitmap( cursor_xpm, this ),
|
m_optionsToolBar->Add( CVPCB_ACTIONS::measureTool, ACTION_TOOLBAR::TOGGLE );
|
||||||
wxEmptyString, wxITEM_CHECK );
|
|
||||||
|
|
||||||
m_optionsToolBar->AddTool( ID_TB_MEASUREMENT_TOOL, wxEmptyString,
|
|
||||||
KiScaledBitmap( measurement_xpm, this ),
|
|
||||||
_( "Measure distance between two points" ),
|
|
||||||
wxITEM_CHECK );
|
|
||||||
|
|
||||||
m_optionsToolBar->AddSeparator();
|
m_optionsToolBar->AddSeparator();
|
||||||
m_optionsToolBar->Add( ACTIONS::toggleGrid, ACTION_TOOLBAR::TOGGLE );
|
m_optionsToolBar->Add( ACTIONS::toggleGrid, ACTION_TOOLBAR::TOGGLE );
|
||||||
m_optionsToolBar->Add( ACTIONS::togglePolarCoords, ACTION_TOOLBAR::TOGGLE );
|
m_optionsToolBar->Add( ACTIONS::togglePolarCoords, ACTION_TOOLBAR::TOGGLE );
|
||||||
m_optionsToolBar->Add( ACTIONS::imperialUnits, ACTION_TOOLBAR::TOGGLE );
|
m_optionsToolBar->Add( ACTIONS::imperialUnits, ACTION_TOOLBAR::TOGGLE );
|
||||||
m_optionsToolBar->Add( ACTIONS::metricUnits, ACTION_TOOLBAR::TOGGLE );
|
m_optionsToolBar->Add( ACTIONS::metricUnits, ACTION_TOOLBAR::TOGGLE );
|
||||||
m_optionsToolBar->Add( ACTIONS::toggleCursorStyle, ACTION_TOOLBAR::TOGGLE );
|
m_optionsToolBar->Add( ACTIONS::toggleCursorStyle, ACTION_TOOLBAR::TOGGLE );
|
||||||
|
|
||||||
m_optionsToolBar->AddSeparator();
|
m_optionsToolBar->AddSeparator();
|
||||||
m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString,
|
m_optionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH, wxEmptyString,
|
||||||
|
@ -272,8 +257,7 @@ void DISPLAY_FOOTPRINTS_FRAME::ReCreateHToolbar()
|
||||||
m_mainToolBar->Add( ACTIONS::zoomTool, ACTION_TOOLBAR::TOGGLE );
|
m_mainToolBar->Add( ACTIONS::zoomTool, ACTION_TOOLBAR::TOGGLE );
|
||||||
|
|
||||||
m_mainToolBar->AddSeparator();
|
m_mainToolBar->AddSeparator();
|
||||||
m_mainToolBar->AddTool( ID_CVPCB_SHOW3D_FRAME, wxEmptyString, KiScaledBitmap( three_d_xpm, this ),
|
m_mainToolBar->Add( ACTIONS::show3DViewer );
|
||||||
_( "3D Display (Alt+3)" ) );
|
|
||||||
|
|
||||||
KiScaledSeparator( m_mainToolBar, this );
|
KiScaledSeparator( m_mainToolBar, this );
|
||||||
|
|
||||||
|
@ -328,13 +312,6 @@ void DISPLAY_FOOTPRINTS_FRAME::ApplyDisplaySettingsToGAL()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DISPLAY_FOOTPRINTS_FRAME::Show3D_Frame( wxCommandEvent& event )
|
|
||||||
{
|
|
||||||
bool forceRecreateIfNotOwner = true;
|
|
||||||
CreateAndShow3D_Frame( forceRecreateIfNotOwner );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Virtual function needed by the PCB_SCREEN class derived from BASE_SCREEN
|
* Virtual function needed by the PCB_SCREEN class derived from BASE_SCREEN
|
||||||
* this is a virtual pure function in BASE_SCREEN
|
* this is a virtual pure function in BASE_SCREEN
|
||||||
|
@ -450,7 +427,7 @@ void DISPLAY_FOOTPRINTS_FRAME::InitDisplay()
|
||||||
UpdateStatusBar();
|
UpdateStatusBar();
|
||||||
|
|
||||||
GetGalCanvas()->Refresh();
|
GetGalCanvas()->Refresh();
|
||||||
Update3DView();
|
Update3DView( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -483,32 +460,16 @@ void DISPLAY_FOOTPRINTS_FRAME::UpdateMsgPanel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DISPLAY_FOOTPRINTS_FRAME::OnUIToolSelection( wxUpdateUIEvent& aEvent )
|
|
||||||
{
|
|
||||||
switch( aEvent.GetId() )
|
|
||||||
{
|
|
||||||
case ID_TB_MEASUREMENT_TOOL:
|
|
||||||
aEvent.Check( GetToolId() == ID_TB_MEASUREMENT_TOOL );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_NO_TOOL_SELECTED:
|
|
||||||
aEvent.Check( GetToolId() == ID_NO_TOOL_SELECTED );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ID_ZOOM_SELECTION:
|
|
||||||
aEvent.Check( GetToolId() == ID_ZOOM_SELECTION );
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void DISPLAY_FOOTPRINTS_FRAME::SyncMenusAndToolbars()
|
void DISPLAY_FOOTPRINTS_FRAME::SyncMenusAndToolbars()
|
||||||
{
|
{
|
||||||
|
m_mainToolBar->Toggle( CVPCB_ACTIONS::zoomTool, GetToolId() == ID_ZOOM_SELECTION );
|
||||||
|
m_mainToolBar->Refresh();
|
||||||
|
|
||||||
|
m_optionsToolBar->Toggle( CVPCB_ACTIONS::selectionTool, GetToolId() == ID_NO_TOOL_SELECTED );
|
||||||
|
m_optionsToolBar->Toggle( CVPCB_ACTIONS::measureTool, GetToolId() == ID_TB_MEASUREMENT_TOOL );
|
||||||
m_optionsToolBar->Toggle( ACTIONS::metricUnits, GetUserUnits() != INCHES );
|
m_optionsToolBar->Toggle( ACTIONS::metricUnits, GetUserUnits() != INCHES );
|
||||||
m_optionsToolBar->Toggle( ACTIONS::imperialUnits, GetUserUnits() == INCHES );
|
m_optionsToolBar->Toggle( ACTIONS::imperialUnits, GetUserUnits() == INCHES );
|
||||||
|
m_optionsToolBar->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -518,8 +479,6 @@ void DISPLAY_FOOTPRINTS_FRAME::SyncMenusAndToolbars()
|
||||||
void BOARD::Print( PCB_BASE_FRAME* aFrame, wxDC* aDC, const wxPoint& aOffset )
|
void BOARD::Print( PCB_BASE_FRAME* aFrame, wxDC* aDC, const wxPoint& aOffset )
|
||||||
{
|
{
|
||||||
if( !m_modules.empty() )
|
if( !m_modules.empty() )
|
||||||
{
|
|
||||||
GetFirstModule()->Print( aFrame, aDC );
|
GetFirstModule()->Print( aFrame, aDC );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,10 +51,6 @@ public:
|
||||||
|
|
||||||
void OnCloseWindow( wxCloseEvent& Event ) override;
|
void OnCloseWindow( wxCloseEvent& Event ) override;
|
||||||
|
|
||||||
/** UI events:
|
|
||||||
*/
|
|
||||||
void OnUIToolSelection( wxUpdateUIEvent& aEvent );
|
|
||||||
|
|
||||||
void ReCreateHToolbar() override;
|
void ReCreateHToolbar() override;
|
||||||
void ReCreateVToolbar() override;
|
void ReCreateVToolbar() override;
|
||||||
void ReCreateOptToolbar() override;
|
void ReCreateOptToolbar() override;
|
||||||
|
@ -109,11 +105,6 @@ public:
|
||||||
///> @copydoc EDA_DRAW_FRAME::GetHotKeyDescription()
|
///> @copydoc EDA_DRAW_FRAME::GetHotKeyDescription()
|
||||||
EDA_HOTKEY* GetHotKeyDescription( int aCommand ) const override { return NULL; }
|
EDA_HOTKEY* GetHotKeyDescription( int aCommand ) const override { return NULL; }
|
||||||
|
|
||||||
/**
|
|
||||||
* Display 3D frame of current footprint selection.
|
|
||||||
*/
|
|
||||||
void Show3D_Frame( wxCommandEvent& event ) override;
|
|
||||||
|
|
||||||
/* SaveCopyInUndoList() virtual
|
/* SaveCopyInUndoList() virtual
|
||||||
* currently: do nothing in CvPcb.
|
* currently: do nothing in CvPcb.
|
||||||
* but but be defined because it is a pure virtual in PCB_BASE_FRAME
|
* but but be defined because it is a pure virtual in PCB_BASE_FRAME
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2013-2016 CERN
|
|
||||||
* Copyright (C) 2018-2019 KiCad Developers, see AUTHORS.txt for contributors.
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "cvpcb_actions.h"
|
|
||||||
#include <cvpcb_id.h>
|
|
||||||
|
|
||||||
|
|
||||||
OPT<TOOL_EVENT> CVPCB_ACTIONS::TranslateLegacyId( int aId )
|
|
||||||
{
|
|
||||||
switch( aId )
|
|
||||||
{
|
|
||||||
case ID_TB_MEASUREMENT_TOOL:
|
|
||||||
return CVPCB_ACTIONS::measureTool.MakeEvent();
|
|
||||||
|
|
||||||
case ID_NO_TOOL_SELECTED:
|
|
||||||
return CVPCB_ACTIONS::no_selectionTool.MakeEvent();
|
|
||||||
}
|
|
||||||
|
|
||||||
return OPT<TOOL_EVENT>();
|
|
||||||
}
|
|
|
@ -47,19 +47,12 @@ public:
|
||||||
static TOOL_ACTION selectionActivate;
|
static TOOL_ACTION selectionActivate;
|
||||||
|
|
||||||
/// Tool selection
|
/// Tool selection
|
||||||
static TOOL_ACTION no_selectionTool;
|
static TOOL_ACTION selectionTool;
|
||||||
static TOOL_ACTION measureTool;
|
static TOOL_ACTION measureTool;
|
||||||
|
|
||||||
// Miscellaneous
|
|
||||||
static TOOL_ACTION zoomTool;
|
|
||||||
static TOOL_ACTION switchCursor;
|
|
||||||
static TOOL_ACTION switchUnits;
|
|
||||||
static TOOL_ACTION showHelp;
|
|
||||||
static TOOL_ACTION toBeDone;
|
|
||||||
|
|
||||||
|
|
||||||
///> @copydoc COMMON_ACTIONS::TranslateLegacyId()
|
///> @copydoc COMMON_ACTIONS::TranslateLegacyId()
|
||||||
virtual OPT<TOOL_EVENT> TranslateLegacyId( int aId ) override;
|
virtual OPT<TOOL_EVENT> TranslateLegacyId( int aId ) override { return OPT<TOOL_EVENT>(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014-2016 CERN
|
* Copyright (C) 2014-2016 CERN
|
||||||
* @author Maciej Suminski <maciej.suminski@cern.ch>
|
* @author Maciej Suminski <maciej.suminski@cern.ch>
|
||||||
* Copyright (C) 2007-2018 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2007-2019 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -24,47 +24,15 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
#include <view/view.h>
|
|
||||||
#include "cvpcb_actions.h"
|
#include "cvpcb_actions.h"
|
||||||
#include "cvpcb_control.h"
|
#include "cvpcb_control.h"
|
||||||
|
|
||||||
#include <class_board.h>
|
|
||||||
|
|
||||||
#include <hotkeys.h>
|
|
||||||
#include <properties.h>
|
|
||||||
|
|
||||||
#include <cvpcb_id.h>
|
|
||||||
#include <tool/tool_manager.h>
|
|
||||||
#include <view/view_controls.h>
|
|
||||||
#include <tools/grid_helper.h> // from pcbnew
|
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
|
|
||||||
|
|
||||||
// Miscellaneous
|
|
||||||
TOOL_ACTION CVPCB_ACTIONS::switchCursor( "cvpcb.Control.switchCursor",
|
|
||||||
AS_GLOBAL, 0,
|
|
||||||
"", "" );
|
|
||||||
|
|
||||||
TOOL_ACTION CVPCB_ACTIONS::switchUnits( "cvpcb.Control.switchUnits",
|
|
||||||
AS_GLOBAL, 'U',//TOOL_ACTION::LegacyHotKey( HK_SWITCH_UNITS ),
|
|
||||||
"", "" );
|
|
||||||
|
|
||||||
TOOL_ACTION CVPCB_ACTIONS::no_selectionTool( "cvpcb.Control.no_selectionTool",
|
|
||||||
AS_GLOBAL, ESC,
|
|
||||||
"", "", NULL, AF_ACTIVATE );
|
|
||||||
|
|
||||||
|
|
||||||
///////////////
|
|
||||||
CVPCB_CONTROL::CVPCB_CONTROL() :
|
CVPCB_CONTROL::CVPCB_CONTROL() :
|
||||||
TOOL_INTERACTIVE( "cvpcb.Control" ), m_frame( NULL )
|
TOOL_INTERACTIVE( "cvpcb.Control" ),
|
||||||
{
|
m_frame( nullptr )
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CVPCB_CONTROL::~CVPCB_CONTROL()
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,21 +43,9 @@ void CVPCB_CONTROL::Reset( RESET_REASON aReason )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Miscellaneous
|
int CVPCB_CONTROL::Show3DViewer( const TOOL_EVENT& aEvent )
|
||||||
int CVPCB_CONTROL::SwitchCursor( const TOOL_EVENT& aEvent )
|
|
||||||
{
|
{
|
||||||
auto& galOpts = m_frame->GetGalDisplayOptions();
|
m_frame->CreateAndShow3D_Frame();
|
||||||
|
|
||||||
galOpts.m_fullscreenCursor = !galOpts.m_fullscreenCursor;
|
|
||||||
galOpts.NotifyChanged();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int CVPCB_CONTROL::SwitchUnits( const TOOL_EVENT& aEvent )
|
|
||||||
{
|
|
||||||
m_frame->ChangeUserUnits( m_frame->GetUserUnits() == INCHES ? MILLIMETRES : INCHES );
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,6 +53,5 @@ int CVPCB_CONTROL::SwitchUnits( const TOOL_EVENT& aEvent )
|
||||||
void CVPCB_CONTROL::setTransitions()
|
void CVPCB_CONTROL::setTransitions()
|
||||||
{
|
{
|
||||||
// Miscellaneous
|
// Miscellaneous
|
||||||
Go( &CVPCB_CONTROL::SwitchCursor, CVPCB_ACTIONS::switchCursor.MakeEvent() );
|
Go( &CVPCB_CONTROL::Show3DViewer, ACTIONS::show3DViewer.MakeEvent() );
|
||||||
Go( &CVPCB_CONTROL::SwitchUnits, CVPCB_ACTIONS::switchUnits.MakeEvent() );
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,9 +29,6 @@
|
||||||
#include <tool/tool_interactive.h>
|
#include <tool/tool_interactive.h>
|
||||||
#include <display_footprints_frame.h>
|
#include <display_footprints_frame.h>
|
||||||
|
|
||||||
namespace KIGFX {
|
|
||||||
class ORIGIN_VIEWITEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CVPCB_CONTROL
|
* Class CVPCB_CONTROL
|
||||||
|
@ -43,14 +40,12 @@ class CVPCB_CONTROL : public TOOL_INTERACTIVE
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CVPCB_CONTROL();
|
CVPCB_CONTROL();
|
||||||
~CVPCB_CONTROL();
|
~CVPCB_CONTROL() { }
|
||||||
|
|
||||||
/// @copydoc TOOL_INTERACTIVE::Reset()
|
/// @copydoc TOOL_INTERACTIVE::Reset()
|
||||||
void Reset( RESET_REASON aReason ) override;
|
void Reset( RESET_REASON aReason ) override;
|
||||||
|
|
||||||
// Miscellaneous
|
int Show3DViewer( const TOOL_EVENT& aEvent );
|
||||||
int SwitchCursor( const TOOL_EVENT& aEvent );
|
|
||||||
int SwitchUnits( const TOOL_EVENT& aEvent );
|
|
||||||
|
|
||||||
///> Sets up handlers for various events.
|
///> Sets up handlers for various events.
|
||||||
void setTransitions() override;
|
void setTransitions() override;
|
||||||
|
@ -58,14 +53,6 @@ public:
|
||||||
private:
|
private:
|
||||||
///> Pointer to the currently used edit/draw frame.
|
///> Pointer to the currently used edit/draw frame.
|
||||||
DISPLAY_FOOTPRINTS_FRAME* m_frame;
|
DISPLAY_FOOTPRINTS_FRAME* m_frame;
|
||||||
|
|
||||||
///> Grid origin marker.
|
|
||||||
std::unique_ptr<KIGFX::ORIGIN_VIEWITEM> m_gridOrigin;
|
|
||||||
|
|
||||||
KIGFX::VIEW* view()
|
|
||||||
{
|
|
||||||
return m_frame->GetGalCanvas()->GetView();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2018-2019 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* 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
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
@ -25,41 +25,40 @@ using namespace std::placeholders;
|
||||||
#include <class_draw_panel_gal.h>
|
#include <class_draw_panel_gal.h>
|
||||||
#include <view/view.h>
|
#include <view/view.h>
|
||||||
#include <hotkeys.h>
|
#include <hotkeys.h>
|
||||||
|
#include <bitmaps.h>
|
||||||
#include <tool/tool_event.h>
|
#include <tool/tool_event.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
|
#include <tools/cvpcb_actions.h>
|
||||||
#include <preview_items/ruler_item.h>
|
#include <preview_items/ruler_item.h>
|
||||||
|
|
||||||
#include <cvpcb_id.h>
|
#include <cvpcb_id.h>
|
||||||
|
#include <tools/cvpcb_selection_tool.h>
|
||||||
|
|
||||||
#include "cvpcb_selection_tool.h"
|
|
||||||
#include "cvpcb_actions.h"
|
|
||||||
|
|
||||||
// Selection tool actions
|
// Selection tool actions
|
||||||
TOOL_ACTION CVPCB_ACTIONS::selectionActivate( "cvpcb.InteractiveSelection",
|
TOOL_ACTION CVPCB_ACTIONS::selectionActivate( "cvpcb.InteractiveSelection",
|
||||||
AS_GLOBAL, 0,
|
AS_GLOBAL, 0,
|
||||||
"", "", NULL, AF_ACTIVATE ); // No description, it is not supposed to be shown anywhere
|
"", "", NULL, AF_ACTIVATE ); // No description, it is not supposed to be shown anywhere
|
||||||
|
|
||||||
|
// Selection tool actions
|
||||||
|
TOOL_ACTION CVPCB_ACTIONS::selectionTool( "cvpcb.InteractiveSelection.selectionTool",
|
||||||
|
AS_GLOBAL, 0,
|
||||||
|
_( "Select item(s)" ), "",
|
||||||
|
cursor_xpm, AF_ACTIVATE );
|
||||||
|
|
||||||
TOOL_ACTION CVPCB_ACTIONS::measureTool( "cvpcb.InteractiveSelection.measureTool",
|
TOOL_ACTION CVPCB_ACTIONS::measureTool( "cvpcb.InteractiveSelection.measureTool",
|
||||||
AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_MEASURE_TOOL ),
|
AS_GLOBAL, TOOL_ACTION::LegacyHotKey( HK_MEASURE_TOOL ),
|
||||||
_( "Measure Tool" ), _( "Interactively measure distance between points" ),
|
_( "Measure Tool" ), _( "Interactively measure distance between points" ),
|
||||||
nullptr, AF_ACTIVATE );
|
measurement_xpm, AF_ACTIVATE );
|
||||||
|
|
||||||
|
|
||||||
CVPCB_SELECTION_TOOL::CVPCB_SELECTION_TOOL() :
|
CVPCB_SELECTION_TOOL::CVPCB_SELECTION_TOOL() :
|
||||||
TOOL_INTERACTIVE( "cvpcb.InteractiveSelection" ),
|
TOOL_INTERACTIVE( "cvpcb.InteractiveSelection" ),
|
||||||
m_frame( NULL ), m_menu( *this )
|
m_frame( nullptr ),
|
||||||
|
m_menu( *this )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CVPCB_SELECTION_TOOL::~CVPCB_SELECTION_TOOL()
|
|
||||||
{
|
|
||||||
getView()->Remove( &m_selection );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool CVPCB_SELECTION_TOOL::Init()
|
bool CVPCB_SELECTION_TOOL::Init()
|
||||||
{
|
{
|
||||||
m_menu.AddStandardSubMenus( getEditFrame<DISPLAY_FOOTPRINTS_FRAME>() );
|
m_menu.AddStandardSubMenus( getEditFrame<DISPLAY_FOOTPRINTS_FRAME>() );
|
||||||
|
@ -127,42 +126,6 @@ int CVPCB_SELECTION_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SELECTION& CVPCB_SELECTION_TOOL::GetSelection()
|
|
||||||
{
|
|
||||||
return m_selection;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void CVPCB_SELECTION_TOOL::setTransitions()
|
|
||||||
{
|
|
||||||
Go( &CVPCB_SELECTION_TOOL::Main, CVPCB_ACTIONS::selectionActivate.MakeEvent() );
|
|
||||||
Go( &CVPCB_SELECTION_TOOL::MeasureTool, CVPCB_ACTIONS::measureTool.MakeEvent() );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
void CVPCB_SELECTION_TOOL::zoomFitSelection( void )
|
|
||||||
{
|
|
||||||
//Should recalculate the view to zoom in on the selection
|
|
||||||
auto selectionBox = m_selection.ViewBBox();
|
|
||||||
auto canvas = m_frame->GetGalCanvas();
|
|
||||||
auto view = getView();
|
|
||||||
|
|
||||||
VECTOR2D screenSize = view->ToWorld( canvas->GetClientSize(), false );
|
|
||||||
|
|
||||||
if( !( selectionBox.GetWidth() == 0 ) || !( selectionBox.GetHeight() == 0 ) )
|
|
||||||
{
|
|
||||||
VECTOR2D vsize = selectionBox.GetSize();
|
|
||||||
double scale = view->GetScale() / std::max( fabs( vsize.x / screenSize.x ),
|
|
||||||
fabs( vsize.y / screenSize.y ) );
|
|
||||||
view->SetScale( scale );
|
|
||||||
view->SetCenter( selectionBox.Centre() );
|
|
||||||
view->Add( &m_selection );
|
|
||||||
}
|
|
||||||
|
|
||||||
m_frame->GetGalCanvas()->ForceRefresh();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
int CVPCB_SELECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent )
|
int CVPCB_SELECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
auto& view = *getView();
|
auto& view = *getView();
|
||||||
|
@ -170,8 +133,7 @@ int CVPCB_SELECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent )
|
||||||
auto previous_settings = controls.GetSettings();
|
auto previous_settings = controls.GetSettings();
|
||||||
|
|
||||||
Activate();
|
Activate();
|
||||||
m_frame->SetToolID( ID_TB_MEASUREMENT_TOOL, wxCURSOR_PENCIL,
|
m_frame->SetToolID( ID_TB_MEASUREMENT_TOOL, wxCURSOR_PENCIL, _( "Measure distance" ) );
|
||||||
_( "Measure distance" ) );
|
|
||||||
|
|
||||||
KIGFX::PREVIEW::TWO_POINT_GEOMETRY_MANAGER twoPtMgr;
|
KIGFX::PREVIEW::TWO_POINT_GEOMETRY_MANAGER twoPtMgr;
|
||||||
KIGFX::PREVIEW::RULER_ITEM ruler( twoPtMgr, m_frame->GetUserUnits() );
|
KIGFX::PREVIEW::RULER_ITEM ruler( twoPtMgr, m_frame->GetUserUnits() );
|
||||||
|
@ -259,34 +221,19 @@ int CVPCB_SELECTION_TOOL::MeasureTool( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
const BOX2I SELECTION::ViewBBox() const
|
const BOX2I SELECTION::ViewBBox() const
|
||||||
{
|
{
|
||||||
EDA_RECT eda_bbox;
|
return BOX2I();
|
||||||
|
|
||||||
if( Size() == 1 )
|
|
||||||
{
|
|
||||||
eda_bbox = Front()->GetBoundingBox();
|
|
||||||
}
|
|
||||||
else if( Size() > 1 )
|
|
||||||
{
|
|
||||||
eda_bbox = Front()->GetBoundingBox();
|
|
||||||
auto i = m_items.begin();
|
|
||||||
++i;
|
|
||||||
|
|
||||||
for( ; i != m_items.end(); ++i )
|
|
||||||
{
|
|
||||||
eda_bbox.Merge( (*i)->GetBoundingBox() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return BOX2I( eda_bbox.GetOrigin(), eda_bbox.GetSize() );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const KIGFX::VIEW_GROUP::ITEMS SELECTION::updateDrawList() const
|
const KIGFX::VIEW_GROUP::ITEMS SELECTION::updateDrawList() const
|
||||||
{
|
{
|
||||||
std::vector<VIEW_ITEM*> items;
|
return std::vector<VIEW_ITEM*>();
|
||||||
|
|
||||||
for( auto item : m_items )
|
|
||||||
items.push_back( item );
|
|
||||||
|
|
||||||
return items;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CVPCB_SELECTION_TOOL::setTransitions()
|
||||||
|
{
|
||||||
|
Go( &CVPCB_SELECTION_TOOL::Main, CVPCB_ACTIONS::selectionActivate.MakeEvent() );
|
||||||
|
Go( &CVPCB_SELECTION_TOOL::MeasureTool, CVPCB_ACTIONS::measureTool.MakeEvent() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2018-2019 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* 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
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
@ -24,19 +24,9 @@
|
||||||
#include <tool/tool_interactive.h>
|
#include <tool/tool_interactive.h>
|
||||||
#include <tool/action_menu.h>
|
#include <tool/action_menu.h>
|
||||||
#include <tool/selection.h>
|
#include <tool/selection.h>
|
||||||
#include <tool/selection_conditions.h>
|
|
||||||
#include <tool/tool_menu.h>
|
#include <tool/tool_menu.h>
|
||||||
|
|
||||||
#include <display_footprints_frame.h>
|
#include <display_footprints_frame.h>
|
||||||
|
|
||||||
class SELECTION_AREA;
|
|
||||||
class GERBER_COLLECTOR;
|
|
||||||
|
|
||||||
namespace KIGFX
|
|
||||||
{
|
|
||||||
class GAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class CVPCB_SELECTION_TOOL
|
* Class CVPCB_SELECTION_TOOL
|
||||||
|
@ -47,7 +37,7 @@ class CVPCB_SELECTION_TOOL : public TOOL_INTERACTIVE
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CVPCB_SELECTION_TOOL();
|
CVPCB_SELECTION_TOOL();
|
||||||
~CVPCB_SELECTION_TOOL();
|
~CVPCB_SELECTION_TOOL() { }
|
||||||
|
|
||||||
/// @copydoc TOOL_BASE::Init()
|
/// @copydoc TOOL_BASE::Init()
|
||||||
bool Init() override;
|
bool Init() override;
|
||||||
|
@ -55,6 +45,8 @@ public:
|
||||||
/// @copydoc TOOL_BASE::Reset()
|
/// @copydoc TOOL_BASE::Reset()
|
||||||
void Reset( RESET_REASON aReason ) override;
|
void Reset( RESET_REASON aReason ) override;
|
||||||
|
|
||||||
|
inline TOOL_MENU& GetToolMenu() { return m_menu; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Main()
|
* Function Main()
|
||||||
*
|
*
|
||||||
|
@ -62,17 +54,10 @@ public:
|
||||||
*/
|
*/
|
||||||
int Main( const TOOL_EVENT& aEvent );
|
int Main( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
/** Returns the set of currently selected items.
|
/**
|
||||||
*/
|
* Selections aren't currently supported in the footprint viewer.
|
||||||
SELECTION& GetSelection();
|
|
||||||
|
|
||||||
inline TOOL_MENU& GetToolMenu()
|
|
||||||
{
|
|
||||||
return m_menu;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Clears the current selection.
|
|
||||||
*/
|
*/
|
||||||
|
SELECTION& GetSelection() { return m_selection; }
|
||||||
void clearSelection() {};
|
void clearSelection() {};
|
||||||
|
|
||||||
///> Launches a tool to measure between points
|
///> Launches a tool to measure between points
|
||||||
|
@ -81,18 +66,13 @@ public:
|
||||||
///> Sets up handlers for various events.
|
///> Sets up handlers for various events.
|
||||||
void setTransitions() override;
|
void setTransitions() override;
|
||||||
|
|
||||||
///> Zooms the screen to center and fit the current selection.
|
|
||||||
void zoomFitSelection( void );
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/// Pointer to the parent frame.
|
/// Pointer to the parent frame.
|
||||||
DISPLAY_FOOTPRINTS_FRAME* m_frame;
|
DISPLAY_FOOTPRINTS_FRAME* m_frame;
|
||||||
|
|
||||||
/// Current state of selection (not really used: no selection in display footprints frame).
|
/// Current state of selection (not really used: no selection in display footprints frame).
|
||||||
SELECTION m_selection;
|
SELECTION m_selection;
|
||||||
|
|
||||||
/// Menu model displayed by the tool.
|
|
||||||
TOOL_MENU m_menu;
|
TOOL_MENU m_menu;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -112,7 +112,7 @@ public:
|
||||||
* @return false if the 3D view cannot be updated (because the
|
* @return false if the 3D view cannot be updated (because the
|
||||||
* owner of the viewer is not this frame)
|
* owner of the viewer is not this frame)
|
||||||
*/
|
*/
|
||||||
bool Update3DView( const wxString* aTitle = nullptr );
|
virtual void Update3DView( bool aForceReload, const wxString* aTitle = nullptr );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function LoadFootprint
|
* Function LoadFootprint
|
||||||
|
@ -221,22 +221,12 @@ public:
|
||||||
*/
|
*/
|
||||||
const wxString GetZoomLevelIndicator() const override;
|
const wxString GetZoomLevelIndicator() const override;
|
||||||
|
|
||||||
/**
|
|
||||||
* Shows the 3D view frame.
|
|
||||||
* If it does not exist, it is created.
|
|
||||||
* If it exists, and if I am the owner, it is bring to the foreground
|
|
||||||
*/
|
|
||||||
virtual void Show3D_Frame( wxCommandEvent& event );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shows the 3D view frame.
|
* Shows the 3D view frame.
|
||||||
* If it does not exist, it is created.
|
* If it does not exist, it is created.
|
||||||
* If it exists, it is bring to the foreground
|
* If it exists, it is bring to the foreground
|
||||||
* @param aForceRecreateIfNotOwner = true to recreate the 3D frame viewer,
|
|
||||||
* when the owner is not me
|
|
||||||
* @return true if it is shown with me as owner
|
|
||||||
*/
|
*/
|
||||||
virtual bool CreateAndShow3D_Frame( bool aForceRecreateIfNotOwner );
|
EDA_3D_VIEWER* CreateAndShow3D_Frame();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function GetCollectorsGuide
|
* Function GetCollectorsGuide
|
||||||
|
|
|
@ -134,6 +134,7 @@ public:
|
||||||
// Misc
|
// Misc
|
||||||
static TOOL_ACTION acceleratedGraphics;
|
static TOOL_ACTION acceleratedGraphics;
|
||||||
static TOOL_ACTION standardGraphics;
|
static TOOL_ACTION standardGraphics;
|
||||||
|
static TOOL_ACTION show3DViewer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function TranslateLegacyId()
|
* Function TranslateLegacyId()
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
#include "3d_cache/dialogs/panel_prev_model.h"
|
#include "3d_cache/dialogs/panel_prev_model.h"
|
||||||
#include "3d_cache/dialogs/3d_cache_dialogs.h"
|
#include "3d_cache/dialogs/3d_cache_dialogs.h"
|
||||||
#include <bitmaps.h>
|
#include <bitmaps.h>
|
||||||
#include <3d_viewer.h>
|
#include <3d_viewer/eda_3d_viewer.h>
|
||||||
|
|
||||||
#include <dialog_edit_footprint_for_BoardEditor.h>
|
#include <dialog_edit_footprint_for_BoardEditor.h>
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <dialog_text_entry.h>
|
#include <dialog_text_entry.h>
|
||||||
#include <pcbnew.h>
|
#include <pcbnew.h>
|
||||||
#include <kiface_i.h>
|
#include <kiface_i.h>
|
||||||
#include <3d_viewer.h>
|
#include <3d_viewer/eda_3d_viewer.h>
|
||||||
#include <pcb_edit_frame.h>
|
#include <pcb_edit_frame.h>
|
||||||
#include <validators.h>
|
#include <validators.h>
|
||||||
#include <board_design_settings.h>
|
#include <board_design_settings.h>
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
#include <fctsys.h>
|
#include <fctsys.h>
|
||||||
#include <project.h>
|
#include <project.h>
|
||||||
#include <3d_viewer.h> // for KISYS3DMOD
|
#include <3d_viewer/eda_3d_viewer.h> // for KISYS3DMOD
|
||||||
#include <panel_fp_lib_table.h>
|
#include <panel_fp_lib_table.h>
|
||||||
#include <lib_id.h>
|
#include <lib_id.h>
|
||||||
#include <fp_lib_table.h>
|
#include <fp_lib_table.h>
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
#include <project.h>
|
#include <project.h>
|
||||||
#include <wizard_3DShape_Libs_downloader.h>
|
#include <wizard_3DShape_Libs_downloader.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
#include <3d_viewer.h>
|
#include <3d_viewer/eda_3d_viewer.h>
|
||||||
#include <bitmaps.h>
|
#include <bitmaps.h>
|
||||||
|
|
||||||
#include <../github/github_getliblist.h>
|
#include <../github/github_getliblist.h>
|
||||||
|
|
|
@ -132,9 +132,6 @@ BEGIN_EVENT_TABLE( FOOTPRINT_EDIT_FRAME, PCB_BASE_FRAME )
|
||||||
|
|
||||||
EVT_MENU( ID_GRID_SETTINGS, FOOTPRINT_EDIT_FRAME::OnGridSettings )
|
EVT_MENU( ID_GRID_SETTINGS, FOOTPRINT_EDIT_FRAME::OnGridSettings )
|
||||||
|
|
||||||
// Menu 3D Frame
|
|
||||||
EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, FOOTPRINT_EDIT_FRAME::Show3D_Frame )
|
|
||||||
|
|
||||||
// UI update events.
|
// UI update events.
|
||||||
EVT_UPDATE_UI( ID_MODEDIT_DELETE_PART, FOOTPRINT_EDIT_FRAME::OnUpdateModuleTargeted )
|
EVT_UPDATE_UI( ID_MODEDIT_DELETE_PART, FOOTPRINT_EDIT_FRAME::OnUpdateModuleTargeted )
|
||||||
EVT_UPDATE_UI( ID_MODEDIT_LOAD_MODULE_FROM_BOARD,
|
EVT_UPDATE_UI( ID_MODEDIT_LOAD_MODULE_FROM_BOARD,
|
||||||
|
@ -635,17 +632,10 @@ void FOOTPRINT_EDIT_FRAME::ShowChangedLanguage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FOOTPRINT_EDIT_FRAME::Show3D_Frame( wxCommandEvent& event )
|
|
||||||
{
|
|
||||||
bool forceRecreateIfNotOwner = true;
|
|
||||||
CreateAndShow3D_Frame( forceRecreateIfNotOwner );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void FOOTPRINT_EDIT_FRAME::OnModify()
|
void FOOTPRINT_EDIT_FRAME::OnModify()
|
||||||
{
|
{
|
||||||
PCB_BASE_FRAME::OnModify();
|
PCB_BASE_FRAME::OnModify();
|
||||||
Update3DView();
|
Update3DView( false );
|
||||||
m_treePane->GetLibTree()->Refresh();
|
m_treePane->GetLibTree()->Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -146,13 +146,6 @@ public:
|
||||||
///> @copydoc EDA_DRAW_FRAME::GetHotKeyDescription()
|
///> @copydoc EDA_DRAW_FRAME::GetHotKeyDescription()
|
||||||
EDA_HOTKEY* GetHotKeyDescription( int aCommand ) const override;
|
EDA_HOTKEY* GetHotKeyDescription( int aCommand ) const override;
|
||||||
|
|
||||||
BOARD_ITEM* PrepareItemForHotkey( bool failIfCurrentlyEdited );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display 3D view of the footprint (module) being edited.
|
|
||||||
*/
|
|
||||||
void Show3D_Frame( wxCommandEvent& event ) override;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle most of tools og the vertical right toolbar ("Tools" toolbar)
|
* Handle most of tools og the vertical right toolbar ("Tools" toolbar)
|
||||||
*/
|
*/
|
||||||
|
@ -160,8 +153,6 @@ public:
|
||||||
|
|
||||||
void OnUpdateModuleSelected( wxUpdateUIEvent& aEvent );
|
void OnUpdateModuleSelected( wxUpdateUIEvent& aEvent );
|
||||||
void OnUpdateModuleTargeted( wxUpdateUIEvent& aEvent );
|
void OnUpdateModuleTargeted( wxUpdateUIEvent& aEvent );
|
||||||
void OnUpdateSave( wxUpdateUIEvent& aEvent );
|
|
||||||
void OnUpdateSaveAs( wxUpdateUIEvent& aEvent );
|
|
||||||
void OnUpdateLoadModuleFromBoard( wxUpdateUIEvent& aEvent );
|
void OnUpdateLoadModuleFromBoard( wxUpdateUIEvent& aEvent );
|
||||||
void OnUpdateInsertModuleInBoard( wxUpdateUIEvent& aEvent );
|
void OnUpdateInsertModuleInBoard( wxUpdateUIEvent& aEvent );
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,7 @@ void FOOTPRINT_EDIT_FRAME::LoadModuleFromLibrary( LIB_ID aFPID)
|
||||||
|
|
||||||
Zoom_Automatique( false );
|
Zoom_Automatique( false );
|
||||||
|
|
||||||
Update3DView();
|
Update3DView( true );
|
||||||
|
|
||||||
GetScreen()->ClrModify();
|
GetScreen()->ClrModify();
|
||||||
|
|
||||||
|
@ -230,7 +230,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
updateView();
|
updateView();
|
||||||
GetGalCanvas()->Refresh();
|
GetGalCanvas()->Refresh();
|
||||||
Update3DView();
|
Update3DView( true );
|
||||||
|
|
||||||
SyncLibraryTree( false );
|
SyncLibraryTree( false );
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
|
|
||||||
updateView();
|
updateView();
|
||||||
GetGalCanvas()->Refresh();
|
GetGalCanvas()->Refresh();
|
||||||
Update3DView();
|
Update3DView( true );
|
||||||
|
|
||||||
SyncLibraryTree( false );
|
SyncLibraryTree( false );
|
||||||
}
|
}
|
||||||
|
@ -415,7 +415,7 @@ void FOOTPRINT_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
|
||||||
GetScreen()->SetModify();
|
GetScreen()->SetModify();
|
||||||
Zoom_Automatique( false );
|
Zoom_Automatique( false );
|
||||||
GetGalCanvas()->Refresh();
|
GetGalCanvas()->Refresh();
|
||||||
Update3DView();
|
Update3DView( true );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -1006,7 +1006,7 @@ bool FOOTPRINT_EDIT_FRAME::RevertFootprint()
|
||||||
|
|
||||||
Zoom_Automatique( false );
|
Zoom_Automatique( false );
|
||||||
|
|
||||||
Update3DView();
|
Update3DView( true );
|
||||||
|
|
||||||
GetScreen()->ClearUndoRedoList();
|
GetScreen()->ClearUndoRedoList();
|
||||||
GetScreen()->ClrModify();
|
GetScreen()->ClrModify();
|
||||||
|
|
|
@ -83,7 +83,6 @@ BEGIN_EVENT_TABLE( FOOTPRINT_VIEWER_FRAME, EDA_DRAW_FRAME )
|
||||||
EVT_TOOL( ID_MODVIEW_NEXT, FOOTPRINT_VIEWER_FRAME::OnIterateFootprintList )
|
EVT_TOOL( ID_MODVIEW_NEXT, FOOTPRINT_VIEWER_FRAME::OnIterateFootprintList )
|
||||||
EVT_TOOL( ID_MODVIEW_PREVIOUS, FOOTPRINT_VIEWER_FRAME::OnIterateFootprintList )
|
EVT_TOOL( ID_MODVIEW_PREVIOUS, FOOTPRINT_VIEWER_FRAME::OnIterateFootprintList )
|
||||||
EVT_TOOL( ID_ADD_FOOTPRINT_TO_BOARD, FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB )
|
EVT_TOOL( ID_ADD_FOOTPRINT_TO_BOARD, FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB )
|
||||||
EVT_TOOL( ID_MODVIEW_SHOW_3D_VIEW, FOOTPRINT_VIEWER_FRAME::Show3D_Frame )
|
|
||||||
EVT_CHOICE( ID_ON_ZOOM_SELECT, FOOTPRINT_VIEWER_FRAME::OnSelectZoom )
|
EVT_CHOICE( ID_ON_ZOOM_SELECT, FOOTPRINT_VIEWER_FRAME::OnSelectZoom )
|
||||||
EVT_CHOICE( ID_ON_GRID_SELECT, FOOTPRINT_VIEWER_FRAME::OnSelectGrid )
|
EVT_CHOICE( ID_ON_GRID_SELECT, FOOTPRINT_VIEWER_FRAME::OnSelectGrid )
|
||||||
|
|
||||||
|
@ -433,7 +432,7 @@ void FOOTPRINT_VIEWER_FRAME::ClickOnFootprintList( wxCommandEvent& event )
|
||||||
updateView();
|
updateView();
|
||||||
|
|
||||||
GetGalCanvas()->Refresh();
|
GetGalCanvas()->Refresh();
|
||||||
Update3D_Frame();
|
Update3DView( true );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -632,35 +631,11 @@ bool FOOTPRINT_VIEWER_FRAME::ShowModal( wxString* aFootprint, wxWindow* aParent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FOOTPRINT_VIEWER_FRAME::Show3D_Frame( wxCommandEvent& event )
|
void FOOTPRINT_VIEWER_FRAME::Update3DView( bool aForceReload, const wxString* aTitle )
|
||||||
{
|
|
||||||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
|
||||||
|
|
||||||
// We can probably remove this for 6.0, but just to be safe we'll stick to
|
|
||||||
// one 3DFrame at a time for 5.0
|
|
||||||
if( draw3DFrame )
|
|
||||||
draw3DFrame->Close( true );
|
|
||||||
|
|
||||||
draw3DFrame = new EDA_3D_VIEWER( &Kiway(), this, _( "3D Viewer" ) );
|
|
||||||
Update3D_Frame( false );
|
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
|
||||||
// A stronger version of Raise() which promotes the window to its parent's level.
|
|
||||||
draw3DFrame->ReparentQuasiModal();
|
|
||||||
#else
|
|
||||||
draw3DFrame->Raise(); // Needed with some Window Managers
|
|
||||||
#endif
|
|
||||||
|
|
||||||
draw3DFrame->Show( true );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void FOOTPRINT_VIEWER_FRAME::Update3D_Frame( bool aForceReloadFootprint )
|
|
||||||
{
|
{
|
||||||
wxString title = wxString::Format( _( "3D Viewer" ) + wxT( " \u2014 %s" ),
|
wxString title = wxString::Format( _( "3D Viewer" ) + wxT( " \u2014 %s" ),
|
||||||
getCurFootprintName() );
|
getCurFootprintName() );
|
||||||
|
PCB_BASE_FRAME::Update3DView( aForceReload, &title );
|
||||||
Update3DView( &title );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -774,7 +749,7 @@ void FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint( int aMode )
|
||||||
if( footprint )
|
if( footprint )
|
||||||
GetBoard()->Add( footprint, ADD_APPEND );
|
GetBoard()->Add( footprint, ADD_APPEND );
|
||||||
|
|
||||||
Update3D_Frame();
|
Update3DView( true );
|
||||||
|
|
||||||
updateView();
|
updateView();
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,19 +156,12 @@ private:
|
||||||
void SelectAndViewFootprint( int aMode );
|
void SelectAndViewFootprint( int aMode );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Show3D_Frame (virtual)
|
* Function Update3DView
|
||||||
* displays 3D view of the footprint (module) being edited.
|
|
||||||
*/
|
|
||||||
void Show3D_Frame( wxCommandEvent& event ) override;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Update3D_Frame
|
|
||||||
* must be called after a footprint selection
|
* must be called after a footprint selection
|
||||||
* Updates the 3D view and 3D frame title.
|
* Updates the 3D view and 3D frame title.
|
||||||
* @param aForceReloadFootprint = true to reload data (default)
|
* @param aForceReload = true to reload data immediately
|
||||||
* = false to update title only -(after creating the 3D viewer)
|
|
||||||
*/
|
*/
|
||||||
void Update3D_Frame( bool aForceReloadFootprint = true );
|
void Update3DView( bool aForceReload, const wxString* aTitle = nullptr ) override;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Virtual functions, not used here, but needed by PCB_BASE_FRAME
|
* Virtual functions, not used here, but needed by PCB_BASE_FRAME
|
||||||
|
|
|
@ -74,7 +74,6 @@ BEGIN_EVENT_TABLE( FOOTPRINT_WIZARD_FRAME, EDA_DRAW_FRAME )
|
||||||
EVT_TOOL( ID_FOOTPRINT_WIZARD_NEXT, FOOTPRINT_WIZARD_FRAME::Process_Special_Functions )
|
EVT_TOOL( ID_FOOTPRINT_WIZARD_NEXT, FOOTPRINT_WIZARD_FRAME::Process_Special_Functions )
|
||||||
EVT_TOOL( ID_FOOTPRINT_WIZARD_PREVIOUS, FOOTPRINT_WIZARD_FRAME::Process_Special_Functions )
|
EVT_TOOL( ID_FOOTPRINT_WIZARD_PREVIOUS, FOOTPRINT_WIZARD_FRAME::Process_Special_Functions )
|
||||||
EVT_TOOL( ID_FOOTPRINT_WIZARD_DONE, FOOTPRINT_WIZARD_FRAME::ExportSelectedFootprint )
|
EVT_TOOL( ID_FOOTPRINT_WIZARD_DONE, FOOTPRINT_WIZARD_FRAME::ExportSelectedFootprint )
|
||||||
EVT_TOOL( ID_FOOTPRINT_WIZARD_SHOW_3D_VIEW, FOOTPRINT_WIZARD_FRAME::Show3D_Frame )
|
|
||||||
|
|
||||||
// listbox events
|
// listbox events
|
||||||
EVT_LISTBOX( ID_FOOTPRINT_WIZARD_PAGE_LIST, FOOTPRINT_WIZARD_FRAME::ClickOnPageList )
|
EVT_LISTBOX( ID_FOOTPRINT_WIZARD_PAGE_LIST, FOOTPRINT_WIZARD_FRAME::ClickOnPageList )
|
||||||
|
@ -571,50 +570,16 @@ void FOOTPRINT_WIZARD_FRAME::OnActivate( wxActivateEvent& event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void FOOTPRINT_WIZARD_FRAME::Show3D_Frame( wxCommandEvent& event )
|
|
||||||
{
|
|
||||||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
|
||||||
|
|
||||||
// We can probably remove this for 6.0, but just to be safe we'll stick to
|
|
||||||
// one 3DFrame at a time for 5.0
|
|
||||||
if( draw3DFrame )
|
|
||||||
draw3DFrame->Close( true );
|
|
||||||
|
|
||||||
draw3DFrame = new EDA_3D_VIEWER( &Kiway(), this, _( "3D Viewer" ) );
|
|
||||||
Update3D_Frame( false );
|
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
|
||||||
// A stronger version of Raise() which promotes the window to its parent's level.
|
|
||||||
draw3DFrame->ReparentQuasiModal();
|
|
||||||
#else
|
|
||||||
draw3DFrame->Raise(); // Needed with some Window Managers
|
|
||||||
#endif
|
|
||||||
|
|
||||||
draw3DFrame->Show( true );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Update3D_Frame
|
* Function Update3DView
|
||||||
* must be called after a footprint selection
|
* must be called after a footprint selection
|
||||||
* Updates the 3D view and 3D frame title.
|
* Updates the 3D view and 3D frame title.
|
||||||
*/
|
*/
|
||||||
void FOOTPRINT_WIZARD_FRAME::Update3D_Frame( bool aForceReloadFootprint )
|
void FOOTPRINT_WIZARD_FRAME::Update3DView( bool aForceReload, const wxString* aTitle )
|
||||||
{
|
{
|
||||||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
|
||||||
|
|
||||||
if( draw3DFrame == NULL )
|
|
||||||
return;
|
|
||||||
|
|
||||||
wxString frm3Dtitle;
|
wxString frm3Dtitle;
|
||||||
frm3Dtitle.Printf( _( "ModView: 3D Viewer [%s]" ), GetChars( m_wizardName ) );
|
frm3Dtitle.Printf( _( "ModView: 3D Viewer [%s]" ), GetChars( m_wizardName ) );
|
||||||
draw3DFrame->SetTitle( frm3Dtitle );
|
PCB_BASE_FRAME::Update3DView( aForceReload, &frm3Dtitle );
|
||||||
|
|
||||||
if( aForceReloadFootprint )
|
|
||||||
{
|
|
||||||
// Force 3D screen refresh immediately
|
|
||||||
draw3DFrame->NewDisplay( true );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -646,9 +611,7 @@ void FOOTPRINT_WIZARD_FRAME::ReCreateHToolbar()
|
||||||
_( "Select next parameters page" ) );
|
_( "Select next parameters page" ) );
|
||||||
|
|
||||||
m_mainToolBar->AddSeparator();
|
m_mainToolBar->AddSeparator();
|
||||||
m_mainToolBar->AddTool( ID_FOOTPRINT_WIZARD_SHOW_3D_VIEW, wxEmptyString,
|
m_mainToolBar->Add( ACTIONS::show3DViewer );
|
||||||
KiBitmap( three_d_xpm ),
|
|
||||||
_( "Show footprint in 3D viewer" ) );
|
|
||||||
|
|
||||||
m_mainToolBar->AddSeparator();
|
m_mainToolBar->AddSeparator();
|
||||||
m_mainToolBar->Add( ACTIONS::zoomRedraw );
|
m_mainToolBar->Add( ACTIONS::zoomRedraw );
|
||||||
|
|
|
@ -204,20 +204,14 @@ private:
|
||||||
*/
|
*/
|
||||||
void ParametersUpdated( wxGridEvent& event );
|
void ParametersUpdated( wxGridEvent& event );
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Show3D_Frame (virtual)
|
|
||||||
* displays 3D view of the footprint (module) being edited.
|
|
||||||
*/
|
|
||||||
void Show3D_Frame( wxCommandEvent& event ) override;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function Update3D_Frame
|
* Function Update3D_Frame
|
||||||
* must be called after a footprint selection
|
* must be called after a footprint selection
|
||||||
* Updates the 3D view and 3D frame title.
|
* Updates the 3D view and 3D frame title.
|
||||||
* @param aForceReloadFootprint = true to reload data (default)
|
* @param aForceReload = true to reload data immediately
|
||||||
* = false to update title only -(aftre creating the 3D viewer)
|
* @param aTitle (optional) the window title to set for the viewer
|
||||||
*/
|
*/
|
||||||
void Update3D_Frame( bool aForceReloadFootprint = true );
|
void Update3DView( bool aForceReload, const wxString* aTitle ) override;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Virtual functions, not used here, but needed by PCB_BASE_FRAME
|
* Virtual functions, not used here, but needed by PCB_BASE_FRAME
|
||||||
|
|
|
@ -150,7 +150,7 @@ bool FOOTPRINT_EDIT_FRAME::Load_Module_From_BOARD( MODULE* aModule )
|
||||||
if( !is_last_fp_from_brd )
|
if( !is_last_fp_from_brd )
|
||||||
ReCreateHToolbar();
|
ReCreateHToolbar();
|
||||||
|
|
||||||
Update3DView();
|
Update3DView( true );
|
||||||
updateView();
|
updateView();
|
||||||
GetGalCanvas()->Refresh();
|
GetGalCanvas()->Refresh();
|
||||||
m_treePane->GetLibTree()->Refresh(); // update any previously-highlighted items
|
m_treePane->GetLibTree()->Refresh(); // update any previously-highlighted items
|
||||||
|
|
|
@ -212,10 +212,7 @@ void FOOTPRINT_EDIT_FRAME::ReCreateMenuBar()
|
||||||
_( "Browse footprint libraries" ),
|
_( "Browse footprint libraries" ),
|
||||||
modview_icon_xpm, SELECTION_CONDITIONS::ShowAlways );
|
modview_icon_xpm, SELECTION_CONDITIONS::ShowAlways );
|
||||||
|
|
||||||
viewMenu->AddItem( ID_MENU_PCB_SHOW_3D_FRAME,
|
viewMenu->AddItem( ACTIONS::show3DViewer, SELECTION_CONDITIONS::ShowAlways );
|
||||||
AddHotkeyName( _( "&3D Viewer" ), m_hotkeysDescrList, HK_3D_VIEWER ),
|
|
||||||
_( "Show footprint in 3D viewer" ),
|
|
||||||
three_d_xpm, SELECTION_CONDITIONS::ShowAlways );
|
|
||||||
|
|
||||||
viewMenu->AddSeparator();
|
viewMenu->AddSeparator();
|
||||||
viewMenu->AddItem( ACTIONS::zoomInCenter, SELECTION_CONDITIONS::ShowAlways );
|
viewMenu->AddItem( ACTIONS::zoomInCenter, SELECTION_CONDITIONS::ShowAlways );
|
||||||
|
|
|
@ -351,10 +351,7 @@ void PCB_EDIT_FRAME::ReCreateMenuBar()
|
||||||
_( "Footprint &Library Browser" ), _( "Browse footprint libraries" ),
|
_( "Footprint &Library Browser" ), _( "Browse footprint libraries" ),
|
||||||
modview_icon_xpm, SELECTION_CONDITIONS::ShowAlways );
|
modview_icon_xpm, SELECTION_CONDITIONS::ShowAlways );
|
||||||
|
|
||||||
viewMenu->AddItem( ID_MENU_PCB_SHOW_3D_FRAME,
|
viewMenu->AddItem( ACTIONS::show3DViewer, SELECTION_CONDITIONS::ShowAlways );
|
||||||
AddHotkeyName( _( "&3D Viewer" ), g_Board_Editor_Hotkeys_Descr, HK_3D_VIEWER ),
|
|
||||||
_( "Show board in 3D viewer" ),
|
|
||||||
three_d_xpm, SELECTION_CONDITIONS::ShowAlways );
|
|
||||||
|
|
||||||
viewMenu->AddSeparator();
|
viewMenu->AddSeparator();
|
||||||
viewMenu->AddItem( ACTIONS::zoomInCenter, SELECTION_CONDITIONS::ShowAlways );
|
viewMenu->AddItem( ACTIONS::zoomInCenter, SELECTION_CONDITIONS::ShowAlways );
|
||||||
|
|
|
@ -120,34 +120,20 @@ EDA_3D_VIEWER* PCB_BASE_FRAME::Get3DViewerFrame()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PCB_BASE_FRAME::Update3DView( const wxString* aTitle )
|
void PCB_BASE_FRAME::Update3DView( bool aForceReload, const wxString* aTitle )
|
||||||
{
|
{
|
||||||
// Update the 3D view only if the viewer is opened by this frame
|
// Update the 3D view only if the viewer is opened by this frame
|
||||||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
||||||
|
|
||||||
if( draw3DFrame == NULL )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// Ensure the viewer was created by me, and not by another editor:
|
|
||||||
PCB_BASE_FRAME* owner = draw3DFrame->Parent();
|
|
||||||
|
|
||||||
// if I am not the owner, do not use the current viewer instance
|
// if I am not the owner, do not use the current viewer instance
|
||||||
if( this != owner )
|
// JEY TODO: need to keep looking for one that is ours....
|
||||||
return false;
|
if( !draw3DFrame || draw3DFrame->Parent() != this )
|
||||||
|
return;
|
||||||
|
|
||||||
if( aTitle )
|
if( aTitle )
|
||||||
draw3DFrame->SetTitle( *aTitle );
|
draw3DFrame->SetTitle( *aTitle );
|
||||||
|
|
||||||
// The 3D view update can be time consumming to rebuild a board 3D view.
|
draw3DFrame->NewDisplay( aForceReload );
|
||||||
// So do not use a immediate update in the board editor
|
|
||||||
bool immediate_update = true;
|
|
||||||
|
|
||||||
if( IsType( FRAME_PCB ) )
|
|
||||||
immediate_update = false;
|
|
||||||
|
|
||||||
draw3DFrame->NewDisplay( immediate_update );
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -405,38 +391,16 @@ void PCB_BASE_FRAME::ShowChangedLanguage()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Virtual functions: Do nothing for PCB_BASE_FRAME window
|
EDA_3D_VIEWER* PCB_BASE_FRAME::CreateAndShow3D_Frame()
|
||||||
void PCB_BASE_FRAME::Show3D_Frame( wxCommandEvent& event )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool PCB_BASE_FRAME::CreateAndShow3D_Frame( bool aForceRecreateIfNotOwner )
|
|
||||||
{
|
{
|
||||||
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();
|
||||||
|
|
||||||
// Ensure the viewer was created by me, and not by another editor:
|
|
||||||
PCB_BASE_FRAME* owner = draw3DFrame ? draw3DFrame->Parent() : nullptr;
|
|
||||||
|
|
||||||
// if I am not the owner, do not use the current viewer instance
|
// if I am not the owner, do not use the current viewer instance
|
||||||
if( draw3DFrame && this != owner )
|
if( draw3DFrame && draw3DFrame->Parent() != this )
|
||||||
{
|
draw3DFrame = nullptr;
|
||||||
if( aForceRecreateIfNotOwner )
|
|
||||||
{
|
|
||||||
draw3DFrame->Destroy();
|
|
||||||
draw3DFrame = nullptr;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !draw3DFrame )
|
if( !draw3DFrame )
|
||||||
{
|
|
||||||
draw3DFrame = new EDA_3D_VIEWER( &Kiway(), this, _( "3D Viewer" ) );
|
draw3DFrame = new EDA_3D_VIEWER( &Kiway(), this, _( "3D Viewer" ) );
|
||||||
draw3DFrame->Raise(); // Needed with some Window Managers
|
|
||||||
draw3DFrame->Show( true );
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Raising the window does not show the window on Windows if iconized. This should work
|
// Raising the window does not show the window on Windows if iconized. This should work
|
||||||
// on any platform.
|
// on any platform.
|
||||||
|
@ -444,12 +408,13 @@ bool PCB_BASE_FRAME::CreateAndShow3D_Frame( bool aForceRecreateIfNotOwner )
|
||||||
draw3DFrame->Iconize( false );
|
draw3DFrame->Iconize( false );
|
||||||
|
|
||||||
draw3DFrame->Raise();
|
draw3DFrame->Raise();
|
||||||
|
draw3DFrame->Show( true );
|
||||||
|
|
||||||
// Raising the window does not set the focus on Linux. This should work on any platform.
|
// Raising the window does not set the focus on Linux. This should work on any platform.
|
||||||
if( wxWindow::FindFocus() != draw3DFrame )
|
if( wxWindow::FindFocus() != draw3DFrame )
|
||||||
draw3DFrame->SetFocus();
|
draw3DFrame->SetFocus();
|
||||||
|
|
||||||
return true;
|
return draw3DFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -177,9 +177,6 @@ BEGIN_EVENT_TABLE( PCB_EDIT_FRAME, PCB_BASE_FRAME )
|
||||||
EVT_MENU( ID_MENU_PCB_SWAP_LAYERS, PCB_EDIT_FRAME::Process_Special_Functions )
|
EVT_MENU( ID_MENU_PCB_SWAP_LAYERS, PCB_EDIT_FRAME::Process_Special_Functions )
|
||||||
EVT_MENU( ID_MENU_PCB_EDIT_TEXT_AND_GRAPHICS, PCB_EDIT_FRAME::OnEditTextAndGraphics )
|
EVT_MENU( ID_MENU_PCB_EDIT_TEXT_AND_GRAPHICS, PCB_EDIT_FRAME::OnEditTextAndGraphics )
|
||||||
|
|
||||||
// Menu 3D Frame
|
|
||||||
EVT_MENU( ID_MENU_PCB_SHOW_3D_FRAME, PCB_EDIT_FRAME::Show3D_Frame )
|
|
||||||
|
|
||||||
// Menu Get Design Rules Editor
|
// Menu Get Design Rules Editor
|
||||||
EVT_MENU( ID_BOARD_SETUP_DIALOG, PCB_EDIT_FRAME::ShowBoardSetupDialog )
|
EVT_MENU( ID_BOARD_SETUP_DIALOG, PCB_EDIT_FRAME::ShowBoardSetupDialog )
|
||||||
|
|
||||||
|
@ -599,13 +596,6 @@ void PCB_EDIT_FRAME::OnCloseWindow( wxCloseEvent& Event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PCB_EDIT_FRAME::Show3D_Frame( wxCommandEvent& event )
|
|
||||||
{
|
|
||||||
bool forceRecreateIfNotOwner = true;
|
|
||||||
CreateAndShow3D_Frame( forceRecreateIfNotOwner );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void PCB_EDIT_FRAME::ActivateGalCanvas()
|
void PCB_EDIT_FRAME::ActivateGalCanvas()
|
||||||
{
|
{
|
||||||
PCB_BASE_EDIT_FRAME::ActivateGalCanvas();
|
PCB_BASE_EDIT_FRAME::ActivateGalCanvas();
|
||||||
|
@ -892,7 +882,7 @@ void PCB_EDIT_FRAME::OnModify( )
|
||||||
{
|
{
|
||||||
PCB_BASE_FRAME::OnModify();
|
PCB_BASE_FRAME::OnModify();
|
||||||
|
|
||||||
Update3DView();
|
Update3DView( false );
|
||||||
|
|
||||||
m_ZoneFillsDirty = true;
|
m_ZoneFillsDirty = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -563,12 +563,6 @@ public:
|
||||||
*/
|
*/
|
||||||
void ReFillLayerWidget();
|
void ReFillLayerWidget();
|
||||||
|
|
||||||
/**
|
|
||||||
* Function Show3D_Frame
|
|
||||||
* displays the 3D view of current printed circuit board.
|
|
||||||
*/
|
|
||||||
void Show3D_Frame( wxCommandEvent& event ) override;
|
|
||||||
|
|
||||||
///> @copydoc EDA_DRAW_FRAME::UseGalCanvas()
|
///> @copydoc EDA_DRAW_FRAME::UseGalCanvas()
|
||||||
void ActivateGalCanvas() override;
|
void ActivateGalCanvas() override;
|
||||||
|
|
||||||
|
|
|
@ -149,7 +149,6 @@ enum pcbnew_ids
|
||||||
ID_PCB_GEN_D356_FILE,
|
ID_PCB_GEN_D356_FILE,
|
||||||
|
|
||||||
ID_PCB_GEN_CMP_FILE,
|
ID_PCB_GEN_CMP_FILE,
|
||||||
ID_MENU_PCB_SHOW_3D_FRAME,
|
|
||||||
ID_PCB_GEN_BOM_FILE_FROM_BOARD,
|
ID_PCB_GEN_BOM_FILE_FROM_BOARD,
|
||||||
ID_PCB_3DSHAPELIB_WIZARD,
|
ID_PCB_3DSHAPELIB_WIZARD,
|
||||||
ID_PCB_LIB_TABLE_EDIT,
|
ID_PCB_LIB_TABLE_EDIT,
|
||||||
|
@ -211,12 +210,10 @@ enum pcbnew_ids
|
||||||
ID_MODVIEW_OPTIONS,
|
ID_MODVIEW_OPTIONS,
|
||||||
ID_MODVIEW_PREVIOUS,
|
ID_MODVIEW_PREVIOUS,
|
||||||
ID_MODVIEW_NEXT,
|
ID_MODVIEW_NEXT,
|
||||||
ID_MODVIEW_SHOW_3D_VIEW,
|
|
||||||
|
|
||||||
ID_FOOTPRINT_WIZARD_NEXT,
|
ID_FOOTPRINT_WIZARD_NEXT,
|
||||||
ID_FOOTPRINT_WIZARD_PREVIOUS,
|
ID_FOOTPRINT_WIZARD_PREVIOUS,
|
||||||
ID_FOOTPRINT_WIZARD_DONE,
|
ID_FOOTPRINT_WIZARD_DONE,
|
||||||
ID_FOOTPRINT_WIZARD_SHOW_3D_VIEW,
|
|
||||||
ID_FOOTPRINT_WIZARD_PAGE_LIST,
|
ID_FOOTPRINT_WIZARD_PAGE_LIST,
|
||||||
ID_FOOTPRINT_WIZARD_PARAMETER_LIST,
|
ID_FOOTPRINT_WIZARD_PARAMETER_LIST,
|
||||||
ID_FOOTPRINT_WIZARD_SELECT_WIZARD,
|
ID_FOOTPRINT_WIZARD_SELECT_WIZARD,
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <tool/conditional_menu.h>
|
#include <tool/conditional_menu.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
#include <tools/selection_tool.h>
|
#include <tools/selection_tool.h>
|
||||||
|
#include <tools/pcb_actions.h>
|
||||||
#include "help_common_strings.h"
|
#include "help_common_strings.h"
|
||||||
#include "hotkeys.h"
|
#include "hotkeys.h"
|
||||||
#include "footprint_viewer_frame.h"
|
#include "footprint_viewer_frame.h"
|
||||||
|
@ -76,9 +77,7 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateHToolbar()
|
||||||
m_mainToolBar->Add( ACTIONS::zoomFitScreen );
|
m_mainToolBar->Add( ACTIONS::zoomFitScreen );
|
||||||
|
|
||||||
KiScaledSeparator( m_mainToolBar, this );
|
KiScaledSeparator( m_mainToolBar, this );
|
||||||
m_mainToolBar->AddTool( ID_MODVIEW_SHOW_3D_VIEW, wxEmptyString,
|
m_mainToolBar->Add( ACTIONS::show3DViewer );
|
||||||
KiScaledBitmap( three_d_xpm, this ),
|
|
||||||
_( "Show footprint in 3D viewer" ) );
|
|
||||||
m_mainToolBar->AddTool( ID_ADD_FOOTPRINT_TO_BOARD, wxEmptyString,
|
m_mainToolBar->AddTool( ID_ADD_FOOTPRINT_TO_BOARD, wxEmptyString,
|
||||||
KiScaledBitmap( export_xpm, this ),
|
KiScaledBitmap( export_xpm, this ),
|
||||||
_( "Insert footprint in board" ) );
|
_( "Insert footprint in board" ) );
|
||||||
|
@ -138,16 +137,13 @@ void FOOTPRINT_VIEWER_FRAME::ReCreateMenuBar()
|
||||||
CONDITIONAL_MENU* viewMenu = new CONDITIONAL_MENU( false, selTool );
|
CONDITIONAL_MENU* viewMenu = new CONDITIONAL_MENU( false, selTool );
|
||||||
|
|
||||||
viewMenu->AddSeparator();
|
viewMenu->AddSeparator();
|
||||||
viewMenu->AddItem( ACTIONS::zoomInCenter, SELECTION_CONDITIONS::ShowAlways );
|
viewMenu->AddItem( ACTIONS::zoomInCenter, SELECTION_CONDITIONS::ShowAlways );
|
||||||
viewMenu->AddItem( ACTIONS::zoomOutCenter, SELECTION_CONDITIONS::ShowAlways );
|
viewMenu->AddItem( ACTIONS::zoomOutCenter, SELECTION_CONDITIONS::ShowAlways );
|
||||||
viewMenu->AddItem( ACTIONS::zoomFitScreen, SELECTION_CONDITIONS::ShowAlways );
|
viewMenu->AddItem( ACTIONS::zoomFitScreen, SELECTION_CONDITIONS::ShowAlways );
|
||||||
viewMenu->AddItem( ACTIONS::zoomRedraw, SELECTION_CONDITIONS::ShowAlways );
|
viewMenu->AddItem( ACTIONS::zoomRedraw, SELECTION_CONDITIONS::ShowAlways );
|
||||||
|
|
||||||
viewMenu->AddSeparator();
|
viewMenu->AddSeparator();
|
||||||
viewMenu->AddItem( ID_MODVIEW_SHOW_3D_VIEW,
|
viewMenu->AddItem( ACTIONS::show3DViewer, SELECTION_CONDITIONS::ShowAlways );
|
||||||
AddHotkeyName( _( "3D Viewer" ), g_Module_Viewer_Hotkeys_Descr, HK_3D_VIEWER ),
|
|
||||||
_( "Show footprint in 3D viewer" ),
|
|
||||||
three_d_xpm, SELECTION_CONDITIONS::ShowAlways );
|
|
||||||
|
|
||||||
viewMenu->Resolve();
|
viewMenu->Resolve();
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
#include <io_mgr.h>
|
#include <io_mgr.h>
|
||||||
#include <kicad_plugin.h>
|
#include <kicad_plugin.h>
|
||||||
#include <kicad_clipboard.h>
|
#include <kicad_clipboard.h>
|
||||||
|
#include <3d_viewer/eda_3d_viewer.h>
|
||||||
#include <pcbnew_id.h>
|
#include <pcbnew_id.h>
|
||||||
#include <pcb_edit_frame.h>
|
#include <pcb_edit_frame.h>
|
||||||
#include <pcb_draw_panel_gal.h>
|
#include <pcb_draw_panel_gal.h>
|
||||||
|
@ -993,10 +993,29 @@ int PCBNEW_CONTROL::ShowHelp( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int PCBNEW_CONTROL::Show3DViewer( const TOOL_EVENT& aEvent )
|
||||||
|
{
|
||||||
|
EDA_3D_VIEWER* draw3DFrame = m_frame->CreateAndShow3D_Frame();
|
||||||
|
|
||||||
|
if( m_frame->IsType( FRAME_PCB_MODULE_VIEWER )
|
||||||
|
|| m_frame->IsType( FRAME_PCB_MODULE_VIEWER_MODAL )
|
||||||
|
|| m_frame->IsType( FRAME_PCB_FOOTPRINT_WIZARD ) )
|
||||||
|
{
|
||||||
|
m_frame->Update3DView( true );
|
||||||
|
|
||||||
|
#ifdef __WXMAC__
|
||||||
|
// A stronger version of Raise() which promotes the window to its parent's level.
|
||||||
|
draw3DFrame->ReparentQuasiModal();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int PCBNEW_CONTROL::ToBeDone( const TOOL_EVENT& aEvent )
|
int PCBNEW_CONTROL::ToBeDone( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
DisplayInfoMessage( m_frame, _( "Not available in OpenGL/Cairo canvases." ) );
|
DisplayInfoMessage( m_frame, _( "Not available in OpenGL/Cairo canvases." ) );
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1079,6 +1098,7 @@ void PCBNEW_CONTROL::setTransitions()
|
||||||
// Miscellaneous
|
// Miscellaneous
|
||||||
Go( &PCBNEW_CONTROL::DeleteItemCursor, PCB_ACTIONS::deleteTool.MakeEvent() );
|
Go( &PCBNEW_CONTROL::DeleteItemCursor, PCB_ACTIONS::deleteTool.MakeEvent() );
|
||||||
Go( &PCBNEW_CONTROL::ShowHelp, PCB_ACTIONS::showHelp.MakeEvent() );
|
Go( &PCBNEW_CONTROL::ShowHelp, PCB_ACTIONS::showHelp.MakeEvent() );
|
||||||
|
Go( &PCBNEW_CONTROL::Show3DViewer, ACTIONS::show3DViewer.MakeEvent() );
|
||||||
Go( &PCBNEW_CONTROL::ToBeDone, PCB_ACTIONS::toBeDone.MakeEvent() );
|
Go( &PCBNEW_CONTROL::ToBeDone, PCB_ACTIONS::toBeDone.MakeEvent() );
|
||||||
|
|
||||||
// Append control
|
// Append control
|
||||||
|
|
|
@ -96,6 +96,7 @@ public:
|
||||||
int AppendBoardFromFile( const TOOL_EVENT& aEvent );
|
int AppendBoardFromFile( const TOOL_EVENT& aEvent );
|
||||||
int AppendBoard( PLUGIN& pi, wxString& fileName );
|
int AppendBoard( PLUGIN& pi, wxString& fileName );
|
||||||
int ShowHelp( const TOOL_EVENT& aEvent );
|
int ShowHelp( const TOOL_EVENT& aEvent );
|
||||||
|
int Show3DViewer( const TOOL_EVENT& aEvent );
|
||||||
int ToBeDone( const TOOL_EVENT& aEvent );
|
int ToBeDone( const TOOL_EVENT& aEvent );
|
||||||
int UpdateMessagePanel( const TOOL_EVENT& aEvent );
|
int UpdateMessagePanel( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue