KiCad PCB EDA Suite
PROPERTIES_PANEL Class Referenceabstract

#include <properties_panel.h>

Inheritance diagram for PROPERTIES_PANEL:
PCB_PROPERTIES_PANEL

Public Member Functions

 PROPERTIES_PANEL (wxWindow *aParent, EDA_BASE_FRAME *aFrame)
 
virtual ~PROPERTIES_PANEL ()
 
virtual void UpdateData ()=0
 
virtual void AfterCommit ()
 
wxPropertyGrid * GetPropertyGrid ()
 
int PropertiesCount () const
 
const std::vector< PROPERTY_BASE * > & Properties () const
 
void RecalculateSplitterPos ()
 
void SetSplitterProportion (float aProportion)
 
float SplitterProportion () const
 
void OnLanguageChanged ()
 

Protected Member Functions

virtual void rebuildProperties (const SELECTION &aSelection)
 Generates the property grid for a given selection of items. More...
 
virtual void updatePropertyValues (const SELECTION &aSelection)
 Updates the values shown in the property grid for the current selection. More...
 
virtual wxPGProperty * createPGProperty (const PROPERTY_BASE *aProperty) const =0
 
virtual void valueChanging (wxPropertyGridEvent &aEvent)
 
virtual void valueChanged (wxPropertyGridEvent &aEvent)
 
void onCharHook (wxKeyEvent &aEvent)
 
void onShow (wxShowEvent &aEvent)
 
bool getItemValue (EDA_ITEM *aItem, PROPERTY_BASE *aProperty, wxVariant &aValue)
 Utility to fetch a property value and convert to wxVariant Precondition: aItem is known to have property aProperty. More...
 
bool extractValueAndWritability (const SELECTION &aSelection, PROPERTY_BASE *aProperty, wxVariant &aValue, bool &aWritable)
 Processes a selection and determines whether the given property should be available or not and what the common value should be for the items in the selection. More...
 

Protected Attributes

std::vector< PROPERTY_BASE * > m_displayed
 
wxPropertyGrid * m_grid
 
EDA_BASE_FRAMEm_frame
 
wxStaticText * m_caption
 
float m_splitter_key_proportion
 Proportion of the grid column splitter that is used for the key column (0.0 - 1.0) More...
 
std::unique_ptr< SELECTIONm_cachedSelection
 A copy of the most recent selection passed to rebuildProperties. More...
 

Detailed Description

Definition at line 39 of file properties_panel.h.

Constructor & Destructor Documentation

◆ PROPERTIES_PANEL()

PROPERTIES_PANEL::PROPERTIES_PANEL ( wxWindow *  aParent,
EDA_BASE_FRAME aFrame 
)

Definition at line 39 of file properties_panel.cpp.

