Fixed menu items, moved the copy and cut to the EDIT_TOOL, Fixed rendering when copying a module
This commit is contained in:
parent
7ff096fbac
commit
b4879d061c
|
@ -55,6 +55,8 @@ using namespace std::placeholders;
|
||||||
#include "selection_tool.h"
|
#include "selection_tool.h"
|
||||||
#include "edit_tool.h"
|
#include "edit_tool.h"
|
||||||
#include "grid_helper.h"
|
#include "grid_helper.h"
|
||||||
|
#include "kicad_clipboard.h"
|
||||||
|
#include "pcbnew_control.h"
|
||||||
|
|
||||||
#include <router/router_tool.h>
|
#include <router/router_tool.h>
|
||||||
|
|
||||||
|
@ -161,6 +163,17 @@ TOOL_ACTION PCB_ACTIONS::measureTool( "pcbnew.InteractiveEdit.measureTool",
|
||||||
_( "Measuring tool" ), _( "Interactively measure distance between points" ),
|
_( "Measuring tool" ), _( "Interactively measure distance between points" ),
|
||||||
nullptr, AF_ACTIVATE );
|
nullptr, AF_ACTIVATE );
|
||||||
|
|
||||||
|
TOOL_ACTION PCB_ACTIONS::copyToClipboard( "pcbnew.InteractiveEdit.CopyToClipboard",
|
||||||
|
AS_GLOBAL, MD_CTRL + int( 'C' ),
|
||||||
|
_( "Copy to Clipboard" ), _( "Copy selected content to clipboard" ),
|
||||||
|
copy_xpm );
|
||||||
|
|
||||||
|
TOOL_ACTION PCB_ACTIONS::cutToClipboard( "pcbnew.InteractiveEdit.CutToClipboard",
|
||||||
|
AS_GLOBAL, MD_CTRL + int( 'X' ),
|
||||||
|
_( "Cut to Clipboard" ), _( "Cut selected content to clipboard" ),
|
||||||
|
cut_xpm );
|
||||||
|
|
||||||
|
|
||||||
static wxPoint getAnchorPoint( const SELECTION &selection, const MOVE_PARAMETERS ¶ms )
|
static wxPoint getAnchorPoint( const SELECTION &selection, const MOVE_PARAMETERS ¶ms )
|
||||||
{
|
{
|
||||||
wxPoint anchorPoint;
|
wxPoint anchorPoint;
|
||||||
|
@ -235,8 +248,6 @@ static wxPoint getAnchorPoint( const SELECTION &selection, const MOVE_PARAMETERS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EDIT_TOOL::EDIT_TOOL() :
|
EDIT_TOOL::EDIT_TOOL() :
|
||||||
PCB_TOOL( "pcbnew.InteractiveEdit" ), m_selectionTool( NULL ),
|
PCB_TOOL( "pcbnew.InteractiveEdit" ), m_selectionTool( NULL ),
|
||||||
m_dragging( false )
|
m_dragging( false )
|
||||||
|
@ -289,6 +300,12 @@ bool EDIT_TOOL::Init()
|
||||||
menu.AddItem( PCB_ACTIONS::duplicate, SELECTION_CONDITIONS::NotEmpty );
|
menu.AddItem( PCB_ACTIONS::duplicate, SELECTION_CONDITIONS::NotEmpty );
|
||||||
menu.AddItem( PCB_ACTIONS::createArray, SELECTION_CONDITIONS::NotEmpty );
|
menu.AddItem( PCB_ACTIONS::createArray, SELECTION_CONDITIONS::NotEmpty );
|
||||||
|
|
||||||
|
menu.AddSeparator();
|
||||||
|
menu.AddItem( PCB_ACTIONS::copyToClipboard, SELECTION_CONDITIONS::NotEmpty );
|
||||||
|
menu.AddItem( PCB_ACTIONS::cutToClipboard, SELECTION_CONDITIONS::NotEmpty );
|
||||||
|
menu.AddItem( PCB_ACTIONS::pasteFromClipboard );
|
||||||
|
menu.AddSeparator();
|
||||||
|
|
||||||
// Mirror only available in modedit
|
// Mirror only available in modedit
|
||||||
menu.AddItem( PCB_ACTIONS::mirror, editingModuleCondition && SELECTION_CONDITIONS::NotEmpty );
|
menu.AddItem( PCB_ACTIONS::mirror, editingModuleCondition && SELECTION_CONDITIONS::NotEmpty );
|
||||||
|
|
||||||
|
@ -1211,6 +1228,10 @@ void EDIT_TOOL::setTransitions()
|
||||||
Go( &EDIT_TOOL::editFootprintInFpEditor, PCB_ACTIONS::editFootprintInFpEditor.MakeEvent() );
|
Go( &EDIT_TOOL::editFootprintInFpEditor, PCB_ACTIONS::editFootprintInFpEditor.MakeEvent() );
|
||||||
Go( &EDIT_TOOL::ExchangeFootprints, PCB_ACTIONS::exchangeFootprints.MakeEvent() );
|
Go( &EDIT_TOOL::ExchangeFootprints, PCB_ACTIONS::exchangeFootprints.MakeEvent() );
|
||||||
Go( &EDIT_TOOL::MeasureTool, PCB_ACTIONS::measureTool.MakeEvent() );
|
Go( &EDIT_TOOL::MeasureTool, PCB_ACTIONS::measureTool.MakeEvent() );
|
||||||
|
|
||||||
|
Go( &EDIT_TOOL::copyToClipboard, PCB_ACTIONS::copyToClipboard.MakeEvent() );
|
||||||
|
Go( &EDIT_TOOL::cutToClipboard, PCB_ACTIONS::cutToClipboard.MakeEvent() );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1268,6 +1289,25 @@ int EDIT_TOOL::editFootprintInFpEditor( const TOOL_EVENT& aEvent )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int EDIT_TOOL::copyToClipboard( const TOOL_EVENT& aEvent )
|
||||||
|
{
|
||||||
|
CLIPBOARD_IO io;
|
||||||
|
BOARD* board = getModel<BOARD>();
|
||||||
|
|
||||||
|
io.setBoard( board );
|
||||||
|
auto& selection = m_selectionTool->RequestSelection();
|
||||||
|
io.SaveSelection( selection );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int EDIT_TOOL::cutToClipboard( const TOOL_EVENT& aEvent )
|
||||||
|
{
|
||||||
|
copyToClipboard( aEvent );
|
||||||
|
Remove( aEvent );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class T>
|
template<class T>
|
||||||
T* EDIT_TOOL::uniqueSelected()
|
T* EDIT_TOOL::uniqueSelected()
|
||||||
|
|
|
@ -139,6 +139,22 @@ public:
|
||||||
///> Sets up handlers for various events.
|
///> Sets up handlers for various events.
|
||||||
void setTransitions() override;
|
void setTransitions() override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function copyToClipboard()
|
||||||
|
* Sends the current selection to the clipboard by formatting it as a fake pcb
|
||||||
|
* see AppendBoardFromClipboard for importing
|
||||||
|
* @return True if it was sent succesfully
|
||||||
|
*/
|
||||||
|
int copyToClipboard( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function cutToClipboard()
|
||||||
|
* Sends the current selection to the clipboard by formatting it as a fake pcb
|
||||||
|
* see AppendBoardFromClipboard for importing
|
||||||
|
* @return True if it was sent succesfully
|
||||||
|
*/
|
||||||
|
int cutToClipboard( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
///> Selection tool used for obtaining selected items
|
///> Selection tool used for obtaining selected items
|
||||||
SELECTION_TOOL* m_selectionTool;
|
SELECTION_TOOL* m_selectionTool;
|
||||||
|
|
|
@ -82,8 +82,6 @@ public:
|
||||||
/// Filters the items in the current selection (invokes dialog)
|
/// Filters the items in the current selection (invokes dialog)
|
||||||
static TOOL_ACTION filterSelection;
|
static TOOL_ACTION filterSelection;
|
||||||
|
|
||||||
/// Copy selected items to clipboard
|
|
||||||
static TOOL_ACTION selectionToClipboard;
|
|
||||||
|
|
||||||
// Edit Tool
|
// Edit Tool
|
||||||
/// Activation of the edit tool
|
/// Activation of the edit tool
|
||||||
|
@ -303,6 +301,15 @@ public:
|
||||||
/// Pasting module items from clipboard
|
/// Pasting module items from clipboard
|
||||||
static TOOL_ACTION pasteItems;
|
static TOOL_ACTION pasteItems;
|
||||||
|
|
||||||
|
/// Copy selected items to clipboard
|
||||||
|
static TOOL_ACTION copyToClipboard;
|
||||||
|
|
||||||
|
/// Paste from clipboard
|
||||||
|
static TOOL_ACTION pasteFromClipboard;
|
||||||
|
|
||||||
|
/// Paste from clipboard
|
||||||
|
static TOOL_ACTION cutToClipboard;
|
||||||
|
|
||||||
/// Display module edges as outlines
|
/// Display module edges as outlines
|
||||||
static TOOL_ACTION moduleEdgeOutlines;
|
static TOOL_ACTION moduleEdgeOutlines;
|
||||||
|
|
||||||
|
@ -368,7 +375,6 @@ public:
|
||||||
static TOOL_ACTION drillOrigin;
|
static TOOL_ACTION drillOrigin;
|
||||||
static TOOL_ACTION crossProbeSchToPcb;
|
static TOOL_ACTION crossProbeSchToPcb;
|
||||||
static TOOL_ACTION appendBoard;
|
static TOOL_ACTION appendBoard;
|
||||||
static TOOL_ACTION appendClipboard;
|
|
||||||
static TOOL_ACTION showHelp;
|
static TOOL_ACTION showHelp;
|
||||||
static TOOL_ACTION showLocalRatsnest;
|
static TOOL_ACTION showLocalRatsnest;
|
||||||
static TOOL_ACTION toBeDone;
|
static TOOL_ACTION toBeDone;
|
||||||
|
|
|
@ -142,10 +142,6 @@ TOOL_ACTION PCB_ACTIONS::appendBoard( "pcbnew.EditorControl.appendBoard",
|
||||||
AS_GLOBAL, 0,
|
AS_GLOBAL, 0,
|
||||||
"", "" );
|
"", "" );
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::appendClipboard( "pcbnew.EditorControl.appendClipboard",
|
|
||||||
AS_GLOBAL, MD_CTRL + int( 'V' ),
|
|
||||||
"", "" );
|
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::highlightNet( "pcbnew.EditorControl.highlightNet",
|
TOOL_ACTION PCB_ACTIONS::highlightNet( "pcbnew.EditorControl.highlightNet",
|
||||||
AS_GLOBAL, 0,
|
AS_GLOBAL, 0,
|
||||||
"", "" );
|
"", "" );
|
||||||
|
@ -411,17 +407,21 @@ int PCB_EDITOR_CONTROL::PlaceModule( const TOOL_EVENT& aEvent )
|
||||||
m_frame->SetToolID( ID_PCB_MODULE_BUTT, wxCURSOR_PENCIL, _( "Add footprint" ) );
|
m_frame->SetToolID( ID_PCB_MODULE_BUTT, wxCURSOR_PENCIL, _( "Add footprint" ) );
|
||||||
|
|
||||||
// Add all the drawable parts to preview
|
// Add all the drawable parts to preview
|
||||||
|
VECTOR2I cursorPos = controls->GetCursorPosition();
|
||||||
if( module )
|
if( module )
|
||||||
{
|
{
|
||||||
|
module->SetPosition( wxPoint( cursorPos.x, cursorPos.y ) );
|
||||||
preview.Add( module );
|
preview.Add( module );
|
||||||
|
module->RunOnChildren( std::bind( &KIGFX::VIEW_GROUP::Add, &preview, _1 ) );
|
||||||
|
view->Update( &preview );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Main loop: keep receiving events
|
// Main loop: keep receiving events
|
||||||
while( OPT_TOOL_EVENT evt = Wait() )
|
while( OPT_TOOL_EVENT evt = Wait() )
|
||||||
{
|
{
|
||||||
VECTOR2I cursorPos = controls->GetCursorPosition();
|
cursorPos = controls->GetCursorPosition();
|
||||||
|
|
||||||
if( evt->IsCancel() || evt->IsActivate() )
|
if( evt->IsCancel() )
|
||||||
{
|
{
|
||||||
if( module )
|
if( module )
|
||||||
{
|
{
|
||||||
|
|
|
@ -54,6 +54,7 @@
|
||||||
#include <pcb_painter.h>
|
#include <pcb_painter.h>
|
||||||
#include <origin_viewitem.h>
|
#include <origin_viewitem.h>
|
||||||
#include <board_commit.h>
|
#include <board_commit.h>
|
||||||
|
#include <bitmaps.h>
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
|
@ -224,6 +225,11 @@ TOOL_ACTION PCB_ACTIONS::toBeDone( "pcbnew.Control.toBeDone",
|
||||||
AS_GLOBAL, 0, // dialog saying it is not implemented yet
|
AS_GLOBAL, 0, // dialog saying it is not implemented yet
|
||||||
"", "" ); // so users are aware of that
|
"", "" ); // so users are aware of that
|
||||||
|
|
||||||
|
TOOL_ACTION PCB_ACTIONS::pasteFromClipboard( "pcbnew.InteractiveEdit.pasteFromClipboard",
|
||||||
|
AS_GLOBAL, MD_CTRL + int( 'V' ),
|
||||||
|
_( "Paste from Clipboard" ), _( "Paste content from clipboard" ),
|
||||||
|
paste_xpm );
|
||||||
|
|
||||||
|
|
||||||
PCBNEW_CONTROL::PCBNEW_CONTROL() :
|
PCBNEW_CONTROL::PCBNEW_CONTROL() :
|
||||||
TOOL_INTERACTIVE( "pcbnew.Control" ), m_frame( NULL )
|
TOOL_INTERACTIVE( "pcbnew.Control" ), m_frame( NULL )
|
||||||
|
@ -763,7 +769,7 @@ int PCBNEW_CONTROL::AppendBoardFromClipboard( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PCB_MODULE_T:
|
case PCB_MODULE_T:
|
||||||
|
clipItem->SetParent( board );
|
||||||
if(frame->IsType( FRAME_PCB) )
|
if(frame->IsType( FRAME_PCB) )
|
||||||
{
|
{
|
||||||
m_toolMgr->RunAction( "pcbnew.EditorControl.placeModule", true,
|
m_toolMgr->RunAction( "pcbnew.EditorControl.placeModule", true,
|
||||||
|
@ -1019,8 +1025,9 @@ void PCBNEW_CONTROL::setTransitions()
|
||||||
// Append control
|
// Append control
|
||||||
Go( &PCBNEW_CONTROL::AppendBoardFromFile,
|
Go( &PCBNEW_CONTROL::AppendBoardFromFile,
|
||||||
PCB_ACTIONS::appendBoard.MakeEvent() );
|
PCB_ACTIONS::appendBoard.MakeEvent() );
|
||||||
|
|
||||||
Go( &PCBNEW_CONTROL::AppendBoardFromClipboard,
|
Go( &PCBNEW_CONTROL::AppendBoardFromClipboard,
|
||||||
PCB_ACTIONS::appendClipboard.MakeEvent() );
|
PCB_ACTIONS::pasteFromClipboard.MakeEvent() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,6 @@ using namespace std::placeholders;
|
||||||
#include "pcb_actions.h"
|
#include "pcb_actions.h"
|
||||||
|
|
||||||
#include "kicad_plugin.h"
|
#include "kicad_plugin.h"
|
||||||
#include "kicad_clipboard.h"
|
|
||||||
|
|
||||||
// Selection tool actions
|
// Selection tool actions
|
||||||
TOOL_ACTION PCB_ACTIONS::selectionActivate( "pcbnew.InteractiveSelection",
|
TOOL_ACTION PCB_ACTIONS::selectionActivate( "pcbnew.InteractiveSelection",
|
||||||
|
@ -123,13 +122,6 @@ TOOL_ACTION PCB_ACTIONS::filterSelection( "pcbnew.InteractiveSelection.FilterSel
|
||||||
_( "Filter Selection" ), _( "Filter the types of items in the selection" ),
|
_( "Filter Selection" ), _( "Filter the types of items in the selection" ),
|
||||||
nullptr );
|
nullptr );
|
||||||
|
|
||||||
TOOL_ACTION PCB_ACTIONS::selectionToClipboard( "pcbnew.InteractiveSelection.CopyToClipboard",
|
|
||||||
AS_GLOBAL, MD_CTRL + int( 'C' ),
|
|
||||||
_( "Copy to Clipboard" ), _( "Copy selected content to clipboard" ),
|
|
||||||
nullptr );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SELECT_MENU: public CONTEXT_MENU
|
class SELECT_MENU: public CONTEXT_MENU
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -618,25 +610,11 @@ void SELECTION_TOOL::setTransitions()
|
||||||
Go( &SELECTION_TOOL::selectNet, PCB_ACTIONS::selectNet.MakeEvent() );
|
Go( &SELECTION_TOOL::selectNet, PCB_ACTIONS::selectNet.MakeEvent() );
|
||||||
Go( &SELECTION_TOOL::selectSameSheet, PCB_ACTIONS::selectSameSheet.MakeEvent() );
|
Go( &SELECTION_TOOL::selectSameSheet, PCB_ACTIONS::selectSameSheet.MakeEvent() );
|
||||||
|
|
||||||
Go( &SELECTION_TOOL::selectionToClipboard, PCB_ACTIONS::selectionToClipboard.MakeEvent() );
|
|
||||||
|
|
||||||
Go( &SELECTION_TOOL::selectOnSheetFromEeschema, PCB_ACTIONS::selectOnSheetFromEeschema.MakeEvent() );
|
Go( &SELECTION_TOOL::selectOnSheetFromEeschema, PCB_ACTIONS::selectOnSheetFromEeschema.MakeEvent() );
|
||||||
Go( &SELECTION_TOOL::updateSelection, PCB_ACTIONS::selectionModified.MakeEvent() );
|
Go( &SELECTION_TOOL::updateSelection, PCB_ACTIONS::selectionModified.MakeEvent() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SELECTION_TOOL::selectionToClipboard( const TOOL_EVENT& aEvent )
|
|
||||||
{
|
|
||||||
CLIPBOARD_IO io;
|
|
||||||
BOARD* board = getModel<BOARD>();
|
|
||||||
|
|
||||||
io.setBoard( board );
|
|
||||||
//auto& selection = RequestSelection( SELECTION_DELETABLE | SELECTION_SANITIZE_PADS );
|
|
||||||
auto& selection = GetSelection();
|
|
||||||
io.SaveSelection( selection );
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SELECTION_LOCK_FLAGS SELECTION_TOOL::CheckLock()
|
SELECTION_LOCK_FLAGS SELECTION_TOOL::CheckLock()
|
||||||
{
|
{
|
||||||
|
|
|
@ -299,14 +299,6 @@ private:
|
||||||
*/
|
*/
|
||||||
void unselectVisually( BOARD_ITEM* aItem );
|
void unselectVisually( BOARD_ITEM* aItem );
|
||||||
|
|
||||||
/**
|
|
||||||
* Function selectionToClipboard()
|
|
||||||
* Sends the current selection to the clipboard by formatting it as a fake pcb
|
|
||||||
* see AppendBoardFromClipboard for importing
|
|
||||||
* @return True if it was sent succesfully
|
|
||||||
*/
|
|
||||||
int selectionToClipboard( const TOOL_EVENT& aEvent );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function selectionContains()
|
* Function selectionContains()
|
||||||
* Checks if the given point is placed within any of selected items' bounding box.
|
* Checks if the given point is placed within any of selected items' bounding box.
|
||||||
|
|
Loading…
Reference in New Issue