ADDED unit-filtering for pin table.

Fixes https://gitlab.com/kicad/code/kicad/issues/9382
This commit is contained in:
Jeff Young 2022-03-26 11:05:10 +00:00
parent e6c2b12ddf
commit d5533e7999
9 changed files with 708 additions and 500 deletions

View File

@ -1,7 +1,7 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 1992-2022 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
@ -34,6 +34,7 @@
#include <widgets/grid_icon_text_helpers.h>
#include <widgets/grid_combobox.h>
#include <widgets/wx_grid.h>
#include <widgets/bitmap_button.h>
#include <settings/settings_manager.h>
#include <wx/tokenzr.h>
#include <string_utils.h>
@ -48,6 +49,7 @@ class PIN_TABLE_DATA_MODEL : public wxGridTableBase
public:
PIN_TABLE_DATA_MODEL( SYMBOL_EDIT_FRAME* aFrame, DIALOG_LIB_EDIT_PIN_TABLE* aPinTable ) :
m_frame( aFrame ),
m_unitFilter( -1 ),
m_edited( false ),
m_pinTable( aPinTable )
{
@ -67,6 +69,7 @@ public:
aEvent.Skip();
}
void SetUnitFilter( int aFilter ) { m_unitFilter = aFilter; }
int GetNumberRows() override { return (int) m_rows.size(); }
int GetNumberCols() override { return COL_COUNT; }
@ -119,46 +122,60 @@ public:
case COL_PIN_COUNT:
val << pins.size();
break;
case COL_NUMBER:
val = pin->GetNumber();
break;
case COL_NAME:
val = pin->GetName();
break;
case COL_TYPE:
val = PinTypeNames()[static_cast<int>( pin->GetType() )];
break;
case COL_SHAPE:
val = PinShapeNames()[static_cast<int>( pin->GetShape() )];
break;
case COL_ORIENTATION:
if( PinOrientationIndex( pin->GetOrientation() ) >= 0 )
val = PinOrientationNames()[ PinOrientationIndex( pin->GetOrientation() ) ];
break;
case COL_NUMBER_SIZE:
val = StringFromValue( aUserUnits, pin->GetNumberTextSize(), true );
break;
case COL_NAME_SIZE:
val = StringFromValue( aUserUnits, pin->GetNameTextSize(), true );
break;
case COL_LENGTH:
val = StringFromValue( aUserUnits, pin->GetLength(), true );
break;
case COL_POSX:
val = StringFromValue( aUserUnits, pin->GetPosition().x, true );
break;
case COL_POSY:
val = StringFromValue( aUserUnits, pin->GetPosition().y, true );
break;
case COL_VISIBLE:
val = StringFromBool( pin->IsVisible() );
break;
case COL_UNIT:
if( pin->GetUnit() )
val = LIB_SYMBOL::SubReference( pin->GetUnit(), false );
else
val = UNITS_ALL;
break;
case COL_DEMORGAN:
switch( pin->GetConvert() )
{
@ -173,6 +190,7 @@ public:
break;
}
break;
default:
wxFAIL;
break;
@ -271,9 +289,8 @@ public:
{
case COL_NUMBER:
if( !m_pinTable->IsDisplayGrouped() )
{
pin->SetNumber( aValue );
}
break;
case COL_NAME:
@ -438,18 +455,21 @@ public:
for( LIB_PIN* pin : aPins )
{
int rowIndex = -1;
if( groupByName )
rowIndex = findRow( m_rows, pin->GetName() );
if( rowIndex < 0 )
if( m_unitFilter == -1 || pin->GetUnit() == 0 || pin->GetUnit() == m_unitFilter )
{
m_rows.emplace_back( LIB_PINS() );
rowIndex = m_rows.size() - 1;
}
int rowIndex = -1;
m_rows[ rowIndex ].push_back( pin );
if( groupByName )
rowIndex = findRow( m_rows, pin->GetName() );
if( rowIndex < 0 )
{
m_rows.emplace_back( LIB_PINS() );
rowIndex = m_rows.size() - 1;
}
m_rows[ rowIndex ].push_back( pin );
}
}
int sortCol = 0;
@ -545,8 +565,8 @@ private:
}
else
{
wxFAIL_MSG( wxString::Format( "string '%s' can't be converted to boolean "
"correctly, it will have been perceived as FALSE",
wxFAIL_MSG( wxString::Format( "string '%s' can't be converted to boolean correctly, "
"it will have been perceived as FALSE",
aValue ) );
return false;
}
@ -559,6 +579,7 @@ private:
// data model is a 2D vector. If we're in the single pin case, each row's LIB_PINS
// contains only a single pin.
std::vector<LIB_PINS> m_rows;
int m_unitFilter; // 0 to show pins for all units
bool m_edited;
@ -659,9 +680,27 @@ DIALOG_LIB_EDIT_PIN_TABLE::DIALOG_LIB_EDIT_PIN_TABLE( SYMBOL_EDIT_FRAME* parent,
m_deleteButton->SetBitmap( KiBitmap( BITMAPS::small_trash ) );
m_refreshButton->SetBitmap( KiBitmap( BITMAPS::small_refresh ) );
m_divider1->SetIsSeparator();
m_divider2->SetIsSeparator();
GetSizer()->SetSizeHints(this);
Centre();
if( aSymbol->IsMulti() )
{
m_unitFilter->Append( UNITS_ALL );
for( int ii = 0; ii < aSymbol->GetUnitCount(); ++ii )
m_unitFilter->Append( aSymbol->GetUnitReference( ii + 1 ) );
m_unitFilter->SetSelection( -1 );
}
else
{
m_cbFilterByUnit->Show( false );
m_unitFilter->Show( false );
}
SetupStandardButtons();
if( !parent->IsSymbolEditable() || parent->IsSymbolAlias() )
@ -887,11 +926,35 @@ void DIALOG_LIB_EDIT_PIN_TABLE::OnRebuildRows( wxCommandEvent& )
m_grid->HideCol( COL_PIN_COUNT );
}
adjustGridColumns();
}
void DIALOG_LIB_EDIT_PIN_TABLE::OnFilterCheckBox( wxCommandEvent& event )
{
if( event.IsChecked() )
{
m_dataModel->SetUnitFilter( m_unitFilter->GetSelection() );
}
else
{
m_dataModel->SetUnitFilter( -1 );
m_unitFilter->SetSelection( -1 );
}
OnRebuildRows( event );
}
void DIALOG_LIB_EDIT_PIN_TABLE::OnFilterChoice( wxCommandEvent& event )
{
m_cbFilterByUnit->SetValue( true );
m_dataModel->SetUnitFilter( m_unitFilter->GetSelection() );
OnRebuildRows( event );
}
void DIALOG_LIB_EDIT_PIN_TABLE::adjustGridColumns()
{
// Account for scroll bars
@ -1018,10 +1081,8 @@ void DIALOG_LIB_EDIT_PIN_TABLE::updateSummary()
}
m_pin_numbers_summary->SetLabel( pinNumbers.GetSummary() );
wxString count;
count << m_pins.size();
m_pin_count->SetLabel( count );
m_pin_count->SetLabel( wxString::Format( wxT( "%lu" ), m_pins.size() ) );
m_duplicate_pins->SetLabel( pinNumbers.GetDuplicates() );
Layout();
}