39 :
40 wxPanel( aParent ),
41 m_frame( aFrame ),
43{
44 wxBoxSizer* mainSizer = new wxBoxSizer( wxVERTICAL );
45
46 // on some platforms wxPGGlobalVars is initialized automatically,
47 // but others need an explicit init
48 if( !wxPGGlobalVars )
49 wxPGInitResourceModule();
50
51 // See https://gitlab.com/kicad/code/kicad/-/issues/12297
52 // and https://github.com/wxWidgets/wxWidgets/issues/11787
53 if( wxPGGlobalVars->m_mapEditorClasses.empty() )
54 {
55 wxPGEditor_TextCtrl = nullptr;
56 wxPGEditor_Choice = nullptr;
57 wxPGEditor_ComboBox = nullptr;
58 wxPGEditor_TextCtrlAndButton = nullptr;
59 wxPGEditor_CheckBox = nullptr;
60 wxPGEditor_ChoiceAndButton = nullptr;
61 wxPGEditor_SpinCtrl = nullptr;
62 wxPGEditor_DatePickerCtrl = nullptr;
63 }
64
65 delete wxPGGlobalVars->m_defaultRenderer;
66 wxPGGlobalVars->m_defaultRenderer = new PG_CELL_RENDERER();
67
68 m_cachedSelection = std::make_unique<SELECTION>();
69
70 m_caption = new wxStaticText( this, wxID_ANY, _( "No objects selected" ) );
71 mainSizer->Add( m_caption, 0, wxALL | wxEXPAND, 5 );
72
73 m_grid = new wxPropertyGrid( this, wxID_ANY, wxDefaultPosition, wxSize( 300, 400 ),
74 wxPG_DEFAULT_STYLE );
75 m_grid->SetUnspecifiedValueAppearance( wxPGCell( wxT( "<...>" ) ) );
76 m_grid->SetExtraStyle( wxPG_EX_HELP_AS_TOOLTIPS );
77 m_grid->AddActionTrigger( wxPG_ACTION_NEXT_PROPERTY, WXK_RETURN );
78 m_grid->AddActionTrigger( wxPG_ACTION_NEXT_PROPERTY, WXK_NUMPAD_ENTER );
79 m_grid->AddActionTrigger( wxPG_ACTION_NEXT_PROPERTY, WXK_DOWN );
80 m_grid->AddActionTrigger( wxPG_ACTION_PREV_PROPERTY, WXK_UP );
81 m_grid->AddActionTrigger( wxPG_ACTION_EDIT, WXK_SPACE );
82 m_grid->DedicateKey( WXK_RETURN );
83 m_grid->DedicateKey( WXK_NUMPAD_ENTER );
84 m_grid->DedicateKey( WXK_DOWN );
85 m_grid->DedicateKey( WXK_UP );
86 mainSizer->Add( m_grid, 1, wxEXPAND, 5 );
87
88 m_grid->SetCellDisabledTextColour( wxSystemSettings::GetColour( wxSYS_COLOUR_GRAYTEXT ) );
89
90#ifdef __WXGTK__
91 // Needed for dark mode, on wx 3.0 at least.
92 m_grid->SetCaptionTextColour( wxSystemSettings::GetColour( wxSYS_COLOUR_CAPTIONTEXT ) );
93#endif
94
95 SetFont( KIUI::GetDockedPaneFont( this ) );
96
97 SetSizer( mainSizer );
98 Layout();
99
100 m_grid->CenterSplitter();
101
102 Connect( wxEVT_CHAR_HOOK, wxKeyEventHandler( PROPERTIES_PANEL::onCharHook ), nullptr, this );
103 Connect( wxEVT_PG_CHANGED, wxPropertyGridEventHandler( PROPERTIES_PANEL::valueChanged ), nullptr, this );
104 Connect( wxEVT_PG_CHANGING, wxPropertyGridEventHandler( PROPERTIES_PANEL::valueChanging ), nullptr, this );
105 Connect( wxEVT_SHOW, wxShowEventHandler( PROPERTIES_PANEL::onShow ), nullptr, this );
106
107 Bind( wxEVT_PG_COL_END_DRAG,
108 [&]( wxPropertyGridEvent& )
109 {
111 static_cast<float>( m_grid->GetSplitterPosition() ) / m_grid->GetSize().x;
112 } );
113
114 Bind( wxEVT_SIZE,
115 [&]( wxSizeEvent& aEvent )
116 {
117 CallAfter( [&]()
118 {
120 } );
121 aEvent.Skip();
122 } );
123}
Enhanced renderer to work around some limitations in wxWidgets 3.0 capabilities.
float m_splitter_key_proportion
Proportion of the grid column splitter that is used for the key column (0.0 - 1.0)
virtual void valueChanging(wxPropertyGridEvent &aEvent)
wxPropertyGrid * m_grid
wxStaticText * m_caption
virtual void valueChanged(wxPropertyGridEvent &aEvent)
std::unique_ptr< SELECTION > m_cachedSelection
A copy of the most recent selection passed to rebuildProperties.
void onCharHook(wxKeyEvent &aEvent)
void onShow(wxShowEvent &aEvent)
EDA_BASE_FRAME * m_frame
#define _(s)
wxFont GetDockedPaneFont(wxWindow *aWindow)
Definition: ui_common.cpp:144
APIIMPORT wxPGGlobalVarsClass * wxPGGlobalVars

