diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index ce90a52618..d506a59465 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -179,6 +179,7 @@ set( COMMON_DLG_SRCS dialogs/dialog_migrate_settings_base.cpp dialogs/dialog_page_settings_base.cpp dialogs/dialog_text_entry_base.cpp + dialogs/dialog_page_settings.cpp dialogs/dialog_print_generic.cpp dialogs/dialog_print_generic_base.cpp dialogs/dialog_text_entry.cpp diff --git a/common/dialogs/dialog_page_settings.cpp b/common/dialogs/dialog_page_settings.cpp index b879fbafb8..02aebb0f18 100644 --- a/common/dialogs/dialog_page_settings.cpp +++ b/common/dialogs/dialog_page_settings.cpp @@ -1,24 +1,20 @@ /* - * This program source code file is part of KICAD, a free EDA CAD application. + * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 1992-2020 Kicad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ #include @@ -40,14 +36,6 @@ #include #include -#ifdef EESCHEMA -#include -#include -#include -#include -#include -#endif - #define MAX_PAGE_EXAMPLE_SIZE 200 @@ -78,16 +66,18 @@ static const wxString pageFmts[] = // to be recognized in code }; -DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* parent, wxSize aMaxUserSizeMils ) : - DIALOG_PAGES_SETTINGS_BASE( parent ), - m_initialized( false ), - m_customSizeX( parent, m_userSizeXLabel, m_userSizeXCtrl, m_userSizeXUnits, false ), - m_customSizeY( parent, m_userSizeYLabel, m_userSizeYCtrl, m_userSizeYUnits, false ) +DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* aParent, double aIuPerMils, + wxSize aMaxUserSizeMils ) : + DIALOG_PAGES_SETTINGS_BASE( aParent ), + m_parent( aParent ), + m_screen( m_parent->GetScreen() ), + m_pageBitmap( nullptr ), + m_initialized( false ), + m_customSizeX( aParent, m_userSizeXLabel, m_userSizeXCtrl, m_userSizeXUnits, false ), + m_customSizeY( aParent, m_userSizeYLabel, m_userSizeYCtrl, m_userSizeYUnits, false ), + m_iuPerMils( aIuPerMils ) { - m_parent = parent; - m_screen = m_parent->GetScreen(); m_projectPath = Prj().GetProjectPath(); - m_page_bitmap = NULL; m_maxPageSizeMils = aMaxUserSizeMils; m_tb = m_parent->GetTitleBlock(); m_customFmt = false; @@ -100,7 +90,7 @@ DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* parent, wxSize aMa m_PickDate->SetValue( wxDateTime::Now() ); - if( parent->GetName() == PL_EDITOR_FRAME_NAME ) + if( m_parent->GetName() == PL_EDITOR_FRAME_NAME ) { SetTitle( _( "Preview Settings" ) ); m_staticTextPaper->SetLabel( _( "Preview Paper" ) ); @@ -113,41 +103,18 @@ DIALOG_PAGES_SETTINGS::DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* parent, wxSize aMa m_staticTextTitleBlock->SetLabel( _( "Title Block" ) ); } - initDialog(); - - GetSizer()->SetSizeHints( this ); Centre(); } DIALOG_PAGES_SETTINGS::~DIALOG_PAGES_SETTINGS() { -#ifdef EESCHEMA - auto cfg = dynamic_cast( Kiface().KifaceSettings() ); - wxASSERT( cfg ); - - cfg->m_PageSettings.export_paper = m_PaperExport->GetValue(); - cfg->m_PageSettings.export_revision = m_RevisionExport->GetValue(); - cfg->m_PageSettings.export_date = m_DateExport->GetValue(); - cfg->m_PageSettings.export_title = m_TitleExport->GetValue(); - cfg->m_PageSettings.export_company = m_CompanyExport->GetValue(); - cfg->m_PageSettings.export_comment1 = m_Comment1Export->GetValue(); - cfg->m_PageSettings.export_comment2 = m_Comment2Export->GetValue(); - cfg->m_PageSettings.export_comment3 = m_Comment3Export->GetValue(); - cfg->m_PageSettings.export_comment4 = m_Comment4Export->GetValue(); - cfg->m_PageSettings.export_comment5 = m_Comment5Export->GetValue(); - cfg->m_PageSettings.export_comment6 = m_Comment6Export->GetValue(); - cfg->m_PageSettings.export_comment7 = m_Comment7Export->GetValue(); - cfg->m_PageSettings.export_comment8 = m_Comment8Export->GetValue(); - cfg->m_PageSettings.export_comment9 = m_Comment9Export->GetValue(); -#endif - - delete m_page_bitmap; + delete m_pageBitmap; delete m_pagelayout; } -void DIALOG_PAGES_SETTINGS::initDialog() +bool DIALOG_PAGES_SETTINGS::TransferDataToWindow() { wxString msg; @@ -164,20 +131,6 @@ void DIALOG_PAGES_SETTINGS::initDialog() // initialize the page layout descr filename SetWksFileName( BASE_SCREEN::m_PageLayoutDescrFileName ); -#ifdef EESCHEMA - // Init display value for schematic sub-sheet number - wxString format = m_TextSheetCount->GetLabel(); - msg.Printf( format, m_screen->GetPageCount() ); - m_TextSheetCount->SetLabel( msg ); - - format = m_TextSheetNumber->GetLabel(); - msg.Printf( format, m_screen->GetVirtualPageNumber() ); - m_TextSheetNumber->SetLabel( msg ); -#else - m_TextSheetCount->Show( false ); - m_TextSheetNumber->Show( false ); -#endif - m_pageInfo = m_parent->GetPageSettings(); SetCurrentPageSizeSelection( m_pageInfo.GetType() ); m_orientationComboBox->SetSelection( m_pageInfo.IsPortrait() ); @@ -188,13 +141,13 @@ void DIALOG_PAGES_SETTINGS::initDialog() if( m_customFmt ) { - m_customSizeX.SetValue( m_pageInfo.GetWidthMils() * IU_PER_MILS ); - m_customSizeY.SetValue( m_pageInfo.GetHeightMils() * IU_PER_MILS ); + m_customSizeX.SetValue( m_pageInfo.GetWidthMils() * m_iuPerMils ); + m_customSizeY.SetValue( m_pageInfo.GetHeightMils() * m_iuPerMils ); } else { - m_customSizeX.SetValue( m_pageInfo.GetCustomWidthMils() * IU_PER_MILS ); - m_customSizeY.SetValue( m_pageInfo.GetCustomHeightMils() * IU_PER_MILS ); + m_customSizeX.SetValue( m_pageInfo.GetCustomWidthMils() * m_iuPerMils ); + m_customSizeY.SetValue( m_pageInfo.GetCustomHeightMils() * m_iuPerMils ); } m_TextRevision->SetValue( m_tb.GetRevision() ); @@ -211,25 +164,9 @@ void DIALOG_PAGES_SETTINGS::initDialog() m_TextComment8->SetValue( m_tb.GetComment( 7 ) ); m_TextComment9->SetValue( m_tb.GetComment( 8 ) ); -#ifdef EESCHEMA - auto cfg = dynamic_cast( Kiface().KifaceSettings() ); - wxASSERT( cfg ); - - m_PaperExport->SetValue( cfg->m_PageSettings.export_paper ); - m_RevisionExport->SetValue( cfg->m_PageSettings.export_revision ); - m_DateExport->SetValue( cfg->m_PageSettings.export_date ); - m_TitleExport->SetValue( cfg->m_PageSettings.export_title ); - m_CompanyExport->SetValue( cfg->m_PageSettings.export_company ); - m_Comment1Export->SetValue( cfg->m_PageSettings.export_comment1 ); - m_Comment2Export->SetValue( cfg->m_PageSettings.export_comment2 ); - m_Comment3Export->SetValue( cfg->m_PageSettings.export_comment3 ); - m_Comment4Export->SetValue( cfg->m_PageSettings.export_comment4 ); - m_Comment5Export->SetValue( cfg->m_PageSettings.export_comment5 ); - m_Comment6Export->SetValue( cfg->m_PageSettings.export_comment6 ); - m_Comment7Export->SetValue( cfg->m_PageSettings.export_comment7 ); - m_Comment8Export->SetValue( cfg->m_PageSettings.export_comment8 ); - m_Comment9Export->SetValue( cfg->m_PageSettings.export_comment9 ); -#else + // The default is to disable aall these fields for the "generic" dialog + m_TextSheetCount->Show( false ); + m_TextSheetNumber->Show( false ); m_PaperExport->Show( false ); m_RevisionExport->Show( false ); m_DateExport->Show( false ); @@ -244,24 +181,29 @@ void DIALOG_PAGES_SETTINGS::initDialog() m_Comment7Export->Show( false ); m_Comment8Export->Show( false ); m_Comment9Export->Show( false ); -#endif + + onTransferDataToWindow(); GetPageLayoutInfoFromDialog(); UpdatePageLayoutExample(); + GetSizer()->SetSizeHints( this ); + // Make the OK button the default. m_sdbSizerOK->SetDefault(); m_initialized = true; + + return true; } -void DIALOG_PAGES_SETTINGS::OnOkClick( wxCommandEvent& event ) +bool DIALOG_PAGES_SETTINGS::TransferDataFromWindow() { if( !m_customSizeX.Validate( MIN_PAGE_SIZE_MILS, m_maxPageSizeMils.x, EDA_UNITS::MILS ) ) - return; + return false; if( !m_customSizeY.Validate( MIN_PAGE_SIZE_MILS, m_maxPageSizeMils.y, EDA_UNITS::MILS ) ) - return; + return false; if( SavePageSettings() ) { @@ -274,7 +216,7 @@ void DIALOG_PAGES_SETTINGS::OnOkClick( wxCommandEvent& event ) m_parent->OnPageSettingsChange(); } - event.Skip(); + return true; } @@ -612,69 +554,7 @@ bool DIALOG_PAGES_SETTINGS::SavePageSettings() m_parent->SetTitleBlock( m_tb ); - -#ifdef EESCHEMA - wxCHECK_MSG( dynamic_cast( m_parent ), true, - "DIALOG_PAGES_SETTINGS::OnDateApplyClick frame is not a schematic frame!" ); - - // Exports settings to other sheets if requested: - SCH_SCREENS ScreenList( dynamic_cast( m_parent )->Schematic().Root() ); - - // Update page info and/or title blocks for all screens - for( SCH_SCREEN* screen = ScreenList.GetFirst(); screen; screen = ScreenList.GetNext() ) - { - if( screen == m_screen ) - continue; - - if( m_PaperExport->IsChecked() ) - screen->SetPageSettings( m_pageInfo ); - - TITLE_BLOCK tb2 = screen->GetTitleBlock(); - - if( m_RevisionExport->IsChecked() ) - tb2.SetRevision( m_tb.GetRevision() ); - - if( m_DateExport->IsChecked() ) - tb2.SetDate( m_tb.GetDate() ); - - if( m_TitleExport->IsChecked() ) - tb2.SetTitle( m_tb.GetTitle() ); - - if( m_CompanyExport->IsChecked() ) - tb2.SetCompany( m_tb.GetCompany() ); - - if( m_Comment1Export->IsChecked() ) - tb2.SetComment( 0, m_tb.GetComment( 0 ) ); - - if( m_Comment2Export->IsChecked() ) - tb2.SetComment( 1, m_tb.GetComment( 1 ) ); - - if( m_Comment3Export->IsChecked() ) - tb2.SetComment( 2, m_tb.GetComment( 2 ) ); - - if( m_Comment4Export->IsChecked() ) - tb2.SetComment( 3, m_tb.GetComment( 3 ) ); - - if( m_Comment5Export->IsChecked() ) - tb2.SetComment( 4, m_tb.GetComment( 4 ) ); - - if( m_Comment6Export->IsChecked() ) - tb2.SetComment( 5, m_tb.GetComment( 5 ) ); - - if( m_Comment7Export->IsChecked() ) - tb2.SetComment( 6, m_tb.GetComment( 6 ) ); - - if( m_Comment8Export->IsChecked() ) - tb2.SetComment( 7, m_tb.GetComment( 7 ) ); - - if( m_Comment9Export->IsChecked() ) - tb2.SetComment( 8, m_tb.GetComment( 8 ) ); - - screen->SetTitleBlock( tb2 ); - } -#endif - - return true; + return onSavePageSettings(); } @@ -720,15 +600,15 @@ void DIALOG_PAGES_SETTINGS::UpdatePageLayoutExample() lyHeight = KiROUND( (double) lyWidth / lyRatio ); } - if( m_page_bitmap ) + if( m_pageBitmap ) { m_PageLayoutExampleBitmap->SetBitmap( wxNullBitmap ); - delete m_page_bitmap; + delete m_pageBitmap; } - m_page_bitmap = new wxBitmap( lyWidth + 1, lyHeight + 1 ); + m_pageBitmap = new wxBitmap( lyWidth + 1, lyHeight + 1 ); - if( m_page_bitmap->IsOk() ) + if( m_pageBitmap->IsOk() ) { double scaleW = (double) lyWidth / clamped_layout_size.x; double scaleH = (double) lyHeight / clamped_layout_size.y; @@ -737,7 +617,7 @@ void DIALOG_PAGES_SETTINGS::UpdatePageLayoutExample() // Prepare DC. wxSize example_size( lyWidth + 1, lyHeight + 1 ); wxMemoryDC memDC; - memDC.SelectObject( *m_page_bitmap ); + memDC.SelectObject( *m_pageBitmap ); memDC.SetClippingRegion( wxPoint( 0, 0 ), example_size ); memDC.Clear(); memDC.SetUserScale( scale, scale ); @@ -777,7 +657,7 @@ void DIALOG_PAGES_SETTINGS::UpdatePageLayoutExample() wxEmptyString, m_screen->GetVirtualPageNumber() == 1 ); memDC.SelectObject( wxNullBitmap ); - m_PageLayoutExampleBitmap->SetBitmap( *m_page_bitmap ); + m_PageLayoutExampleBitmap->SetBitmap( *m_pageBitmap ); WS_DATA_MODEL::SetAltInstance( NULL ); // Refresh the dialog. @@ -856,8 +736,8 @@ void DIALOG_PAGES_SETTINGS::GetPageLayoutInfoFromDialog() void DIALOG_PAGES_SETTINGS::GetCustomSizeMilsFromDialog() { - double customSizeX = (double) m_customSizeX.GetValue() / IU_PER_MILS; - double customSizeY = (double) m_customSizeY.GetValue() / IU_PER_MILS; + double customSizeX = (double) m_customSizeX.GetValue() / m_iuPerMils; + double customSizeY = (double) m_customSizeY.GetValue() / m_iuPerMils; // Prepare to painless double -> int conversion. customSizeX = Clamp( double( INT_MIN ), customSizeX, double( INT_MAX ) ); diff --git a/eeschema/CMakeLists.txt b/eeschema/CMakeLists.txt index 71e2ca6e37..d2723bea59 100644 --- a/eeschema/CMakeLists.txt +++ b/eeschema/CMakeLists.txt @@ -65,6 +65,7 @@ set( EESCHEMA_DLGS dialogs/dialog_edit_line_style.cpp dialogs/dialog_edit_line_style_base.cpp dialogs/dialog_edit_one_field.cpp + dialogs/dialog_eeschema_page_settings.cpp dialogs/dialog_erc.cpp dialogs/dialog_erc_base.cpp dialogs/dialog_global_sym_lib_table_config.cpp @@ -268,7 +269,6 @@ set( EESCHEMA_SRCS set( EESCHEMA_COMMON_SRCS - ${CMAKE_SOURCE_DIR}/common/dialogs/dialog_page_settings.cpp ${CMAKE_SOURCE_DIR}/common/dialogs/panel_gal_display_options.cpp ${CMAKE_SOURCE_DIR}/common/dialogs/panel_setup_severities.cpp ${CMAKE_SOURCE_DIR}/common/common.cpp diff --git a/eeschema/dialogs/dialog_eeschema_page_settings.cpp b/eeschema/dialogs/dialog_eeschema_page_settings.cpp new file mode 100644 index 0000000000..fab53fbf0a --- /dev/null +++ b/eeschema/dialogs/dialog_eeschema_page_settings.cpp @@ -0,0 +1,170 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#include "dialog_eeschema_page_settings.h" + +#include +#include +#include +#include +#include +#include + +DIALOG_EESCHEMA_PAGE_SETTINGS::DIALOG_EESCHEMA_PAGE_SETTINGS( EDA_DRAW_FRAME* aParent, + wxSize aMaxUserSizeMils ) : + DIALOG_PAGES_SETTINGS( aParent, IU_PER_MILS, aMaxUserSizeMils ) +{ +} + + +DIALOG_EESCHEMA_PAGE_SETTINGS::~DIALOG_EESCHEMA_PAGE_SETTINGS() +{ + auto cfg = dynamic_cast( Kiface().KifaceSettings() ); + wxASSERT( cfg ); + + cfg->m_PageSettings.export_paper = m_PaperExport->GetValue(); + cfg->m_PageSettings.export_revision = m_RevisionExport->GetValue(); + cfg->m_PageSettings.export_date = m_DateExport->GetValue(); + cfg->m_PageSettings.export_title = m_TitleExport->GetValue(); + cfg->m_PageSettings.export_company = m_CompanyExport->GetValue(); + cfg->m_PageSettings.export_comment1 = m_Comment1Export->GetValue(); + cfg->m_PageSettings.export_comment2 = m_Comment2Export->GetValue(); + cfg->m_PageSettings.export_comment3 = m_Comment3Export->GetValue(); + cfg->m_PageSettings.export_comment4 = m_Comment4Export->GetValue(); + cfg->m_PageSettings.export_comment5 = m_Comment5Export->GetValue(); + cfg->m_PageSettings.export_comment6 = m_Comment6Export->GetValue(); + cfg->m_PageSettings.export_comment7 = m_Comment7Export->GetValue(); + cfg->m_PageSettings.export_comment8 = m_Comment8Export->GetValue(); + cfg->m_PageSettings.export_comment9 = m_Comment9Export->GetValue(); +} + + +void DIALOG_EESCHEMA_PAGE_SETTINGS::onTransferDataToWindow() +{ + wxString msg; + + m_TextSheetCount->Show( true ); + m_TextSheetNumber->Show( true ); + m_PaperExport->Show( true ); + m_RevisionExport->Show( true ); + m_DateExport->Show( true ); + m_TitleExport->Show( true ); + m_CompanyExport->Show( true ); + m_Comment1Export->Show( true ); + m_Comment2Export->Show( true ); + m_Comment3Export->Show( true ); + m_Comment4Export->Show( true ); + m_Comment5Export->Show( true ); + m_Comment6Export->Show( true ); + m_Comment7Export->Show( true ); + m_Comment8Export->Show( true ); + m_Comment9Export->Show( true ); + + // Init display value for schematic sub-sheet number + wxString format = m_TextSheetCount->GetLabel(); + msg.Printf( format, m_screen->GetPageCount() ); + m_TextSheetCount->SetLabel( msg ); + + format = m_TextSheetNumber->GetLabel(); + msg.Printf( format, m_screen->GetVirtualPageNumber() ); + m_TextSheetNumber->SetLabel( msg ); + + auto cfg = dynamic_cast( Kiface().KifaceSettings() ); + wxASSERT( cfg ); + + m_PaperExport->SetValue( cfg->m_PageSettings.export_paper ); + m_RevisionExport->SetValue( cfg->m_PageSettings.export_revision ); + m_DateExport->SetValue( cfg->m_PageSettings.export_date ); + m_TitleExport->SetValue( cfg->m_PageSettings.export_title ); + m_CompanyExport->SetValue( cfg->m_PageSettings.export_company ); + m_Comment1Export->SetValue( cfg->m_PageSettings.export_comment1 ); + m_Comment2Export->SetValue( cfg->m_PageSettings.export_comment2 ); + m_Comment3Export->SetValue( cfg->m_PageSettings.export_comment3 ); + m_Comment4Export->SetValue( cfg->m_PageSettings.export_comment4 ); + m_Comment5Export->SetValue( cfg->m_PageSettings.export_comment5 ); + m_Comment6Export->SetValue( cfg->m_PageSettings.export_comment6 ); + m_Comment7Export->SetValue( cfg->m_PageSettings.export_comment7 ); + m_Comment8Export->SetValue( cfg->m_PageSettings.export_comment8 ); + m_Comment9Export->SetValue( cfg->m_PageSettings.export_comment9 ); +} + + +bool DIALOG_EESCHEMA_PAGE_SETTINGS::onSavePageSettings() +{ + wxCHECK_MSG( dynamic_cast( m_parent ), true, + "DIALOG_PAGES_SETTINGS::OnDateApplyClick frame is not a schematic frame!" ); + + // Exports settings to other sheets if requested: + SCH_SCREENS ScreenList( dynamic_cast( m_parent )->Schematic().Root() ); + + // Update page info and/or title blocks for all screens + for( SCH_SCREEN* screen = ScreenList.GetFirst(); screen; screen = ScreenList.GetNext() ) + { + if( screen == m_screen ) + continue; + + if( m_PaperExport->IsChecked() ) + screen->SetPageSettings( m_pageInfo ); + + TITLE_BLOCK tb2 = screen->GetTitleBlock(); + + if( m_RevisionExport->IsChecked() ) + tb2.SetRevision( m_tb.GetRevision() ); + + if( m_DateExport->IsChecked() ) + tb2.SetDate( m_tb.GetDate() ); + + if( m_TitleExport->IsChecked() ) + tb2.SetTitle( m_tb.GetTitle() ); + + if( m_CompanyExport->IsChecked() ) + tb2.SetCompany( m_tb.GetCompany() ); + + if( m_Comment1Export->IsChecked() ) + tb2.SetComment( 0, m_tb.GetComment( 0 ) ); + + if( m_Comment2Export->IsChecked() ) + tb2.SetComment( 1, m_tb.GetComment( 1 ) ); + + if( m_Comment3Export->IsChecked() ) + tb2.SetComment( 2, m_tb.GetComment( 2 ) ); + + if( m_Comment4Export->IsChecked() ) + tb2.SetComment( 3, m_tb.GetComment( 3 ) ); + + if( m_Comment5Export->IsChecked() ) + tb2.SetComment( 4, m_tb.GetComment( 4 ) ); + + if( m_Comment6Export->IsChecked() ) + tb2.SetComment( 5, m_tb.GetComment( 5 ) ); + + if( m_Comment7Export->IsChecked() ) + tb2.SetComment( 6, m_tb.GetComment( 6 ) ); + + if( m_Comment8Export->IsChecked() ) + tb2.SetComment( 7, m_tb.GetComment( 7 ) ); + + if( m_Comment9Export->IsChecked() ) + tb2.SetComment( 8, m_tb.GetComment( 8 ) ); + + screen->SetTitleBlock( tb2 ); + } + + return true; +} \ No newline at end of file diff --git a/eeschema/dialogs/dialog_eeschema_page_settings.h b/eeschema/dialogs/dialog_eeschema_page_settings.h new file mode 100644 index 0000000000..e2137553e7 --- /dev/null +++ b/eeschema/dialogs/dialog_eeschema_page_settings.h @@ -0,0 +1,38 @@ +/* + * This program source code file is part of KiCad, a free EDA CAD application. + * + * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +#ifndef DIALOG_EESCHEMA_PAGE_SETTINGS_H +#define DIALOG_EESCHEMA_PAGE_SETTINGS_H + +#include + +class WS_DATA_MODEL; + +class DIALOG_EESCHEMA_PAGE_SETTINGS : public DIALOG_PAGES_SETTINGS +{ +public: + DIALOG_EESCHEMA_PAGE_SETTINGS( EDA_DRAW_FRAME* aParent, wxSize aMaxUserSizeMils ); + virtual ~DIALOG_EESCHEMA_PAGE_SETTINGS(); + +private: + void onTransferDataToWindow() override; + bool onSavePageSettings() override; +}; + +#endif // DIALOG_PCBNEW_PAGE_SETTINGS diff --git a/eeschema/tools/sch_editor_control.cpp b/eeschema/tools/sch_editor_control.cpp index 216f255578..2ae5927285 100644 --- a/eeschema/tools/sch_editor_control.cpp +++ b/eeschema/tools/sch_editor_control.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include #include @@ -105,7 +105,7 @@ int SCH_EDITOR_CONTROL::PageSetup( const TOOL_EVENT& aEvent ) undoCmd.PushItem( wrapper ); m_frame->SaveCopyInUndoList( undoCmd, UNDO_REDO::PAGESETTINGS, false ); - DIALOG_PAGES_SETTINGS dlg( m_frame, wxSize( MAX_PAGE_SIZE_MILS, MAX_PAGE_SIZE_MILS ) ); + DIALOG_EESCHEMA_PAGE_SETTINGS dlg( m_frame, wxSize( MAX_PAGE_SIZE_MILS, MAX_PAGE_SIZE_MILS ) ); dlg.SetWksFileName( BASE_SCREEN::m_PageLayoutDescrFileName ); if( dlg.ShowModal() != wxID_OK ) diff --git a/include/dialogs/dialog_page_settings.h b/include/dialogs/dialog_page_settings.h index 136710c61e..6a1babbafc 100644 --- a/include/dialogs/dialog_page_settings.h +++ b/include/dialogs/dialog_page_settings.h @@ -1,24 +1,20 @@ /* - * This program source code file is part of KICAD, a free EDA CAD application. + * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 1992-2018 Kicad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, you may find one here: - * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html - * or you may search the http://www.gnu.org website for the version 2 license, - * or you may write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . */ #ifndef _DIALOG_PAGES_SETTINGS_H_ @@ -37,27 +33,9 @@ class WS_DATA_MODEL; class DIALOG_PAGES_SETTINGS: public DIALOG_PAGES_SETTINGS_BASE { -private: - EDA_DRAW_FRAME* m_parent; - BASE_SCREEN* m_screen; - wxString m_projectPath; // the curr project path - wxArrayString m_pageFmt; /// list of page sizes (not translated) - bool m_initialized; - bool m_localPrjConfigChanged; /// the page layuout filename was changed - wxBitmap* m_page_bitmap; /// Temporary bitmap for the page layout example. - wxSize m_layout_size; /// Logical page layout size. - wxSize m_maxPageSizeMils; /// The max page size allowed by the caller frame - PAGE_INFO m_pageInfo; /// Temporary page info. - bool m_customFmt; /// true if the page selection is custom - TITLE_BLOCK m_tb; /// Temporary title block (basic inscriptions). - WS_DATA_MODEL* m_pagelayout; // the alternate and temporary page layout shown by the dialog - // when the initial one is replaced by a new one - UNIT_BINDER m_customSizeX; - UNIT_BINDER m_customSizeY; - public: - DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* parent, wxSize aMaxUserSizeMils ); - ~DIALOG_PAGES_SETTINGS(); + DIALOG_PAGES_SETTINGS( EDA_DRAW_FRAME* aParent, double aIuPerMils, wxSize aMaxUserSizeMils ); + virtual ~DIALOG_PAGES_SETTINGS(); const wxString GetWksFileName() { @@ -76,10 +54,15 @@ public: } private: - void initDialog(); // Initialisation of member variables + virtual void onTransferDataToWindow() {} - // event handler for button OK - void OnOkClick( wxCommandEvent& event ) override; + virtual bool onSavePageSettings() { + // default just return true savepagesettings to succeed + return true; + } + + virtual bool TransferDataToWindow() override; + virtual bool TransferDataFromWindow() override; // event handlers for page size choice void OnPaperSizeChoice( wxCommandEvent& event ) override; @@ -126,6 +109,27 @@ private: /// @return true if the local prj config is chande /// i.e. if the page layout descr file has chnaged bool LocalPrjConfigChanged() { return m_localPrjConfigChanged; } + +protected: + EDA_DRAW_FRAME* m_parent; + BASE_SCREEN* m_screen; + wxString m_projectPath; // the curr project path + wxArrayString m_pageFmt; /// list of page sizes (not translated) + bool m_initialized; + bool m_localPrjConfigChanged; /// the page layuout filename was changed + wxBitmap* m_pageBitmap; /// Temporary bitmap for the page layout example. + wxSize m_layout_size; /// Logical page layout size. + wxSize m_maxPageSizeMils; /// The max page size allowed by the caller frame + PAGE_INFO m_pageInfo; /// Temporary page info. + bool m_customFmt; /// true if the page selection is custom + TITLE_BLOCK m_tb; /// Temporary title block (basic inscriptions). + WS_DATA_MODEL* m_pagelayout; // the alternate and temporary page layout shown by the dialog + // when the initial one is replaced by a new one + double m_iuPerMils; + +private: + UNIT_BINDER m_customSizeX; + UNIT_BINDER m_customSizeY; }; #endif // _DIALOG_PAGES_SETTINGS_H_ diff --git a/pagelayout_editor/CMakeLists.txt b/pagelayout_editor/CMakeLists.txt index 6debff3cca..fcd8f61289 100644 --- a/pagelayout_editor/CMakeLists.txt +++ b/pagelayout_editor/CMakeLists.txt @@ -48,7 +48,6 @@ set( PL_EDITOR_EXTRA_SRCS ${CMAKE_SOURCE_DIR}/common/base_screen.cpp ${CMAKE_SOURCE_DIR}/common/base_units.cpp ${CMAKE_SOURCE_DIR}/common/eda_text.cpp - ${CMAKE_SOURCE_DIR}/common/dialogs/dialog_page_settings.cpp ${CMAKE_SOURCE_DIR}/common/dialogs/panel_gal_display_options.cpp ${CMAKE_SOURCE_DIR}/common/page_info.cpp ) diff --git a/pagelayout_editor/tools/pl_editor_control.cpp b/pagelayout_editor/tools/pl_editor_control.cpp index 27364fd649..a261cf4f12 100644 --- a/pagelayout_editor/tools/pl_editor_control.cpp +++ b/pagelayout_editor/tools/pl_editor_control.cpp @@ -89,7 +89,7 @@ int PL_EDITOR_CONTROL::PageSetup( const TOOL_EVENT& aEvent ) { m_frame->SaveCopyInUndoList(); - DIALOG_PAGES_SETTINGS dlg( m_frame, wxSize( MAX_PAGE_SIZE_MILS, MAX_PAGE_SIZE_MILS ) ); + DIALOG_PAGES_SETTINGS dlg( m_frame, IU_PER_MILS, wxSize( MAX_PAGE_SIZE_MILS, MAX_PAGE_SIZE_MILS ) ); dlg.SetWksFileName( m_frame->GetCurrentFileName() ); dlg.EnableWksFileNamePicker( false ); diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt index fe00b67f33..207a6ab886 100644 --- a/pcbnew/CMakeLists.txt +++ b/pcbnew/CMakeLists.txt @@ -47,7 +47,7 @@ set( PCBNEW_DIALOGS dialogs/dialog_board_statistics.cpp dialogs/dialog_board_statistics_base.cpp dialogs/dialog_board_reannotate.cpp - dialogs/dialog_board_reannotate_base.cpp + dialogs/dialog_board_reannotate_base.cpp dialogs/dialog_choose_footprint.cpp dialogs/dialog_cleanup_graphics.cpp dialogs/dialog_cleanup_graphics_base.cpp @@ -366,7 +366,6 @@ set( PCBNEW_SRCS # extra sources from common set( PCBNEW_COMMON_SRCS - ${CMAKE_SOURCE_DIR}/common/dialogs/dialog_page_settings.cpp ${CMAKE_SOURCE_DIR}/common/base_units.cpp ${CMAKE_SOURCE_DIR}/common/hotkeys_basic.cpp ) @@ -437,14 +436,14 @@ if( KICAD_SCRIPTING ) # Generate pcbnew.py and pcbnew_wrap.cxx using swig # We deliberately do not use the CMake support for swig here, # i.e. swig_add_footprint()) because we want full control. - + # Avoid threading in SWIG (breaks threads in pcbnew) set( SWIG_OPTS -python -c++ -nothreads ) - + if( KICAD_SCRIPTING_PYTHON3 ) set( SWIG_OPTS ${SWIG_OPTS} -py3 ) endif() - + set( SWIG_OPTS ${SWIG_OPTS} -outdir ${CMAKE_CURRENT_BINARY_DIR} ${SWIG_FLAGS} ) if( EXISTS ${CMAKE_CURRENT_BINARY_DIR}/doxygen-xml ) diff --git a/pcbnew/tools/board_editor_control.cpp b/pcbnew/tools/board_editor_control.cpp index 67a89d2c89..236efe22b8 100644 --- a/pcbnew/tools/board_editor_control.cpp +++ b/pcbnew/tools/board_editor_control.cpp @@ -277,8 +277,8 @@ int BOARD_EDITOR_CONTROL::PageSettings( const TOOL_EVENT& aEvent ) undoCmd.PushItem( wrapper ); m_frame->SaveCopyInUndoList( undoCmd, UNDO_REDO::PAGESETTINGS ); - DIALOG_PAGES_SETTINGS dlg( m_frame, wxSize( MAX_PAGE_SIZE_PCBNEW_MILS, - MAX_PAGE_SIZE_PCBNEW_MILS ) ); + DIALOG_PAGES_SETTINGS dlg( m_frame, IU_PER_MILS, + wxSize( MAX_PAGE_SIZE_PCBNEW_MILS, MAX_PAGE_SIZE_PCBNEW_MILS ) ); dlg.SetWksFileName( BASE_SCREEN::m_PageLayoutDescrFileName ); if( dlg.ShowModal() != wxID_OK )