KiCad PCB EDA Suite
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
mocks.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 The 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
24#include <kiface_base.h>
25#include <confirm.h>
26#include <pcb_edit_frame.h>
27#include <eda_dde.h>
28#include <wx/file.h>
29#include <wx/snglinst.h>
30#include <wx/app.h>
31#include <board.h>
32#include <fp_lib_table.h>
34#include <footprint.h>
35#include <tools/pcb_actions.h>
37#include <router/router_tool.h>
38#include <dialog_find.h>
40#include <zone_filler.h>
41
43
44
46 DIALOG_FIND_BASE( aParent )
47{
48 // these members are initialized to avoid warnings about non initialized vars
49 m_frame = aParent;
50 m_hitList.clear();
51 m_it = m_hitList.begin();
52 m_upToDate = false;
53}
54
55void DIALOG_FIND::onFindNextClick( wxCommandEvent& aEvent )
56{
57}
58
59void DIALOG_FIND::onFindPreviousClick( wxCommandEvent& aEvent )
60{
61}
62
63void DIALOG_FIND::onSearchAgainClick( wxCommandEvent& aEvent )
64{
65}
66
67void DIALOG_FIND::onTextEnter( wxCommandEvent& event )
68{
69}
70
71void DIALOG_FIND::onShowSearchPanel( wxHyperlinkEvent& event )
72{
73}
74
75void DIALOG_FIND::OnCloseButtonClick( wxCommandEvent& aEvent )
76{
77}
78
79bool DIALOG_FIND::Show( bool show )
80{
81 return true;
82}
83
84void DIALOG_FIND::OnClose( wxCloseEvent& aEvent )
85{
86}
87
88
89DIALOG_FIND_BASE::DIALOG_FIND_BASE( wxWindow* parent, wxWindowID id, const wxString& title,
90 const wxPoint& pos, const wxSize& size, long style ) :
91 DIALOG_SHIM( parent, id, title, pos, size, style )
92{
93 // these members are initialized only to avoid warnings about non initialized vars
94 searchStringLabel = nullptr;
95 m_searchCombo = nullptr;
96 m_matchCase = nullptr;
97 m_matchWords = nullptr;
98 m_wildcards = nullptr;
99 m_wrap = nullptr;
100 m_includeValues = nullptr;
101 m_includeReferences = nullptr;
102 m_includeTexts = nullptr;
103 m_includeMarkers = nullptr;
104 m_includeNets = nullptr;
105 m_findNext = nullptr;
106 m_findPrevious = nullptr;
107 m_searchAgain = nullptr;
108 m_closeButton = nullptr;
109 m_status = nullptr;
110}
111
112
114{
115}
116
117
119 const wxString& title,
120 const wxPoint& pos, const wxSize& size,
121 long style ) :
122 DIALOG_SHIM( parent, id, title, pos, size, style )
123{
124 // these members are initialized only to avoid warnings about non initialized vars
125 m_Include_Modules = nullptr;
126 m_Include_PcbTexts = nullptr;
127 m_IncludeLockedModules = nullptr;
128 m_Include_Draw_Items = nullptr;
129 m_Include_Tracks = nullptr;
130 m_Include_Vias = nullptr;
131 m_Include_Edges_Items = nullptr;
132 m_Include_Zones = nullptr;
133 m_sdbSizer1 = nullptr;
134 m_sdbSizer1OK = nullptr;
135 m_sdbSizer1Cancel = nullptr;
136}
137
138
140{
141}
142
143
146 m_options( aOptions )
147{
148 // silence another compiler warning about m_options not being used
149 if( m_options.includeModules )
150 {
151 }
152}
153
154
155void DIALOG_FILTER_SELECTION::checkBoxClicked( wxCommandEvent& aEvent )
156{
157}
158
159
160void DIALOG_FILTER_SELECTION::allItemsClicked( wxCommandEvent& aEvent )
161{
162}
163
164
166{
167 return true;
168}
169
170
172{
173}
174
175
176
178
179
184{
185public:
187};
188
189
191 SELECTION_TOOL( "pcbnew.InteractiveSelection" ),
192 m_frame( NULL ),
193 m_enteredGroup( NULL ),
194 m_nonModifiedCursor( KICURSOR::ARROW ),
195 m_priv( nullptr )
196{
197}
198
199
201{
202}
203
204
206{
207 return true;
208}
209
210
211void PCB_SELECTION_TOOL::Reset( RESET_REASON aReason )
212{
213}
214
215
216int PCB_SELECTION_TOOL::Main( const TOOL_EVENT& aEvent )
217{
218 return 0;
219}
220
221
223{
224}
225
226
227void PCB_SELECTION_TOOL::ExitGroup( bool aSelectGroup )
228{
229}
230
231
233{
234 return m_selection;
235}
236
237
239 bool aConfirmLockedItems )
240{
241 return m_selection;
242}
243
244
246{
247 return GENERAL_COLLECTORS_GUIDE( LSET(), PCB_LAYER_ID::UNDEFINED_LAYER, nullptr );
248}
249
250
251bool PCB_SELECTION_TOOL::selectPoint( const VECTOR2I& aWhere, bool aOnDrag,
252 bool* aSelectionCancelledFlag,
253 CLIENT_SELECTION_FILTER aClientFilter )
254{
255 return false;
256}
257
258
259bool PCB_SELECTION_TOOL::selectCursor( bool aForceSelect, CLIENT_SELECTION_FILTER aClientFilter )
260{
261 return false;
262}
263
264
266{
267 return false;
268}
269
270
272{
273 return 0;
274}
275
276
278{
279 return 0;
280}
281
282
283int PCB_SELECTION_TOOL::SelectAll( const TOOL_EVENT& aEvent )
284{
285 return 0;
286}
287
288
290{
291 return 0;
292}
293
294
296 const std::vector<BOARD_CONNECTED_ITEM*>& aStartItems, STOP_CONDITION aStopCondition )
297{
298}
299
300
301void PCB_SELECTION_TOOL::SelectAllItemsOnNet( int aNetCode, bool aSelect )
302{
303}
304
305
306int PCB_SELECTION_TOOL::selectNet( const TOOL_EVENT& aEvent )
307{
308 return 0;
309}
310
311
312void PCB_SELECTION_TOOL::selectAllItemsOnSheet( wxString& aSheetPath )
313{
314}
315
316
318{
319}
320
321
323{
324 return 0;
325}
326
327
329{
330 return 0;
331}
332
333
335{
336 return false;
337}
338
339
347static bool itemIsIncludedByFilter( const BOARD_ITEM& aItem, const BOARD& aBoard,
348 const DIALOG_FILTER_SELECTION::OPTIONS& aFilterOptions )
349{
350 return false;
351}
352
353
355{
356 return 0;
357}
358
359
360void PCB_SELECTION_TOOL::FilterCollectedItems( GENERAL_COLLECTOR& aCollector, bool aMultiSelect )
361{
362}
363
364
365bool PCB_SELECTION_TOOL::itemPassesFilter( BOARD_ITEM* aItem, bool aMultiSelect )
366{
367 return true;
368}
369
370
371void PCB_SELECTION_TOOL::ClearSelection( bool aQuietMode )
372{
373}
374
375
377{
378}
379
380
381bool PCB_SELECTION_TOOL::Selectable( const BOARD_ITEM* aItem, bool checkVisibilityOnly ) const
382{
383 return false;
384}
385
386
387bool PCB_SELECTION_TOOL::selectionContains( const VECTOR2I& aPoint ) const
388{
389 return false;
390}
391
393 const VECTOR2I& aWhere ) const
394{
395}
396
397
399{
400 return 0;
401}
402
403
405{
406}
407
408
410{
411}
412
413
415{
416}
417
418
419void PCB_SELECTION_TOOL::highlight( EDA_ITEM* aItem, int aHighlightMode,
420 SELECTION* aGroup )
421{
422}
423
424
425void PCB_SELECTION_TOOL::unhighlight( EDA_ITEM* aItem, int aHighlightMode,
426 SELECTION* aGroup )
427{
428}
429
432 const wxString& aCommitMessage, int aOptions )
433{
434}
435
436
438{
439 return true;
440}
441
442
443void PCB_TOOL_BASE::Reset( RESET_REASON aReason )
444{
445}
446
447
449{
450}
451
452
454{
455 return false;
456}
457
458
460{
461}
462
463
465 PCB_TOOL_BASE( "pcbnew.ZoneFiller" ),
466 m_fillInProgress( false )
467{
468}
469
470
472{
473}
474
475
476void ZONE_FILLER_TOOL::Reset( RESET_REASON aReason )
477{
478}
479
480
482{
483}
484
485
487{
489
490 return disp;
491}
492
494{
495 return nullptr;
496}
497
498
500{
501 static PCB_SELECTION sel;
502
503 return sel;
504}
505
506
508{
509 static PCB_SELECTION sel;
510
511 return sel;
512}
513
515{
516 return BOX2I();
517}
518
519
520EDA_ITEM* PCB_SELECTION::GetTopLeftItem( bool onlyModules ) const
521{
522 return nullptr;
523}
524
525
526const std::vector<KIGFX::VIEW_ITEM*> PCB_SELECTION::updateDrawList() const
527{
528 std::vector<VIEW_ITEM*> items;
529
530 return items;
531}
532
533
534#if 0
536
541TRACK_BALL::TRACK_BALL(float x) : CAMERA(x) {};
544
545#endif
546
548
550{
551 return nullptr;
552}
553
554
556{
557 return 0;
558}
BOX2< VECTOR2I > BOX2I
Definition: box2.h:922
A base class for any item which can be embedded within the BOARD container class, and therefore insta...
Definition: board_item.h:78
Information pertinent to a Pcbnew printed circuit board.
Definition: board.h:297
A class used to derive camera objects from.
Definition: camera.h:103
Class DIALOG_FILTER_SELECTION_BASE.
DIALOG_FILTER_SELECTION_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Filter Selected Items"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
void checkBoxClicked(wxCommandEvent &aEvent) override
DIALOG_FILTER_SELECTION(PCB_BASE_FRAME *aParent, OPTIONS &aOptions)
Create the filter selection dialog.
void allItemsClicked(wxCommandEvent &aEvent) override
Class DIALOG_FIND_BASE.
DIALOG_FIND_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=wxEmptyString, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE)
void onTextEnter(wxCommandEvent &event) override
DIALOG_FIND(PCB_EDIT_FRAME *aParent)
Definition: dialog_find.cpp:55
bool Show(bool show=true) override
The Show method is overridden to make the search combobox focused by default.
void onFindNextClick(wxCommandEvent &event) override
void onSearchAgainClick(wxCommandEvent &event) override
void onShowSearchPanel(wxHyperlinkEvent &event) override
void onFindPreviousClick(wxCommandEvent &event) override
void OnClose(wxCloseEvent &event) override
void OnCloseButtonClick(wxCommandEvent &aEvent) override
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
Definition: dialog_shim.h:52
A base class for most all the KiCad significant classes used in schematics and boards.
Definition: eda_item.h:95
A general implementation of a COLLECTORS_GUIDE.
Definition: collectors.h:319
Used when the right click button is pressed, or when the select tool is in effect.
Definition: collectors.h:202
LSET is a set of PCB_LAYER_IDs.
Definition: lset.h:37
Base PCB main window class for Pcbnew, Gerbview, and CvPcb footprint viewer.
The main frame for Pcbnew.
Private implementation of firewalled private data.
DIALOG_FILTER_SELECTION::OPTIONS m_filterOpts
The selection tool: currently supports:
void highlight(EDA_ITEM *aItem, int aHighlightMode, SELECTION *aGroup=nullptr) override
Highlight the item visually.
int selectNet(const TOOL_EVENT &aEvent)
Select all copper connections belonging to the same net(s) as the items in the selection.
int filterSelection(const TOOL_EVENT &aEvent)
Return true if the given item passes the current SELECTION_FILTER_OPTIONS.
void Reset(RESET_REASON aReason) override
Bring the tool to a known, initial state.
void GuessSelectionCandidates(GENERAL_COLLECTOR &aCollector, const VECTOR2I &aWhere) const
Try to guess best selection candidates in case multiple items are clicked, by doing some brain-dead h...
bool itemPassesFilter(BOARD_ITEM *aItem, bool aMultiSelect)
bool selectionContains(const VECTOR2I &aPoint) const
void select(EDA_ITEM *aItem) override
Take necessary action mark an item as selected.
bool selectCursor(bool aForceSelect=false, CLIENT_SELECTION_FILTER aClientFilter=nullptr)
Select an item under the cursor unless there is something already selected.
PCB_SELECTION & RequestSelection(CLIENT_SELECTION_FILTER aClientFilter, bool aConfirmLockedItems=false)
Return the current selection, filtered according to aClientFilter.
const GENERAL_COLLECTORS_GUIDE getCollectorsGuide() const
bool Selectable(const BOARD_ITEM *aItem, bool checkVisibilityOnly=false) const
void FilterCollectedItems(GENERAL_COLLECTOR &aCollector, bool aMultiSelect)
Apply the SELECTION_FITLER_OPTIONS to the collector.
bool selectPoint(const VECTOR2I &aWhere, bool aOnDrag=false, bool *aSelectionCancelledFlag=nullptr, CLIENT_SELECTION_FILTER aClientFilter=nullptr)
Select an item pointed by the parameter aWhere.
void selectAllItemsOnSheet(wxString &aSheetPath)
Select all items with the given sheet timestamp/UUID name (the sheet path).
void setTransitions() override
Zoom the screen to center and fit the current selection.
int expandConnection(const TOOL_EVENT &aEvent)
Expand the current connected-item selection to the next boundary (junctions, pads,...
virtual bool ctrlClickHighlights() override
Determine if ctrl-click is highlight net or XOR selection.
int selectSheetContents(const TOOL_EVENT &aEvent)
Select all footprints belonging to same hierarchical sheet as the selected footprint (same sheet path...
int selectSameSheet(const TOOL_EVENT &aEvent)
Set selection to items passed by parameter and connected nets (optionally).
void EnterGroup()
Enter the group at the head of the current selection.
void zoomFitSelection()
Zoom the screen to fit the bounding box for cross probing/selection sync.
void selectAllConnectedTracks(const std::vector< BOARD_CONNECTED_ITEM * > &aStartItems, STOP_CONDITION aStopCondition)
Select connected tracks and vias.
int CursorSelection(const TOOL_EVENT &aEvent)
int ClearSelection(const TOOL_EVENT &aEvent)
PCB_SELECTION & GetSelection()
int Main(const TOOL_EVENT &aEvent)
The main loop.
void RebuildSelection()
Rebuild the selection from the EDA_ITEMs' selection flags.
int updateSelection(const TOOL_EVENT &aEvent)
Event handler to update the selection VIEW_ITEM.
bool Init() override
Init() is called once upon a registration of the tool.
void SelectAllItemsOnNet(int aNetCode, bool aSelect=true)
Select all items with the given net code.
bool selectMultiple()
Handle drawing a selection box that allows one to select many items at the same time.
void ExitGroup(bool aSelectGroup=false)
Leave the currently-entered group.
void unselect(EDA_ITEM *aItem) override
Take necessary action mark an item as unselected.
int SelectAll(const TOOL_EVENT &aEvent)
Unselect all items on the board.
PCB_SELECTION m_selection
void unhighlight(EDA_ITEM *aItem, int aHighlightMode, SELECTION *aGroup=nullptr) override
Unhighlight the item visually.
EDA_ITEM * GetTopLeftItem(bool aFootprintsOnly=false) const override
BOX2I GetBoundingBox() const override
const std::vector< KIGFX::VIEW_ITEM * > updateDrawList() const override
virtual bool Is45Limited() const
Should the tool use its 45° mode option?
PCB_DRAW_PANEL_GAL * canvas() const
PCBNEW_SETTINGS::DISPLAY_OPTIONS & displayOptions() const
virtual void setTransitions() override
This method is meant to be overridden in order to specify handlers for events.
virtual bool Init() override
Init() is called once upon a registration of the tool.
virtual void Reset(RESET_REASON aReason) override
Bring the tool to a known, initial state.
void doInteractiveItemPlacement(const TOOL_EVENT &aTool, INTERACTIVE_PLACER_BASE *aPlacer, const wxString &aCommitMessage, int aOptions=IPO_ROTATE|IPO_FLIP|IPO_REPEAT)
Helper function for performing a common interactive idiom: wait for a left click, place an item there...
const PCB_SELECTION & selection() const
static void NeighboringSegmentFilter(const VECTOR2I &aPt, GENERAL_COLLECTOR &aCollector, PCB_SELECTION_TOOL *aSelTool)
Generic, UI-independent tool event.
Definition: tool_event.h:168
TRACK_BALL(float aInitialDistance)
Definition: track_ball.cpp:42
void Reset(RESET_REASON aReason) override
Bring the tool to a known, initial state.
void setTransitions() override
This method is meant to be overridden in order to specify handlers for events.
This file is part of the common library.
KICURSOR
Definition: cursors.h:34
DDE server & client.
const FAB_LAYER_COLOR * GetColorStandardList()
Definition: mocks.cpp:549
int GetColorStandardListCount()
Definition: mocks.cpp:555
static bool itemIsIncludedByFilter(const BOARD_ITEM &aItem, const BOARD &aBoard, const DIALOG_FILTER_SELECTION::OPTIONS &aFilterOptions)
Function itemIsIncludedByFilter()
Definition: mocks.cpp:347
FP_LIB_TABLE GFootprintTable
The global footprint library table.
Definition: mocks.cpp:42
OBJECT_2D_TYPE
Definition: object_2d.h:45
std::function< void(const VECTOR2I &, GENERAL_COLLECTOR &, PCB_SELECTION_TOOL *)> CLIENT_SELECTION_FILTER
BBOX_3D()
Create with default values a bounding box (not initialized)
Definition: bbox_3d.cpp:37
~BBOX_3D()
Definition: bbox_3d.cpp:56
Struct that will be set with the result of the user choices in the dialog.