Convert smart quotes and dashes to ASCII in DRC rules.
Fixes https://gitlab.com/kicad/code/kicad/issues/5135
This commit is contained in:
parent
0a6a91b5ad
commit
de6314e3b5
|
@ -23,10 +23,12 @@
|
|||
|
||||
|
||||
#include <fctsys.h>
|
||||
#include <kicad_string.h>
|
||||
#include <scintilla_tricks.h>
|
||||
#include <wx/stc/stc.h>
|
||||
#include <gal/color4d.h>
|
||||
#include <dialog_shim.h>
|
||||
#include <wx/clipbrd.h>
|
||||
|
||||
SCINTILLA_TRICKS::SCINTILLA_TRICKS( wxStyledTextCtrl* aScintilla, const wxString& aBraces ) :
|
||||
m_te( aScintilla ),
|
||||
|
@ -66,7 +68,13 @@ SCINTILLA_TRICKS::SCINTILLA_TRICKS( wxStyledTextCtrl* aScintilla, const wxString
|
|||
|
||||
void SCINTILLA_TRICKS::onCharHook( wxKeyEvent& aEvent )
|
||||
{
|
||||
if( aEvent.GetKeyCode() == WXK_TAB )
|
||||
wxString c = aEvent.GetUnicodeKey();
|
||||
|
||||
if( ConvertSmartQuotesAndDashes( &c ) )
|
||||
{
|
||||
m_te->AddText( c );
|
||||
}
|
||||
else if( aEvent.GetKeyCode() == WXK_TAB )
|
||||
{
|
||||
if( aEvent.ControlDown() )
|
||||
{
|
||||
|
@ -107,7 +115,25 @@ void SCINTILLA_TRICKS::onCharHook( wxKeyEvent& aEvent )
|
|||
}
|
||||
else if( aEvent.GetModifiers() == wxMOD_CONTROL && aEvent.GetKeyCode() == 'V' )
|
||||
{
|
||||
m_te->Paste();
|
||||
if( m_te->GetSelectionEnd() > m_te->GetSelectionStart() )
|
||||
m_te->DeleteBack();
|
||||
|
||||
if( wxTheClipboard->Open() )
|
||||
{
|
||||
if( wxTheClipboard->IsSupported( wxDF_TEXT ) )
|
||||
{
|
||||
wxTextDataObject data;
|
||||
wxString str;
|
||||
|
||||
wxTheClipboard->GetData( data );
|
||||
str = data.GetText();
|
||||
|
||||
ConvertSmartQuotesAndDashes( &str );
|
||||
m_te->AddText( str );
|
||||
}
|
||||
|
||||
wxTheClipboard->Close();
|
||||
}
|
||||
}
|
||||
else if( aEvent.GetKeyCode() == WXK_BACK )
|
||||
{
|
||||
|
|
|
@ -294,7 +294,18 @@ bool PANEL_SETUP_RULES::TransferDataToWindow()
|
|||
wxFileName rulesFile( rulesFilepath );
|
||||
|
||||
if( rulesFile.FileExists() )
|
||||
m_textEditor->LoadFile( rulesFile.GetFullPath() );
|
||||
{
|
||||
wxTextFile file( rulesFile.GetFullPath() );
|
||||
|
||||
if( file.Open() )
|
||||
{
|
||||
for ( wxString str = file.GetFirstLine(); !file.Eof(); str = file.GetNextLine() )
|
||||
{
|
||||
ConvertSmartQuotesAndDashes( &str );
|
||||
m_textEditor->AddText( str << '\n' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_originalText = m_textEditor->GetText();
|
||||
|
||||
|
@ -309,7 +320,7 @@ bool PANEL_SETUP_RULES::TransferDataFromWindow()
|
|||
|
||||
try
|
||||
{
|
||||
std::vector<DRC_RULE*> dummyRules;
|
||||
std::vector<DRC_RULE*> dummyRules;
|
||||
|
||||
DRC_RULES_PARSER parser( m_frame->GetBoard(), m_textEditor->GetText(), _( "DRC rules" ) );
|
||||
|
||||
|
|
Loading…
Reference in New Issue