From 9dc9cc1f78dd100eba7aca908a07267e1efc92f9 Mon Sep 17 00:00:00 2001 From: Marco Mattila Date: Mon, 6 Dec 2010 16:05:12 -0600 Subject: [PATCH] Board manufacturers typically do not print silkscreen on areas without soldermask. Nevertheless, it would be nice to have proper gerbers to begin with, i.e., gerbers with no silkscreen in soldermaskless areas. Of course, most of the problem can be taken care of by drawing the footprints properly. However, sometimes the silkscreen of one footprint ends up on the pads of another one (think components under a so-dimm card, for example). The attached patch adds an option to subtract the soldermask from the silkscreen when doing gerber output. marco --- common/common_plotGERBER_functions.cpp | 8 + include/plot_common.h | 15 + pcbnew/dialogs/dialog_plot_base.cpp | 519 +-- pcbnew/dialogs/dialog_plot_base.fbp | 4713 ++++++++++++------------ pcbnew/dialogs/dialog_plot_base.h | 227 +- pcbnew/pcbplot.cpp | 9 + pcbnew/pcbplot.h | 4 + pcbnew/plot_rtn.cpp | 18 + 8 files changed, 2815 insertions(+), 2698 deletions(-) diff --git a/common/common_plotGERBER_functions.cpp b/common/common_plotGERBER_functions.cpp index 1c1a4fedce..3e1f8b4378 100644 --- a/common/common_plotGERBER_functions.cpp +++ b/common/common_plotGERBER_functions.cpp @@ -504,3 +504,11 @@ void GERBER_PLOTTER::flash_pad_rect( wxPoint pos, wxSize size, set_current_line_width( -1 ); poly( 5, &polygon[0].x, aTrace_Mode==FILLED ? FILLED_SHAPE : NO_FILL ); } + +void GERBER_PLOTTER::SetLayerPolarity( bool aPositive ) +{ + if( aPositive ) + fprintf( output_file, "%%LPD*%%\n" ); + else + fprintf( output_file, "%%LPC*%%\n" ); +} diff --git a/include/plot_common.h b/include/plot_common.h index 1b7920b7de..3e60912d74 100644 --- a/include/plot_common.h +++ b/include/plot_common.h @@ -169,6 +169,13 @@ public: bool aBold ); void marker( const wxPoint& position, int diametre, int aShapeId ); + /** Function SetLayerPolarity + * sets current Gerber layer polarity to positive or negative + * by writing \%LPD*\% or \%LPC*\% to the Gerber file, respectively. + * param @aPositive = layer polarity, true for positive + */ + virtual void SetLayerPolarity( bool aPositive ) = 0; + protected: /* These are marker subcomponents */ void center_square( const wxPoint& position, int diametre, FILL_T fill ); @@ -272,6 +279,8 @@ public: virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4], int aPadOrient, GRTraceMode aTrace_Mode ); + virtual void SetLayerPolarity( bool aPositive ) {}; + protected: void pen_control( int plume ); @@ -321,6 +330,8 @@ public: virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4], int aPadOrient, GRTraceMode aTrace_Mode ); + virtual void SetLayerPolarity( bool aPositive ) {}; + protected: double plot_scale_adjX, plot_scale_adjY; }; @@ -379,6 +390,8 @@ public: virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4], int aPadOrient, GRTraceMode aTrace_Mode ); + virtual void SetLayerPolarity( bool aPositive ); + protected: void select_aperture( const wxSize& size, APERTURE::Aperture_Type type ); @@ -439,6 +452,8 @@ public: virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4], int aPadOrient, GRTraceMode aTrace_Mode ); + virtual void SetLayerPolarity( bool aPositive ) {}; + protected: int current_color; }; diff --git a/pcbnew/dialogs/dialog_plot_base.cpp b/pcbnew/dialogs/dialog_plot_base.cpp index f66721ee05..321862a5f1 100644 --- a/pcbnew/dialogs/dialog_plot_base.cpp +++ b/pcbnew/dialogs/dialog_plot_base.cpp @@ -1,257 +1,262 @@ -/////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Sep 8 2010) -// http://www.wxformbuilder.org/ -// -// PLEASE DO "NOT" EDIT THIS FILE! -/////////////////////////////////////////////////////////////////////////// - -#include "dialog_plot_base.h" - -/////////////////////////////////////////////////////////////////////////// - -DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) -{ - this->SetSizeHints( wxSize( -1,350 ), wxDefaultSize ); - - wxBoxSizer* bMainSizer; - bMainSizer = new wxBoxSizer( wxVERTICAL ); - - wxBoxSizer* bUpperSizer; - bUpperSizer = new wxBoxSizer( wxHORIZONTAL ); - - wxBoxSizer* bLeftSizer; - bLeftSizer = new wxBoxSizer( wxVERTICAL ); - - wxStaticBoxSizer* sbLayersSizer; - sbLayersSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Layers:") ), wxHORIZONTAL ); - - m_CopperLayersBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Copper Layers:") ), wxVERTICAL ); - - sbLayersSizer->Add( m_CopperLayersBoxSizer, 1, wxALL, 5 ); - - m_TechnicalLayersBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Technical Layers:") ), wxVERTICAL ); - - sbLayersSizer->Add( m_TechnicalLayersBoxSizer, 1, wxALL, 5 ); - - bLeftSizer->Add( sbLayersSizer, 1, wxEXPAND, 5 ); - - m_Use_Gerber_Extensions = new wxCheckBox( this, ID_USE_GERBER_EXTENSIONS, _("Use Proper Gerber Extensions"), wxDefaultPosition, wxDefaultSize, 0 ); - m_Use_Gerber_Extensions->SetToolTip( _("Use Proper Gerber Extensions - .GBL, .GTL, etc...") ); - - bLeftSizer->Add( m_Use_Gerber_Extensions, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_Exclude_Edges_Pcb = new wxCheckBox( this, wxID_ANY, _("Exclude pcb edge layer"), wxDefaultPosition, wxDefaultSize, 0 ); - m_Exclude_Edges_Pcb->SetToolTip( _("Exclude contents of the pcb edge layer from all other layers") ); - - bLeftSizer->Add( m_Exclude_Edges_Pcb, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_Plot_Sheet_Ref = new wxCheckBox( this, wxID_ANY, _("Print sheet reference"), wxDefaultPosition, wxDefaultSize, 0 ); - bLeftSizer->Add( m_Plot_Sheet_Ref, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_Plot_Pads_on_Silkscreen = new wxCheckBox( this, ID_ALLOW_PRINT_PAD_ON_SILKSCREEN, _("Print pads on silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); - m_Plot_Pads_on_Silkscreen->SetToolTip( _("Enable/disable print/plot pads on silkscreen layers\nWhen disable, pads are never potted on silkscreen layers\nWhen enable, pads are potted only if they appear on silkscreen layers") ); - - bLeftSizer->Add( m_Plot_Pads_on_Silkscreen, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_Plot_Text_Value = new wxCheckBox( this, ID_PRINT_VALUE, _("Print module value"), wxDefaultPosition, wxDefaultSize, 0 ); - bLeftSizer->Add( m_Plot_Text_Value, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_Plot_Text_Ref = new wxCheckBox( this, ID_PRINT_REF, _("Print module reference"), wxDefaultPosition, wxDefaultSize, 0 ); - bLeftSizer->Add( m_Plot_Text_Ref, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_Plot_Text_Div = new wxCheckBox( this, ID_PRINT_MODULE_TEXTS, _("Print other module texts"), wxDefaultPosition, wxDefaultSize, 0 ); - m_Plot_Text_Div->SetToolTip( _("Enable/disable print/plot module field texts on silkscreen layers") ); - - bLeftSizer->Add( m_Plot_Text_Div, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_Plot_Invisible_Text = new wxCheckBox( this, ID_FORCE_PRINT_INVISIBLE_TEXT, _("Force print invisible texts"), wxDefaultPosition, wxDefaultSize, 0 ); - m_Plot_Invisible_Text->SetToolTip( _("Force print/plot module invisible texts on silkscreen layers") ); - - bLeftSizer->Add( m_Plot_Invisible_Text, 0, wxALL, 5 ); - - bUpperSizer->Add( bLeftSizer, 1, wxEXPAND, 5 ); - - wxBoxSizer* bPlotOptionsSizer; - bPlotOptionsSizer = new wxBoxSizer( wxVERTICAL ); - - wxString m_Drill_Shape_OptChoices[] = { _("No drill mark"), _("Small mark"), _("Real drill") }; - int m_Drill_Shape_OptNChoices = sizeof( m_Drill_Shape_OptChoices ) / sizeof( wxString ); - m_Drill_Shape_Opt = new wxRadioBox( this, ID_DRILL_SHAPE_OPT, _("Pads Drill Opt"), wxDefaultPosition, wxDefaultSize, m_Drill_Shape_OptNChoices, m_Drill_Shape_OptChoices, 1, wxRA_SPECIFY_COLS ); - m_Drill_Shape_Opt->SetSelection( 1 ); - bPlotOptionsSizer->Add( m_Drill_Shape_Opt, 0, wxALL|wxEXPAND, 5 ); - - wxString m_Scale_OptChoices[] = { _("Auto scale"), _("Scale 1"), _("Scale 1.5"), _("Scale 2"), _("Scale 3") }; - int m_Scale_OptNChoices = sizeof( m_Scale_OptChoices ) / sizeof( wxString ); - m_Scale_Opt = new wxRadioBox( this, wxID_ANY, _("Scale Opt"), wxDefaultPosition, wxDefaultSize, m_Scale_OptNChoices, m_Scale_OptChoices, 1, wxRA_SPECIFY_COLS ); - m_Scale_Opt->SetSelection( 0 ); - bPlotOptionsSizer->Add( m_Scale_Opt, 0, wxALL|wxEXPAND, 5 ); - - wxString m_PlotModeOptChoices[] = { _("Line"), _("Filled"), _("Sketch") }; - int m_PlotModeOptNChoices = sizeof( m_PlotModeOptChoices ) / sizeof( wxString ); - m_PlotModeOpt = new wxRadioBox( this, wxID_ANY, _("Plot Mode"), wxDefaultPosition, wxDefaultSize, m_PlotModeOptNChoices, m_PlotModeOptChoices, 1, wxRA_SPECIFY_COLS ); - m_PlotModeOpt->SetSelection( 0 ); - bPlotOptionsSizer->Add( m_PlotModeOpt, 0, wxALL|wxEXPAND, 5 ); - - wxString m_Choice_Plot_OffsetChoices[] = { _("Absolute"), _("Auxiliary axis") }; - int m_Choice_Plot_OffsetNChoices = sizeof( m_Choice_Plot_OffsetChoices ) / sizeof( wxString ); - m_Choice_Plot_Offset = new wxRadioBox( this, wxID_ANY, _("Plot Origin"), wxDefaultPosition, wxDefaultSize, m_Choice_Plot_OffsetNChoices, m_Choice_Plot_OffsetChoices, 1, wxRA_SPECIFY_COLS ); - m_Choice_Plot_Offset->SetSelection( 0 ); - bPlotOptionsSizer->Add( m_Choice_Plot_Offset, 0, wxALL|wxEXPAND, 5 ); - - bUpperSizer->Add( bPlotOptionsSizer, 0, wxEXPAND, 5 ); - - wxBoxSizer* bSizerFmtPlot; - bSizerFmtPlot = new wxBoxSizer( wxVERTICAL ); - - wxString m_PlotFormatOptChoices[] = { _("HPGL"), _("Gerber"), _("Postscript"), _("Postscript A4"), _("DXF Export") }; - int m_PlotFormatOptNChoices = sizeof( m_PlotFormatOptChoices ) / sizeof( wxString ); - m_PlotFormatOpt = new wxRadioBox( this, wxID_ANY, _("Plot Format"), wxDefaultPosition, wxDefaultSize, m_PlotFormatOptNChoices, m_PlotFormatOptChoices, 1, wxRA_SPECIFY_COLS ); - m_PlotFormatOpt->SetSelection( 1 ); - bSizerFmtPlot->Add( m_PlotFormatOpt, 0, wxALL|wxEXPAND, 5 ); - - wxStaticBoxSizer* m_HPGL_OptionsBox; - m_HPGL_OptionsBox = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("HPGL Options:") ), wxVERTICAL ); - - m_textPenSize = new wxStaticText( this, wxID_ANY, _("Pen size"), wxDefaultPosition, wxDefaultSize, 0 ); - m_textPenSize->Wrap( -1 ); - m_HPGL_OptionsBox->Add( m_textPenSize, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_HPGLPenSizeOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_HPGL_OptionsBox->Add( m_HPGLPenSizeOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_staticText3 = new wxStaticText( this, wxID_ANY, _("Pen Speed (cm/s)"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText3->Wrap( -1 ); - m_HPGL_OptionsBox->Add( m_staticText3, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_HPGLPenSpeedOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_HPGLPenSpeedOpt->SetToolTip( _("Set pen speed in cm/s") ); - - m_HPGL_OptionsBox->Add( m_HPGLPenSpeedOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - m_textPenOvr = new wxStaticText( this, wxID_ANY, _("Pen ovr"), wxDefaultPosition, wxDefaultSize, 0 ); - m_textPenOvr->Wrap( -1 ); - m_HPGL_OptionsBox->Add( m_textPenOvr, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_HPGLPenOverlayOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_HPGLPenOverlayOpt->SetToolTip( _("Set plot overlay for filling") ); - - m_HPGL_OptionsBox->Add( m_HPGLPenOverlayOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - bSizerFmtPlot->Add( m_HPGL_OptionsBox, 0, wxEXPAND, 5 ); - - wxStaticBoxSizer* sbSizerPSOpt; - sbSizerPSOpt = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("PS Options:") ), wxVERTICAL ); - - m_Plot_PS_Negative = new wxCheckBox( this, wxID_ANY, _("Plot negative"), wxDefaultPosition, wxDefaultSize, 0 ); - sbSizerPSOpt->Add( m_Plot_PS_Negative, 0, wxALL, 5 ); - - bSizerFmtPlot->Add( sbSizerPSOpt, 0, wxEXPAND, 5 ); - - wxStaticBoxSizer* sbSizerOutputDir; - sbSizerOutputDir = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Output Directory:") ), wxVERTICAL ); - - m_OutputDirectory = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - sbSizerOutputDir->Add( m_OutputDirectory, 0, wxALIGN_LEFT|wxEXPAND, 5 ); - - m_BrowseButton = new wxButton( this, ID_BROWSE_OUTPUT_DIRECTORY, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 ); - sbSizerOutputDir->Add( m_BrowseButton, 0, wxALL, 5 ); - - bSizerFmtPlot->Add( sbSizerOutputDir, 0, wxEXPAND, 5 ); - - bUpperSizer->Add( bSizerFmtPlot, 0, wxEXPAND, 5 ); - - wxBoxSizer* bButtonsSizer; - bButtonsSizer = new wxBoxSizer( wxVERTICAL ); - - m_PlotMirorOpt = new wxCheckBox( this, ID_MIROR_OPT, _("Plot mirror"), wxDefaultPosition, wxDefaultSize, 0 ); - bButtonsSizer->Add( m_PlotMirorOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_PlotNoViaOnMaskOpt = new wxCheckBox( this, ID_MASKVIA_OPT, _("Vias on mask"), wxDefaultPosition, wxDefaultSize, 0 ); - m_PlotNoViaOnMaskOpt->SetToolTip( _("Print/plot vias on mask layers. They are in this case not protected") ); - - bButtonsSizer->Add( m_PlotNoViaOnMaskOpt, 0, wxALL, 5 ); - - m_staticText6 = new wxStaticText( this, wxID_ANY, _("Default pen size"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText6->Wrap( -1 ); - m_staticText6->SetToolTip( _("Pen size used to draw items that have no pen size specified.\nUsed mainly to draw items in sketch mode.") ); - - bButtonsSizer->Add( m_staticText6, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_LinesWidth = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - bButtonsSizer->Add( m_LinesWidth, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bButtonsSizer->Add( 0, 20, 1, wxEXPAND, 5 ); - - m_staticText7 = new wxStaticText( this, wxID_ANY, _("X scale adjust"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText7->Wrap( -1 ); - bButtonsSizer->Add( m_staticText7, 0, wxRIGHT|wxLEFT, 5 ); - - m_FineAdjustXscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_FineAdjustXscaleOpt->SetToolTip( _("Set X scale adjust for exact scale plotting") ); - - bButtonsSizer->Add( m_FineAdjustXscaleOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - m_staticText8 = new wxStaticText( this, wxID_ANY, _("Y scale adjust"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText8->Wrap( -1 ); - bButtonsSizer->Add( m_staticText8, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_FineAdjustYscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - bButtonsSizer->Add( m_FineAdjustYscaleOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - - - bButtonsSizer->Add( 0, 20, 1, wxEXPAND, 5 ); - - m_PlotButton = new wxButton( this, ID_EXEC_PLOT, _("Plot"), wxDefaultPosition, wxDefaultSize, 0 ); - m_PlotButton->SetDefault(); - bButtonsSizer->Add( m_PlotButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); - - m_buttonSaveOpt = new wxButton( this, ID_SAVE_OPT_PLOT, _("Save Options"), wxDefaultPosition, wxDefaultSize, 0 ); - bButtonsSizer->Add( m_buttonSaveOpt, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); - - m_buttonDrill = new wxButton( this, ID_CREATE_DRILL_FILE, _("Generate drill file"), wxDefaultPosition, wxDefaultSize, 0 ); - bButtonsSizer->Add( m_buttonDrill, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); - - m_buttonQuit = new wxButton( this, wxID_CANCEL, _("Quit"), wxDefaultPosition, wxDefaultSize, 0 ); - bButtonsSizer->Add( m_buttonQuit, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); - - bUpperSizer->Add( bButtonsSizer, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); - - bMainSizer->Add( bUpperSizer, 0, wxEXPAND, 5 ); - - m_staticText2 = new wxStaticText( this, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticText2->Wrap( -1 ); - bMainSizer->Add( m_staticText2, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_MessagesBox = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); - m_MessagesBox->SetMinSize( wxSize( -1,120 ) ); - - bMainSizer->Add( m_MessagesBox, 1, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - - this->SetSizer( bMainSizer ); - this->Layout(); - - // Connect Events - this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PLOT_BASE::OnCloseWindow ) ); - this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PLOT_BASE::OnInitDialog ) ); - m_PlotFormatOpt->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::SetPlotFormat ), NULL, this ); - m_BrowseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnOutputDirectoryBrowseClicked ), NULL, this ); - m_PlotButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::Plot ), NULL, this ); - m_buttonSaveOpt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::SaveOptPlot ), NULL, this ); - m_buttonDrill->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::CreateDrillFile ), NULL, this ); - m_buttonQuit->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnQuit ), NULL, this ); -} - -DIALOG_PLOT_BASE::~DIALOG_PLOT_BASE() -{ - // Disconnect Events - this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PLOT_BASE::OnCloseWindow ) ); - this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PLOT_BASE::OnInitDialog ) ); - m_PlotFormatOpt->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::SetPlotFormat ), NULL, this ); - m_BrowseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnOutputDirectoryBrowseClicked ), NULL, this ); - m_PlotButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::Plot ), NULL, this ); - m_buttonSaveOpt->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::SaveOptPlot ), NULL, this ); - m_buttonDrill->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::CreateDrillFile ), NULL, this ); - m_buttonQuit->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnQuit ), NULL, this ); - -} +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Sep 8 2010) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#include "dialog_plot_base.h" + +/////////////////////////////////////////////////////////////////////////// + +DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxSize( -1,350 ), wxDefaultSize ); + + wxBoxSizer* bMainSizer; + bMainSizer = new wxBoxSizer( wxVERTICAL ); + + wxBoxSizer* bUpperSizer; + bUpperSizer = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bLeftSizer; + bLeftSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* sbLayersSizer; + sbLayersSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Layers:") ), wxHORIZONTAL ); + + m_CopperLayersBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Copper Layers:") ), wxVERTICAL ); + + sbLayersSizer->Add( m_CopperLayersBoxSizer, 1, wxALL, 5 ); + + m_TechnicalLayersBoxSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Technical Layers:") ), wxVERTICAL ); + + sbLayersSizer->Add( m_TechnicalLayersBoxSizer, 1, wxALL, 5 ); + + bLeftSizer->Add( sbLayersSizer, 1, wxEXPAND, 5 ); + + m_Use_Gerber_Extensions = new wxCheckBox( this, ID_USE_GERBER_EXTENSIONS, _("Use Proper Gerber Extensions"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Use_Gerber_Extensions->SetToolTip( _("Use Proper Gerber Extensions - .GBL, .GTL, etc...") ); + + bLeftSizer->Add( m_Use_Gerber_Extensions, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_Exclude_Edges_Pcb = new wxCheckBox( this, wxID_ANY, _("Exclude pcb edge layer"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Exclude_Edges_Pcb->SetToolTip( _("Exclude contents of the pcb edge layer from all other layers") ); + + bLeftSizer->Add( m_Exclude_Edges_Pcb, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_SubtractMaskFromSilk = new wxCheckBox( this, wxID_ANY, _("Subtract Mask from Silk"), wxDefaultPosition, wxDefaultSize, 0 ); + m_SubtractMaskFromSilk->SetToolTip( _("Remove silkscreen from areas without soldermask") ); + + bLeftSizer->Add( m_SubtractMaskFromSilk, 0, wxALL, 5 ); + + m_Plot_Sheet_Ref = new wxCheckBox( this, wxID_ANY, _("Print sheet reference"), wxDefaultPosition, wxDefaultSize, 0 ); + bLeftSizer->Add( m_Plot_Sheet_Ref, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_Plot_Pads_on_Silkscreen = new wxCheckBox( this, ID_ALLOW_PRINT_PAD_ON_SILKSCREEN, _("Print pads on silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Plot_Pads_on_Silkscreen->SetToolTip( _("Enable/disable print/plot pads on silkscreen layers\nWhen disable, pads are never potted on silkscreen layers\nWhen enable, pads are potted only if they appear on silkscreen layers") ); + + bLeftSizer->Add( m_Plot_Pads_on_Silkscreen, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_Plot_Text_Value = new wxCheckBox( this, ID_PRINT_VALUE, _("Print module value"), wxDefaultPosition, wxDefaultSize, 0 ); + bLeftSizer->Add( m_Plot_Text_Value, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_Plot_Text_Ref = new wxCheckBox( this, ID_PRINT_REF, _("Print module reference"), wxDefaultPosition, wxDefaultSize, 0 ); + bLeftSizer->Add( m_Plot_Text_Ref, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_Plot_Text_Div = new wxCheckBox( this, ID_PRINT_MODULE_TEXTS, _("Print other module texts"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Plot_Text_Div->SetToolTip( _("Enable/disable print/plot module field texts on silkscreen layers") ); + + bLeftSizer->Add( m_Plot_Text_Div, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_Plot_Invisible_Text = new wxCheckBox( this, ID_FORCE_PRINT_INVISIBLE_TEXT, _("Force print invisible texts"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Plot_Invisible_Text->SetToolTip( _("Force print/plot module invisible texts on silkscreen layers") ); + + bLeftSizer->Add( m_Plot_Invisible_Text, 0, wxALL, 5 ); + + bUpperSizer->Add( bLeftSizer, 1, wxEXPAND, 5 ); + + wxBoxSizer* bPlotOptionsSizer; + bPlotOptionsSizer = new wxBoxSizer( wxVERTICAL ); + + wxString m_Drill_Shape_OptChoices[] = { _("No drill mark"), _("Small mark"), _("Real drill") }; + int m_Drill_Shape_OptNChoices = sizeof( m_Drill_Shape_OptChoices ) / sizeof( wxString ); + m_Drill_Shape_Opt = new wxRadioBox( this, ID_DRILL_SHAPE_OPT, _("Pads Drill Opt"), wxDefaultPosition, wxDefaultSize, m_Drill_Shape_OptNChoices, m_Drill_Shape_OptChoices, 1, wxRA_SPECIFY_COLS ); + m_Drill_Shape_Opt->SetSelection( 1 ); + bPlotOptionsSizer->Add( m_Drill_Shape_Opt, 0, wxALL|wxEXPAND, 5 ); + + wxString m_Scale_OptChoices[] = { _("Auto scale"), _("Scale 1"), _("Scale 1.5"), _("Scale 2"), _("Scale 3") }; + int m_Scale_OptNChoices = sizeof( m_Scale_OptChoices ) / sizeof( wxString ); + m_Scale_Opt = new wxRadioBox( this, wxID_ANY, _("Scale Opt"), wxDefaultPosition, wxDefaultSize, m_Scale_OptNChoices, m_Scale_OptChoices, 1, wxRA_SPECIFY_COLS ); + m_Scale_Opt->SetSelection( 0 ); + bPlotOptionsSizer->Add( m_Scale_Opt, 0, wxALL|wxEXPAND, 5 ); + + wxString m_PlotModeOptChoices[] = { _("Line"), _("Filled"), _("Sketch") }; + int m_PlotModeOptNChoices = sizeof( m_PlotModeOptChoices ) / sizeof( wxString ); + m_PlotModeOpt = new wxRadioBox( this, wxID_ANY, _("Plot Mode"), wxDefaultPosition, wxDefaultSize, m_PlotModeOptNChoices, m_PlotModeOptChoices, 1, wxRA_SPECIFY_COLS ); + m_PlotModeOpt->SetSelection( 0 ); + bPlotOptionsSizer->Add( m_PlotModeOpt, 0, wxALL|wxEXPAND, 5 ); + + wxString m_Choice_Plot_OffsetChoices[] = { _("Absolute"), _("Auxiliary axis") }; + int m_Choice_Plot_OffsetNChoices = sizeof( m_Choice_Plot_OffsetChoices ) / sizeof( wxString ); + m_Choice_Plot_Offset = new wxRadioBox( this, wxID_ANY, _("Plot Origin"), wxDefaultPosition, wxDefaultSize, m_Choice_Plot_OffsetNChoices, m_Choice_Plot_OffsetChoices, 1, wxRA_SPECIFY_COLS ); + m_Choice_Plot_Offset->SetSelection( 0 ); + bPlotOptionsSizer->Add( m_Choice_Plot_Offset, 0, wxALL|wxEXPAND, 5 ); + + bUpperSizer->Add( bPlotOptionsSizer, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizerFmtPlot; + bSizerFmtPlot = new wxBoxSizer( wxVERTICAL ); + + wxString m_PlotFormatOptChoices[] = { _("HPGL"), _("Gerber"), _("Postscript"), _("Postscript A4"), _("DXF Export") }; + int m_PlotFormatOptNChoices = sizeof( m_PlotFormatOptChoices ) / sizeof( wxString ); + m_PlotFormatOpt = new wxRadioBox( this, wxID_ANY, _("Plot Format"), wxDefaultPosition, wxDefaultSize, m_PlotFormatOptNChoices, m_PlotFormatOptChoices, 1, wxRA_SPECIFY_COLS ); + m_PlotFormatOpt->SetSelection( 1 ); + bSizerFmtPlot->Add( m_PlotFormatOpt, 0, wxALL|wxEXPAND, 5 ); + + wxStaticBoxSizer* m_HPGL_OptionsBox; + m_HPGL_OptionsBox = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("HPGL Options:") ), wxVERTICAL ); + + m_textPenSize = new wxStaticText( this, wxID_ANY, _("Pen size"), wxDefaultPosition, wxDefaultSize, 0 ); + m_textPenSize->Wrap( -1 ); + m_HPGL_OptionsBox->Add( m_textPenSize, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_HPGLPenSizeOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_HPGL_OptionsBox->Add( m_HPGLPenSizeOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_staticText3 = new wxStaticText( this, wxID_ANY, _("Pen Speed (cm/s)"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText3->Wrap( -1 ); + m_HPGL_OptionsBox->Add( m_staticText3, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_HPGLPenSpeedOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_HPGLPenSpeedOpt->SetToolTip( _("Set pen speed in cm/s") ); + + m_HPGL_OptionsBox->Add( m_HPGLPenSpeedOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + m_textPenOvr = new wxStaticText( this, wxID_ANY, _("Pen ovr"), wxDefaultPosition, wxDefaultSize, 0 ); + m_textPenOvr->Wrap( -1 ); + m_HPGL_OptionsBox->Add( m_textPenOvr, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_HPGLPenOverlayOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_HPGLPenOverlayOpt->SetToolTip( _("Set plot overlay for filling") ); + + m_HPGL_OptionsBox->Add( m_HPGLPenOverlayOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + bSizerFmtPlot->Add( m_HPGL_OptionsBox, 0, wxEXPAND, 5 ); + + wxStaticBoxSizer* sbSizerPSOpt; + sbSizerPSOpt = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("PS Options:") ), wxVERTICAL ); + + m_Plot_PS_Negative = new wxCheckBox( this, wxID_ANY, _("Plot negative"), wxDefaultPosition, wxDefaultSize, 0 ); + sbSizerPSOpt->Add( m_Plot_PS_Negative, 0, wxALL, 5 ); + + bSizerFmtPlot->Add( sbSizerPSOpt, 0, wxEXPAND, 5 ); + + wxStaticBoxSizer* sbSizerOutputDir; + sbSizerOutputDir = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Output Directory:") ), wxVERTICAL ); + + m_OutputDirectory = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + sbSizerOutputDir->Add( m_OutputDirectory, 0, wxALIGN_LEFT|wxEXPAND, 5 ); + + m_BrowseButton = new wxButton( this, ID_BROWSE_OUTPUT_DIRECTORY, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 ); + sbSizerOutputDir->Add( m_BrowseButton, 0, wxALL, 5 ); + + bSizerFmtPlot->Add( sbSizerOutputDir, 0, wxEXPAND, 5 ); + + bUpperSizer->Add( bSizerFmtPlot, 0, wxEXPAND, 5 ); + + wxBoxSizer* bButtonsSizer; + bButtonsSizer = new wxBoxSizer( wxVERTICAL ); + + m_PlotMirorOpt = new wxCheckBox( this, ID_MIROR_OPT, _("Plot mirror"), wxDefaultPosition, wxDefaultSize, 0 ); + bButtonsSizer->Add( m_PlotMirorOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_PlotNoViaOnMaskOpt = new wxCheckBox( this, ID_MASKVIA_OPT, _("Vias on mask"), wxDefaultPosition, wxDefaultSize, 0 ); + m_PlotNoViaOnMaskOpt->SetToolTip( _("Print/plot vias on mask layers. They are in this case not protected") ); + + bButtonsSizer->Add( m_PlotNoViaOnMaskOpt, 0, wxALL, 5 ); + + m_staticText6 = new wxStaticText( this, wxID_ANY, _("Default pen size"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText6->Wrap( -1 ); + m_staticText6->SetToolTip( _("Pen size used to draw items that have no pen size specified.\nUsed mainly to draw items in sketch mode.") ); + + bButtonsSizer->Add( m_staticText6, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_LinesWidth = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + bButtonsSizer->Add( m_LinesWidth, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bButtonsSizer->Add( 0, 20, 1, wxEXPAND, 5 ); + + m_staticText7 = new wxStaticText( this, wxID_ANY, _("X scale adjust"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText7->Wrap( -1 ); + bButtonsSizer->Add( m_staticText7, 0, wxRIGHT|wxLEFT, 5 ); + + m_FineAdjustXscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_FineAdjustXscaleOpt->SetToolTip( _("Set X scale adjust for exact scale plotting") ); + + bButtonsSizer->Add( m_FineAdjustXscaleOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + m_staticText8 = new wxStaticText( this, wxID_ANY, _("Y scale adjust"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText8->Wrap( -1 ); + bButtonsSizer->Add( m_staticText8, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_FineAdjustYscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + bButtonsSizer->Add( m_FineAdjustYscaleOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + + bButtonsSizer->Add( 0, 20, 1, wxEXPAND, 5 ); + + m_PlotButton = new wxButton( this, ID_EXEC_PLOT, _("Plot"), wxDefaultPosition, wxDefaultSize, 0 ); + m_PlotButton->SetDefault(); + bButtonsSizer->Add( m_PlotButton, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + m_buttonSaveOpt = new wxButton( this, ID_SAVE_OPT_PLOT, _("Save Options"), wxDefaultPosition, wxDefaultSize, 0 ); + bButtonsSizer->Add( m_buttonSaveOpt, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + m_buttonDrill = new wxButton( this, ID_CREATE_DRILL_FILE, _("Generate drill file"), wxDefaultPosition, wxDefaultSize, 0 ); + bButtonsSizer->Add( m_buttonDrill, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + m_buttonQuit = new wxButton( this, wxID_CANCEL, _("Quit"), wxDefaultPosition, wxDefaultSize, 0 ); + bButtonsSizer->Add( m_buttonQuit, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND, 5 ); + + bUpperSizer->Add( bButtonsSizer, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 ); + + bMainSizer->Add( bUpperSizer, 0, wxEXPAND, 5 ); + + m_staticText2 = new wxStaticText( this, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText2->Wrap( -1 ); + bMainSizer->Add( m_staticText2, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + m_MessagesBox = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE ); + m_MessagesBox->SetMinSize( wxSize( -1,120 ) ); + + bMainSizer->Add( m_MessagesBox, 1, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + this->SetSizer( bMainSizer ); + this->Layout(); + + // Connect Events + this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PLOT_BASE::OnCloseWindow ) ); + this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PLOT_BASE::OnInitDialog ) ); + m_PlotFormatOpt->Connect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::SetPlotFormat ), NULL, this ); + m_BrowseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnOutputDirectoryBrowseClicked ), NULL, this ); + m_PlotButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::Plot ), NULL, this ); + m_buttonSaveOpt->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::SaveOptPlot ), NULL, this ); + m_buttonDrill->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::CreateDrillFile ), NULL, this ); + m_buttonQuit->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnQuit ), NULL, this ); +} + +DIALOG_PLOT_BASE::~DIALOG_PLOT_BASE() +{ + // Disconnect Events + this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PLOT_BASE::OnCloseWindow ) ); + this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( DIALOG_PLOT_BASE::OnInitDialog ) ); + m_PlotFormatOpt->Disconnect( wxEVT_COMMAND_RADIOBOX_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::SetPlotFormat ), NULL, this ); + m_BrowseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnOutputDirectoryBrowseClicked ), NULL, this ); + m_PlotButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::Plot ), NULL, this ); + m_buttonSaveOpt->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::SaveOptPlot ), NULL, this ); + m_buttonDrill->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::CreateDrillFile ), NULL, this ); + m_buttonQuit->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnQuit ), NULL, this ); + +} diff --git a/pcbnew/dialogs/dialog_plot_base.fbp b/pcbnew/dialogs/dialog_plot_base.fbp index 7e5336395a..f1afb6a783 100644 --- a/pcbnew/dialogs/dialog_plot_base.fbp +++ b/pcbnew/dialogs/dialog_plot_base.fbp @@ -1,2328 +1,2385 @@ - - - - - - C++ - 1 - source_name - 0 - UTF-8 - connect - dialog_plot_base - 1000 - none - 1 - Dialog_Plot_base - - . - - 1 - 1 - 1 - 0 - - - - - 1 - 1 - impl_virtual - - - - 0 - wxID_ANY - - -1,350 - DIALOG_PLOT_BASE - - 575,590 - wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER - - Plot - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - OnCloseWindow - - - - - - OnInitDialog - - - - - - - - - - - - - - - - - - - - - - - bMainSizer - wxVERTICAL - none - - 5 - wxEXPAND - 0 - - - bUpperSizer - wxHORIZONTAL - none - - 5 - wxEXPAND - 1 - - - bLeftSizer - wxVERTICAL - none - - 5 - wxEXPAND - 1 - - wxID_ANY - Layers: - - sbLayersSizer - wxHORIZONTAL - none - - - 5 - wxALL - 1 - - wxID_ANY - Copper Layers: - - m_CopperLayersBoxSizer - wxVERTICAL - protected - - - - - 5 - wxALL - 1 - - wxID_ANY - Technical Layers: - - m_TechnicalLayersBoxSizer - wxVERTICAL - protected - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - 0 - - 1 - 1 - - - 0 - ID_USE_GERBER_EXTENSIONS - Use Proper Gerber Extensions - - - m_Use_Gerber_Extensions - protected - - - - - Use Proper Gerber Extensions - .GBL, .GTL, etc... - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - 0 - - 1 - 1 - - - 0 - wxID_ANY - Exclude pcb edge layer - - - m_Exclude_Edges_Pcb - protected - - - - - Exclude contents of the pcb edge layer from all other layers - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - 0 - - 1 - 1 - - - 0 - wxID_ANY - Print sheet reference - - - m_Plot_Sheet_Ref - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - 0 - - 1 - 1 - - - 0 - ID_ALLOW_PRINT_PAD_ON_SILKSCREEN - Print pads on silkscreen - - - m_Plot_Pads_on_Silkscreen - protected - - - - - Enable/disable print/plot pads on silkscreen layers When disable, pads are never potted on silkscreen layers When enable, pads are potted only if they appear on silkscreen layers - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - 0 - - 1 - 1 - - - 0 - ID_PRINT_VALUE - Print module value - - - m_Plot_Text_Value - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - 0 - - 1 - 1 - - - 0 - ID_PRINT_REF - Print module reference - - - m_Plot_Text_Ref - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - 0 - - 1 - 1 - - - 0 - ID_PRINT_MODULE_TEXTS - Print other module texts - - - m_Plot_Text_Div - protected - - - - - Enable/disable print/plot module field texts on silkscreen layers - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL - 0 - - - 0 - - 1 - 1 - - - 0 - ID_FORCE_PRINT_INVISIBLE_TEXT - Force print invisible texts - - - m_Plot_Invisible_Text - protected - - - - - Force print/plot module invisible texts on silkscreen layers - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bPlotOptionsSizer - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - - "No drill mark" "Small mark" "Real drill" - - 1 - 1 - - - 0 - ID_DRILL_SHAPE_OPT - Pads Drill Opt - 1 - - - m_Drill_Shape_Opt - protected - - 1 - - wxRA_SPECIFY_COLS - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - - "Auto scale" "Scale 1" "Scale 1.5" "Scale 2" "Scale 3" - - 1 - 1 - - - 0 - wxID_ANY - Scale Opt - 1 - - - m_Scale_Opt - protected - - 0 - - wxRA_SPECIFY_COLS - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - - "Line" "Filled" "Sketch" - - 1 - 1 - - - 0 - wxID_ANY - Plot Mode - 1 - - - m_PlotModeOpt - protected - - 0 - - wxRA_SPECIFY_COLS - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - - "Absolute" "Auxiliary axis" - - 1 - 1 - - - 0 - wxID_ANY - Plot Origin - 1 - - - m_Choice_Plot_Offset - protected - - 0 - - wxRA_SPECIFY_COLS - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizerFmtPlot - wxVERTICAL - none - - 5 - wxALL|wxEXPAND - 0 - - - "HPGL" "Gerber" "Postscript" "Postscript A4" "DXF Export" - - 1 - 1 - - - 0 - wxID_ANY - Plot Format - 1 - - - m_PlotFormatOpt - protected - - 1 - - wxRA_SPECIFY_COLS - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - SetPlotFormat - - - - - - - - - - 5 - wxEXPAND - 0 - - wxID_ANY - HPGL Options: - - m_HPGL_OptionsBox - wxVERTICAL - none - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - Pen size - - - m_textPenSize - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - - 0 - - m_HPGLPenSizeOpt - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - Pen Speed (cm/s) - - - m_staticText3 - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - - 0 - - m_HPGLPenSpeedOpt - protected - - - - - Set pen speed in cm/s - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - Pen ovr - - - m_textPenOvr - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - - 0 - - m_HPGLPenOverlayOpt - protected - - - - - Set plot overlay for filling - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - wxID_ANY - PS Options: - - sbSizerPSOpt - wxVERTICAL - none - - - 5 - wxALL - 0 - - - 0 - - 1 - 1 - - - 0 - wxID_ANY - Plot negative - - - m_Plot_PS_Negative - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - wxID_ANY - Output Directory: - - sbSizerOutputDir - wxVERTICAL - none - - - 5 - wxALIGN_LEFT|wxEXPAND - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - - 0 - - m_OutputDirectory - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL - 0 - - - - 1 - 0 - 1 - - - 0 - ID_BROWSE_OUTPUT_DIRECTORY - Browse... - - - m_BrowseButton - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOutputDirectoryBrowseClicked - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND - 0 - - - bButtonsSizer - wxVERTICAL - none - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - 0 - - 1 - 1 - - - 0 - ID_MIROR_OPT - Plot mirror - - - m_PlotMirorOpt - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL - 0 - - - 0 - - 1 - 1 - - - 0 - ID_MASKVIA_OPT - Vias on mask - - - m_PlotNoViaOnMaskOpt - protected - - - - - Print/plot vias on mask layers. They are in this case not protected - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - Default pen size - - - m_staticText6 - protected - - - - - Pen size used to draw items that have no pen size specified. Used mainly to draw items in sketch mode. - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - - 0 - - m_LinesWidth - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 20 - protected - 0 - - - - 5 - wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - X scale adjust - - - m_staticText7 - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - - 0 - - m_FineAdjustXscaleOpt - protected - - - - - Set X scale adjust for exact scale plotting - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - Y scale adjust - - - m_staticText8 - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - - 0 - - m_FineAdjustYscaleOpt - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 20 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - - - 1 - 1 - 1 - - - 0 - ID_EXEC_PLOT - Plot - - - m_PlotButton - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - Plot - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - - - 1 - 0 - 1 - - - 0 - ID_SAVE_OPT_PLOT - Save Options - - - m_buttonSaveOpt - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - SaveOptPlot - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - - - 1 - 0 - 1 - - - 0 - ID_CREATE_DRILL_FILE - Generate drill file - - - m_buttonDrill - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - CreateDrillFile - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - - - 1 - 0 - 1 - - - 0 - wxID_CANCEL - Quit - - - m_buttonQuit - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnQuit - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - - - 1 - 1 - - - 0 - wxID_ANY - Messages: - - - m_staticText2 - protected - - - - - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND - 1 - - - - 1 - 1 - - - 0 - wxID_ANY - - 0 - -1,120 - m_MessagesBox - protected - - - wxTE_MULTILINE - - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + C++ + 1 + source_name + 0 + UTF-8 + connect + dialog_plot_base + 1000 + none + 1 + Dialog_Plot_base + + . + + 1 + 1 + 1 + 0 + + + + + 1 + 1 + impl_virtual + + + + 0 + wxID_ANY + + -1,350 + DIALOG_PLOT_BASE + + 575,590 + wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER + + Plot + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + OnCloseWindow + + + + + + OnInitDialog + + + + + + + + + + + + + + + + + + + + + + + bMainSizer + wxVERTICAL + none + + 5 + wxEXPAND + 0 + + + bUpperSizer + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + + bLeftSizer + wxVERTICAL + none + + 5 + wxEXPAND + 1 + + wxID_ANY + Layers: + + sbLayersSizer + wxHORIZONTAL + none + + + 5 + wxALL + 1 + + wxID_ANY + Copper Layers: + + m_CopperLayersBoxSizer + wxVERTICAL + protected + + + + + 5 + wxALL + 1 + + wxID_ANY + Technical Layers: + + m_TechnicalLayersBoxSizer + wxVERTICAL + protected + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + 0 + + 1 + 1 + + + 0 + ID_USE_GERBER_EXTENSIONS + Use Proper Gerber Extensions + + + m_Use_Gerber_Extensions + protected + + + + + Use Proper Gerber Extensions - .GBL, .GTL, etc... + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + 0 + + 1 + 1 + + + 0 + wxID_ANY + Exclude pcb edge layer + + + m_Exclude_Edges_Pcb + protected + + + + + Exclude contents of the pcb edge layer from all other layers + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + 0 + + 1 + 1 + + + 0 + wxID_ANY + Subtract Mask from Silk + + + m_SubtractMaskFromSilk + protected + + + + + Remove silkscreen from areas without soldermask + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + 0 + + 1 + 1 + + + 0 + wxID_ANY + Print sheet reference + + + m_Plot_Sheet_Ref + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + 0 + + 1 + 1 + + + 0 + ID_ALLOW_PRINT_PAD_ON_SILKSCREEN + Print pads on silkscreen + + + m_Plot_Pads_on_Silkscreen + protected + + + + + Enable/disable print/plot pads on silkscreen layers When disable, pads are never potted on silkscreen layers When enable, pads are potted only if they appear on silkscreen layers + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + 0 + + 1 + 1 + + + 0 + ID_PRINT_VALUE + Print module value + + + m_Plot_Text_Value + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + 0 + + 1 + 1 + + + 0 + ID_PRINT_REF + Print module reference + + + m_Plot_Text_Ref + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + 0 + + 1 + 1 + + + 0 + ID_PRINT_MODULE_TEXTS + Print other module texts + + + m_Plot_Text_Div + protected + + + + + Enable/disable print/plot module field texts on silkscreen layers + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + 0 + + 1 + 1 + + + 0 + ID_FORCE_PRINT_INVISIBLE_TEXT + Force print invisible texts + + + m_Plot_Invisible_Text + protected + + + + + Force print/plot module invisible texts on silkscreen layers + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + + bPlotOptionsSizer + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 0 + + + "No drill mark" "Small mark" "Real drill" + + 1 + 1 + + + 0 + ID_DRILL_SHAPE_OPT + Pads Drill Opt + 1 + + + m_Drill_Shape_Opt + protected + + 1 + + wxRA_SPECIFY_COLS + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + + "Auto scale" "Scale 1" "Scale 1.5" "Scale 2" "Scale 3" + + 1 + 1 + + + 0 + wxID_ANY + Scale Opt + 1 + + + m_Scale_Opt + protected + + 0 + + wxRA_SPECIFY_COLS + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + + "Line" "Filled" "Sketch" + + 1 + 1 + + + 0 + wxID_ANY + Plot Mode + 1 + + + m_PlotModeOpt + protected + + 0 + + wxRA_SPECIFY_COLS + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxEXPAND + 0 + + + "Absolute" "Auxiliary axis" + + 1 + 1 + + + 0 + wxID_ANY + Plot Origin + 1 + + + m_Choice_Plot_Offset + protected + + 0 + + wxRA_SPECIFY_COLS + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + + bSizerFmtPlot + wxVERTICAL + none + + 5 + wxALL|wxEXPAND + 0 + + + "HPGL" "Gerber" "Postscript" "Postscript A4" "DXF Export" + + 1 + 1 + + + 0 + wxID_ANY + Plot Format + 1 + + + m_PlotFormatOpt + protected + + 1 + + wxRA_SPECIFY_COLS + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + SetPlotFormat + + + + + + + + + + 5 + wxEXPAND + 0 + + wxID_ANY + HPGL Options: + + m_HPGL_OptionsBox + wxVERTICAL + none + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + Pen size + + + m_textPenSize + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + + 0 + + m_HPGLPenSizeOpt + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + Pen Speed (cm/s) + + + m_staticText3 + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + + 0 + + m_HPGLPenSpeedOpt + protected + + + + + Set pen speed in cm/s + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + Pen ovr + + + m_textPenOvr + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + + 0 + + m_HPGLPenOverlayOpt + protected + + + + + Set plot overlay for filling + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + wxID_ANY + PS Options: + + sbSizerPSOpt + wxVERTICAL + none + + + 5 + wxALL + 0 + + + 0 + + 1 + 1 + + + 0 + wxID_ANY + Plot negative + + + m_Plot_PS_Negative + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + wxID_ANY + Output Directory: + + sbSizerOutputDir + wxVERTICAL + none + + + 5 + wxALIGN_LEFT|wxEXPAND + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + + 0 + + m_OutputDirectory + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + + 1 + 0 + 1 + + + 0 + ID_BROWSE_OUTPUT_DIRECTORY + Browse... + + + m_BrowseButton + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOutputDirectoryBrowseClicked + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALIGN_CENTER_VERTICAL|wxEXPAND + 0 + + + bButtonsSizer + wxVERTICAL + none + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + 0 + + 1 + 1 + + + 0 + ID_MIROR_OPT + Plot mirror + + + m_PlotMirorOpt + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + + 0 + + 1 + 1 + + + 0 + ID_MASKVIA_OPT + Vias on mask + + + m_PlotNoViaOnMaskOpt + protected + + + + + Print/plot vias on mask layers. They are in this case not protected + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + Default pen size + + + m_staticText6 + protected + + + + + Pen size used to draw items that have no pen size specified. Used mainly to draw items in sketch mode. + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + + 0 + + m_LinesWidth + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 20 + protected + 0 + + + + 5 + wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + X scale adjust + + + m_staticText7 + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + + 0 + + m_FineAdjustXscaleOpt + protected + + + + + Set X scale adjust for exact scale plotting + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + Y scale adjust + + + m_staticText8 + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + + 0 + + m_FineAdjustYscaleOpt + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + 20 + protected + 0 + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + + + 1 + 1 + 1 + + + 0 + ID_EXEC_PLOT + Plot + + + m_PlotButton + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + Plot + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + + + 1 + 0 + 1 + + + 0 + ID_SAVE_OPT_PLOT + Save Options + + + m_buttonSaveOpt + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + SaveOptPlot + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + + + 1 + 0 + 1 + + + 0 + ID_CREATE_DRILL_FILE + Generate drill file + + + m_buttonDrill + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + CreateDrillFile + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + + + 1 + 0 + 1 + + + 0 + wxID_CANCEL + Quit + + + m_buttonQuit + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnQuit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + + + 1 + 1 + + + 0 + wxID_ANY + Messages: + + + m_staticText2 + protected + + + + + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 1 + + + + 1 + 1 + + + 0 + wxID_ANY + + 0 + -1,120 + m_MessagesBox + protected + + + wxTE_MULTILINE + + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pcbnew/dialogs/dialog_plot_base.h b/pcbnew/dialogs/dialog_plot_base.h index 09b94e00b9..e7b5418e1e 100644 --- a/pcbnew/dialogs/dialog_plot_base.h +++ b/pcbnew/dialogs/dialog_plot_base.h @@ -1,113 +1,114 @@ -/////////////////////////////////////////////////////////////////////////// -// C++ code generated with wxFormBuilder (version Sep 8 2010) -// http://www.wxformbuilder.org/ -// -// PLEASE DO "NOT" EDIT THIS FILE! -/////////////////////////////////////////////////////////////////////////// - -#ifndef __dialog_plot_base__ -#define __dialog_plot_base__ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/////////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////////////// -/// Class DIALOG_PLOT_BASE -/////////////////////////////////////////////////////////////////////////////// -class DIALOG_PLOT_BASE : public wxDialog -{ - private: - - protected: - enum - { - ID_USE_GERBER_EXTENSIONS = 1000, - ID_ALLOW_PRINT_PAD_ON_SILKSCREEN, - ID_PRINT_VALUE, - ID_PRINT_REF, - ID_PRINT_MODULE_TEXTS, - ID_FORCE_PRINT_INVISIBLE_TEXT, - ID_DRILL_SHAPE_OPT, - ID_BROWSE_OUTPUT_DIRECTORY, - ID_MIROR_OPT, - ID_MASKVIA_OPT, - ID_EXEC_PLOT, - ID_SAVE_OPT_PLOT, - ID_CREATE_DRILL_FILE, - }; - - wxStaticBoxSizer* m_CopperLayersBoxSizer; - wxStaticBoxSizer* m_TechnicalLayersBoxSizer; - wxCheckBox* m_Use_Gerber_Extensions; - wxCheckBox* m_Exclude_Edges_Pcb; - wxCheckBox* m_Plot_Sheet_Ref; - wxCheckBox* m_Plot_Pads_on_Silkscreen; - wxCheckBox* m_Plot_Text_Value; - wxCheckBox* m_Plot_Text_Ref; - wxCheckBox* m_Plot_Text_Div; - wxCheckBox* m_Plot_Invisible_Text; - wxRadioBox* m_Drill_Shape_Opt; - wxRadioBox* m_Scale_Opt; - wxRadioBox* m_PlotModeOpt; - wxRadioBox* m_Choice_Plot_Offset; - wxRadioBox* m_PlotFormatOpt; - wxStaticText* m_textPenSize; - wxTextCtrl* m_HPGLPenSizeOpt; - wxStaticText* m_staticText3; - wxTextCtrl* m_HPGLPenSpeedOpt; - wxStaticText* m_textPenOvr; - wxTextCtrl* m_HPGLPenOverlayOpt; - wxCheckBox* m_Plot_PS_Negative; - wxTextCtrl* m_OutputDirectory; - wxButton* m_BrowseButton; - wxCheckBox* m_PlotMirorOpt; - wxCheckBox* m_PlotNoViaOnMaskOpt; - wxStaticText* m_staticText6; - wxTextCtrl* m_LinesWidth; - - wxStaticText* m_staticText7; - wxTextCtrl* m_FineAdjustXscaleOpt; - wxStaticText* m_staticText8; - wxTextCtrl* m_FineAdjustYscaleOpt; - - wxButton* m_PlotButton; - wxButton* m_buttonSaveOpt; - wxButton* m_buttonDrill; - wxButton* m_buttonQuit; - wxStaticText* m_staticText2; - wxTextCtrl* m_MessagesBox; - - // Virtual event handlers, overide them in your derived class - virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); } - virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); } - virtual void SetPlotFormat( wxCommandEvent& event ) { event.Skip(); } - virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); } - virtual void Plot( wxCommandEvent& event ) { event.Skip(); } - virtual void SaveOptPlot( wxCommandEvent& event ) { event.Skip(); } - virtual void CreateDrillFile( wxCommandEvent& event ) { event.Skip(); } - virtual void OnQuit( wxCommandEvent& event ) { event.Skip(); } - - - public: - - DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Plot"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 575,590 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); - ~DIALOG_PLOT_BASE(); - -}; - -#endif //__dialog_plot_base__ +/////////////////////////////////////////////////////////////////////////// +// C++ code generated with wxFormBuilder (version Sep 8 2010) +// http://www.wxformbuilder.org/ +// +// PLEASE DO "NOT" EDIT THIS FILE! +/////////////////////////////////////////////////////////////////////////// + +#ifndef __dialog_plot_base__ +#define __dialog_plot_base__ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/////////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////////////// +/// Class DIALOG_PLOT_BASE +/////////////////////////////////////////////////////////////////////////////// +class DIALOG_PLOT_BASE : public wxDialog +{ + private: + + protected: + enum + { + ID_USE_GERBER_EXTENSIONS = 1000, + ID_ALLOW_PRINT_PAD_ON_SILKSCREEN, + ID_PRINT_VALUE, + ID_PRINT_REF, + ID_PRINT_MODULE_TEXTS, + ID_FORCE_PRINT_INVISIBLE_TEXT, + ID_DRILL_SHAPE_OPT, + ID_BROWSE_OUTPUT_DIRECTORY, + ID_MIROR_OPT, + ID_MASKVIA_OPT, + ID_EXEC_PLOT, + ID_SAVE_OPT_PLOT, + ID_CREATE_DRILL_FILE, + }; + + wxStaticBoxSizer* m_CopperLayersBoxSizer; + wxStaticBoxSizer* m_TechnicalLayersBoxSizer; + wxCheckBox* m_Use_Gerber_Extensions; + wxCheckBox* m_Exclude_Edges_Pcb; + wxCheckBox* m_SubtractMaskFromSilk; + wxCheckBox* m_Plot_Sheet_Ref; + wxCheckBox* m_Plot_Pads_on_Silkscreen; + wxCheckBox* m_Plot_Text_Value; + wxCheckBox* m_Plot_Text_Ref; + wxCheckBox* m_Plot_Text_Div; + wxCheckBox* m_Plot_Invisible_Text; + wxRadioBox* m_Drill_Shape_Opt; + wxRadioBox* m_Scale_Opt; + wxRadioBox* m_PlotModeOpt; + wxRadioBox* m_Choice_Plot_Offset; + wxRadioBox* m_PlotFormatOpt; + wxStaticText* m_textPenSize; + wxTextCtrl* m_HPGLPenSizeOpt; + wxStaticText* m_staticText3; + wxTextCtrl* m_HPGLPenSpeedOpt; + wxStaticText* m_textPenOvr; + wxTextCtrl* m_HPGLPenOverlayOpt; + wxCheckBox* m_Plot_PS_Negative; + wxTextCtrl* m_OutputDirectory; + wxButton* m_BrowseButton; + wxCheckBox* m_PlotMirorOpt; + wxCheckBox* m_PlotNoViaOnMaskOpt; + wxStaticText* m_staticText6; + wxTextCtrl* m_LinesWidth; + + wxStaticText* m_staticText7; + wxTextCtrl* m_FineAdjustXscaleOpt; + wxStaticText* m_staticText8; + wxTextCtrl* m_FineAdjustYscaleOpt; + + wxButton* m_PlotButton; + wxButton* m_buttonSaveOpt; + wxButton* m_buttonDrill; + wxButton* m_buttonQuit; + wxStaticText* m_staticText2; + wxTextCtrl* m_MessagesBox; + + // Virtual event handlers, overide them in your derived class + virtual void OnCloseWindow( wxCloseEvent& event ) { event.Skip(); } + virtual void OnInitDialog( wxInitDialogEvent& event ) { event.Skip(); } + virtual void SetPlotFormat( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); } + virtual void Plot( wxCommandEvent& event ) { event.Skip(); } + virtual void SaveOptPlot( wxCommandEvent& event ) { event.Skip(); } + virtual void CreateDrillFile( wxCommandEvent& event ) { event.Skip(); } + virtual void OnQuit( wxCommandEvent& event ) { event.Skip(); } + + + public: + + DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Plot"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 575,590 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + ~DIALOG_PLOT_BASE(); + +}; + +#endif //__dialog_plot_base__ diff --git a/pcbnew/pcbplot.cpp b/pcbnew/pcbplot.cpp index 8216b5e2c8..e507d5a13f 100644 --- a/pcbnew/pcbplot.cpp +++ b/pcbnew/pcbplot.cpp @@ -35,6 +35,7 @@ // PCB_Plot_Options constructor: set the default values for plot options: PCB_Plot_Options::PCB_Plot_Options() { + subtractMaskFromSilk = true; Sel_Texte_Reference = true; Sel_Texte_Valeur = true; Sel_Texte_Divers = true; @@ -248,6 +249,8 @@ void DIALOG_PLOT::Init_Dialog() // Option for excluding contents of "Edges Pcb" layer m_Exclude_Edges_Pcb->SetValue( g_pcb_plot_options.Exclude_Edges_Pcb ); + m_SubtractMaskFromSilk->SetValue( g_pcb_plot_options.GetSubtractMaskFromSilk() ); + // Option to plot page references: if( m_Parent->m_Print_Sheet_Ref ) { @@ -364,6 +367,7 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event ) m_HPGLPenOverlayOpt->Enable( false ); m_Exclude_Edges_Pcb->SetValue( false ); m_Exclude_Edges_Pcb->Enable( false ); + m_SubtractMaskFromSilk->Enable( false ); m_Use_Gerber_Extensions->Enable( false ); m_Scale_Opt->Enable( true ); m_FineAdjustXscaleOpt->Enable( true ); @@ -383,6 +387,7 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event ) m_HPGLPenSpeedOpt->Enable( false ); m_HPGLPenOverlayOpt->Enable( false ); m_Exclude_Edges_Pcb->Enable( true ); + m_SubtractMaskFromSilk->Enable( true ); m_Use_Gerber_Extensions->Enable( true ); m_Scale_Opt->SetSelection( 1 ); m_Scale_Opt->Enable( false ); @@ -403,6 +408,7 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event ) m_HPGLPenOverlayOpt->Enable( true ); m_Exclude_Edges_Pcb->SetValue( false ); m_Exclude_Edges_Pcb->Enable( false ); + m_SubtractMaskFromSilk->Enable( false ); m_Use_Gerber_Extensions->Enable( false ); m_Scale_Opt->Enable( true ); m_FineAdjustXscaleOpt->Enable( false ); @@ -423,6 +429,7 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event ) m_HPGLPenOverlayOpt->Enable( false ); m_Exclude_Edges_Pcb->SetValue( false ); m_Exclude_Edges_Pcb->Enable( false ); + m_SubtractMaskFromSilk->Enable( false ); m_Use_Gerber_Extensions->Enable( false ); m_Scale_Opt->Enable( false ); m_Scale_Opt->SetSelection( 1 ); @@ -441,6 +448,8 @@ void DIALOG_PLOT::SaveOptPlot( wxCommandEvent& event ) { g_pcb_plot_options.Exclude_Edges_Pcb = m_Exclude_Edges_Pcb->GetValue(); + g_pcb_plot_options.SetSubtractMaskFromSilk( m_SubtractMaskFromSilk->GetValue() ); + if( m_Plot_Sheet_Ref ) g_pcb_plot_options.Plot_Frame_Ref = m_Plot_Sheet_Ref->GetValue(); diff --git a/pcbnew/pcbplot.h b/pcbnew/pcbplot.h index 491320a766..a9b756b5d9 100644 --- a/pcbnew/pcbplot.h +++ b/pcbnew/pcbplot.h @@ -64,12 +64,16 @@ public: double ScaleAdjX; double ScaleAdjY; +private: wxString outputDirectory; + bool subtractMaskFromSilk; public: PCB_Plot_Options(); void SetOutputDirectory( wxString aDir ) { outputDirectory = aDir; }; wxString GetOutputDirectory() { return outputDirectory; }; + void SetSubtractMaskFromSilk( bool aSubtract ) { subtractMaskFromSilk = aSubtract; }; + bool GetSubtractMaskFromSilk() { return subtractMaskFromSilk; }; }; extern PCB_Plot_Options g_pcb_plot_options; diff --git a/pcbnew/plot_rtn.cpp b/pcbnew/plot_rtn.cpp index cc09ebadc1..34078be583 100644 --- a/pcbnew/plot_rtn.cpp +++ b/pcbnew/plot_rtn.cpp @@ -746,6 +746,24 @@ void WinEDA_BasePcbFrame::Plot_Layer( PLOTTER* plotter, int Layer, default: Plot_Serigraphie( plotter, layer_mask, trace_mode ); + // Gerber: Subtract soldermask from silkscreen if enabled + if( plotter->GetPlotterType() == PLOT_FORMAT_GERBER + && g_pcb_plot_options.GetSubtractMaskFromSilk() ) + { + if( Layer == SILKSCREEN_N_FRONT ) + { + layer_mask = g_TabOneLayerMask[SOLDERMASK_N_FRONT]; + } + else + { + layer_mask = g_TabOneLayerMask[SOLDERMASK_N_BACK]; + } + // Set layer polarity to negative + plotter->SetLayerPolarity( false ); + Plot_Standard_Layer( plotter, layer_mask, + g_pcb_plot_options.DrawViaOnMaskLayer, + trace_mode ); + } break; } }