2011-12-16 13:32:23 +00:00
|
|
|
/*
|
|
|
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
|
|
*
|
2015-04-03 19:10:09 +00:00
|
|
|
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
2013-07-05 17:48:01 +00:00
|
|
|
* Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
|
|
|
* Copyright (C) 2007-2013 Wayne Stambaugh <stambaughw@verizon.net>
|
2016-06-08 11:19:53 +00:00
|
|
|
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
2011-12-16 13:32:23 +00:00
|
|
|
*
|
|
|
|
* 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
|
|
|
|
*/
|
|
|
|
|
2011-09-23 13:57:12 +00:00
|
|
|
/**
|
|
|
|
* @file pcbnew/onrightclick.cpp
|
|
|
|
* @brief Right mouse button functions.
|
|
|
|
*/
|
2007-05-06 16:03:28 +00:00
|
|
|
|
2012-01-23 04:33:36 +00:00
|
|
|
#include <fctsys.h>
|
|
|
|
#include <class_drawpanel.h>
|
|
|
|
#include <macros.h>
|
2012-04-13 18:51:24 +00:00
|
|
|
#include <base_units.h>
|
2017-02-20 12:20:39 +00:00
|
|
|
#include <bitmaps.h>
|
2012-01-23 04:33:36 +00:00
|
|
|
|
|
|
|
#include <class_board.h>
|
|
|
|
#include <class_module.h>
|
|
|
|
#include <class_track.h>
|
|
|
|
#include <class_pcb_text.h>
|
|
|
|
#include <class_zone.h>
|
|
|
|
|
|
|
|
#include <pcbnew.h>
|
2018-01-29 20:58:58 +00:00
|
|
|
#include <pcb_edit_frame.h>
|
2012-01-23 04:33:36 +00:00
|
|
|
#include <pcbnew_id.h>
|
|
|
|
#include <hotkeys.h>
|
|
|
|
#include <collectors.h>
|
2012-04-09 09:16:47 +00:00
|
|
|
#include <menus_helpers.h>
|
2009-08-03 18:54:48 +00:00
|
|
|
|
2009-10-28 11:48:47 +00:00
|
|
|
|
2018-06-13 16:05:43 +00:00
|
|
|
static wxMenu* Append_Track_Width_List( BOARD* aBoard, EDA_UNITS_T aUnits );
|
2007-05-06 16:03:28 +00:00
|
|
|
|
|
|
|
|
2011-03-01 19:26:17 +00:00
|
|
|
bool PCB_EDIT_FRAME::OnRightClick( const wxPoint& aMousePos, wxMenu* aPopMenu )
|
2007-05-06 16:03:28 +00:00
|
|
|
{
|
2007-10-07 18:24:15 +00:00
|
|
|
wxString msg;
|
2013-03-28 19:12:46 +00:00
|
|
|
STATUS_FLAGS flags = 0;
|
2013-09-20 10:52:33 +00:00
|
|
|
bool trackFound = false; // Flag set to true,
|
|
|
|
// if a track is being the cursor, to avoid
|
|
|
|
// to display menus relative to tracks twice
|
2012-03-26 23:47:08 +00:00
|
|
|
bool blockActive = !GetScreen()->m_BlockLocate.IsIdle();
|
2007-09-21 10:38:50 +00:00
|
|
|
|
|
|
|
BOARD_ITEM* item = GetCurItem();
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2013-03-20 14:50:12 +00:00
|
|
|
m_canvas->SetCanStartBlock( -1 ); // Avoid to start a block command when clicking on menu
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2007-10-07 18:24:15 +00:00
|
|
|
// If a command or a block is in progress:
|
2008-01-01 11:46:47 +00:00
|
|
|
// Put the Cancel command (if needed) and the End command
|
2007-10-07 18:24:15 +00:00
|
|
|
|
2011-01-26 07:43:59 +00:00
|
|
|
if( blockActive )
|
2007-10-07 18:24:15 +00:00
|
|
|
{
|
|
|
|
createPopUpBlockMenu( aPopMenu );
|
2007-09-29 13:31:10 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2007-10-07 18:24:15 +00:00
|
|
|
return true;
|
|
|
|
}
|
2007-09-29 13:31:10 +00:00
|
|
|
|
2016-06-08 11:19:53 +00:00
|
|
|
if( GetToolId() != ID_NO_TOOL_SELECTED && GetToolId() != ID_ZOOM_SELECTION )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2011-12-21 13:42:02 +00:00
|
|
|
if( item && item->GetFlags() )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2011-12-16 13:32:23 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_CANCEL_CURRENT_COMMAND, _( "Cancel" ),
|
|
|
|
KiBitmap( cancel_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_CLOSE_CURRENT_TOOL,
|
2012-03-20 14:17:58 +00:00
|
|
|
_( "End Tool" ), KiBitmap( cursor_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2007-09-06 04:34:03 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2011-12-21 13:42:02 +00:00
|
|
|
if( item && item->GetFlags() )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_CANCEL_CURRENT_COMMAND,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Cancel" ), KiBitmap( cancel_xpm ) );
|
2007-09-06 04:34:03 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-08-03 05:15:23 +00:00
|
|
|
// Select a proper item
|
2007-10-10 04:45:26 +00:00
|
|
|
|
2013-08-03 05:15:23 +00:00
|
|
|
wxPoint cursorPos = GetCrossHairPosition();
|
2007-10-10 04:45:26 +00:00
|
|
|
wxPoint selectPos = m_Collector->GetRefPos();
|
2008-01-01 11:46:47 +00:00
|
|
|
|
2013-08-03 05:15:23 +00:00
|
|
|
selectPos = GetNearestGridPosition( selectPos );
|
2008-01-01 11:46:47 +00:00
|
|
|
|
|
|
|
/* We can reselect another item only if there are no item being edited
|
2008-01-28 18:44:14 +00:00
|
|
|
* because ALL moving functions use GetCurItem(), therefore GetCurItem()
|
|
|
|
* must return the same item during moving. We know an item is moving
|
|
|
|
* if( item && (item->m_Flags != 0)) is true and after calling
|
|
|
|
* PcbGeneralLocateAndDisplay(), GetCurItem() is any arbitrary BOARD_ITEM,
|
|
|
|
* not the current item being edited. In such case we cannot call
|
|
|
|
* PcbGeneralLocateAndDisplay().
|
2008-01-01 11:46:47 +00:00
|
|
|
*/
|
2011-12-21 13:42:02 +00:00
|
|
|
if( !item || (item->GetFlags() == 0) )
|
2008-01-01 11:46:47 +00:00
|
|
|
{
|
2013-09-20 10:52:33 +00:00
|
|
|
// show the "item selector" menu if no item selected or
|
|
|
|
// if there is a selected item but the mouse has moved
|
|
|
|
// (therefore a new item is perhaps under the cursor)
|
2008-01-01 11:46:47 +00:00
|
|
|
if( !item || cursorPos != selectPos )
|
|
|
|
{
|
2011-12-29 20:11:42 +00:00
|
|
|
m_canvas->SetAbortRequest( false );
|
2015-04-07 11:52:29 +00:00
|
|
|
PcbGeneralLocateAndDisplay();
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2011-12-29 20:11:42 +00:00
|
|
|
if( m_canvas->GetAbortRequest() )
|
2008-01-01 11:46:47 +00:00
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2007-10-10 04:45:26 +00:00
|
|
|
|
2007-09-21 10:38:50 +00:00
|
|
|
item = GetCurItem();
|
2014-03-31 18:14:01 +00:00
|
|
|
flags = item ? item->GetFlags() : 0;
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2013-09-20 10:52:33 +00:00
|
|
|
// Add the context menu, which depends on the picked item:
|
2007-09-06 04:34:03 +00:00
|
|
|
if( item )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2007-09-06 04:34:03 +00:00
|
|
|
switch( item->Type() )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_MODULE_T:
|
2007-09-15 04:25:54 +00:00
|
|
|
createPopUpMenuForFootprints( (MODULE*) item, aPopMenu );
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_PAD_T:
|
2014-09-10 15:18:42 +00:00
|
|
|
createPopUpMenuForFpPads( static_cast<D_PAD*>( item ), aPopMenu );
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_MODULE_TEXT_T:
|
2014-09-10 15:18:42 +00:00
|
|
|
createPopUpMenuForFpTexts( static_cast<TEXTE_MODULE*>( item ), aPopMenu );
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_LINE_T: // Some graphic items on technical layers
|
2009-08-11 10:27:21 +00:00
|
|
|
if( (flags & IS_NEW) )
|
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_STOP_CURRENT_DRAWING,
|
2014-02-07 19:32:08 +00:00
|
|
|
_( "End Drawing" ), KiBitmap( checked_ok_xpm ) );
|
2009-08-11 10:27:21 +00:00
|
|
|
}
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_MOVE_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_DRAWING_REQUEST,
|
2011-09-08 05:58:45 +00:00
|
|
|
msg, KiBitmap( move_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Duplicate" ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_DUPLICATE_ITEM );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( duplicate_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Move Exactly..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_MOVE_ITEM_EXACT );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_exactly_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Create Array..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_CREATE_ARRAY );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_CREATE_ARRAY,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( array_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Edit..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_EDIT_ITEM );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_DRAWING,
|
|
|
|
msg, KiBitmap( edit_xpm ) );
|
|
|
|
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_DRAWING,
|
2017-07-04 15:17:55 +00:00
|
|
|
_( "Delete" ), KiBitmap( delete_xpm ) );
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2013-04-09 16:00:46 +00:00
|
|
|
if( !IsCopperLayer( item->GetLayer() ) )
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_DRAWING_LAYER,
|
2013-03-20 14:50:12 +00:00
|
|
|
_( "Delete All Drawings on Layer" ), KiBitmap( delete_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2011-09-01 12:54:34 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2018-09-29 17:58:31 +00:00
|
|
|
case PCB_SEGZONE_T: // Item used to fill a zone
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_ZONE,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Delete Zone Filling" ), KiBitmap( delete_xpm ) );
|
2008-01-01 11:46:47 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_ZONE_AREA_T: // Item used to handle a zone area (outlines, holes ...)
|
2008-04-18 13:28:56 +00:00
|
|
|
if( flags & IS_NEW )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_STOP_CURRENT_EDGE_ZONE,
|
2014-02-07 19:32:08 +00:00
|
|
|
_( "Close Zone Outline" ), KiBitmap( checked_ok_xpm ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_ZONE_LAST_CREATED_CORNER,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Delete Last Corner" ), KiBitmap( delete_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2008-04-17 16:25:29 +00:00
|
|
|
else
|
2011-09-01 12:54:34 +00:00
|
|
|
{
|
2009-08-03 18:54:48 +00:00
|
|
|
createPopUpMenuForZones( (ZONE_CONTAINER*) item, aPopMenu );
|
2011-09-01 12:54:34 +00:00
|
|
|
}
|
|
|
|
|
2007-12-29 19:15:58 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_TEXT_T:
|
2009-08-03 18:54:48 +00:00
|
|
|
createPopUpMenuForTexts( (TEXTE_PCB*) item, aPopMenu );
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_TRACE_T:
|
|
|
|
case PCB_VIA_T:
|
2013-09-20 10:52:33 +00:00
|
|
|
trackFound = true;
|
2007-09-15 04:25:54 +00:00
|
|
|
createPopupMenuForTracks( (TRACK*) item, aPopMenu );
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_MARKER_T:
|
2009-08-01 19:26:05 +00:00
|
|
|
createPopUpMenuForMarkers( (MARKER_PCB*) item, aPopMenu );
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_DIMENSION_T:
|
2007-08-20 01:20:48 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Edit..." ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_EDIT_ITEM );
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_DIMENSION, msg, KiBitmap( edit_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hotkeys_Descr,
|
2011-11-24 19:57:41 +00:00
|
|
|
HK_MOVE_ITEM );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_TEXT_DIMENSION_REQUEST,
|
2017-06-02 09:51:11 +00:00
|
|
|
msg, KiBitmap( move_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Duplicate" ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_DUPLICATE_ITEM );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( duplicate_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Move Exactly..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_MOVE_ITEM_EXACT );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_exactly_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Delete" ), g_Board_Editor_Hotkeys_Descr,
|
2011-12-16 13:32:23 +00:00
|
|
|
HK_DELETE );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_DIMENSION,
|
2016-03-20 17:52:15 +00:00
|
|
|
msg, KiBitmap( delete_dimension_xpm ) );
|
2009-08-11 10:27:21 +00:00
|
|
|
}
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-09-07 19:41:04 +00:00
|
|
|
case PCB_TARGET_T:
|
2007-08-20 01:20:48 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_MOVE_ITEM );
|
2017-10-31 15:38:10 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_PCB_TARGET_REQUEST,
|
2015-02-12 03:22:24 +00:00
|
|
|
msg, KiBitmap( move_target_xpm ) );
|
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Move Exactly..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_MOVE_ITEM_EXACT );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_MOVE_EXACT,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_exactly_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Duplicate" ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_DUPLICATE_ITEM );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( duplicate_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Edit..." ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_EDIT_ITEM );
|
2017-10-31 15:38:10 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_EDIT_PCB_TARGET, msg, KiBitmap( edit_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Delete" ), g_Board_Editor_Hotkeys_Descr, HK_DELETE );
|
2017-10-31 15:38:10 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_PCB_TARGET,
|
2011-11-24 19:57:41 +00:00
|
|
|
msg, KiBitmap( delete_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2011-09-01 12:54:34 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_MODULE_EDGE_T:
|
|
|
|
case SCREEN_T:
|
2007-08-20 01:20:48 +00:00
|
|
|
case TYPE_NOT_INIT:
|
2011-10-01 19:24:27 +00:00
|
|
|
case PCB_T:
|
2019-01-02 04:43:13 +00:00
|
|
|
wxLogDebug( wxT( "PCB_EDIT_FRAME::OnRightClick() Error: unexpected DrawType %d" ),
|
2011-09-01 12:54:34 +00:00
|
|
|
item->Type() );
|
2008-01-28 18:44:14 +00:00
|
|
|
SetCurItem( NULL );
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
2019-01-02 04:43:13 +00:00
|
|
|
wxLogDebug( wxT( "PCB_EDIT_FRAME::OnRightClick() Error: unknown DrawType %d" ),
|
2011-09-01 12:54:34 +00:00
|
|
|
item->Type() );
|
2008-01-28 18:44:14 +00:00
|
|
|
|
|
|
|
// Attempt to clear error (but should no occurs )
|
|
|
|
if( item->Type() >= MAX_STRUCT_TYPE_ID )
|
|
|
|
SetCurItem( NULL );
|
2011-09-01 12:54:34 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2013-09-20 10:52:33 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
|
2007-09-12 02:14:07 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
2018-02-09 16:28:33 +00:00
|
|
|
msg = AddHotkeyName( _( "Get and Move Footprint..." ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_GET_AND_MOVE_FOOTPRINT );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_GET_AND_MOVE_MODULE_REQUEST,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_xpm ) );
|
2007-09-12 02:14:07 +00:00
|
|
|
}
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2013-08-03 05:15:23 +00:00
|
|
|
// Display context sensitive commands:
|
2011-02-24 20:22:12 +00:00
|
|
|
switch( GetToolId() )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
|
|
|
case ID_PCB_ZONES_BUTT:
|
2009-01-05 05:21:35 +00:00
|
|
|
if( GetBoard()->m_ZoneDescriptorList.size() > 0 )
|
2008-01-01 11:46:47 +00:00
|
|
|
{
|
2008-10-11 19:27:43 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2014-12-06 21:21:13 +00:00
|
|
|
msg = AddHotkeyName( _( "Fill or Refill All Zones" ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_ZONE_FILL_OR_REFILL );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_FILL_ALL_ZONES,
|
2014-12-06 21:21:13 +00:00
|
|
|
msg, KiBitmap( fill_zone_xpm ) );
|
|
|
|
msg = AddHotkeyName( _( "Remove Filled Areas in All Zones" ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_ZONE_REMOVE_FILLED );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_REMOVE_FILLED_AREAS_IN_ALL_ZONES,
|
2014-12-06 21:21:13 +00:00
|
|
|
msg, KiBitmap( zone_unfill_xpm ) );
|
2007-09-06 04:34:03 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2008-01-01 11:46:47 +00:00
|
|
|
}
|
2007-12-30 18:20:51 +00:00
|
|
|
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_SELECT_LAYER,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Select Working Layer..." ), KiBitmap( select_w_layer_xpm ) );
|
2007-09-06 04:34:03 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2012-07-13 18:55:29 +00:00
|
|
|
case ID_PCB_KEEPOUT_AREA_BUTT:
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_SELECT_LAYER,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Select Working Layer..." ), KiBitmap( select_w_layer_xpm ) );
|
2012-07-13 18:55:29 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
|
|
|
break;
|
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
case ID_TRACK_BUTT:
|
2013-09-20 10:52:33 +00:00
|
|
|
if ( ! trackFound ) // This menu is already added when a track is located
|
2012-12-01 20:03:33 +00:00
|
|
|
{
|
2013-09-20 10:52:33 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2012-12-01 20:03:33 +00:00
|
|
|
msg = AddHotkeyName( _( "Begin Track" ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_ADD_NEW_TRACK );
|
2012-12-01 20:03:33 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_BEGIN_TRACK,
|
|
|
|
msg, KiBitmap( add_tracks_xpm ) );
|
|
|
|
|
2018-06-13 16:05:43 +00:00
|
|
|
AddMenuItem( aPopMenu, Append_Track_Width_List( GetBoard(), GetUserUnits() ),
|
2011-12-16 13:32:23 +00:00
|
|
|
ID_POPUP_PCB_SELECT_WIDTH, _( "Select Track Width" ),
|
|
|
|
KiBitmap( width_track_xpm ) );
|
2013-09-20 10:52:33 +00:00
|
|
|
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_SELECT_CU_LAYER,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Select Working Layer..." ), KiBitmap( select_w_layer_xpm ) );
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_SELECT_LAYER_PAIR,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Select Layer Pair for Vias..." ), KiBitmap( select_layer_pair_xpm ) );
|
2013-09-20 10:52:33 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2012-12-01 20:03:33 +00:00
|
|
|
}
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case ID_PCB_CIRCLE_BUTT:
|
|
|
|
case ID_PCB_ARC_BUTT:
|
2009-09-22 12:27:57 +00:00
|
|
|
case ID_PCB_ADD_TEXT_BUTT:
|
|
|
|
case ID_PCB_ADD_LINE_BUTT:
|
2010-04-23 09:54:40 +00:00
|
|
|
case ID_PCB_DIMENSION_BUTT:
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_SELECT_NO_CU_LAYER,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Select Working Layer..." ), KiBitmap( select_w_layer_xpm ) );
|
2007-09-06 04:34:03 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-02-21 13:54:29 +00:00
|
|
|
case ID_PCB_MODULE_BUTT:
|
2013-09-20 10:52:33 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DISPLAY_FOOTPRINT_DOC,
|
|
|
|
_( "Footprint Documentation" ), KiBitmap( book_xpm ) );
|
|
|
|
aPopMenu->AppendSeparator();
|
|
|
|
}
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
|
2011-02-24 20:22:12 +00:00
|
|
|
case ID_NO_TOOL_SELECTED:
|
2018-05-01 23:23:06 +00:00
|
|
|
{
|
2013-09-20 10:52:33 +00:00
|
|
|
if( !trackFound )
|
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Begin Track" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_NEW_TRACK );
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_BEGIN_TRACK, msg, KiBitmap( add_tracks_xpm ) );
|
2012-12-01 20:03:33 +00:00
|
|
|
|
2018-06-13 16:05:43 +00:00
|
|
|
AddMenuItem( aPopMenu, Append_Track_Width_List( GetBoard(), GetUserUnits() ),
|
2011-09-01 12:54:34 +00:00
|
|
|
ID_POPUP_PCB_SELECT_WIDTH, _( "Select Track Width" ),
|
2011-09-08 05:58:45 +00:00
|
|
|
KiBitmap( width_track_xpm ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_SELECT_LAYER,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Select Working Layer..." ), KiBitmap( select_w_layer_xpm ) );
|
2013-09-20 10:52:33 +00:00
|
|
|
aPopMenu->AppendSeparator();
|
|
|
|
}
|
2007-08-20 01:20:48 +00:00
|
|
|
break;
|
|
|
|
}
|
2018-05-01 23:23:06 +00:00
|
|
|
}
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2008-01-01 11:46:47 +00:00
|
|
|
return true;
|
2007-05-06 16:03:28 +00:00
|
|
|
}
|
2007-06-05 12:10:51 +00:00
|
|
|
|
|
|
|
|
|
|
|
/* Create Pop sub menu for block commands
|
2007-08-20 01:20:48 +00:00
|
|
|
*/
|
2011-03-01 19:26:17 +00:00
|
|
|
void PCB_EDIT_FRAME::createPopUpBlockMenu( wxMenu* menu )
|
2007-06-05 12:10:51 +00:00
|
|
|
{
|
2011-12-16 13:32:23 +00:00
|
|
|
AddMenuItem( menu, ID_POPUP_CANCEL_CURRENT_COMMAND, _( "Cancel Block" ),
|
|
|
|
KiBitmap( cancel_xpm ) );
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( menu, ID_POPUP_ZOOM_BLOCK, _( "Zoom Block" ), KiBitmap( zoom_area_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
menu->AppendSeparator();
|
2014-02-07 19:32:08 +00:00
|
|
|
AddMenuItem( menu, ID_POPUP_PLACE_BLOCK, _( "Place Block" ), KiBitmap( checked_ok_xpm ) );
|
2017-07-04 15:17:55 +00:00
|
|
|
AddMenuItem( menu, ID_POPUP_DUPLICATE_BLOCK, _( "Duplicate" ), KiBitmap( duplicate_xpm ) );
|
|
|
|
AddMenuItem( menu, ID_POPUP_FLIP_BLOCK, _( "Flip" ), KiBitmap( mirror_v_xpm ) );
|
2017-07-20 12:37:11 +00:00
|
|
|
AddMenuItem( menu, ID_POPUP_ROTATE_BLOCK, _( "Rotate Counterclockwise" ), KiBitmap( rotate_ccw_xpm ) );
|
2017-07-04 15:17:55 +00:00
|
|
|
AddMenuItem( menu, ID_POPUP_DELETE_BLOCK, _( "Delete" ), KiBitmap( delete_xpm ) );
|
2007-05-28 18:09:49 +00:00
|
|
|
}
|
2007-05-06 16:03:28 +00:00
|
|
|
|
|
|
|
|
2009-10-30 17:58:15 +00:00
|
|
|
/* Create command lines for a popup menu, for track and via editing
|
2009-10-26 19:00:46 +00:00
|
|
|
* also update Netclass selection
|
2007-08-20 01:20:48 +00:00
|
|
|
*/
|
2011-03-01 19:26:17 +00:00
|
|
|
void PCB_EDIT_FRAME::createPopupMenuForTracks( TRACK* Track, wxMenu* PopMenu )
|
2007-05-06 16:03:28 +00:00
|
|
|
{
|
2013-08-03 05:15:23 +00:00
|
|
|
wxPoint cursorPosition = GetCrossHairPosition();
|
2007-09-21 10:38:50 +00:00
|
|
|
wxString msg;
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2014-09-28 14:44:47 +00:00
|
|
|
SetCurrentNetClass( Track->GetNetClassName() );
|
2009-10-26 19:00:46 +00:00
|
|
|
|
2011-12-21 13:42:02 +00:00
|
|
|
int flags = Track->GetFlags();
|
2011-02-21 13:54:29 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
if( flags == 0 )
|
|
|
|
{
|
2013-09-20 10:52:33 +00:00
|
|
|
msg = AddHotkeyName( _( "Begin Track" ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_ADD_NEW_TRACK );
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_BEGIN_TRACK,
|
|
|
|
msg, KiBitmap( add_tracks_xpm ) );
|
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
if( Track->Type() == PCB_VIA_T )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Drag Via" ), g_Board_Editor_Hotkeys_Descr,
|
2013-07-05 17:48:01 +00:00
|
|
|
HK_DRAG_ITEM );
|
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_MOVE_TRACK_NODE, msg,
|
2011-12-16 13:32:23 +00:00
|
|
|
KiBitmap( move_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2007-09-15 04:25:54 +00:00
|
|
|
if( Track->IsPointOnEnds( cursorPosition, -1 ) != 0 )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hotkeys_Descr, HK_MOVE_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_MOVE_TRACK_NODE,
|
2011-09-08 05:58:45 +00:00
|
|
|
msg, KiBitmap( move_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Drag Segments, Keep Slope" ), g_Board_Editor_Hotkeys_Descr,
|
2011-08-30 09:42:42 +00:00
|
|
|
HK_DRAG_TRACK_KEEP_SLOPE );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_DRAG_TRACK_SEGMENT_KEEP_SLOPE,
|
2011-09-08 05:58:45 +00:00
|
|
|
msg, KiBitmap( drag_segment_withslope_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Drag Segment" ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_DRAG_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_DRAG_TRACK_SEGMENT,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( drag_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Duplicate" ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_DUPLICATE_ITEM );
|
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_DUPLICATE_ITEM,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( duplicate_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Move Exactly..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_MOVE_ITEM_EXACT );
|
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_MOVE_EXACT,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_exactly_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Create Track Array..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_CREATE_ARRAY );
|
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_CREATE_ARRAY,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( array_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_BREAK_TRACK,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Break Track" ), KiBitmap( break_line_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
}
|
2013-09-20 10:52:33 +00:00
|
|
|
|
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_SELECT_CU_LAYER,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Select Working Layer..." ), KiBitmap( select_w_layer_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
else if( flags & IS_DRAGGED ) // Drag via or node in progress
|
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_PLACE_MOVED_TRACK_NODE,
|
2014-02-07 19:32:08 +00:00
|
|
|
_( "Place Node" ), KiBitmap( checked_ok_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
return;
|
|
|
|
}
|
2018-06-22 13:05:11 +00:00
|
|
|
else // Edit in progress
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
|
|
|
if( flags & IS_NEW )
|
2007-09-21 10:38:50 +00:00
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "End Track" ), g_Board_Editor_Hotkeys_Descr, HK_LEFT_DCLICK );
|
2014-02-07 19:32:08 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_END_TRACK, msg, KiBitmap( checked_ok_xpm ) );
|
2007-09-21 10:38:50 +00:00
|
|
|
}
|
2011-09-01 12:54:34 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Place Through Via" ), g_Board_Editor_Hotkeys_Descr, HK_ADD_THROUGH_VIA );
|
2013-08-28 16:14:39 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_PLACE_THROUGH_VIA, msg, KiBitmap( via_xpm ) );
|
|
|
|
|
2018-02-09 16:28:33 +00:00
|
|
|
msg = AddHotkeyName( _( "Select Layer and Place Through Via..." ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_SEL_LAYER_AND_ADD_THROUGH_VIA );
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_SELECT_CU_LAYER_AND_PLACE_THROUGH_VIA,
|
|
|
|
msg, KiBitmap( select_w_layer_xpm ) );
|
|
|
|
|
2014-05-13 09:22:51 +00:00
|
|
|
if( GetDesignSettings().m_BlindBuriedViaAllowed )
|
2013-08-28 16:14:39 +00:00
|
|
|
{
|
2013-09-20 10:52:33 +00:00
|
|
|
msg = AddHotkeyName( _( "Place Blind/Buried Via" ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_ADD_BLIND_BURIED_VIA );
|
2015-05-03 18:43:07 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_PLACE_BLIND_BURIED_VIA, msg, KiBitmap( via_buried_xpm ) );
|
2013-09-20 10:52:33 +00:00
|
|
|
|
2018-02-09 16:28:33 +00:00
|
|
|
msg = AddHotkeyName( _( "Select Layer and Place Blind/Buried Via..." ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_SEL_LAYER_AND_ADD_BLIND_BURIED_VIA );
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_SELECT_CU_LAYER_AND_PLACE_BLIND_BURIED_VIA,
|
|
|
|
msg, KiBitmap( select_w_layer_xpm ) );
|
2013-08-28 16:14:39 +00:00
|
|
|
}
|
2008-01-28 18:44:14 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Switch Track Posture" ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_SWITCH_TRACK_POSTURE );
|
2011-12-17 21:21:03 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_SWITCH_TRACK_POSTURE, msg,
|
|
|
|
KiBitmap( change_entry_orient_xpm ) );
|
2010-06-16 15:01:45 +00:00
|
|
|
|
2008-01-28 18:44:14 +00:00
|
|
|
// See if we can place a Micro Via (4 or more layers, and start from an external layer):
|
2010-01-31 20:01:46 +00:00
|
|
|
if( IsMicroViaAcceptable() )
|
2008-01-28 18:44:14 +00:00
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Place Micro Via" ), g_Board_Editor_Hotkeys_Descr,
|
2009-08-03 18:54:48 +00:00
|
|
|
HK_ADD_MICROVIA );
|
2015-05-03 18:43:07 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_PLACE_MICROVIA, msg, KiBitmap( via_microvia_xpm ) );
|
2008-01-28 18:44:14 +00:00
|
|
|
}
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// track Width control :
|
2010-02-07 11:39:22 +00:00
|
|
|
if( !flags )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2011-10-01 19:24:27 +00:00
|
|
|
if( Track->Type() == PCB_VIA_T )
|
2009-10-26 19:00:46 +00:00
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Change Via Size and Drill" ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_EDIT_ITEM );
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_EDIT_TRACKSEG, msg, KiBitmap( width_segment_xpm ) );
|
2009-10-26 19:00:46 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Change Segment Width" ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_EDIT_ITEM );
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_EDIT_TRACKSEG, msg, KiBitmap( width_segment_xpm ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_EDIT_TRACK,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Change Track Width" ), KiBitmap( width_track_xpm ) );
|
2009-10-26 19:00:46 +00:00
|
|
|
}
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
|
|
|
|
2018-04-08 10:28:59 +00:00
|
|
|
// Allows switching to another track/via size when routing
|
2018-06-13 16:05:43 +00:00
|
|
|
AddMenuItem( PopMenu, Append_Track_Width_List( GetBoard(), GetUserUnits() ),
|
|
|
|
ID_POPUP_PCB_SELECT_WIDTH,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Select Track Width" ), KiBitmap( width_track_xpm ) );
|
2010-02-07 11:39:22 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
// Delete control:
|
2010-09-03 14:33:09 +00:00
|
|
|
PopMenu->AppendSeparator();
|
2013-09-20 10:52:33 +00:00
|
|
|
wxMenu* trackdel_mnu = new wxMenu;
|
|
|
|
AddMenuItem( PopMenu, trackdel_mnu, ID_POPUP_PCB_DELETE_TRACK_MNU, _( "Delete" ),
|
2011-10-01 19:24:27 +00:00
|
|
|
KiBitmap( delete_xpm ) );
|
2008-01-01 11:46:47 +00:00
|
|
|
|
2011-10-01 19:24:27 +00:00
|
|
|
msg = AddHotkeyName( Track->Type()==PCB_VIA_T ?
|
2011-09-14 15:08:44 +00:00
|
|
|
_( "Delete Via" ) : _( "Delete Segment" ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_BACK_SPACE );
|
2008-01-01 11:46:47 +00:00
|
|
|
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( trackdel_mnu, ID_POPUP_PCB_DELETE_TRACKSEG, msg, KiBitmap( delete_line_xpm ) );
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Delete Track" ), g_Board_Editor_Hotkeys_Descr, HK_DELETE );
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( trackdel_mnu, ID_POPUP_PCB_DELETE_TRACK, msg, KiBitmap( delete_track_xpm ) );
|
|
|
|
AddMenuItem( trackdel_mnu, ID_POPUP_PCB_DELETE_TRACKNET, _( "Delete Net" ),
|
2011-10-01 19:24:27 +00:00
|
|
|
KiBitmap( delete_net_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2010-09-03 14:33:09 +00:00
|
|
|
|
2018-04-28 15:22:25 +00:00
|
|
|
// Add global editing commands:
|
2010-09-03 14:33:09 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
|
|
|
PopMenu->AppendSeparator();
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( PopMenu, ID_POPUP_PCB_EDIT_ALL_VIAS_AND_TRACK_SIZE,
|
2018-04-28 15:22:25 +00:00
|
|
|
_( "Set Track and Via Sizes..." ), KiBitmap( width_track_via_xpm ) );
|
2010-09-03 14:33:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Add lock/unlock flags menu:
|
2013-09-20 10:52:33 +00:00
|
|
|
wxMenu* trackflg_mnu = new wxMenu;
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2013-09-20 10:52:33 +00:00
|
|
|
AddMenuItem( PopMenu, trackflg_mnu, ID_POPUP_PCB_SETFLAGS_TRACK_MNU, _( "Set Flags" ),
|
2011-12-16 13:32:23 +00:00
|
|
|
KiBitmap( flag_xpm ) );
|
2013-09-20 10:52:33 +00:00
|
|
|
trackflg_mnu->Append( ID_POPUP_PCB_LOCK_ON_TRACKSEG, _( "Locked: Yes" ), wxEmptyString, true );
|
|
|
|
trackflg_mnu->Append( ID_POPUP_PCB_LOCK_OFF_TRACKSEG, _( "Locked: No" ), wxEmptyString, true );
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2011-02-13 17:53:48 +00:00
|
|
|
if( Track->GetState( TRACK_LOCKED ) )
|
2013-09-20 10:52:33 +00:00
|
|
|
trackflg_mnu->Check( ID_POPUP_PCB_LOCK_ON_TRACKSEG, true );
|
2007-08-20 01:20:48 +00:00
|
|
|
else
|
2013-09-20 10:52:33 +00:00
|
|
|
trackflg_mnu->Check( ID_POPUP_PCB_LOCK_OFF_TRACKSEG, true );
|
2007-08-20 01:20:48 +00:00
|
|
|
|
|
|
|
if( !flags )
|
|
|
|
{
|
2013-09-20 10:52:33 +00:00
|
|
|
trackflg_mnu->Append( ID_POPUP_PCB_LOCK_ON_TRACK, _( "Track Locked: Yes" ) );
|
|
|
|
trackflg_mnu->Append( ID_POPUP_PCB_LOCK_OFF_TRACK, _( "Track Locked: No" ) );
|
|
|
|
trackflg_mnu->AppendSeparator();
|
|
|
|
trackflg_mnu->Append( ID_POPUP_PCB_LOCK_ON_NET, _( "Net Locked: Yes" ) );
|
|
|
|
trackflg_mnu->Append( ID_POPUP_PCB_LOCK_OFF_NET, _( "Net Locked: No" ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2007-05-06 16:03:28 +00:00
|
|
|
}
|
2007-06-05 12:10:51 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2008-01-01 11:46:47 +00:00
|
|
|
/* Create the wxMenuitem list for zone outlines editing and zone filling
|
|
|
|
*/
|
2011-03-01 19:26:17 +00:00
|
|
|
void PCB_EDIT_FRAME::createPopUpMenuForZones( ZONE_CONTAINER* edge_zone, wxMenu* aPopMenu )
|
2008-01-01 11:46:47 +00:00
|
|
|
{
|
2010-08-10 18:34:26 +00:00
|
|
|
wxString msg;
|
2018-11-17 00:34:12 +00:00
|
|
|
GENERAL_COLLECTORS_GUIDE guide = GetCollectorsGuide();
|
2010-08-10 18:34:26 +00:00
|
|
|
|
2011-12-21 13:42:02 +00:00
|
|
|
if( edge_zone->GetFlags() == IS_DRAGGED )
|
2008-02-01 21:30:45 +00:00
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_PLACE_DRAGGED_ZONE_OUTLINE_SEGMENT,
|
2014-02-07 19:32:08 +00:00
|
|
|
_( "Place Edge Outline" ), KiBitmap( checked_ok_xpm ) );
|
2008-02-01 21:30:45 +00:00
|
|
|
}
|
2011-12-21 13:42:02 +00:00
|
|
|
else if( edge_zone->GetFlags() )
|
2008-01-01 11:46:47 +00:00
|
|
|
{
|
2011-12-21 13:42:02 +00:00
|
|
|
if( (edge_zone->GetFlags() & IN_EDIT ) )
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_PLACE_ZONE_CORNER,
|
2014-02-07 19:32:08 +00:00
|
|
|
_( "Place Corner" ), KiBitmap( checked_ok_xpm ) );
|
2008-01-28 18:44:14 +00:00
|
|
|
else
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_PLACE_ZONE_OUTLINES,
|
2014-02-07 19:32:08 +00:00
|
|
|
_( "Place Zone" ), KiBitmap( checked_ok_xpm ) );
|
2008-01-01 11:46:47 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2008-01-28 18:44:14 +00:00
|
|
|
wxMenu* zones_menu = new wxMenu();
|
2018-11-17 00:34:12 +00:00
|
|
|
int accuracy = KiROUND( 5 * guide.OnePixelInIU() );
|
2008-04-18 13:28:56 +00:00
|
|
|
|
2012-07-13 18:55:29 +00:00
|
|
|
AddMenuItem( aPopMenu, zones_menu, -1,
|
|
|
|
edge_zone->GetIsKeepout() ? _("Keepout Area") : _( "Zones" ),
|
|
|
|
KiBitmap( add_zone_xpm ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
|
2018-11-17 00:34:12 +00:00
|
|
|
if( edge_zone->HitTestForCorner( RefPos( true ), accuracy * 2 ) )
|
2008-01-01 11:46:47 +00:00
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_MOVE_ZONE_CORNER,
|
2018-12-20 07:47:45 +00:00
|
|
|
_( "Move Corner" ), KiBitmap( move_xpm ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_DELETE_ZONE_CORNER,
|
2018-12-20 07:47:45 +00:00
|
|
|
_( "Delete Corner" ), KiBitmap( delete_xpm ) );
|
2008-01-01 11:46:47 +00:00
|
|
|
}
|
2018-11-17 00:34:12 +00:00
|
|
|
else if( edge_zone->HitTestForEdge( RefPos( true ), accuracy ) )
|
2008-01-01 11:46:47 +00:00
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_ADD_ZONE_CORNER,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Create Corner" ), KiBitmap( add_corner_xpm ) );
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Drag Outline Segment" ), g_Board_Editor_Hotkeys_Descr,
|
2011-03-01 19:26:17 +00:00
|
|
|
HK_DRAG_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_DRAG_ZONE_OUTLINE_SEGMENT,
|
2011-09-08 05:58:45 +00:00
|
|
|
msg, KiBitmap( drag_outline_segment_xpm ) );
|
2008-01-01 11:46:47 +00:00
|
|
|
}
|
|
|
|
|
2008-01-05 13:37:51 +00:00
|
|
|
zones_menu->AppendSeparator();
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_ZONE_ADD_SIMILAR_ZONE,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Add Similar Zone" ), KiBitmap( add_zone_xpm ) );
|
2008-01-01 11:46:47 +00:00
|
|
|
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_ZONE_ADD_CUTOUT_ZONE,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Add Cutout Area" ), KiBitmap( add_zone_cutout_xpm ) );
|
2012-06-20 09:57:36 +00:00
|
|
|
|
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_ZONE_DUPLICATE,
|
2018-03-08 05:39:08 +00:00
|
|
|
_( "Duplicate Zone onto Layer..." ), KiBitmap( zone_duplicate_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2008-01-05 13:37:51 +00:00
|
|
|
zones_menu->AppendSeparator();
|
2008-01-01 11:46:47 +00:00
|
|
|
|
2012-07-13 18:55:29 +00:00
|
|
|
if( ! edge_zone->GetIsKeepout() )
|
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_FILL_ZONE, _( "Fill Zone" ),
|
|
|
|
KiBitmap( fill_zone_xpm ) );
|
2008-01-01 11:46:47 +00:00
|
|
|
|
2015-07-27 19:45:57 +00:00
|
|
|
if( !edge_zone->GetFilledPolysList().IsEmpty() )
|
2008-10-29 15:26:53 +00:00
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_REMOVE_FILLED_AREAS_IN_CURRENT_ZONE,
|
2012-02-25 19:55:40 +00:00
|
|
|
_( "Remove Filled Areas in Zone" ), KiBitmap( zone_unfill_xpm ) );
|
2008-10-29 15:26:53 +00:00
|
|
|
}
|
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Move Zone" ), g_Board_Editor_Hotkeys_Descr, HK_MOVE_ITEM );
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_MOVE_ZONE_OUTLINES, msg, KiBitmap( move_xpm ) );
|
2008-01-16 20:37:50 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Move Zone Exactly..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_MOVE_ITEM_EXACT );
|
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_MOVE_EXACT,
|
2017-08-17 14:39:11 +00:00
|
|
|
msg, KiBitmap( move_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Edit Zone Properties..." ), g_Board_Editor_Hotkeys_Descr,
|
2013-03-20 14:50:12 +00:00
|
|
|
HK_EDIT_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_EDIT_ZONE_PARAMS,
|
2011-09-08 05:58:45 +00:00
|
|
|
msg, KiBitmap( edit_xpm ) );
|
2008-01-05 13:37:51 +00:00
|
|
|
|
2008-01-16 20:37:50 +00:00
|
|
|
zones_menu->AppendSeparator();
|
2011-09-01 12:54:34 +00:00
|
|
|
|
2013-03-20 14:50:12 +00:00
|
|
|
if( edge_zone->GetSelectedCorner() >= 0 &&
|
2017-03-07 12:06:00 +00:00
|
|
|
edge_zone->Outline()->IsVertexInHole( edge_zone->GetSelectedCorner() ) )
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_DELETE_ZONE_CUTOUT,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Delete Cutout" ), KiBitmap( delete_xpm ) );
|
2008-01-28 18:44:14 +00:00
|
|
|
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( zones_menu, ID_POPUP_PCB_DELETE_ZONE_CONTAINER,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Delete Zone Outline" ), KiBitmap( delete_xpm ) );
|
2008-01-01 11:46:47 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2007-05-28 18:09:49 +00:00
|
|
|
/* Create the wxMenuitem list for footprint editing
|
2007-08-20 01:20:48 +00:00
|
|
|
*/
|
2011-03-01 19:26:17 +00:00
|
|
|
void PCB_EDIT_FRAME::createPopUpMenuForFootprints( MODULE* aModule, wxMenu* menu )
|
2007-06-05 12:10:51 +00:00
|
|
|
{
|
2007-08-20 01:20:48 +00:00
|
|
|
wxMenu* sub_menu_footprint;
|
2011-12-21 13:42:02 +00:00
|
|
|
int flags = aModule->GetFlags();
|
2007-09-21 10:38:50 +00:00
|
|
|
wxString msg;
|
2007-08-20 01:20:48 +00:00
|
|
|
|
|
|
|
sub_menu_footprint = new wxMenu;
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2018-04-10 10:52:12 +00:00
|
|
|
msg = aModule->GetSelectMenuText( m_UserUnits );
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( menu, sub_menu_footprint, -1, msg, KiBitmap( module_xpm ) );
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2007-09-15 04:25:54 +00:00
|
|
|
if( !flags )
|
2007-08-20 01:20:48 +00:00
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hotkeys_Descr, HK_MOVE_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_MOVE_MODULE_REQUEST,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Drag" ), g_Board_Editor_Hotkeys_Descr, HK_DRAG_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_DRAG_MODULE_REQUEST,
|
2017-06-02 09:51:11 +00:00
|
|
|
msg, KiBitmap( drag_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Rotate Counterclockwise" ), g_Board_Editor_Hotkeys_Descr, HK_ROTATE_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_ROTATE_MODULE_COUNTERCLOCKWISE,
|
2017-06-02 09:51:11 +00:00
|
|
|
msg, KiBitmap( rotate_ccw_xpm ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_ROTATE_MODULE_CLOCKWISE,
|
2017-07-20 12:37:11 +00:00
|
|
|
_( "Rotate Clockwise" ), KiBitmap( rotate_cw_xpm ) );
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Flip" ), g_Board_Editor_Hotkeys_Descr, HK_FLIP_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_CHANGE_SIDE_MODULE,
|
2017-07-03 15:13:13 +00:00
|
|
|
msg, KiBitmap( mirror_v_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
|
|
|
|
if( !flags )
|
|
|
|
{
|
2018-02-09 16:28:33 +00:00
|
|
|
msg = AddHotkeyName( _( "Edit Parameters..." ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_EDIT_ITEM );
|
2013-03-01 19:59:29 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_EDIT_MODULE_PRMS, msg,
|
2011-12-16 13:32:23 +00:00
|
|
|
KiBitmap( edit_module_xpm ) );
|
2015-03-14 07:43:36 +00:00
|
|
|
|
|
|
|
msg = AddHotkeyName( _( "Edit with Footprint Editor" ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_EDIT_MODULE_WITH_MODEDIT );
|
2013-03-01 19:59:29 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_EDIT_MODULE_WITH_MODEDIT,
|
2015-03-14 07:43:36 +00:00
|
|
|
msg, KiBitmap( module_editor_xpm ) );
|
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
sub_menu_footprint->AppendSeparator();
|
2015-03-14 07:43:36 +00:00
|
|
|
|
2017-07-04 15:17:55 +00:00
|
|
|
msg = AddHotkeyName( _( "Delete" ),
|
2018-02-14 22:07:59 +00:00
|
|
|
g_Board_Editor_Hotkeys_Descr, HK_DELETE );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_DELETE_MODULE,
|
2011-11-24 19:57:41 +00:00
|
|
|
msg, KiBitmap( delete_module_xpm ) );
|
2015-08-20 18:13:18 +00:00
|
|
|
|
|
|
|
sub_menu_footprint->AppendSeparator();
|
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Move Exactly..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-08-20 18:13:18 +00:00
|
|
|
HK_MOVE_ITEM_EXACT );
|
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_MOVE_EXACT,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_exactly_xpm ) );
|
2015-08-20 18:13:18 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Duplicate" ), g_Board_Editor_Hotkeys_Descr,
|
2015-08-20 18:13:18 +00:00
|
|
|
HK_DUPLICATE_ITEM );
|
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_DUPLICATE_ITEM,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( duplicate_xpm ) );
|
2015-08-20 18:13:18 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Create Array..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-08-20 18:13:18 +00:00
|
|
|
HK_CREATE_ARRAY );
|
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_CREATE_ARRAY,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( array_xpm ) );
|
2015-08-20 18:13:18 +00:00
|
|
|
|
2018-01-12 19:36:15 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_UPDATE_FOOTPRINTS,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Update Footprint..." ), KiBitmap( reload_xpm ) );
|
2018-01-12 19:36:15 +00:00
|
|
|
|
2015-08-20 18:13:18 +00:00
|
|
|
AddMenuItem( sub_menu_footprint, ID_POPUP_PCB_EXCHANGE_FOOTPRINTS,
|
2018-02-09 16:28:33 +00:00
|
|
|
_( "Change Footprint..." ), KiBitmap( exchange_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2018-05-02 16:06:10 +00:00
|
|
|
|
|
|
|
sub_menu_footprint->AppendSeparator();
|
|
|
|
|
|
|
|
if( !aModule->IsLocked() )
|
|
|
|
{
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2007-05-28 18:09:49 +00:00
|
|
|
}
|
2007-06-05 12:10:51 +00:00
|
|
|
|
|
|
|
|
2007-05-28 18:09:49 +00:00
|
|
|
/* Create the wxMenuitem list for editing texts on footprints
|
2007-08-20 01:20:48 +00:00
|
|
|
*/
|
2011-03-01 19:26:17 +00:00
|
|
|
void PCB_EDIT_FRAME::createPopUpMenuForFpTexts( TEXTE_MODULE* FpText, wxMenu* menu )
|
2007-06-05 12:10:51 +00:00
|
|
|
{
|
2007-08-20 01:20:48 +00:00
|
|
|
wxMenu* sub_menu_Fp_text;
|
2011-12-21 13:42:02 +00:00
|
|
|
int flags = FpText->GetFlags();
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2018-04-10 10:52:12 +00:00
|
|
|
wxString msg = FpText->GetSelectMenuText( m_UserUnits );
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2007-08-20 01:20:48 +00:00
|
|
|
sub_menu_Fp_text = new wxMenu;
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( menu, sub_menu_Fp_text, -1, msg, KiBitmap( footprint_text_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
|
|
|
|
if( !flags )
|
2010-08-12 19:41:13 +00:00
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hotkeys_Descr, HK_MOVE_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_MOVE_TEXTMODULE_REQUEST,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_xpm ) );
|
2015-02-12 03:22:24 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _("Move Exactly..." ), g_Board_Editor_Hotkeys_Descr,
|
2015-02-12 03:22:24 +00:00
|
|
|
HK_MOVE_ITEM_EXACT );
|
2015-04-03 19:10:09 +00:00
|
|
|
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_MOVE_EXACT,
|
2017-07-04 15:17:55 +00:00
|
|
|
msg, KiBitmap( move_exactly_xpm ) );
|
2010-08-12 19:41:13 +00:00
|
|
|
}
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Rotate Clockwise" ), g_Board_Editor_Hotkeys_Descr, HK_ROTATE_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_ROTATE_TEXTMODULE,
|
2017-06-02 09:51:11 +00:00
|
|
|
msg, KiBitmap( rotate_cw_xpm ) );
|
2015-04-03 19:10:09 +00:00
|
|
|
|
2009-08-11 14:10:34 +00:00
|
|
|
if( !flags )
|
2010-08-10 18:34:26 +00:00
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Edit..." ), g_Board_Editor_Hotkeys_Descr, HK_EDIT_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_EDIT_TEXTMODULE,
|
2011-09-08 05:58:45 +00:00
|
|
|
msg, KiBitmap( edit_text_xpm ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_RESET_TEXT_SIZE,
|
2011-09-08 05:58:45 +00:00
|
|
|
_( "Reset Size" ), KiBitmap( reset_text_xpm ) );
|
2010-08-10 18:34:26 +00:00
|
|
|
}
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2011-03-01 19:26:17 +00:00
|
|
|
// Graphic texts can be deleted only if are not currently edited.
|
2013-04-07 11:55:18 +00:00
|
|
|
if( !flags && FpText->GetType() == TEXTE_MODULE::TEXT_is_DIVERS )
|
2009-08-11 10:27:21 +00:00
|
|
|
{
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_Fp_text, ID_POPUP_PCB_DELETE_TEXTMODULE,
|
2017-07-04 15:17:55 +00:00
|
|
|
_( "Delete" ), KiBitmap( delete_xpm ) );
|
2009-08-11 10:27:21 +00:00
|
|
|
}
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2007-09-15 04:25:54 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
|
|
|
MODULE* module = (MODULE*) FpText->GetParent();
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2007-09-15 04:25:54 +00:00
|
|
|
if( module )
|
|
|
|
{
|
|
|
|
menu->AppendSeparator();
|
|
|
|
createPopUpMenuForFootprints( module, menu );
|
|
|
|
}
|
|
|
|
}
|
2007-06-05 12:10:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-10-26 19:00:46 +00:00
|
|
|
/* Create pop menu for pads
|
|
|
|
* also update Netclass selection
|
|
|
|
*/
|
2011-03-01 19:26:17 +00:00
|
|
|
void PCB_EDIT_FRAME::createPopUpMenuForFpPads( D_PAD* Pad, wxMenu* menu )
|
2007-06-05 12:10:51 +00:00
|
|
|
{
|
2009-08-03 18:54:48 +00:00
|
|
|
wxMenu* sub_menu_Pad;
|
2011-12-21 13:42:02 +00:00
|
|
|
int flags = Pad->GetFlags();
|
2009-08-03 18:54:48 +00:00
|
|
|
|
|
|
|
if( flags ) // Currently in edit, no others commands possible
|
|
|
|
return;
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2014-09-28 14:44:47 +00:00
|
|
|
SetCurrentNetClass( Pad->GetNetClassName() );
|
2009-10-26 19:00:46 +00:00
|
|
|
|
2018-04-10 10:52:12 +00:00
|
|
|
wxString msg = Pad->GetSelectMenuText( m_UserUnits );
|
2007-08-20 01:20:48 +00:00
|
|
|
|
|
|
|
sub_menu_Pad = new wxMenu;
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( menu, sub_menu_Pad, -1, msg, KiBitmap( pad_xpm ) );
|
2009-08-03 18:54:48 +00:00
|
|
|
|
2015-04-03 19:10:09 +00:00
|
|
|
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_MOVE_PAD_REQUEST, _( "Move Pad" ),
|
2011-12-16 13:32:23 +00:00
|
|
|
KiBitmap( move_pad_xpm ) );
|
2015-04-03 19:10:09 +00:00
|
|
|
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_DRAG_PAD_REQUEST, _( "Drag Pad" ),
|
2011-12-16 13:32:23 +00:00
|
|
|
KiBitmap( drag_pad_xpm ) );
|
2009-08-03 18:54:48 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Edit Pad..." ), g_Board_Editor_Hotkeys_Descr, HK_EDIT_ITEM );
|
2012-12-27 16:42:41 +00:00
|
|
|
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_EDIT_PAD, msg, KiBitmap( options_pad_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
sub_menu_Pad->AppendSeparator();
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2017-02-03 18:56:56 +00:00
|
|
|
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_COPY_PAD_SETTINGS,
|
2018-02-12 23:42:37 +00:00
|
|
|
_( "Copy Pad Properties" ),
|
2011-09-01 12:54:34 +00:00
|
|
|
wxEmptyString,
|
2017-02-03 18:56:56 +00:00
|
|
|
KiBitmap( copy_pad_settings_xpm ) );
|
|
|
|
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_APPLY_PAD_SETTINGS,
|
2018-07-05 16:14:19 +00:00
|
|
|
_( "Paste Pad Properties" ),
|
2011-09-01 12:54:34 +00:00
|
|
|
wxEmptyString,
|
2017-02-03 18:56:56 +00:00
|
|
|
KiBitmap( apply_pad_settings_xpm ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_GLOBAL_IMPORT_PAD_SETTINGS,
|
2018-02-12 23:42:37 +00:00
|
|
|
_( "Push Pad Properties..." ),
|
|
|
|
_( "Copy this pad's properties to all pads in this footprint (or similar footprints)" ),
|
2017-02-03 20:47:01 +00:00
|
|
|
KiBitmap( push_pad_settings_xpm ) );
|
2009-08-03 18:54:48 +00:00
|
|
|
sub_menu_Pad->AppendSeparator();
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( sub_menu_Pad, ID_POPUP_PCB_DELETE_PAD, _( "Delete" ), KiBitmap( delete_pad_xpm ) );
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2015-11-04 08:48:34 +00:00
|
|
|
MODULE* module = Pad->GetParent();
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2009-08-03 18:54:48 +00:00
|
|
|
if( module )
|
2007-09-15 04:25:54 +00:00
|
|
|
{
|
2009-08-03 18:54:48 +00:00
|
|
|
menu->AppendSeparator();
|
|
|
|
createPopUpMenuForFootprints( module, menu );
|
2007-09-15 04:25:54 +00:00
|
|
|
}
|
2007-06-05 12:10:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2013-08-03 05:15:23 +00:00
|
|
|
// Create pop menu for pcb texts
|
2011-03-01 19:26:17 +00:00
|
|
|
void PCB_EDIT_FRAME::createPopUpMenuForTexts( TEXTE_PCB* Text, wxMenu* menu )
|
2007-06-05 12:10:51 +00:00
|
|
|
{
|
2007-08-20 01:20:48 +00:00
|
|
|
wxMenu* sub_menu_Text;
|
2011-12-21 13:42:02 +00:00
|
|
|
int flags = Text->GetFlags();
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2018-04-10 10:52:12 +00:00
|
|
|
wxString msg = Text->GetSelectMenuText( m_UserUnits );
|
2007-08-20 01:20:48 +00:00
|
|
|
|
|
|
|
sub_menu_Text = new wxMenu;
|
2007-09-21 10:38:50 +00:00
|
|
|
|
2017-06-02 09:51:11 +00:00
|
|
|
AddMenuItem( menu, sub_menu_Text, -1, msg, KiBitmap( text_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
|
|
|
|
if( !flags )
|
|
|
|
{
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Move" ), g_Board_Editor_Hotkeys_Descr, HK_MOVE_ITEM );
|
2011-09-01 12:54:34 +00:00
|
|
|
AddMenuItem( sub_menu_Text, ID_POPUP_PCB_MOVE_TEXTEPCB_REQUEST,
|
2017-06-02 09:51:11 +00:00
|
|
|
msg, KiBitmap( move_xpm ) );
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Copy" ), g_Board_Editor_Hotkeys_Descr, HK_COPY_ITEM );
|
2012-07-04 19:50:47 +00:00
|
|
|
AddMenuItem( sub_menu_Text, ID_POPUP_PCB_COPY_TEXTEPCB,
|
2017-06-02 09:51:11 +00:00
|
|
|
msg, KiBitmap( copy_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
}
|
2011-12-16 13:32:23 +00:00
|
|
|
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Rotate" ), g_Board_Editor_Hotkeys_Descr, HK_ROTATE_ITEM );
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( sub_menu_Text, ID_POPUP_PCB_ROTATE_TEXTEPCB, msg, KiBitmap( rotate_ccw_xpm ) );
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Flip" ), g_Board_Editor_Hotkeys_Descr, HK_FLIP_ITEM );
|
2014-05-31 15:49:15 +00:00
|
|
|
AddMenuItem( sub_menu_Text, ID_POPUP_PCB_FLIP_TEXTEPCB, msg, KiBitmap( mirror_h_xpm ) );
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Edit..." ), g_Board_Editor_Hotkeys_Descr, HK_EDIT_ITEM );
|
2011-09-08 05:58:45 +00:00
|
|
|
AddMenuItem( sub_menu_Text, ID_POPUP_PCB_EDIT_TEXTEPCB, msg, KiBitmap( edit_text_xpm ) );
|
2012-07-04 19:50:47 +00:00
|
|
|
if( !flags )
|
|
|
|
{
|
|
|
|
AddMenuItem( sub_menu_Text, ID_POPUP_PCB_RESET_TEXT_SIZE,
|
|
|
|
_( "Reset Size" ), KiBitmap( reset_text_xpm ) );
|
2007-08-20 01:20:48 +00:00
|
|
|
|
2012-07-04 19:50:47 +00:00
|
|
|
sub_menu_Text->AppendSeparator();
|
2018-02-14 22:07:59 +00:00
|
|
|
msg = AddHotkeyName( _( "Delete" ), g_Board_Editor_Hotkeys_Descr, HK_DELETE );
|
2017-07-03 15:13:13 +00:00
|
|
|
AddMenuItem( sub_menu_Text, ID_POPUP_PCB_DELETE_TEXTEPCB, msg, KiBitmap( delete_xpm ) );
|
2012-07-04 19:50:47 +00:00
|
|
|
}
|
2007-05-28 18:09:49 +00:00
|
|
|
}
|
2009-07-13 15:25:41 +00:00
|
|
|
|
2009-08-03 18:54:48 +00:00
|
|
|
|
2011-03-01 19:26:17 +00:00
|
|
|
void PCB_EDIT_FRAME::createPopUpMenuForMarkers( MARKER_PCB* aMarker, wxMenu* aPopMenu )
|
2009-07-13 15:25:41 +00:00
|
|
|
{
|
2011-12-16 13:32:23 +00:00
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_DELETE_MARKER, _( "Delete Marker" ),
|
|
|
|
KiBitmap( delete_xpm ) );
|
|
|
|
AddMenuItem( aPopMenu, ID_POPUP_PCB_GETINFO_MARKER, _( "Marker Error Info" ),
|
|
|
|
KiBitmap( info_xpm ) );
|
2009-07-13 15:25:41 +00:00
|
|
|
}
|
2009-08-06 07:11:04 +00:00
|
|
|
|
|
|
|
|
2010-11-12 16:36:43 +00:00
|
|
|
/**
|
|
|
|
* Function Append_Track_Width_List
|
2009-10-03 17:18:08 +00:00
|
|
|
* creates a wxMenu * which shows the last used track widths and via diameters
|
2013-03-20 14:50:12 +00:00
|
|
|
* @return a pointer to the menu
|
2009-08-06 07:11:04 +00:00
|
|
|
*/
|
2018-06-13 16:05:43 +00:00
|
|
|
static wxMenu* Append_Track_Width_List( BOARD* aBoard, EDA_UNITS_T aUnits )
|
2009-08-06 07:11:04 +00:00
|
|
|
{
|
2018-06-13 16:05:43 +00:00
|
|
|
wxString msg;
|
|
|
|
wxMenu* trackwidth_menu;
|
|
|
|
BOARD_DESIGN_SETTINGS& bds = aBoard->GetDesignSettings();
|
2009-08-06 07:11:04 +00:00
|
|
|
|
|
|
|
trackwidth_menu = new wxMenu;
|
|
|
|
|
2011-03-01 19:26:17 +00:00
|
|
|
trackwidth_menu->Append( ID_POPUP_PCB_SELECT_AUTO_WIDTH, _( "Auto Width" ),
|
|
|
|
_( "Use the track width when starting on a track, otherwise the current track width" ),
|
2009-10-03 17:18:08 +00:00
|
|
|
true );
|
2009-08-06 07:11:04 +00:00
|
|
|
|
2018-06-13 16:05:43 +00:00
|
|
|
if( bds.m_UseConnectedTrackWidth )
|
2009-10-03 17:18:08 +00:00
|
|
|
trackwidth_menu->Check( ID_POPUP_PCB_SELECT_AUTO_WIDTH, true );
|
|
|
|
|
2018-06-13 16:05:43 +00:00
|
|
|
if( bds.GetViaSizeIndex() != 0 || bds.GetTrackWidthIndex() != 0 || bds.m_UseConnectedTrackWidth )
|
2009-10-03 17:18:08 +00:00
|
|
|
trackwidth_menu->Append( ID_POPUP_PCB_SELECT_USE_NETCLASS_VALUES,
|
2009-10-30 17:58:15 +00:00
|
|
|
_( "Use Netclass Values" ),
|
|
|
|
_( "Use track and via sizes from their Netclass values" ),
|
|
|
|
true );
|
2009-08-06 07:11:04 +00:00
|
|
|
|
2018-06-13 16:05:43 +00:00
|
|
|
for( unsigned ii = 0; ii < bds.m_TrackWidthList.size(); ii++ )
|
2009-08-06 07:11:04 +00:00
|
|
|
{
|
2018-06-13 16:05:43 +00:00
|
|
|
wxString value = StringFromValue( aUnits, bds.m_TrackWidthList[ii], true );
|
2009-10-30 17:58:15 +00:00
|
|
|
msg.Printf( _( "Track %s" ), GetChars( value ) );
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2009-10-30 17:58:15 +00:00
|
|
|
if( ii == 0 )
|
2013-03-20 14:50:12 +00:00
|
|
|
msg << _( " uses NetClass" );
|
2009-10-30 17:58:15 +00:00
|
|
|
|
2011-03-01 19:26:17 +00:00
|
|
|
trackwidth_menu->Append( ID_POPUP_PCB_SELECT_WIDTH1 + ii, msg, wxEmptyString, true );
|
2009-08-06 07:11:04 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
trackwidth_menu->AppendSeparator();
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2018-06-13 16:05:43 +00:00
|
|
|
for( unsigned ii = 0; ii < bds.m_ViasDimensionsList.size(); ii++ )
|
2009-08-06 07:11:04 +00:00
|
|
|
{
|
2018-06-13 16:05:43 +00:00
|
|
|
wxString value = StringFromValue( aUnits, bds.m_ViasDimensionsList[ii].m_Diameter, true );
|
|
|
|
wxString drill = StringFromValue( aUnits, bds.m_ViasDimensionsList[ii].m_Drill, true );
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2018-06-13 16:05:43 +00:00
|
|
|
if( bds.m_ViasDimensionsList[ii].m_Drill <= 0 )
|
2011-09-01 12:54:34 +00:00
|
|
|
{
|
2009-10-30 17:58:15 +00:00
|
|
|
msg.Printf( _( "Via %s" ), GetChars( value ) );
|
2011-09-01 12:54:34 +00:00
|
|
|
}
|
2009-08-06 07:11:04 +00:00
|
|
|
else
|
2009-10-30 17:58:15 +00:00
|
|
|
{
|
2013-03-20 14:50:12 +00:00
|
|
|
msg.Printf( _( "Via %s, drill %s" ), GetChars( value ), GetChars( drill ) );
|
2009-10-30 17:58:15 +00:00
|
|
|
}
|
2011-09-01 12:54:34 +00:00
|
|
|
|
2009-10-30 17:58:15 +00:00
|
|
|
if( ii == 0 )
|
2013-03-20 14:50:12 +00:00
|
|
|
msg << _( " uses NetClass" );
|
2011-03-01 19:26:17 +00:00
|
|
|
|
2009-10-03 17:18:08 +00:00
|
|
|
trackwidth_menu->Append( ID_POPUP_PCB_SELECT_VIASIZE1 + ii, msg, wxEmptyString, true );
|
2009-08-06 07:11:04 +00:00
|
|
|
}
|
2009-10-30 17:58:15 +00:00
|
|
|
|
2009-08-06 07:11:04 +00:00
|
|
|
return trackwidth_menu;
|
|
|
|
}
|