References _, KIUI::GetDockedPaneFont(), m_cachedSelection, m_caption, m_grid, m_splitter_key_proportion, onCharHook(), onShow(), RecalculateSplitterPos(), valueChanged(), valueChanging(), and wxPGGlobalVars.

◆ ~PROPERTIES_PANEL()

virtual PROPERTIES_PANEL::~PROPERTIES_PANEL ( )
inlinevirtual

Definition at line 44 of file properties_panel.h.

45 {
46 }

Member Function Documentation

◆ AfterCommit()

virtual void PROPERTIES_PANEL::AfterCommit ( )
inlinevirtual

Reimplemented in PCB_PROPERTIES_PANEL.

Definition at line 50 of file properties_panel.h.

50{}

◆ createPGProperty()

virtual wxPGProperty * PROPERTIES_PANEL::createPGProperty ( const PROPERTY_BASE aProperty) const
protectedpure virtual

Implemented in PCB_PROPERTIES_PANEL.

Referenced by rebuildProperties().

◆ extractValueAndWritability()

bool PROPERTIES_PANEL::extractValueAndWritability ( const SELECTION aSelection,
PROPERTY_BASE aProperty,
wxVariant &  aValue,
bool &  aWritable 
)
protected

Processes a selection and determines whether the given property should be available or not and what the common value should be for the items in the selection.

Parameters
aSelectionis a set of EDA_ITEMs to process
aPropertyis the property to look up
aValuewill be filled with the value common to the selection, or null if different
aWritablewill be set to whether or not the property can be written for the selection
Returns
true if the property is available for all the items in the selection

Definition at line 305 of file properties_panel.cpp.

308{
310 propMgr.SetUnits( m_frame->GetUserUnits() );
312
313 bool different = false;
314 wxVariant commonVal;
315
316 aWritable = true;
317
318 for( EDA_ITEM* item : aSelection )
319 {
320 if( !propMgr.IsAvailableFor( TYPE_HASH( *item ), aProperty, item ) )
321 return false;
322
323 // If read-only for any of the selection, read-only for the whole selection.
324 if( !aProperty->Writeable( item ) )
325 aWritable = false;
326
327 wxVariant value;
328
329 if( getItemValue( item, aProperty, value ) )
330 {
331 // Null value indicates different property values between items
332 if( !different && !aValue.IsNull() && value != aValue )
333 {
334 different = true;
335 aValue.MakeNull();
336 }
337 else if( !different )
338 {
339 aValue = value;
340 }
341 }
342 else
343 {
344 // getItemValue returned false -- not available for this item
345 return false;
346 }
347 }
348
349 return true;
350}
ORIGIN_TRANSFORMS & GetOriginTransforms() override
Return a reference to the default ORIGIN_TRANSFORMS object.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:85
bool getItemValue(EDA_ITEM *aItem, PROPERTY_BASE *aProperty, wxVariant &aValue)
Utility to fetch a property value and convert to wxVariant Precondition: aItem is known to have prope...
virtual bool Writeable(INSPECTABLE *aObject) const
Definition: property.h:246
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:74
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:76
bool IsAvailableFor(TYPE_ID aItemClass, PROPERTY_BASE *aProp, INSPECTABLE *aItem)
Checks overriden availability and original availability of a property, returns false if the property ...
void SetTransforms(ORIGIN_TRANSFORMS *aTransforms)
Definition: property_mgr.h:225
void SetUnits(EDA_UNITS aUnits)
Definition: property_mgr.h:219
EDA_UNITS GetUserUnits() const
#define TYPE_HASH(x)
Definition: property.h:62

