This commit is contained in:
Jeff Young 2025-02-03 11:54:31 +00:00
parent 5f06f0d863
commit 857d4f3803
8 changed files with 98 additions and 81 deletions

View File

@ -318,8 +318,8 @@ set( EESCHEMA_IMPORT_GFX
) )
set( EESCHEMA_PRINTING set( EESCHEMA_PRINTING
printing/dialog_print_using_printer.cpp printing/dialog_print.cpp
printing/dialog_print_using_printer_base.cpp printing/dialog_print_base.cpp
printing/sch_printout.cpp printing/sch_printout.cpp
) )

View File

@ -61,10 +61,6 @@ class SCH_EDIT_FRAME;
int InvokeDialogRescueEach( wxWindow* aParent, RESCUER& aRescuer, SCH_SHEET_PATH* aCurrentSheet, int InvokeDialogRescueEach( wxWindow* aParent, RESCUER& aRescuer, SCH_SHEET_PATH* aCurrentSheet,
EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType, bool aAskShowAgain ); EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType, bool aAskShowAgain );
/// Create and show DIALOG_PRINT_USING_PRINTER and return whatever
/// DIALOG_PRINT_USING_PRINTER::ShowModal() returns.
int InvokeDialogPrintUsingPrinter( SCH_EDIT_FRAME* aCaller );
/// Create and show DIALOG_BOM and return whatever /// Create and show DIALOG_BOM and return whatever
/// DIALOG_BOM::ShowModal() returns. /// DIALOG_BOM::ShowModal() returns.
int InvokeDialogCreateBOM( SCH_EDIT_FRAME* aCaller ); int InvokeDialogCreateBOM( SCH_EDIT_FRAME* aCaller );

View File

@ -26,47 +26,15 @@
#include <confirm.h> #include <confirm.h>
#include <sch_screen.h> #include <sch_screen.h>
#include <sch_edit_frame.h> #include <sch_edit_frame.h>
#include <base_units.h>
#include <math/vector2wx.h> #include <math/vector2wx.h>
#include <settings/color_settings.h> #include <settings/color_settings.h>
#include <settings/settings_manager.h> #include <settings/settings_manager.h>
#include <sch_sheet.h>
#include <schematic.h>
#include <sch_sheet_path.h>
#include "dialog_print_using_printer_base.h"
#include <sch_painter.h>
#include <wx/print.h> #include <wx/print.h>
#include <wx/printdlg.h> #include <wx/printdlg.h>
#include "dialog_print.h"
#include <advanced_config.h>
#include "sch_printout.h" #include "sch_printout.h"
class DIALOG_PRINT_USING_PRINTER : public DIALOG_PRINT_USING_PRINTER_BASE
{
public:
DIALOG_PRINT_USING_PRINTER( SCH_EDIT_FRAME* aParent );
~DIALOG_PRINT_USING_PRINTER() override;
protected:
void OnOutputChoice( wxCommandEvent& event ) override;
void OnUseColorThemeChecked( wxCommandEvent& event ) override;
private:
bool TransferDataToWindow() override;
bool TransferDataFromWindow() override;
void OnPageSetup( wxCommandEvent& event ) override;
void OnPrintPreview( wxCommandEvent& event ) override;
void SavePrintOptions();
SCH_EDIT_FRAME* m_parent;
bool m_useCairo;
};
/** /**
* Custom schematic print preview frame. * Custom schematic print preview frame.
* This derived preview frame remembers its size and position during a session * This derived preview frame remembers its size and position during a session
@ -77,7 +45,7 @@ public:
SCH_PREVIEW_FRAME( wxPrintPreview* aPreview, wxWindow* aParent, SCH_PREVIEW_FRAME( wxPrintPreview* aPreview, wxWindow* aParent,
const wxString& aTitle, const wxPoint& aPos = wxDefaultPosition, const wxString& aTitle, const wxPoint& aPos = wxDefaultPosition,
const wxSize& aSize = wxDefaultSize ) : const wxSize& aSize = wxDefaultSize ) :
wxPreviewFrame( aPreview, aParent, aTitle, aPos, aSize ) wxPreviewFrame( aPreview, aParent, aTitle, aPos, aSize )
{ {
} }
@ -116,9 +84,9 @@ wxPoint SCH_PREVIEW_FRAME::s_pos;
wxSize SCH_PREVIEW_FRAME::s_size; wxSize SCH_PREVIEW_FRAME::s_size;
DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER( SCH_EDIT_FRAME* aParent ) : DIALOG_PRINT::DIALOG_PRINT( SCH_EDIT_FRAME* aParent ) :
DIALOG_PRINT_USING_PRINTER_BASE( aParent ), DIALOG_PRINT_BASE( aParent ),
m_parent( aParent ) m_parent( aParent )
{ {
wxASSERT( aParent ); wxASSERT( aParent );
m_useCairo = ADVANCED_CFG::GetCfg().m_EnableEeschemaPrintCairo; m_useCairo = ADVANCED_CFG::GetCfg().m_EnableEeschemaPrintCairo;
@ -144,13 +112,13 @@ DIALOG_PRINT_USING_PRINTER::DIALOG_PRINT_USING_PRINTER( SCH_EDIT_FRAME* aParent
} }
DIALOG_PRINT_USING_PRINTER::~DIALOG_PRINT_USING_PRINTER() DIALOG_PRINT::~DIALOG_PRINT()
{ {
SavePrintOptions(); SavePrintOptions();
} }
bool DIALOG_PRINT_USING_PRINTER::TransferDataToWindow() bool DIALOG_PRINT::TransferDataToWindow()
{ {
EESCHEMA_SETTINGS* cfg = m_parent->eeconfig(); EESCHEMA_SETTINGS* cfg = m_parent->eeconfig();
@ -197,11 +165,15 @@ bool DIALOG_PRINT_USING_PRINTER::TransferDataToWindow()
if( pageInfo.IsCustom() ) if( pageInfo.IsCustom() )
{ {
if( pageInfo.IsPortrait() ) if( pageInfo.IsPortrait() )
{
pageSetupDialogData.SetPaperSize( wxSize( EDA_UNIT_UTILS::Mils2mm( pageInfo.GetWidthMils() ), pageSetupDialogData.SetPaperSize( wxSize( EDA_UNIT_UTILS::Mils2mm( pageInfo.GetWidthMils() ),
EDA_UNIT_UTILS::Mils2mm( pageInfo.GetHeightMils() ) ) ); EDA_UNIT_UTILS::Mils2mm( pageInfo.GetHeightMils() ) ) );
}
else else
{
pageSetupDialogData.SetPaperSize( wxSize( EDA_UNIT_UTILS::Mils2mm( pageInfo.GetHeightMils() ), pageSetupDialogData.SetPaperSize( wxSize( EDA_UNIT_UTILS::Mils2mm( pageInfo.GetHeightMils() ),
EDA_UNIT_UTILS::Mils2mm( pageInfo.GetWidthMils() ) ) ); EDA_UNIT_UTILS::Mils2mm( pageInfo.GetWidthMils() ) ) );
}
} }
pageSetupDialogData.GetPrintData().SetOrientation( pageInfo.GetWxOrientation() ); pageSetupDialogData.GetPrintData().SetOrientation( pageInfo.GetWxOrientation() );
@ -212,13 +184,13 @@ bool DIALOG_PRINT_USING_PRINTER::TransferDataToWindow()
} }
void DIALOG_PRINT_USING_PRINTER::OnUseColorThemeChecked( wxCommandEvent& event ) void DIALOG_PRINT::OnUseColorThemeChecked( wxCommandEvent& event )
{ {
m_colorTheme->Enable( m_checkUseColorTheme->GetValue() ); m_colorTheme->Enable( m_checkUseColorTheme->GetValue() );
} }
void DIALOG_PRINT_USING_PRINTER::OnOutputChoice( wxCommandEvent& event ) void DIALOG_PRINT::OnOutputChoice( wxCommandEvent& event )
{ {
long sel = event.GetSelection(); long sel = event.GetSelection();
m_checkBackgroundColor->Enable( sel == 0 ); m_checkBackgroundColor->Enable( sel == 0 );
@ -230,7 +202,7 @@ void DIALOG_PRINT_USING_PRINTER::OnOutputChoice( wxCommandEvent& event )
} }
void DIALOG_PRINT_USING_PRINTER::SavePrintOptions() void DIALOG_PRINT::SavePrintOptions()
{ {
EESCHEMA_SETTINGS* cfg = m_parent->eeconfig(); EESCHEMA_SETTINGS* cfg = m_parent->eeconfig();
@ -252,7 +224,7 @@ void DIALOG_PRINT_USING_PRINTER::SavePrintOptions()
} }
void DIALOG_PRINT_USING_PRINTER::OnPageSetup( wxCommandEvent& event ) void DIALOG_PRINT::OnPageSetup( wxCommandEvent& event )
{ {
wxPageSetupDialog pageSetupDialog( this, &m_parent->GetPageSetupData() ); wxPageSetupDialog pageSetupDialog( this, &m_parent->GetPageSetupData() );
pageSetupDialog.ShowModal(); pageSetupDialog.ShowModal();
@ -261,7 +233,7 @@ void DIALOG_PRINT_USING_PRINTER::OnPageSetup( wxCommandEvent& event )
} }
void DIALOG_PRINT_USING_PRINTER::OnPrintPreview( wxCommandEvent& event ) void DIALOG_PRINT::OnPrintPreview( wxCommandEvent& event )
{ {
SavePrintOptions(); SavePrintOptions();
@ -300,7 +272,7 @@ void DIALOG_PRINT_USING_PRINTER::OnPrintPreview( wxCommandEvent& event )
} }
bool DIALOG_PRINT_USING_PRINTER::TransferDataFromWindow() bool DIALOG_PRINT::TransferDataFromWindow()
{ {
if( Pgm().m_Printing ) if( Pgm().m_Printing )
{ {
@ -400,11 +372,3 @@ bool DIALOG_PRINT_USING_PRINTER::TransferDataFromWindow()
return true; return true;
} }
int InvokeDialogPrintUsingPrinter( SCH_EDIT_FRAME* aCaller )
{
DIALOG_PRINT_USING_PRINTER dlg( aCaller );
return dlg.ShowModal();
}

View File

@ -0,0 +1,53 @@
/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright The 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "dialog_print_base.h"
class SCH_EDIT_FRAME;
class SCH_SCREEN;
class DIALOG_PRINT : public DIALOG_PRINT_BASE
{
public:
DIALOG_PRINT( SCH_EDIT_FRAME* aParent );
~DIALOG_PRINT() override;
protected:
void OnOutputChoice( wxCommandEvent& event ) override;
void OnUseColorThemeChecked( wxCommandEvent& event ) override;
private:
bool TransferDataToWindow() override;
bool TransferDataFromWindow() override;
void OnPageSetup( wxCommandEvent& event ) override;
void OnPrintPreview( wxCommandEvent& event ) override;
void SavePrintOptions();
private:
SCH_EDIT_FRAME* m_parent;
bool m_useCairo;
};

View File

@ -5,11 +5,11 @@
// PLEASE DO *NOT* EDIT THIS FILE! // PLEASE DO *NOT* EDIT THIS FILE!
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
#include "dialog_print_using_printer_base.h" #include "dialog_print_base.h"
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
DIALOG_PRINT_USING_PRINTER_BASE::DIALOG_PRINT_USING_PRINTER_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style ) DIALOG_PRINT_BASE::DIALOG_PRINT_BASE( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : DIALOG_SHIM( parent, id, title, pos, size, style )
{ {
this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize ); this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
@ -96,20 +96,20 @@ DIALOG_PRINT_USING_PRINTER_BASE::DIALOG_PRINT_USING_PRINTER_BASE( wxWindow* pare
bMainSizer->Fit( this ); bMainSizer->Fit( this );
// Connect Events // Connect Events
this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnCloseWindow ) ); this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PRINT_BASE::OnCloseWindow ) );
m_colorPrint->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnOutputChoice ), NULL, this ); m_colorPrint->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PRINT_BASE::OnOutputChoice ), NULL, this );
m_checkUseColorTheme->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnUseColorThemeChecked ), NULL, this ); m_checkUseColorTheme->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PRINT_BASE::OnUseColorThemeChecked ), NULL, this );
m_buttonPageSetup->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPageSetup ), NULL, this ); m_buttonPageSetup->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_BASE::OnPageSetup ), NULL, this );
m_sdbSizer1Apply->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPrintPreview ), NULL, this ); m_sdbSizer1Apply->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_BASE::OnPrintPreview ), NULL, this );
} }
DIALOG_PRINT_USING_PRINTER_BASE::~DIALOG_PRINT_USING_PRINTER_BASE() DIALOG_PRINT_BASE::~DIALOG_PRINT_BASE()
{ {
// Disconnect Events // Disconnect Events
this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnCloseWindow ) ); this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( DIALOG_PRINT_BASE::OnCloseWindow ) );
m_colorPrint->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnOutputChoice ), NULL, this ); m_colorPrint->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( DIALOG_PRINT_BASE::OnOutputChoice ), NULL, this );
m_checkUseColorTheme->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnUseColorThemeChecked ), NULL, this ); m_checkUseColorTheme->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( DIALOG_PRINT_BASE::OnUseColorThemeChecked ), NULL, this );
m_buttonPageSetup->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPageSetup ), NULL, this ); m_buttonPageSetup->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_BASE::OnPageSetup ), NULL, this );
m_sdbSizer1Apply->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_USING_PRINTER_BASE::OnPrintPreview ), NULL, this ); m_sdbSizer1Apply->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( DIALOG_PRINT_BASE::OnPrintPreview ), NULL, this );
} }

View File

@ -13,12 +13,12 @@
<property name="cpp_use_enum">1</property> <property name="cpp_use_enum">1</property>
<property name="embedded_files_path">res</property> <property name="embedded_files_path">res</property>
<property name="encoding">UTF-8</property> <property name="encoding">UTF-8</property>
<property name="file">dialog_print_using_printer_base</property> <property name="file">dialog_print_base</property>
<property name="first_id">1000</property> <property name="first_id">1000</property>
<property name="internationalize">1</property> <property name="internationalize">1</property>
<property name="lua_skip_events">1</property> <property name="lua_skip_events">1</property>
<property name="lua_ui_table">UI</property> <property name="lua_ui_table">UI</property>
<property name="name">dialog_print_schematic</property> <property name="name">dialog_print</property>
<property name="path">.</property> <property name="path">.</property>
<property name="php_disconnect_events">0</property> <property name="php_disconnect_events">0</property>
<property name="php_disconnect_mode">source_name</property> <property name="php_disconnect_mode">source_name</property>
@ -48,7 +48,7 @@
<property name="id">wxID_ANY</property> <property name="id">wxID_ANY</property>
<property name="maximum_size"></property> <property name="maximum_size"></property>
<property name="minimum_size">-1,-1</property> <property name="minimum_size">-1,-1</property>
<property name="name">DIALOG_PRINT_USING_PRINTER_BASE</property> <property name="name">DIALOG_PRINT_BASE</property>
<property name="pos"></property> <property name="pos"></property>
<property name="size">-1,-1</property> <property name="size">-1,-1</property>
<property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property> <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>

View File

@ -29,9 +29,9 @@
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
/// Class DIALOG_PRINT_USING_PRINTER_BASE /// Class DIALOG_PRINT_BASE
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
class DIALOG_PRINT_USING_PRINTER_BASE : public DIALOG_SHIM class DIALOG_PRINT_BASE : public DIALOG_SHIM
{ {
private: private:
@ -58,9 +58,9 @@ class DIALOG_PRINT_USING_PRINTER_BASE : public DIALOG_SHIM
public: public:
DIALOG_PRINT_USING_PRINTER_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Print"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); DIALOG_PRINT_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Print"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );
~DIALOG_PRINT_USING_PRINTER_BASE(); ~DIALOG_PRINT_BASE();
}; };

View File

@ -68,6 +68,7 @@
#include <tools/ee_selection.h> #include <tools/ee_selection.h>
#include <tools/ee_selection_tool.h> #include <tools/ee_selection_tool.h>
#include <tools/ee_tool_utils.h> #include <tools/ee_tool_utils.h>
#include <tools/sch_edit_table_tool.h>
#include <drawing_sheet/ds_proxy_undo_item.h> #include <drawing_sheet/ds_proxy_undo_item.h>
#include <eda_list_dialog.h> #include <eda_list_dialog.h>
#include <view/view_controls.h> #include <view/view_controls.h>
@ -78,7 +79,7 @@
#include <wx/treectrl.h> #include <wx/treectrl.h>
#include <wx/msgdlg.h> #include <wx/msgdlg.h>
#include <io/kicad/kicad_io_utils.h> #include <io/kicad/kicad_io_utils.h>
#include "sch_edit_table_tool.h" #include <printing/dialog_print.h>
#ifdef KICAD_IPC_API #ifdef KICAD_IPC_API
#include <api/api_plugin_manager.h> #include <api/api_plugin_manager.h>
@ -295,7 +296,10 @@ int SCH_EDITOR_CONTROL::RemapSymbols( const TOOL_EVENT& aEvent )
int SCH_EDITOR_CONTROL::Print( const TOOL_EVENT& aEvent ) int SCH_EDITOR_CONTROL::Print( const TOOL_EVENT& aEvent )
{ {
InvokeDialogPrintUsingPrinter( m_frame ); DIALOG_PRINT dlg( m_frame );
dlg.ShowModal();
return 0; return 0;
} }