From 44cb979e91b23e85cb2baa42606884397162d622 Mon Sep 17 00:00:00 2001 From: Wayne Stambaugh Date: Tue, 5 Feb 2019 12:14:27 -0500 Subject: [PATCH] Decouple SCH_EDIT_FRAME from symbol rescue and remap dialogs. Do not keep pointer to SCH_EDIT_FRAME in the rescuer object to prevent it from creating dialogs with itself as the parent when call from the rescue dialog which is itself a grandchild of the frame window. --- eeschema/dialogs/dialog_rescue_each.cpp | 35 ++++++---- eeschema/dialogs/dialog_symbol_remap.cpp | 20 +++++- eeschema/files-io.cpp | 2 +- eeschema/invoke_sch_dialog.h | 20 +++--- eeschema/project_rescue.cpp | 82 ++++++++++++++---------- eeschema/project_rescue.h | 34 ++++++---- 6 files changed, 121 insertions(+), 72 deletions(-) diff --git a/eeschema/dialogs/dialog_rescue_each.cpp b/eeschema/dialogs/dialog_rescue_each.cpp index 099a7c98f0..04c83289e5 100644 --- a/eeschema/dialogs/dialog_rescue_each.cpp +++ b/eeschema/dialogs/dialog_rescue_each.cpp @@ -1,7 +1,7 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2015-2018 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2015-2019 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 @@ -33,6 +33,8 @@ #include #include #include +#include + class DIALOG_RESCUE_EACH: public DIALOG_RESCUE_EACH_BASE { @@ -44,18 +46,21 @@ public: * * @param aParent - the SCH_EDIT_FRAME calling this * @param aRescuer - the active RESCUER instance + * @param aCurrentSheet the current sheet in the schematic editor frame + * @param aGalBackEndType the current GAL type used to render symbols * @param aAskShowAgain - if true, a "Never Show Again" button will be included */ - DIALOG_RESCUE_EACH( SCH_EDIT_FRAME* aParent, RESCUER& aRescuer, bool aAskShowAgain ); + DIALOG_RESCUE_EACH( wxWindow* aParent, RESCUER& aRescuer, SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType, bool aAskShowAgain ); ~DIALOG_RESCUE_EACH(); private: - SCH_EDIT_FRAME* m_Parent; SYMBOL_PREVIEW_WIDGET* m_previewNewWidget; SYMBOL_PREVIEW_WIDGET* m_previewOldWidget; wxConfigBase* m_Config; RESCUER* m_Rescuer; + SCH_SHEET_PATH* m_currentSheet; bool m_AskShowAgain; bool TransferDataToWindow() override; @@ -72,17 +77,22 @@ private: }; -DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH( SCH_EDIT_FRAME* aParent, RESCUER& aRescuer, +DIALOG_RESCUE_EACH::DIALOG_RESCUE_EACH( wxWindow* aParent, + RESCUER& aRescuer, + SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType, bool aAskShowAgain ) : DIALOG_RESCUE_EACH_BASE( aParent ), - m_Parent( aParent ), m_Rescuer( &aRescuer ), + m_currentSheet( aCurrentSheet ), m_AskShowAgain( aAskShowAgain ) { - m_previewOldWidget = new SYMBOL_PREVIEW_WIDGET( m_previewOldPanel, Kiway(), m_Parent->GetGalCanvas()->GetBackend() ); + wxASSERT( aCurrentSheet ); + + m_previewOldWidget = new SYMBOL_PREVIEW_WIDGET( m_previewOldPanel, Kiway(), aGalBackEndType ); m_SizerOldPanel->Add( m_previewOldWidget, 1, wxEXPAND | wxALL, 5 ); - m_previewNewWidget = new SYMBOL_PREVIEW_WIDGET( m_previewNewPanel, Kiway(), m_Parent->GetGalCanvas()->GetBackend() ); + m_previewNewWidget = new SYMBOL_PREVIEW_WIDGET( m_previewNewPanel, Kiway(), aGalBackEndType ); m_SizerNewPanel->Add( m_previewNewWidget, 1, wxEXPAND | wxALL, 5 ); m_Config = Kiface().KifaceSettings(); @@ -212,7 +222,7 @@ void DIALOG_RESCUE_EACH::PopulateInstanceList() SCH_FIELD* valueField = each_component->GetField( 1 ); data.clear(); - data.push_back( each_component->GetRef( & m_Parent->GetCurrentSheet() ) ); + data.push_back( each_component->GetRef( m_currentSheet ) ); data.push_back( valueField ? valueField->GetText() : wxT( "" ) ); m_ListOfInstances->AppendItem( data ); count++; @@ -274,7 +284,7 @@ bool DIALOG_RESCUE_EACH::TransferDataFromWindow() void DIALOG_RESCUE_EACH::OnNeverShowClick( wxCommandEvent& aEvent ) { - wxMessageDialog dlg( m_Parent, + wxMessageDialog dlg( GetParent(), _( "Stop showing this tool?\n" "No changes will be made.\n\n" "This setting can be changed from the \"Symbol Libraries\" dialog,\n" @@ -298,8 +308,9 @@ void DIALOG_RESCUE_EACH::OnCancelClick( wxCommandEvent& aEvent ) } -int InvokeDialogRescueEach( SCH_EDIT_FRAME* aCaller, RESCUER& aRescuer, bool aAskShowAgain ) +int InvokeDialogRescueEach( wxWindow* aParent, RESCUER& aRescuer, SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType, bool aAskShowAgain ) { - DIALOG_RESCUE_EACH dlg( aCaller, aRescuer, aAskShowAgain ); - return dlg.ShowModal(); + DIALOG_RESCUE_EACH dlg( aParent, aRescuer, aCurrentSheet, aGalBackEndType, aAskShowAgain ); + return dlg.ShowQuasiModal(); } diff --git a/eeschema/dialogs/dialog_symbol_remap.cpp b/eeschema/dialogs/dialog_symbol_remap.cpp index 3eda4bab72..e0d60dee70 100644 --- a/eeschema/dialogs/dialog_symbol_remap.cpp +++ b/eeschema/dialogs/dialog_symbol_remap.cpp @@ -6,7 +6,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2017 Wayne Stambaugh - * Copyright (C) 2017-2018 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 2017-2019 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 @@ -32,12 +32,14 @@ #include #include +#include #include #include #include #include #include #include +#include #include #include @@ -85,7 +87,21 @@ void DIALOG_SYMBOL_REMAP::OnRemapSymbols( wxCommandEvent& aEvent ) // Ignore the never show rescue setting for one last rescue of legacy symbol // libraries before remapping to the symbol library table. This ensures the // best remapping results. - parent->RescueLegacyProject( false ); + LEGACY_RESCUER rescuer( Prj(), &parent->GetCurrentSheet(), + parent->GetGalCanvas()->GetBackend() ); + + if( RESCUER::RescueProject( this, rescuer, false ) ) + { + LIB_VIEW_FRAME* viewer = (LIB_VIEW_FRAME*) parent->Kiway().Player( FRAME_SCH_VIEWER, false ); + + if( viewer ) + viewer->ReCreateListLib(); + + parent->GetScreen()->ClearUndoORRedoList( parent->GetScreen()->m_UndoList, 1 ); + parent->SyncView(); + parent->GetCanvas()->Refresh(); + parent->OnModify(); + } // The schematic is fully loaded, any legacy library symbols have been rescued. Now // check to see if the schematic has not been converted to the symbol library table diff --git a/eeschema/files-io.cpp b/eeschema/files-io.cpp index 24f3448819..30961d786d 100644 --- a/eeschema/files-io.cpp +++ b/eeschema/files-io.cpp @@ -4,7 +4,7 @@ * Copyright (C) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2013 Wayne Stambaugh * Copyright (C) 2013 CERN (www.cern.ch) - * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2019 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 diff --git a/eeschema/invoke_sch_dialog.h b/eeschema/invoke_sch_dialog.h index 5c377d5604..587186051d 100644 --- a/eeschema/invoke_sch_dialog.h +++ b/eeschema/invoke_sch_dialog.h @@ -1,9 +1,8 @@ - /* * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck - * Copyright (C) 2013-2017 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 2013-2019 KiCad Developers, see change_log.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 @@ -43,12 +42,14 @@ #include #include #include +#include class wxFrame; class wxDialog; class LIB_PART; class PART_LIBS; class SCH_COMPONENT; +class SCH_SHEET_PATH; class RESCUER; // Often this is not used in the prototypes, since wxFrame is good enough and would @@ -56,14 +57,17 @@ class RESCUER; class SCH_EDIT_FRAME; /** - * Function InvokeDialogRescueEach * This dialog asks the user which rescuable, cached parts he wants to rescue. - * Any rejects will be pruned from aCandidates. - * @param aCaller - the SCH_EDIT_FRAME calling this + * Any rejects will be pruned from \a aCandidates. + * + * @param aParent - the wxWindow object calling this dialog * @param aRescuer - the active RESCUER instance + * @param aCurrentSheet the current sheet in the schematic editor frame + * @param aGalBackEndType the current GAL type used to render symbols * @param aAskShowAgain - if true, a "Never Show Again" button will be included */ -int InvokeDialogRescueEach( SCH_EDIT_FRAME* aCaller, RESCUER& aRescuer, bool aAskShowAgain ); +int InvokeDialogRescueEach( wxWindow* aParent, RESCUER& aRescuer, SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType, bool aAskShowAgain ); /// Create the modeless DIALOG_ERC and show it, return something to /// destroy or close it. The dialog will have ID_DIALOG_ERC from id.h @@ -82,9 +86,9 @@ int InvokeDialogUpdateFields( SCH_EDIT_FRAME* aCaller, const std::list aComponents, bool aCreateUndoEntry ); /** - * Function InvokeDialogNetList - * creates and shows NETLIST_DIALOG and returns whatever + * Create and shows NETLIST_DIALOG and returns whatever * NETLIST_DIALOG::ShowModal() returns. + * * @param int - NET_PLUGIN_CHANGE means user added or deleted a plugin, * wxID_OK, or wxID_CANCEL. */ diff --git a/eeschema/project_rescue.cpp b/eeschema/project_rescue.cpp index 12c981a39f..d406ef74fd 100644 --- a/eeschema/project_rescue.cpp +++ b/eeschema/project_rescue.cpp @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015 Chris Pavlina - * Copyright (C) 2015-2018 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 2015-2019 KiCad Developers, see change_log.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 @@ -378,7 +378,7 @@ void RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::FindRescues( cache_match = find_component( part_id.Format().wx_str(), aRescuer.GetPrj()->SchLibs(), true ); - lib_match = aRescuer.GetFrame()->GetLibPart( part_id ); + lib_match = SchGetLibPart( part_id, aRescuer.GetPrj()->SchSymbolLibTable() ); if( !cache_match && !lib_match ) continue; @@ -464,11 +464,13 @@ bool RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::PerformAction( RESCUER* aRescuer ) } -RESCUER::RESCUER( SCH_EDIT_FRAME& aEditFrame, PROJECT& aProject ) +RESCUER::RESCUER( PROJECT& aProject, SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType ) { get_components( m_components ); m_prj = &aProject; - m_edit_frame = &aEditFrame; + m_currentSheet = aCurrentSheet; + m_galBackEndType = aGalBackEndType; } @@ -510,7 +512,7 @@ void RESCUER::UndoRescues() bool SCH_EDIT_FRAME::RescueLegacyProject( bool aRunningOnDemand ) { - LEGACY_RESCUER rescuer( *this, Prj() ); + LEGACY_RESCUER rescuer( Prj(), &GetCurrentSheet(), GetGalCanvas()->GetBackend() ); return rescueProject( rescuer, aRunningOnDemand ); } @@ -518,21 +520,40 @@ bool SCH_EDIT_FRAME::RescueLegacyProject( bool aRunningOnDemand ) bool SCH_EDIT_FRAME::RescueSymbolLibTableProject( bool aRunningOnDemand ) { - SYMBOL_LIB_TABLE_RESCUER rescuer( *this, Prj() ); + SYMBOL_LIB_TABLE_RESCUER rescuer( Prj(), &GetCurrentSheet(), GetGalCanvas()->GetBackend() ); return rescueProject( rescuer, aRunningOnDemand ); } bool SCH_EDIT_FRAME::rescueProject( RESCUER& aRescuer, bool aRunningOnDemand ) +{ + if( !RESCUER::RescueProject( this, aRescuer, aRunningOnDemand ) ) + return false; + + LIB_VIEW_FRAME* viewer = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, false ); + + if( viewer ) + viewer->ReCreateListLib(); + + GetScreen()->ClearUndoORRedoList( GetScreen()->m_UndoList, 1 ); + SyncView(); + GetCanvas()->Refresh(); + OnModify(); + + return true; +} + + +bool RESCUER::RescueProject( wxWindow* aParent, RESCUER& aRescuer, bool aRunningOnDemand ) { aRescuer.FindCandidates(); - if( ! aRescuer.GetCandidateCount() ) + if( !aRescuer.GetCandidateCount() ) { if( aRunningOnDemand ) { - wxMessageDialog dlg( this, _( "This project has nothing to rescue." ), + wxMessageDialog dlg( aParent, _( "This project has nothing to rescue." ), _( "Project Rescue Helper" ) ); dlg.ShowModal(); } @@ -541,20 +562,18 @@ bool SCH_EDIT_FRAME::rescueProject( RESCUER& aRescuer, bool aRunningOnDemand ) } aRescuer.RemoveDuplicates(); - - aRescuer.InvokeDialog( !aRunningOnDemand ); + aRescuer.InvokeDialog( aParent, !aRunningOnDemand ); // If no symbols were rescued, let the user know what's going on. He might // have clicked cancel by mistake, and should have some indication of that. if( !aRescuer.GetChosenCandidateCount() ) { - wxMessageDialog dlg( this, _( "No symbols were rescued." ), + wxMessageDialog dlg( aParent, _( "No symbols were rescued." ), _( "Project Rescue Helper" ) ); dlg.ShowModal(); // Set the modified flag even on Cancel. Many users seem to instinctively want to Save at // this point, due to the reloading of the symbols, so we'll make the save button active. - OnModify(); return true; } @@ -566,17 +585,7 @@ bool SCH_EDIT_FRAME::rescueProject( RESCUER& aRescuer, bool aRunningOnDemand ) return false; } - aRescuer.WriteRescueLibrary( this ); - - LIB_VIEW_FRAME* viewer = (LIB_VIEW_FRAME*) Kiway().Player( FRAME_SCH_VIEWER, false ); - - if( viewer ) - viewer->ReCreateListLib(); - - GetScreen()->ClearUndoORRedoList( GetScreen()->m_UndoList, 1 ); - SyncView(); - GetCanvas()->Refresh(); - OnModify(); + aRescuer.WriteRescueLibrary( aParent ); return true; } @@ -620,9 +629,10 @@ void LEGACY_RESCUER::FindCandidates() } -void LEGACY_RESCUER::InvokeDialog( bool aAskShowAgain ) +void LEGACY_RESCUER::InvokeDialog( wxWindow* aParent, bool aAskShowAgain ) { - InvokeDialogRescueEach( m_edit_frame, static_cast< RESCUER& >( *this ), aAskShowAgain ); + InvokeDialogRescueEach( aParent, static_cast< RESCUER& >( *this ), m_currentSheet, + m_galBackEndType, aAskShowAgain ); } @@ -658,7 +668,7 @@ void LEGACY_RESCUER::OpenRescueLibrary() } -bool LEGACY_RESCUER::WriteRescueLibrary( SCH_EDIT_FRAME *aEditFrame ) +bool LEGACY_RESCUER::WriteRescueLibrary( wxWindow *aParent ) { try { @@ -670,7 +680,7 @@ bool LEGACY_RESCUER::WriteRescueLibrary( SCH_EDIT_FRAME *aEditFrame ) msg.Printf( _( "Failed to create symbol library file \"%s\"" ), m_rescue_lib->GetFullFileName() ); - DisplayError( aEditFrame, msg ); + DisplayError( aParent, msg ); return false; } @@ -750,9 +760,10 @@ void LEGACY_RESCUER::AddPart( LIB_PART* aNewPart ) } -SYMBOL_LIB_TABLE_RESCUER::SYMBOL_LIB_TABLE_RESCUER( SCH_EDIT_FRAME& aEditFrame, - PROJECT& aProject ) : - RESCUER( aEditFrame, aProject ) +SYMBOL_LIB_TABLE_RESCUER::SYMBOL_LIB_TABLE_RESCUER( PROJECT& aProject, + SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType ) : + RESCUER( aProject, aCurrentSheet, aGalBackEndType ) { m_properties = std::make_unique(); } @@ -764,9 +775,10 @@ void SYMBOL_LIB_TABLE_RESCUER::FindCandidates() } -void SYMBOL_LIB_TABLE_RESCUER::InvokeDialog( bool aAskShowAgain ) +void SYMBOL_LIB_TABLE_RESCUER::InvokeDialog( wxWindow* aParent, bool aAskShowAgain ) { - InvokeDialogRescueEach( m_edit_frame, static_cast< RESCUER& >( *this ), aAskShowAgain ); + InvokeDialogRescueEach( aParent, static_cast< RESCUER& >( *this ), m_currentSheet, + m_galBackEndType, aAskShowAgain ); } @@ -777,7 +789,7 @@ void SYMBOL_LIB_TABLE_RESCUER::OpenRescueLibrary() } -bool SYMBOL_LIB_TABLE_RESCUER::WriteRescueLibrary( SCH_EDIT_FRAME *aEditFrame ) +bool SYMBOL_LIB_TABLE_RESCUER::WriteRescueLibrary( wxWindow *aParent ) { wxString msg; wxFileName fn = GetRescueLibraryFileName(); @@ -793,7 +805,7 @@ bool SYMBOL_LIB_TABLE_RESCUER::WriteRescueLibrary( SCH_EDIT_FRAME *aEditFrame ) catch( const IO_ERROR& ioe ) { msg.Printf( _( "Failed to save rescue library %s." ), fn.GetFullPath() ); - DisplayErrorMessage( aEditFrame, msg, ioe.What() ); + DisplayErrorMessage( aParent, msg, ioe.What() ); return false; } @@ -817,7 +829,7 @@ bool SYMBOL_LIB_TABLE_RESCUER::WriteRescueLibrary( SCH_EDIT_FRAME *aEditFrame ) catch( const IO_ERROR& ioe ) { msg.Printf( _( "Error occurred saving project specific symbol library table." ) ); - DisplayErrorMessage( aEditFrame, msg, ioe.What() ); + DisplayErrorMessage( aParent, msg, ioe.What() ); return false; } } diff --git a/eeschema/project_rescue.h b/eeschema/project_rescue.h index 178097c149..fdaa82d434 100644 --- a/eeschema/project_rescue.h +++ b/eeschema/project_rescue.h @@ -2,7 +2,7 @@ * This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2015 Chris Pavlina - * Copyright (C) 2015-2017 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 2015-2019 KiCad Developers, see change_log.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 @@ -45,6 +45,7 @@ #include #include +#include class LIB_PART; @@ -52,6 +53,7 @@ class SCH_COMPONENT; class RESCUER; class SCH_EDIT_FRAME; class SCH_LEGACY_PLUGIN; +class SCH_SHEET_PATH; enum RESCUE_TYPE @@ -219,7 +221,8 @@ protected: std::vector m_components; PROJECT* m_prj; - SCH_EDIT_FRAME* m_edit_frame; + EDA_DRAW_PANEL_GAL::GAL_TYPE m_galBackEndType; + SCH_SHEET_PATH* m_currentSheet; boost::ptr_vector m_all_candidates; std::vector m_chosen_candidates; @@ -227,7 +230,8 @@ protected: std::vector m_rescue_log; public: - RESCUER( SCH_EDIT_FRAME& aEditFrame, PROJECT& aProject ); + RESCUER( PROJECT& aProject, SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackeEndType ); /** * Writes out the rescue library. Called after successful PerformAction()s. If this fails, @@ -235,7 +239,7 @@ public: * * @return True on success. */ - virtual bool WriteRescueLibrary( SCH_EDIT_FRAME *aEditFrame ) = 0; + virtual bool WriteRescueLibrary( wxWindow *aParent ) = 0; virtual void OpenRescueLibrary() = 0; @@ -251,9 +255,7 @@ public: * * @param aAskShowAgain - whether the "Never Show Again" button should be visible */ - virtual void InvokeDialog( bool aAskShowAgain ) = 0; - - SCH_EDIT_FRAME* GetFrame() { return m_edit_frame; } + virtual void InvokeDialog( wxWindow* aParent, bool aAskShowAgain ) = 0; /** * Filter out duplicately named rescue candidates. @@ -297,6 +299,8 @@ public: * Reverse the effects of all rescues on the project. */ void UndoRescues(); + + static bool RescueProject( wxWindow* aParent, RESCUER& aRescuer, bool aRunningOnDemand ); }; @@ -306,18 +310,19 @@ private: std::unique_ptr m_rescue_lib; public: - LEGACY_RESCUER( SCH_EDIT_FRAME& aEditFrame, PROJECT& aProject ) : - RESCUER( aEditFrame, aProject ) + LEGACY_RESCUER( PROJECT& aProject, SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackEndType ) : + RESCUER( aProject, aCurrentSheet, aGalBackEndType ) { } virtual void FindCandidates() override; - virtual void InvokeDialog( bool aAskShowAgain ) override; + virtual void InvokeDialog( wxWindow* aParent, bool aAskShowAgain ) override; virtual void OpenRescueLibrary() override; - virtual bool WriteRescueLibrary( SCH_EDIT_FRAME *aEditFrame ) override; + virtual bool WriteRescueLibrary( wxWindow *aParent ) override; virtual void AddPart( LIB_PART* aNewPart ) override; }; @@ -331,15 +336,16 @@ private: std::unique_ptr< PROPERTIES > m_properties; ///< Library plugin properties public: - SYMBOL_LIB_TABLE_RESCUER( SCH_EDIT_FRAME& aEditFrame, PROJECT& aProject ); + SYMBOL_LIB_TABLE_RESCUER( PROJECT& aProject, SCH_SHEET_PATH* aCurrentSheet, + EDA_DRAW_PANEL_GAL::GAL_TYPE aGalBackeEndType ); virtual void FindCandidates() override; - virtual void InvokeDialog( bool aAskShowAgain ) override; + virtual void InvokeDialog( wxWindow* aParent, bool aAskShowAgain ) override; virtual void OpenRescueLibrary() override; - virtual bool WriteRescueLibrary( SCH_EDIT_FRAME *aEditFrame ) override; + virtual bool WriteRescueLibrary( wxWindow* aParent ) override; virtual void AddPart( LIB_PART* aNewPart ) override; };