References getItemValue(), EDA_BASE_FRAME::GetOriginTransforms(), UNITS_PROVIDER::GetUserUnits(), PROPERTY_MANAGER::Instance(), PROPERTY_MANAGER::IsAvailableFor(), m_frame, PROPERTY_MANAGER::SetTransforms(), PROPERTY_MANAGER::SetUnits(), TYPE_HASH, and PROPERTY_BASE::Writeable().

Referenced by rebuildProperties(), and PCB_PROPERTIES_PANEL::updatePropertyValues().

◆ getItemValue()

bool PROPERTIES_PANEL::getItemValue ( EDA_ITEM aItem,
PROPERTY_BASE aProperty,
wxVariant &  aValue 
)
protected

Utility to fetch a property value and convert to wxVariant Precondition: aItem is known to have property aProperty.

Returns
true if conversion succeeded

Definition at line 280 of file properties_panel.cpp.

281{
282 const wxAny& any = aItem->Get( aProperty );
283 bool converted = false;
284
285 if( aProperty->HasChoices() )
286 {
287 // handle enums as ints, since there are no default conversion functions for wxAny
288 int tmp;
289 converted = any.GetAs<int>( &tmp );
290
291 if( converted )
292 aValue = wxVariant( tmp );
293 }
294
295 if( !converted ) // all other types
296 converted = any.GetAs( &aValue );
297
298 if( !converted )
299 wxFAIL_MSG( wxS( "Could not convert wxAny to wxVariant" ) );
300
301 return converted;
302}
wxAny Get(PROPERTY_BASE *aProperty) const
Definition: inspectable.h:84
virtual bool HasChoices() const
Return true if this PROPERTY has a limited set of possible values.
Definition: property.h:225

References INSPECTABLE::Get(), and PROPERTY_BASE::HasChoices().

Referenced by extractValueAndWritability().

◆ GetPropertyGrid()

wxPropertyGrid * PROPERTIES_PANEL::GetPropertyGrid ( )
inline

Definition at line 52 of file properties_panel.h.

53 {
54 return m_grid;
55 }

References m_grid.

◆ onCharHook()

void PROPERTIES_PANEL::onCharHook ( wxKeyEvent &  aEvent)
protected

Definition at line 360 of file properties_panel.cpp.

361{
362 if( aEvent.GetKeyCode() == WXK_TAB && !aEvent.ShiftDown() )
363 {
364 m_grid->CommitChangesFromEditor();
365 return;
366 }
367
368 if( aEvent.GetKeyCode() == WXK_SPACE )
369 {
370 if( wxPGProperty* prop = m_grid->GetSelectedProperty() )
371 {
372 if( prop->GetValueType() == wxT( "bool" ) )
373 {
374 m_grid->SetPropertyValue( prop, !prop->GetValue().GetBool() );
375 return;
376 }
377 }
378 }
379
380 if( aEvent.GetKeyCode() == WXK_RETURN || aEvent.GetKeyCode() == WXK_NUMPAD_ENTER )
381 {
382 m_grid->CommitChangesFromEditor();
383 /* don't skip this one; if we're not the last property we'll also go to the next row */
384 }
385
386 aEvent.Skip();
387}

References m_grid.

Referenced by PROPERTIES_PANEL().

◆ OnLanguageChanged()

void PROPERTIES_PANEL::OnLanguageChanged ( )

Definition at line 126 of file properties_panel.cpp.

127{
128 UpdateData();
129}
virtual void UpdateData()=0

References UpdateData().

Referenced by PCB_EDIT_FRAME::ShowChangedLanguage().

◆ onShow()

void PROPERTIES_PANEL::onShow ( wxShowEvent &  aEvent)
protected

Definition at line 353 of file properties_panel.cpp.

354{
355 if( aEvent.IsShown() )
356 UpdateData();
357}

References UpdateData().

Referenced by PROPERTIES_PANEL().

