Pin edit coupling: renamed and changed the description

This commit aims at making the pin edit coupling easier to understand.
It renames the mode to 'synchronized pin edit', shortens the description
and inverts the logic to avoid double negation.

To make the code clearer, two items have their name changed to fit the
new description:
- m_editPinsSeparately       -> m_syncPinEdit
- ID_LIBEDIT_EDIT_PIN_BY_PIN -> ID_LIBEDIT_SYNC_PIN_EDIT
This commit is contained in:
Maciej Suminski 2018-01-23 12:15:19 +01:00
parent 7a2d9dff62
commit 6c32b6f955
8 changed files with 40 additions and 42 deletions

View File

@ -124,7 +124,7 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
if( GetCurPart() )
ItemCount = GetCurPart()->SelectItems( *block,
m_unit, m_convert,
m_editPinsSeparately );
m_syncPinEdit );
if( ItemCount )
{
nextCmd = true;
@ -151,7 +151,7 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
case BLOCK_CUT:
if( GetCurPart() )
ItemCount = GetCurPart()->SelectItems( *block, m_unit, m_convert,
m_editPinsSeparately );
m_syncPinEdit );
if( ItemCount )
{
@ -176,7 +176,7 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
if( GetCurPart() )
ItemCount = GetCurPart()->SelectItems( *block,
m_unit, m_convert,
m_editPinsSeparately );
m_syncPinEdit );
if( ItemCount )
SaveCopyInUndoList( GetCurPart() );
@ -200,7 +200,7 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
if( GetCurPart() )
ItemCount = GetCurPart()->SelectItems( *block,
m_unit, m_convert,
m_editPinsSeparately );
m_syncPinEdit );
if( ItemCount )
SaveCopyInUndoList( GetCurPart() );

View File

@ -925,7 +925,7 @@ void LIB_PART::ClearStatus()
}
int LIB_PART::SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aEditPinByPin )
int LIB_PART::SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aSyncPinEdit )
{
int itemCount = 0;
@ -939,8 +939,11 @@ int LIB_PART::SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aEditP
if( item.Type() != LIB_PIN_T )
continue;
// Specific rules for pins.
if( aEditPinByPin || m_unitsLocked
// Specific rules for pins:
// - do not select pins in other units when synchronized pin edit mode is disabled
// - do not select pins in other units when units are not interchangeable
// - in other cases verify if the pin belongs to the requested unit
if( !aSyncPinEdit || m_unitsLocked
|| ( item.m_Convert && item.m_Convert != aConvert ) )
continue;
}

View File

@ -579,12 +579,11 @@ public:
* @param aRect - The bounding rectangle to test in draw items are inside.
* @param aUnit - The current unit number to test against.
* @param aConvert - Are the draw items being selected a conversion.
* @param aEditPinByPin - Used to ignore pin selections when in edit pin
* by pin mode is enabled.
* @param aSyncPinEdit - Enable pin selection in other units.
* @return The number of draw objects found inside the block select
* rectangle.
*/
int SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aEditPinByPin );
int SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aSyncPinEdit );
/**
* Clears all the draw items marked by a block select.

View File

@ -209,7 +209,7 @@ enum id_eeschema_frm
/* Library editor horizontal toolbar IDs. */
ID_DE_MORGAN_NORMAL_BUTT,
ID_DE_MORGAN_CONVERT_BUTT,
ID_LIBEDIT_EDIT_PIN_BY_PIN,
ID_LIBEDIT_SYNC_PIN_EDIT,
ID_LIBEDIT_EDIT_PIN_BY_TABLE,
ID_LIBEDIT_VIEW_DOC,
ID_LIBEDIT_CHECK_PART,

View File

@ -130,7 +130,8 @@ bool LIB_EDIT_FRAME::LoadComponentFromCurrentLib( const wxString& aAliasName, in
if( aConvert > 0 )
m_convert = aConvert;
m_editPinsSeparately = GetCurPart()->UnitsLocked() ? true : false;
// Enable synchronized pin edit mode for symbols with interchangeable units
m_syncPinEdit = !GetCurPart()->UnitsLocked();
GetScreen()->ClearUndoRedoList();
Zoom_Automatique( false );

View File

@ -124,7 +124,7 @@ BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
EVT_TOOL( ID_DE_MORGAN_NORMAL_BUTT, LIB_EDIT_FRAME::OnSelectBodyStyle )
EVT_TOOL( ID_DE_MORGAN_CONVERT_BUTT, LIB_EDIT_FRAME::OnSelectBodyStyle )
EVT_TOOL( ID_LIBEDIT_VIEW_DOC, LIB_EDIT_FRAME::OnViewEntryDoc )
EVT_TOOL( ID_LIBEDIT_EDIT_PIN_BY_PIN, LIB_EDIT_FRAME::Process_Special_Functions )
EVT_TOOL( ID_LIBEDIT_SYNC_PIN_EDIT, LIB_EDIT_FRAME::Process_Special_Functions )
EVT_TOOL( ID_LIBEDIT_EDIT_PIN_BY_TABLE, LIB_EDIT_FRAME::OnOpenPinTable )
EVT_COMBOBOX( ID_LIBEDIT_SELECT_PART_NUMBER, LIB_EDIT_FRAME::OnSelectPart )
@ -186,7 +186,7 @@ BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
EVT_UPDATE_UI( ID_LIBEDIT_SAVE_LIBRARY, LIB_EDIT_FRAME::OnUpdateSaveLib )
EVT_UPDATE_UI( ID_LIBEDIT_SAVE_LIBRARY_AS, LIB_EDIT_FRAME::OnUpdateSaveLibAs )
EVT_UPDATE_UI( ID_LIBEDIT_VIEW_DOC, LIB_EDIT_FRAME::OnUpdateViewDoc )
EVT_UPDATE_UI( ID_LIBEDIT_EDIT_PIN_BY_PIN, LIB_EDIT_FRAME::OnUpdatePinByPin )
EVT_UPDATE_UI( ID_LIBEDIT_SYNC_PIN_EDIT, LIB_EDIT_FRAME::OnUpdateSyncPinEdit )
EVT_UPDATE_UI( ID_LIBEDIT_EDIT_PIN_BY_TABLE, LIB_EDIT_FRAME::OnUpdatePinTable )
EVT_UPDATE_UI( ID_LIBEDIT_SELECT_PART_NUMBER, LIB_EDIT_FRAME::OnUpdatePartNumber )
EVT_UPDATE_UI( ID_LIBEDIT_SELECT_ALIAS, LIB_EDIT_FRAME::OnUpdateSelectAlias )
@ -211,7 +211,7 @@ LIB_EDIT_FRAME::LIB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
m_drawSpecificConvert = true;
m_drawSpecificUnit = false;
m_hotkeysDescrList = g_Libedit_Hokeys_Descr;
m_editPinsSeparately = false;
m_syncPinEdit = false;
m_repeatPinStep = DEFAULT_REPEAT_OFFSET_PIN;
SetShowElectricalType( true );
@ -620,13 +620,11 @@ void LIB_EDIT_FRAME::OnUpdateViewDoc( wxUpdateUIEvent& event )
}
void LIB_EDIT_FRAME::OnUpdatePinByPin( wxUpdateUIEvent& event )
void LIB_EDIT_FRAME::OnUpdateSyncPinEdit( wxUpdateUIEvent& event )
{
LIB_PART* part = GetCurPart();
event.Enable( part && part->GetUnitCount() > 1 && !part->UnitsLocked() );
event.Check( m_editPinsSeparately );
LIB_PART* part = GetCurPart();
event.Enable( part && part->IsMulti() && !part->UnitsLocked() );
event.Check( m_syncPinEdit );
}
@ -811,8 +809,8 @@ void LIB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
case ID_POPUP_LIBEDIT_CANCEL_EDITING:
break;
case ID_LIBEDIT_EDIT_PIN_BY_PIN:
m_editPinsSeparately = m_mainToolBar->GetToolToggled( ID_LIBEDIT_EDIT_PIN_BY_PIN );
case ID_LIBEDIT_SYNC_PIN_EDIT:
m_syncPinEdit = m_mainToolBar->GetToolToggled( ID_LIBEDIT_SYNC_PIN_EDIT );
break;
case ID_POPUP_LIBEDIT_END_CREATE_ITEM:
@ -1076,8 +1074,8 @@ void LIB_EDIT_FRAME::SetCurPart( LIB_PART* aPart )
// retain in case this wxFrame is re-opened later on the same PROJECT
Prj().SetRString( PROJECT::SCH_LIBEDIT_CUR_PART, partName );
// Ensure pin editind can be coupled for multi unitz
m_editPinsSeparately = aPart && aPart->IsMulti() && aPart->UnitsLocked();
// Ensure synchronized pin edit can be enabled only symbols with interchangeable units
m_syncPinEdit = aPart && aPart->IsMulti() && !aPart->UnitsLocked();
}
@ -1148,8 +1146,8 @@ void LIB_EDIT_FRAME::OnEditComponentProperties( wxCommandEvent& event )
// to the best value
if( partLocked != GetCurPart()->UnitsLocked() )
{
// m_editPinsSeparately is set to the better value
m_editPinsSeparately = GetCurPart()->UnitsLocked() ? true : false;
// Enable synchronized pin edit mode for symbols with interchangeable units
m_syncPinEdit = !GetCurPart()->UnitsLocked();
// also set default edit options to the better value
// Usually if units are locked, graphic items are specific to each unit
// and if units are interchangeable, graphic items are common to units
@ -1512,9 +1510,9 @@ void LIB_EDIT_FRAME::OnOpenPinTable( wxCommandEvent& aEvent )
bool LIB_EDIT_FRAME::SynchronizePins()
{
LIB_PART* part = GetCurPart();
LIB_PART* part = GetCurPart();
return !m_editPinsSeparately && part && part->IsMulti() && !part->UnitsLocked();
return m_syncPinEdit && part && part->IsMulti() && !part->UnitsLocked();
}

View File

@ -83,20 +83,20 @@ class LIB_EDIT_FRAME : public SCH_BASE_FRAME
* Therefore deleting, moving pins are made for all pins at the same location
* When units are interchangeable, synchronizing edition of pins is usually
* the best way, because if units are interchangeable, it imply all similar
* pins are on the same location
* pins are on the same location.
* When units are non interchangeable, do not synchronize edition of pins, because
* each part is specific, and there are no similar pins between units
* each part is specific, and there are no similar pins between units.
*
* Setting this to false allows editing each pin per part or body style
* regardless other pins at the same location.
* This requires the user to open each part or body style to make changes
* to the other pins at the same location.
* To know if others pins must be coupled when editing a pin, use
* SynchronizePins() instead of m_editPinsSeparately, because SynchronizePins()
* SynchronizePins() instead of m_syncPinEdit, because SynchronizePins()
* is more reliable (takes in account the fact units are interchangeable,
* there are more than one unit )
* there are more than one unit).
*/
bool m_editPinsSeparately;
bool m_syncPinEdit;
/**
* the option to show the pin electrical name in the component editor
@ -344,7 +344,7 @@ public:
void OnUpdateSaveLib( wxUpdateUIEvent& event );
void OnUpdateSaveLibAs( wxUpdateUIEvent& event );
void OnUpdateViewDoc( wxUpdateUIEvent& event );
void OnUpdatePinByPin( wxUpdateUIEvent& event );
void OnUpdateSyncPinEdit( wxUpdateUIEvent& event );
void OnUpdatePinTable( wxUpdateUIEvent& event );
void OnUpdatePartNumber( wxUpdateUIEvent& event );
void OnUpdateDeMorganNormal( wxUpdateUIEvent& event );

View File

@ -205,13 +205,10 @@ void LIB_EDIT_FRAME::ReCreateHToolbar()
m_mainToolBar->AddSeparator();
KiScaledSeparator( m_mainToolBar, this );
msg = _( "Allows disabling pin edition coupling between units.\n"
"When not disabled, adding, deleting and moving pins are synchronized\n"
"between units for pins at the same location.\n"
"For instance, adding a pin to a unit also add a similar pin to other units at the same location.\n"
"However, pins can have a different number or size because they are specific to a unit.\n"
"Usually synchronization is enabled when units are interchangeable and disabled if not." );
m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, wxEmptyString, KiScaledBitmap( pin2pin_xpm, this ),
msg = _( "Synchronized pin edit mode\n"
"Synchronized pin edit mode propagates all pin changes to other units.\n"
"Normally enabled for multiunit parts with interchangeable units." );
m_mainToolBar->AddTool( ID_LIBEDIT_SYNC_PIN_EDIT, wxEmptyString, KiScaledBitmap( pin2pin_xpm, this ),
msg, wxITEM_CHECK );
m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_TABLE, wxEmptyString, KiScaledBitmap( pin_table_xpm, this ),
_( "Show pin table" ) );