24#ifndef DRC_RULE_EDITOR_UTILS_H_
25#define DRC_RULE_EDITOR_UTILS_H_
45 using RuleConverter = std::function<std::shared_ptr<DRC_RE_BASE_CONSTRAINT_DATA>(
const std::shared_ptr<DRC_RULE>& )>;
53 static std::string
FormatErrorMessage(
const int& aErrorCount,
const std::string aErrorMessage );
55 static std::vector<std::shared_ptr<DRC_RE_BASE_CONSTRAINT_DATA>>
ParseRules(
const wxString& aRules );
57 static bool SaveRules(
const wxString& aFilename,
58 const std::vector<std::shared_ptr<DRC_RE_BASE_CONSTRAINT_DATA>>& aRules,
59 const BOARD* aBoard );
109 static bool ValidateNumericCtrl( wxTextCtrl* aTextCtrl, std::string aLabel,
bool aCanBeZero,
int* aErrorCount,
110 std::string* aValidationMessage );
123 static bool ValidateIntegerCtrl( wxTextCtrl* aTextCtrl, std::string aLabel,
bool aCanBeZero,
int* aErrorCount,
124 std::string* aValidationMessage );
136 static bool ValidateComboCtrl( wxComboBox* aComboBox, std::string aLabel,
int* aErrorCount,
137 std::string* aValidationMessage );
151 static bool ValidateMinMaxCtrl( wxTextCtrl* aMinTextCtrl, wxTextCtrl* aMaxTextCtrl, std::string aMinLabel,
152 std::string aMaxLabel,
int* aErrorCount, std::string* aValidationMessage );
172 wxTextCtrl* aMaxTextCtrl, std::string aMinLabel,
173 std::string aPreferredLabel, std::string aMaxLabel,
int* aErrorCount,
174 std::string* aValidationMessage );
187 int* aErrorCount, std::string* aValidationMessage );
227 static bool ValidateMinMax(
double aMin,
double aMax,
const std::string& aMinLabel,
243 const std::string& aMinLabel,
const std::string& aPrefLabel,
Information pertinent to a Pcbnew printed circuit board.
static bool ValidateMinPreferredMax(double aMin, double aPreferred, double aMax, const std::string &aMinLabel, const std::string &aPrefLabel, const std::string &aMaxLabel, VALIDATION_RESULT *aResult)
Validates that min <= preferred <= max.
static bool ValidateMinMaxCtrl(wxTextCtrl *aMinTextCtrl, wxTextCtrl *aMaxTextCtrl, std::string aMinLabel, std::string aMaxLabel, int *aErrorCount, std::string *aValidationMessage)
Validates the minimum and maximum value controls, ensuring that the minimum value is not greater than...
static bool ValidateMinMax(double aMin, double aMax, const std::string &aMinLabel, const std::string &aMaxLabel, VALIDATION_RESULT *aResult)
Validates that min <= max.
static bool ValidateNumericValue(double aValue, bool aCanBeZero, const std::string &aLabel, VALIDATION_RESULT *aResult)
Validates a numeric value.
static bool IsNumericInputType(const DRC_RULE_EDITOR_CONSTRAINT_NAME &aConstraintType)
static wxString ConstraintToKicadDrc(DRC_RULE_EDITOR_CONSTRAINT_NAME aType)
Convert a constraint type into the keyword used in a .kicad_drc file.
static bool ValidateComboCtrl(wxComboBox *aComboBox, std::string aLabel, int *aErrorCount, std::string *aValidationMessage)
Validates a combo box control, ensuring that a selection has been made.
static wxString GetConstraintCode(DRC_RULE_EDITOR_CONSTRAINT_NAME aConstraintType)
Translate a rule tree node type into the keyword used by the rules file for that constraint.
static bool ConstraintFromKicadDrc(const wxString &aCode, DRC_RE_BASE_CONSTRAINT_DATA *aData)
Populate a constraint data object using a keyword from a .kicad_drc file.
static bool ValidateSelection(int aSelectionIndex, const std::string &aLabel, VALIDATION_RESULT *aResult)
Validates that a selection has been made (index >= 0).
static bool ValidateNumericString(const std::string &aValueStr, bool aCanBeZero, bool aIntegerOnly, const std::string &aLabel, VALIDATION_RESULT *aResult)
Validates that a string represents a valid numeric value.
static std::optional< DRC_RULE_EDITOR_CONSTRAINT_NAME > GetConstraintTypeFromCode(const wxString &aCode)
Resolve a constraint keyword from a rules file into the corresponding rule tree enumeration value.
static bool SaveRules(const wxString &aFilename, const std::vector< std::shared_ptr< DRC_RE_BASE_CONSTRAINT_DATA > > &aRules, const BOARD *aBoard)
static void RegisterRuleConverter(RuleConverter aConverter)
static bool ValidateIntegerCtrl(wxTextCtrl *aTextCtrl, std::string aLabel, bool aCanBeZero, int *aErrorCount, std::string *aValidationMessage)
Validates an integer input control, ensuring the value is a valid integer, non-empty,...
static bool ValidateNumericCtrl(wxTextCtrl *aTextCtrl, std::string aLabel, bool aCanBeZero, int *aErrorCount, std::string *aValidationMessage)
Validates a numeric input control, checking if the value is valid, non-empty, and greater than zero.
std::function< std::shared_ptr< DRC_RE_BASE_CONSTRAINT_DATA >(const std::shared_ptr< DRC_RULE > &)> RuleConverter
static bool ValidateCheckBoxCtrls(const std::vector< wxCheckBox * > &aCheckboxes, std::string aLabel, int *aErrorCount, std::string *aValidationMessage)
Validates a list of checkboxes, ensuring that at least one option is selected.
static std::string FormatErrorMessage(const int &aErrorCount, const std::string aErrorMessage)
static bool ValidateAtLeastOneSelected(const std::vector< bool > &aSelected, const std::string &aLabel, VALIDATION_RESULT *aResult)
Validates that at least one option is selected.
static bool ValidateMinPreferredMaxCtrl(wxTextCtrl *aMinTextCtrl, wxTextCtrl *aPreferredTextCtrl, wxTextCtrl *aMaxTextCtrl, std::string aMinLabel, std::string aPreferredLabel, std::string aMaxLabel, int *aErrorCount, std::string *aValidationMessage)
Validates the minimum, preferred, and maximum value controls, ensuring that:
static bool IsBoolInputType(const DRC_RULE_EDITOR_CONSTRAINT_NAME &aConstraintType)
static std::vector< std::shared_ptr< DRC_RE_BASE_CONSTRAINT_DATA > > ParseRules(const wxString &aRules)
DRC_RULE_EDITOR_CONSTRAINT_NAME
Result of a validation operation.