◆ Properties()

const std::vector< PROPERTY_BASE * > & PROPERTIES_PANEL::Properties ( ) const
inline

Definition at line 62 of file properties_panel.h.

63 {
64 return m_displayed;
65 }
std::vector< PROPERTY_BASE * > m_displayed

References m_displayed.

◆ PropertiesCount()

int PROPERTIES_PANEL::PropertiesCount ( ) const
inline

Definition at line 57 of file properties_panel.h.

58 {
59 return m_displayed.size();
60 }

References m_displayed.

◆ rebuildProperties()

void PROPERTIES_PANEL::rebuildProperties ( const SELECTION aSelection)
protectedvirtual

Generates the property grid for a given selection of items.

Calling this will remove any existing properties shown, causing visible flicker on some platforms and canceling any pending edits. Make sure to only call this when the group of selected items has actually changed.

Parameters
aSelectionis a set of items to show properties for.

Definition at line 132 of file properties_panel.cpp.

133{
134 if( *m_cachedSelection == aSelection )
135 {
136 updatePropertyValues( aSelection );
137 return;
138 }
139
140 *m_cachedSelection = aSelection;
141
142 if( m_grid->IsEditorFocused() )
143 m_grid->CommitChangesFromEditor();
144
145 m_grid->Clear();
146 m_displayed.clear();
147
148 if( aSelection.Empty() )
149 {
150 m_caption->SetLabel( _( "No objects selected" ) );
151 return;
152 }
153
154 // Get all the selected types
155 std::set<TYPE_ID> types;
156
157 for( EDA_ITEM* item : aSelection )
158 types.insert( TYPE_HASH( *item ) );
159
160 wxCHECK( !types.empty(), /* void */ );
161
162 if( aSelection.Size() > 1 )
163 {
164 m_caption->SetLabel( wxString::Format( _( "%d objects selected" ), aSelection.Size() ) );
165 }
166 else
167 {
168 m_caption->SetLabel( aSelection.Front()->GetFriendlyName() );
169 }
170
172 propMgr.SetUnits( m_frame->GetUserUnits() );
174
175 std::set<PROPERTY_BASE*> commonProps;
176 const PROPERTY_LIST& allProperties = propMgr.GetProperties( *types.begin() );
177 copy( allProperties.begin(), allProperties.end(), inserter( commonProps, commonProps.begin() ) );
178
179 PROPERTY_DISPLAY_ORDER displayOrder = propMgr.GetDisplayOrder( *types.begin() );
180
181 std::vector<wxString> groupDisplayOrder = propMgr.GetGroupDisplayOrder( *types.begin() );
182 std::set<wxString> groups( groupDisplayOrder.begin(), groupDisplayOrder.end() );
183
184 std::map<wxPGProperty*, int> pgPropOrders;
185 std::map<wxString, std::vector<wxPGProperty*>> pgPropGroups;
186
187 // Get all possible properties
188 for( const TYPE_ID& type : types )
189 {
190 const PROPERTY_LIST& itemProps = propMgr.GetProperties( type );
191
192 const PROPERTY_DISPLAY_ORDER& itemDisplayOrder = propMgr.GetDisplayOrder( type );
193
194 copy( itemDisplayOrder.begin(), itemDisplayOrder.end(),
195 inserter( displayOrder, displayOrder.begin() ) );
196
197 const std::vector<wxString>& itemGroups = propMgr.GetGroupDisplayOrder( type );
198
199 for( const wxString& group : itemGroups )
200 {
201 if( !groups.count( group ) )
202 {
203 groupDisplayOrder.emplace_back( group );
204 groups.insert( group );
205 }
206 }
207
208 for( auto it = commonProps.begin(); it != commonProps.end(); /* ++it in the loop */ )
209 {
210 if( !binary_search( itemProps.begin(), itemProps.end(), *it ) )
211 it = commonProps.erase( it );
212 else
213 ++it;
214 }
215 }
216
217 // Find a set of properties that is common to all selected items
218 for( PROPERTY_BASE* property : commonProps )
219 {
220 if( property->IsInternal() )
221 continue;
222
223 if( !propMgr.IsAvailableFor( TYPE_HASH( *aSelection.Front() ), property,
224 aSelection.Front() ) )
225 continue;
226
227 // Either determine the common value for a property or "<...>" to indicate multiple values
228 bool available;
229 bool writeable;
230 wxVariant commonVal;
231
232 available = extractValueAndWritability( aSelection, property, commonVal, writeable );
233
234 if( available )
235 {
236 wxPGProperty* pgProp = createPGProperty( property );
237
238 if( pgProp )
239 {
240 pgProp->SetValue( commonVal );
241 pgProp->Enable( writeable );
242 m_displayed.push_back( property );
243
244 wxASSERT( displayOrder.count( property ) );
245 pgPropOrders[pgProp] = displayOrder[property];
246 pgPropGroups[property->Group()].emplace_back( pgProp );
247 }
248 }
249 }
250
251 const wxString unspecifiedGroupCaption = _( "Basic Properties" );
252
253 for( const wxString& groupName : groupDisplayOrder )
254 {
255 if( !pgPropGroups.count( groupName ) )
256 continue;
257
258 std::vector<wxPGProperty*>& properties = pgPropGroups[groupName];
259 wxString groupCaption = wxGetTranslation( groupName );
260
261 auto groupItem = new wxPropertyCategory( groupName.IsEmpty() ? unspecifiedGroupCaption
262 : groupCaption );
263
264 m_grid->Append( groupItem );
265
266 std::sort( properties.begin(), properties.end(),
267 [&]( wxPGProperty*& aFirst, wxPGProperty*& aSecond )
268 {
269 return pgPropOrders[aFirst] < pgPropOrders[aSecond];
270 } );
271
272 for( wxPGProperty* property : properties )
273 m_grid->Append( property );
274 }
275
277}
bool extractValueAndWritability(const SELECTION &aSelection, PROPERTY_BASE *aProperty, wxVariant &aValue, bool &aWritable)
Processes a selection and determines whether the given property should be available or not and what t...
virtual void updatePropertyValues(const SELECTION &aSelection)
Updates the values shown in the property grid for the current selection.
virtual wxPGProperty * createPGProperty(const PROPERTY_BASE *aProperty) const =0
const PROPERTY_LIST & GetProperties(TYPE_ID aType) const
Return all properties for a specific type.
const PROPERTY_DISPLAY_ORDER & GetDisplayOrder(TYPE_ID aType) const
const std::vector< wxString > & GetGroupDisplayOrder(TYPE_ID aType) const
bool Empty() const
Checks if there is anything selected.
Definition: selection.h:109
std::vector< PROPERTY_BASE * > PROPERTY_LIST
Definition: property_mgr.h:48
std::map< PROPERTY_BASE *, int > PROPERTY_DISPLAY_ORDER
Definition: property_mgr.h:57
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:46
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200

References _, copy, createPGProperty(), SELECTION::Empty(), extractValueAndWritability(), Format(), SELECTION::Front(), PROPERTY_MANAGER::GetDisplayOrder(), EDA_ITEM::GetFriendlyName(), PROPERTY_MANAGER::GetGroupDisplayOrder(), EDA_BASE_FRAME::GetOriginTransforms(), PROPERTY_MANAGER::GetProperties(), UNITS_PROVIDER::GetUserUnits(), group, PROPERTY_MANAGER::Instance(), PROPERTY_MANAGER::IsAvailableFor(), m_cachedSelection, m_caption, m_displayed, m_frame, m_grid, RecalculateSplitterPos(), PROPERTY_MANAGER::SetTransforms(), PROPERTY_MANAGER::SetUnits(), SELECTION::Size(), TYPE_HASH, and updatePropertyValues().

Referenced by PCB_PROPERTIES_PANEL::UpdateData().

◆ RecalculateSplitterPos()

void PROPERTIES_PANEL::RecalculateSplitterPos ( )

Definition at line 390 of file properties_panel.cpp.

391{
393 m_grid->CenterSplitter();
394 else
395 m_grid->SetSplitterPosition( m_splitter_key_proportion * m_grid->GetSize().x );
396}

References m_grid, and m_splitter_key_proportion.

