14DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID
id,
const wxString& title,
const wxPoint& pos,
const wxSize& size,
long style ) :
DIALOG_SHIM( parent, id, title, pos, size, style )
16 this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
20 wxBoxSizer* bupperSizer;
21 bupperSizer =
new wxBoxSizer( wxHORIZONTAL );
23 m_staticTextPlotFmt =
new wxStaticText(
this, wxID_ANY,
_(
"Plot format:"), wxDefaultPosition, wxDefaultSize, 0 );
25 bupperSizer->Add(
m_staticTextPlotFmt, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5 );
27 wxString m_plotFormatOptChoices[] = {
_(
"Gerber"),
_(
"Postscript"),
_(
"SVG"),
_(
"DXF"),
_(
"HPGL"),
_(
"PDF") };
28 int m_plotFormatOptNChoices =
sizeof( m_plotFormatOptChoices ) /
sizeof( wxString );
29 m_plotFormatOpt =
new wxChoice(
this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_plotFormatOptNChoices, m_plotFormatOptChoices, 0 );
34 bupperSizer->Add( 0, 0, 0, wxEXPAND|wxRIGHT|wxLEFT, 10 );
36 m_staticTextDir =
new wxStaticText(
this, wxID_ANY,
_(
"Output directory:"), wxDefaultPosition, wxDefaultSize, 0 );
38 bupperSizer->Add(
m_staticTextDir, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
40 m_outputDirectoryName =
new wxTextCtrl(
this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
41 m_outputDirectoryName->SetToolTip(
_(
"Target directory for plot files. Can be absolute or relative to the board file location.") );
45 m_browseButton =
new wxBitmapButton(
this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW|0 );
46 bupperSizer->Add(
m_browseButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 );
49 m_MainSizer->Add( bupperSizer, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5 );
53 m_LayersSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Include Layers") ), wxHORIZONTAL );
55 wxArrayString m_layerCheckListBoxChoices;
66 wxStaticBoxSizer* sbOptionsSizer;
67 sbOptionsSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"General Options") ), wxVERTICAL );
69 wxGridBagSizer* gbSizer1;
70 gbSizer1 =
new wxGridBagSizer( 3, 0 );
71 gbSizer1->SetFlexibleDirection( wxHORIZONTAL );
72 gbSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
74 m_plotSheetRef =
new wxCheckBox( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Plot border and title block"), wxDefaultPosition, wxDefaultSize, 0 );
77 gbSizer1->Add(
m_plotSheetRef, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
79 m_plotModuleValueOpt =
new wxCheckBox( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Plot footprint values"), wxDefaultPosition, wxDefaultSize, 0 );
81 gbSizer1->Add(
m_plotModuleValueOpt, wxGBPosition( 1, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
83 m_plotModuleRefOpt =
new wxCheckBox( sbOptionsSizer->GetStaticBox(),
ID_PRINT_REF,
_(
"Plot reference designators"), wxDefaultPosition, wxDefaultSize, 0 );
85 gbSizer1->Add(
m_plotModuleRefOpt, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
87 m_plotInvisibleText =
new wxCheckBox( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Force plotting of invisible values / refs"), wxDefaultPosition, wxDefaultSize, 0 );
88 m_plotInvisibleText->SetToolTip(
_(
"Force plot invisible footprint values and reference designators") );
90 gbSizer1->Add(
m_plotInvisibleText, wxGBPosition( 3, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
97 m_plotNoViaOnMaskOpt =
new wxCheckBox( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Do not tent vias"), wxDefaultPosition, wxDefaultSize, 0 );
100 gbSizer1->Add(
m_plotNoViaOnMaskOpt, wxGBPosition( 5, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
102 m_useAuxOriginCheckBox =
new wxCheckBox( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Use drill/place file origin"), wxDefaultPosition, wxDefaultSize, 0 );
103 m_useAuxOriginCheckBox->SetToolTip(
_(
"Use the drill/place file origin as the coordinate origin for plotted files") );
105 gbSizer1->Add(
m_useAuxOriginCheckBox, wxGBPosition( 3, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
107 drillMarksLabel =
new wxStaticText( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Drill marks:"), wxDefaultPosition, wxDefaultSize, 0 );
109 gbSizer1->Add(
drillMarksLabel, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
111 wxString m_drillShapeOptChoices[] = {
_(
"None"),
_(
"Small"),
_(
"Actual size") };
112 int m_drillShapeOptNChoices =
sizeof( m_drillShapeOptChoices ) /
sizeof( wxString );
113 m_drillShapeOpt =
new wxChoice( sbOptionsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_drillShapeOptNChoices, m_drillShapeOptChoices, 0 );
115 gbSizer1->Add(
m_drillShapeOpt, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxLEFT, 5 );
117 scalingLabel =
new wxStaticText( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Scaling:"), wxDefaultPosition, wxDefaultSize, 0 );
119 gbSizer1->Add(
scalingLabel, wxGBPosition( 1, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
121 wxString m_scaleOptChoices[] = {
_(
"Auto"),
_(
"1:1"),
_(
"3:2"),
_(
"2:1"),
_(
"3:1") };
122 int m_scaleOptNChoices =
sizeof( m_scaleOptChoices ) /
sizeof( wxString );
123 m_scaleOpt =
new wxChoice( sbOptionsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_scaleOptNChoices, m_scaleOptChoices, 0 );
125 gbSizer1->Add(
m_scaleOpt, wxGBPosition( 1, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxLEFT, 5 );
127 plotModeLabel =
new wxStaticText( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Plot mode:"), wxDefaultPosition, wxDefaultSize, 0 );
129 gbSizer1->Add(
plotModeLabel, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
131 wxString m_plotModeOptChoices[] = {
_(
"Filled"),
_(
"Sketch") };
132 int m_plotModeOptNChoices =
sizeof( m_plotModeOptChoices ) /
sizeof( wxString );
133 m_plotModeOpt =
new wxChoice( sbOptionsSizer->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_plotModeOptNChoices, m_plotModeOptChoices, 0 );
135 gbSizer1->Add(
m_plotModeOpt, wxGBPosition( 2, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxLEFT, 5 );
137 m_plotMirrorOpt =
new wxCheckBox( sbOptionsSizer->GetStaticBox(),
ID_MIROR_OPT,
_(
"Mirrored plot"), wxDefaultPosition, wxDefaultSize, 0 );
138 gbSizer1->Add(
m_plotMirrorOpt, wxGBPosition( 4, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
140 m_plotPSNegativeOpt =
new wxCheckBox( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Negative plot"), wxDefaultPosition, wxDefaultSize, 0 );
141 gbSizer1->Add(
m_plotPSNegativeOpt, wxGBPosition( 4, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
143 m_zoneFillCheck =
new wxCheckBox( sbOptionsSizer->GetStaticBox(), wxID_ANY,
_(
"Check zone fills before plotting"), wxDefaultPosition, wxDefaultSize, 0 );
144 gbSizer1->Add(
m_zoneFillCheck, wxGBPosition( 6, 0 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxRIGHT, 5 );
147 sbOptionsSizer->Add( gbSizer1, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
154 m_bitmapAlert =
new wxStaticBitmap(
this, wxID_ANY, wxArtProvider::GetBitmap( wxART_WARNING, wxART_CMN_DIALOG ), wxDefaultPosition, wxDefaultSize, 0 );
157 wxBoxSizer* bSizerWarningText;
158 bSizerWarningText =
new wxBoxSizer( wxVERTICAL );
160 m_staticTextAlert =
new wxStaticText(
this, wxID_ANY,
_(
"Global solder mask minimum width and/or margin are not set to 0. "), wxDefaultPosition, wxDefaultSize, 0 );
164 m_staticTextAlert1 =
new wxStaticText(
this, wxID_ANY,
_(
"Most board manufacturers expect 0 and use their own constraints for solder mask minimum width."), wxDefaultPosition, wxDefaultSize, 0 );
168 wxBoxSizer* bSizerSecondLine;
169 bSizerSecondLine =
new wxBoxSizer( wxHORIZONTAL );
172 bSizerSecondLine->Add( 0, 0, 1, wxEXPAND, 5 );
174 m_boardSetup =
new wxHyperlinkCtrl(
this, wxID_ANY,
_(
"Board setup"), wxEmptyString, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE );
177 bSizerSecondLine->Add(
m_boardSetup, 0, wxLEFT|wxRIGHT|wxTOP, 2 );
180 bSizerWarningText->Add( bSizerSecondLine, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 );
188 m_GerberOptionsSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Gerber Options") ), wxHORIZONTAL );
190 wxGridBagSizer* gbSizer2;
191 gbSizer2 =
new wxGridBagSizer( 3, 0 );
192 gbSizer2->SetFlexibleDirection( wxHORIZONTAL );
193 gbSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
196 m_useGerberExtensions->SetToolTip(
_(
"Use Protel Gerber extensions (.GBL, .GTL, etc...)\nNo longer recommended. The official extension is .gbr") );
199 gbSizer2->Add(
m_useGerberExtensions, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
203 m_generateGerberJobFile->SetToolTip(
_(
"Generate a Gerber job file that contains info about the board,\nand the list of generated Gerber plot files") );
210 gbSizer2->Add(
m_subtractMaskFromSilk, wxGBPosition( 2, 0 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL, 5 );
214 gbSizer2->Add(
coordFormatLabel, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
216 wxString m_coordFormatCtrlChoices[] = {
_(
"4.5, unit mm"),
_(
"4.6, unit mm") };
217 int m_coordFormatCtrlNChoices =
sizeof( m_coordFormatCtrlChoices ) /
sizeof( wxString );
220 gbSizer2->Add(
m_coordFormatCtrl, wxGBPosition( 0, 2 ), wxGBSpan( 1, 1 ), wxEXPAND|wxRIGHT|wxLEFT, 5 );
223 m_useGerberX2Format->SetToolTip(
_(
"Use X2 Gerber file format.\nInclude mainly X2 attributes in Gerber headers.\nIf not checked, use X1 format.\nIn X1 format, these attributes are included as comments in files.") );
225 gbSizer2->Add(
m_useGerberX2Format, wxGBPosition( 1, 1 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER_VERTICAL|wxLEFT, 30 );
228 m_useGerberNetAttributes->SetToolTip(
_(
"Include netlist metadata and aperture attributes in Gerber files.\nThey are comments in the X1 format.\nUsed to check connectivity in CAM tools and Gerber viewers.") );
230 gbSizer2->Add(
m_useGerberNetAttributes, wxGBPosition( 2, 1 ), wxGBSpan( 1, 2 ), wxLEFT|wxALIGN_CENTER_VERTICAL, 30 );
233 m_disableApertMacros->SetToolTip(
_(
"Disable aperture macros in Gerber files\nUse *only* for broken Gerber viewers.") );
235 gbSizer2->Add(
m_disableApertMacros, wxGBPosition( 3, 1 ), wxGBSpan( 1, 2 ), wxLEFT|wxALIGN_CENTER_VERTICAL, 30 );
238 gbSizer2->AddGrowableCol( 2 );
245 m_HPGLOptionsSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"HPGL Options") ), wxHORIZONTAL );
264 m_PSOptionsSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"Postscript Options") ), wxVERTICAL );
266 wxFlexGridSizer* fgSizer2;
267 fgSizer2 =
new wxFlexGridSizer( 0, 6, 3, 0 );
268 fgSizer2->AddGrowableCol( 1 );
269 fgSizer2->AddGrowableCol( 4 );
270 fgSizer2->SetFlexibleDirection( wxBOTH );
271 fgSizer2->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
273 fgSizer2->SetMinSize( wxSize( 60,-1 ) );
279 m_fineAdjustXCtrl->SetToolTip(
_(
"Set global X scale adjust for exact scale PostScript output.") );
284 fgSizer2->Add( 0, 0, 1, wxEXPAND, 5 );
291 m_fineAdjustYCtrl->SetToolTip(
_(
"Set global Y scale adjust for exact scale PostScript output.") );
296 fgSizer2->Add( 0, 0, 1, wxEXPAND|wxRIGHT|wxLEFT, 10 );
303 m_widthAdjustCtrl->SetToolTip(
_(
"Set global width correction for exact width PostScript output.\nThese width correction is intended to compensate tracks width and also pads and vias size errors.\nThe reasonable width correction value must be in a range of [-(MinTrackWidth-1), +(MinClearanceValue-1)].") );
320 m_SizerDXF_options =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"DXF Options") ), wxHORIZONTAL );
322 wxBoxSizer* bSizerdxfLeft;
323 bSizerdxfLeft =
new wxBoxSizer( wxVERTICAL );
327 m_DXF_plotModeOpt->SetToolTip(
_(
"Uncheck to plot graphic items using their center lines") );
332 m_DXF_plotTextStrokeFontOpt->SetToolTip(
_(
"Check to use KiCad stroke font\nUncheck to plot single-line ASCII texts as editable text (using DXF font)") );
342 wxBoxSizer* dxfSizerRight;
343 dxfSizerRight =
new wxBoxSizer( wxHORIZONTAL );
349 wxString m_DXF_plotUnitsChoices[] = {
_(
"Inches"),
_(
"Millimeters") };
350 int m_DXF_plotUnitsNChoices =
sizeof( m_DXF_plotUnitsChoices ) /
sizeof( wxString );
351 m_DXF_plotUnits =
new wxChoice(
m_SizerDXF_options->GetStaticBox(), wxID_ANY, wxDefaultPosition, wxDefaultSize, m_DXF_plotUnitsNChoices, m_DXF_plotUnitsChoices, 0 );
353 m_DXF_plotUnits->SetToolTip(
_(
"The units to use for the exported DXF file") );
363 m_svgOptionsSizer =
new wxStaticBoxSizer(
new wxStaticBox(
this, wxID_ANY,
_(
"SVG Options") ), wxHORIZONTAL );
370 m_svgPrecsision->SetToolTip(
_(
"This number defines how many digits are exported that are below 1 mm.\nUser unit is 10^-<N> mm\nChoose 4 if you are not sure.") );
383 wxBoxSizer* sbSizerMsg;
384 sbSizerMsg =
new wxBoxSizer( wxVERTICAL );
396 m_buttonDRC =
new wxButton(
this, wxID_ANY,
_(
"Run DRC..."), wxDefaultPosition, wxDefaultSize, 0 );
399 m_DRCExclusionsWarning =
new wxStaticText(
this, wxID_ANY,
_(
"(%d known DRC violations; %d exclusions)"), wxDefaultPosition, wxDefaultSize, 0 );
422 wxMenuItem* m_menuItem1;
423 m_menuItem1 =
new wxMenuItem(
m_popMenu,
ID_LAYER_FAB, wxString(
_(
"Select Fab Layers") ) , wxEmptyString, wxITEM_NORMAL );
426 wxMenuItem* m_menuItem2;
430 wxMenuItem* m_menuItem3;
434 wxMenuItem* m_menuItem4;
438 wxMenuItem* m_menuItem5;
445 this->Centre( wxBOTH );
virtual void onRunDRC(wxCommandEvent &event)
wxStaticText * m_DRCExclusionsWarning
wxTextCtrl * m_widthAdjustCtrl
wxBoxSizer * m_sizerButtons
wxStdDialogButtonSizer * m_sdbSizer1
wxStaticText * m_fineAdjustYLabel
wxTextCtrl * m_fineAdjustXCtrl
wxBoxSizer * bmiddleSizer
virtual void OnGerberX2Checked(wxCommandEvent &event)
wxStaticText * m_staticTextAlert1
wxCheckBox * m_disableApertMacros
virtual void SetPlotFormat(wxCommandEvent &event)
wxChoice * m_coordFormatCtrl
wxCheckBox * m_DXF_plotModeOpt
virtual void OnOutputDirectoryBrowseClicked(wxCommandEvent &event)
wxStaticText * m_staticTextPlotFmt
wxStaticText * m_hpglPenUnits
void DIALOG_PLOT_BASEOnContextMenu(wxMouseEvent &event)
virtual void onBoardSetup(wxHyperlinkEvent &event)
virtual void Plot(wxCommandEvent &event)
wxTextCtrl * m_outputDirectoryName
wxSpinCtrl * m_svgPrecsision
wxTextCtrl * m_fineAdjustYCtrl
wxStaticBoxSizer * m_HPGLOptionsSizer
wxStaticBitmap * m_bitmapAlert
wxCheckBox * m_useAuxOriginCheckBox
wxStaticBoxSizer * m_PSOptionsSizer
wxStaticText * m_staticTextAlert
virtual void OnRightClick(wxMouseEvent &event)
wxCheckBox * m_plotPSNegativeOpt
wxStaticText * DXF_exportUnitsLabel
wxStaticText * m_widthAdjustLabel
@ ID_SELECT_COPPER_LAYERS
@ ID_ALLOW_PRINT_PAD_ON_SILKSCREEN
@ ID_DESELECT_COPPER_LAYERS
wxCheckBox * m_DXF_plotTextStrokeFontOpt
wxCheckBox * m_useGerberExtensions
wxStaticBoxSizer * m_LayersSizer
wxCheckBox * m_plotSheetRef
wxBoxSizer * m_SizerSolderMaskAlert
wxCheckBox * m_generateGerberJobFile
wxTextCtrl * m_hpglPenCtrl
wxButton * m_sdbSizer1Apply
wxStaticText * svgPrecisionLabel
wxStaticText * m_fineAdjustXLabel
wxCheckBox * m_useGerberX2Format
wxCheckListBox * m_layerCheckListBox
wxCheckBox * m_plotMirrorOpt
wxStaticText * m_staticTextDir
wxStaticText * m_widthAdjustUnits
wxStaticBoxSizer * m_svgOptionsSizer
virtual void OnPopUpLayers(wxCommandEvent &event)
wxCheckBox * m_forcePSA4OutputOpt
wxCheckBox * m_useGerberNetAttributes
wxCheckBox * m_plotNoViaOnMaskOpt
wxHyperlinkCtrl * m_boardSetup
wxCheckBox * m_sketchPadsOnFabLayers
wxCheckBox * m_subtractMaskFromSilk
wxButton * m_sdbSizer1Cancel
wxStaticText * m_hpglPenLabel
wxBoxSizer * m_PlotOptionsSizer
wxStaticText * drillMarksLabel
wxStaticText * plotModeLabel
virtual void CreateDrillFile(wxCommandEvent &event)
wxChoice * m_DXF_plotUnits
virtual void OnChangeDXFPlotMode(wxCommandEvent &event)
DIALOG_PLOT_BASE(wxWindow *parent, wxWindowID id=wxID_ANY, const wxString &title=_("Plot"), const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxSize(-1,-1), long style=wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
wxCheckBox * m_plotModuleRefOpt
wxStaticBoxSizer * m_SizerDXF_options
wxCheckBox * m_plotInvisibleText
wxStaticText * scalingLabel
virtual void OnSetScaleOpt(wxCommandEvent &event)
wxChoice * m_drillShapeOpt
virtual void OnInitDialog(wxInitDialogEvent &event)
wxCheckBox * m_plotModuleValueOpt
wxCheckBox * m_zoneFillCheck
wxStaticBoxSizer * m_GerberOptionsSizer
wxBitmapButton * m_browseButton
WX_HTML_REPORT_PANEL * m_messagesPanel
wxStaticText * coordFormatLabel
wxChoice * m_plotFormatOpt
Dialog helper object to sit in the inheritance tree between wxDialog and any class written by wxFormB...
A widget for browsing a rich text error/status report.