|
KiCad PCB EDA Suite
|
#include <properties_panel.h>
Classes | |
| struct | CATEGORY_BUTTON |
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 |
Public Attributes | |
| int | m_SuppressGridChangeEvents |
Protected Member Functions | |
| virtual void | rebuildProperties (const SELECTION &aSelection) |
| Generates the property grid for a given selection of items. | |
| 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) |
| virtual void | OnLanguageChanged (wxCommandEvent &aEvent) |
| virtual bool | isKeyEditable (const wxPGProperty *aPGProp) const |
| virtual bool | isKeyNameInUse (const wxString &aName) const |
| virtual void | onKeyRenamed (const wxString &aOldName, const wxString &aNewName) |
| virtual void | onLabelEditBegin (wxPropertyGridEvent &aEvent) |
| virtual void | onLabelEditEnding (wxPropertyGridEvent &aEvent) |
| virtual bool | buildContextMenu (wxMenu &aMenu, wxPGProperty *aPGProp) |
| virtual void | onNewItemLeftBlank (const wxString &aKey) |
| void | onRightClick (wxPropertyGridEvent &aEvent) |
| void | beginLabelEdit (const wxString &aKey, bool aStartBlank=false) |
| void | settlePendingLabelEdit () |
| Synchronously ends any in-progress label edit; potentially canceling a newly added row. | |
| virtual 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. | |
| bool | extractValueAndWritability (const SELECTION &aSelection, const wxString &aPropName, wxVariant &aValue, bool &aWritable, wxPGChoices &aChoices) |
| 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. | |
| void | addCategoryButton (const wxString &aGroupKey, const wxString &aTooltip, BITMAPS aBitmap, std::function< void()> aAction, std::function< bool()> aEnableFunc=nullptr, bool aForceCategory=false) |
| Registers an overlay button on a category caption row. | |
| void | updateCategoryButtons () |
| Updates overlay button visibility/positions; called after rebuilds and on scroll. | |
| void | hideCategoryButtons () |
| Hides all overlay buttons (used when no selection or a rebuild is deferred). | |
| void | positionCategoryButtons () |
| Find the caption row for the given untranslated group name, if present. | |
| wxPGProperty * | categoryForGroup (const wxString &aGroupKey) const |
Protected Attributes | |
| wxStaticText * | m_caption |
| std::vector< PROPERTY_BASE * > | m_displayed |
| wxPropertyGrid * | m_grid |
| EDA_BASE_FRAME * | m_frame |
| float | m_splitter_key_proportion |
| Proportion of the grid column splitter that is used for the key column (0.0 - 1.0) | |
| wxTimer | m_deferredRebuildTimer |
| Not CallAfter(): on macOS the pending-event queue is drained from inside tool events, where a deferred rebuild would only re-defer itself forever. | |
| SELECTION | m_deferredSelection |
| wxString | m_editingOriginalLabel |
| wxString | m_contextMenuPropertyName |
| std::vector< CATEGORY_BUTTON > | m_categoryButtons |
| bool | m_resolvingPendingKey = false |
| True while settling a pending label edit synchronously (see settlePendingLabelEdit). | |
| wxString | m_pendingNewKey |
| Key of a freshly-added blank field/custom property awaiting a name from the user. | |
Friends | |
| class | PROPERTIES_PANEL_GRID |
Definition at line 49 of file properties_panel.h.
| PROPERTIES_PANEL::PROPERTIES_PANEL | ( | wxWindow * | aParent, |
| EDA_BASE_FRAME * | aFrame ) |
Definition at line 79 of file properties_panel.cpp.
References _, KIUI::GetDockedPaneFont(), m_caption, m_deferredRebuildTimer, m_deferredSelection, m_frame, m_grid, PGM_BASE::m_PropertyGridInitialized, m_splitter_key_proportion, m_SuppressGridChangeEvents, onCharHook(), onLabelEditBegin(), onLabelEditEnding(), OnLanguageChanged(), onRightClick(), onShow(), Pgm(), positionCategoryButtons(), PROPERTIES_PANEL_GRID, rebuildProperties(), RecalculateSplitterPos(), valueChanged(), valueChanging(), and wxPGGlobalVars.
Referenced by FOOTPRINT_WIZARD_PROPERTIES_PANEL::FOOTPRINT_WIZARD_PROPERTIES_PANEL(), PCB_PROPERTIES_PANEL::PCB_PROPERTIES_PANEL(), and SCH_PROPERTIES_PANEL::SCH_PROPERTIES_PANEL().
|
virtual |
Definition at line 216 of file properties_panel.cpp.
References m_frame, and OnLanguageChanged().
|
protected |
Registers an overlay button on a category caption row.
The button is shown when its category row is on-screen and selection-appropriate (the optional enable predicate is consulted; it is re-evaluated on every rebuild).
TODO it would be nice to remove this hack by getting upstream wxWidgets to support customizing/subclassing the property group widgets
| aGroupKey | is the untranslated group name (e.g. _HKI( "Fields" )). |
| aTooltip | is the tooltip text (translated by the caller). |
| aBitmap | is the icon shown on the button. |
| aAction | is invoked when the button is clicked. |
| aEnableFunc | optionally controls visibility (evaluated on each rebuild). |
| aForceCategory | optionally forces the category caption row to be emitted during rebuilds (only when aEnableFunc, if set, returns true). |
Definition at line 938 of file properties_panel.cpp.
References KiBitmapBundle(), m_categoryButtons, m_grid, and BITMAP_BUTTON::SetBitmap().
Referenced by PCB_PROPERTIES_PANEL::PCB_PROPERTIES_PANEL(), and SCH_PROPERTIES_PANEL::SCH_PROPERTIES_PANEL().
|
inlinevirtual |
Reimplemented in PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 59 of file properties_panel.h.
|
protected |
Definition at line 792 of file properties_panel.cpp.
References m_grid.
Referenced by PCB_PROPERTIES_PANEL::addBlankCustomProperty(), SCH_PROPERTIES_PANEL::addBlankCustomProperty(), PCB_PROPERTIES_PANEL::addBlankField(), and SCH_PROPERTIES_PANEL::addBlankField().
|
inlineprotectedvirtual |
Reimplemented in PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 106 of file properties_panel.h.
Referenced by onRightClick().
|
protected |
Definition at line 968 of file properties_panel.cpp.
References m_grid.
Referenced by positionCategoryButtons().
|
protectedpure virtual |
Implemented in FOOTPRINT_WIZARD_PROPERTIES_PANEL, PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Referenced by rebuildProperties().
|
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.
| aSelection | is a set of EDA_ITEMs to process |
| aProperty | is the property to look up |
| aValue | will be filled with the value common to the selection, or null if different |
| aWritable | will be set to whether or not the property can be written for the selection |
Definition at line 563 of file properties_panel.cpp.
References PROPERTY_BASE::GetChoices(), getItemValue(), PROPERTY_MANAGER::GetProperty(), PROPERTY_MANAGER::Instance(), PROPERTY_MANAGER::IsAvailableFor(), PROPERTY_MANAGER::IsWriteableFor(), and TYPE_HASH.
Referenced by rebuildProperties().
|
protectedvirtual |
Utility to fetch a property value and convert to wxVariant Precondition: aItem is known to have property aProperty.
Reimplemented in PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 532 of file properties_panel.cpp.
References INSPECTABLE::Get(), KIGFX::VIEW_ITEM::GetClass(), PROPERTY_BASE::HasChoices(), and PROPERTY_BASE::Name().
Referenced by extractValueAndWritability(), PCB_PROPERTIES_PANEL::getItemValue(), and SCH_PROPERTIES_PANEL::getItemValue().
|
inline |
Definition at line 61 of file properties_panel.h.
References m_grid.
|
protected |
Hides all overlay buttons (used when no selection or a rebuild is deferred).
Definition at line 988 of file properties_panel.cpp.
References m_categoryButtons.
Referenced by rebuildProperties().
|
inlineprotectedvirtual |
Reimplemented in PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 99 of file properties_panel.h.
Referenced by onLabelEditBegin(), and onLabelEditEnding().
|
inlineprotectedvirtual |
Reimplemented in PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 100 of file properties_panel.h.
Referenced by onLabelEditEnding(), and settlePendingLabelEdit().
|
protected |
Definition at line 814 of file properties_panel.cpp.
References m_grid.
Referenced by PROPERTIES_PANEL().
|
inlineprotectedvirtual |
Reimplemented in PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 101 of file properties_panel.h.
Referenced by onLabelEditEnding(), and settlePendingLabelEdit().
|
protectedvirtual |
Definition at line 643 of file properties_panel.cpp.
References isKeyEditable(), and m_editingOriginalLabel.
Referenced by PROPERTIES_PANEL().
|
protectedvirtual |
Definition at line 658 of file properties_panel.cpp.
References isKeyEditable(), isKeyNameInUse(), m_editingOriginalLabel, m_grid, m_pendingNewKey, m_resolvingPendingKey, onKeyRenamed(), and onNewItemLeftBlank().
Referenced by PROPERTIES_PANEL().
|
protectedvirtual |
Reimplemented in SCH_PROPERTIES_PANEL.
Definition at line 222 of file properties_panel.cpp.
References m_displayed, m_grid, and UpdateData().
Referenced by SCH_PROPERTIES_PANEL::OnLanguageChanged(), PROPERTIES_PANEL(), and ~PROPERTIES_PANEL().
|
inlineprotectedvirtual |
Reimplemented in PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 107 of file properties_panel.h.
Referenced by onLabelEditEnding(), and settlePendingLabelEdit().
|
protected |
Definition at line 740 of file properties_panel.cpp.
References buildContextMenu(), and m_contextMenuPropertyName.
Referenced by PROPERTIES_PANEL().
|
protected |
Definition at line 634 of file properties_panel.cpp.
References UpdateData().
Referenced by PROPERTIES_PANEL().
|
protected |
Find the caption row for the given untranslated group name, if present.
Definition at line 995 of file properties_panel.cpp.
References categoryForGroup(), m_categoryButtons, and m_grid.
Referenced by PROPERTIES_PANEL(), and updateCategoryButtons().
|
inline |
Definition at line 71 of file properties_panel.h.
References m_displayed.
|
inline |
Definition at line 66 of file properties_panel.h.
References m_displayed.
|
protectedvirtual |
Generates the property grid for a given selection of items.
| aSelection | is a set of items to show properties for. |
Reimplemented in PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 249 of file properties_panel.cpp.
References _, _HKI, createPGProperty(), dummy, SELECTION::Empty(), extractValueAndWritability(), FRAME_FOOTPRINT_EDITOR, FRAME_PCB_EDITOR, FRAME_SCH, FRAME_SCH_SYMBOL_EDITOR, SELECTION::Front(), PROPERTY_MANAGER::GetDisplayOrder(), EDA_ITEM::GetFriendlyName(), PROPERTY_MANAGER::GetGroupDisplayOrder(), PROPERTY_MANAGER::GetProperties(), PROPERTY_MANAGER::GetProperty(), group, hideCategoryButtons(), PROPERTY_MANAGER::Instance(), m_caption, m_categoryButtons, m_deferredRebuildTimer, m_deferredSelection, m_displayed, m_frame, m_grid, PROPERTY_BASE::Name(), name, PROPERTIES_PANEL_GRID, RecalculateSplitterPos(), SELECTION::Size(), TYPE_HASH, and updateCategoryButtons().
Referenced by PROPERTIES_PANEL(), PCB_PROPERTIES_PANEL::rebuildProperties(), and SCH_PROPERTIES_PANEL::rebuildProperties().
| void PROPERTIES_PANEL::RecalculateSplitterPos | ( | ) |
Definition at line 922 of file properties_panel.cpp.
References m_grid, and m_splitter_key_proportion.
Referenced by PROPERTIES_PANEL(), FOOTPRINT_WIZARD_PROPERTIES_PANEL::RebuildParameters(), rebuildProperties(), and SetSplitterProportion().
| void PROPERTIES_PANEL::SetSplitterProportion | ( | float | aProportion | ) |
Definition at line 931 of file properties_panel.cpp.
References m_splitter_key_proportion, and RecalculateSplitterPos().
|
protected |
Synchronously ends any in-progress label edit; potentially canceling a newly added row.
Definition at line 767 of file properties_panel.cpp.
References isKeyNameInUse(), m_grid, m_pendingNewKey, m_resolvingPendingKey, onKeyRenamed(), and onNewItemLeftBlank().
Referenced by PCB_PROPERTIES_PANEL::addBlankCustomProperty(), SCH_PROPERTIES_PANEL::addBlankCustomProperty(), PCB_PROPERTIES_PANEL::addBlankField(), and SCH_PROPERTIES_PANEL::addBlankField().
|
inline |
Definition at line 79 of file properties_panel.h.
References m_splitter_key_proportion.
|
protected |
Updates overlay button visibility/positions; called after rebuilds and on scroll.
Definition at line 982 of file properties_panel.cpp.
References positionCategoryButtons().
Referenced by rebuildProperties().
|
pure virtual |
Implemented in FOOTPRINT_WIZARD_PROPERTIES_PANEL, PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Referenced by OnLanguageChanged(), and onShow().
|
inlineprotectedvirtual |
Reimplemented in FOOTPRINT_WIZARD_PROPERTIES_PANEL, PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 93 of file properties_panel.h.
Referenced by PROPERTIES_PANEL().
|
inlineprotectedvirtual |
Reimplemented in FOOTPRINT_WIZARD_PROPERTIES_PANEL, PCB_PROPERTIES_PANEL, and SCH_PROPERTIES_PANEL.
Definition at line 92 of file properties_panel.h.
Referenced by PROPERTIES_PANEL().
|
friend |
Definition at line 51 of file properties_panel.h.
References PROPERTIES_PANEL_GRID.
Referenced by PROPERTIES_PANEL(), PROPERTIES_PANEL_GRID, and rebuildProperties().
|
protected |
Definition at line 166 of file properties_panel.h.
Referenced by FOOTPRINT_WIZARD_PROPERTIES_PANEL::FOOTPRINT_WIZARD_PROPERTIES_PANEL(), PROPERTIES_PANEL(), and rebuildProperties().
|
protected |
Definition at line 200 of file properties_panel.h.
Referenced by addCategoryButton(), hideCategoryButtons(), positionCategoryButtons(), and rebuildProperties().
|
protected |
Definition at line 186 of file properties_panel.h.
Referenced by PCB_PROPERTIES_PANEL::onContextMenu(), SCH_PROPERTIES_PANEL::onContextMenu(), and onRightClick().
|
protected |
Not CallAfter(): on macOS the pending-event queue is drained from inside tool events, where a deferred rebuild would only re-defer itself forever.
Definition at line 181 of file properties_panel.h.
Referenced by PROPERTIES_PANEL(), and rebuildProperties().
|
protected |
Definition at line 182 of file properties_panel.h.
Referenced by PROPERTIES_PANEL(), and rebuildProperties().
|
protected |
Definition at line 172 of file properties_panel.h.
Referenced by OnLanguageChanged(), Properties(), PropertiesCount(), and rebuildProperties().
|
protected |
Definition at line 184 of file properties_panel.h.
Referenced by onLabelEditBegin(), and onLabelEditEnding().
|
protected |
Definition at line 174 of file properties_panel.h.
Referenced by PROPERTIES_PANEL(), rebuildProperties(), and ~PROPERTIES_PANEL().
|
protected |
Definition at line 173 of file properties_panel.h.
Referenced by addCategoryButton(), PCB_PROPERTIES_PANEL::applyConfirmedScale(), beginLabelEdit(), categoryForGroup(), GetPropertyGrid(), onCharHook(), onLabelEditEnding(), OnLanguageChanged(), positionCategoryButtons(), PROPERTIES_PANEL(), FOOTPRINT_WIZARD_PROPERTIES_PANEL::RebuildParameters(), rebuildProperties(), RecalculateSplitterPos(), and settlePendingLabelEdit().
|
protected |
Key of a freshly-added blank field/custom property awaiting a name from the user.
Definition at line 206 of file properties_panel.h.
Referenced by PCB_PROPERTIES_PANEL::addBlankCustomProperty(), SCH_PROPERTIES_PANEL::addBlankCustomProperty(), PCB_PROPERTIES_PANEL::addBlankField(), SCH_PROPERTIES_PANEL::addBlankField(), onLabelEditEnding(), and settlePendingLabelEdit().
|
protected |
True while settling a pending label edit synchronously (see settlePendingLabelEdit).
Definition at line 203 of file properties_panel.h.
Referenced by onLabelEditEnding(), and settlePendingLabelEdit().
|
protected |
Proportion of the grid column splitter that is used for the key column (0.0 - 1.0)
Definition at line 177 of file properties_panel.h.
Referenced by PROPERTIES_PANEL(), RecalculateSplitterPos(), SetSplitterProportion(), and SplitterProportion().
| int PROPERTIES_PANEL::m_SuppressGridChangeEvents |
Definition at line 169 of file properties_panel.h.
Referenced by PROPERTIES_PANEL(), PCB_PROPERTIES_PANEL::valueChanged(), SCH_PROPERTIES_PANEL::valueChanged(), FOOTPRINT_WIZARD_PROPERTIES_PANEL::valueChanging(), PCB_PROPERTIES_PANEL::valueChanging(), and SCH_PROPERTIES_PANEL::valueChanging().