Referenced by PROPERTIES_PANEL(), rebuildProperties(), and SetSplitterProportion().

◆ SetSplitterProportion()

void PROPERTIES_PANEL::SetSplitterProportion ( float  aProportion)

Definition at line 399 of file properties_panel.cpp.

400{
401 m_splitter_key_proportion = aProportion;
403}

References m_splitter_key_proportion, and RecalculateSplitterPos().

◆ SplitterProportion()

float PROPERTIES_PANEL::SplitterProportion ( ) const
inline

Definition at line 70 of file properties_panel.h.

References m_splitter_key_proportion.

Referenced by PCB_EDIT_FRAME::SaveSettings().

◆ UpdateData()

virtual void PROPERTIES_PANEL::UpdateData ( )
pure virtual

◆ updatePropertyValues()

virtual void PROPERTIES_PANEL::updatePropertyValues ( const SELECTION aSelection)
inlineprotectedvirtual

Updates the values shown in the property grid for the current selection.

Does not add or remove properties from the display (

See also
rebuildProperties) This implies that aSelection must have the same contents as m_cachedSelection.
Parameters
aSelectionis the set of selected items.

Reimplemented in PCB_PROPERTIES_PANEL.

Definition at line 94 of file properties_panel.h.

94{}

Referenced by rebuildProperties().

◆ valueChanged()

virtual void PROPERTIES_PANEL::valueChanged ( wxPropertyGridEvent &  aEvent)
inlineprotectedvirtual

Reimplemented in PCB_PROPERTIES_PANEL.

Definition at line 100 of file properties_panel.h.

100{}

Referenced by PROPERTIES_PANEL().

◆ valueChanging()

virtual void PROPERTIES_PANEL::valueChanging ( wxPropertyGridEvent &  aEvent)
inlineprotectedvirtual

Definition at line 99 of file properties_panel.h.

99{}

Referenced by PROPERTIES_PANEL().

Member Data Documentation

◆ m_cachedSelection

std::unique_ptr<SELECTION> PROPERTIES_PANEL::m_cachedSelection
protected

A copy of the most recent selection passed to rebuildProperties.

Definition at line 133 of file properties_panel.h.

Referenced by PROPERTIES_PANEL(), and rebuildProperties().

◆ m_caption

wxStaticText* PROPERTIES_PANEL::m_caption
protected

Definition at line 127 of file properties_panel.h.

Referenced by PROPERTIES_PANEL(), and rebuildProperties().

◆ m_displayed

std::vector<PROPERTY_BASE*> PROPERTIES_PANEL::m_displayed
protected

Definition at line 124 of file properties_panel.h.

Referenced by Properties(), PropertiesCount(), and rebuildProperties().

◆ m_frame

EDA_BASE_FRAME* PROPERTIES_PANEL::m_frame
protected

Definition at line 126 of file properties_panel.h.

Referenced by extractValueAndWritability(), and rebuildProperties().

◆ m_grid

wxPropertyGrid* PROPERTIES_PANEL::m_grid
protected

◆ m_splitter_key_proportion

float PROPERTIES_PANEL::m_splitter_key_proportion
protected

Proportion of the grid column splitter that is used for the key column (0.0 - 1.0)

Definition at line 130 of file properties_panel.h.

Referenced by PROPERTIES_PANEL(), RecalculateSplitterPos(), SetSplitterProportion(), and SplitterProportion().


The documentation for this class was generated from the following files: