47 if( item && aProperty->
Name() ==
_HKI(
"Locked" ) )
52 aCommit->
Modify( generator );
56 generator->SetLocked(
false );
57 generator->SetLocked( item->
IsLocked() );
72 generator->EditStart(
this,
board(), commit );
73 generator->Update(
this,
board(), commit );
74 generator->EditFinish(
this,
board(), commit );
98 auto tuningPatternCondition =
105 if( generator->GetGeneratorType() == wxS(
"tuning_pattern" ) )
173 wxString generatorType = aEvent.
Parameter<wxString>();
178 if( generatorType == wxS(
"*" ) )
179 commitMsg =
_(
"Regenerate All" );
183 if( generatorType == wxS(
"*" ) || generator->GetGeneratorType() == generatorType )
185 if( commitMsg.IsEmpty() )
186 commitMsg.Printf(
_(
"Update %s" ), generator->GetPluralName() );
188 generator->EditStart(
this,
board(), &commit );
189 generator->Update(
this,
board(), &commit );
190 generator->EditFinish(
this,
board(), &commit );
192 commit.Push( commitMsg, commitFlags );
197 frame()->RefreshCanvas();
210 for(
int i = aCollector.
GetCount() - 1; i >= 0; --i )
215 aCollector.
Remove( item );
219 std::vector<BOARD_ITEM*> items;
223 if( item->IsBOARD_ITEM() )
224 items.push_back(
static_cast<BOARD_ITEM*
>( item ) );
227 std::vector<BOARD_ITEM*> members;
233 if( error.IsEmpty() )
235 error =
_(
"A microvia stack needs two or more microvias on the same net, each spanning "
236 "one layer step, with no gap between them." );
239 frame()->ShowInfoBarWarning( error );
251 if(
EDA_GROUP* existingGroup = item->GetParentGroup() )
258 commit.
Push(
_(
"Create Microvia Stack" ) );
262 frame()->RefreshCanvas();
279 for(
int i = aCollector.
GetCount() - 1; i >= 0; --i )
284 aCollector.
Remove( item );
293 generators.push_back( gen );
296#ifdef GENERATOR_ORDER
297 std::sort( generators.begin(), generators.end(),
300 return a->GetUpdateOrder() < b->GetUpdateOrder();
306 gen->EditStart(
this,
board(), &commit );
307 gen->Update(
this,
board(), &commit );
308 gen->EditFinish(
this,
board(), &commit );
310 commit.
Push(
_(
"Regenerate Selected" ), commitFlags );
314 frame()->RefreshCanvas();
331 frame()->RefreshCanvas();
340 wxCHECK( commit, 0 );
static TOOL_ACTION selectionClear
Clear the current selection.
void Push(const wxString &aMessage=wxEmptyString, int aCommitFlags=0) override
Execute the changes.
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
bool IsLocked() const override
int GetCount() const
Return the number of objects in the list.
void Remove(int aIndex)
Remove the item at aIndex (first position is 0).
Represent a set of changes (additions, deletions or modifications) of a data model (e....
COMMIT & Modify(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr, RECURSE_MODE aRecurse=RECURSE_MODE::NO_RECURSE)
Modify a given item in the model.
COMMIT & Add(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr)
Add a new item to the model.
int GetStatus(EDA_ITEM *aItem, BASE_SCREEN *aScreen=nullptr)
Returns status of an item.
A set of EDA_ITEMs (i.e., without duplicates).
void AddItem(EDA_ITEM *aItem)
Add item to group.
A base class for most all the KiCad significant classes used in schematics and boards.
virtual EDA_GROUP * GetParentGroup() const
KICAD_T Type() const
Returns the type of object.
static const TOOL_EVENT SelectedItemsModified
Selected item had a property changed (except movement)
Used when the right click button is pressed, or when the select tool is in effect.
Class that other classes need to inherit from, in order to be inspectable.
static TOOL_ACTION genFinishEdit
static TOOL_ACTION genStartEdit
static TOOL_ACTION genRemove
static TOOL_ACTION genCancelEdit
static TOOL_ACTION generatorsShowManager
static TOOL_ACTION genUpdateEdit
static TOOL_ACTION regenerateAll
static TOOL_ACTION regenerateAllTuning
Generator tool.
static TOOL_ACTION makeViaStack
static TOOL_ACTION regenerateSelected
The main frame for Pcbnew.
virtual void Remove(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit)=0
virtual void EditCancel(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit)=0
virtual wxString GetCommitMessage() const =0
virtual void EditStart(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit)=0
virtual bool Update(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit)=0
virtual void EditFinish(GENERATOR_TOOL *aTool, BOARD *aBoard, BOARD_COMMIT *aCommit)=0
A microvia stack: several single hop microvias, plus connecting traces for staggered stacks,...
static PCB_VIA_STACK * CreateFromItems(const std::vector< BOARD_ITEM * > &aItems, BOARD *aBoard, std::vector< BOARD_ITEM * > *aMembers=nullptr, wxString *aError=nullptr)
Build a stack from existing board items (microvias plus optional connecting traces).
const wxString & Name() const
static PROPERTY_MANAGER & Instance()
class PROPERTY_LISTENER_SUBSCRIPTION RegisterListener(TYPE_ID aType, PROPERTY_LISTENER aListenerFunc)
Register a listener for the given type and return a move-only subscription that auto-unregisters in i...
static bool ShowAlways(const SELECTION &aSelection)
The default condition function (always returns true).
std::deque< PCB_GENERATOR * > GENERATORS
#define TYPE_HASH(x)
Macro to generate unique identifier for a type.
@ PCB_GENERATOR_T
class PCB_GENERATOR, generator on a layer
@ PCB_VIA_T
class PCB_VIA, a via (like a track segment on a copper layer)
@ PCB_TRACE_T
class PCB_TRACK, a track segment (segment on a copper layer)
VECTOR2< int32_t > VECTOR2I