Cleanup.
This commit is contained in:
parent
9ee28ea8f5
commit
4ba3937f8a
|
@ -200,8 +200,7 @@ void GBR_TO_PCB_EXPORTER::export_non_copper_item( const GERBER_DRAW_ITEM* aGbrIt
|
|||
Double2Str( MapToPcbUnits(seg_end.x) ).c_str(),
|
||||
Double2Str( MapToPcbUnits(seg_end.y) ).c_str(),
|
||||
TO_UTF8( GetPCBDefaultLayerName( aLayer ) ),
|
||||
Double2Str( MapToPcbUnits( aGbrItem->m_Size.x ) ).c_str()
|
||||
);
|
||||
Double2Str( MapToPcbUnits( aGbrItem->m_Size.x ) ).c_str() );
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -212,8 +211,7 @@ void GBR_TO_PCB_EXPORTER::export_non_copper_item( const GERBER_DRAW_ITEM* aGbrIt
|
|||
Double2Str( MapToPcbUnits(seg_end.y) ).c_str(),
|
||||
Double2Str( angle ).c_str(),
|
||||
TO_UTF8( GetPCBDefaultLayerName( aLayer ) ),
|
||||
Double2Str( MapToPcbUnits( aGbrItem->m_Size.x ) ).c_str()
|
||||
);
|
||||
Double2Str( MapToPcbUnits( aGbrItem->m_Size.x ) ).c_str() );
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -265,14 +263,14 @@ void GBR_TO_PCB_EXPORTER::export_via( const EXPORT_VIA& aVia )
|
|||
|
||||
// Layers are Front to Back
|
||||
fprintf( m_fp, " (via (at %s %s) (size %s) (drill %s)",
|
||||
Double2Str( MapToPcbUnits( via_pos.x ) ).c_str(),
|
||||
Double2Str( MapToPcbUnits( via_pos.y ) ).c_str(),
|
||||
Double2Str( MapToPcbUnits( aVia.m_Size ) ).c_str(),
|
||||
Double2Str( MapToPcbUnits( aVia.m_Drill ) ).c_str() );
|
||||
Double2Str( MapToPcbUnits( via_pos.x ) ).c_str(),
|
||||
Double2Str( MapToPcbUnits( via_pos.y ) ).c_str(),
|
||||
Double2Str( MapToPcbUnits( aVia.m_Size ) ).c_str(),
|
||||
Double2Str( MapToPcbUnits( aVia.m_Drill ) ).c_str() );
|
||||
|
||||
fprintf( m_fp, " (layers %s %s))\n",
|
||||
TO_UTF8( GetPCBDefaultLayerName( F_Cu ) ),
|
||||
TO_UTF8( GetPCBDefaultLayerName( B_Cu ) ) );
|
||||
TO_UTF8( GetPCBDefaultLayerName( F_Cu ) ),
|
||||
TO_UTF8( GetPCBDefaultLayerName( B_Cu ) ) );
|
||||
}
|
||||
|
||||
|
||||
|
@ -329,12 +327,12 @@ void GBR_TO_PCB_EXPORTER::writeCopperLineItem( const wxPoint& aStart, const wxPo
|
|||
int aWidth, int aLayer )
|
||||
{
|
||||
fprintf( m_fp, "(segment (start %s %s) (end %s %s) (width %s) (layer %s) (net 0))\n",
|
||||
Double2Str( MapToPcbUnits(aStart.x) ).c_str(),
|
||||
Double2Str( MapToPcbUnits(aStart.y) ).c_str(),
|
||||
Double2Str( MapToPcbUnits(aEnd.x) ).c_str(),
|
||||
Double2Str( MapToPcbUnits(aEnd.y) ).c_str(),
|
||||
Double2Str( MapToPcbUnits( aWidth ) ).c_str(),
|
||||
TO_UTF8( GetPCBDefaultLayerName( aLayer ) ) );
|
||||
Double2Str( MapToPcbUnits(aStart.x) ).c_str(),
|
||||
Double2Str( MapToPcbUnits(aStart.y) ).c_str(),
|
||||
Double2Str( MapToPcbUnits(aEnd.x) ).c_str(),
|
||||
Double2Str( MapToPcbUnits(aEnd.y) ).c_str(),
|
||||
Double2Str( MapToPcbUnits( aWidth ) ).c_str(),
|
||||
TO_UTF8( GetPCBDefaultLayerName( aLayer ) ) );
|
||||
}
|
||||
|
||||
|
||||
|
@ -369,8 +367,7 @@ void GBR_TO_PCB_EXPORTER::export_segarc_copper_item( const GERBER_DRAW_ITEM* aGb
|
|||
{
|
||||
seg_start = curr_start;
|
||||
wxPoint curr_end = start;
|
||||
RotatePoint( &curr_end, aGbrItem->m_ArcCentre,
|
||||
-RAD2DECIDEG( DELTA_ANGLE * ii ) );
|
||||
RotatePoint( &curr_end, aGbrItem->m_ArcCentre, -RAD2DECIDEG( DELTA_ANGLE * ii ) );
|
||||
seg_end = curr_end;
|
||||
|
||||
// Reverse Y axis:
|
||||
|
|
|
@ -66,9 +66,11 @@ void GERBER_DRAW_ITEM::SetNetAttributes( const GBR_NETLIST_METADATA& aNetAttribu
|
|||
{
|
||||
m_netAttributes = aNetAttributes;
|
||||
|
||||
if( ( m_netAttributes.m_NetAttribType & GBR_NETLIST_METADATA::GBR_NETINFO_CMP ) ||
|
||||
( m_netAttributes.m_NetAttribType & GBR_NETLIST_METADATA::GBR_NETINFO_PAD ) )
|
||||
if( ( m_netAttributes.m_NetAttribType & GBR_NETLIST_METADATA::GBR_NETINFO_CMP )
|
||||
|| ( m_netAttributes.m_NetAttribType & GBR_NETLIST_METADATA::GBR_NETINFO_PAD ) )
|
||||
{
|
||||
m_GerberImageFile->m_ComponentsList.insert( std::make_pair( m_netAttributes.m_Cmpref, 0 ) );
|
||||
}
|
||||
|
||||
if( ( m_netAttributes.m_NetAttribType & GBR_NETLIST_METADATA::GBR_NETINFO_NET ) )
|
||||
m_GerberImageFile->m_NetnamesList.insert( std::make_pair( m_netAttributes.m_Netname, 0 ) );
|
||||
|
@ -90,13 +92,9 @@ bool GERBER_DRAW_ITEM::GetTextD_CodePrms( int& aSize, wxPoint& aPos, double& aOr
|
|||
return false; // No D_Code for this item
|
||||
|
||||
if( m_Flashed || m_Shape == GBR_ARC )
|
||||
{
|
||||
aPos = m_Start;
|
||||
}
|
||||
else // it is a line:
|
||||
{
|
||||
aPos = ( m_Start + m_End) / 2;
|
||||
}
|
||||
|
||||
aPos = GetABPosition( aPos );
|
||||
|
||||
|
@ -227,29 +225,14 @@ wxString GERBER_DRAW_ITEM::ShowGBRShape() const
|
|||
{
|
||||
switch( m_Shape )
|
||||
{
|
||||
case GBR_SEGMENT:
|
||||
return _( "Line" );
|
||||
|
||||
case GBR_ARC:
|
||||
return _( "Arc" );
|
||||
|
||||
case GBR_CIRCLE:
|
||||
return _( "Circle" );
|
||||
|
||||
case GBR_SPOT_OVAL:
|
||||
return wxT( "spot_oval" );
|
||||
|
||||
case GBR_SPOT_CIRCLE:
|
||||
return wxT( "spot_circle" );
|
||||
|
||||
case GBR_SPOT_RECT:
|
||||
return wxT( "spot_rect" );
|
||||
|
||||
case GBR_SPOT_POLY:
|
||||
return wxT( "spot_poly" );
|
||||
|
||||
case GBR_POLYGON:
|
||||
return wxT( "polygon" );
|
||||
case GBR_SEGMENT: return _( "Line" );
|
||||
case GBR_ARC: return _( "Arc" );
|
||||
case GBR_CIRCLE: return _( "Circle" );
|
||||
case GBR_SPOT_OVAL: return wxT( "spot_oval" );
|
||||
case GBR_SPOT_CIRCLE: return wxT( "spot_circle" );
|
||||
case GBR_SPOT_RECT: return wxT( "spot_rect" );
|
||||
case GBR_SPOT_POLY: return wxT( "spot_poly" );
|
||||
case GBR_POLYGON: return wxT( "polygon" );
|
||||
|
||||
case GBR_SPOT_MACRO:
|
||||
{
|
||||
|
@ -262,8 +245,7 @@ wxString GERBER_DRAW_ITEM::ShowGBRShape() const
|
|||
return name;
|
||||
}
|
||||
|
||||
default:
|
||||
return wxT( "??" );
|
||||
default: return wxT( "??" );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -760,14 +742,18 @@ void GERBER_DRAW_ITEM::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_
|
|||
if( ( m_netAttributes.m_NetAttribType & GBR_NETLIST_METADATA::GBR_NETINFO_PAD ) )
|
||||
{
|
||||
if( m_netAttributes.m_PadPinFunction.IsEmpty() )
|
||||
{
|
||||
cmp_pad_msg.Printf( _( "Cmp: %s Pad: %s" ),
|
||||
m_netAttributes.m_Cmpref,
|
||||
m_netAttributes.m_Padname.GetValue() );
|
||||
}
|
||||
else
|
||||
{
|
||||
cmp_pad_msg.Printf( _( "Cmp: %s Pad: %s Fct %s" ),
|
||||
m_netAttributes.m_Cmpref,
|
||||
m_netAttributes.m_Padname.GetValue(),
|
||||
m_netAttributes.m_PadPinFunction.GetValue() );
|
||||
}
|
||||
}
|
||||
|
||||
else if( ( m_netAttributes.m_NetAttribType & GBR_NETLIST_METADATA::GBR_NETINFO_CMP ) )
|
||||
|
@ -943,7 +929,6 @@ bool GERBER_DRAW_ITEM::HitTest( const EDA_RECT& aRefArea, bool aContained, int a
|
|||
void GERBER_DRAW_ITEM::Show( int nestLevel, std::ostream& os ) const
|
||||
{
|
||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
||||
|
||||
" shape=\"" << m_Shape << '"' <<
|
||||
" addr=\"" << std::hex << this << std::dec << '"' <<
|
||||
" layer=\"" << GetLayer() << '"' <<
|
||||
|
@ -971,8 +956,7 @@ void GERBER_DRAW_ITEM::ViewGetLayers( int aLayers[], int& aCount ) const
|
|||
const BOX2I GERBER_DRAW_ITEM::ViewBBox() const
|
||||
{
|
||||
EDA_RECT bbox = GetBoundingBox();
|
||||
return BOX2I( VECTOR2I( bbox.GetOrigin() ),
|
||||
VECTOR2I( bbox.GetSize() ) );
|
||||
return BOX2I( VECTOR2I( bbox.GetOrigin() ), VECTOR2I( bbox.GetSize() ) );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,10 +22,6 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file gerber_draw_item.h
|
||||
*/
|
||||
|
||||
#ifndef GERBER_DRAW_ITEM_H
|
||||
#define GERBER_DRAW_ITEM_H
|
||||
|
||||
|
@ -50,7 +46,8 @@ namespace KIGFX
|
|||
|
||||
|
||||
/* Shapes id for basic shapes ( .m_Shape member ) */
|
||||
enum Gbr_Basic_Shapes {
|
||||
enum Gbr_Basic_Shapes
|
||||
{
|
||||
GBR_SEGMENT = 0, // usual segment : line with rounded ends
|
||||
GBR_ARC, // Arcs (with rounded ends)
|
||||
GBR_CIRCLE, // ring
|
||||
|
@ -252,6 +249,7 @@ public:
|
|||
///< @copydoc EDA_ITEM::GetMenuImage()
|
||||
BITMAPS GetMenuImage() const override;
|
||||
|
||||
public:
|
||||
bool m_UnitsMetric; // store here the gerber units (inch/mm). Used
|
||||
// only to calculate aperture macros shapes sizes
|
||||
int m_Shape; // Shape and type of this gerber item
|
||||
|
@ -283,6 +281,7 @@ public:
|
|||
|
||||
// This polygon is to draw this item (mainly GBR_POLYGON), according to layer parameters
|
||||
SHAPE_POLY_SET m_AbsolutePolygon; // the polygon to draw, in absolute coordinates
|
||||
|
||||
private:
|
||||
// These values are used to draw this item, according to gerber layers parameters
|
||||
// Because they can change inside a gerber image, they are stored here
|
||||
|
@ -300,9 +299,4 @@ private:
|
|||
};
|
||||
|
||||
|
||||
class GERBER_NEGATIVE_IMAGE_BACKDROP : public EDA_ITEM
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
#endif /* GERBER_DRAW_ITEM_H */
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
/**
|
||||
* @file gerber_file_image.cpp
|
||||
* a GERBER class handle for a given layer info about used D_CODES and how the layer is drawn
|
||||
*/
|
||||
|
||||
/*
|
||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||
*
|
||||
* Copyright (C) 1992-2019 Jean-Pierre Charras jp.charras at wanadoo.fr
|
||||
* Copyright (C) 1992-2019 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
* Copyright (C) 1992-2021 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
|
||||
|
@ -105,15 +100,13 @@ GERBER_FILE_IMAGE::GERBER_FILE_IMAGE( int aLayer ) :
|
|||
GERBER_FILE_IMAGE::~GERBER_FILE_IMAGE()
|
||||
{
|
||||
|
||||
for( auto item : GetItems() )
|
||||
for( GERBER_DRAW_ITEM* item : GetItems() )
|
||||
delete item;
|
||||
|
||||
m_drawings.clear();
|
||||
|
||||
for( unsigned ii = 0; ii < arrayDim( m_Aperture_List ); ii++ )
|
||||
{
|
||||
delete m_Aperture_List[ii];
|
||||
}
|
||||
|
||||
delete m_FileFunction;
|
||||
}
|
||||
|
@ -144,9 +137,7 @@ D_CODE* GERBER_FILE_IMAGE::GetDCODE( int aDCODE ) const
|
|||
unsigned ndx = aDCODE - FIRST_DCODE;
|
||||
|
||||
if( ndx < (unsigned) arrayDim( m_Aperture_List ) )
|
||||
{
|
||||
return m_Aperture_List[ndx];
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
@ -236,14 +227,18 @@ bool GERBER_FILE_IMAGE::HasNegativeItems()
|
|||
if( m_hasNegativeItems < 0 ) // negative items are not yet searched: find them if any
|
||||
{
|
||||
if( m_ImageNegative ) // A negative layer is expected having always negative objects.
|
||||
{
|
||||
m_hasNegativeItems = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_hasNegativeItems = 0;
|
||||
|
||||
for( GERBER_DRAW_ITEM* item : GetItems() )
|
||||
{
|
||||
if( item->GetLayer() != m_GraphicLayer )
|
||||
continue;
|
||||
|
||||
if( item->HasNegativeItems() )
|
||||
{
|
||||
m_hasNegativeItems = 1;
|
||||
|
@ -252,6 +247,7 @@ bool GERBER_FILE_IMAGE::HasNegativeItems()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
return m_hasNegativeItems == 1;
|
||||
}
|
||||
|
||||
|
@ -262,8 +258,11 @@ int GERBER_FILE_IMAGE::GetDcodesCount()
|
|||
for( unsigned ii = 0; ii < arrayDim( m_Aperture_List ); ii++ )
|
||||
{
|
||||
if( m_Aperture_List[ii] )
|
||||
{
|
||||
if( m_Aperture_List[ii]->m_InUse || m_Aperture_List[ii]->m_Defined )
|
||||
++count;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return count;
|
||||
|
@ -295,8 +294,7 @@ void GERBER_FILE_IMAGE::InitToolTable()
|
|||
*/
|
||||
void GERBER_FILE_IMAGE::StepAndRepeatItem( const GERBER_DRAW_ITEM& aItem )
|
||||
{
|
||||
if( GetLayerParams().m_XRepeatCount < 2 &&
|
||||
GetLayerParams().m_YRepeatCount < 2 )
|
||||
if( GetLayerParams().m_XRepeatCount < 2 && GetLayerParams().m_YRepeatCount < 2 )
|
||||
return; // Nothing to repeat
|
||||
|
||||
// Duplicate item:
|
||||
|
@ -312,9 +310,9 @@ void GERBER_FILE_IMAGE::StepAndRepeatItem( const GERBER_DRAW_ITEM& aItem )
|
|||
GERBER_DRAW_ITEM* dupItem = new GERBER_DRAW_ITEM( aItem );
|
||||
wxPoint move_vector;
|
||||
move_vector.x = scaletoIU( ii * GetLayerParams().m_StepForRepeat.x,
|
||||
GetLayerParams().m_StepForRepeatMetric );
|
||||
GetLayerParams().m_StepForRepeatMetric );
|
||||
move_vector.y = scaletoIU( jj * GetLayerParams().m_StepForRepeat.y,
|
||||
GetLayerParams().m_StepForRepeatMetric );
|
||||
GetLayerParams().m_StepForRepeatMetric );
|
||||
dupItem->MoveXY( move_vector );
|
||||
AddItemToList( dupItem );
|
||||
}
|
||||
|
|
|
@ -20,18 +20,14 @@
|
|||
|
||||
#include <kiface_base.h>
|
||||
#include <pgm_base.h>
|
||||
#include <eda_base_frame.h>
|
||||
#include <base_units.h>
|
||||
#include <bitmaps.h>
|
||||
#include <wildcards_and_files_ext.h>
|
||||
#include <gerbview.h>
|
||||
#include <gerbview_frame.h>
|
||||
#include <gerbview_id.h>
|
||||
#include <gerber_file_image.h>
|
||||
#include <gerber_file_image_list.h>
|
||||
#include <gerbview_draw_panel_gal.h>
|
||||
#include <gerbview_settings.h>
|
||||
#include <gal/graphics_abstraction_layer.h>
|
||||
#include <drawing_sheet/ds_proxy_view_item.h>
|
||||
#include <settings/settings_manager.h>
|
||||
#include <tool/tool_manager.h>
|
||||
|
@ -50,7 +46,6 @@
|
|||
#include <view/view.h>
|
||||
#include <base_screen.h>
|
||||
#include <gerbview_painter.h>
|
||||
#include <widgets/msgpanel.h>
|
||||
#include <wx/wupdlock.h>
|
||||
|
||||
#include "widgets/gbr_layer_box_selector.h"
|
||||
|
@ -412,7 +407,7 @@ void GERBVIEW_FRAME::SetElementVisibility( int aLayerID, bool aNewState )
|
|||
|
||||
view->UpdateAllItemsConditionally( KIGFX::REPAINT, []( KIGFX::VIEW_ITEM* aItem )
|
||||
{
|
||||
auto item = dynamic_cast<GERBER_DRAW_ITEM*>( aItem );
|
||||
GERBER_DRAW_ITEM* item = dynamic_cast<GERBER_DRAW_ITEM*>( aItem );
|
||||
|
||||
// GetLayerPolarity() returns true for negative items
|
||||
return ( item && item->GetLayerPolarity() );
|
||||
|
@ -513,11 +508,10 @@ void GERBVIEW_FRAME::SortLayersByX2Attributes()
|
|||
|
||||
std::unordered_map<int, int> view_remapping;
|
||||
|
||||
for( auto it : remapping )
|
||||
for( const std::pair<const int, int>& entry : remapping )
|
||||
{
|
||||
view_remapping[ GERBER_DRAW_LAYER( it.first) ] = GERBER_DRAW_LAYER( it.second );
|
||||
view_remapping[ GERBER_DCODE_LAYER( GERBER_DRAW_LAYER( it.first) ) ] =
|
||||
GERBER_DCODE_LAYER( GERBER_DRAW_LAYER( it.second ) );
|
||||
view_remapping[ entry.first ] = GERBER_DRAW_LAYER( entry.second );
|
||||
view_remapping[ GERBER_DCODE_LAYER( entry.first ) ] = GERBER_DCODE_LAYER( entry.second );
|
||||
}
|
||||
|
||||
GetCanvas()->GetView()->ReorderLayerData( view_remapping );
|
||||
|
@ -530,7 +524,7 @@ void GERBVIEW_FRAME::UpdateDiffLayers()
|
|||
auto target = GetCanvas()->GetBackend() == GERBVIEW_DRAW_PANEL_GAL::GAL_TYPE_OPENGL
|
||||
? KIGFX::TARGET_CACHED
|
||||
: KIGFX::TARGET_NONCACHED;
|
||||
auto view = GetCanvas()->GetView();
|
||||
KIGFX::VIEW* view = GetCanvas()->GetView();
|
||||
|
||||
int lastVisibleLayer = -1;
|
||||
|
||||
|
|
|
@ -660,13 +660,10 @@ void DRC_ENGINE::RunTests( EDA_UNITS aUnits, bool aReportAllTrackErrors, bool aT
|
|||
|
||||
for( DRC_TEST_PROVIDER* provider : m_testProviders )
|
||||
{
|
||||
if( provider->IsEnabled() )
|
||||
{
|
||||
ReportAux( wxString::Format( "Run DRC provider: '%s'", provider->GetName() ) );
|
||||
ReportAux( wxString::Format( "Run DRC provider: '%s'", provider->GetName() ) );
|
||||
|
||||
if( !provider->Run() )
|
||||
break;
|
||||
}
|
||||
if( !provider->Run() )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -89,16 +89,6 @@ public:
|
|||
virtual const wxString GetName() const;
|
||||
virtual const wxString GetDescription() const;
|
||||
|
||||
bool IsEnabled() const
|
||||
{
|
||||
return m_enabled;
|
||||
}
|
||||
|
||||
void Enable( bool aEnable )
|
||||
{
|
||||
m_enabled = aEnable;
|
||||
}
|
||||
|
||||
protected:
|
||||
int forEachGeometryItem( const std::vector<KICAD_T>& aTypes, LSET aLayers,
|
||||
const std::function<bool(BOARD_ITEM*)>& aFunc );
|
||||
|
@ -122,7 +112,6 @@ protected:
|
|||
DRC_ENGINE* m_drcEngine;
|
||||
std::unordered_map<const DRC_RULE*, int> m_stats;
|
||||
bool m_isRuleDriven = true;
|
||||
bool m_enabled = true;
|
||||
|
||||
wxString m_msg; // Allocating strings gets expensive enough to want to avoid it
|
||||
};
|
||||
|
|
|
@ -38,9 +38,6 @@
|
|||
- DRCE_DISABLED_LAYER_ITEM, ///< item on a disabled layer
|
||||
- DRCE_INVALID_OUTLINE, ///< invalid board outline
|
||||
- DRCE_UNRESOLVED_VARIABLE,
|
||||
|
||||
TODO:
|
||||
- if grows too big, split into separate providers
|
||||
*/
|
||||
|
||||
class DRC_TEST_PROVIDER_MISC : public DRC_TEST_PROVIDER
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
*/
|
||||
|
||||
#include <pcb_edit_frame.h>
|
||||
#include <bitmaps.h>
|
||||
#include <tool/tool_manager.h>
|
||||
#include <tools/pcb_actions.h>
|
||||
#include <tools/pcb_tool_base.h>
|
||||
|
|
|
@ -90,10 +90,10 @@ SPECIAL_TOOLS_CONTEXT_MENU::SPECIAL_TOOLS_CONTEXT_MENU( TOOL_INTERACTIVE* aTool
|
|||
SetIcon( BITMAPS::special_tools );
|
||||
SetTitle( _( "Special Tools" ) );
|
||||
|
||||
AddItem( PCB_ACTIONS::moveExact, SELECTION_CONDITIONS::ShowAlways );
|
||||
AddItem( PCB_ACTIONS::moveExact, SELECTION_CONDITIONS::ShowAlways );
|
||||
AddItem( PCB_ACTIONS::moveWithReference, SELECTION_CONDITIONS::ShowAlways );
|
||||
AddItem( PCB_ACTIONS::positionRelative, SELECTION_CONDITIONS::ShowAlways );
|
||||
AddItem( PCB_ACTIONS::createArray, SELECTION_CONDITIONS::ShowAlways );
|
||||
AddItem( PCB_ACTIONS::positionRelative, SELECTION_CONDITIONS::ShowAlways );
|
||||
AddItem( PCB_ACTIONS::createArray, SELECTION_CONDITIONS::ShowAlways );
|
||||
}
|
||||
|
||||
|
||||
|
@ -593,43 +593,43 @@ int EDIT_TOOL::DragArcTrack( const TOOL_EVENT& aEvent )
|
|||
|
||||
// Ensure we only do one commit operation on each object
|
||||
auto processTrack =
|
||||
[&]( PCB_TRACK* aTrack, PCB_TRACK* aTrackCopy, int aMaxLengthIU ) -> bool
|
||||
{
|
||||
if( aTrack->IsNew() )
|
||||
[&]( PCB_TRACK* aTrack, PCB_TRACK* aTrackCopy, int aMaxLengthIU ) -> bool
|
||||
{
|
||||
getView()->Remove( aTrack );
|
||||
|
||||
if( aTrack->GetLength() <= aMaxLengthIU )
|
||||
if( aTrack->IsNew() )
|
||||
{
|
||||
delete aTrack;
|
||||
getView()->Remove( aTrack );
|
||||
|
||||
if( aTrack->GetLength() <= aMaxLengthIU )
|
||||
{
|
||||
delete aTrack;
|
||||
delete aTrackCopy;
|
||||
aTrack = nullptr;
|
||||
aTrackCopy = nullptr;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_commit->Add( aTrack );
|
||||
delete aTrackCopy;
|
||||
aTrackCopy = nullptr;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if( aTrack->GetLength() <= aMaxLengthIU )
|
||||
{
|
||||
aTrack->SwapData( aTrackCopy ); //restore the original before notifying COMMIT
|
||||
m_commit->Remove( aTrack );
|
||||
delete aTrackCopy;
|
||||
aTrack = nullptr;
|
||||
aTrackCopy = nullptr;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_commit->Add( aTrack );
|
||||
delete aTrackCopy;
|
||||
aTrackCopy = nullptr;
|
||||
return true;
|
||||
m_commit->Modified( aTrack, aTrackCopy );
|
||||
}
|
||||
}
|
||||
else if( aTrack->GetLength() <= aMaxLengthIU )
|
||||
{
|
||||
aTrack->SwapData( aTrackCopy ); //restore the original before notifying COMMIT
|
||||
m_commit->Remove( aTrack );
|
||||
delete aTrackCopy;
|
||||
aTrackCopy = nullptr;
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_commit->Modified( aTrack, aTrackCopy );
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
return true;
|
||||
};
|
||||
|
||||
// Amend the end points of the arc if we delete the joining tracks
|
||||
wxPoint newStart = trackOnStart->GetStart();
|
||||
|
@ -1361,8 +1361,8 @@ int EDIT_TOOL::Properties( const TOOL_EVENT& aEvent )
|
|||
// Tracks & vias are treated in a special way:
|
||||
if( ( SELECTION_CONDITIONS::OnlyTypes( GENERAL_COLLECTOR::Tracks ) )( selection ) )
|
||||
{
|
||||
DIALOG_TRACK_VIA_PROPERTIES dlg( editFrame, selection, *m_commit );
|
||||
dlg.ShowQuasiModal(); // QuasiModal required for NET_SELECTOR
|
||||
DIALOG_TRACK_VIA_PROPERTIES dlg( editFrame, selection, *m_commit );
|
||||
dlg.ShowQuasiModal(); // QuasiModal required for NET_SELECTOR
|
||||
}
|
||||
else if( selection.Size() == 1 )
|
||||
{
|
||||
|
@ -1473,11 +1473,10 @@ int EDIT_TOOL::Rotate( const TOOL_EVENT& aEvent )
|
|||
// If rotating a group, record position of all the descendants for undo
|
||||
if( item->Type() == PCB_GROUP_T )
|
||||
{
|
||||
static_cast<PCB_GROUP*>( item )->RunOnDescendants(
|
||||
[&]( BOARD_ITEM* bItem )
|
||||
{
|
||||
m_commit->Modify( bItem );
|
||||
});
|
||||
static_cast<PCB_GROUP*>( item )->RunOnDescendants( [&]( BOARD_ITEM* bItem )
|
||||
{
|
||||
m_commit->Modify( bItem );
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2204,12 +2203,12 @@ int EDIT_TOOL::CreateArray( const TOOL_EVENT& aEvent )
|
|||
}
|
||||
|
||||
// Be sure that there is at least one item that we can modify
|
||||
const auto& selection = m_selectionTool->RequestSelection(
|
||||
[]( const VECTOR2I&, GENERAL_COLLECTOR& aCollector, PCB_SELECTION_TOOL* sTool )
|
||||
{
|
||||
sTool->FilterCollectorForMarkers( aCollector );
|
||||
sTool->FilterCollectorForHierarchy( aCollector, true );
|
||||
} );
|
||||
const PCB_SELECTION& selection = m_selectionTool->RequestSelection(
|
||||
[]( const VECTOR2I&, GENERAL_COLLECTOR& aCollector, PCB_SELECTION_TOOL* sTool )
|
||||
{
|
||||
sTool->FilterCollectorForMarkers( aCollector );
|
||||
sTool->FilterCollectorForHierarchy( aCollector, true );
|
||||
} );
|
||||
|
||||
if( selection.Empty() )
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue