Remove multi-label entry feature.
It was causing problems with surprising behaviour and issues with allowing spaces in existing labels. We'll work on something better for 7.0.... Fixes https://gitlab.com/kicad/code/kicad/issues/6073
This commit is contained in:
parent
2292c362c0
commit
e5089d783d
|
@ -317,22 +317,13 @@ bool LIB_ID_VALIDATOR::Validate( wxWindow *aParent )
|
||||||
|
|
||||||
|
|
||||||
NETNAME_VALIDATOR::NETNAME_VALIDATOR( wxString *aVal ) :
|
NETNAME_VALIDATOR::NETNAME_VALIDATOR( wxString *aVal ) :
|
||||||
wxTextValidator(),
|
wxTextValidator()
|
||||||
m_allowSpaces( false )
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NETNAME_VALIDATOR::NETNAME_VALIDATOR( const NETNAME_VALIDATOR& aValidator ) :
|
NETNAME_VALIDATOR::NETNAME_VALIDATOR( const NETNAME_VALIDATOR& aValidator ) :
|
||||||
wxTextValidator( aValidator ),
|
wxTextValidator( aValidator )
|
||||||
m_allowSpaces( aValidator.m_allowSpaces )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NETNAME_VALIDATOR::NETNAME_VALIDATOR( bool aAllowSpaces ) :
|
|
||||||
wxTextValidator(),
|
|
||||||
m_allowSpaces( aAllowSpaces )
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -366,7 +357,7 @@ wxString NETNAME_VALIDATOR::IsValid( const wxString& str ) const
|
||||||
if( str.Contains( '\r' ) || str.Contains( '\n' ) )
|
if( str.Contains( '\r' ) || str.Contains( '\n' ) )
|
||||||
return _( "Signal names cannot contain CR or LF characters" );
|
return _( "Signal names cannot contain CR or LF characters" );
|
||||||
|
|
||||||
if( !m_allowSpaces && ( str.Contains( ' ' ) || str.Contains( '\t' ) ) )
|
if( str.Contains( ' ' ) || str.Contains( '\t' ) )
|
||||||
return _( "Signal names cannot contain spaces" );
|
return _( "Signal names cannot contain spaces" );
|
||||||
|
|
||||||
return wxString();
|
return wxString();
|
||||||
|
|
|
@ -48,7 +48,7 @@ class SCH_TEXT;
|
||||||
DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR( SCH_EDIT_FRAME* aParent, SCH_TEXT* aTextItem ) :
|
DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR( SCH_EDIT_FRAME* aParent, SCH_TEXT* aTextItem ) :
|
||||||
DIALOG_LABEL_EDITOR_BASE( aParent ),
|
DIALOG_LABEL_EDITOR_BASE( aParent ),
|
||||||
m_textSize( aParent, m_textSizeLabel, m_textSizeCtrl, m_textSizeUnits, false ),
|
m_textSize( aParent, m_textSizeLabel, m_textSizeCtrl, m_textSizeUnits, false ),
|
||||||
m_netNameValidator( true ),
|
m_netNameValidator(),
|
||||||
m_scintillaTricks( nullptr ),
|
m_scintillaTricks( nullptr ),
|
||||||
m_helpWindow( nullptr )
|
m_helpWindow( nullptr )
|
||||||
{
|
{
|
||||||
|
|
|
@ -81,10 +81,6 @@ public:
|
||||||
NETNAME_VALIDATOR( aVal )
|
NETNAME_VALIDATOR( aVal )
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
SCH_NETNAME_VALIDATOR( bool aAllowSpaces ) :
|
|
||||||
NETNAME_VALIDATOR( aAllowSpaces )
|
|
||||||
{ }
|
|
||||||
|
|
||||||
SCH_NETNAME_VALIDATOR( const SCH_NETNAME_VALIDATOR& aValidator ) :
|
SCH_NETNAME_VALIDATOR( const SCH_NETNAME_VALIDATOR& aValidator ) :
|
||||||
NETNAME_VALIDATOR( aValidator )
|
NETNAME_VALIDATOR( aValidator )
|
||||||
{ }
|
{ }
|
||||||
|
|
|
@ -664,28 +664,12 @@ int SCH_DRAWING_TOOLS::SingleClickPlace( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// History lists for placing labels and text
|
|
||||||
|
|
||||||
SCH_TEXT* SCH_DRAWING_TOOLS::getNextNewText()
|
|
||||||
{
|
|
||||||
if( m_queuedTexts.empty() )
|
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
auto next_text = std::move( m_queuedTexts.front() );
|
|
||||||
m_queuedTexts.pop_front();
|
|
||||||
|
|
||||||
return next_text.release();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SCH_TEXT* SCH_DRAWING_TOOLS::createNewText( const VECTOR2I& aPosition, int aType )
|
SCH_TEXT* SCH_DRAWING_TOOLS::createNewText( const VECTOR2I& aPosition, int aType )
|
||||||
{
|
{
|
||||||
SCHEMATIC* schematic = getModel<SCHEMATIC>();
|
SCHEMATIC* schematic = getModel<SCHEMATIC>();
|
||||||
SCHEMATIC_SETTINGS& settings = schematic->Settings();
|
SCHEMATIC_SETTINGS& settings = schematic->Settings();
|
||||||
SCH_TEXT* textItem = nullptr;
|
SCH_TEXT* textItem = nullptr;
|
||||||
|
|
||||||
m_queuedTexts.clear();
|
|
||||||
|
|
||||||
switch( aType )
|
switch( aType )
|
||||||
{
|
{
|
||||||
case LAYER_NOTES:
|
case LAYER_NOTES:
|
||||||
|
@ -727,80 +711,6 @@ SCH_TEXT* SCH_DRAWING_TOOLS::createNewText( const VECTOR2I& aPosition, int aType
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aType != LAYER_NOTES )
|
|
||||||
{
|
|
||||||
UTF8 text( textItem->GetText() );
|
|
||||||
int brace_count = 0;
|
|
||||||
int bracket_count = 0;
|
|
||||||
bool last_space = false;
|
|
||||||
UTF8 token;
|
|
||||||
|
|
||||||
for( auto chIt = text.ubegin(); chIt != text.uend(); chIt++ )
|
|
||||||
{
|
|
||||||
switch( *chIt )
|
|
||||||
{
|
|
||||||
case '{':
|
|
||||||
brace_count++;
|
|
||||||
last_space = false;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '[':
|
|
||||||
bracket_count++;
|
|
||||||
last_space = false;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case '}':
|
|
||||||
brace_count = std::max( 0, brace_count - 1 );
|
|
||||||
last_space = false;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ']':
|
|
||||||
bracket_count = std::max( 0, bracket_count - 1 );
|
|
||||||
last_space = false;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ' ':
|
|
||||||
case '\n':
|
|
||||||
case '\r':
|
|
||||||
case '\t':
|
|
||||||
if( !token.empty() && bracket_count == 0 && brace_count == 0 )
|
|
||||||
{
|
|
||||||
std::unique_ptr<SCH_TEXT> nextitem( static_cast<SCH_TEXT*>( textItem->Clone() ) );
|
|
||||||
nextitem->SetText( token.wx_str() );
|
|
||||||
m_queuedTexts.push_back( std::move( nextitem ) );
|
|
||||||
token.clear();
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Skip leading whitespace
|
|
||||||
if( token.empty() || last_space )
|
|
||||||
continue;
|
|
||||||
|
|
||||||
last_space = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
last_space = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
token += *chIt;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !token.empty() )
|
|
||||||
{
|
|
||||||
std::unique_ptr<SCH_TEXT> nextitem( static_cast<SCH_TEXT*>( textItem->Clone() ) );
|
|
||||||
nextitem->SetText( token.wx_str() );
|
|
||||||
m_queuedTexts.push_back( std::move( nextitem ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
delete textItem;
|
|
||||||
textItem = getNextNewText();
|
|
||||||
|
|
||||||
if( !textItem )
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_lastTextBold = textItem->IsBold();
|
m_lastTextBold = textItem->IsBold();
|
||||||
m_lastTextItalic = textItem->IsItalic();
|
m_lastTextItalic = textItem->IsItalic();
|
||||||
m_lastTextOrientation = textItem->GetLabelSpinStyle();
|
m_lastTextOrientation = textItem->GetLabelSpinStyle();
|
||||||
|
@ -980,20 +890,9 @@ int SCH_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
item->ClearFlags( IS_MOVED );
|
item->ClearFlags( IS_MOVED );
|
||||||
m_frame->AddItemToScreenAndUndoList( m_frame->GetScreen(), (SCH_ITEM*) item, false );
|
m_frame->AddItemToScreenAndUndoList( m_frame->GetScreen(), (SCH_ITEM*) item, false );
|
||||||
item = getNextNewText();
|
item = nullptr;
|
||||||
|
|
||||||
if( item )
|
m_view->ClearPreview();
|
||||||
{
|
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
|
||||||
item->SetFlags( IS_NEW | IS_MOVED );
|
|
||||||
m_view->ClearPreview();
|
|
||||||
m_view->AddToPreview( item->Clone() );
|
|
||||||
m_selectionTool->AddItemToSel( item );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_view->ClearPreview();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( evt->IsClick( BUT_RIGHT ) )
|
else if( evt->IsClick( BUT_RIGHT ) )
|
||||||
|
|
|
@ -63,8 +63,6 @@ private:
|
||||||
* Gets the next queued text item
|
* Gets the next queued text item
|
||||||
* @return next SCH_TEXT* or nullptr if empty
|
* @return next SCH_TEXT* or nullptr if empty
|
||||||
*/
|
*/
|
||||||
SCH_TEXT* getNextNewText();
|
|
||||||
|
|
||||||
SCH_TEXT* createNewText( const VECTOR2I& aPosition, int aType );
|
SCH_TEXT* createNewText( const VECTOR2I& aPosition, int aType );
|
||||||
|
|
||||||
void sizeSheet( SCH_SHEET* aSheet, VECTOR2I aPos );
|
void sizeSheet( SCH_SHEET* aSheet, VECTOR2I aPos );
|
||||||
|
@ -82,8 +80,6 @@ private:
|
||||||
bool m_lastTextBold;
|
bool m_lastTextBold;
|
||||||
bool m_lastTextItalic;
|
bool m_lastTextItalic;
|
||||||
|
|
||||||
std::deque<std::unique_ptr<SCH_TEXT>> m_queuedTexts;
|
|
||||||
|
|
||||||
std::unique_ptr<STATUS_TEXT_POPUP> m_statusPopup;
|
std::unique_ptr<STATUS_TEXT_POPUP> m_statusPopup;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -200,8 +200,6 @@ class NETNAME_VALIDATOR : public wxTextValidator
|
||||||
public:
|
public:
|
||||||
NETNAME_VALIDATOR( wxString *aVal = nullptr );
|
NETNAME_VALIDATOR( wxString *aVal = nullptr );
|
||||||
|
|
||||||
NETNAME_VALIDATOR( bool aAllowSpaces );
|
|
||||||
|
|
||||||
NETNAME_VALIDATOR( const NETNAME_VALIDATOR& aValidator );
|
NETNAME_VALIDATOR( const NETNAME_VALIDATOR& aValidator );
|
||||||
|
|
||||||
virtual wxObject* Clone() const override { return new NETNAME_VALIDATOR( *this ); }
|
virtual wxObject* Clone() const override { return new NETNAME_VALIDATOR( *this ); }
|
||||||
|
@ -215,9 +213,6 @@ public:
|
||||||
protected:
|
protected:
|
||||||
// returns the error message if the contents of 'val' are invalid
|
// returns the error message if the contents of 'val' are invalid
|
||||||
wxString IsValid( const wxString& aVal ) const override;
|
wxString IsValid( const wxString& aVal ) const override;
|
||||||
|
|
||||||
private:
|
|
||||||
bool m_allowSpaces;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue