From 6947b3b23347d901130c353dc7f00e2d4ee4e0b6 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Mon, 11 Aug 2025 12:51:20 +0100 Subject: [PATCH] Even more open-coded dialog state-saving cleanup. --- common/dialogs/dialog_page_settings.cpp | 55 ++++------- common/dialogs/dialog_print_generic.cpp | 96 +++++++------------ common/dialogs/dialog_print_generic_base.cpp | 2 - common/dialogs/dialog_print_generic_base.fbp | 2 +- .../dialog_map_gerber_layers_to_pcb.cpp | 8 +- .../dialog_map_gerber_layers_to_pcb_base.cpp | 14 +-- .../dialog_map_gerber_layers_to_pcb_base.fbp | 8 +- gerbview/dialogs/dialog_print_gerbview.cpp | 59 +++--------- include/dialogs/dialog_print_generic.h | 8 +- pcbnew/dialogs/dialog_print_pcbnew.cpp | 61 ++++-------- 10 files changed, 104 insertions(+), 209 deletions(-) diff --git a/common/dialogs/dialog_page_settings.cpp b/common/dialogs/dialog_page_settings.cpp index 8bef0bed1c..e38b28adc0 100644 --- a/common/dialogs/dialog_page_settings.cpp +++ b/common/dialogs/dialog_page_settings.cpp @@ -78,9 +78,8 @@ static const wxString pageFmts[] = // to be recognized in code }; -DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* aParent, - EMBEDDED_FILES* aEmbeddedFiles, double aIuPerMils, - const VECTOR2D& aMaxUserSizeMils ) : +DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* aParent, EMBEDDED_FILES* aEmbeddedFiles, + double aIuPerMils, const VECTOR2D& aMaxUserSizeMils ) : DIALOG_PAGES_SETTINGS_BASE( aParent ), m_parent( aParent ), m_screen( m_parent->GetScreen() ), @@ -479,9 +478,7 @@ bool DIALOG_PAGES_SETTINGS::SavePageSettings() BASE_SCREEN::m_DrawingSheetFileName = fileName; if( !DS_DATA_MODEL::GetTheInstance().LoadDrawingSheet( fullFileName, &msg ) ) - { DisplayErrorMessage( this, wxString::Format( _( "Error loading drawing sheet '%s'." ), fullFileName ), msg ); - } m_localPrjConfigChanged = true; @@ -506,36 +503,21 @@ bool DIALOG_PAGES_SETTINGS::SavePageSettings() else { // search for longest common string first, e.g. A4 before A - if( paperType.Contains( PAGE_INFO::USLetter ) ) - success = m_pageInfo.SetType( PAGE_INFO::USLetter ); - else if( paperType.Contains( PAGE_INFO::USLegal ) ) - success = m_pageInfo.SetType( PAGE_INFO::USLegal ); - else if( paperType.Contains( PAGE_INFO::USLedger ) ) - success = m_pageInfo.SetType( PAGE_INFO::USLedger ); - else if( paperType.Contains( PAGE_INFO::GERBER ) ) - success = m_pageInfo.SetType( PAGE_INFO::GERBER ); - else if( paperType.Contains( PAGE_INFO::A5 ) ) - success = m_pageInfo.SetType( PAGE_INFO::A5 ); - else if( paperType.Contains( PAGE_INFO::A4 ) ) - success = m_pageInfo.SetType( PAGE_INFO::A4 ); - else if( paperType.Contains( PAGE_INFO::A3 ) ) - success = m_pageInfo.SetType( PAGE_INFO::A3 ); - else if( paperType.Contains( PAGE_INFO::A2 ) ) - success = m_pageInfo.SetType( PAGE_INFO::A2 ); - else if( paperType.Contains( PAGE_INFO::A1 ) ) - success = m_pageInfo.SetType( PAGE_INFO::A1 ); - else if( paperType.Contains( PAGE_INFO::A0 ) ) - success = m_pageInfo.SetType( PAGE_INFO::A0 ); - else if( paperType.Contains( PAGE_INFO::A ) ) - success = m_pageInfo.SetType( PAGE_INFO::A ); - else if( paperType.Contains( PAGE_INFO::B ) ) - success = m_pageInfo.SetType( PAGE_INFO::B ); - else if( paperType.Contains( PAGE_INFO::C ) ) - success = m_pageInfo.SetType( PAGE_INFO::C ); - else if( paperType.Contains( PAGE_INFO::D ) ) - success = m_pageInfo.SetType( PAGE_INFO::D ); - else if( paperType.Contains( PAGE_INFO::E ) ) - success = m_pageInfo.SetType( PAGE_INFO::E ); + if( paperType.Contains( PAGE_INFO::USLetter ) ) success = m_pageInfo.SetType( PAGE_INFO::USLetter ); + else if( paperType.Contains( PAGE_INFO::USLegal ) ) success = m_pageInfo.SetType( PAGE_INFO::USLegal ); + else if( paperType.Contains( PAGE_INFO::USLedger ) ) success = m_pageInfo.SetType( PAGE_INFO::USLedger ); + else if( paperType.Contains( PAGE_INFO::GERBER ) ) success = m_pageInfo.SetType( PAGE_INFO::GERBER ); + else if( paperType.Contains( PAGE_INFO::A5 ) ) success = m_pageInfo.SetType( PAGE_INFO::A5 ); + else if( paperType.Contains( PAGE_INFO::A4 ) ) success = m_pageInfo.SetType( PAGE_INFO::A4 ); + else if( paperType.Contains( PAGE_INFO::A3 ) ) success = m_pageInfo.SetType( PAGE_INFO::A3 ); + else if( paperType.Contains( PAGE_INFO::A2 ) ) success = m_pageInfo.SetType( PAGE_INFO::A2 ); + else if( paperType.Contains( PAGE_INFO::A1 ) ) success = m_pageInfo.SetType( PAGE_INFO::A1 ); + else if( paperType.Contains( PAGE_INFO::A0 ) ) success = m_pageInfo.SetType( PAGE_INFO::A0 ); + else if( paperType.Contains( PAGE_INFO::A ) ) success = m_pageInfo.SetType( PAGE_INFO::A ); + else if( paperType.Contains( PAGE_INFO::B ) ) success = m_pageInfo.SetType( PAGE_INFO::B ); + else if( paperType.Contains( PAGE_INFO::C ) ) success = m_pageInfo.SetType( PAGE_INFO::C ); + else if( paperType.Contains( PAGE_INFO::D ) ) success = m_pageInfo.SetType( PAGE_INFO::D ); + else if( paperType.Contains( PAGE_INFO::E ) ) success = m_pageInfo.SetType( PAGE_INFO::E ); if( success ) { @@ -800,8 +782,7 @@ void DIALOG_PAGES_SETTINGS::OnWksFileSelection( wxCommandEvent& event ) // Display a file picker dialog FILEDLG_HOOK_EMBED_FILE customize; - wxFileDialog fileDialog( this, _( "Drawing Sheet File" ), path, name, - FILEEXT::DrawingSheetFileWildcard(), + wxFileDialog fileDialog( this, _( "Drawing Sheet File" ), path, name, FILEEXT::DrawingSheetFileWildcard(), wxFD_DEFAULT_STYLE | wxFD_FILE_MUST_EXIST ); if( m_embeddedFiles ) diff --git a/common/dialogs/dialog_print_generic.cpp b/common/dialogs/dialog_print_generic.cpp index 94a1dcd74a..803bddca15 100644 --- a/common/dialogs/dialog_print_generic.cpp +++ b/common/dialogs/dialog_print_generic.cpp @@ -33,6 +33,8 @@ static constexpr double MIN_SCALE = 0.01; static constexpr double MAX_SCALE = 100.0; +wxPrintData* DIALOG_PRINT_GENERIC::s_printData = nullptr; +wxPageSetupDialogData* DIALOG_PRINT_GENERIC::s_pageSetupData = nullptr; /** @@ -43,16 +45,15 @@ static constexpr double MAX_SCALE = 100.0; class KI_PREVIEW_FRAME : public wxPreviewFrame { public: - KI_PREVIEW_FRAME( wxPrintPreview* aPreview, wxWindow* aParent, - const wxString& aTitle, const wxPoint& aPos = wxDefaultPosition, - const wxSize& aSize = wxDefaultSize ) : - wxPreviewFrame( aPreview, aParent, aTitle, aPos, aSize ) + KI_PREVIEW_FRAME( wxPrintPreview* aPreview, wxWindow* aParent, const wxString& aTitle, + const wxPoint& aPos = wxDefaultPosition, const wxSize& aSize = wxDefaultSize ) : + wxPreviewFrame( aPreview, aParent, aTitle, aPos, aSize ) { } bool Show( bool show ) override { - bool ret; + bool ret; // Show or hide the window. If hiding, save current position and size. // If showing, use previous position and size. @@ -85,16 +86,10 @@ wxPoint KI_PREVIEW_FRAME::s_pos; wxSize KI_PREVIEW_FRAME::s_size; -DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC( EDA_DRAW_FRAME* aParent, PRINTOUT_SETTINGS* aSettings ) - : DIALOG_PRINT_GENERIC_BASE( aParent ), - m_config( nullptr ), - m_settings( aSettings ) +DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC( EDA_DRAW_FRAME* aParent, PRINTOUT_SETTINGS* aSettings ) : + DIALOG_PRINT_GENERIC_BASE( aParent ), + m_settings( aSettings ) { - // Note: for the validator, min value is 0.0, to allow typing values like 0.5 - // that start by 0 - m_scaleValidator.SetRange( 0.0, MAX_SCALE ); - m_scaleCustomText->SetValidator( m_scaleValidator ); - // Show m_panelPrinters only if there are printers to list: m_panelPrinters->Show( m_panelPrinters->AsPrintersAvailable() ); @@ -114,22 +109,10 @@ DIALOG_PRINT_GENERIC::DIALOG_PRINT_GENERIC( EDA_DRAW_FRAME* aParent, PRINTOUT_SE } -DIALOG_PRINT_GENERIC::~DIALOG_PRINT_GENERIC() -{ -} - - void DIALOG_PRINT_GENERIC::ForcePrintBorder( bool aValue ) { m_titleBlock->SetValue( aValue ); m_titleBlock->Hide(); - - if( m_config ) - { - m_settings->Load( m_config ); - m_settings->m_titleBlock = aValue; - m_settings->Save( m_config ); - } } @@ -138,27 +121,27 @@ void DIALOG_PRINT_GENERIC::saveSettings() m_settings->m_scale = getScaleValue(); m_settings->m_titleBlock = m_titleBlock->GetValue(); m_settings->m_blackWhite = m_outputMode->GetSelection(); - - if( m_config ) - m_settings->Save( m_config ); } double DIALOG_PRINT_GENERIC::getScaleValue() { if( m_scale1->GetValue() ) + { return 1.0; - - if( m_scaleFit->GetValue() ) + } + else if( m_scaleFit->GetValue() ) + { return 0.0; - - if( m_scaleCustom->GetValue() ) + } + else if( m_scaleCustom->GetValue() ) { double scale = 1.0;; if( !m_scaleCustomText->GetValue().ToDouble( &scale ) ) { - DisplayInfoMessage( nullptr, _( "Warning: scale is not a number." ) ); + DisplayInfoMessage( nullptr, _( "Warning: custom scale is not a number." ) ); + setScaleValue( 1.0 ); scale = 1.0; } @@ -166,17 +149,15 @@ double DIALOG_PRINT_GENERIC::getScaleValue() { scale = MAX_SCALE; setScaleValue( scale ); - DisplayInfoMessage( nullptr, wxString::Format( _( "Warning: scale set to a very large " - "value.\nIt will be clamped to %f." ), - scale ) ); + DisplayInfoMessage( nullptr, wxString::Format( _( "Warning: custom scale is too large.\n" + "It will be clamped to %f." ), scale ) ); } else if( scale < MIN_SCALE ) { scale = MIN_SCALE; setScaleValue( scale ); - DisplayInfoMessage( nullptr, wxString::Format( _( "Warning: scale set to a very small " - "value.\nIt will be clamped to %f." ), - scale ) ); + DisplayInfoMessage( nullptr, wxString::Format( _( "Warning: custom scale is too small.\n" + "It will be clamped to %f." ), scale ) ); } return scale; @@ -218,9 +199,6 @@ bool DIALOG_PRINT_GENERIC::TransferDataToWindow() if( !wxDialog::TransferDataToWindow() ) return false; - if( m_config ) - m_settings->Load( m_config ); - setScaleValue( m_settings->m_scale ); m_titleBlock->SetValue( m_settings->m_titleBlock ); m_outputMode->SetSelection( m_settings->m_blackWhite ? 1 : 0 ); @@ -234,7 +212,7 @@ void DIALOG_PRINT_GENERIC::onPageSetup( wxCommandEvent& event ) wxPageSetupDialog pageSetupDialog( this, s_pageSetupData ); pageSetupDialog.ShowModal(); - (*s_PrintData) = pageSetupDialog.GetPageSetupDialogData().GetPrintData(); + (*s_printData ) = pageSetupDialog.GetPageSetupDialogData().GetPrintData(); (*s_pageSetupData) = pageSetupDialog.GetPageSetupDialogData(); } @@ -255,12 +233,11 @@ void DIALOG_PRINT_GENERIC::onPrintPreview( wxCommandEvent& event ) if( m_panelPrinters ) selectedPrinterName = m_panelPrinters->GetSelectedPrinterName(); - s_PrintData->SetPrinterName( selectedPrinterName ); + s_printData->SetPrinterName( selectedPrinterName ); // Pass two printout objects: for preview, and possible printing. wxString title = _( "Print Preview" ); - wxPrintPreview* preview = - new wxPrintPreview( createPrintout( title ), createPrintout( title ), s_PrintData ); + wxPrintPreview* preview = new wxPrintPreview( createPrintout( title ), createPrintout( title ), s_printData ); preview->SetZoom( 100 ); @@ -313,9 +290,9 @@ void DIALOG_PRINT_GENERIC::onPrintButtonClick( wxCommandEvent& event ) if( m_panelPrinters ) selectedPrinterName = m_panelPrinters->GetSelectedPrinterName(); - s_PrintData->SetPrinterName( selectedPrinterName ); + s_printData->SetPrinterName( selectedPrinterName ); - wxPrintDialogData printDialogData( *s_PrintData ); + wxPrintDialogData printDialogData( *s_printData ); printDialogData.SetMaxPage( m_settings->m_pageCount ); wxPrinter printer( &printDialogData ); @@ -331,7 +308,7 @@ void DIALOG_PRINT_GENERIC::onPrintButtonClick( wxCommandEvent& event ) } else { - *s_PrintData = printer.GetPrintDialogData().GetPrintData(); + *s_printData = printer.GetPrintDialogData().GetPrintData(); } } @@ -364,38 +341,39 @@ void DIALOG_PRINT_GENERIC::onSetCustomScale( wxCommandEvent& event ) void DIALOG_PRINT_GENERIC::initPrintData() { - if( !s_PrintData ) // First print + if( !s_printData ) // First print { - s_PrintData = new wxPrintData(); + s_printData = new wxPrintData(); - if( !s_PrintData->Ok() ) + if( !s_printData->Ok() ) DisplayError( this, _( "An error occurred initializing the printer information." ) ); - s_PrintData->SetQuality( wxPRINT_QUALITY_HIGH ); // Default resolution = HIGH; + s_printData->SetQuality( wxPRINT_QUALITY_HIGH ); // Default resolution = HIGH; } if( !s_pageSetupData ) { const PAGE_INFO& pageInfo = m_settings->m_pageInfo; - s_pageSetupData = new wxPageSetupDialogData( *s_PrintData ); + s_pageSetupData = new wxPageSetupDialogData( *s_printData ); s_pageSetupData->SetPaperId( pageInfo.GetPaperId() ); s_pageSetupData->GetPrintData().SetOrientation( pageInfo.GetWxOrientation() ); if( pageInfo.IsCustom() ) { if( pageInfo.IsPortrait() ) + { s_pageSetupData->SetPaperSize( wxSize( EDA_UNIT_UTILS::Mils2mm( pageInfo.GetWidthMils() ), EDA_UNIT_UTILS::Mils2mm( pageInfo.GetHeightMils() ) ) ); + } else + { s_pageSetupData->SetPaperSize( wxSize( EDA_UNIT_UTILS::Mils2mm( pageInfo.GetHeightMils() ), EDA_UNIT_UTILS::Mils2mm( pageInfo.GetWidthMils() ) ) ); + } } - *s_PrintData = s_pageSetupData->GetPrintData(); + *s_printData = s_pageSetupData->GetPrintData(); } } - -wxPrintData* DIALOG_PRINT_GENERIC::s_PrintData = nullptr; -wxPageSetupDialogData* DIALOG_PRINT_GENERIC::s_pageSetupData = nullptr; diff --git a/common/dialogs/dialog_print_generic_base.cpp b/common/dialogs/dialog_print_generic_base.cpp index 0d7f66a7b9..253f7377e3 100644 --- a/common/dialogs/dialog_print_generic_base.cpp +++ b/common/dialogs/dialog_print_generic_base.cpp @@ -85,8 +85,6 @@ DIALOG_PRINT_GENERIC_BASE::DIALOG_PRINT_GENERIC_BASE( wxWindow* parent, wxWindow bSizerScaleCustom->Add( m_scaleCustom, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5 ); m_scaleCustomText = new wxTextCtrl( bScaleSizer->GetStaticBox(), wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - m_scaleCustomText->SetToolTip( _("Set X scale adjust for exact scale plotting") ); - bSizerScaleCustom->Add( m_scaleCustomText, 1, wxEXPAND|wxRIGHT, 5 ); diff --git a/common/dialogs/dialog_print_generic_base.fbp b/common/dialogs/dialog_print_generic_base.fbp index 644bce3f0a..4bc6a9e5a4 100644 --- a/common/dialogs/dialog_print_generic_base.fbp +++ b/common/dialogs/dialog_print_generic_base.fbp @@ -674,7 +674,7 @@ 0 - Set X scale adjust for exact scale plotting + wxDefaultValidator diff --git a/gerbview/dialogs/dialog_map_gerber_layers_to_pcb.cpp b/gerbview/dialogs/dialog_map_gerber_layers_to_pcb.cpp index c02bde3342..12948ad8b6 100644 --- a/gerbview/dialogs/dialog_map_gerber_layers_to_pcb.cpp +++ b/gerbview/dialogs/dialog_map_gerber_layers_to_pcb.cpp @@ -140,7 +140,7 @@ void DIALOG_MAP_GERBER_LAYERS_TO_PCB::initDialog() flexColumnBoxSizer = m_flexRightColumnBoxSizer; // Provide a text string to identify the Gerber layer - msg.Printf( _( "Layer %d" ), m_buttonTable[ii] + 1 ); + msg.Printf( _( "Layer %d:" ), m_buttonTable[ii] + 1 ); label = new wxStaticText( this, wxID_STATIC, msg ); flexColumnBoxSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); @@ -151,9 +151,9 @@ void DIALOG_MAP_GERBER_LAYERS_TO_PCB::initDialog() flexColumnBoxSizer->Add( label, 0, wxALIGN_CENTER_VERTICAL | wxALL, 5 ); // Provide a button for this layer (which will invoke a child dialog box) - item_ID = ID_BUTTON_0 + ii; - wxButton * Button = new wxButton( this, item_ID, wxT( "..." ), wxDefaultPosition, - wxDefaultSize, wxBU_EXACTFIT ); + item_ID = ID_BUTTON_0 + ii; + wxButton * Button = new wxButton( this, item_ID, wxT( "..." ), wxDefaultPosition, wxDefaultSize, + wxBU_EXACTFIT ); flexColumnBoxSizer->Add( Button, 0, wxALIGN_CENTER_VERTICAL | wxALL ); diff --git a/gerbview/dialogs/dialog_map_gerber_layers_to_pcb_base.cpp b/gerbview/dialogs/dialog_map_gerber_layers_to_pcb_base.cpp index c6c0cd26b4..60af5ceb55 100644 --- a/gerbview/dialogs/dialog_map_gerber_layers_to_pcb_base.cpp +++ b/gerbview/dialogs/dialog_map_gerber_layers_to_pcb_base.cpp @@ -31,11 +31,8 @@ DIALOG_MAP_GERBER_LAYERS_TO_PCB_BASE::DIALOG_MAP_GERBER_LAYERS_TO_PCB_BASE( wxWi m_bSizerLayerList->Add( 0, 0, 0, wxRIGHT|wxLEFT, 10 ); - m_flexLeftColumnBoxSizer = new wxFlexGridSizer( 4, 0, 0 ); - m_flexLeftColumnBoxSizer->AddGrowableCol( 0 ); + m_flexLeftColumnBoxSizer = new wxFlexGridSizer( 16, 4, 0, 0 ); m_flexLeftColumnBoxSizer->AddGrowableCol( 1 ); - m_flexLeftColumnBoxSizer->AddGrowableCol( 2 ); - m_flexLeftColumnBoxSizer->AddGrowableCol( 3 ); m_flexLeftColumnBoxSizer->SetFlexibleDirection( wxBOTH ); m_flexLeftColumnBoxSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); @@ -45,11 +42,8 @@ DIALOG_MAP_GERBER_LAYERS_TO_PCB_BASE::DIALOG_MAP_GERBER_LAYERS_TO_PCB_BASE( wxWi m_staticlineSep = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL ); m_bSizerLayerList->Add( m_staticlineSep, 0, wxEXPAND | wxALL, 5 ); - m_flexRightColumnBoxSizer = new wxFlexGridSizer( 4, 0, 0 ); - m_flexRightColumnBoxSizer->AddGrowableCol( 0 ); + m_flexRightColumnBoxSizer = new wxFlexGridSizer( 16, 4, 0, 0 ); m_flexRightColumnBoxSizer->AddGrowableCol( 1 ); - m_flexRightColumnBoxSizer->AddGrowableCol( 2 ); - m_flexRightColumnBoxSizer->AddGrowableCol( 3 ); m_flexRightColumnBoxSizer->SetFlexibleDirection( wxBOTH ); m_flexRightColumnBoxSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); @@ -60,7 +54,7 @@ DIALOG_MAP_GERBER_LAYERS_TO_PCB_BASE::DIALOG_MAP_GERBER_LAYERS_TO_PCB_BASE( wxWi bSizerLayerSelection->Add( m_bSizerLayerList, 1, wxEXPAND, 5 ); - sbUpperSizer->Add( bSizerLayerSelection, 1, wxEXPAND, 5 ); + sbUpperSizer->Add( bSizerLayerSelection, 1, wxEXPAND|wxRIGHT, 5 ); wxBoxSizer* bRightSizer; bRightSizer = new wxBoxSizer( wxVERTICAL ); @@ -113,7 +107,7 @@ DIALOG_MAP_GERBER_LAYERS_TO_PCB_BASE::DIALOG_MAP_GERBER_LAYERS_TO_PCB_BASE( wxWi bRightSizer->Add( bSizerButtons, 0, wxEXPAND, 5 ); - sbUpperSizer->Add( bRightSizer, 0, wxALIGN_CENTER_VERTICAL, 5 ); + sbUpperSizer->Add( bRightSizer, 0, wxRIGHT|wxLEFT|wxEXPAND, 5 ); bSizerMain->Add( sbUpperSizer, 1, wxEXPAND|wxALL, 5 ); diff --git a/gerbview/dialogs/dialog_map_gerber_layers_to_pcb_base.fbp b/gerbview/dialogs/dialog_map_gerber_layers_to_pcb_base.fbp index acd4d7bf98..d0cc51fe39 100644 --- a/gerbview/dialogs/dialog_map_gerber_layers_to_pcb_base.fbp +++ b/gerbview/dialogs/dialog_map_gerber_layers_to_pcb_base.fbp @@ -75,7 +75,7 @@ none 5 - wxEXPAND + wxEXPAND|wxRIGHT 1 @@ -170,7 +170,7 @@ 4 wxBOTH - 0,1,2,3 + 1 0 @@ -247,7 +247,7 @@ 4 wxBOTH - 0,1,2,3 + 1 0 @@ -264,7 +264,7 @@ 5 - wxALIGN_CENTER_VERTICAL + wxRIGHT|wxLEFT|wxEXPAND 0 diff --git a/gerbview/dialogs/dialog_print_gerbview.cpp b/gerbview/dialogs/dialog_print_gerbview.cpp index 2c95b950c7..60ad9fa95d 100644 --- a/gerbview/dialogs/dialog_print_gerbview.cpp +++ b/gerbview/dialogs/dialog_print_gerbview.cpp @@ -45,7 +45,7 @@ class DIALOG_PRINT_GERBVIEW : public DIALOG_PRINT_GENERIC { public: DIALOG_PRINT_GERBVIEW( GERBVIEW_FRAME* aParent, BOARD_PRINTOUT_SETTINGS* aSettings ); - ~DIALOG_PRINT_GERBVIEW() {}; + ~DIALOG_PRINT_GERBVIEW() = default; private: BOARD_PRINTOUT_SETTINGS* settings() const @@ -68,9 +68,6 @@ private: ///< Check whether a layer is enabled in a listbox bool isLayerEnabled( unsigned int aLayer ) const; - ///< Enable/disable layer in a listbox - void enableLayer( unsigned int aLayer, bool aValue ); - ///< Update layerset basing on the selected layers int setLayerSetFromList(); @@ -78,8 +75,8 @@ private: wxPrintout* createPrintout( const wxString& aTitle ) override { - return new GERBVIEW_PRINTOUT( m_parent->GetGerberLayout(), *settings(), - m_parent->GetCanvas()->GetView(), aTitle ); + return new GERBVIEW_PRINTOUT( m_parent->GetGerberLayout(), *settings(), m_parent->GetCanvas()->GetView(), + aTitle ); } GERBVIEW_FRAME* m_parent; @@ -101,13 +98,10 @@ private: }; -DIALOG_PRINT_GERBVIEW::DIALOG_PRINT_GERBVIEW( GERBVIEW_FRAME* aParent, - BOARD_PRINTOUT_SETTINGS* aSettings ) : - DIALOG_PRINT_GENERIC( aParent, aSettings ), - m_parent( aParent ) +DIALOG_PRINT_GERBVIEW::DIALOG_PRINT_GERBVIEW( GERBVIEW_FRAME* aParent, BOARD_PRINTOUT_SETTINGS* aSettings ) : + DIALOG_PRINT_GENERIC( aParent, aSettings ), + m_parent( aParent ) { - m_config = Kiface().KifaceSettings(); - createExtraOptions(); createLeftPanel(); } @@ -168,8 +162,7 @@ void DIALOG_PRINT_GERBVIEW::createExtraOptions() // Print mirrored m_checkboxMirror = new wxCheckBox( box, wxID_ANY, _( "Print mirrored" ) ); - optionsSizer->Add( m_checkboxMirror, wxGBPosition( rows, 0 ), wxGBSpan( 1, cols ), - wxBOTTOM | wxRIGHT | wxLEFT, 5 ); + optionsSizer->Add( m_checkboxMirror, wxGBPosition( rows, 0 ), wxGBSpan( 1, cols ), wxBOTTOM|wxRIGHT|wxLEFT, 5 ); } @@ -188,17 +181,13 @@ void DIALOG_PRINT_GERBVIEW::createLeftPanel() } // Select/Unselect all buttons - m_buttonSelectAll = new wxButton( sbLayersSizer->GetStaticBox(), wxID_ANY, - _( "Select all" ) ); - m_buttonDeselectAll = new wxButton( sbLayersSizer->GetStaticBox(), wxID_ANY, - _( "Deselect all" ) ); + m_buttonSelectAll = new wxButton( sbLayersSizer->GetStaticBox(), wxID_ANY, _( "Select all" ) ); + m_buttonDeselectAll = new wxButton( sbLayersSizer->GetStaticBox(), wxID_ANY, _( "Deselect all" ) ); m_buttonSelectAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, - wxCommandEventHandler( DIALOG_PRINT_GERBVIEW::onSelectAllClick ), - nullptr, this ); + wxCommandEventHandler( DIALOG_PRINT_GERBVIEW::onSelectAllClick ), nullptr, this ); m_buttonDeselectAll->Connect( wxEVT_COMMAND_BUTTON_CLICKED, - wxCommandEventHandler( DIALOG_PRINT_GERBVIEW::onDeselectAllClick ), - nullptr, this ); + wxCommandEventHandler( DIALOG_PRINT_GERBVIEW::onDeselectAllClick ), nullptr, this ); wxBoxSizer* buttonSizer = new wxBoxSizer( wxHORIZONTAL ); buttonSizer->Add( m_buttonSelectAll, 1, wxALL, 5 ); @@ -214,15 +203,15 @@ void DIALOG_PRINT_GERBVIEW::createLeftPanel() void DIALOG_PRINT_GERBVIEW::onSelectAllClick( wxCommandEvent& event ) { - for( unsigned int i = 0; i < LAYER_LIST_COUNT; ++i ) - setListBoxValue( m_layerLists[i], true ); + for( wxCheckListBox* checkbox : m_layerLists ) + setListBoxValue( checkbox, true ); } void DIALOG_PRINT_GERBVIEW::onDeselectAllClick( wxCommandEvent& event ) { - for( unsigned int i = 0; i < LAYER_LIST_COUNT; ++i ) - setListBoxValue( m_layerLists[i], false ); + for( wxCheckListBox* checkbox : m_layerLists ) + setListBoxValue( checkbox, false ); } @@ -250,24 +239,6 @@ bool DIALOG_PRINT_GERBVIEW::isLayerEnabled( unsigned int aLayer ) const } -void DIALOG_PRINT_GERBVIEW::enableLayer( unsigned int aLayer, bool aValue ) -{ - auto layerMapIt = m_layerToItemMap.find( aLayer ); - - if( layerMapIt == m_layerToItemMap.end() ) - return; - - unsigned int itemNr = layerMapIt->second; - unsigned int listIdx = itemNr / LAYER_PER_LIST; - unsigned int itemIdx = itemNr % LAYER_PER_LIST; - wxCHECK( listIdx < LAYER_LIST_COUNT, /* void */ ); - wxCheckListBox* listBox = m_layerLists[listIdx]; - - if( itemIdx < listBox->GetCount() ) - listBox->Check( itemIdx, aValue ); -} - - int DIALOG_PRINT_GERBVIEW::setLayerSetFromList() { settings()->m_LayerSet = LSET(); diff --git a/include/dialogs/dialog_print_generic.h b/include/dialogs/dialog_print_generic.h index 6b41032c44..b6863024e5 100644 --- a/include/dialogs/dialog_print_generic.h +++ b/include/dialogs/dialog_print_generic.h @@ -35,7 +35,7 @@ class DIALOG_PRINT_GENERIC : public DIALOG_PRINT_GENERIC_BASE { public: DIALOG_PRINT_GENERIC( EDA_DRAW_FRAME* aParent, PRINTOUT_SETTINGS* aSettings ); - virtual ~DIALOG_PRINT_GENERIC(); + virtual ~DIALOG_PRINT_GENERIC() = default; /** * Set 'print border and title block' to a requested value and hides the @@ -99,14 +99,10 @@ private: void initPrintData(); protected: - APP_SETTINGS_BASE* m_config; - PRINTOUT_SETTINGS* m_settings; private: - wxFloatingPointValidator m_scaleValidator; - - static wxPrintData* s_PrintData; + static wxPrintData* s_printData; static wxPageSetupDialogData* s_pageSetupData; }; diff --git a/pcbnew/dialogs/dialog_print_pcbnew.cpp b/pcbnew/dialogs/dialog_print_pcbnew.cpp index c7a6643c0c..34fd5f7ebd 100644 --- a/pcbnew/dialogs/dialog_print_pcbnew.cpp +++ b/pcbnew/dialogs/dialog_print_pcbnew.cpp @@ -98,13 +98,10 @@ private: }; -DIALOG_PRINT_PCBNEW::DIALOG_PRINT_PCBNEW( PCB_BASE_EDIT_FRAME* aParent, - PCBNEW_PRINTOUT_SETTINGS* aSettings ) : - DIALOG_PRINT_GENERIC( aParent, aSettings ), - m_parent( aParent ) +DIALOG_PRINT_PCBNEW::DIALOG_PRINT_PCBNEW( PCB_BASE_EDIT_FRAME* aParent, PCBNEW_PRINTOUT_SETTINGS* aSettings ) : + DIALOG_PRINT_GENERIC( aParent, aSettings ), + m_parent( aParent ) { - m_config = Kiface().KifaceSettings(); - createExtraOptions(); createLeftPanel(); @@ -198,8 +195,7 @@ bool DIALOG_PRINT_PCBNEW::TransferDataToWindow() m_drillMarksChoice->SetSelection( (int)settings()->m_DrillMarks ); // Print all layers one one page or separately - m_checkboxPagePerLayer->SetValue( settings()->m_Pagination - == PCBNEW_PRINTOUT_SETTINGS::LAYER_PER_PAGE ); + m_checkboxPagePerLayer->SetValue( settings()->m_Pagination == PCBNEW_PRINTOUT_SETTINGS::LAYER_PER_PAGE ); onPagePerLayerClicked( dummy ); // Update the dialog layout when layers are added @@ -215,22 +211,16 @@ void DIALOG_PRINT_PCBNEW::createExtraOptions() wxStaticBox* box = getOptionsBox(); int rows = optionsSizer->GetEffectiveRowsCount(); - m_checkAsItems = new wxCheckBox( box, wxID_ANY, _( "Print according to objects tab of " - "appearance manager" ) ); - optionsSizer->Add( m_checkAsItems, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), - wxLEFT|wxRIGHT|wxBOTTOM, 5 ); + m_checkAsItems = new wxCheckBox( box, wxID_ANY, _( "Print according to objects tab of appearance manager" ) ); + optionsSizer->Add( m_checkAsItems, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), wxLEFT|wxRIGHT|wxBOTTOM, 5 ); m_checkBackground = new wxCheckBox( box, wxID_ANY, _( "Print background color" ) ); - optionsSizer->Add( m_checkBackground, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), - wxLEFT|wxRIGHT|wxBOTTOM, 5 ); + optionsSizer->Add( m_checkBackground, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), wxLEFT|wxRIGHT|wxBOTTOM, 5 ); - m_checkUseTheme = new wxCheckBox( box, wxID_ANY, _( "Use a different color theme for " - "printing:" ) ); - optionsSizer->Add( m_checkUseTheme, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), - wxLEFT|wxRIGHT, 5 ); + m_checkUseTheme = new wxCheckBox( box, wxID_ANY, _( "Use a different color theme for printing:" ) ); + optionsSizer->Add( m_checkUseTheme, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), wxLEFT|wxRIGHT, 5 ); - m_checkUseTheme->Bind( wxEVT_COMMAND_CHECKBOX_CLICKED, - &DIALOG_PRINT_PCBNEW::onUseThemeClicked, this ); + m_checkUseTheme->Bind( wxEVT_COMMAND_CHECKBOX_CLICKED, &DIALOG_PRINT_PCBNEW::onUseThemeClicked, this ); wxArrayString choices; m_colorTheme = new wxChoice( box, wxID_ANY, wxDefaultPosition, wxDefaultSize, choices, 0 ); @@ -263,16 +253,12 @@ void DIALOG_PRINT_PCBNEW::createExtraOptions() // Pagination m_checkboxPagePerLayer = new wxCheckBox( box, wxID_ANY, _( "Print one page per layer" ) ); - m_checkboxPagePerLayer->Bind( wxEVT_COMMAND_CHECKBOX_CLICKED, - &DIALOG_PRINT_PCBNEW::onPagePerLayerClicked, this ); + m_checkboxPagePerLayer->Bind( wxEVT_COMMAND_CHECKBOX_CLICKED, &DIALOG_PRINT_PCBNEW::onPagePerLayerClicked, this ); - m_checkboxEdgesOnAllPages = new wxCheckBox( box, wxID_ANY, - _( "Print board edges on all pages" ) ); + m_checkboxEdgesOnAllPages = new wxCheckBox( box, wxID_ANY, _( "Print board edges on all pages" ) ); - optionsSizer->Add( m_checkboxPagePerLayer, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), - wxLEFT|wxRIGHT, 5 ); - optionsSizer->Add( m_checkboxEdgesOnAllPages, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), - wxLEFT, 28 ); + optionsSizer->Add( m_checkboxPagePerLayer, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), wxLEFT|wxRIGHT, 5 ); + optionsSizer->Add( m_checkboxEdgesOnAllPages, wxGBPosition( rows++, 0 ), wxGBSpan( 1, 2 ), wxLEFT, 28 ); } @@ -289,20 +275,11 @@ void DIALOG_PRINT_PCBNEW::createLeftPanel() getMainSizer()->Insert( 0, sbLayersSizer, 1, wxEXPAND | wxALL, 5 ); m_popMenu = new wxMenu(); - m_popMenu->Append( new wxMenuItem( m_popMenu, ID_SELECT_FAB_LAYERS, - _( "Select Fab Layers" ), wxEmptyString ) ); - - m_popMenu->Append( new wxMenuItem( m_popMenu, ID_SELECT_COPPER_LAYERS, - _( "Select all Copper Layers" ), wxEmptyString ) ); - - m_popMenu->Append( new wxMenuItem( m_popMenu, ID_DESELECT_COPPER_LAYERS, - _( "Deselect all Copper Layers" ), wxEmptyString ) ); - - m_popMenu->Append( new wxMenuItem( m_popMenu, ID_SELECT_ALL_LAYERS, - _( "Select all Layers" ), wxEmptyString ) ); - - m_popMenu->Append( new wxMenuItem( m_popMenu, ID_DESELECT_ALL_LAYERS, - _( "Deselect all Layers" ), wxEmptyString ) ); + m_popMenu->Append( new wxMenuItem( m_popMenu, ID_SELECT_FAB_LAYERS, _( "Select Fab Layers" ) ) ); + m_popMenu->Append( new wxMenuItem( m_popMenu, ID_SELECT_COPPER_LAYERS, _( "Select all Copper Layers" ) ) ); + m_popMenu->Append( new wxMenuItem( m_popMenu, ID_DESELECT_COPPER_LAYERS, _( "Deselect all Copper Layers" ) ) ); + m_popMenu->Append( new wxMenuItem( m_popMenu, ID_SELECT_ALL_LAYERS, _( "Select all Layers" ) ) ); + m_popMenu->Append( new wxMenuItem( m_popMenu, ID_DESELECT_ALL_LAYERS, _( "Deselect all Layers" ) ) ); this->Bind( wxEVT_RIGHT_DOWN, [&]( wxMouseEvent& aEvent )