kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #23082
[PATCH]: pcbnew array numbering for submodules
Hi all,
this patch fixes a bug in the function GetReferencePrefix and also adds
a new numbering scheme in the array creation dialog. It will allow to
increment the reference number by 100 or 1000 starting with the name of
the original.
I also attached a small sample project to demonstrate the behaviour:
- The first submodule page is already routed (D201, D202, R201, R202)
- Create an array of the routed submodule and select submodule numbering
- The name of the copies will each now be incremented by 100 (or 1000),
thus reflecting the reference names in the schematic
- Reimport the netlist in order to correct the ratsnest
- Done
The signal name of fills are currently untouched, so it will currently
require manual editing.
Hopefully this is useful for those who do not want to use the
layout-cloner python scripts anymore :)
Regards,
Chris
PS: This is my first submission, I am no C++ programmer and have never
used wxWidgets before, so please excuse potentially dirty code
=== modified file 'pcbnew/class_module.cpp'
--- pcbnew/class_module.cpp 2016-01-29 14:43:40 +0000
+++ pcbnew/class_module.cpp 2016-02-13 00:40:38 +0000
@@ -1247,13 +1247,13 @@
const wxUniChar chr = prefix.GetChar( strIndex );
// numeric suffix
- if( chr >= '0' && chr <= '9' )
+ if( !isdigit( chr ) )
break;
strIndex--;
}
- prefix = prefix.Mid( 0, strIndex );
+ prefix = prefix.Mid( 0, strIndex + 1 );
return prefix;
}
=== modified file 'pcbnew/dialogs/dialog_create_array.cpp'
--- pcbnew/dialogs/dialog_create_array.cpp 2015-07-11 23:11:34 +0000
+++ pcbnew/dialogs/dialog_create_array.cpp 2016-02-13 02:12:19 +0000
@@ -86,7 +86,7 @@
Add( m_gridTypeNotebook, m_options.m_arrayTypeTab );
- Add( m_radioBoxGridNumberingScheme, m_options.m_grid2dArrayNumbering );
+ Add( m_radioBoxGridNumberingScheme, m_options.m_gridNumberingScheme );
Add( m_choicePriAxisNumbering, m_options.m_gridPriAxisNumScheme );
Add( m_choiceSecAxisNumbering, m_options.m_gridSecAxisNumScheme );
@@ -239,7 +239,7 @@
newGrid->m_horizontalThenVertical = m_radioBoxGridNumberingAxis->GetSelection() == 0;
newGrid->m_reverseNumberingAlternate = m_checkBoxGridReverseNumbering->GetValue();
- newGrid->m_2dArrayNumbering = m_radioBoxGridNumberingScheme->GetSelection() != 0;
+ newGrid->m_numberingScheme = (ARRAY_NUMBERING_SCHEME_T) m_radioBoxGridNumberingScheme->GetSelection();
// this is only correct if you set the choice up according to the enum size and order
ok = ok && m_choicePriAxisNumbering->GetSelection() < NUMBERING_TYPE_Max
@@ -259,7 +259,7 @@
m_entryGridPriNumberingOffset->GetValue().ToStdString(),
newGrid->m_priAxisNumType, newGrid->m_numberingOffsetX );
- if( newGrid->m_2dArrayNumbering )
+ if( newGrid->m_numberingScheme == NUMBERING_SCHEME_COORDINATE )
ok = ok && getNumberingOffset(
m_entryGridSecNumberingOffset->GetValue().ToStdString(),
newGrid->m_secAxisNumType, newGrid->m_numberingOffsetY );
@@ -326,21 +326,25 @@
// If we're not renumbering, we can't set the numbering scheme
// or axis numbering types
m_radioBoxGridNumberingScheme->Enable( renumber );
- m_labelPriAxisNumbering->Enable( renumber );
- m_choicePriAxisNumbering->Enable( renumber );
// Disable the secondary axis numbering option if the
// numbering scheme doesn't have two axes
- const bool num2d = m_radioBoxGridNumberingScheme->GetSelection() != 0;
+ const bool num2d = m_radioBoxGridNumberingScheme->GetSelection() == NUMBERING_SCHEME_COORDINATE;
+ const bool numSub = m_radioBoxGridNumberingScheme->GetSelection() != NUMBERING_SCHEME_SUBMODULE;
- m_labelSecAxisNumbering->Enable( renumber && num2d );
- m_choiceSecAxisNumbering->Enable( renumber && num2d );
+ m_labelPriAxisNumbering->Enable( renumber && numSub );
+ m_choicePriAxisNumbering->Enable( renumber && numSub );
+ m_labelSecAxisNumbering->Enable( renumber && num2d && numSub );
+ m_choiceSecAxisNumbering->Enable( renumber && num2d && numSub );
// We can only set an offset if we renumber
- m_labelGridNumberingOffset->Enable( renumber );
- m_entryGridPriNumberingOffset->Enable( renumber );
- m_entryGridSecNumberingOffset->Enable( renumber && num2d );
+ m_labelGridNumberingOffset->Enable( renumber && numSub );
+ m_entryGridPriNumberingOffset->Enable( renumber && numSub );
+ m_entryGridSecNumberingOffset->Enable( renumber && num2d && numSub );
+ m_labelStagger->Enable( numSub );
+ m_entryStagger->Enable( numSub );
+ m_radioBoxGridStaggerType->Enable( numSub );
// Circular array options
const bool circRenumber = m_checkBoxCircRestartNumbering->GetValue();
@@ -399,7 +403,7 @@
int aN, const wxString& aPattern ) const
{
wxString newStr( aPattern );
- newStr.Replace( "%s", GetItemNumber( aN ), false );
+ newStr.Replace( "%s", GetItemNumber( aN, 1 ), false );
return newStr;
}
@@ -460,20 +464,36 @@
}
-wxString DIALOG_CREATE_ARRAY::ARRAY_GRID_OPTIONS::GetItemNumber( int n ) const
+wxString DIALOG_CREATE_ARRAY::ARRAY_GRID_OPTIONS::GetItemNumber( int n, int r ) const
{
wxString itemNum;
+ wxPoint coords;
+ int increment;
- if( m_2dArrayNumbering )
+ switch( m_numberingScheme )
{
- wxPoint coords = getGridCoords( n );
+ case NUMBERING_SCHEME_COORDINATE:
+ coords = getGridCoords( n );
itemNum += getCoordinateNumber( coords.x + m_numberingOffsetX, m_priAxisNumType );
itemNum += getCoordinateNumber( coords.y + m_numberingOffsetY, m_secAxisNumType );
- }
- else
- {
+ break;
+
+ case NUMBERING_SCHEME_SUBMODULE:
+ /* determine the increment based on the current reference number r */
+ if( r >= 1000 )
+ increment = 1000;
+ else if( r >= 100 )
+ increment = 100;
+ else
+ increment = 1;
+
+ itemNum += wxString::Format( "%i", ( r + increment * n ) );
+ break;
+
+ default: /* continous numbering */
itemNum += getCoordinateNumber( n + m_numberingOffsetX, m_priAxisNumType );
+ break;
}
return itemNum;
@@ -506,7 +526,7 @@
}
-wxString DIALOG_CREATE_ARRAY::ARRAY_CIRCULAR_OPTIONS::GetItemNumber( int aN ) const
+wxString DIALOG_CREATE_ARRAY::ARRAY_CIRCULAR_OPTIONS::GetItemNumber( int aN, int aR ) const
{
return getCoordinateNumber( aN + m_numberingOffset, m_numberingType );
}
=== modified file 'pcbnew/dialogs/dialog_create_array.h'
--- pcbnew/dialogs/dialog_create_array.h 2015-04-22 16:39:49 +0000
+++ pcbnew/dialogs/dialog_create_array.h 2016-02-13 02:21:50 +0000
@@ -193,6 +193,15 @@
NUMBERING_TYPE_Max ///< Invalid maximum value, insert above here
};
+ enum ARRAY_NUMBERING_SCHEME_T
+ {
+ NUMBERING_SCHEME_CONTINOUS = 0,
+ NUMBERING_SCHEME_COORDINATE,
+ NUMBERING_SCHEME_SUBMODULE,
+ NUMBERING_SCHEME_TYPE_Max
+ };
+
+
/**
* Persistent dialog options
*/
@@ -218,7 +227,7 @@
virtual void TransformItem( int n, BOARD_ITEM* item,
const wxPoint& rotPoint ) const = 0;
virtual int GetArraySize() const = 0;
- virtual wxString GetItemNumber( int n ) const = 0;
+ virtual wxString GetItemNumber( int n, int r ) const = 0;
virtual wxString InterpolateNumberIntoString( int n, const wxString& pattern ) const;
bool ShouldRenumberItems() const
@@ -239,7 +248,7 @@
m_reverseNumberingAlternate( false ),
m_stagger( 0 ),
m_stagger_rows( true ),
- m_2dArrayNumbering( false ),
+ m_numberingScheme( NUMBERING_SCHEME_CONTINOUS ),
m_numberingOffsetX( 0 ),
m_numberingOffsetY( 0 ),
m_priAxisNumType( NUMBERING_NUMERIC ),
@@ -252,13 +261,13 @@
wxPoint m_offset;
long m_stagger;
bool m_stagger_rows;
- bool m_2dArrayNumbering;
+ ARRAY_NUMBERING_SCHEME_T m_numberingScheme;
int m_numberingOffsetX, m_numberingOffsetY;
ARRAY_NUMBERING_TYPE_T m_priAxisNumType, m_secAxisNumType;
void TransformItem( int n, BOARD_ITEM* item, const wxPoint& rotPoint ) const; // override virtual
int GetArraySize() const; // override virtual
- wxString GetItemNumber( int n ) const; // override virtual
+ wxString GetItemNumber( int n, int r ) const; // override virtual
private:
wxPoint getGridCoords( int n ) const;
@@ -284,7 +293,7 @@
void TransformItem( int n, BOARD_ITEM* item, const wxPoint& rotPoint ) const; // override virtual
int GetArraySize() const; // override virtual
- wxString GetItemNumber( int n ) const; // override virtual
+ wxString GetItemNumber( int n, int r ) const; // override virtual
};
// Constructor and destructor
@@ -319,7 +328,7 @@
m_gridStaggerType( 0 ),
m_gridNumberingAxis( 0 ),
m_gridNumberingReverseAlternate( false ),
- m_grid2dArrayNumbering( 0 ),
+ m_gridNumberingScheme( 0 ),
m_gridPriAxisNumScheme( 0 ),
m_gridSecAxisNumScheme( 0 ),
m_circRotate( false ),
@@ -335,7 +344,7 @@
int m_gridStaggerType, m_gridNumberingAxis;
bool m_gridNumberingReverseAlternate;
- int m_grid2dArrayNumbering;
+ int m_gridNumberingScheme;
int m_gridPriAxisNumScheme, m_gridSecAxisNumScheme;
std::string m_gridPriNumberingOffset, m_gridSecNumberingOffset;
=== modified file 'pcbnew/dialogs/dialog_create_array_base.cpp'
--- pcbnew/dialogs/dialog_create_array_base.cpp 2015-11-22 10:21:14 +0000
+++ pcbnew/dialogs/dialog_create_array_base.cpp 2016-02-13 02:14:09 +0000
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Jun 17 2015)
+// C++ code generated with wxFormBuilder (version Feb 12 2016)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
@@ -30,7 +30,7 @@
m_labelNx->Wrap( -1 );
gbSizer1->Add( m_labelNx, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_RIGHT|wxALL|wxALIGN_CENTER_VERTICAL, 5 );
- m_entryNx = new wxTextCtrl( m_gridPanel, wxID_ANY, _("5"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_entryNx = new wxTextCtrl( m_gridPanel, wxID_ANY, _("1"), wxDefaultPosition, wxDefaultSize, 0 );
gbSizer1->Add( m_entryNx, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
m_labelNy = new wxStaticText( m_gridPanel, wxID_ANY, _("Vertical count:"), wxDefaultPosition, wxDefaultSize, 0 );
@@ -116,10 +116,10 @@
m_checkBoxGridRestartNumbering->SetValue(true);
bSizer3->Add( m_checkBoxGridRestartNumbering, 0, wxALL, 5 );
- wxString m_radioBoxGridNumberingSchemeChoices[] = { _("Continuous (1, 2, 3...)"), _("Coordinate (A1, A2, ... B1, ...)") };
+ wxString m_radioBoxGridNumberingSchemeChoices[] = { _("Continuous (1, 2, 3...)"), _("Coordinate (A1, A2, ... B1, ...)"), _("Submodule (101, 201, ...)") };
int m_radioBoxGridNumberingSchemeNChoices = sizeof( m_radioBoxGridNumberingSchemeChoices ) / sizeof( wxString );
m_radioBoxGridNumberingScheme = new wxRadioBox( m_gridPanel, wxID_ANY, _("Numbering Scheme"), wxDefaultPosition, wxDefaultSize, m_radioBoxGridNumberingSchemeNChoices, m_radioBoxGridNumberingSchemeChoices, 1, wxRA_SPECIFY_COLS );
- m_radioBoxGridNumberingScheme->SetSelection( 1 );
+ m_radioBoxGridNumberingScheme->SetSelection( 0 );
bSizer3->Add( m_radioBoxGridNumberingScheme, 0, wxALL|wxEXPAND, 5 );
m_labelPriAxisNumbering = new wxStaticText( m_gridPanel, wxID_ANY, _("Primary axis numbering:"), wxDefaultPosition, wxDefaultSize, 0 );
=== modified file 'pcbnew/dialogs/dialog_create_array_base.fbp'
--- pcbnew/dialogs/dialog_create_array_base.fbp 2015-11-22 10:21:14 +0000
+++ pcbnew/dialogs/dialog_create_array_base.fbp 2016-02-13 02:14:05 +0000
@@ -258,11 +258,11 @@
<property name="name">bSizer2</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
- <object class="sizeritem" expanded="0">
+ <object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">1</property>
- <object class="wxGridBagSizer" expanded="0">
+ <object class="wxGridBagSizer" expanded="1">
<property name="empty_cell_size"></property>
<property name="flexible_direction">wxBOTH</property>
<property name="growablecols"></property>
@@ -420,7 +420,7 @@
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
- <property name="value">5</property>
+ <property name="value">1</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
@@ -899,14 +899,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</property>
<property name="row">3</property>
<property name="rowspan">1</property>
- <object class="wxStaticText" expanded="0">
+ <object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -985,14 +985,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALL</property>
<property name="row">3</property>
<property name="rowspan">1</property>
- <object class="wxTextCtrl" expanded="0">
+ <object class="wxTextCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1079,14 +1079,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">2</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="row">3</property>
<property name="rowspan">1</property>
- <object class="wxStaticText" expanded="0">
+ <object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1165,14 +1165,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</property>
<property name="row">4</property>
<property name="rowspan">1</property>
- <object class="wxStaticText" expanded="0">
+ <object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1251,14 +1251,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALL</property>
<property name="row">4</property>
<property name="rowspan">1</property>
- <object class="wxTextCtrl" expanded="0">
+ <object class="wxTextCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1345,14 +1345,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">2</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="row">4</property>
<property name="rowspan">1</property>
- <object class="wxStaticText" expanded="0">
+ <object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1431,14 +1431,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</property>
<property name="row">5</property>
<property name="rowspan">1</property>
- <object class="wxStaticText" expanded="0">
+ <object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1517,14 +1517,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALL</property>
<property name="row">5</property>
<property name="rowspan">1</property>
- <object class="wxTextCtrl" expanded="0">
+ <object class="wxTextCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1611,14 +1611,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">2</property>
<property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
<property name="row">5</property>
<property name="rowspan">1</property>
- <object class="wxStaticText" expanded="0">
+ <object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1697,14 +1697,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">0</property>
<property name="flag">wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL</property>
<property name="row">6</property>
<property name="rowspan">1</property>
- <object class="wxStaticText" expanded="0">
+ <object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1783,14 +1783,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">1</property>
<property name="column">1</property>
<property name="flag">wxALL</property>
<property name="row">6</property>
<property name="rowspan">1</property>
- <object class="wxTextCtrl" expanded="0">
+ <object class="wxTextCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -1877,14 +1877,14 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="gbsizeritem" expanded="0">
+ <object class="gbsizeritem" expanded="1">
<property name="border">5</property>
<property name="colspan">2</property>
<property name="column">0</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="row">7</property>
<property name="rowspan">2</property>
- <object class="wxRadioBox" expanded="0">
+ <object class="wxRadioBox" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
@@ -2265,7 +2265,7 @@
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
- <property name="choices">"Continuous (1, 2, 3...)" "Coordinate (A1, A2, ... B1, ...)"</property>
+ <property name="choices">"Continuous (1, 2, 3...)" "Coordinate (A1, A2, ... B1, ...)" "Submodule (101, 201, ...)"</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
@@ -2297,7 +2297,7 @@
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
- <property name="selection">1</property>
+ <property name="selection">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxRA_SPECIFY_COLS</property>
@@ -3038,7 +3038,7 @@
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
- <object class="wxBoxSizer" expanded="1">
+ <object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer4</property>
<property name="orient">wxHORIZONTAL</property>
@@ -4387,11 +4387,11 @@
</object>
</object>
</object>
- <object class="sizeritem" expanded="1">
+ <object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">1</property>
- <object class="wxBoxSizer" expanded="1">
+ <object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer6</property>
<property name="orient">wxVERTICAL</property>
@@ -4655,11 +4655,11 @@
<event name="OnUpdateUI"></event>
</object>
</object>
- <object class="sizeritem" expanded="1">
+ <object class="sizeritem" expanded="0">
<property name="border">5</property>
<property name="flag">wxEXPAND</property>
<property name="proportion">0</property>
- <object class="wxBoxSizer" expanded="1">
+ <object class="wxBoxSizer" expanded="0">
<property name="minimum_size"></property>
<property name="name">bSizer7</property>
<property name="orient">wxHORIZONTAL</property>
@@ -4847,11 +4847,11 @@
</object>
</object>
</object>
- <object class="sizeritem" expanded="0">
+ <object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL|wxEXPAND</property>
<property name="proportion">0</property>
- <object class="wxStdDialogButtonSizer" expanded="0">
+ <object class="wxStdDialogButtonSizer" expanded="1">
<property name="Apply">0</property>
<property name="Cancel">1</property>
<property name="ContextHelp">0</property>
=== modified file 'pcbnew/dialogs/dialog_create_array_base.h'
--- pcbnew/dialogs/dialog_create_array_base.h 2015-11-22 10:21:14 +0000
+++ pcbnew/dialogs/dialog_create_array_base.h 2016-02-12 21:08:13 +0000
@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////
-// C++ code generated with wxFormBuilder (version Jun 17 2015)
+// C++ code generated with wxFormBuilder (version Feb 12 2016)
// http://www.wxformbuilder.org/
//
// PLEASE DO "NOT" EDIT THIS FILE!
=== modified file 'pcbnew/edit.cpp'
--- pcbnew/edit.cpp 2015-12-20 18:47:52 +0000
+++ pcbnew/edit.cpp 2016-02-12 23:15:15 +0000
@@ -1690,14 +1690,14 @@
}
case PCB_MODULE_T:
{
- const wxString padName = array_opts->GetItemNumber( ptN );
+ const wxString padName = array_opts->GetItemNumber( ptN, 0 );
static_cast<MODULE*>( new_item )->SetReference( cachedString + padName );
break;
}
case PCB_PAD_T:
{
- const wxString padName = array_opts->GetItemNumber( ptN );
+ const wxString padName = array_opts->GetItemNumber( ptN, 0 );
static_cast<D_PAD*>( new_item )->SetPadName( padName );
break;
=== modified file 'pcbnew/tools/edit_tool.cpp'
--- pcbnew/tools/edit_tool.cpp 2016-01-11 22:12:11 +0000
+++ pcbnew/tools/edit_tool.cpp 2016-02-13 01:50:06 +0000
@@ -841,10 +841,18 @@
continue;
wxString cachedString;
+ long int refNumber;
if( item->Type() == PCB_MODULE_T )
{
+ wxString refString;
+
+ refString = static_cast<MODULE*>( item )->GetReference();
cachedString = static_cast<MODULE*>( item )->GetReferencePrefix();
+
+ // Extract reference number from reference text
+ refString.Replace( cachedString, "", false ); /* it is probably better to get the reference number from the item object */
+ refString.ToLong( &refNumber, 10 );
}
else if( EDA_TEXT* text = dynamic_cast<EDA_TEXT*>( item ) )
{
@@ -912,7 +920,7 @@
{
case PCB_PAD_T:
{
- const wxString padName = array_opts->GetItemNumber( ptN );
+ const wxString padName = array_opts->GetItemNumber( ptN, 0 );
static_cast<D_PAD*>( newItem )->SetPadName( padName );
originalItemsModified = true;
@@ -920,7 +928,7 @@
}
case PCB_MODULE_T:
{
- const wxString moduleName = array_opts->GetItemNumber( ptN );
+ const wxString moduleName = array_opts->GetItemNumber( ptN, refNumber );
MODULE* module = static_cast<MODULE*>( newItem );
module->SetReference( cachedString + moduleName );
Attachment:
submodule_test.zip
Description: Zip archive