From 73bdd76a5c1dc44f2cb701ad35e7717575d4ab37 Mon Sep 17 00:00:00 2001 From: Marco Mattila Date: Sun, 30 Jan 2011 20:55:56 +0200 Subject: [PATCH] Tune pcb plot dialog layout. Make output directory accept relative paths. --- pcbnew/dialogs/dialog_plot_base.cpp | 361 +- pcbnew/dialogs/dialog_plot_base.fbp | 6706 ++++++++++++++------------- pcbnew/dialogs/dialog_plot_base.h | 57 +- pcbnew/pcb_plot_params.cpp | 34 - pcbnew/pcb_plot_params.h | 1 - pcbnew/pcbplot.cpp | 102 +- 6 files changed, 3828 insertions(+), 3433 deletions(-) diff --git a/pcbnew/dialogs/dialog_plot_base.cpp b/pcbnew/dialogs/dialog_plot_base.cpp index 3388034faf..b1e8e2fb19 100644 --- a/pcbnew/dialogs/dialog_plot_base.cpp +++ b/pcbnew/dialogs/dialog_plot_base.cpp @@ -14,14 +14,20 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr this->SetSizeHints( wxSize( -1,350 ), wxDefaultSize ); wxBoxSizer* bMainSizer; - bMainSizer = new wxBoxSizer( wxVERTICAL ); + bMainSizer = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer12; + bSizer12 = new wxBoxSizer( wxVERTICAL ); + + wxString m_plotFormatOptChoices[] = { _("HPGL"), _("Gerber"), _("Postscript"), _("Postscript A4"), _("DXF") }; + int m_plotFormatOptNChoices = sizeof( m_plotFormatOptChoices ) / sizeof( wxString ); + m_plotFormatOpt = new wxRadioBox( this, wxID_ANY, _("Format"), wxDefaultPosition, wxDefaultSize, m_plotFormatOptNChoices, m_plotFormatOptChoices, 1, 0 ); + m_plotFormatOpt->SetSelection( 0 ); + bSizer12->Add( m_plotFormatOpt, 0, wxEXPAND, 5 ); wxBoxSizer* bUpperSizer; bUpperSizer = new wxBoxSizer( wxHORIZONTAL ); - wxBoxSizer* bLeftSizer; - bLeftSizer = new wxBoxSizer( wxVERTICAL ); - wxStaticBoxSizer* sbLayersSizer; sbLayersSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Layers") ), wxHORIZONTAL ); @@ -33,168 +39,256 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr sbLayersSizer->Add( m_TechnicalLayersBoxSizer, 1, wxALL, 5 ); - bLeftSizer->Add( sbLayersSizer, 1, wxEXPAND, 5 ); - - m_useGerberExtensions = new wxCheckBox( this, wxID_ANY, _("Use proper Gerber extensions"), wxDefaultPosition, wxDefaultSize, 0 ); - m_useGerberExtensions->SetToolTip( _("Use Proper Gerber Extensions - .GBL, .GTL, etc...") ); - - bLeftSizer->Add( m_useGerberExtensions, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_excludeEdgeLayerOpt = new wxCheckBox( this, wxID_ANY, _("Exclude pcb edge layer"), wxDefaultPosition, wxDefaultSize, 0 ); - m_excludeEdgeLayerOpt->SetToolTip( _("Exclude contents of the pcb edge layer from all other layers") ); - - bLeftSizer->Add( m_excludeEdgeLayerOpt, 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, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_plotSheetRef = new wxCheckBox( this, wxID_ANY, _("Plot sheet reference"), wxDefaultPosition, wxDefaultSize, 0 ); - bLeftSizer->Add( m_plotSheetRef, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_plotPads_on_Silkscreen = new wxCheckBox( this, ID_ALLOW_PRINT_PAD_ON_SILKSCREEN, _("Plot pads on silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); - m_plotPads_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_plotPads_on_Silkscreen, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_plotModuleValueOpt = new wxCheckBox( this, wxID_ANY, _("Plot module value"), wxDefaultPosition, wxDefaultSize, 0 ); - bLeftSizer->Add( m_plotModuleValueOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_plotModuleRefOpt = new wxCheckBox( this, ID_PRINT_REF, _("Plot module reference"), wxDefaultPosition, wxDefaultSize, 0 ); - bLeftSizer->Add( m_plotModuleRefOpt, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_plotTextOther = new wxCheckBox( this, wxID_ANY, _("Plot other module texts"), wxDefaultPosition, wxDefaultSize, 0 ); - m_plotTextOther->SetToolTip( _("Enable/disable print/plot module field texts on silkscreen layers") ); - - bLeftSizer->Add( m_plotTextOther, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - m_plotInvisibleText = new wxCheckBox( this, wxID_ANY, _("Force plot invisible texts"), wxDefaultPosition, wxDefaultSize, 0 ); - m_plotInvisibleText->SetToolTip( _("Force print/plot module invisible texts on silkscreen layers") ); - - bLeftSizer->Add( m_plotInvisibleText, 0, wxALL, 5 ); - - bUpperSizer->Add( bLeftSizer, 2, wxEXPAND, 5 ); + bUpperSizer->Add( sbLayersSizer, 1, wxALL, 3 ); wxBoxSizer* bPlotOptionsSizer; bPlotOptionsSizer = new wxBoxSizer( wxVERTICAL ); - wxString m_drillShapeOptChoices[] = { _("No drill mark"), _("Small mark"), _("Actual hole") }; - int m_drillShapeOptNChoices = sizeof( m_drillShapeOptChoices ) / sizeof( wxString ); - m_drillShapeOpt = new wxRadioBox( this, wxID_ANY, _("Hole Options"), wxDefaultPosition, wxDefaultSize, m_drillShapeOptNChoices, m_drillShapeOptChoices, 1, wxRA_SPECIFY_COLS ); - m_drillShapeOpt->SetSelection( 0 ); - bPlotOptionsSizer->Add( m_drillShapeOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + wxStaticBoxSizer* sbOptionsSizer; + sbOptionsSizer = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxVERTICAL ); - wxString m_scaleOptChoices[] = { _("Auto scale"), _("Scale 1"), _("Scale 1.5"), _("Scale 2"), _("Scale 3") }; + m_plotSheetRef = new wxCheckBox( this, wxID_ANY, _("Plot sheet reference on all layers"), wxDefaultPosition, wxDefaultSize, 0 ); + sbOptionsSizer->Add( m_plotSheetRef, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); + + m_plotPads_on_Silkscreen = new wxCheckBox( this, ID_ALLOW_PRINT_PAD_ON_SILKSCREEN, _("Plot pads on silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); + m_plotPads_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") ); + + sbOptionsSizer->Add( m_plotPads_on_Silkscreen, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); + + m_plotModuleValueOpt = new wxCheckBox( this, wxID_ANY, _("Plot module value on silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); + sbOptionsSizer->Add( m_plotModuleValueOpt, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); + + m_plotModuleRefOpt = new wxCheckBox( this, ID_PRINT_REF, _("Plot module reference on silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); + sbOptionsSizer->Add( m_plotModuleRefOpt, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); + + m_plotTextOther = new wxCheckBox( this, wxID_ANY, _("Plot other module texts on silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); + m_plotTextOther->SetToolTip( _("Enable/disable print/plot module field texts on silkscreen layers") ); + + sbOptionsSizer->Add( m_plotTextOther, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); + + m_plotInvisibleText = new wxCheckBox( this, wxID_ANY, _("Plot invisible texts on silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); + m_plotInvisibleText->SetToolTip( _("Force print/plot module invisible texts on silkscreen layers") ); + + sbOptionsSizer->Add( m_plotInvisibleText, 0, wxALL, 2 ); + + m_plotNoViaOnMaskOpt = new wxCheckBox( this, wxID_ANY, _("Do not tent vias"), wxDefaultPosition, wxDefaultSize, 0 ); + m_plotNoViaOnMaskOpt->SetToolTip( _("Print/plot vias on mask layers. They are in this case not protected") ); + + sbOptionsSizer->Add( m_plotNoViaOnMaskOpt, 0, wxALL, 2 ); + + m_plotMirrorOpt = new wxCheckBox( this, ID_MIROR_OPT, _("Mirrored plot"), wxDefaultPosition, wxDefaultSize, 0 ); + sbOptionsSizer->Add( m_plotMirrorOpt, 0, wxALL, 2 ); + + wxBoxSizer* bSizer14; + bSizer14 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer15; + bSizer15 = new wxBoxSizer( wxVERTICAL ); + + m_staticText11 = new wxStaticText( this, wxID_ANY, _("Drill marks:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText11->Wrap( -1 ); + bSizer15->Add( m_staticText11, 0, wxALL, 5 ); + + wxString m_drillShapeOptChoices[] = { _("None"), _("Small"), _("Actual size") }; + int m_drillShapeOptNChoices = sizeof( m_drillShapeOptChoices ) / sizeof( wxString ); + m_drillShapeOpt = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_drillShapeOptNChoices, m_drillShapeOptChoices, 0 ); + m_drillShapeOpt->SetSelection( 0 ); + bSizer15->Add( m_drillShapeOpt, 0, wxEXPAND, 5 ); + + m_staticText12 = new wxStaticText( this, wxID_ANY, _("Scaling:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText12->Wrap( -1 ); + bSizer15->Add( m_staticText12, 0, wxALL, 5 ); + + wxString m_scaleOptChoices[] = { _("Auto"), _("1:1"), _("3:2"), _("2:1"), _("3:1") }; int m_scaleOptNChoices = sizeof( m_scaleOptChoices ) / sizeof( wxString ); - m_scaleOpt = new wxRadioBox( this, wxID_ANY, _("Scale"), wxDefaultPosition, wxDefaultSize, m_scaleOptNChoices, m_scaleOptChoices, 1, wxRA_SPECIFY_COLS ); + m_scaleOpt = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_scaleOptNChoices, m_scaleOptChoices, 0 ); m_scaleOpt->SetSelection( 0 ); - bPlotOptionsSizer->Add( m_scaleOpt, 0, wxEXPAND|wxALL, 5 ); + bSizer15->Add( m_scaleOpt, 0, wxEXPAND, 5 ); + + bSizer14->Add( bSizer15, 1, wxALL|wxEXPAND, 3 ); + + wxBoxSizer* bSizer16; + bSizer16 = new wxBoxSizer( wxVERTICAL ); + + m_staticText13 = new wxStaticText( this, wxID_ANY, _("Plot mode:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText13->Wrap( -1 ); + bSizer16->Add( m_staticText13, 0, wxALL, 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 = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_plotModeOptNChoices, m_plotModeOptChoices, 0 ); m_plotModeOpt->SetSelection( 0 ); - bPlotOptionsSizer->Add( m_plotModeOpt, 0, wxALL|wxEXPAND, 5 ); + bSizer16->Add( m_plotModeOpt, 0, wxEXPAND, 5 ); - wxString m_choicePlotOffsetChoices[] = { _("Absolute"), _("Auxiliary axis") }; - int m_choicePlotOffsetNChoices = sizeof( m_choicePlotOffsetChoices ) / sizeof( wxString ); - m_choicePlotOffset = new wxRadioBox( this, wxID_ANY, _("Plot Origin"), wxDefaultPosition, wxDefaultSize, m_choicePlotOffsetNChoices, m_choicePlotOffsetChoices, 1, wxRA_SPECIFY_COLS ); - m_choicePlotOffset->SetSelection( 1 ); - bPlotOptionsSizer->Add( m_choicePlotOffset, 0, wxALL|wxEXPAND, 5 ); + m_textDefaultPenSize = new wxStaticText( this, wxID_ANY, _("Default\nlinewidth"), wxDefaultPosition, wxDefaultSize, 0 ); + m_textDefaultPenSize->Wrap( -1 ); + m_textDefaultPenSize->SetToolTip( _("Pen size used to draw items that have no pen size specified.\nUsed mainly to draw items in sketch mode.") ); - bUpperSizer->Add( bPlotOptionsSizer, 0, wxEXPAND, 5 ); + bSizer16->Add( m_textDefaultPenSize, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - wxBoxSizer* bSizerFmtPlot; - bSizerFmtPlot = new wxBoxSizer( wxVERTICAL ); + m_linesWidth = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_linesWidth->SetToolTip( _("Line width for, e.g., sheet references.") ); - 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, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + bSizer16->Add( m_linesWidth, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + + bSizer14->Add( bSizer16, 1, wxALL|wxEXPAND, 3 ); + + sbOptionsSizer->Add( bSizer14, 1, wxALL|wxEXPAND, 3 ); + + bPlotOptionsSizer->Add( sbOptionsSizer, 0, wxALL|wxEXPAND, 3 ); + + bUpperSizer->Add( bPlotOptionsSizer, 1, 0, 5 ); + + wxBoxSizer* bPlotIndOptionsSizer; + bPlotIndOptionsSizer = new wxBoxSizer( wxVERTICAL ); + + wxStaticBoxSizer* m_Gerber_OptionsBox; + m_Gerber_OptionsBox = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Gerber Options") ), wxVERTICAL ); + + m_useGerberExtensions = new wxCheckBox( this, wxID_ANY, _("Use proper file extensions"), wxDefaultPosition, wxDefaultSize, 0 ); + m_useGerberExtensions->SetToolTip( _("Use proper Gerber extensions - .GBL, .GTL, etc...") ); + + m_Gerber_OptionsBox->Add( m_useGerberExtensions, 0, wxLEFT|wxRIGHT|wxTOP, 2 ); + + m_excludeEdgeLayerOpt = new wxCheckBox( this, wxID_ANY, _("Exclude PCB edge layer\nfrom other layers"), wxDefaultPosition, wxDefaultSize, 0 ); + m_excludeEdgeLayerOpt->SetToolTip( _("Exclude contents of the pcb edge layer from all other layers") ); + + m_Gerber_OptionsBox->Add( m_excludeEdgeLayerOpt, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); + + m_subtractMaskFromSilk = new wxCheckBox( this, wxID_ANY, _("Subtract mask from\nsilkscren"), wxDefaultPosition, wxDefaultSize, 0 ); + m_subtractMaskFromSilk->SetValue(true); + m_subtractMaskFromSilk->SetToolTip( _("Remove silkscreen from areas without soldermask") ); + + m_Gerber_OptionsBox->Add( m_subtractMaskFromSilk, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); + + m_useAuxOriginCheckBox = new wxCheckBox( this, wxID_ANY, _("Use auxiliary origin"), wxDefaultPosition, wxDefaultSize, 0 ); + m_Gerber_OptionsBox->Add( m_useAuxOriginCheckBox, 0, wxALL, 2 ); + + bPlotIndOptionsSizer->Add( m_Gerber_OptionsBox, 0, wxALL|wxEXPAND, 3 ); wxStaticBoxSizer* m_HPGL_OptionsBox; m_HPGL_OptionsBox = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("HPGL Options") ), wxVERTICAL ); + wxBoxSizer* bSizer22; + bSizer22 = new wxBoxSizer( wxHORIZONTAL ); + + wxBoxSizer* bSizer20; + bSizer20 = new wxBoxSizer( 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 ); + bSizer20->Add( m_textPenSize, 0, wxLEFT|wxRIGHT|wxTOP, 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 ); + bSizer20->Add( m_HPGLPenSizeOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); m_textPenOvr = new wxStaticText( this, wxID_ANY, _("Pen overlay"), wxDefaultPosition, wxDefaultSize, 0 ); m_textPenOvr->Wrap( -1 ); - m_HPGL_OptionsBox->Add( m_textPenOvr, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + bSizer20->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 ); + bSizer20->Add( m_HPGLPenOverlayOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - bSizerFmtPlot->Add( m_HPGL_OptionsBox, 0, wxEXPAND, 5 ); + bSizer22->Add( bSizer20, 1, wxEXPAND, 5 ); - bUpperSizer->Add( bSizerFmtPlot, 0, wxEXPAND, 5 ); + wxBoxSizer* bSizer21; + bSizer21 = new wxBoxSizer( wxVERTICAL ); - wxBoxSizer* bButtonsSizer; - bButtonsSizer = new wxBoxSizer( wxVERTICAL ); + m_textPenSpeed = new wxStaticText( this, wxID_ANY, _("Pen speed (cm/s):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_textPenSpeed->Wrap( -1 ); + bSizer21->Add( m_textPenSpeed, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - wxStaticBoxSizer* sbSizerPlotOpt; - sbSizerPlotOpt = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Plot Options") ), wxVERTICAL ); + m_HPGLPenSpeedOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_HPGLPenSpeedOpt->SetToolTip( _("Set pen speed in cm/s") ); - m_plotPSNegativeOpt = new wxCheckBox( this, wxID_ANY, _("Plot negative"), wxDefaultPosition, wxDefaultSize, 0 ); - sbSizerPlotOpt->Add( m_plotPSNegativeOpt, 0, wxALL, 5 ); + bSizer21->Add( m_HPGLPenSpeedOpt, 0, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); - m_plotMirrorOpt = new wxCheckBox( this, ID_MIROR_OPT, _("Plot mirror"), wxDefaultPosition, wxDefaultSize, 0 ); - sbSizerPlotOpt->Add( m_plotMirrorOpt, 0, wxALL, 5 ); + bSizer22->Add( bSizer21, 1, wxEXPAND, 5 ); - m_plotNoViaOnMaskOpt = new wxCheckBox( this, wxID_ANY, _("Vias on mask"), wxDefaultPosition, wxDefaultSize, 0 ); - m_plotNoViaOnMaskOpt->SetToolTip( _("Print/plot vias on mask layers. They are in this case not protected") ); + m_HPGL_OptionsBox->Add( bSizer22, 1, wxEXPAND, 5 ); - sbSizerPlotOpt->Add( m_plotNoViaOnMaskOpt, 0, wxALL, 5 ); + bPlotIndOptionsSizer->Add( m_HPGL_OptionsBox, 0, wxALL|wxEXPAND, 3 ); - bButtonsSizer->Add( sbSizerPlotOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + wxStaticBoxSizer* m_PS_OptionsBox; + m_PS_OptionsBox = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Postscript Options") ), wxVERTICAL ); - 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.") ); + wxBoxSizer* bSizer17; + bSizer17 = new wxBoxSizer( wxHORIZONTAL ); - bButtonsSizer->Add( m_staticText6, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + wxBoxSizer* bSizer18; + bSizer18 = new wxBoxSizer( wxVERTICAL ); - 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 = new wxStaticText( this, wxID_ANY, _("X scale:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText7->Wrap( -1 ); - bButtonsSizer->Add( m_staticText7, 0, wxRIGHT|wxLEFT, 5 ); + bSizer18->Add( m_staticText7, 0, wxALL, 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 ); + bSizer18->Add( m_fineAdjustXscaleOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); - m_staticText8 = new wxStaticText( this, wxID_ANY, _("Y Scale Adjust:"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizer17->Add( bSizer18, 1, wxEXPAND, 5 ); + + wxBoxSizer* bSizer19; + bSizer19 = new wxBoxSizer( wxVERTICAL ); + + m_staticText8 = new wxStaticText( this, wxID_ANY, _("Y scale:"), wxDefaultPosition, wxDefaultSize, 0 ); m_staticText8->Wrap( -1 ); - bButtonsSizer->Add( m_staticText8, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + bSizer19->Add( m_staticText8, 0, wxALL, 5 ); m_fineAdjustYscaleOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - bButtonsSizer->Add( m_fineAdjustYscaleOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + bSizer19->Add( m_fineAdjustYscaleOpt, 0, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5 ); + bSizer17->Add( bSizer19, 1, wxEXPAND, 5 ); - bButtonsSizer->Add( 0, 20, 1, wxEXPAND, 5 ); + m_PS_OptionsBox->Add( bSizer17, 1, wxEXPAND, 5 ); + + m_plotPSNegativeOpt = new wxCheckBox( this, wxID_ANY, _("Negative plot"), wxDefaultPosition, wxDefaultSize, 0 ); + m_PS_OptionsBox->Add( m_plotPSNegativeOpt, 0, wxALL, 2 ); + + bPlotIndOptionsSizer->Add( m_PS_OptionsBox, 1, wxALL|wxEXPAND, 3 ); + + bUpperSizer->Add( bPlotIndOptionsSizer, 0, 0, 5 ); + + bSizer12->Add( bUpperSizer, 0, wxEXPAND, 5 ); + + wxBoxSizer* bSizerDirChoice; + bSizerDirChoice = new wxBoxSizer( wxVERTICAL ); + + m_staticTextDir = new wxStaticText( this, wxID_ANY, _("Output directory:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextDir->Wrap( -1 ); + bSizerDirChoice->Add( m_staticTextDir, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + wxBoxSizer* bSizerDirNmae; + bSizerDirNmae = new wxBoxSizer( wxHORIZONTAL ); + + m_outputDirectoryName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_outputDirectoryName->SetToolTip( _("Target directory for plot files. Can be relative or absolute.") ); + + bSizerDirNmae->Add( m_outputDirectoryName, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); + + m_browseButton = new wxButton( this, wxID_ANY, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerDirNmae->Add( m_browseButton, 0, wxRIGHT|wxLEFT, 5 ); + + bSizerDirChoice->Add( bSizerDirNmae, 0, wxRIGHT|wxEXPAND, 5 ); + + bSizer12->Add( bSizerDirChoice, 0, wxEXPAND, 5 ); + + m_staticText2 = new wxStaticText( this, wxID_ANY, _("Messages:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticText2->Wrap( -1 ); + bSizer12->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,100 ) ); + + bSizer12->Add( m_messagesBox, 1, wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND, 5 ); + + bMainSizer->Add( bSizer12, 1, wxALL|wxEXPAND, 5 ); + + wxBoxSizer* bButtonsSizer; + bButtonsSizer = new wxBoxSizer( wxVERTICAL ); m_plotButton = new wxButton( this, wxID_ANY, _("Plot"), wxDefaultPosition, wxDefaultSize, 0 ); m_plotButton->SetDefault(); @@ -206,41 +300,10 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr 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 ); + m_buttonQuit = new wxButton( this, wxID_CANCEL, _("Close"), 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 ); - - wxBoxSizer* bSizerDirChoice; - bSizerDirChoice = new wxBoxSizer( wxVERTICAL ); - - m_staticTextDir = new wxStaticText( this, wxID_ANY, _("Output Directory:"), wxDefaultPosition, wxDefaultSize, 0 ); - m_staticTextDir->Wrap( -1 ); - bSizerDirChoice->Add( m_staticTextDir, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); - - wxBoxSizer* bSizerDirNmae; - bSizerDirNmae = new wxBoxSizer( wxHORIZONTAL ); - - m_outputDirectoryName = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - bSizerDirNmae->Add( m_outputDirectoryName, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); - - m_browseButton = new wxButton( this, wxID_ANY, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerDirNmae->Add( m_browseButton, 0, wxRIGHT|wxLEFT, 5 ); - - bSizerDirChoice->Add( bSizerDirNmae, 0, wxRIGHT|wxEXPAND, 5 ); - - bMainSizer->Add( bSizerDirChoice, 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 ); + bMainSizer->Add( bButtonsSizer, 0, wxALIGN_BOTTOM|wxALL, 3 ); this->SetSizer( bMainSizer ); this->Layout(); @@ -249,11 +312,12 @@ DIALOG_PLOT_BASE::DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id, const wxStr 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_scaleOpt->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnSetScaleOpt ), 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::applyPlotSettings ), 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 ); - m_browseButton->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnOutputDirectoryBrowseClicked ), NULL, this ); } DIALOG_PLOT_BASE::~DIALOG_PLOT_BASE() @@ -262,10 +326,11 @@ DIALOG_PLOT_BASE::~DIALOG_PLOT_BASE() 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_scaleOpt->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnSetScaleOpt ), 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::applyPlotSettings ), 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 ); - m_browseButton->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PLOT_BASE::OnOutputDirectoryBrowseClicked ), NULL, this ); } diff --git a/pcbnew/dialogs/dialog_plot_base.fbp b/pcbnew/dialogs/dialog_plot_base.fbp index bcf008dd51..036194e993 100644 --- a/pcbnew/dialogs/dialog_plot_base.fbp +++ b/pcbnew/dialogs/dialog_plot_base.fbp @@ -65,7 +65,7 @@ Resizable 1 - 571,616 + 800,616 wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER Plot @@ -111,31 +111,118 @@ bMainSizer - wxVERTICAL + wxHORIZONTAL none 5 - wxEXPAND - 0 + wxALL|wxEXPAND + 1 - bUpperSizer - wxHORIZONTAL + bSizer12 + wxVERTICAL none 5 wxEXPAND - 2 + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + "HPGL" "Gerber" "Postscript" "Postscript A4" "DXF" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Format + + 1 + 0 + + 0 + + 1 + m_plotFormatOpt + 1 + + + protected + 1 + + + Resizable + + 0 + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + SetPlotFormat + + + + + + + + + + 5 + wxEXPAND + 0 - bLeftSizer - wxVERTICAL + bUpperSizer + wxHORIZONTAL none - - 5 - wxEXPAND + + 3 + wxALL 1 - + wxID_ANY Layers @@ -173,769 +260,2822 @@ - + 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Use proper Gerber extensions - - 0 - - 0 + + 1 + - 1 - m_useGerberExtensions - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Use Proper Gerber Extensions - .GBL, .GTL, etc... - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - + bPlotOptionsSizer + wxVERTICAL + none + + 3 + wxALL|wxEXPAND + 0 + + wxID_ANY + Options + + sbOptionsSizer + wxVERTICAL + none + + + 2 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Plot sheet reference on all layers + + 0 + + 0 + + 1 + m_plotSheetRef + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + ID_ALLOW_PRINT_PAD_ON_SILKSCREEN + Plot pads on silkscreen + + 0 + + 0 + + 1 + m_plotPads_on_Silkscreen + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Plot module value on silkscreen + + 0 + + 0 + + 1 + m_plotModuleValueOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + ID_PRINT_REF + Plot module reference on silkscreen + + 0 + + 0 + + 1 + m_plotModuleRefOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Plot other module texts on silkscreen + + 0 + + 0 + + 1 + m_plotTextOther + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Enable/disable print/plot module field texts on silkscreen layers + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Plot invisible texts on silkscreen + + 0 + + 0 + + 1 + m_plotInvisibleText + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Force print/plot module invisible texts on silkscreen layers + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Do not tent vias + + 0 + + 0 + + 1 + m_plotNoViaOnMaskOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Print/plot vias on mask layers. They are in this case not protected + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + ID_MIROR_OPT + Mirrored plot + + 0 + + 0 + + 1 + m_plotMirrorOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + wxALL|wxEXPAND + 1 + + + bSizer14 + wxHORIZONTAL + none + + 3 + wxALL|wxEXPAND + 1 + + + bSizer15 + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Drill marks: + + 0 + + 0 + + 1 + m_staticText11 + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + "None" "Small" "Actual size" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 1 + m_drillShapeOpt + 1 + + + protected + 1 + + + Resizable + + 0 + 1 + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Scaling: + + 0 + + 0 + + 1 + m_staticText12 + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + "Auto" "1:1" "3:2" "2:1" "3:1" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 1 + m_scaleOpt + 1 + + + protected + 1 + + + Resizable + + 0 + 1 + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + OnSetScaleOpt + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + wxALL|wxEXPAND + 1 + + + bSizer16 + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Plot mode: + + 0 + + 0 + + 1 + m_staticText13 + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + "Line" "Filled" "Sketch" + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + + 1 + m_plotModeOpt + 1 + + + protected + 1 + + + Resizable + + 0 + 1 + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Default linewidth + + 0 + + 0 + + 1 + m_textDefaultPenSize + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + 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 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + 0 + + 1 + m_linesWidth + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Line width for, e.g., sheet references. + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + 5 - wxTOP|wxRIGHT|wxLEFT + 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Exclude pcb edge layer - - 0 - - 0 + - 1 - m_excludeEdgeLayerOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Exclude contents of the pcb edge layer from all other layers - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Subtract mask from silk - - 0 - - 0 - - 1 - m_subtractMaskFromSilk - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Remove silkscreen from areas without soldermask - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plot sheet reference - - 0 - - 0 - - 1 - m_plotSheetRef - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - ID_ALLOW_PRINT_PAD_ON_SILKSCREEN - Plot pads on silkscreen - - 0 - - 0 - - 1 - m_plotPads_on_Silkscreen - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - 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 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plot module value - - 0 - - 0 - - 1 - m_plotModuleValueOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - ID_PRINT_REF - Plot module reference - - 0 - - 0 - - 1 - m_plotModuleRefOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plot other module texts - - 0 - - 0 - - 1 - m_plotTextOther - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Enable/disable print/plot module field texts on silkscreen layers - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Force plot invisible texts - - 0 - - 0 - - 1 - m_plotInvisibleText - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Force print/plot module invisible texts on silkscreen layers - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - + bPlotIndOptionsSizer + wxVERTICAL + none + + 3 + wxALL|wxEXPAND + 0 + + wxID_ANY + Gerber Options + + m_Gerber_OptionsBox + wxVERTICAL + none + + + 2 + wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Use proper file extensions + + 0 + + 0 + + 1 + m_useGerberExtensions + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Use proper Gerber extensions - .GBL, .GTL, etc... + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Exclude PCB edge layer from other layers + + 0 + + 0 + + 1 + m_excludeEdgeLayerOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Exclude contents of the pcb edge layer from all other layers + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Subtract mask from silkscren + + 0 + + 0 + + 1 + m_subtractMaskFromSilk + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Remove silkscreen from areas without soldermask + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Use auxiliary origin + + 0 + + 0 + + 1 + m_useAuxOriginCheckBox + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + wxALL|wxEXPAND + 0 + + wxID_ANY + HPGL Options + + m_HPGL_OptionsBox + wxVERTICAL + none + + + 5 + wxEXPAND + 1 + + + bSizer22 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + + bSizer20 + wxVERTICAL + none + + 5 + wxLEFT|wxRIGHT|wxTOP + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Pen size + + 0 + + 0 + + 1 + m_textPenSize + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + 0 + + 1 + m_HPGLPenSizeOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Pen overlay + + 0 + + 0 + + 1 + m_textPenOvr + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + 0 + + 1 + m_HPGLPenOverlayOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Set plot overlay for filling + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + + bSizer21 + wxVERTICAL + none + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Pen speed (cm/s): + + 0 + + 0 + + 1 + m_textPenSpeed + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + 0 + + 1 + m_HPGLPenSpeedOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Set pen speed in cm/s + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + wxALL|wxEXPAND + 1 + + wxID_ANY + Postscript Options + + m_PS_OptionsBox + wxVERTICAL + none + + + 5 + wxEXPAND + 1 + + + bSizer17 + wxHORIZONTAL + none + + 5 + wxEXPAND + 1 + + + bSizer18 + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + X scale: + + 0 + + 0 + + 1 + m_staticText7 + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + 0 + + 1 + m_fineAdjustXscaleOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Set X scale adjust for exact scale plotting + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 1 + + + bSizer19 + wxVERTICAL + none + + 5 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Y scale: + + 0 + + 0 + + 1 + m_staticText8 + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + 0 + + 1 + m_fineAdjustYscaleOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + wxALL + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Negative plot + + 0 + + 0 + + 1 + m_plotPSNegativeOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -944,1267 +3084,11 @@ 5 wxEXPAND 0 - + - bPlotOptionsSizer + bSizerDirChoice wxVERTICAL none - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - "No drill mark" "Small mark" "Actual hole" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Hole Options - - 1 - 0 - - 0 - - 1 - m_drillShapeOpt - 1 - - - protected - 1 - - - Resizable - - 0 - 1 - - wxRA_SPECIFY_COLS - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND|wxALL - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - "Auto scale" "Scale 1" "Scale 1.5" "Scale 2" "Scale 3" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Scale - - 1 - 0 - - 0 - - 1 - m_scaleOpt - 1 - - - protected - 1 - - - Resizable - - 0 - 1 - - wxRA_SPECIFY_COLS - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - "Line" "Filled" "Sketch" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plot Mode - - 1 - 0 - - 0 - - 1 - m_plotModeOpt - 1 - - - protected - 1 - - - Resizable - - 0 - 1 - - wxRA_SPECIFY_COLS - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - "Absolute" "Auxiliary axis" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plot Origin - - 1 - 0 - - 0 - - 1 - m_choicePlotOffset - 1 - - - protected - 1 - - - Resizable - - 1 - 1 - - wxRA_SPECIFY_COLS - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 0 - - - bSizerFmtPlot - wxVERTICAL - none - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - "HPGL" "Gerber" "Postscript" "Postscript A4" "DXF export" - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plot Format - - 1 - 0 - - 0 - - 1 - m_plotFormatOpt - 1 - - - protected - 1 - - - Resizable - - 1 - 1 - - wxRA_SPECIFY_COLS - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - SetPlotFormat - - - - - - - - - - 5 - wxEXPAND - 0 - - wxID_ANY - HPGL Options - - m_HPGL_OptionsBox - wxVERTICAL - none - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Pen size - - 0 - - 0 - - 1 - m_textPenSize - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - 0 - - 1 - m_HPGLPenSizeOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Pen speed (cm/s) - - 0 - - 0 - - 1 - m_staticText3 - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - 0 - - 1 - m_HPGLPenSpeedOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Set pen speed in cm/s - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Pen overlay - - 0 - - 0 - - 1 - m_textPenOvr - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - 0 - - 1 - m_HPGLPenOverlayOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Set plot overlay for filling - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALIGN_CENTER_VERTICAL|wxEXPAND - 0 - - - bButtonsSizer - wxVERTICAL - none - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - wxID_ANY - Plot Options - - sbSizerPlotOpt - wxVERTICAL - none - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plot negative - - 0 - - 0 - - 1 - m_plotPSNegativeOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - ID_MIROR_OPT - Plot mirror - - 0 - - 0 - - 1 - m_plotMirrorOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Vias on mask - - 0 - - 0 - - 1 - m_plotNoViaOnMaskOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Print/plot vias on mask layers. They are in this case not protected - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 wxTOP|wxRIGHT|wxLEFT @@ -2233,196 +3117,14 @@ 0 0 wxID_ANY - Default Pen Size: + Output directory: 0 0 1 - m_staticText6 - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - 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 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - 0 - - 1 - m_linesWidth - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 20 - protected - 0 - - - - 5 - wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - X Scale Adjust: - - 0 - - 0 - - 1 - m_staticText7 + m_staticTextDir 1 @@ -2473,632 +3175,195 @@ 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT + wxRIGHT|wxEXPAND 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - 0 + - 1 - m_fineAdjustXscaleOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - Set X scale adjust for exact scale plotting - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxTOP|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Y Scale Adjust: - - 0 - - 0 - - 1 - m_staticText8 - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - 0 - - 1 - m_fineAdjustYscaleOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxEXPAND - 1 - - 20 - protected - 0 - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Plot - - 0 - - 0 - - 1 - m_plotButton - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - Plot - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - ID_SAVE_OPT_PLOT - Apply Settings - - 0 - - 0 - - 1 - m_buttonSaveOpt - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - applyPlotSettings - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - ID_CREATE_DRILL_FILE - Generate Drill File - - 0 - - 0 - - 1 - m_buttonDrill - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - CreateDrillFile - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_CANCEL - Quit - - 0 - - 0 - - 1 - m_buttonQuit - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnQuit - - - - - - - - - - - - - - - - - - - - - - - + bSizerDirNmae + wxHORIZONTAL + none + + 5 + wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT + 1 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + 0 + + 1 + m_outputDirectoryName + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + Target directory for plot files. Can be relative or absolute. + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Browse... + + 0 + + 0 + + 1 + m_browseButton + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnOutputDirectoryBrowseClicked + + + + + + + + + + + + + + + + + + + + + + + + + - - - - 5 - wxEXPAND - 0 - - - bSizerDirChoice - wxVERTICAL - none - + 5 wxTOP|wxRIGHT|wxLEFT 0 - + 1 1 1 @@ -3122,14 +3387,14 @@ 0 0 wxID_ANY - Output Directory: + Messages: 0 0 1 - m_staticTextDir + m_staticText2 1 @@ -3178,362 +3443,445 @@ - + 5 - wxRIGHT|wxEXPAND - 0 - - - bSizerDirNmae - wxHORIZONTAL - none - - 5 - wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT - 1 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - 0 - - 1 - m_outputDirectoryName - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxRIGHT|wxLEFT - 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Browse... - - 0 - - 0 - - 1 - m_browseButton - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - OnOutputDirectoryBrowseClicked - - - - - - - - - - - - - - - - - - - - - - - - - + wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND + 1 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + + 0 + + 0 + 0 + -1,100 + 1 + m_messagesBox + 1 + + + protected + 1 + + + Resizable + + 1 + + wxTE_MULTILINE + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - 5 - wxTOP|wxRIGHT|wxLEFT + + 3 + wxALIGN_BOTTOM|wxALL 0 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - Messages: - - 0 - - 0 + - 1 - m_staticText2 - 1 - - - protected - 1 - - - Resizable - - 1 - - - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - -1 - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 - wxBOTTOM|wxRIGHT|wxLEFT|wxEXPAND - 1 - - 1 - 1 - 1 - 1 - - - - 1 - 0 - 1 - - 1 - 0 - Dock - 0 - Left - 1 - - 1 - - 0 - 0 - wxID_ANY - - 0 - - 0 - 0 - -1,120 - 1 - m_messagesBox - 1 - - - protected - 1 - - - Resizable - - 1 - - wxTE_MULTILINE - - 0 - - - wxFILTER_NONE - wxDefaultValidator - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + bButtonsSizer + wxVERTICAL + none + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Plot + + 0 + + 0 + + 1 + m_plotButton + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + Plot + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + ID_SAVE_OPT_PLOT + Apply Settings + + 0 + + 0 + + 1 + m_buttonSaveOpt + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + applyPlotSettings + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + ID_CREATE_DRILL_FILE + Generate Drill File + + 0 + + 0 + + 1 + m_buttonDrill + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + CreateDrillFile + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxALL|wxALIGN_CENTER_HORIZONTAL|wxEXPAND + 0 + + 1 + 1 + 1 + 1 + + + + 1 + 0 + 1 + + 1 + 0 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_CANCEL + Close + + 0 + + 0 + + 1 + m_buttonQuit + 1 + + + protected + 1 + + + Resizable + + 1 + + + + 0 + + + wxFILTER_NONE + wxDefaultValidator + + + + + OnQuit + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pcbnew/dialogs/dialog_plot_base.h b/pcbnew/dialogs/dialog_plot_base.h index 5a8889a1e7..b190b9377c 100644 --- a/pcbnew/dialogs/dialog_plot_base.h +++ b/pcbnew/dialogs/dialog_plot_base.h @@ -11,15 +11,16 @@ #include #include -#include -#include +#include #include -#include #include #include #include -#include +#include +#include +#include #include +#include #include #include #include @@ -43,63 +44,65 @@ class DIALOG_PLOT_BASE : public wxDialog ID_CREATE_DRILL_FILE, }; + wxRadioBox* m_plotFormatOpt; wxStaticBoxSizer* m_CopperLayersBoxSizer; wxStaticBoxSizer* m_TechnicalLayersBoxSizer; - wxCheckBox* m_useGerberExtensions; - wxCheckBox* m_excludeEdgeLayerOpt; - wxCheckBox* m_subtractMaskFromSilk; wxCheckBox* m_plotSheetRef; wxCheckBox* m_plotPads_on_Silkscreen; wxCheckBox* m_plotModuleValueOpt; wxCheckBox* m_plotModuleRefOpt; wxCheckBox* m_plotTextOther; wxCheckBox* m_plotInvisibleText; - wxRadioBox* m_drillShapeOpt; - wxRadioBox* m_scaleOpt; - wxRadioBox* m_plotModeOpt; - wxRadioBox* m_choicePlotOffset; - wxRadioBox* m_plotFormatOpt; + wxCheckBox* m_plotNoViaOnMaskOpt; + wxCheckBox* m_plotMirrorOpt; + wxStaticText* m_staticText11; + wxChoice* m_drillShapeOpt; + wxStaticText* m_staticText12; + wxChoice* m_scaleOpt; + wxStaticText* m_staticText13; + wxChoice* m_plotModeOpt; + wxStaticText* m_textDefaultPenSize; + wxTextCtrl* m_linesWidth; + wxCheckBox* m_useGerberExtensions; + wxCheckBox* m_excludeEdgeLayerOpt; + wxCheckBox* m_subtractMaskFromSilk; + wxCheckBox* m_useAuxOriginCheckBox; wxStaticText* m_textPenSize; wxTextCtrl* m_HPGLPenSizeOpt; - wxStaticText* m_staticText3; - wxTextCtrl* m_HPGLPenSpeedOpt; wxStaticText* m_textPenOvr; wxTextCtrl* m_HPGLPenOverlayOpt; - wxCheckBox* m_plotPSNegativeOpt; - wxCheckBox* m_plotMirrorOpt; - wxCheckBox* m_plotNoViaOnMaskOpt; - wxStaticText* m_staticText6; - wxTextCtrl* m_linesWidth; - + wxStaticText* m_textPenSpeed; + wxTextCtrl* m_HPGLPenSpeedOpt; wxStaticText* m_staticText7; wxTextCtrl* m_fineAdjustXscaleOpt; wxStaticText* m_staticText8; wxTextCtrl* m_fineAdjustYscaleOpt; - - wxButton* m_plotButton; - wxButton* m_buttonSaveOpt; - wxButton* m_buttonDrill; - wxButton* m_buttonQuit; + wxCheckBox* m_plotPSNegativeOpt; wxStaticText* m_staticTextDir; wxTextCtrl* m_outputDirectoryName; wxButton* m_browseButton; wxStaticText* m_staticText2; wxTextCtrl* m_messagesBox; + wxButton* m_plotButton; + wxButton* m_buttonSaveOpt; + wxButton* m_buttonDrill; + wxButton* m_buttonQuit; // 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 OnSetScaleOpt( wxCommandEvent& event ) { event.Skip(); } + virtual void OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { event.Skip(); } virtual void Plot( wxCommandEvent& event ) { event.Skip(); } virtual void applyPlotSettings( wxCommandEvent& event ) { event.Skip(); } virtual void CreateDrillFile( wxCommandEvent& event ) { event.Skip(); } virtual void OnQuit( wxCommandEvent& event ) { event.Skip(); } - virtual void OnOutputDirectoryBrowseClicked( 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( 571,616 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); + DIALOG_PLOT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Plot"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 800,616 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); ~DIALOG_PLOT_BASE(); }; diff --git a/pcbnew/pcb_plot_params.cpp b/pcbnew/pcb_plot_params.cpp index 09810151d5..3421892c90 100644 --- a/pcbnew/pcb_plot_params.cpp +++ b/pcbnew/pcb_plot_params.cpp @@ -145,37 +145,6 @@ void PCB_PLOT_PARAMS::Parse( PCB_PLOT_PARAMS_PARSER* aParser ) throw( IO_ERROR, } -PCB_PLOT_PARAMS& PCB_PLOT_PARAMS::operator=( const PCB_PLOT_PARAMS &aPcbPlotParams ) -{ - layerSelection = aPcbPlotParams.layerSelection; - useGerberExtensions = aPcbPlotParams.useGerberExtensions; - m_ExcludeEdgeLayer = aPcbPlotParams.m_ExcludeEdgeLayer; - m_PlotLineWidth = aPcbPlotParams.m_PlotLineWidth; - m_PlotFrameRef = aPcbPlotParams.m_PlotFrameRef; - m_PlotViaOnMaskLayer = aPcbPlotParams.m_PlotViaOnMaskLayer; - m_PlotMode = aPcbPlotParams.m_PlotMode; - useAuxOrigin = aPcbPlotParams.useAuxOrigin; - m_HPGLPenNum = aPcbPlotParams.m_HPGLPenNum; - m_HPGLPenSpeed = aPcbPlotParams.m_HPGLPenSpeed; - m_HPGLPenDiam = aPcbPlotParams.m_HPGLPenDiam; - m_HPGLPenOvr = aPcbPlotParams.m_HPGLPenOvr; - m_PlotPSColorOpt = aPcbPlotParams.m_PlotPSColorOpt; - m_PlotPSNegative = aPcbPlotParams.m_PlotPSNegative; - m_PlotReference = aPcbPlotParams.m_PlotReference; - m_PlotValue = aPcbPlotParams.m_PlotValue; - m_PlotTextOther = aPcbPlotParams.m_PlotTextOther; - m_PlotInvisibleTexts = aPcbPlotParams.m_PlotInvisibleTexts; - m_PlotPadsOnSilkLayer = aPcbPlotParams.m_PlotPadsOnSilkLayer; - subtractMaskFromSilk = aPcbPlotParams.subtractMaskFromSilk; - m_PlotFormat = aPcbPlotParams.m_PlotFormat; - m_PlotMirror = aPcbPlotParams.m_PlotMirror; - m_DrillShapeOpt = aPcbPlotParams.m_DrillShapeOpt; - scaleSelection = aPcbPlotParams.scaleSelection; - outputDirectory = aPcbPlotParams.outputDirectory; - return *this; -} - - bool PCB_PLOT_PARAMS::operator==( const PCB_PLOT_PARAMS &aPcbPlotParams ) const { if( layerSelection != aPcbPlotParams.layerSelection ) @@ -345,9 +314,6 @@ void PCB_PLOT_PARAMS_PARSER::Parse( PCB_PLOT_PARAMS* aPcbPlotParams ) throw( IO_ break; case T_outputdirectory: NeedSYMBOL(); - // token = NextTok(); - // if( token != T_STRING ) - // Expecting( T_STRING ); aPcbPlotParams->outputDirectory = CONV_FROM_UTF8( CurText() ); break; default: diff --git a/pcbnew/pcb_plot_params.h b/pcbnew/pcb_plot_params.h index c0b6b5e248..cbe34c5be5 100644 --- a/pcbnew/pcb_plot_params.h +++ b/pcbnew/pcb_plot_params.h @@ -99,7 +99,6 @@ public: void Format( OUTPUTFORMATTER* aFormatter, int aNestLevel ) const throw( IO_ERROR ); void Parse( PCB_PLOT_PARAMS_PARSER* aParser ) throw( IO_ERROR, PARSE_ERROR ); - PCB_PLOT_PARAMS& operator=( const PCB_PLOT_PARAMS &aPcbPlotParams); bool operator==( const PCB_PLOT_PARAMS &aPcbPlotParams ) const; bool operator!=( const PCB_PLOT_PARAMS &aPcbPlotParams ) const; diff --git a/pcbnew/pcbplot.cpp b/pcbnew/pcbplot.cpp index 16c09e965b..71cea36ffe 100644 --- a/pcbnew/pcbplot.cpp +++ b/pcbnew/pcbplot.cpp @@ -118,14 +118,13 @@ void DIALOG_PLOT::Init_Dialog() m_Config->Read( OPTKEY_YFINESCALE_ADJ, &m_YScaleAdjust ); m_plotFormatOpt->SetSelection( g_PcbPlotOptions.m_PlotFormat ); - g_PcbPlotOptions.m_PlotLineWidth = g_DrawDefaultLineThickness; - // Set units and value for HPGL pen speed. + // Set units and value for HPGL pen size. AddUnitSymbol( *m_textPenSize, g_UserUnit ); msg = ReturnStringFromValue( g_UserUnit, g_PcbPlotOptions.m_HPGLPenDiam, UNITS_MILS ); m_HPGLPenSizeOpt->AppendText( msg ); - // Set units to cm for standard HPGL pen speed. + // Set units to cm/s for standard HPGL pen speed. msg = ReturnStringFromValue( UNSCALED_UNITS, g_PcbPlotOptions.m_HPGLPenSpeed, 1 ); m_HPGLPenSpeedOpt->AppendText( msg ); @@ -136,15 +135,13 @@ void DIALOG_PLOT::Init_Dialog() UNITS_MILS ); m_HPGLPenOverlayOpt->AppendText( msg ); + AddUnitSymbol( *m_textDefaultPenSize, g_UserUnit ); msg = ReturnStringFromValue( g_UserUnit, g_PcbPlotOptions.m_PlotLineWidth, PCB_INTERNAL_UNIT ); m_linesWidth->AppendText( msg ); - if( g_PcbPlotOptions.GetUseAuxOrigin() ) - m_choicePlotOffset->SetSelection( 1 ); - else - m_choicePlotOffset->SetSelection( 0 ); + m_useAuxOriginCheckBox->SetValue( g_PcbPlotOptions.GetUseAuxOrigin() ); // Test for a reasonable scale value. Set to 1 if problem if( m_XScaleAdjust < MIN_SCALE || m_YScaleAdjust < MIN_SCALE @@ -159,9 +156,8 @@ void DIALOG_PLOT::Init_Dialog() m_plotPSNegativeOpt->SetValue( g_PcbPlotOptions.m_PlotPSNegative ); - // Create layer list. - int layer; + int layer; for( layer = 0; layer < NB_LAYERS; ++layer ) { if( !board->IsLayerEnabled( layer ) ) @@ -175,7 +171,8 @@ void DIALOG_PLOT::Init_Dialog() // List layers in same order than in setup layers dialog // (Front or Top to Back or Bottom) DECLARE_LAYERS_ORDER_LIST( layersOrder ); - for( int layer_idx = 0; layer_idx < NB_LAYERS; ++layer_idx ) + int layer_idx; + for( layer_idx = 0; layer_idx < NB_LAYERS; ++layer_idx ) { layer = layersOrder[layer_idx]; @@ -191,12 +188,10 @@ void DIALOG_PLOT::Init_Dialog() m_TechnicalLayersBoxSizer->Add( m_BoxSelectLayer[layer], 0, wxGROW | wxALL, 1 ); - long mask = 1 << layer; - if( g_PcbPlotOptions.GetLayerSelection() & mask ) + if( g_PcbPlotOptions.GetLayerSelection() & ( 1 << layer ) ) m_BoxSelectLayer[layer]->SetValue( true ); } - // Option for using proper Gerber extensions m_useGerberExtensions->SetValue( g_PcbPlotOptions.GetUseGerberExtensions() ); @@ -213,7 +208,7 @@ void DIALOG_PLOT::Init_Dialog() else { m_plotSheetRef->Enable( false ); - g_PcbPlotOptions.m_PlotFrameRef = false; + m_plotSheetRef->SetValue( false ); } // Option to plot pads on silkscreen layers or all layers @@ -241,15 +236,7 @@ void DIALOG_PLOT::Init_Dialog() m_plotNoViaOnMaskOpt->SetValue( g_PcbPlotOptions.m_PlotViaOnMaskLayer ); // Output directory - if( g_PcbPlotOptions.GetOutputDirectory().IsEmpty() ) - { - fileName = m_Parent->GetScreen()->GetFileName(); - m_outputDirectoryName->SetValue( fileName.GetPath() ); - } - else - { - m_outputDirectoryName->SetValue( g_PcbPlotOptions.GetOutputDirectory() ); - } + m_outputDirectoryName->SetValue( g_PcbPlotOptions.GetOutputDirectory() ); // Update options values: wxCommandEvent cmd_event; @@ -293,13 +280,27 @@ void DIALOG_PLOT::OnSetScaleOpt( wxCommandEvent& event ) void DIALOG_PLOT::OnOutputDirectoryBrowseClicked( wxCommandEvent& event ) { - wxString currentDir; + wxDirDialog dirDialog( this, _( "Select Output Directory" ), + m_outputDirectoryName->GetValue() ); - currentDir = m_outputDirectoryName->GetValue(); - wxDirDialog dirDialog( this, _( "Select Output Directory" ), currentDir ); if( dirDialog.ShowModal() == wxID_CANCEL ) return; - m_outputDirectoryName->SetValue( dirDialog.GetPath() ); + + wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() ); + + wxMessageDialog dialog( this, wxT( "Use a relative path? "), + wxT( "Plot Output Directory" ), + wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT ); + + if( dialog.ShowModal() == wxID_YES ) { + wxString boardFilePath = ( (wxFileName) m_Parent->GetScreen()->GetFileName()).GetPath(); + + if( !dirName.MakeRelativeTo( boardFilePath ) ) + wxMessageBox( wxT( "Cannot make path relative (target volume different from board file volume)!" ), + wxT( "Plot Output Directory" ), wxICON_ERROR ); + } + + m_outputDirectoryName->SetValue( dirName.GetFullPath() ); } @@ -314,7 +315,7 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event ) m_drillShapeOpt->Enable( true ); m_plotModeOpt->Enable( true ); m_plotMirrorOpt->Enable( true ); - m_choicePlotOffset->Enable( false ); + m_useAuxOriginCheckBox->Enable( false ); m_linesWidth->Enable( true ); m_HPGLPenSizeOpt->Enable( false ); m_HPGLPenSpeedOpt->Enable( false ); @@ -335,7 +336,7 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event ) m_plotModeOpt->Enable( false ); m_plotMirrorOpt->SetValue( false ); m_plotMirrorOpt->Enable( false ); - m_choicePlotOffset->Enable( true ); + m_useAuxOriginCheckBox->Enable( true ); m_linesWidth->Enable( true ); m_HPGLPenSizeOpt->Enable( false ); m_HPGLPenSpeedOpt->Enable( false ); @@ -355,7 +356,7 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event ) m_plotMirrorOpt->Enable( true ); m_drillShapeOpt->Enable( false ); m_plotModeOpt->Enable( true ); - m_choicePlotOffset->Enable( false ); + m_useAuxOriginCheckBox->Enable( false ); m_linesWidth->Enable( false ); m_HPGLPenSizeOpt->Enable( true ); m_HPGLPenSpeedOpt->Enable( true ); @@ -376,7 +377,7 @@ void DIALOG_PLOT::SetPlotFormat( wxCommandEvent& event ) m_plotMirrorOpt->SetValue( false ); m_drillShapeOpt->Enable( false ); m_plotModeOpt->Enable( true ); - m_choicePlotOffset->Enable( false ); + m_useAuxOriginCheckBox->Enable( false ); m_linesWidth->Enable( false ); m_HPGLPenSizeOpt->Enable( false ); m_HPGLPenSpeedOpt->Enable( false ); @@ -411,10 +412,7 @@ void DIALOG_PLOT::applyPlotSettings( wxCommandEvent& event ) tempOptions.m_PlotPadsOnSilkLayer = m_plotPads_on_Silkscreen->GetValue(); - if( m_choicePlotOffset->GetSelection() == 0 ) - tempOptions.SetUseAuxOrigin( false ); - else - tempOptions.SetUseAuxOrigin( true ); + tempOptions.SetUseAuxOrigin( m_useAuxOriginCheckBox->GetValue() ); tempOptions.m_PlotValue = m_plotModuleValueOpt->GetValue(); tempOptions.m_PlotReference = m_plotModuleRefOpt->GetValue(); @@ -444,17 +442,16 @@ void DIALOG_PLOT::applyPlotSettings( wxCommandEvent& event ) msg = m_linesWidth->GetValue(); tmp = ReturnValueFromString( g_UserUnit, msg, PCB_INTERNAL_UNIT ); tempOptions.m_PlotLineWidth = tmp; - g_DrawDefaultLineThickness = tempOptions.m_PlotLineWidth; msg = m_fineAdjustXscaleOpt->GetValue(); msg.ToDouble( &m_XScaleAdjust ); msg = m_fineAdjustYscaleOpt->GetValue(); msg.ToDouble( &m_YScaleAdjust ); - - tempOptions.SetUseGerberExtensions( m_useGerberExtensions->GetValue() ); m_Config->Write( OPTKEY_XFINESCALE_ADJ, m_XScaleAdjust ); m_Config->Write( OPTKEY_YFINESCALE_ADJ, m_YScaleAdjust ); + tempOptions.SetUseGerberExtensions( m_useGerberExtensions->GetValue() ); + tempOptions.m_PlotFormat = m_plotFormatOpt->GetSelection(); long selectedLayers = 0; @@ -471,7 +468,11 @@ void DIALOG_PLOT::applyPlotSettings( wxCommandEvent& event ) tempOptions.m_PlotPSNegative = m_plotPSNegativeOpt->GetValue(); - tempOptions.SetOutputDirectory( m_outputDirectoryName->GetValue() ); + // Set output directory and replace backslashes with forward ones + wxString dirStr; + dirStr = m_outputDirectoryName->GetValue(); + dirStr.Replace( wxT( "\\" ), wxT( "/" ) ); + tempOptions.SetOutputDirectory( dirStr ); if( g_PcbPlotOptions != tempOptions ) { @@ -492,17 +493,30 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event ) applyPlotSettings( event ); // Create output directory if it does not exist - if( !wxFileName::DirExists( m_outputDirectoryName->GetValue() ) ) + wxFileName outputDir = wxFileName::DirName( m_outputDirectoryName->GetValue() ); + wxString boardFilePath = ( (wxFileName) m_Parent->GetScreen()->GetFileName()).GetPath(); + + if( !outputDir.MakeAbsolute( boardFilePath ) ) { - if( wxMkdir( m_outputDirectoryName->GetValue() ) ) + wxString msg; + msg.Printf( wxT( " Cannot make %s absolute with respect to %s!" ), + GetChars( outputDir.GetPath() ), + GetChars( boardFilePath ) ); + wxMessageBox( msg, wxT( "Plot" ), wxICON_ERROR ); + return; + } + + if( !wxFileName::DirExists( outputDir.GetPath() ) ) + { + if( wxMkdir( outputDir.GetPath() ) ) { wxString msg; - msg.Printf( _( "Directory %s created.\n" ), GetChars( m_outputDirectoryName->GetValue() ) ); + msg.Printf( wxT( "Directory %s created.\n" ), GetChars( outputDir.GetPath() ) ); m_messagesBox->AppendText( msg ); } else { - wxMessageBox( _( "Cannot create output directory!" ), _( "Plot" ), wxICON_INFORMATION ); + wxMessageBox( wxT( "Cannot create output directory!" ), wxT( "Plot" ), wxICON_ERROR ); return; } } @@ -581,7 +595,7 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event ) if( m_BoxSelectLayer[layer]->GetValue() ) { fn = m_Parent->GetScreen()->GetFileName(); - fn.SetPath( m_outputDirectoryName->GetValue() ); + fn.SetPath( outputDir.GetPath() ); // Create file name. wxString layername = board->GetLayerName( layer );