View File

@ -1,7 +1,7 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2019-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2019-2022 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
@ -66,6 +66,8 @@ public:
void OnSize( wxSizeEvent& event ) override;
void OnCellEdited( wxGridEvent& event ) override;
void OnRebuildRows( wxCommandEvent& event ) override;
void OnFilterCheckBox( wxCommandEvent& event ) override;
void OnFilterChoice( wxCommandEvent& event ) override;
void OnUpdateUI( wxUpdateUIEvent& event ) override;
void OnCancel( wxCommandEvent& event ) override;
void OnClose( wxCloseEvent& event ) override;

View File

@ -5,6 +5,7 @@
// PLEASE DO *NOT* EDIT THIS FILE!
///////////////////////////////////////////////////////////////////////////
#include "widgets/bitmap_button.h"
#include "widgets/wx_grid.h"
#include "dialog_lib_edit_pin_table_base.h"
@ -18,42 +19,44 @@ DIALOG_LIB_EDIT_PIN_TABLE_BASE::DIALOG_LIB_EDIT_PIN_TABLE_BASE( wxWindow* parent
wxBoxSizer* top_sizer;
top_sizer = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bSizer7;
bSizer7 = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bPinNumbersSizer;
bPinNumbersSizer = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bSummarySizer;
bSummarySizer = new wxBoxSizer( wxHORIZONTAL );
m_staticTextPinNumbers = new wxStaticText( this, wxID_ANY, _("Pin numbers:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextPinNumbers->Wrap( -1 );
bPinNumbersSizer->Add( m_staticTextPinNumbers, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
bSummarySizer->Add( m_staticTextPinNumbers, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
m_pin_numbers_summary = new wxStaticText( this, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_pin_numbers_summary->Wrap( -1 );
bPinNumbersSizer->Add( m_pin_numbers_summary, 1, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
bSummarySizer->Add( m_pin_numbers_summary, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
bSizer7->Add( bPinNumbersSizer, 1, wxEXPAND, 5 );
wxBoxSizer* bPinCountSizer;
bPinCountSizer = new wxBoxSizer( wxHORIZONTAL );
bSummarySizer->Add( 0, 0, 1, wxEXPAND, 5 );
m_staticTextPinCount = new wxStaticText( this, wxID_ANY, _("Pin count:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextPinCount->Wrap( -1 );
bPinCountSizer->Add( m_staticTextPinCount, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
bSummarySizer->Add( m_staticTextPinCount, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
m_pin_count = new wxStaticText( this, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_pin_count->Wrap( -1 );
bPinCountSizer->Add( m_pin_count, 1, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
bSummarySizer->Add( m_pin_count, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
bSizer7->Add( bPinCountSizer, 0, wxRIGHT|wxLEFT, 10 );
bSummarySizer->Add( 0, 0, 1, wxEXPAND, 5 );
m_staticTextDuplicatePins = new wxStaticText( this, wxID_ANY, _("Duplicate pins:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDuplicatePins->Wrap( -1 );
bSummarySizer->Add( m_staticTextDuplicatePins, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
m_duplicate_pins = new wxStaticText( this, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_duplicate_pins->Wrap( -1 );
bSummarySizer->Add( m_duplicate_pins, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
top_sizer->Add( bSizer7, 0, wxEXPAND|wxTOP|wxLEFT, 10 );
top_sizer->Add( bSummarySizer, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 10 );
wxBoxSizer* bSizer8;
bSizer8 = new wxBoxSizer( wxVERTICAL );
wxBoxSizer* bGridMarginsSizer;
bGridMarginsSizer = new wxBoxSizer( wxVERTICAL );
m_grid = new WX_GRID( this, wxID_ANY, wxDefaultPosition, wxSize( 800,400 ), 0 );
@ -108,57 +111,49 @@ DIALOG_LIB_EDIT_PIN_TABLE_BASE::DIALOG_LIB_EDIT_PIN_TABLE_BASE( wxWindow* parent
m_grid->SetDefaultCellAlignment( wxALIGN_LEFT, wxALIGN_TOP );
m_grid->SetMinSize( wxSize( 690,200 ) );
bSizer8->Add( m_grid, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 10 );
bGridMarginsSizer->Add( m_grid, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 10 );
top_sizer->Add( bSizer8, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
top_sizer->Add( bGridMarginsSizer, 1, wxEXPAND|wxRIGHT|wxLEFT, 5 );
wxBoxSizer* bSizer2;
bSizer2 = new wxBoxSizer( wxHORIZONTAL );
wxBoxSizer* bBottomSizer;
bBottomSizer = new wxBoxSizer( wxHORIZONTAL );
m_addButton = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizer2->Add( m_addButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
bBottomSizer->Add( m_addButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5 );
bSizer2->Add( 20, 0, 0, wxEXPAND, 5 );
bBottomSizer->Add( 20, 0, 0, wxEXPAND, 5 );
m_deleteButton = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizer2->Add( m_deleteButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
bBottomSizer->Add( m_deleteButton, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
bSizer2->Add( m_staticline1, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 10 );
m_divider1 = new BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
m_divider1->Enable( false );
bBottomSizer->Add( m_divider1, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
m_cbGroup = new wxCheckBox( this, wxID_ANY, _("Group by name"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer2->Add( m_cbGroup, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
bBottomSizer->Add( m_cbGroup, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
m_refreshButton = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
bSizer2->Add( m_refreshButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 10 );
bBottomSizer->Add( m_refreshButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 10 );
m_staticline2 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
bSizer2->Add( m_staticline2, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 10 );
m_divider2 = new BITMAP_BUTTON( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
m_divider2->Enable( false );
wxBoxSizer* bSizer3;
bSizer3 = new wxBoxSizer( wxVERTICAL );
bBottomSizer->Add( m_divider2, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 10 );
wxBoxSizer* bDuplicatePinSizer;
bDuplicatePinSizer = new wxBoxSizer( wxHORIZONTAL );
m_cbFilterByUnit = new wxCheckBox( this, wxID_ANY, _("Filter by unit:"), wxDefaultPosition, wxDefaultSize, 0 );
bBottomSizer->Add( m_cbFilterByUnit, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
m_staticTextDuplicatePins = new wxStaticText( this, wxID_ANY, _("Duplicate pins:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticTextDuplicatePins->Wrap( -1 );
bDuplicatePinSizer->Add( m_staticTextDuplicatePins, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 10 );
m_duplicate_pins = new wxStaticText( this, wxID_ANY, _("0"), wxDefaultPosition, wxDefaultSize, 0 );
m_duplicate_pins->Wrap( -1 );
bDuplicatePinSizer->Add( m_duplicate_pins, 1, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5 );
wxArrayString m_unitFilterChoices;
m_unitFilter = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_unitFilterChoices, 0 );
m_unitFilter->SetSelection( 0 );
bBottomSizer->Add( m_unitFilter, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
bSizer3->Add( bDuplicatePinSizer, 1, wxEXPAND, 5 );
bSizer2->Add( bSizer3, 1, wxEXPAND, 5 );
bSizer2->Add( 10, 0, 0, wxEXPAND, 5 );
bBottomSizer->Add( 30, 0, 1, wxEXPAND, 5 );
m_Buttons = new wxStdDialogButtonSizer();
m_ButtonsOK = new wxButton( this, wxID_OK );
@ -167,10 +162,10 @@ DIALOG_LIB_EDIT_PIN_TABLE_BASE::DIALOG_LIB_EDIT_PIN_TABLE_BASE( wxWindow* parent
m_Buttons->AddButton( m_ButtonsCancel );
m_Buttons->Realize();
bSizer2->Add( m_Buttons, 0, wxEXPAND|wxALL, 5 );
bBottomSizer->Add( m_Buttons, 0, wxEXPAND|wxALL, 5 );
top_sizer->Add( bSizer2, 0, wxLEFT|wxEXPAND, 10 );
top_sizer->Add( bBottomSizer, 0, wxLEFT|wxEXPAND, 10 );
this->SetSizer( top_sizer );
@ -188,6 +183,8 @@ DIALOG_LIB_EDIT_PIN_TABLE_BASE::DIALOG_LIB_EDIT_PIN_TABLE_BASE( wxWindow* parent
m_deleteButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnDeleteRow ), NULL, this );
m_cbGroup->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
m_refreshButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
m_cbFilterByUnit->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnFilterCheckBox ), NULL, this );
m_unitFilter->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnFilterChoice ), NULL, this );
m_ButtonsCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnCancel ), NULL, this );
}
@ -202,6 +199,8 @@ DIALOG_LIB_EDIT_PIN_TABLE_BASE::~DIALOG_LIB_EDIT_PIN_TABLE_BASE()
m_deleteButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnDeleteRow ), NULL, this );
m_cbGroup->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
m_refreshButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnRebuildRows ), NULL, this );
m_cbFilterByUnit->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnFilterCheckBox ), NULL, this );
m_unitFilter->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnFilterChoice ), NULL, this );
m_ButtonsCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_LIB_EDIT_PIN_TABLE_BASE::OnCancel ), NULL, this );
}

File diff suppressed because it is too large Load Diff

View File

@ -10,6 +10,7 @@
#include <wx/artprov.h>
#include <wx/xrc/xmlres.h>
#include <wx/intl.h>
class BITMAP_BUTTON;
class WX_GRID;
#include "dialog_shim.h"
@ -26,8 +27,8 @@ class WX_GRID;
#include <wx/image.h>
#include <wx/icon.h>
#include <wx/button.h>
#include <wx/statline.h>
#include <wx/checkbox.h>
#include <wx/choice.h>
#include <wx/dialog.h>
///////////////////////////////////////////////////////////////////////////
@ -45,15 +46,17 @@ class DIALOG_LIB_EDIT_PIN_TABLE_BASE : public DIALOG_SHIM
wxStaticText* m_pin_numbers_summary;
wxStaticText* m_staticTextPinCount;
wxStaticText* m_pin_count;
wxStaticText* m_staticTextDuplicatePins;
wxStaticText* m_duplicate_pins;
WX_GRID* m_grid;
wxBitmapButton* m_addButton;
wxBitmapButton* m_deleteButton;
wxStaticLine* m_staticline1;
BITMAP_BUTTON* m_divider1;
wxCheckBox* m_cbGroup;
wxBitmapButton* m_refreshButton;
wxStaticLine* m_staticline2;
wxStaticText* m_staticTextDuplicatePins;
wxStaticText* m_duplicate_pins;
BITMAP_BUTTON* m_divider2;
wxCheckBox* m_cbFilterByUnit;
wxChoice* m_unitFilter;
wxStdDialogButtonSizer* m_Buttons;
wxButton* m_ButtonsOK;
wxButton* m_ButtonsCancel;
@ -66,6 +69,8 @@ class DIALOG_LIB_EDIT_PIN_TABLE_BASE : public DIALOG_SHIM
virtual void OnAddRow( wxCommandEvent& event ) = 0;
virtual void OnDeleteRow( wxCommandEvent& event ) = 0;
virtual void OnRebuildRows( wxCommandEvent& event ) = 0;
virtual void OnFilterCheckBox( wxCommandEvent& event ) = 0;
virtual void OnFilterChoice( wxCommandEvent& event ) = 0;
virtual void OnCancel( wxCommandEvent& event ) = 0;

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2017 Oliver Walters
* Copyright (C) 2017-2021 KiCad Developers, see AUTHORS.txt for contributors.
* Copyright (C) 2017-2022 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
@ -62,7 +62,7 @@
enum
{
MYID_SELECT_FOOTPRINT = GRIDTRICKS_FIRST_SHOWHIDE - 2, // must be within GRID_TRICKS' enum range
MYID_SELECT_FOOTPRINT = GRIDTRICKS_FIRST_CLIENT_ID,
MYID_SHOW_DATASHEET
};

View File

@ -46,7 +46,7 @@
enum
{
MYID_SELECT_FOOTPRINT = GRIDTRICKS_FIRST_SHOWHIDE - 2, // must be within GRID_TRICKS' enum range
MYID_SELECT_FOOTPRINT = GRIDTRICKS_FIRST_CLIENT_ID,
MYID_SHOW_DATASHEET
};

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2015 Simon Richter
* Copyright (C) 2015 KiCad Developers, see AUTHORS.TXT for contributors.
* Copyright (C) 2015-2022 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
@ -24,6 +24,7 @@
#include "pin_numbers.h"
#include <wx/crt.h>
#include <wx/translation.h>
namespace {
@ -121,6 +122,9 @@ wxString PIN_NUMBERS::GetDuplicates() const
// Remove the trailing comma
ret.RemoveLast();
if( ret.IsEmpty() )
ret = _( "none" );
return ret;
}

View File

@ -2,7 +2,7 @@
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
* Copyright (C) 2012-2020 KiCad Developers, see change_log.txt for contributors.
* Copyright (C) 2012-2022 KiCad Developers, see change_log.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
@ -43,7 +43,10 @@ enum
GRIDTRICKS_ID_PASTE,
GRIDTRICKS_ID_SELECT,
GRIDTRICKS_FIRST_SHOWHIDE = 949, // reserve IDs for show/hide-column-n
GRIDTRICKS_FIRST_CLIENT_ID = 1101, // reserve IDs for sub-classes
GRID_TRICKS_LAST_CLIENT_ID = 2100,
GRIDTRICKS_FIRST_SHOWHIDE, // reserve IDs for show/hide-column-n
GRIDTRICKS_LAST_ID = GRIDTRICKS_FIRST_SHOWHIDE + GRIDTRICKS_MAX_COL
};