1 /* 2 * This program source code file is part of KiCad, a free EDA CAD application. 3 * 4 * Copyright (C) 2016 Wayne Stambaugh, stambaughw@gmail.com 5 * Copyright (C) 2016-2021 KiCad Developers, see AUTHORS.txt for contributors. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, you may find one here: 19 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 20 * or you may search the http://www.gnu.org website for the version 2 license, 21 * or you may write to the Free Software Foundation, Inc., 22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA 23 */ 24 25 /** 26 * @file sch_validators.h 27 * @brief Definitions of control validators for schematic dialogs. 28 */ 29 30 #ifndef _SCH_VALIDATORS_H_ 31 #define _SCH_VALIDATORS_H_ 32 33 #include <wx/valtext.h> 34 #include <validators.h> 35 36 #define FIELD_NAME -1 37 #define FIELD_VALUE -2 38 39 #define SHEETNAME_V 100 // We can't use SHEETNAME and SHEETFILENAME because they 40 #define SHEETFILENAME_V 101 // overlap with REFERENCE_FIELD and VALUE_FIELD 41 #define SHEETUSERFIELD_V 102 42 43 /** 44 * A text control validator used for validating the text allowed in library and 45 * schematic symbol fields. 46 * 47 * - The reference field does not accept spaces. 48 * - The value field does not accept spaces in the symbol library editor because in symbol 49 * libraries, the value field is the symbol name in the library. 50 */ 51 class SCH_FIELD_VALIDATOR : public wxTextValidator 52 { 53 public: 54 SCH_FIELD_VALIDATOR( bool aIsLibEditor, int aFieldId, wxString* aValue = nullptr ); 55 56 SCH_FIELD_VALIDATOR( const SCH_FIELD_VALIDATOR& aValidator ); 57 Clone()58 virtual wxObject* Clone() const override { return new SCH_FIELD_VALIDATOR( *this ); } 59 60 /** 61 * Override the default Validate() function provided by wxTextValidator to provide 62 * better error messages. 63 * 64 * @param aParent is the parent window of the error message dialog. 65 * @return true if the text in the control is valid otherwise false. 66 */ 67 virtual bool Validate( wxWindow *aParent ) override; 68 69 private: 70 int m_fieldId; 71 bool m_isLibEditor; 72 }; 73 74 75 /* 76 * A refinement of the NETNAME_VALIDATOR which also allows (and checks) bus definitions. 77 */ 78 class SCH_NETNAME_VALIDATOR : public NETNAME_VALIDATOR 79 { 80 public: 81 SCH_NETNAME_VALIDATOR( wxString* aVal = nullptr ) : NETNAME_VALIDATOR(aVal)82 NETNAME_VALIDATOR( aVal ) 83 { } 84 SCH_NETNAME_VALIDATOR(bool aAllowSpaces)85 SCH_NETNAME_VALIDATOR( bool aAllowSpaces ) : 86 NETNAME_VALIDATOR( aAllowSpaces ) 87 { } 88 SCH_NETNAME_VALIDATOR(const SCH_NETNAME_VALIDATOR & aValidator)89 SCH_NETNAME_VALIDATOR( const SCH_NETNAME_VALIDATOR& aValidator ) : 90 NETNAME_VALIDATOR( aValidator ) 91 { } 92 Clone()93 virtual wxObject* Clone() const override { return new SCH_NETNAME_VALIDATOR( *this ); } 94 95 protected: 96 /// @return the error message if the contents of \a aVal are invalid. 97 wxString IsValid( const wxString& aVal ) const override; 98 99 private: 100 static wxRegEx m_busGroupRegex; 101 }; 102 103 #endif // _SCH_VALIDATORS_H_ 104