KiCad PCB EDA Suite
Loading...
Searching...
No Matches
drc_re_bool_input_overlay_panel.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2024 KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
27
29#include <wx/checkbox.h>
30
31
33 wxWindow* aParent, DRC_RE_BOOL_INPUT_CONSTRAINT_DATA* aData ) :
35 m_data( aData ),
36 m_boolInputCheckbox( nullptr )
37{
38 SetBackgroundBitmap( m_data->GetOverlayBitmap() );
39
40 std::vector<DRC_RE_FIELD_POSITION> positions = m_data->GetFieldPositions();
41
42 DRC_RE_OVERLAY_FIELD* field = AddCheckbox( wxS( "bool_input" ), positions[0] );
43 m_boolInputCheckbox = static_cast<wxCheckBox*>( field->GetControl() );
44
45 m_boolInputCheckbox->Bind( wxEVT_CHECKBOX, [this]( wxCommandEvent& )
46 {
48 if( dlg )
49 dlg->SetModified();
50 } );
51
54}
55
56
58{
60 return false;
61
62 m_boolInputCheckbox->SetValue( m_data->GetBoolInputValue() );
63
64 return true;
65}
66
67
69{
71 return false;
72
73 m_data->SetBoolInputValue( m_boolInputCheckbox->GetValue() );
74
75 return true;
76}
77
78
80 wxString* aValidationMessage )
81{
83
84 VALIDATION_RESULT result = m_data->Validate();
85
86 if( !result.isValid )
87 {
88 *aErrorCount = result.errors.size();
89
90 for( size_t i = 0; i < result.errors.size(); i++ )
91 *aValidationMessage += DRC_RULE_EDITOR_UTILS::FormatErrorMessage( i + 1, result.errors[i] );
92
93 return false;
94 }
95
96 return true;
97}
98
99
101{
102 if( !m_data )
103 return wxEmptyString;
104
105 return m_data->GenerateRule( aContext );
106}
DRC_RE_OVERLAY_FIELD * AddCheckbox(const wxString &aId, const DRC_RE_FIELD_POSITION &aPosition)
Create and position a checkbox control on the bitmap overlay.
void SetBackgroundBitmap(BITMAPS aBitmap)
Set the background bitmap for this panel.
DRC_RE_BITMAP_OVERLAY_PANEL(wxWindow *aParent, wxWindowID aId=wxID_ANY)
void PositionFields()
Position all fields based on the current scale factor.
DRC_RE_BOOL_INPUT_CONSTRAINT_DATA * m_data
wxString GenerateRule(const RULE_GENERATION_CONTEXT &aContext) override
DRC_RE_BOOL_INPUT_OVERLAY_PANEL(wxWindow *aParent, DRC_RE_BOOL_INPUT_CONSTRAINT_DATA *aData)
bool ValidateInputs(int *aErrorCount, wxString *aValidationMessage) override
Wraps a wxControl positioned over a bitmap overlay panel.
wxControl * GetControl() const
static wxString FormatErrorMessage(int aErrorCount, const wxString &aErrorMessage)
void SetModified()
Marks the dialog as modified, indicating unsaved changes.
static RULE_EDITOR_DIALOG_BASE * GetDialog(wxWindow *aWindow)
Static method to retrieve the rule editor dialog instance associated with a given window.
Result of a validation operation.
wxString result
Test unit parsing edge cases and error handling.