KiCad PCB EDA Suite
dialog_edit_one_field.h
Go to the documentation of this file.
1 
2 #ifndef DIALOG_EDIT_ONE_FIELD_H_
3 #define DIALOG_EDIT_ONE_FIELD_H_
4 
5 /*
6  * This program source code file is part of KiCad, a free EDA CAD application.
7  *
8  * Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@gipsa-lab.inpg.com
9  * Copyright (C) 2016 Wayne Stambaugh, stambaughw@gmail.com
10  * Copyright (C) 2004-2021 KiCad Developers, see AUTHORS.txt for contributors.
11  *
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License
14  * as published by the Free Software Foundation; either version 2
15  * of the License, or (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, you may find one here:
24  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
25  * or you may search the http://www.gnu.org website for the version 2 license,
26  * or you may write to the Free Software Foundation, Inc.,
27  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
28  */
29 
31 #include <widgets/unit_binder.h>
32 #include <lib_field.h>
33 #include <template_fieldnames.h>
34 
35 class SCH_BASE_FRAME;
36 class SCH_FIELD;
37 class EDA_TEXT;
38 class SCINTILLA_TRICKS;
39 
40 
48 {
49 public:
50  DIALOG_EDIT_ONE_FIELD( SCH_BASE_FRAME* aParent, const wxString& aTitle,
51  const EDA_TEXT* aTextItem );
52 
53  ~DIALOG_EDIT_ONE_FIELD() override;
54 
55  bool TransferDataToWindow() override;
56  bool TransferDataFromWindow() override;
57 
58  SCH_BASE_FRAME* GetParent() { return dynamic_cast< SCH_BASE_FRAME* >( wxDialog::GetParent() ); }
59 
60  const wxString& GetText() const { return m_text; }
61 
62 protected:
63  void init();
64 
65  void updateText( EDA_TEXT* aText );
66 
75  void OnTextValueSelectButtonClick( wxCommandEvent& aEvent ) override;
76 
81  virtual void OnSetFocusText( wxFocusEvent& event ) override;
82 
86 
87  int m_fieldId;
88  bool m_isPower;
89  wxString m_text;
90  bool m_isItalic;
91  bool m_isBold;
92  wxPoint m_position;
93  int m_size;
98 
100 
102 };
103 
104 
111 {
112 public:
113  DIALOG_LIB_EDIT_ONE_FIELD( SCH_BASE_FRAME* aParent, const wxString& aTitle,
114  const LIB_FIELD* aField );
115 
117 
118  void UpdateField( LIB_FIELD* aField )
119  {
120  wxString value = m_text;
121 
122  if( m_fieldId == VALUE_FIELD )
123  value = EscapeString( value, CTX_LIBID );
124 
125  aField->SetText( value );
126 
127  // VALUE === symbol name, so update the parent symbol if it changes.
128  if( m_fieldId == VALUE_FIELD && aField->GetParent() )
129  aField->GetParent()->SetName( value );
130 
131  updateText( aField );
132  }
133 };
134 
135 
142 {
143 public:
144  DIALOG_SCH_EDIT_ONE_FIELD( SCH_BASE_FRAME* aParent, const wxString& aTitle,
145  const SCH_FIELD* aField );
146 
148 
149  void onScintillaCharAdded( wxStyledTextEvent &aEvent );
150 
151  void UpdateField( SCH_FIELD* aField, SCH_SHEET_PATH* aSheetPath );
152 
153 private:
155 };
156 
157 #endif // DIALOG_EDIT_ONE_FIELD_H_
Instances are attached to a symbol or sheet and provide a place for the symbol's value,...
Definition: sch_field.h:49
SCINTILLA_TRICKS * m_scintillaTricks
void onScintillaCharAdded(wxStyledTextEvent &aEvent)
Add cut/copy/paste, autocomplete and brace highlighting to a wxStyleTextCtrl instance.
Field object used in symbol libraries.
Definition: lib_field.h:59
void UpdateField(LIB_FIELD *aField)
void UpdateField(SCH_FIELD *aField, SCH_SHEET_PATH *aSheetPath)
DIALOG_EDIT_ONE_FIELD(SCH_BASE_FRAME *aParent, const wxString &aTitle, const EDA_TEXT *aTextItem)
DIALOG_SCH_EDIT_ONE_FIELD(SCH_BASE_FRAME *aParent, const wxString &aTitle, const SCH_FIELD *aField)
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
Definition: eda_text.h:119
DIALOG_LIB_EDIT_ONE_FIELD(SCH_BASE_FRAME *aParent, const wxString &aTitle, const LIB_FIELD *aField)
A base class to edit schematic and symbol library fields.
Handle editing a single symbol field in the library editor.
Field Value of part, i.e. "3.3K".
virtual void SetText(const wxString &aText)
Definition: eda_text.cpp:114
virtual void SetName(const wxString &aName)
Definition: lib_symbol.cpp:314
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
const wxString & GetText() const
Handle editing a single symbol field in the schematic editor.
bool TransferDataToWindow() override
void updateText(EDA_TEXT *aText)
Class DIALOG_LIB_EDIT_TEXT_BASE.
SCH_BASE_FRAME * GetParent()
LIB_SYMBOL * GetParent() const
Definition: lib_item.h:146
void OnTextValueSelectButtonClick(wxCommandEvent &aEvent) override
Handle the select button next to the text value field.
wxString EscapeString(const wxString &aSource, ESCAPE_CONTEXT aContext)
The Escape/Unescape routines use HTML-entity-reference-style encoding to handle characters which are:...
Definition: string.cpp:141
bool TransferDataFromWindow() override
A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME,...
virtual void OnSetFocusText(wxFocusEvent &event) override
Used to select the variant part of some text fields (for instance, the question mark or number in a r...