KiCad PCB EDA Suite
Loading...
Searching...
No Matches
pcbnew_jobs_handler.h
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 (C) 2022 Mark Roszko <[email protected]>
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#ifndef PCBNEW_JOBS_HANDLER_H
22#define PCBNEW_JOBS_HANDLER_H
23
24#include <jobs/job_dispatcher.h>
25#include <pcb_plot_params.h>
27
28class KIWAY;
29class BOARD;
31class FOOTPRINT;
37class TOOL_MANAGER;
38class REPORTER;
39class wxWindow;
40
42
43namespace KICAD_DIFF
44{
46struct DOCUMENT_DIFF;
47} // namespace KICAD_DIFF
48
50{
51public:
52 PCBNEW_JOBS_HANDLER( KIWAY* aKiway );
53 virtual ~PCBNEW_JOBS_HANDLER();
54
55 int JobExportBom( JOB* aJob );
56 int JobExportStep( JOB* aJob );
57 int JobExportRender( JOB* aJob );
58 int JobExportSvg( JOB* aJob );
59 int JobExportDxf( JOB* aJob );
60 int JobExportPdf( JOB* aJob );
61 int JobExportPng( JOB* aJob );
62 int JobExportPs( JOB* aJob );
63 int JobExportGerber( JOB* aJob );
64 int JobExportGerbers( JOB* aJob );
65 int JobExportGencad( JOB* aJob );
66 int JobExportSpecctraDsn( JOB* aJob );
67 int JobExportDrill( JOB* aJob );
68 int JobExportPos( JOB* aJob );
69 int JobExportFpUpgrade( JOB* aJob );
70 int JobExportFpSvg( JOB* aJob );
71 int JobExportDrc( JOB* aJob );
72 int JobExportIpc2581( JOB* aJob );
73 int JobExportOdb( JOB* aJob );
74 int JobExportIdf( JOB* aJob );
75 int JobExportIpcD356( JOB* aJob );
76 int JobExportStats( JOB* aJob );
77 int JobExportStackup( JOB* aJob );
78 int JobUpgrade( JOB* aJob );
79 int JobDowngrade( JOB* aJob );
80 int JobImport( JOB* aJob );
81 int JobDiff( JOB* aJob );
82 int JobFpDiff( JOB* aJob );
83
86 int RunMerge( KICAD_DIFF::DOC_KIND aKind, const wxString& aAncestor, const wxString& aOurs,
87 const wxString& aTheirs, const wxString& aOutput, bool aInteractive,
88 bool aSingleFile, REPORTER* aReporter );
89 int OpenDiffDialog( KICAD_DIFF::DOC_KIND aKind, const wxString& aFileA, const wxString& aFileB,
90 const wxString& aLabelA, const wxString& aLabelB, wxWindow* aParent,
91 REPORTER* aReporter );
92
96 const wxString& aFileB, WIDGET_DIFF_CANVAS* aBefore,
98 REPORTER* aReporter );
99
100private:
101 int runPcbMerge( const wxString& aAncestor, const wxString& aOurs, const wxString& aTheirs,
102 const wxString& aOutput, bool aInteractive );
103 int runFpLibMerge( const wxString& aAncestor, const wxString& aOurs, const wxString& aTheirs,
104 const wxString& aOutput, bool aSingleFile );
105
106public:
107
112 void ClearCachedBoard();
113
114private:
115 BOARD* getBoard( const wxString& aPath = wxEmptyString );
116 void refillFabZones( const JOB_EXPORT_PCB_FAB& aJob, BOARD* aBoard );
117 LSEQ convertLayerArg( wxString& aLayerString, BOARD* aBoard ) const;
118
119 bool preparePlotLayers( JOB_EXPORT_PCB_PLOT* aJob, BOARD* aBoard, TOOL_MANAGER* aToolManager );
120 wxString resolvePlotOutputPath( JOB_EXPORT_PCB_PLOT* aJob, BOARD* aBoard,
121 PLOT_FORMAT aFormat, bool aSingleOutput );
122
124 JOB_EXPORT_PCB_GERBER* aJob );
127 int doFpExportSvg( JOB_FP_EXPORT_SVG* aSvgJob, const FOOTPRINT* aFootprint );
128 void loadOverrideDrawingSheet( BOARD* brd, const wxString& aSheetPath );
129 wxString resolveJobOutputPath( JOB* aJob, BOARD* aBoard, const wxString* aDrawingSheet = nullptr );
130
132
134
135 std::unique_ptr<BOARD> m_cliBoard;
136 std::unique_ptr<TOOL_MANAGER> m_toolManager;
137};
138
139#endif
Information pertinent to a Pcbnew printed circuit board.
Definition board.h:411
JOB_DISPATCHER(KIWAY *aKiway)
An simple container class that lets us dispatch output jobs to kifaces.
Definition job.h:184
Keeps the documents drawn on a pair of diff canvases alive.
A minimalistic software bus for communications between various DLLs/DSOs (DSOs) within the same KiCad...
Definition kiway.h:348
LSEQ is a sequence (and therefore also a set) of PCB_LAYER_IDs.
Definition lseq.h:47
int RunMerge(KICAD_DIFF::DOC_KIND aKind, const wxString &aAncestor, const wxString &aOurs, const wxString &aTheirs, const wxString &aOutput, bool aInteractive, bool aSingleFile, REPORTER *aReporter)
Non-job entry points (reached via the kiface KIFACE_MERGE_DOCUMENT / KIFACE_OPEN_DIFF_DIALOG function...
bool preparePlotLayers(JOB_EXPORT_PCB_PLOT *aJob, BOARD *aBoard, TOOL_MANAGER *aToolManager)
int JobExportSpecctraDsn(JOB *aJob)
void refillFabZones(const JOB_EXPORT_PCB_FAB &aJob, BOARD *aBoard)
void populateGerberPlotOptionsFromJob(PCB_PLOT_PARAMS &aPlotOpts, JOB_EXPORT_PCB_GERBER *aJob)
DS_PROXY_VIEW_ITEM * getDrawingSheetProxyView(BOARD *aBrd)
wxString resolveJobOutputPath(JOB *aJob, BOARD *aBoard, const wxString *aDrawingSheet=nullptr)
int runPcbMerge(const wxString &aAncestor, const wxString &aOurs, const wxString &aTheirs, const wxString &aOutput, bool aInteractive)
void loadOverrideDrawingSheet(BOARD *brd, const wxString &aSheetPath)
PCBNEW_JOBS_HANDLER(KIWAY *aKiway)
TOOL_MANAGER * getToolManager(BOARD *aBrd)
void populateGerberPlotOptionsFromJob(PCB_PLOT_PARAMS &aPlotOpts, JOB_EXPORT_PCB_GERBERS *aJob)
std::unique_ptr< BOARD > m_cliBoard
BOARD * getBoard(const wxString &aPath=wxEmptyString)
wxString resolvePlotOutputPath(JOB_EXPORT_PCB_PLOT *aJob, BOARD *aBoard, PLOT_FORMAT aFormat, bool aSingleOutput)
int runFpLibMerge(const wxString &aAncestor, const wxString &aOurs, const wxString &aTheirs, const wxString &aOutput, bool aSingleFile)
std::unique_ptr< TOOL_MANAGER > m_toolManager
int OpenDiffDialog(KICAD_DIFF::DOC_KIND aKind, const wxString &aFileA, const wxString &aFileB, const wxString &aLabelA, const wxString &aLabelB, wxWindow *aParent, REPORTER *aReporter)
LSEQ convertLayerArg(wxString &aLayerString, BOARD *aBoard) const
void ClearCachedBoard()
Clear the cached CLI board so the next job reloads from the current project.
int doFpExportSvg(JOB_FP_EXPORT_SVG *aSvgJob, const FOOTPRINT *aFootprint)
KICAD_DIFF::DIFF_CANVAS_CONTEXT * AttachDiffCanvases(KICAD_DIFF::DOC_KIND aKind, const wxString &aFileA, const wxString &aFileB, WIDGET_DIFF_CANVAS *aBefore, WIDGET_DIFF_CANVAS *aAfter, KICAD_DIFF::DOCUMENT_DIFF &aDiff, REPORTER *aReporter)
Diff two boards for a window outside the kiface, drawing the first on aBefore and the second on aAfte...
Parameters and options when plotting/printing a board.
A pure virtual class used to derive REPORTER objects from.
Definition reporter.h:73
Master controller class:
GAL-backed canvas for visualizing a KICAD_DIFF::DIFF_SCENE.
DOC_KIND
Document type a diff/merge entry point should route to, derived from a file path's extension.
PLOT_FORMAT
The set of supported output plot formats.
Definition plotter.h:65
The full set of changes between two parsed documents of one type.