Upgrade some symbol editor stuff to SCHEMATIC_COMMIT.
Also renames SCHEMATIC_COMMIT to SCH_COMMIT since it's not schematic-specifc.
This commit is contained in:
parent
e698156975
commit
8f1b9119bf
|
@ -310,6 +310,7 @@ set( EESCHEMA_SRCS
|
||||||
sch_base_frame.cpp
|
sch_base_frame.cpp
|
||||||
sch_bitmap.cpp
|
sch_bitmap.cpp
|
||||||
sch_bus_entry.cpp
|
sch_bus_entry.cpp
|
||||||
|
sch_commit.cpp
|
||||||
sch_connection.cpp
|
sch_connection.cpp
|
||||||
sch_draw_panel.cpp
|
sch_draw_panel.cpp
|
||||||
sch_edit_frame.cpp
|
sch_edit_frame.cpp
|
||||||
|
@ -338,7 +339,6 @@ set( EESCHEMA_SRCS
|
||||||
sch_validators.cpp
|
sch_validators.cpp
|
||||||
sch_view.cpp
|
sch_view.cpp
|
||||||
schematic.cpp
|
schematic.cpp
|
||||||
schematic_commit.cpp
|
|
||||||
schematic_settings.cpp
|
schematic_settings.cpp
|
||||||
schematic_undo_redo.cpp
|
schematic_undo_redo.cpp
|
||||||
sheet.cpp
|
sheet.cpp
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include <reporter.h>
|
#include <reporter.h>
|
||||||
#include <sch_edit_frame.h>
|
#include <sch_edit_frame.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <erc_settings.h>
|
#include <erc_settings.h>
|
||||||
#include <sch_reference_list.h>
|
#include <sch_reference_list.h>
|
||||||
#include <symbol_library.h>
|
#include <symbol_library.h>
|
||||||
|
@ -64,7 +64,7 @@ void SCH_EDIT_FRAME::DeleteAnnotation( ANNOTATE_SCOPE_T aAnnotateScope, bool aRe
|
||||||
SCH_SHEET_LIST sheets = Schematic().GetSheets();
|
SCH_SHEET_LIST sheets = Schematic().GetSheets();
|
||||||
SCH_SCREEN* screen = GetScreen();
|
SCH_SCREEN* screen = GetScreen();
|
||||||
SCH_SHEET_PATH currentSheet = GetCurrentSheet();
|
SCH_SHEET_PATH currentSheet = GetCurrentSheet();
|
||||||
SCHEMATIC_COMMIT commit( this );
|
SCH_COMMIT commit( this );
|
||||||
|
|
||||||
auto clearSymbolAnnotation =
|
auto clearSymbolAnnotation =
|
||||||
[&]( EDA_ITEM* aItem, SCH_SCREEN* aScreen, SCH_SHEET_PATH* aSheet, bool aResetPrefixes )
|
[&]( EDA_ITEM* aItem, SCH_SCREEN* aScreen, SCH_SHEET_PATH* aSheet, bool aResetPrefixes )
|
||||||
|
@ -192,15 +192,10 @@ std::unordered_set<SCH_SYMBOL*> getInferredSymbols( const EE_SELECTION& aSelecti
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::AnnotateSymbols( SCHEMATIC_COMMIT* aCommit,
|
void SCH_EDIT_FRAME::AnnotateSymbols( SCH_COMMIT* aCommit, ANNOTATE_SCOPE_T aAnnotateScope,
|
||||||
ANNOTATE_SCOPE_T aAnnotateScope,
|
ANNOTATE_ORDER_T aSortOption, ANNOTATE_ALGO_T aAlgoOption,
|
||||||
ANNOTATE_ORDER_T aSortOption,
|
bool aRecursive, int aStartNumber, bool aResetAnnotation,
|
||||||
ANNOTATE_ALGO_T aAlgoOption,
|
bool aRepairTimestamps, REPORTER& aReporter )
|
||||||
bool aRecursive,
|
|
||||||
int aStartNumber,
|
|
||||||
bool aResetAnnotation,
|
|
||||||
bool aRepairTimestamps,
|
|
||||||
REPORTER& aReporter )
|
|
||||||
{
|
{
|
||||||
EE_SELECTION_TOOL* selTool = m_toolManager->GetTool<EE_SELECTION_TOOL>();
|
EE_SELECTION_TOOL* selTool = m_toolManager->GetTool<EE_SELECTION_TOOL>();
|
||||||
EE_SELECTION& selection = selTool->GetSelection();
|
EE_SELECTION& selection = selTool->GetSelection();
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <sch_no_connect.h>
|
#include <sch_no_connect.h>
|
||||||
#include <sch_screen.h>
|
#include <sch_screen.h>
|
||||||
#include <sch_view.h>
|
#include <sch_view.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
#include <tools/ee_actions.h>
|
#include <tools/ee_actions.h>
|
||||||
#include <tools/ee_selection_tool.h>
|
#include <tools/ee_selection_tool.h>
|
||||||
|
@ -50,8 +50,7 @@ void SCH_EDIT_FRAME::TestDanglingEnds()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_EDIT_FRAME::TrimWire( SCHEMATIC_COMMIT* aCommit, const VECTOR2I& aStart,
|
bool SCH_EDIT_FRAME::TrimWire( SCH_COMMIT* aCommit, const VECTOR2I& aStart, const VECTOR2I& aEnd )
|
||||||
const VECTOR2I& aEnd )
|
|
||||||
{
|
{
|
||||||
if( aStart == aEnd )
|
if( aStart == aEnd )
|
||||||
return false;
|
return false;
|
||||||
|
@ -116,7 +115,7 @@ bool SCH_EDIT_FRAME::TrimWire( SCHEMATIC_COMMIT* aCommit, const VECTOR2I& aStart
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::SchematicCleanUp( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aScreen )
|
void SCH_EDIT_FRAME::SchematicCleanUp( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen )
|
||||||
{
|
{
|
||||||
EE_SELECTION_TOOL* selectionTool = m_toolManager->GetTool<EE_SELECTION_TOOL>();
|
EE_SELECTION_TOOL* selectionTool = m_toolManager->GetTool<EE_SELECTION_TOOL>();
|
||||||
std::vector<SCH_LINE*> lines;
|
std::vector<SCH_LINE*> lines;
|
||||||
|
@ -254,9 +253,8 @@ void SCH_EDIT_FRAME::SchematicCleanUp( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::BreakSegment( SCHEMATIC_COMMIT* aCommit, SCH_LINE* aSegment,
|
void SCH_EDIT_FRAME::BreakSegment( SCH_COMMIT* aCommit, SCH_LINE* aSegment, const VECTOR2I& aPoint,
|
||||||
const VECTOR2I& aPoint, SCH_LINE** aNewSegment,
|
SCH_LINE** aNewSegment, SCH_SCREEN* aScreen )
|
||||||
SCH_SCREEN* aScreen )
|
|
||||||
{
|
{
|
||||||
// Save the copy of aSegment before breaking it
|
// Save the copy of aSegment before breaking it
|
||||||
aCommit->Modify( aSegment, aScreen );
|
aCommit->Modify( aSegment, aScreen );
|
||||||
|
@ -274,15 +272,14 @@ void SCH_EDIT_FRAME::BreakSegment( SCHEMATIC_COMMIT* aCommit, SCH_LINE* aSegment
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_EDIT_FRAME::BreakSegments( SCHEMATIC_COMMIT* aCommit, const VECTOR2I& aPoint,
|
bool SCH_EDIT_FRAME::BreakSegments( SCH_COMMIT* aCommit, const VECTOR2I& aPos, SCH_SCREEN* aScreen )
|
||||||
SCH_SCREEN* aScreen )
|
|
||||||
{
|
{
|
||||||
bool brokenSegments = false;
|
bool brokenSegments = false;
|
||||||
SCH_LINE* new_line;
|
SCH_LINE* new_line;
|
||||||
|
|
||||||
for( SCH_LINE* wire : aScreen->GetBusesAndWires( aPoint, true ) )
|
for( SCH_LINE* wire : aScreen->GetBusesAndWires( aPos, true ) )
|
||||||
{
|
{
|
||||||
BreakSegment( aCommit, wire, aPoint, &new_line, aScreen );
|
BreakSegment( aCommit, wire, aPos, &new_line, aScreen );
|
||||||
brokenSegments = true;
|
brokenSegments = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,7 +287,7 @@ bool SCH_EDIT_FRAME::BreakSegments( SCHEMATIC_COMMIT* aCommit, const VECTOR2I& a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SCH_EDIT_FRAME::BreakSegmentsOnJunctions( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aScreen )
|
bool SCH_EDIT_FRAME::BreakSegmentsOnJunctions( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen )
|
||||||
{
|
{
|
||||||
bool brokenSegments = false;
|
bool brokenSegments = false;
|
||||||
|
|
||||||
|
@ -316,7 +313,7 @@ bool SCH_EDIT_FRAME::BreakSegmentsOnJunctions( SCHEMATIC_COMMIT* aCommit, SCH_SC
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::DeleteJunction( SCHEMATIC_COMMIT* aCommit, SCH_ITEM* aJunction )
|
void SCH_EDIT_FRAME::DeleteJunction( SCH_COMMIT* aCommit, SCH_ITEM* aJunction )
|
||||||
{
|
{
|
||||||
SCH_SCREEN* screen = GetScreen();
|
SCH_SCREEN* screen = GetScreen();
|
||||||
PICKED_ITEMS_LIST undoList;
|
PICKED_ITEMS_LIST undoList;
|
||||||
|
@ -389,7 +386,7 @@ void SCH_EDIT_FRAME::DeleteJunction( SCHEMATIC_COMMIT* aCommit, SCH_ITEM* aJunct
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_JUNCTION* SCH_EDIT_FRAME::AddJunction( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aScreen,
|
SCH_JUNCTION* SCH_EDIT_FRAME::AddJunction( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen,
|
||||||
const VECTOR2I& aPos )
|
const VECTOR2I& aPos )
|
||||||
{
|
{
|
||||||
SCH_JUNCTION* junction = new SCH_JUNCTION( aPos );
|
SCH_JUNCTION* junction = new SCH_JUNCTION( aPos );
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include <kiface_base.h>
|
#include <kiface_base.h>
|
||||||
#include <widgets/wx_html_report_panel.h>
|
#include <widgets/wx_html_report_panel.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
// A window name for the annotate dialog to retrieve is if not destroyed
|
// A window name for the annotate dialog to retrieve is if not destroyed
|
||||||
#define DLG_WINDOW_NAME "DialogAnnotateWindowName"
|
#define DLG_WINDOW_NAME "DialogAnnotateWindowName"
|
||||||
|
@ -214,7 +214,7 @@ void DIALOG_ANNOTATE::OnClose( wxCloseEvent& event )
|
||||||
|
|
||||||
void DIALOG_ANNOTATE::OnApplyClick( wxCommandEvent& event )
|
void DIALOG_ANNOTATE::OnApplyClick( wxCommandEvent& event )
|
||||||
{
|
{
|
||||||
SCHEMATIC_COMMIT commit( m_Parent );
|
SCH_COMMIT commit( m_Parent );
|
||||||
|
|
||||||
m_MessageWindow->Clear();
|
m_MessageWindow->Clear();
|
||||||
REPORTER& reporter = m_MessageWindow->Reporter();
|
REPORTER& reporter = m_MessageWindow->Reporter();
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <template_fieldnames.h>
|
#include <template_fieldnames.h>
|
||||||
#include <widgets/wx_html_report_panel.h>
|
#include <widgets/wx_html_report_panel.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
bool g_selectRefDes = false;
|
bool g_selectRefDes = false;
|
||||||
bool g_selectValue = false;
|
bool g_selectValue = false;
|
||||||
|
@ -372,7 +372,7 @@ void DIALOG_CHANGE_SYMBOLS::onOkButtonClicked( wxCommandEvent& aEvent )
|
||||||
{
|
{
|
||||||
wxBusyCursor dummy;
|
wxBusyCursor dummy;
|
||||||
SCH_EDIT_FRAME* parent = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
|
SCH_EDIT_FRAME* parent = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
|
||||||
SCHEMATIC_COMMIT commit( parent );
|
SCH_COMMIT commit( parent );
|
||||||
|
|
||||||
wxCHECK( parent, /* void */ );
|
wxCHECK( parent, /* void */ );
|
||||||
|
|
||||||
|
@ -451,7 +451,7 @@ bool DIALOG_CHANGE_SYMBOLS::isMatch( SCH_SYMBOL* aSymbol, SCH_SHEET_PATH* aInsta
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int DIALOG_CHANGE_SYMBOLS::processMatchingSymbols( SCHEMATIC_COMMIT* aCommit )
|
int DIALOG_CHANGE_SYMBOLS::processMatchingSymbols( SCH_COMMIT* aCommit )
|
||||||
{
|
{
|
||||||
SCH_EDIT_FRAME* frame = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
|
SCH_EDIT_FRAME* frame = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
|
||||||
|
|
||||||
|
@ -517,7 +517,7 @@ int DIALOG_CHANGE_SYMBOLS::processMatchingSymbols( SCHEMATIC_COMMIT* aCommit )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int DIALOG_CHANGE_SYMBOLS::processSymbols( SCHEMATIC_COMMIT* aCommit,
|
int DIALOG_CHANGE_SYMBOLS::processSymbols( SCH_COMMIT* aCommit,
|
||||||
const std::map<SCH_SYMBOL*, SYMBOL_CHANGE_INFO>& aSymbols )
|
const std::map<SCH_SYMBOL*, SYMBOL_CHANGE_INFO>& aSymbols )
|
||||||
{
|
{
|
||||||
wxCHECK( !aSymbols.empty(), 0 );
|
wxCHECK( !aSymbols.empty(), 0 );
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
class SCH_SYMBOL;
|
class SCH_SYMBOL;
|
||||||
class SCH_EDIT_FRAME;
|
class SCH_EDIT_FRAME;
|
||||||
class SCH_SCREEN;
|
class SCH_SCREEN;
|
||||||
class SCHEMATIC_COMMIT;
|
class SCH_COMMIT;
|
||||||
|
|
||||||
|
|
||||||
struct SYMBOL_CHANGE_INFO
|
struct SYMBOL_CHANGE_INFO
|
||||||
|
@ -84,8 +84,8 @@ private:
|
||||||
void updateFieldsList();
|
void updateFieldsList();
|
||||||
|
|
||||||
bool isMatch( SCH_SYMBOL* aSymbol, SCH_SHEET_PATH* aInstance );
|
bool isMatch( SCH_SYMBOL* aSymbol, SCH_SHEET_PATH* aInstance );
|
||||||
int processMatchingSymbols( SCHEMATIC_COMMIT* aCommit );
|
int processMatchingSymbols( SCH_COMMIT* aCommit );
|
||||||
int processSymbols( SCHEMATIC_COMMIT* aCommit,
|
int processSymbols( SCH_COMMIT* aCommit,
|
||||||
const std::map<SCH_SYMBOL*, SYMBOL_CHANGE_INFO>& aSymbols );
|
const std::map<SCH_SYMBOL*, SYMBOL_CHANGE_INFO>& aSymbols );
|
||||||
wxString getSymbolReferences( SCH_SYMBOL& aSymbol, const LIB_ID& aNewId );
|
wxString getSymbolReferences( SCH_SYMBOL& aSymbol, const LIB_ID& aNewId );
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
#include <symbol_library.h>
|
#include <symbol_library.h>
|
||||||
#include <sch_validators.h>
|
#include <sch_validators.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <dialog_field_properties.h>
|
#include <dialog_field_properties.h>
|
||||||
#include <sch_text.h>
|
#include <sch_text.h>
|
||||||
#include <scintilla_tricks.h>
|
#include <scintilla_tricks.h>
|
||||||
|
@ -629,7 +629,7 @@ void DIALOG_SCH_FIELD_PROPERTIES::onScintillaCharAdded( wxStyledTextEvent &aEven
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_SCH_FIELD_PROPERTIES::UpdateField( SCHEMATIC_COMMIT* aCommit, SCH_FIELD* aField,
|
void DIALOG_SCH_FIELD_PROPERTIES::UpdateField( SCH_COMMIT* aCommit, SCH_FIELD* aField,
|
||||||
SCH_SHEET_PATH* aSheetPath )
|
SCH_SHEET_PATH* aSheetPath )
|
||||||
{
|
{
|
||||||
SCH_EDIT_FRAME* editFrame = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
|
SCH_EDIT_FRAME* editFrame = dynamic_cast<SCH_EDIT_FRAME*>( GetParent() );
|
||||||
|
|
|
@ -35,7 +35,7 @@ class SCH_BASE_FRAME;
|
||||||
class SCH_FIELD;
|
class SCH_FIELD;
|
||||||
class EDA_TEXT;
|
class EDA_TEXT;
|
||||||
class SCINTILLA_TRICKS;
|
class SCINTILLA_TRICKS;
|
||||||
class SCHEMATIC_COMMIT;
|
class SCH_COMMIT;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -142,7 +142,7 @@ public:
|
||||||
|
|
||||||
void onScintillaCharAdded( wxStyledTextEvent &aEvent );
|
void onScintillaCharAdded( wxStyledTextEvent &aEvent );
|
||||||
|
|
||||||
void UpdateField( SCHEMATIC_COMMIT* aCommit, SCH_FIELD* aField, SCH_SHEET_PATH* aSheetPath );
|
void UpdateField( SCH_COMMIT* aCommit, SCH_FIELD* aField, SCH_SHEET_PATH* aSheetPath );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const SCH_FIELD* m_field;
|
const SCH_FIELD* m_field;
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include <sch_sheet.h>
|
#include <sch_sheet.h>
|
||||||
#include <sch_sheet_pin.h>
|
#include <sch_sheet_pin.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
#include <tools/ee_selection_tool.h>
|
#include <tools/ee_selection_tool.h>
|
||||||
#include <tools/sch_edit_tool.h>
|
#include <tools/sch_edit_tool.h>
|
||||||
|
@ -102,8 +102,8 @@ protected:
|
||||||
bool TransferDataToWindow() override;
|
bool TransferDataToWindow() override;
|
||||||
bool TransferDataFromWindow() override;
|
bool TransferDataFromWindow() override;
|
||||||
|
|
||||||
void visitItem( SCHEMATIC_COMMIT* aCommit, const SCH_SHEET_PATH& aSheetPath, SCH_ITEM* aItem );
|
void visitItem( SCH_COMMIT* aCommit, const SCH_SHEET_PATH& aSheetPath, SCH_ITEM* aItem );
|
||||||
void processItem( SCHEMATIC_COMMIT* aCommit, const SCH_SHEET_PATH& aSheetPath, SCH_ITEM* aItem );
|
void processItem( SCH_COMMIT* aCommit, const SCH_SHEET_PATH& aSheetPath, SCH_ITEM* aItem );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ bool DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataToWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem( SCHEMATIC_COMMIT* aCommit,
|
void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem( SCH_COMMIT* aCommit,
|
||||||
const SCH_SHEET_PATH& aSheetPath,
|
const SCH_SHEET_PATH& aSheetPath,
|
||||||
SCH_ITEM* aItem )
|
SCH_ITEM* aItem )
|
||||||
{
|
{
|
||||||
|
@ -370,7 +370,7 @@ void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem( SCHEMATIC_COMMIT* aCommi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem( SCHEMATIC_COMMIT* aCommit,
|
void DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem( SCH_COMMIT* aCommit,
|
||||||
const SCH_SHEET_PATH& aSheetPath,
|
const SCH_SHEET_PATH& aSheetPath,
|
||||||
SCH_ITEM* aItem )
|
SCH_ITEM* aItem )
|
||||||
{
|
{
|
||||||
|
@ -550,7 +550,7 @@ bool DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::TransferDataFromWindow()
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SCH_SHEET_PATH currentSheet = m_parent->GetCurrentSheet();
|
SCH_SHEET_PATH currentSheet = m_parent->GetCurrentSheet();
|
||||||
SCHEMATIC_COMMIT commit( m_parent );
|
SCH_COMMIT commit( m_parent );
|
||||||
|
|
||||||
// Go through sheets
|
// Go through sheets
|
||||||
for( const SCH_SHEET_PATH& sheetPath : m_parent->Schematic().GetSheets() )
|
for( const SCH_SHEET_PATH& sheetPath : m_parent->Schematic().GetSheets() )
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
#include <sch_edit_frame.h>
|
#include <sch_edit_frame.h>
|
||||||
#include <sch_bitmap.h>
|
#include <sch_bitmap.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
|
|
||||||
DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_BITMAP* aBitmap ) :
|
DIALOG_IMAGE_PROPERTIES::DIALOG_IMAGE_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_BITMAP* aBitmap ) :
|
||||||
|
@ -60,7 +60,7 @@ bool DIALOG_IMAGE_PROPERTIES::TransferDataFromWindow()
|
||||||
{
|
{
|
||||||
if( m_imageEditor->TransferDataFromWindow() )
|
if( m_imageEditor->TransferDataFromWindow() )
|
||||||
{
|
{
|
||||||
SCHEMATIC_COMMIT commit( m_frame );
|
SCH_COMMIT commit( m_frame );
|
||||||
|
|
||||||
// Save old image in undo list if not already in edit
|
// Save old image in undo list if not already in edit
|
||||||
if( m_bitmap->GetEditFlags() == 0 )
|
if( m_bitmap->GetEditFlags() == 0 )
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include <settings/settings_manager.h>
|
#include <settings/settings_manager.h>
|
||||||
#include <sch_edit_frame.h>
|
#include <sch_edit_frame.h>
|
||||||
#include <widgets/color_swatch.h>
|
#include <widgets/color_swatch.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
|
|
||||||
DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS( SCH_EDIT_FRAME* aParent,
|
DIALOG_JUNCTION_PROPS::DIALOG_JUNCTION_PROPS( SCH_EDIT_FRAME* aParent,
|
||||||
|
@ -96,7 +96,7 @@ void DIALOG_JUNCTION_PROPS::resetDefaults( wxCommandEvent& event )
|
||||||
|
|
||||||
bool DIALOG_JUNCTION_PROPS::TransferDataFromWindow()
|
bool DIALOG_JUNCTION_PROPS::TransferDataFromWindow()
|
||||||
{
|
{
|
||||||
SCHEMATIC_COMMIT commit( m_frame );
|
SCH_COMMIT commit( m_frame );
|
||||||
|
|
||||||
for( SCH_JUNCTION* junction : m_junctions )
|
for( SCH_JUNCTION* junction : m_junctions )
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
#include <string_utils.h>
|
#include <string_utils.h>
|
||||||
#include <kiface_base.h>
|
#include <kiface_base.h>
|
||||||
#include <sch_label.h>
|
#include <sch_label.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
|
|
||||||
DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_LABEL_BASE* aLabel ) :
|
DIALOG_LABEL_PROPERTIES::DIALOG_LABEL_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_LABEL_BASE* aLabel ) :
|
||||||
|
@ -431,7 +431,7 @@ bool DIALOG_LABEL_PROPERTIES::TransferDataFromWindow()
|
||||||
if( !m_textSize.Validate( 0.01, 1000.0, EDA_UNITS::MILLIMETRES ) )
|
if( !m_textSize.Validate( 0.01, 1000.0, EDA_UNITS::MILLIMETRES ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_Parent );
|
SCH_COMMIT commit( m_Parent );
|
||||||
wxString text;
|
wxString text;
|
||||||
|
|
||||||
/* save old text in undo list if not already in edit */
|
/* save old text in undo list if not already in edit */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* 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-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -368,11 +368,12 @@ bool DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataFromWindow()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_Parent->SaveCopyInUndoList( m_libEntry, UNDO_REDO::LIB_RENAME );
|
m_Parent->SaveCopyInUndoList( _( "Edit Symbol Properties" ), m_libEntry,
|
||||||
|
UNDO_REDO::LIB_RENAME );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_Parent->SaveCopyInUndoList( m_libEntry );
|
m_Parent->SaveCopyInUndoList( _( "Edit Symbol Properties" ), m_libEntry );
|
||||||
}
|
}
|
||||||
|
|
||||||
// The Y axis for components in lib is from bottom to top while the screen axis is top
|
// The Y axis for components in lib is from bottom to top while the screen axis is top
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#include <sch_edit_frame.h>
|
#include <sch_edit_frame.h>
|
||||||
#include <stroke_params.h>
|
#include <stroke_params.h>
|
||||||
#include <widgets/color_swatch.h>
|
#include <widgets/color_swatch.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
|
|
||||||
DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES( SCH_EDIT_FRAME* aParent,
|
DIALOG_LINE_PROPERTIES::DIALOG_LINE_PROPERTIES( SCH_EDIT_FRAME* aParent,
|
||||||
|
@ -129,7 +129,7 @@ void DIALOG_LINE_PROPERTIES::resetDefaults( wxCommandEvent& event )
|
||||||
|
|
||||||
bool DIALOG_LINE_PROPERTIES::TransferDataFromWindow()
|
bool DIALOG_LINE_PROPERTIES::TransferDataFromWindow()
|
||||||
{
|
{
|
||||||
SCHEMATIC_COMMIT commit( m_frame );
|
SCH_COMMIT commit( m_frame );
|
||||||
|
|
||||||
for( SCH_LINE* line : m_lines )
|
for( SCH_LINE* line : m_lines )
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include <sch_shape.h>
|
#include <sch_shape.h>
|
||||||
#include <dialog_shape_properties.h>
|
#include <dialog_shape_properties.h>
|
||||||
#include <settings/color_settings.h>
|
#include <settings/color_settings.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
|
|
||||||
DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_SHAPE* aShape ) :
|
DIALOG_SHAPE_PROPERTIES::DIALOG_SHAPE_PROPERTIES( SCH_EDIT_FRAME* aParent, SCH_SHAPE* aShape ) :
|
||||||
|
@ -137,7 +137,7 @@ bool DIALOG_SHAPE_PROPERTIES::TransferDataFromWindow()
|
||||||
if( !wxDialog::TransferDataFromWindow() )
|
if( !wxDialog::TransferDataFromWindow() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_frame );
|
SCH_COMMIT commit( m_frame );
|
||||||
|
|
||||||
if( !m_shape->IsNew() )
|
if( !m_shape->IsNew() )
|
||||||
commit.Modify( m_shape, m_frame->GetScreen() );
|
commit.Modify( m_shape, m_frame->GetScreen() );
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include <sch_sheet.h>
|
#include <sch_sheet.h>
|
||||||
#include <sch_sheet_pin.h>
|
#include <sch_sheet_pin.h>
|
||||||
#include <sch_validators.h>
|
#include <sch_validators.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <dialog_sheet_pin_properties.h>
|
#include <dialog_sheet_pin_properties.h>
|
||||||
#include <dialogs/html_message_box.h>
|
#include <dialogs/html_message_box.h>
|
||||||
#include <string_utils.h>
|
#include <string_utils.h>
|
||||||
|
@ -134,7 +134,7 @@ bool DIALOG_SHEET_PIN_PROPERTIES::TransferDataToWindow()
|
||||||
|
|
||||||
bool DIALOG_SHEET_PIN_PROPERTIES::TransferDataFromWindow()
|
bool DIALOG_SHEET_PIN_PROPERTIES::TransferDataFromWindow()
|
||||||
{
|
{
|
||||||
SCHEMATIC_COMMIT commit( m_frame );
|
SCH_COMMIT commit( m_frame );
|
||||||
|
|
||||||
if( !m_sheetPin->IsNew() )
|
if( !m_sheetPin->IsNew() )
|
||||||
commit.Modify( m_sheetPin->GetParent(), m_frame->GetScreen() );
|
commit.Modify( m_sheetPin->GetParent(), m_frame->GetScreen() );
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
#include <sch_edit_frame.h>
|
#include <sch_edit_frame.h>
|
||||||
#include <sch_reference_list.h>
|
#include <sch_reference_list.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <tool/tool_manager.h>
|
#include <tool/tool_manager.h>
|
||||||
#include <tool/actions.h>
|
#include <tool/actions.h>
|
||||||
|
|
||||||
|
@ -696,7 +696,7 @@ bool DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow()
|
||||||
if( !m_pinGrid->CommitPendingChanges() )
|
if( !m_pinGrid->CommitPendingChanges() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( GetParent() );
|
SCH_COMMIT commit( GetParent() );
|
||||||
SCH_SCREEN* currentScreen = GetParent()->GetScreen();
|
SCH_SCREEN* currentScreen = GetParent()->GetScreen();
|
||||||
wxCHECK( currentScreen, false );
|
wxCHECK( currentScreen, false );
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
#include <sch_textbox.h>
|
#include <sch_textbox.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <dialogs/html_message_box.h>
|
#include <dialogs/html_message_box.h>
|
||||||
#include <scintilla_tricks.h>
|
#include <scintilla_tricks.h>
|
||||||
#include <dialog_text_properties.h>
|
#include <dialog_text_properties.h>
|
||||||
|
@ -434,7 +434,7 @@ bool DIALOG_TEXT_PROPERTIES::TransferDataFromWindow()
|
||||||
if( !m_textSize.Validate( 0.01, 1000.0, EDA_UNITS::MILLIMETRES ) )
|
if( !m_textSize.Validate( 0.01, 1000.0, EDA_UNITS::MILLIMETRES ) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_frame );
|
SCH_COMMIT commit( m_frame );
|
||||||
wxString text;
|
wxString text;
|
||||||
|
|
||||||
/* save old text in undo list if not already in edit */
|
/* save old text in undo list if not already in edit */
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <dialog_update_symbol_fields.h>
|
#include <dialog_update_symbol_fields.h>
|
||||||
#include <lib_symbol.h>
|
#include <lib_symbol.h>
|
||||||
#include <symbol_edit_frame.h>
|
#include <symbol_edit_frame.h>
|
||||||
|
#include <sch_commit.h>
|
||||||
#include <template_fieldnames.h>
|
#include <template_fieldnames.h>
|
||||||
#include <string_utils.h>
|
#include <string_utils.h>
|
||||||
|
|
||||||
|
@ -122,8 +123,9 @@ void DIALOG_UPDATE_SYMBOL_FIELDS::checkAll( bool aCheck )
|
||||||
void DIALOG_UPDATE_SYMBOL_FIELDS::onOkButtonClicked( wxCommandEvent& aEvent )
|
void DIALOG_UPDATE_SYMBOL_FIELDS::onOkButtonClicked( wxCommandEvent& aEvent )
|
||||||
{
|
{
|
||||||
wxBusyCursor dummy;
|
wxBusyCursor dummy;
|
||||||
|
SCH_COMMIT commit( m_editFrame );
|
||||||
|
|
||||||
m_editFrame->SaveCopyInUndoList( m_symbol, UNDO_REDO::LIBEDIT );
|
commit.Modify( m_symbol );
|
||||||
|
|
||||||
// Create the set of fields to be updated
|
// Create the set of fields to be updated
|
||||||
m_updateFields.clear();
|
m_updateFields.clear();
|
||||||
|
@ -216,8 +218,9 @@ void DIALOG_UPDATE_SYMBOL_FIELDS::onOkButtonClicked( wxCommandEvent& aEvent )
|
||||||
|
|
||||||
m_symbol->SetFields( result );
|
m_symbol->SetFields( result );
|
||||||
|
|
||||||
|
commit.Push( _( "Update Symbol Fields" ) );
|
||||||
|
|
||||||
m_editFrame->RebuildView();
|
m_editFrame->RebuildView();
|
||||||
m_editFrame->OnModify();
|
|
||||||
wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
|
wxPostEvent( this, wxCommandEvent( wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include <sch_edit_frame.h>
|
#include <sch_edit_frame.h>
|
||||||
#include <stroke_params.h>
|
#include <stroke_params.h>
|
||||||
#include <widgets/color_swatch.h>
|
#include <widgets/color_swatch.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
|
|
||||||
DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES( SCH_EDIT_FRAME* aParent,
|
DIALOG_WIRE_BUS_PROPERTIES::DIALOG_WIRE_BUS_PROPERTIES( SCH_EDIT_FRAME* aParent,
|
||||||
|
@ -175,7 +175,7 @@ void DIALOG_WIRE_BUS_PROPERTIES::resetDefaults( wxCommandEvent& event )
|
||||||
|
|
||||||
bool DIALOG_WIRE_BUS_PROPERTIES::TransferDataFromWindow()
|
bool DIALOG_WIRE_BUS_PROPERTIES::TransferDataFromWindow()
|
||||||
{
|
{
|
||||||
SCHEMATIC_COMMIT commit( m_frame );
|
SCH_COMMIT commit( m_frame );
|
||||||
|
|
||||||
for( SCH_ITEM* item : m_items )
|
for( SCH_ITEM* item : m_items )
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,38 +32,40 @@
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
|
|
||||||
#include <view/view.h>
|
#include <view/view.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
|
|
||||||
SCHEMATIC_COMMIT::SCHEMATIC_COMMIT( TOOL_MANAGER* aToolMgr ) :
|
SCH_COMMIT::SCH_COMMIT( TOOL_MANAGER* aToolMgr ) :
|
||||||
m_toolMgr( aToolMgr ),
|
m_toolMgr( aToolMgr ),
|
||||||
m_isLibEditor( false )
|
m_isLibEditor( false )
|
||||||
{
|
{
|
||||||
|
SCH_BASE_FRAME* frame = static_cast<SCH_BASE_FRAME*>( m_toolMgr->GetToolHolder() );
|
||||||
|
m_isLibEditor = frame && frame->IsType( FRAME_SCH_SYMBOL_EDITOR );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCHEMATIC_COMMIT::SCHEMATIC_COMMIT( EE_TOOL_BASE<SCH_BASE_FRAME>* aTool )
|
SCH_COMMIT::SCH_COMMIT( EE_TOOL_BASE<SCH_BASE_FRAME>* aTool )
|
||||||
{
|
{
|
||||||
m_toolMgr = aTool->GetManager();
|
m_toolMgr = aTool->GetManager();
|
||||||
m_isLibEditor = aTool->IsSymbolEditor();
|
m_isLibEditor = aTool->IsSymbolEditor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCHEMATIC_COMMIT::SCHEMATIC_COMMIT( EDA_DRAW_FRAME* aFrame )
|
SCH_COMMIT::SCH_COMMIT( EDA_DRAW_FRAME* aFrame )
|
||||||
{
|
{
|
||||||
m_toolMgr = aFrame->GetToolManager();
|
m_toolMgr = aFrame->GetToolManager();
|
||||||
m_isLibEditor = aFrame->IsType( FRAME_SCH_SYMBOL_EDITOR );
|
m_isLibEditor = aFrame->IsType( FRAME_SCH_SYMBOL_EDITOR );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCHEMATIC_COMMIT::~SCHEMATIC_COMMIT()
|
SCH_COMMIT::~SCH_COMMIT()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
COMMIT& SCHEMATIC_COMMIT::Stage( EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN *aScreen )
|
COMMIT& SCH_COMMIT::Stage( EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN *aScreen )
|
||||||
{
|
{
|
||||||
wxCHECK( aItem, *this );
|
wxCHECK( aItem, *this );
|
||||||
|
|
||||||
|
@ -96,7 +98,7 @@ COMMIT& SCHEMATIC_COMMIT::Stage( EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
COMMIT& SCHEMATIC_COMMIT::Stage( std::vector<EDA_ITEM*> &container, CHANGE_TYPE aChangeType,
|
COMMIT& SCH_COMMIT::Stage( std::vector<EDA_ITEM*> &container, CHANGE_TYPE aChangeType,
|
||||||
BASE_SCREEN *aScreen )
|
BASE_SCREEN *aScreen )
|
||||||
{
|
{
|
||||||
for( EDA_ITEM* item : container )
|
for( EDA_ITEM* item : container )
|
||||||
|
@ -106,54 +108,28 @@ COMMIT& SCHEMATIC_COMMIT::Stage( std::vector<EDA_ITEM*> &container, CHANGE_TYPE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
COMMIT& SCHEMATIC_COMMIT::Stage( const PICKED_ITEMS_LIST &aItems, UNDO_REDO aModFlag,
|
COMMIT& SCH_COMMIT::Stage( const PICKED_ITEMS_LIST &aItems, UNDO_REDO aModFlag,
|
||||||
BASE_SCREEN *aScreen )
|
BASE_SCREEN *aScreen )
|
||||||
{
|
{
|
||||||
return COMMIT::Stage( aItems, aModFlag, aScreen );
|
return COMMIT::Stage( aItems, aModFlag, aScreen );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCHEMATIC_COMMIT::pushLibEdit( const wxString& aMessage, int aCommitFlags )
|
void SCH_COMMIT::pushLibEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
{
|
{
|
||||||
// Objects potentially interested in changes:
|
|
||||||
PICKED_ITEMS_LIST undoList;
|
|
||||||
KIGFX::VIEW* view = m_toolMgr->GetView();
|
KIGFX::VIEW* view = m_toolMgr->GetView();
|
||||||
|
|
||||||
SYMBOL_EDIT_FRAME* sym_frame = static_cast<SYMBOL_EDIT_FRAME*>( m_toolMgr->GetToolHolder() );
|
SYMBOL_EDIT_FRAME* sym_frame = static_cast<SYMBOL_EDIT_FRAME*>( m_toolMgr->GetToolHolder() );
|
||||||
LIB_SYMBOL* symbol = sym_frame->GetCurSymbol();
|
LIB_SYMBOL* symbol = sym_frame->GetCurSymbol();
|
||||||
std::set<EDA_ITEM*> savedModules;
|
|
||||||
EE_SELECTION_TOOL* selTool = m_toolMgr->GetTool<EE_SELECTION_TOOL>();
|
|
||||||
bool itemsDeselected = false;
|
|
||||||
bool selectedModified = false;
|
bool selectedModified = false;
|
||||||
|
|
||||||
if( Empty() )
|
if( Empty() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
undoList.SetDescription( aMessage );
|
|
||||||
|
|
||||||
for( COMMIT_LINE& ent : m_changes )
|
for( COMMIT_LINE& ent : m_changes )
|
||||||
{
|
{
|
||||||
int changeType = ent.m_type & CHT_TYPE;
|
// In the symbol editor everything should have been commited as a changed symbol.
|
||||||
int changeFlags = ent.m_type & CHT_FLAGS;
|
wxASSERT( ent.m_item == symbol );
|
||||||
LIB_ITEM* libItem = static_cast<LIB_ITEM*>( ent.m_item );
|
wxASSERT( ent.m_type == CHT_MODIFY );
|
||||||
|
|
||||||
wxASSERT( ent.m_item );
|
|
||||||
|
|
||||||
// Module items need to be saved in the undo buffer before modification
|
|
||||||
if( ent.m_item->Type() != LIB_SYMBOL_T )
|
|
||||||
{
|
|
||||||
ent.m_item = ent.m_item->GetParent();
|
|
||||||
wxASSERT( ent.m_item );
|
|
||||||
}
|
|
||||||
|
|
||||||
// We have not saved the symbol yet, so let's create an entry
|
|
||||||
if( savedModules.count( ent.m_item ) == 0 )
|
|
||||||
{
|
|
||||||
if( !( aCommitFlags & SKIP_UNDO ) && sym_frame )
|
|
||||||
sym_frame->SaveCopyInUndoList( ent.m_item, UNDO_REDO::CHANGED, aCommitFlags & APPEND_UNDO );
|
|
||||||
|
|
||||||
savedModules.insert( ent.m_item );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ent.m_item->IsSelected() )
|
if( ent.m_item->IsSelected() )
|
||||||
selectedModified = true;
|
selectedModified = true;
|
||||||
|
@ -165,52 +141,9 @@ void SCHEMATIC_COMMIT::pushLibEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
selectedModified = true;
|
selectedModified = true;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
switch( changeType )
|
|
||||||
{
|
|
||||||
case CHT_ADD:
|
|
||||||
{
|
|
||||||
wxASSERT( libItem->Type() != LIB_SYMBOL_T );
|
|
||||||
|
|
||||||
libItem->SetParent( symbol );
|
|
||||||
|
|
||||||
if( !( changeFlags & CHT_DONE ) )
|
|
||||||
symbol->AddDrawItem( libItem );
|
|
||||||
|
|
||||||
if( view )
|
|
||||||
view->Add( libItem );
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case CHT_REMOVE:
|
|
||||||
{
|
|
||||||
if( libItem->IsSelected() )
|
|
||||||
{
|
|
||||||
if( selTool )
|
|
||||||
selTool->RemoveItemFromSel( libItem, true /* quiet mode */ );
|
|
||||||
|
|
||||||
itemsDeselected = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Avoid removing mandatory fields
|
|
||||||
if( libItem->Type() == LIB_FIELD_T && static_cast<LIB_FIELD*>( libItem )->IsMandatory() )
|
|
||||||
break;
|
|
||||||
|
|
||||||
if( view )
|
|
||||||
view->Remove( libItem );
|
|
||||||
|
|
||||||
if( !( changeFlags & CHT_DONE ) )
|
|
||||||
symbol->RemoveDrawItem( libItem );
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
case CHT_MODIFY:
|
|
||||||
{
|
|
||||||
if( view )
|
if( view )
|
||||||
{
|
{
|
||||||
view->Update( libItem );
|
view->Update( symbol );
|
||||||
|
|
||||||
symbol->RunOnChildren(
|
symbol->RunOnChildren(
|
||||||
[&]( LIB_ITEM* aChild )
|
[&]( LIB_ITEM* aChild )
|
||||||
|
@ -219,24 +152,23 @@ void SCHEMATIC_COMMIT::pushLibEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// if no undo entry is needed, the copy would create a memory leak
|
if( !( aCommitFlags & SKIP_UNDO ) && sym_frame )
|
||||||
if( aCommitFlags & SKIP_UNDO )
|
{
|
||||||
delete ent.m_copy;
|
if( ent.m_copy )
|
||||||
|
{
|
||||||
break;
|
sym_frame->SaveCopyInUndoList( aMessage, ent.m_copy );
|
||||||
|
ent.m_copy = nullptr;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
default:
|
else
|
||||||
wxASSERT( false );
|
{
|
||||||
break;
|
// if no undo entry is needed, the copy would create a memory leak
|
||||||
|
delete ent.m_copy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_toolMgr->PostEvent( { TC_MESSAGE, TA_MODEL_CHANGE, AS_GLOBAL } );
|
m_toolMgr->PostEvent( { TC_MESSAGE, TA_MODEL_CHANGE, AS_GLOBAL } );
|
||||||
|
|
||||||
if( itemsDeselected )
|
|
||||||
m_toolMgr->PostEvent( EVENTS::UnselectedEvent );
|
|
||||||
|
|
||||||
if( selectedModified )
|
if( selectedModified )
|
||||||
m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
|
m_toolMgr->ProcessEvent( EVENTS::SelectedItemsModified );
|
||||||
|
|
||||||
|
@ -247,7 +179,7 @@ void SCHEMATIC_COMMIT::pushLibEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCHEMATIC_COMMIT::pushSchEdit( const wxString& aMessage, int aCommitFlags )
|
void SCH_COMMIT::pushSchEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
{
|
{
|
||||||
// Objects potentially interested in changes:
|
// Objects potentially interested in changes:
|
||||||
PICKED_ITEMS_LIST undoList;
|
PICKED_ITEMS_LIST undoList;
|
||||||
|
@ -391,7 +323,7 @@ void SCHEMATIC_COMMIT::pushSchEdit( const wxString& aMessage, int aCommitFlags )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCHEMATIC_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
void SCH_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
{
|
{
|
||||||
if( m_isLibEditor )
|
if( m_isLibEditor )
|
||||||
pushLibEdit( aMessage, aCommitFlags );
|
pushLibEdit( aMessage, aCommitFlags );
|
||||||
|
@ -400,7 +332,7 @@ void SCHEMATIC_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EDA_ITEM* SCHEMATIC_COMMIT::parentObject( EDA_ITEM* aItem ) const
|
EDA_ITEM* SCH_COMMIT::parentObject( EDA_ITEM* aItem ) const
|
||||||
{
|
{
|
||||||
if( SCH_SYMBOL* parentSymbol = dyn_cast<SCH_SYMBOL*>( aItem->GetParent() ) )
|
if( SCH_SYMBOL* parentSymbol = dyn_cast<SCH_SYMBOL*>( aItem->GetParent() ) )
|
||||||
return parentSymbol;
|
return parentSymbol;
|
||||||
|
@ -415,7 +347,7 @@ EDA_ITEM* SCHEMATIC_COMMIT::parentObject( EDA_ITEM* aItem ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EDA_ITEM* SCHEMATIC_COMMIT::makeImage( EDA_ITEM* aItem ) const
|
EDA_ITEM* SCH_COMMIT::makeImage( EDA_ITEM* aItem ) const
|
||||||
{
|
{
|
||||||
if( m_isLibEditor )
|
if( m_isLibEditor )
|
||||||
{
|
{
|
||||||
|
@ -427,7 +359,7 @@ EDA_ITEM* SCHEMATIC_COMMIT::makeImage( EDA_ITEM* aItem ) const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCHEMATIC_COMMIT::revertLibEdit()
|
void SCH_COMMIT::revertLibEdit()
|
||||||
{
|
{
|
||||||
// The first element in the commit is the original, and libedit
|
// The first element in the commit is the original, and libedit
|
||||||
// just saves copies of the whole symbol, so grab the original and discard the rest
|
// just saves copies of the whole symbol, so grab the original and discard the rest
|
||||||
|
@ -443,7 +375,7 @@ void SCHEMATIC_COMMIT::revertLibEdit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCHEMATIC_COMMIT::Revert()
|
void SCH_COMMIT::Revert()
|
||||||
{
|
{
|
||||||
PICKED_ITEMS_LIST undoList;
|
PICKED_ITEMS_LIST undoList;
|
||||||
KIGFX::VIEW* view = m_toolMgr->GetView();
|
KIGFX::VIEW* view = m_toolMgr->GetView();
|
|
@ -42,21 +42,21 @@ class EE_TOOL_BASE;
|
||||||
#define SKIP_SET_DIRTY 0x0004
|
#define SKIP_SET_DIRTY 0x0004
|
||||||
#define SKIP_CONNECTIVITY 0x0008
|
#define SKIP_CONNECTIVITY 0x0008
|
||||||
|
|
||||||
class SCHEMATIC_COMMIT : public COMMIT
|
class SCH_COMMIT : public COMMIT
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SCHEMATIC_COMMIT( TOOL_MANAGER* aToolMgr );
|
SCH_COMMIT( TOOL_MANAGER* aToolMgr );
|
||||||
SCHEMATIC_COMMIT( EDA_DRAW_FRAME* aFrame );
|
SCH_COMMIT( EDA_DRAW_FRAME* aFrame );
|
||||||
SCHEMATIC_COMMIT( EE_TOOL_BASE<SCH_BASE_FRAME>* aFrame );
|
SCH_COMMIT( EE_TOOL_BASE<SCH_BASE_FRAME>* aFrame );
|
||||||
|
|
||||||
virtual ~SCHEMATIC_COMMIT();
|
virtual ~SCH_COMMIT();
|
||||||
|
|
||||||
virtual void Push( const wxString& aMessage = wxT( "A commit" ),
|
virtual void Push( const wxString& aMessage = wxT( "A commit" ),
|
||||||
int aCommitFlags = 0 ) override;
|
int aCommitFlags = 0 ) override;
|
||||||
|
|
||||||
virtual void Revert() override;
|
virtual void Revert() override;
|
||||||
COMMIT& Stage( EDA_ITEM *aItem, CHANGE_TYPE aChangeType, BASE_SCREEN *aScreen = nullptr )
|
COMMIT& Stage( EDA_ITEM *aItem, CHANGE_TYPE aChangeType,
|
||||||
override;
|
BASE_SCREEN *aScreen = nullptr ) override;
|
||||||
COMMIT& Stage( std::vector<EDA_ITEM*> &container, CHANGE_TYPE aChangeType,
|
COMMIT& Stage( std::vector<EDA_ITEM*> &container, CHANGE_TYPE aChangeType,
|
||||||
BASE_SCREEN *aScreen = nullptr ) override;
|
BASE_SCREEN *aScreen = nullptr ) override;
|
||||||
COMMIT& Stage( const PICKED_ITEMS_LIST &aItems, UNDO_REDO aModFlag = UNDO_REDO::UNSPECIFIED,
|
COMMIT& Stage( const PICKED_ITEMS_LIST &aItems, UNDO_REDO aModFlag = UNDO_REDO::UNSPECIFIED,
|
|
@ -53,7 +53,7 @@
|
||||||
#include <sch_sheet.h>
|
#include <sch_sheet.h>
|
||||||
#include <sch_marker.h>
|
#include <sch_marker.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <settings/settings_manager.h>
|
#include <settings/settings_manager.h>
|
||||||
#include <advanced_config.h>
|
#include <advanced_config.h>
|
||||||
#include <sim/simulator_frame.h>
|
#include <sim/simulator_frame.h>
|
||||||
|
@ -1589,7 +1589,7 @@ void SCH_EDIT_FRAME::AutoRotateItem( SCH_SCREEN* aScreen, SCH_ITEM* aItem )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::AddItemToCommitAndScreen( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aScreen,
|
void SCH_EDIT_FRAME::AddItemToCommitAndScreen( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen,
|
||||||
SCH_ITEM* aItem )
|
SCH_ITEM* aItem )
|
||||||
{
|
{
|
||||||
wxCHECK_RET( aItem != nullptr, wxT( "Cannot add null item to list." ) );
|
wxCHECK_RET( aItem != nullptr, wxT( "Cannot add null item to list." ) );
|
||||||
|
@ -1736,16 +1736,15 @@ void SCH_EDIT_FRAME::initScreenZoom()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EDIT_FRAME::RecalculateConnections( SCHEMATIC_COMMIT* aCommit,
|
void SCH_EDIT_FRAME::RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FLAGS aCleanupFlags )
|
||||||
SCH_CLEANUP_FLAGS aCleanupFlags )
|
|
||||||
{
|
{
|
||||||
wxString highlightedConn = GetHighlightedConnection();
|
wxString highlightedConn = GetHighlightedConnection();
|
||||||
SCHEMATIC_SETTINGS& settings = Schematic().Settings();
|
SCHEMATIC_SETTINGS& settings = Schematic().Settings();
|
||||||
SCH_SHEET_LIST list = Schematic().GetSheets();
|
SCH_SHEET_LIST list = Schematic().GetSheets();
|
||||||
SCHEMATIC_COMMIT localInstance( m_toolManager );
|
SCH_COMMIT localCommit( m_toolManager );
|
||||||
|
|
||||||
if( !aCommit )
|
if( !aCommit )
|
||||||
aCommit = &localInstance;
|
aCommit = &localCommit;
|
||||||
|
|
||||||
#ifdef PROFILE
|
#ifdef PROFILE
|
||||||
PROF_TIMER timer;
|
PROF_TIMER timer;
|
||||||
|
@ -1914,8 +1913,8 @@ void SCH_EDIT_FRAME::RecalculateConnections( SCHEMATIC_COMMIT* aCommit,
|
||||||
m_highlightedConnChanged = false;
|
m_highlightedConnChanged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !localInstance.Empty() )
|
if( !localCommit.Empty() )
|
||||||
localInstance.Push( _( "Schematic Cleanup" ) );
|
localCommit.Push( _( "Schematic Cleanup" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2154,7 +2153,7 @@ void SCH_EDIT_FRAME::SaveSymbolToSchematic( const LIB_SYMBOL& aSymbol,
|
||||||
SCH_SHEET_PATH principalPath;
|
SCH_SHEET_PATH principalPath;
|
||||||
SCH_ITEM* item = Schematic().GetSheets().GetItem( aSchematicSymbolUUID, &principalPath );
|
SCH_ITEM* item = Schematic().GetSheets().GetItem( aSchematicSymbolUUID, &principalPath );
|
||||||
SCH_SYMBOL* principalSymbol = dynamic_cast<SCH_SYMBOL*>( item );
|
SCH_SYMBOL* principalSymbol = dynamic_cast<SCH_SYMBOL*>( item );
|
||||||
SCHEMATIC_COMMIT commit( m_toolManager );
|
SCH_COMMIT commit( m_toolManager );
|
||||||
|
|
||||||
if( !principalSymbol )
|
if( !principalSymbol )
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -55,7 +55,7 @@ class SCH_SYMBOL;
|
||||||
class SCH_FIELD;
|
class SCH_FIELD;
|
||||||
class SCH_JUNCTION;
|
class SCH_JUNCTION;
|
||||||
class SCHEMATIC;
|
class SCHEMATIC;
|
||||||
class SCHEMATIC_COMMIT;
|
class SCH_COMMIT;
|
||||||
class DIALOG_BOOK_REPORTER;
|
class DIALOG_BOOK_REPORTER;
|
||||||
class DIALOG_ERC;
|
class DIALOG_ERC;
|
||||||
class DIALOG_SCH_FIND;
|
class DIALOG_SCH_FIND;
|
||||||
|
@ -250,7 +250,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Add an item to the schematic and adds the changes to the commit.
|
* Add an item to the schematic and adds the changes to the commit.
|
||||||
*/
|
*/
|
||||||
void AddItemToCommitAndScreen( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aScreen, SCH_ITEM* aItem );
|
void AddItemToCommitAndScreen( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen, SCH_ITEM* aItem );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Run the Find or Find & Replace dialog.
|
* Run the Find or Find & Replace dialog.
|
||||||
|
@ -284,7 +284,7 @@ public:
|
||||||
* @param aNewSegment Pointer to the newly created segment (if created)
|
* @param aNewSegment Pointer to the newly created segment (if created)
|
||||||
* @param aScreen is the screen to examine
|
* @param aScreen is the screen to examine
|
||||||
*/
|
*/
|
||||||
void BreakSegment( SCHEMATIC_COMMIT* aCommit, SCH_LINE* aSegment, const VECTOR2I& aPoint,
|
void BreakSegment( SCH_COMMIT* aCommit, SCH_LINE* aSegment, const VECTOR2I& aPoint,
|
||||||
SCH_LINE** aNewSegment, SCH_SCREEN* aScreen );
|
SCH_LINE** aNewSegment, SCH_SCREEN* aScreen );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -295,7 +295,7 @@ public:
|
||||||
* @param aScreen is the screen to examine.
|
* @param aScreen is the screen to examine.
|
||||||
* @return True if any wires or buses were broken.
|
* @return True if any wires or buses were broken.
|
||||||
*/
|
*/
|
||||||
bool BreakSegments( SCHEMATIC_COMMIT* aCommit, const VECTOR2I& aPoint, SCH_SCREEN* aScreen );
|
bool BreakSegments( SCH_COMMIT* aCommit, const VECTOR2I& aPoint, SCH_SCREEN* aScreen );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test all junctions and bus entries in the schematic for intersections with wires and
|
* Test all junctions and bus entries in the schematic for intersections with wires and
|
||||||
|
@ -304,7 +304,7 @@ public:
|
||||||
* @param aScreen is the screen to examine.
|
* @param aScreen is the screen to examine.
|
||||||
* @return True if any wires or buses were broken.
|
* @return True if any wires or buses were broken.
|
||||||
*/
|
*/
|
||||||
bool BreakSegmentsOnJunctions( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aScreen );
|
bool BreakSegmentsOnJunctions( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test all of the connectable objects in the schematic for unused connection points.
|
* Test all of the connectable objects in the schematic for unused connection points.
|
||||||
|
@ -407,7 +407,7 @@ public:
|
||||||
* number * 100. In other words the first sheet uses 100 to 199, the second sheet uses
|
* number * 100. In other words the first sheet uses 100 to 199, the second sheet uses
|
||||||
* 200 to 299, and so on.
|
* 200 to 299, and so on.
|
||||||
*/
|
*/
|
||||||
void AnnotateSymbols( SCHEMATIC_COMMIT* aCommit, ANNOTATE_SCOPE_T aAnnotateScope,
|
void AnnotateSymbols( SCH_COMMIT* aCommit, ANNOTATE_SCOPE_T aAnnotateScope,
|
||||||
ANNOTATE_ORDER_T aSortOption, ANNOTATE_ALGO_T aAlgoOption,
|
ANNOTATE_ORDER_T aSortOption, ANNOTATE_ALGO_T aAlgoOption,
|
||||||
bool aRecursive, int aStartNumber, bool aResetAnnotation,
|
bool aRecursive, int aStartNumber, bool aResetAnnotation,
|
||||||
bool aRepairTimestamps, REPORTER& aReporter );
|
bool aRepairTimestamps, REPORTER& aReporter );
|
||||||
|
@ -522,8 +522,7 @@ public:
|
||||||
*/
|
*/
|
||||||
bool AskToSaveChanges();
|
bool AskToSaveChanges();
|
||||||
|
|
||||||
SCH_JUNCTION* AddJunction( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aScreen,
|
SCH_JUNCTION* AddJunction( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen, const VECTOR2I& aPos );
|
||||||
const VECTOR2I& aPos );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform routine schematic cleaning including breaking wire and buses and deleting
|
* Perform routine schematic cleaning including breaking wire and buses and deleting
|
||||||
|
@ -531,7 +530,7 @@ public:
|
||||||
* @param aCommit Transaction container used to record changes for undo/redo
|
* @param aCommit Transaction container used to record changes for undo/redo
|
||||||
* @param aScreen is the screen to examine, or nullptr to examine the current screen
|
* @param aScreen is the screen to examine, or nullptr to examine the current screen
|
||||||
*/
|
*/
|
||||||
void SchematicCleanUp( SCHEMATIC_COMMIT* aCommit, SCH_SCREEN* aScreen = nullptr );
|
void SchematicCleanUp( SCH_COMMIT* aCommit, SCH_SCREEN* aScreen = nullptr );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If any single wire passes through _both points_, remove the portion between the two points,
|
* If any single wire passes through _both points_, remove the portion between the two points,
|
||||||
|
@ -541,7 +540,7 @@ public:
|
||||||
* @param aEnd The ending point for trimming
|
* @param aEnd The ending point for trimming
|
||||||
* @return True if any wires were changed by this operation
|
* @return True if any wires were changed by this operation
|
||||||
*/
|
*/
|
||||||
bool TrimWire( SCHEMATIC_COMMIT* aCommit, const VECTOR2I& aStart, const VECTOR2I& aEnd );
|
bool TrimWire( SCH_COMMIT* aCommit, const VECTOR2I& aStart, const VECTOR2I& aEnd );
|
||||||
|
|
||||||
void OnOpenPcbnew( wxCommandEvent& event );
|
void OnOpenPcbnew( wxCommandEvent& event );
|
||||||
void OnOpenCvpcb( wxCommandEvent& event );
|
void OnOpenCvpcb( wxCommandEvent& event );
|
||||||
|
@ -655,7 +654,7 @@ public:
|
||||||
*
|
*
|
||||||
* @param aItem The junction to delete
|
* @param aItem The junction to delete
|
||||||
*/
|
*/
|
||||||
void DeleteJunction( SCHEMATIC_COMMIT* aCommit, SCH_ITEM* aItem );
|
void DeleteJunction( SCH_COMMIT* aCommit, SCH_ITEM* aItem );
|
||||||
|
|
||||||
void ConvertPart( SCH_SYMBOL* aSymbol );
|
void ConvertPart( SCH_SYMBOL* aSymbol );
|
||||||
|
|
||||||
|
@ -776,7 +775,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Generate the connection data for the entire schematic hierarchy.
|
* Generate the connection data for the entire schematic hierarchy.
|
||||||
*/
|
*/
|
||||||
void RecalculateConnections( SCHEMATIC_COMMIT* aCommit, SCH_CLEANUP_FLAGS aCleanupFlags );
|
void RecalculateConnections( SCH_COMMIT* aCommit, SCH_CLEANUP_FLAGS aCleanupFlags );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called after the preferences dialog is run.
|
* Called after the preferences dialog is run.
|
||||||
|
|
|
@ -270,8 +270,8 @@ public:
|
||||||
* Because a symbol in library editor does not have a lot of primitives, the full data is
|
* Because a symbol in library editor does not have a lot of primitives, the full data is
|
||||||
* duplicated. It is not worth to try to optimize this save function.
|
* duplicated. It is not worth to try to optimize this save function.
|
||||||
*/
|
*/
|
||||||
void SaveCopyInUndoList( EDA_ITEM* aItem, UNDO_REDO aUndoType = UNDO_REDO::LIBEDIT,
|
void SaveCopyInUndoList( const wxString& aDescription, EDA_ITEM* aItem,
|
||||||
bool aAppend = false );
|
UNDO_REDO aUndoType = UNDO_REDO::LIBEDIT );
|
||||||
|
|
||||||
void GetSymbolFromUndoList();
|
void GetSymbolFromUndoList();
|
||||||
void GetSymbolFromRedoList();
|
void GetSymbolFromRedoList();
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* 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) 2007 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
* Copyright (C) 2007 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 2014-2021 KiCad Developers, see AUTHORS.TXT for contributors.
|
* Copyright (C) 2014-2023 KiCad Developers, see AUTHORS.TXT for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -31,10 +31,9 @@
|
||||||
#include <tools/ee_selection_tool.h>
|
#include <tools/ee_selection_tool.h>
|
||||||
|
|
||||||
|
|
||||||
void SYMBOL_EDIT_FRAME::SaveCopyInUndoList( EDA_ITEM* aItem, UNDO_REDO aUndoType, bool aAppend )
|
void SYMBOL_EDIT_FRAME::SaveCopyInUndoList( const wxString& aDescription, EDA_ITEM* aItem,
|
||||||
|
UNDO_REDO aUndoType )
|
||||||
{
|
{
|
||||||
wxASSERT_MSG( !aAppend, "Append not needed/supported for symbol editor" );
|
|
||||||
|
|
||||||
if( !aItem )
|
if( !aItem )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -50,6 +49,7 @@ void SYMBOL_EDIT_FRAME::SaveCopyInUndoList( EDA_ITEM* aItem, UNDO_REDO aUndoType
|
||||||
|
|
||||||
ITEM_PICKER wrapper( GetScreen(), copyItem, aUndoType );
|
ITEM_PICKER wrapper( GetScreen(), copyItem, aUndoType );
|
||||||
lastcmd->PushItem( wrapper );
|
lastcmd->PushItem( wrapper );
|
||||||
|
lastcmd->SetDescription( aDescription );
|
||||||
PushCommandToUndoList( lastcmd );
|
PushCommandToUndoList( lastcmd );
|
||||||
|
|
||||||
// Clear redo list, because after new save there is no redo to do.
|
// Clear redo list, because after new save there is no redo to do.
|
||||||
|
@ -67,17 +67,22 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromRedoList()
|
||||||
// Load the last redo entry
|
// Load the last redo entry
|
||||||
PICKED_ITEMS_LIST* redoCommand = PopCommandFromRedoList();
|
PICKED_ITEMS_LIST* redoCommand = PopCommandFromRedoList();
|
||||||
ITEM_PICKER redoWrapper = redoCommand->PopItem();
|
ITEM_PICKER redoWrapper = redoCommand->PopItem();
|
||||||
|
wxString description = redoCommand->GetDescription();
|
||||||
|
|
||||||
delete redoCommand;
|
delete redoCommand;
|
||||||
|
|
||||||
LIB_SYMBOL* symbol = (LIB_SYMBOL*) redoWrapper.GetItem();
|
LIB_SYMBOL* symbol = (LIB_SYMBOL*) redoWrapper.GetItem();
|
||||||
|
UNDO_REDO undoRedoType = redoWrapper.GetStatus();
|
||||||
wxCHECK( symbol, /* void */ );
|
wxCHECK( symbol, /* void */ );
|
||||||
symbol->ClearFlags( UR_TRANSIENT );
|
symbol->ClearFlags( UR_TRANSIENT );
|
||||||
UNDO_REDO undoRedoType = redoWrapper.GetStatus();
|
|
||||||
|
|
||||||
// Store the current symbol in the undo buffer
|
// Store the current symbol in the undo buffer
|
||||||
PICKED_ITEMS_LIST* undoCommand = new PICKED_ITEMS_LIST();
|
PICKED_ITEMS_LIST* undoCommand = new PICKED_ITEMS_LIST();
|
||||||
LIB_SYMBOL* oldSymbol = m_symbol;
|
LIB_SYMBOL* oldSymbol = m_symbol;
|
||||||
|
|
||||||
oldSymbol->SetFlags( UR_TRANSIENT );
|
oldSymbol->SetFlags( UR_TRANSIENT );
|
||||||
ITEM_PICKER undoWrapper( GetScreen(), oldSymbol, undoRedoType );
|
ITEM_PICKER undoWrapper( GetScreen(), oldSymbol, undoRedoType );
|
||||||
|
undoCommand->SetDescription( description );
|
||||||
undoCommand->PushItem( undoWrapper );
|
undoCommand->PushItem( undoWrapper );
|
||||||
PushCommandToUndoList( undoCommand );
|
PushCommandToUndoList( undoCommand );
|
||||||
|
|
||||||
|
@ -114,19 +119,24 @@ void SYMBOL_EDIT_FRAME::GetSymbolFromUndoList()
|
||||||
|
|
||||||
// Load the last undo entry
|
// Load the last undo entry
|
||||||
PICKED_ITEMS_LIST* undoCommand = PopCommandFromUndoList();
|
PICKED_ITEMS_LIST* undoCommand = PopCommandFromUndoList();
|
||||||
|
wxString description = undoCommand->GetDescription();
|
||||||
ITEM_PICKER undoWrapper = undoCommand->PopItem();
|
ITEM_PICKER undoWrapper = undoCommand->PopItem();
|
||||||
|
|
||||||
delete undoCommand;
|
delete undoCommand;
|
||||||
|
|
||||||
LIB_SYMBOL* symbol = (LIB_SYMBOL*) undoWrapper.GetItem();
|
LIB_SYMBOL* symbol = (LIB_SYMBOL*) undoWrapper.GetItem();
|
||||||
|
UNDO_REDO undoRedoType = undoWrapper.GetStatus();
|
||||||
wxCHECK( symbol, /* void */ );
|
wxCHECK( symbol, /* void */ );
|
||||||
symbol->ClearFlags( UR_TRANSIENT );
|
symbol->ClearFlags( UR_TRANSIENT );
|
||||||
UNDO_REDO undoRedoType = undoWrapper.GetStatus();
|
|
||||||
|
|
||||||
// Store the current symbol in the redo buffer
|
// Store the current symbol in the redo buffer
|
||||||
PICKED_ITEMS_LIST* redoCommand = new PICKED_ITEMS_LIST();
|
PICKED_ITEMS_LIST* redoCommand = new PICKED_ITEMS_LIST();
|
||||||
LIB_SYMBOL* oldSymbol = m_symbol;
|
LIB_SYMBOL* oldSymbol = m_symbol;
|
||||||
|
|
||||||
oldSymbol->SetFlags( UR_TRANSIENT );
|
oldSymbol->SetFlags( UR_TRANSIENT );
|
||||||
ITEM_PICKER redoWrapper( GetScreen(), oldSymbol, undoRedoType );
|
ITEM_PICKER redoWrapper( GetScreen(), oldSymbol, undoRedoType );
|
||||||
redoCommand->PushItem( redoWrapper );
|
redoCommand->PushItem( redoWrapper );
|
||||||
|
redoCommand->SetDescription( description );
|
||||||
PushCommandToRedoList( redoCommand );
|
PushCommandToRedoList( redoCommand );
|
||||||
|
|
||||||
// Do not delete the previous symbol by calling SetCurSymbol( symbol ),
|
// Do not delete the previous symbol by calling SetCurSymbol( symbol ),
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include <sch_sheet_path.h>
|
#include <sch_sheet_path.h>
|
||||||
#include <sch_label.h>
|
#include <sch_label.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <string_utils.h>
|
#include <string_utils.h>
|
||||||
#include <kiface_base.h>
|
#include <kiface_base.h>
|
||||||
#include <wildcards_and_files_ext.h>
|
#include <wildcards_and_files_ext.h>
|
||||||
|
@ -335,7 +335,7 @@ void BACK_ANNOTATE::checkForUnusedSymbols()
|
||||||
|
|
||||||
void BACK_ANNOTATE::applyChangelist()
|
void BACK_ANNOTATE::applyChangelist()
|
||||||
{
|
{
|
||||||
SCHEMATIC_COMMIT commit( m_frame );
|
SCH_COMMIT commit( m_frame );
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
|
||||||
// Apply changes from change list
|
// Apply changes from change list
|
||||||
|
@ -557,8 +557,8 @@ void addConnections( SCH_ITEM* aItem, const SCH_SHEET_PATH& aSheetPath,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void BACK_ANNOTATE::processNetNameChange( SCHEMATIC_COMMIT* aCommit, const wxString& aRef,
|
void BACK_ANNOTATE::processNetNameChange( SCH_COMMIT* aCommit, const wxString& aRef, SCH_PIN* aPin,
|
||||||
SCH_PIN* aPin, const SCH_CONNECTION* aConnection,
|
const SCH_CONNECTION* aConnection,
|
||||||
const wxString& aOldName, const wxString& aNewName )
|
const wxString& aOldName, const wxString& aNewName )
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
class REPORTER;
|
class REPORTER;
|
||||||
class SCH_SHEET_LIST;
|
class SCH_SHEET_LIST;
|
||||||
class SCH_EDIT_FRAME;
|
class SCH_EDIT_FRAME;
|
||||||
class SCHEMATIC_COMMIT;
|
class SCH_COMMIT;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Back annotation algorithm class used to receive, check, and apply a \ref NETLIST from
|
* Back annotation algorithm class used to receive, check, and apply a \ref NETLIST from
|
||||||
|
@ -131,7 +131,7 @@ private:
|
||||||
*/
|
*/
|
||||||
void applyChangelist();
|
void applyChangelist();
|
||||||
|
|
||||||
void processNetNameChange( SCHEMATIC_COMMIT* aCommit, const wxString& aRef, SCH_PIN* aPin,
|
void processNetNameChange( SCH_COMMIT* aCommit, const wxString& aRef, SCH_PIN* aPin,
|
||||||
const SCH_CONNECTION* aConnection, const wxString& aOldName,
|
const SCH_CONNECTION* aConnection, const wxString& aOldName,
|
||||||
const wxString& aNewName );
|
const wxString& aNewName );
|
||||||
|
|
||||||
|
|
|
@ -155,7 +155,7 @@ protected:
|
||||||
SYMBOL_EDIT_FRAME* editFrame = dynamic_cast<SYMBOL_EDIT_FRAME*>( m_frame );
|
SYMBOL_EDIT_FRAME* editFrame = dynamic_cast<SYMBOL_EDIT_FRAME*>( m_frame );
|
||||||
wxCHECK_RET( editFrame, wxT( "editFrame is null" ) );
|
wxCHECK_RET( editFrame, wxT( "editFrame is null" ) );
|
||||||
|
|
||||||
editFrame->SaveCopyInUndoList( static_cast<LIB_ITEM*>( aItem ), aType, aAppend );
|
editFrame->SaveCopyInUndoList( wxEmptyString, static_cast<LIB_ITEM*>( aItem ) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
#include <sch_sheet_pin.h>
|
#include <sch_sheet_pin.h>
|
||||||
#include <sch_bitmap.h>
|
#include <sch_bitmap.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <symbol_library_common.h>
|
#include <symbol_library_common.h>
|
||||||
#include <eeschema_settings.h>
|
#include <eeschema_settings.h>
|
||||||
#include <dialogs/dialog_label_properties.h>
|
#include <dialogs/dialog_label_properties.h>
|
||||||
|
@ -111,7 +111,7 @@ int SCH_DRAWING_TOOLS::PlaceSymbol( const TOOL_EVENT& aEvent )
|
||||||
std::vector<PICKED_SYMBOL>* historyList = nullptr;
|
std::vector<PICKED_SYMBOL>* historyList = nullptr;
|
||||||
bool ignorePrimePosition = false;
|
bool ignorePrimePosition = false;
|
||||||
COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
|
COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
EE_GRID_HELPER grid( m_toolMgr );
|
EE_GRID_HELPER grid( m_toolMgr );
|
||||||
|
|
||||||
if( m_inPlaceSymbol )
|
if( m_inPlaceSymbol )
|
||||||
|
@ -149,7 +149,7 @@ int SCH_DRAWING_TOOLS::PlaceSymbol( const TOOL_EVENT& aEvent )
|
||||||
m_frame->PushTool( aEvent );
|
m_frame->PushTool( aEvent );
|
||||||
|
|
||||||
auto addSymbol =
|
auto addSymbol =
|
||||||
[this]( SCHEMATIC_COMMIT* aCommit, SCH_SYMBOL* aSymbol )
|
[this]( SCH_COMMIT* aCommit, SCH_SYMBOL* aSymbol )
|
||||||
{
|
{
|
||||||
m_frame->SaveCopyForRepeatItem( aSymbol );
|
m_frame->SaveCopyForRepeatItem( aSymbol );
|
||||||
|
|
||||||
|
@ -643,7 +643,7 @@ int SCH_DRAWING_TOOLS::PlaceImage( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
m_frame->AddItemToCommitAndScreen( &commit, m_frame->GetScreen(), image );
|
m_frame->AddItemToCommitAndScreen( &commit, m_frame->GetScreen(), image );
|
||||||
commit.Push( _( "Add Image" ) );
|
commit.Push( _( "Add Image" ) );
|
||||||
|
|
||||||
|
@ -833,7 +833,7 @@ int SCH_DRAWING_TOOLS::SingleClickPlace( const TOOL_EVENT& aEvent )
|
||||||
newItem->SetPosition( cursorPos );
|
newItem->SetPosition( cursorPos );
|
||||||
newItem->SetFlags( IS_NEW );
|
newItem->SetFlags( IS_NEW );
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
m_frame->AddItemToCommitAndScreen( &commit, m_frame->GetScreen(), newItem );
|
m_frame->AddItemToCommitAndScreen( &commit, m_frame->GetScreen(), newItem );
|
||||||
|
|
||||||
if( type == SCH_JUNCTION_T )
|
if( type == SCH_JUNCTION_T )
|
||||||
|
@ -1439,7 +1439,7 @@ int SCH_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
item->ClearFlags( IS_MOVING );
|
item->ClearFlags( IS_MOVING );
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
m_frame->AddItemToCommitAndScreen( &commit, m_frame->GetScreen(), item );
|
m_frame->AddItemToCommitAndScreen( &commit, m_frame->GetScreen(), item );
|
||||||
commit.Push( description );
|
commit.Push( description );
|
||||||
|
|
||||||
|
@ -1688,7 +1688,7 @@ int SCH_DRAWING_TOOLS::DrawShape( const TOOL_EVENT& aEvent )
|
||||||
m_lastFillColor = item->GetFillColor();
|
m_lastFillColor = item->GetFillColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
commit.Added( item, m_frame->GetScreen() );
|
commit.Added( item, m_frame->GetScreen() );
|
||||||
commit.Push( wxString::Format( _( "Draw %s" ), item->GetClass() ) );
|
commit.Push( wxString::Format( _( "Draw %s" ), item->GetClass() ) );
|
||||||
|
|
||||||
|
@ -1880,7 +1880,7 @@ int SCH_DRAWING_TOOLS::DrawSheet( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
sheet->AutoplaceFields( /* aScreen */ nullptr, /* aManual */ false );
|
sheet->AutoplaceFields( /* aScreen */ nullptr, /* aManual */ false );
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
m_frame->AddItemToCommitAndScreen( &commit, m_frame->GetScreen(), sheet );
|
m_frame->AddItemToCommitAndScreen( &commit, m_frame->GetScreen(), sheet );
|
||||||
commit.Push( "Draw Sheet" );
|
commit.Push( "Draw Sheet" );
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
#include <sch_junction.h>
|
#include <sch_junction.h>
|
||||||
#include <sch_edit_frame.h>
|
#include <sch_edit_frame.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <drawing_sheet/ds_proxy_view_item.h>
|
#include <drawing_sheet/ds_proxy_view_item.h>
|
||||||
#include <eeschema_id.h>
|
#include <eeschema_id.h>
|
||||||
#include <dialogs/dialog_change_symbols.h>
|
#include <dialogs/dialog_change_symbols.h>
|
||||||
|
@ -675,11 +675,11 @@ int SCH_EDIT_TOOL::Rotate( const TOOL_EVENT& aEvent )
|
||||||
int principalItemCount = 0; // User-selected items (as opposed to connected wires)
|
int principalItemCount = 0; // User-selected items (as opposed to connected wires)
|
||||||
VECTOR2I rotPoint;
|
VECTOR2I rotPoint;
|
||||||
bool moving = false;
|
bool moving = false;
|
||||||
SCHEMATIC_COMMIT localInstance( m_toolMgr );
|
SCH_COMMIT localCommit( m_toolMgr );
|
||||||
SCHEMATIC_COMMIT* commit = aEvent.Parameter<SCHEMATIC_COMMIT*>();
|
SCH_COMMIT* commit = aEvent.Parameter<SCH_COMMIT*>();
|
||||||
|
|
||||||
if( !commit )
|
if( !commit )
|
||||||
commit = &localInstance;
|
commit = &localCommit;
|
||||||
|
|
||||||
for( unsigned ii = 0; ii < selection.GetSize(); ii++ )
|
for( unsigned ii = 0; ii < selection.GetSize(); ii++ )
|
||||||
{
|
{
|
||||||
|
@ -927,8 +927,8 @@ int SCH_EDIT_TOOL::Rotate( const TOOL_EVENT& aEvent )
|
||||||
m_frame->SchematicCleanUp( commit );
|
m_frame->SchematicCleanUp( commit );
|
||||||
m_frame->TestDanglingEnds();
|
m_frame->TestDanglingEnds();
|
||||||
|
|
||||||
if( !localInstance.Empty() )
|
if( !localCommit.Empty() )
|
||||||
localInstance.Push( _( "Rotate" ) );
|
localCommit.Push( _( "Rotate" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -946,11 +946,11 @@ int SCH_EDIT_TOOL::Mirror( const TOOL_EVENT& aEvent )
|
||||||
SCH_ITEM* item = static_cast<SCH_ITEM*>( selection.Front() );
|
SCH_ITEM* item = static_cast<SCH_ITEM*>( selection.Front() );
|
||||||
bool connections = false;
|
bool connections = false;
|
||||||
bool moving = item->IsMoving();
|
bool moving = item->IsMoving();
|
||||||
SCHEMATIC_COMMIT localInstance( m_toolMgr );
|
SCH_COMMIT localCommit( m_toolMgr );
|
||||||
SCHEMATIC_COMMIT* commit = aEvent.Parameter<SCHEMATIC_COMMIT*>();
|
SCH_COMMIT* commit = aEvent.Parameter<SCH_COMMIT*>();
|
||||||
|
|
||||||
if( !commit )
|
if( !commit )
|
||||||
commit = &localInstance;
|
commit = &localCommit;
|
||||||
|
|
||||||
if( selection.GetSize() == 1 )
|
if( selection.GetSize() == 1 )
|
||||||
{
|
{
|
||||||
|
@ -1128,8 +1128,8 @@ int SCH_EDIT_TOOL::Mirror( const TOOL_EVENT& aEvent )
|
||||||
m_frame->TestDanglingEnds();
|
m_frame->TestDanglingEnds();
|
||||||
}
|
}
|
||||||
|
|
||||||
if( !localInstance.Empty() )
|
if( !localCommit.Empty() )
|
||||||
localInstance.Push( _( "Mirror" ) );
|
localCommit.Push( _( "Mirror" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1247,7 +1247,7 @@ int SCH_EDIT_TOOL::RepeatDrawItem( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
EE_SELECTION newItems;
|
EE_SELECTION newItems;
|
||||||
|
|
||||||
for( const std::unique_ptr<SCH_ITEM>& item : sourceItems )
|
for( const std::unique_ptr<SCH_ITEM>& item : sourceItems )
|
||||||
|
@ -1362,7 +1362,7 @@ int SCH_EDIT_TOOL::DoDelete( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
SCH_SCREEN* screen = m_frame->GetScreen();
|
SCH_SCREEN* screen = m_frame->GetScreen();
|
||||||
std::deque<EDA_ITEM*> items = m_selectionTool->RequestSelection( deletableItems ).GetItems();
|
std::deque<EDA_ITEM*> items = m_selectionTool->RequestSelection( deletableItems ).GetItems();
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
std::vector<VECTOR2I> pts;
|
std::vector<VECTOR2I> pts;
|
||||||
|
|
||||||
if( items.empty() )
|
if( items.empty() )
|
||||||
|
@ -1517,7 +1517,7 @@ int SCH_EDIT_TOOL::DeleteItemCursor( const TOOL_EVENT& aEvent )
|
||||||
void SCH_EDIT_TOOL::editFieldText( SCH_FIELD* aField )
|
void SCH_EDIT_TOOL::editFieldText( SCH_FIELD* aField )
|
||||||
{
|
{
|
||||||
KICAD_T parentType = aField->GetParent() ? aField->GetParent()->Type() : SCHEMATIC_T;
|
KICAD_T parentType = aField->GetParent() ? aField->GetParent()->Type() : SCHEMATIC_T;
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
// Save old symbol in undo list if not already in edit, or moving.
|
// Save old symbol in undo list if not already in edit, or moving.
|
||||||
if( aField->GetEditFlags() == 0 ) // i.e. not edited, or moved
|
if( aField->GetEditFlags() == 0 ) // i.e. not edited, or moved
|
||||||
|
@ -1610,7 +1610,7 @@ int SCH_EDIT_TOOL::EditField( const TOOL_EVENT& aEvent )
|
||||||
int SCH_EDIT_TOOL::AutoplaceFields( const TOOL_EVENT& aEvent )
|
int SCH_EDIT_TOOL::AutoplaceFields( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
EE_SELECTION& selection = m_selectionTool->RequestSelection( RotatableItems );
|
EE_SELECTION& selection = m_selectionTool->RequestSelection( RotatableItems );
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
SCH_ITEM* head = static_cast<SCH_ITEM*>( selection.Front() );
|
SCH_ITEM* head = static_cast<SCH_ITEM*>( selection.Front() );
|
||||||
bool moving = head && head->IsMoving();
|
bool moving = head && head->IsMoving();
|
||||||
|
|
||||||
|
@ -2340,7 +2340,7 @@ int SCH_EDIT_TOOL::ChangeTextType( const TOOL_EVENT& aEvent )
|
||||||
if( selected )
|
if( selected )
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::removeItemFromSel, true, item );
|
m_toolMgr->RunAction( EE_ACTIONS::removeItemFromSel, true, item );
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
if( !item->IsNew() )
|
if( !item->IsNew() )
|
||||||
{
|
{
|
||||||
|
@ -2386,9 +2386,8 @@ int SCH_EDIT_TOOL::BreakWire( const TOOL_EVENT& aEvent )
|
||||||
bool isSlice = aEvent.Matches( EE_ACTIONS::slice.MakeEvent() );
|
bool isSlice = aEvent.Matches( EE_ACTIONS::slice.MakeEvent() );
|
||||||
VECTOR2I cursorPos = getViewControls()->GetCursorPosition( !aEvent.DisableGridSnapping() );
|
VECTOR2I cursorPos = getViewControls()->GetCursorPosition( !aEvent.DisableGridSnapping() );
|
||||||
EE_SELECTION& selection = m_selectionTool->RequestSelection( { SCH_LINE_T } );
|
EE_SELECTION& selection = m_selectionTool->RequestSelection( { SCH_LINE_T } );
|
||||||
|
|
||||||
SCH_SCREEN* screen = m_frame->GetScreen();
|
SCH_SCREEN* screen = m_frame->GetScreen();
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
std::vector<SCH_LINE*> lines;
|
std::vector<SCH_LINE*> lines;
|
||||||
|
|
||||||
for( EDA_ITEM* item : selection )
|
for( EDA_ITEM* item : selection )
|
||||||
|
@ -2555,7 +2554,7 @@ int SCH_EDIT_TOOL::DdAppendFile( const TOOL_EVENT& aEvent )
|
||||||
int SCH_EDIT_TOOL::SetAttribute( const TOOL_EVENT& aEvent )
|
int SCH_EDIT_TOOL::SetAttribute( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
EE_SELECTION& selection = m_selectionTool->RequestSelection( { SCH_SYMBOL_T } );
|
EE_SELECTION& selection = m_selectionTool->RequestSelection( { SCH_SYMBOL_T } );
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
if( selection.Empty() )
|
if( selection.Empty() )
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2588,7 +2587,7 @@ int SCH_EDIT_TOOL::SetAttribute( const TOOL_EVENT& aEvent )
|
||||||
int SCH_EDIT_TOOL::UnsetAttribute( const TOOL_EVENT& aEvent )
|
int SCH_EDIT_TOOL::UnsetAttribute( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
EE_SELECTION& selection = m_selectionTool->RequestSelection( { SCH_SYMBOL_T } );
|
EE_SELECTION& selection = m_selectionTool->RequestSelection( { SCH_SYMBOL_T } );
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
if( selection.Empty() )
|
if( selection.Empty() )
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2621,7 +2620,7 @@ int SCH_EDIT_TOOL::UnsetAttribute( const TOOL_EVENT& aEvent )
|
||||||
int SCH_EDIT_TOOL::ToggleAttribute( const TOOL_EVENT& aEvent )
|
int SCH_EDIT_TOOL::ToggleAttribute( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
EE_SELECTION& selection = m_selectionTool->RequestSelection( { SCH_SYMBOL_T } );
|
EE_SELECTION& selection = m_selectionTool->RequestSelection( { SCH_SYMBOL_T } );
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
if( selection.Empty() )
|
if( selection.Empty() )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
#include <sch_sheet_pin.h>
|
#include <sch_sheet_pin.h>
|
||||||
#include <sch_view.h>
|
#include <sch_view.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <sim/simulator_frame.h>
|
#include <sim/simulator_frame.h>
|
||||||
#include <sim/spice_generator.h>
|
#include <sim/spice_generator.h>
|
||||||
#include <sim/sim_lib_mgr.h>
|
#include <sim/sim_lib_mgr.h>
|
||||||
|
@ -1527,7 +1527,7 @@ int SCH_EDITOR_CONTROL::Paste( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
// SCH_SEXP_PLUGIN added the items to the paste screen, but not to the view or anything
|
// SCH_SEXP_PLUGIN added the items to the paste screen, but not to the view or anything
|
||||||
// else. Pull them back out to start with.
|
// else. Pull them back out to start with.
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
EDA_ITEMS loadedItems;
|
EDA_ITEMS loadedItems;
|
||||||
bool sheetsPasted = false;
|
bool sheetsPasted = false;
|
||||||
SCH_SHEET_LIST hierarchy = m_frame->Schematic().GetSheets();
|
SCH_SHEET_LIST hierarchy = m_frame->Schematic().GetSheets();
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
#include <sch_sheet.h>
|
#include <sch_sheet.h>
|
||||||
#include <sch_sheet_pin.h>
|
#include <sch_sheet_pin.h>
|
||||||
#include <schematic.h>
|
#include <schematic.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <ee_actions.h>
|
#include <ee_actions.h>
|
||||||
#include <ee_grid_helper.h>
|
#include <ee_grid_helper.h>
|
||||||
#include <ee_selection.h>
|
#include <ee_selection.h>
|
||||||
|
@ -1121,7 +1121,7 @@ void SCH_LINE_WIRE_BUS_TOOL::finishSegments()
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||||
|
|
||||||
SCH_SCREEN* screen = m_frame->GetScreen();
|
SCH_SCREEN* screen = m_frame->GetScreen();
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
// Remove segments backtracking over others
|
// Remove segments backtracking over others
|
||||||
simplifyWireList();
|
simplifyWireList();
|
||||||
|
@ -1227,8 +1227,7 @@ void SCH_LINE_WIRE_BUS_TOOL::finishSegments()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SCH_LINE_WIRE_BUS_TOOL::TrimOverLappingWires( SCHEMATIC_COMMIT* aCommit,
|
int SCH_LINE_WIRE_BUS_TOOL::TrimOverLappingWires( SCH_COMMIT* aCommit, EE_SELECTION* aSelection )
|
||||||
EE_SELECTION* aSelection )
|
|
||||||
{
|
{
|
||||||
SCHEMATIC* sch = getModel<SCHEMATIC>();
|
SCHEMATIC* sch = getModel<SCHEMATIC>();
|
||||||
SCH_SCREEN* screen = sch->CurrentSheet().LastScreen();
|
SCH_SCREEN* screen = sch->CurrentSheet().LastScreen();
|
||||||
|
@ -1272,8 +1271,7 @@ int SCH_LINE_WIRE_BUS_TOOL::TrimOverLappingWires( SCHEMATIC_COMMIT* aCommit,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int SCH_LINE_WIRE_BUS_TOOL::AddJunctionsIfNeeded( SCHEMATIC_COMMIT* aCommit,
|
int SCH_LINE_WIRE_BUS_TOOL::AddJunctionsIfNeeded( SCH_COMMIT* aCommit, EE_SELECTION* aSelection )
|
||||||
EE_SELECTION* aSelection )
|
|
||||||
{
|
{
|
||||||
SCH_SCREEN* screen = m_frame->GetScreen();
|
SCH_SCREEN* screen = m_frame->GetScreen();
|
||||||
|
|
||||||
|
|
|
@ -92,12 +92,12 @@ public:
|
||||||
/**
|
/**
|
||||||
* Handle the addition of junctions to a selection of objects
|
* Handle the addition of junctions to a selection of objects
|
||||||
*/
|
*/
|
||||||
int AddJunctionsIfNeeded( SCHEMATIC_COMMIT* aCommit, EE_SELECTION* aSelection );
|
int AddJunctionsIfNeeded( SCH_COMMIT* aCommit, EE_SELECTION* aSelection );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logic to remove wires when overlapping correct items
|
* Logic to remove wires when overlapping correct items
|
||||||
*/
|
*/
|
||||||
int TrimOverLappingWires( SCHEMATIC_COMMIT* aCommit, EE_SELECTION* aSelection );
|
int TrimOverLappingWires( SCH_COMMIT* aCommit, EE_SELECTION* aSelection );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int doDrawSegments( const TOOL_EVENT& aTool, int aType, bool aQuitOnDraw );
|
int doDrawSegments( const TOOL_EVENT& aTool, int aType, bool aQuitOnDraw );
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include <tools/ee_selection_tool.h>
|
#include <tools/ee_selection_tool.h>
|
||||||
#include <tools/sch_line_wire_bus_tool.h>
|
#include <tools/sch_line_wire_bus_tool.h>
|
||||||
#include <ee_actions.h>
|
#include <ee_actions.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <eda_item.h>
|
#include <eda_item.h>
|
||||||
#include <sch_item.h>
|
#include <sch_item.h>
|
||||||
#include <sch_symbol.h>
|
#include <sch_symbol.h>
|
||||||
|
@ -87,8 +87,8 @@ bool SCH_MOVE_TOOL::Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_MOVE_TOOL::orthoLineDrag( SCH_LINE* line, const VECTOR2I& splitDelta, int& xBendCount,
|
void SCH_MOVE_TOOL::orthoLineDrag( SCH_COMMIT* aCommit, SCH_LINE* line, const VECTOR2I& splitDelta,
|
||||||
int& yBendCount, const EE_GRID_HELPER& grid )
|
int& xBendCount, int& yBendCount, const EE_GRID_HELPER& grid )
|
||||||
{
|
{
|
||||||
// If the move is not the same angle as this move, then we need to do something special with
|
// If the move is not the same angle as this move, then we need to do something special with
|
||||||
// the unselected end to maintain orthogonality. Either drag some connected line that is the
|
// the unselected end to maintain orthogonality. Either drag some connected line that is the
|
||||||
|
@ -197,7 +197,7 @@ void SCH_MOVE_TOOL::orthoLineDrag( SCH_LINE* line, const VECTOR2I& splitDelta, i
|
||||||
|
|
||||||
if( !foundLine->HasFlag( IS_CHANGED ) && !foundLine->HasFlag( IS_NEW ) )
|
if( !foundLine->HasFlag( IS_CHANGED ) && !foundLine->HasFlag( IS_NEW ) )
|
||||||
{
|
{
|
||||||
saveCopyInUndoList( (SCH_ITEM*) foundLine, UNDO_REDO::CHANGED, true );
|
aCommit->Modify( (SCH_ITEM*) foundLine, m_frame->GetScreen() );
|
||||||
|
|
||||||
if( !foundLine->IsSelected() )
|
if( !foundLine->IsSelected() )
|
||||||
m_changedDragLines.insert( foundLine );
|
m_changedDragLines.insert( foundLine );
|
||||||
|
@ -360,11 +360,11 @@ int SCH_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
EE_GRID_HELPER grid( m_toolMgr );
|
EE_GRID_HELPER grid( m_toolMgr );
|
||||||
bool wasDragging = m_moveInProgress && m_isDrag;
|
bool wasDragging = m_moveInProgress && m_isDrag;
|
||||||
bool isSlice = false;
|
bool isSlice = false;
|
||||||
SCHEMATIC_COMMIT localInstance( m_toolMgr );
|
SCH_COMMIT localCommit( m_toolMgr );
|
||||||
SCHEMATIC_COMMIT* commit = aEvent.Parameter<SCHEMATIC_COMMIT*>();
|
SCH_COMMIT* commit = aEvent.Parameter<SCH_COMMIT*>();
|
||||||
|
|
||||||
if( !commit )
|
if( !commit )
|
||||||
commit = &localInstance;
|
commit = &localCommit;
|
||||||
|
|
||||||
m_anchorPos.reset();
|
m_anchorPos.reset();
|
||||||
|
|
||||||
|
@ -375,7 +375,7 @@ int SCH_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
else if( aEvent.IsAction( &EE_ACTIONS::drag ) )
|
else if( aEvent.IsAction( &EE_ACTIONS::drag ) )
|
||||||
{
|
{
|
||||||
m_isDrag = true;
|
m_isDrag = true;
|
||||||
isSlice = commit != &localInstance;
|
isSlice = commit != &localCommit;
|
||||||
}
|
}
|
||||||
else if( aEvent.IsAction( &EE_ACTIONS::moveActivate ) )
|
else if( aEvent.IsAction( &EE_ACTIONS::moveActivate ) )
|
||||||
{
|
{
|
||||||
|
@ -752,7 +752,7 @@ int SCH_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
&& line
|
&& line
|
||||||
&& line->HasFlag( STARTPOINT ) != line->HasFlag( ENDPOINT ) )
|
&& line->HasFlag( STARTPOINT ) != line->HasFlag( ENDPOINT ) )
|
||||||
{
|
{
|
||||||
orthoLineDrag( line, splitDelta, xBendCount, yBendCount, grid );
|
orthoLineDrag( commit, line, splitDelta, xBendCount, yBendCount, grid );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move all other items normally, including the selected end of partially
|
// Move all other items normally, including the selected end of partially
|
||||||
|
@ -970,7 +970,7 @@ int SCH_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
m_frame->SchematicCleanUp( commit );
|
m_frame->SchematicCleanUp( commit );
|
||||||
|
|
||||||
if( commit == &localInstance )
|
if( commit == &localCommit )
|
||||||
commit->Push( m_isDrag ? _( "Drag" ) : _( "Move" ) );
|
commit->Push( m_isDrag ? _( "Drag" ) : _( "Move" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -996,7 +996,7 @@ int SCH_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_MOVE_TOOL::trimDanglingLines( SCHEMATIC_COMMIT* aCommit )
|
void SCH_MOVE_TOOL::trimDanglingLines( SCH_COMMIT* aCommit )
|
||||||
{
|
{
|
||||||
// Need a local cleanup first to ensure we remove unneeded junctions
|
// Need a local cleanup first to ensure we remove unneeded junctions
|
||||||
m_frame->SchematicCleanUp( aCommit, m_frame->GetScreen() );
|
m_frame->SchematicCleanUp( aCommit, m_frame->GetScreen() );
|
||||||
|
@ -1160,7 +1160,7 @@ void SCH_MOVE_TOOL::getConnectedItems( SCH_ITEM* aOriginalItem, const VECTOR2I&
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_MOVE_TOOL::getConnectedDragItems( SCHEMATIC_COMMIT* aCommit, SCH_ITEM* aSelectedItem,
|
void SCH_MOVE_TOOL::getConnectedDragItems( SCH_COMMIT* aCommit, SCH_ITEM* aSelectedItem,
|
||||||
const VECTOR2I& aPoint, EDA_ITEMS& aList )
|
const VECTOR2I& aPoint, EDA_ITEMS& aList )
|
||||||
{
|
{
|
||||||
EE_RTREE& items = m_frame->GetScreen()->Items();
|
EE_RTREE& items = m_frame->GetScreen()->Items();
|
||||||
|
@ -1169,8 +1169,8 @@ void SCH_MOVE_TOOL::getConnectedDragItems( SCHEMATIC_COMMIT* aCommit, SCH_ITEM*
|
||||||
bool ptHasUnselectedJunction = false;
|
bool ptHasUnselectedJunction = false;
|
||||||
|
|
||||||
auto makeNewWire =
|
auto makeNewWire =
|
||||||
[this]( SCHEMATIC_COMMIT* commit, SCH_ITEM* fixed, SCH_ITEM* selected,
|
[this]( SCH_COMMIT* commit, SCH_ITEM* fixed, SCH_ITEM* selected, const VECTOR2I& start,
|
||||||
const VECTOR2I& start, const VECTOR2I& end )
|
const VECTOR2I& end )
|
||||||
{
|
{
|
||||||
SCH_LINE* newWire;
|
SCH_LINE* newWire;
|
||||||
|
|
||||||
|
@ -1198,7 +1198,7 @@ void SCH_MOVE_TOOL::getConnectedDragItems( SCHEMATIC_COMMIT* aCommit, SCH_ITEM*
|
||||||
};
|
};
|
||||||
|
|
||||||
auto makeNewJunction =
|
auto makeNewJunction =
|
||||||
[this]( SCHEMATIC_COMMIT* commit, SCH_LINE* line, const VECTOR2I& pt )
|
[this]( SCH_COMMIT* commit, SCH_LINE* line, const VECTOR2I& pt )
|
||||||
{
|
{
|
||||||
SCH_JUNCTION* junction = new SCH_JUNCTION( pt );
|
SCH_JUNCTION* junction = new SCH_JUNCTION( pt );
|
||||||
junction->SetFlags( IS_NEW );
|
junction->SetFlags( IS_NEW );
|
||||||
|
@ -1594,7 +1594,7 @@ int SCH_MOVE_TOOL::AlignElements( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
EE_GRID_HELPER grid( m_toolMgr);
|
EE_GRID_HELPER grid( m_toolMgr);
|
||||||
EE_SELECTION& selection = m_selectionTool->RequestSelection( EE_COLLECTOR::MovableItems );
|
EE_SELECTION& selection = m_selectionTool->RequestSelection( EE_COLLECTOR::MovableItems );
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
auto doMoveItem =
|
auto doMoveItem =
|
||||||
[&]( EDA_ITEM* item, const VECTOR2I& delta )
|
[&]( EDA_ITEM* item, const VECTOR2I& delta )
|
||||||
|
|
|
@ -69,11 +69,11 @@ private:
|
||||||
///< Connected items with no wire are included (as there is no wire to adjust for the drag).
|
///< Connected items with no wire are included (as there is no wire to adjust for the drag).
|
||||||
///< Connected wires are included with any un-connected ends flagged (STARTPOINT or ENDPOINT).
|
///< Connected wires are included with any un-connected ends flagged (STARTPOINT or ENDPOINT).
|
||||||
void getConnectedItems( SCH_ITEM* aOriginalItem, const VECTOR2I& aPoint, EDA_ITEMS& aList );
|
void getConnectedItems( SCH_ITEM* aOriginalItem, const VECTOR2I& aPoint, EDA_ITEMS& aList );
|
||||||
void getConnectedDragItems( SCHEMATIC_COMMIT* aCommit, SCH_ITEM* fixed,
|
void getConnectedDragItems( SCH_COMMIT* aCommit, SCH_ITEM* fixed, const VECTOR2I& selected,
|
||||||
const VECTOR2I& selected, EDA_ITEMS& aList );
|
EDA_ITEMS& aList );
|
||||||
|
|
||||||
void orthoLineDrag( SCH_LINE* line, const VECTOR2I& splitDelta, int& xBendCount,
|
void orthoLineDrag( SCH_COMMIT* aCommit, SCH_LINE* line, const VECTOR2I& splitDelta,
|
||||||
int& yBendCount, const EE_GRID_HELPER& grid );
|
int& xBendCount, int& yBendCount, const EE_GRID_HELPER& grid );
|
||||||
|
|
||||||
///< Clears the new drag lines and removes them from the screen
|
///< Clears the new drag lines and removes them from the screen
|
||||||
void clearNewDragLines();
|
void clearNewDragLines();
|
||||||
|
@ -82,7 +82,7 @@ private:
|
||||||
void setTransitions() override;
|
void setTransitions() override;
|
||||||
|
|
||||||
///< Cleanup dangling lines left after a drag
|
///< Cleanup dangling lines left after a drag
|
||||||
void trimDanglingLines( SCHEMATIC_COMMIT* aCommit );
|
void trimDanglingLines( SCH_COMMIT* aCommit );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
///< Re-entrancy guard
|
///< Re-entrancy guard
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
#include <ee_actions.h>
|
#include <ee_actions.h>
|
||||||
#include <symbol_edit_frame.h>
|
#include <symbol_edit_frame.h>
|
||||||
|
#include <sch_commit.h>
|
||||||
#include <tools/symbol_editor_drawing_tools.h>
|
#include <tools/symbol_editor_drawing_tools.h>
|
||||||
#include <tools/symbol_editor_pin_tool.h>
|
#include <tools/symbol_editor_pin_tool.h>
|
||||||
#include <tools/ee_grid_helper.h>
|
#include <tools/ee_grid_helper.h>
|
||||||
|
@ -92,6 +93,7 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
|
||||||
LIB_ITEM* item = nullptr;
|
LIB_ITEM* item = nullptr;
|
||||||
bool isText = aEvent.IsAction( &EE_ACTIONS::placeSymbolText );
|
bool isText = aEvent.IsAction( &EE_ACTIONS::placeSymbolText );
|
||||||
COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
|
COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
|
||||||
|
wxString description;
|
||||||
|
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||||
|
|
||||||
|
@ -209,6 +211,7 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
item = pinTool->CreatePin( VECTOR2I( cursorPos.x, -cursorPos.y ), symbol );
|
item = pinTool->CreatePin( VECTOR2I( cursorPos.x, -cursorPos.y ), symbol );
|
||||||
g_lastPinWeakPtr = item;
|
g_lastPinWeakPtr = item;
|
||||||
|
description = _( "Add Pin" );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LIB_TEXT_T:
|
case LIB_TEXT_T:
|
||||||
|
@ -233,6 +236,7 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
|
||||||
else
|
else
|
||||||
item = text;
|
item = text;
|
||||||
|
|
||||||
|
description = _( "Add Text" );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -271,7 +275,8 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
|
||||||
// ... and second click places:
|
// ... and second click places:
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_frame->SaveCopyInUndoList( symbol );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
commit.Modify( symbol, m_frame->GetScreen() );
|
||||||
|
|
||||||
switch( item->Type() )
|
switch( item->Type() )
|
||||||
{
|
{
|
||||||
|
@ -289,8 +294,8 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
|
||||||
item = nullptr;
|
item = nullptr;
|
||||||
m_view->ClearPreview();
|
m_view->ClearPreview();
|
||||||
|
|
||||||
|
commit.Push( description );
|
||||||
m_frame->RebuildView();
|
m_frame->RebuildView();
|
||||||
m_frame->OnModify();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( evt->IsClick( BUT_RIGHT ) )
|
else if( evt->IsClick( BUT_RIGHT ) )
|
||||||
|
@ -334,6 +339,7 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape( const TOOL_EVENT& aEvent )
|
||||||
LIB_SYMBOL* symbol = m_frame->GetCurSymbol();
|
LIB_SYMBOL* symbol = m_frame->GetCurSymbol();
|
||||||
LIB_SHAPE* item = nullptr;
|
LIB_SHAPE* item = nullptr;
|
||||||
bool isTextBox = aEvent.IsAction( &EE_ACTIONS::drawSymbolTextBox );
|
bool isTextBox = aEvent.IsAction( &EE_ACTIONS::drawSymbolTextBox );
|
||||||
|
wxString description;
|
||||||
|
|
||||||
if( m_inDrawShape )
|
if( m_inDrawShape )
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -439,10 +445,12 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape( const TOOL_EVENT& aEvent )
|
||||||
textbox->SetHorizJustify( m_lastTextJust );
|
textbox->SetHorizJustify( m_lastTextJust );
|
||||||
|
|
||||||
item = textbox;
|
item = textbox;
|
||||||
|
description = _( "Add Text Box" );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
item = new LIB_SHAPE( symbol, shapeType, lineWidth, m_lastFillStyle );
|
item = new LIB_SHAPE( symbol, shapeType, lineWidth, m_lastFillStyle );
|
||||||
|
description = wxString::Format( _( "Add %s" ), item->EDA_SHAPE::GetFriendlyName() );
|
||||||
}
|
}
|
||||||
|
|
||||||
item->SetStroke( m_lastStroke );
|
item->SetStroke( m_lastStroke );
|
||||||
|
@ -508,12 +516,14 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
m_view->ClearPreview();
|
m_view->ClearPreview();
|
||||||
|
|
||||||
m_frame->SaveCopyInUndoList( symbol );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
commit.Modify( symbol, m_frame->GetScreen() );
|
||||||
|
|
||||||
symbol->AddDrawItem( item );
|
symbol->AddDrawItem( item );
|
||||||
item = nullptr;
|
item = nullptr;
|
||||||
|
|
||||||
|
commit.Push( description );
|
||||||
m_frame->RebuildView();
|
m_frame->RebuildView();
|
||||||
m_frame->OnModify();
|
|
||||||
m_toolMgr->RunAction( ACTIONS::activatePointEditor );
|
m_toolMgr->RunAction( ACTIONS::activatePointEditor );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include <ee_actions.h>
|
#include <ee_actions.h>
|
||||||
#include <string_utils.h>
|
#include <string_utils.h>
|
||||||
#include <symbol_edit_frame.h>
|
#include <symbol_edit_frame.h>
|
||||||
#include <schematic_commit.h>
|
#include <sch_commit.h>
|
||||||
#include <dialogs/dialog_lib_shape_properties.h>
|
#include <dialogs/dialog_lib_shape_properties.h>
|
||||||
#include <dialogs/dialog_lib_text_properties.h>
|
#include <dialogs/dialog_lib_text_properties.h>
|
||||||
#include <dialogs/dialog_lib_textbox_properties.h>
|
#include <dialogs/dialog_lib_textbox_properties.h>
|
||||||
|
@ -157,9 +157,14 @@ int SYMBOL_EDITOR_EDIT_TOOL::Rotate( const TOOL_EVENT& aEvent )
|
||||||
VECTOR2I rotPoint;
|
VECTOR2I rotPoint;
|
||||||
bool ccw = ( aEvent.Matches( EE_ACTIONS::rotateCCW.MakeEvent() ) );
|
bool ccw = ( aEvent.Matches( EE_ACTIONS::rotateCCW.MakeEvent() ) );
|
||||||
LIB_ITEM* item = static_cast<LIB_ITEM*>( selection.Front() );
|
LIB_ITEM* item = static_cast<LIB_ITEM*>( selection.Front() );
|
||||||
|
SCH_COMMIT localCommit( m_toolMgr );
|
||||||
|
SCH_COMMIT* commit = aEvent.Parameter<SCH_COMMIT*>();
|
||||||
|
|
||||||
|
if( !commit )
|
||||||
|
commit = &localCommit;
|
||||||
|
|
||||||
if( !item->IsMoving() )
|
if( !item->IsMoving() )
|
||||||
saveCopyInUndoList( m_frame->GetCurSymbol(), UNDO_REDO::LIBEDIT );
|
commit->Modify( m_frame->GetCurSymbol(), m_frame->GetScreen() );
|
||||||
|
|
||||||
if( selection.GetSize() == 1 )
|
if( selection.GetSize() == 1 )
|
||||||
rotPoint = item->GetPosition();
|
rotPoint = item->GetPosition();
|
||||||
|
@ -184,7 +189,8 @@ int SYMBOL_EDITOR_EDIT_TOOL::Rotate( const TOOL_EVENT& aEvent )
|
||||||
if( selection.IsHover() )
|
if( selection.IsHover() )
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||||
|
|
||||||
m_frame->OnModify();
|
if( !localCommit.Empty() )
|
||||||
|
localCommit.Push( _( "Rotate" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -252,8 +258,9 @@ static std::vector<KICAD_T> nonFields =
|
||||||
|
|
||||||
int SYMBOL_EDITOR_EDIT_TOOL::DoDelete( const TOOL_EVENT& aEvent )
|
int SYMBOL_EDITOR_EDIT_TOOL::DoDelete( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
LIB_SYMBOL *symbol = m_frame->GetCurSymbol();
|
LIB_SYMBOL* symbol = m_frame->GetCurSymbol();
|
||||||
std::deque<EDA_ITEM*> items = m_selectionTool->RequestSelection( nonFields ).GetItems();
|
std::deque<EDA_ITEM*> items = m_selectionTool->RequestSelection( nonFields ).GetItems();
|
||||||
|
SCH_COMMIT commit( m_frame );
|
||||||
|
|
||||||
if( items.empty() )
|
if( items.empty() )
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -261,9 +268,9 @@ int SYMBOL_EDITOR_EDIT_TOOL::DoDelete( const TOOL_EVENT& aEvent )
|
||||||
// Don't leave a freed pointer in the selection
|
// Don't leave a freed pointer in the selection
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||||
|
|
||||||
saveCopyInUndoList( symbol, UNDO_REDO::LIBEDIT );
|
commit.Modify( symbol, m_frame->GetScreen() );
|
||||||
|
|
||||||
std::set<LIB_ITEM *> toDelete;
|
std::set<LIB_ITEM*> toDelete;
|
||||||
|
|
||||||
for( EDA_ITEM* item : items )
|
for( EDA_ITEM* item : items )
|
||||||
{
|
{
|
||||||
|
@ -318,8 +325,9 @@ int SYMBOL_EDITOR_EDIT_TOOL::DoDelete( const TOOL_EVENT& aEvent )
|
||||||
for( LIB_ITEM* item : toDelete )
|
for( LIB_ITEM* item : toDelete )
|
||||||
symbol->RemoveDrawItem( item );
|
symbol->RemoveDrawItem( item );
|
||||||
|
|
||||||
|
commit.Push( _( "Delete" ) );
|
||||||
|
|
||||||
m_frame->RebuildView();
|
m_frame->RebuildView();
|
||||||
m_frame->OnModify();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -780,7 +788,7 @@ int SYMBOL_EDITOR_EDIT_TOOL::Paste( const TOOL_EVENT& aEvent )
|
||||||
if( !newPart )
|
if( !newPart )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
commit.Modify( symbol );
|
commit.Modify( symbol );
|
||||||
m_selectionTool->ClearSelection();
|
m_selectionTool->ClearSelection();
|
||||||
|
@ -825,7 +833,7 @@ int SYMBOL_EDITOR_EDIT_TOOL::Duplicate( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
LIB_SYMBOL* symbol = m_frame->GetCurSymbol();
|
LIB_SYMBOL* symbol = m_frame->GetCurSymbol();
|
||||||
EE_SELECTION& selection = m_selectionTool->RequestSelection( nonFields );
|
EE_SELECTION& selection = m_selectionTool->RequestSelection( nonFields );
|
||||||
SCHEMATIC_COMMIT commit( m_toolMgr );
|
SCH_COMMIT commit( m_toolMgr );
|
||||||
|
|
||||||
if( selection.GetSize() == 0 )
|
if( selection.GetSize() == 0 )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include <tools/ee_selection_tool.h>
|
#include <tools/ee_selection_tool.h>
|
||||||
#include <ee_actions.h>
|
#include <ee_actions.h>
|
||||||
#include <eda_item.h>
|
#include <eda_item.h>
|
||||||
|
#include <sch_commit.h>
|
||||||
#include <wx/log.h>
|
#include <wx/log.h>
|
||||||
#include "symbol_editor_move_tool.h"
|
#include "symbol_editor_move_tool.h"
|
||||||
#include "symbol_editor_pin_tool.h"
|
#include "symbol_editor_pin_tool.h"
|
||||||
|
@ -90,6 +91,11 @@ void SYMBOL_EDITOR_MOVE_TOOL::Reset( RESET_REASON aReason )
|
||||||
int SYMBOL_EDITOR_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
int SYMBOL_EDITOR_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
KIGFX::VIEW_CONTROLS* controls = getViewControls();
|
KIGFX::VIEW_CONTROLS* controls = getViewControls();
|
||||||
|
SCH_COMMIT localCommit( m_toolMgr );
|
||||||
|
SCH_COMMIT* commit = aEvent.Parameter<SCH_COMMIT*>();
|
||||||
|
|
||||||
|
if( !commit )
|
||||||
|
commit = &localCommit;
|
||||||
|
|
||||||
m_anchorPos = { 0, 0 };
|
m_anchorPos = { 0, 0 };
|
||||||
|
|
||||||
|
@ -124,7 +130,7 @@ int SYMBOL_EDITOR_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
VECTOR2I prevPos;
|
VECTOR2I prevPos;
|
||||||
|
|
||||||
if( !selection.Front()->IsNew() )
|
if( !selection.Front()->IsNew() )
|
||||||
saveCopyInUndoList( m_frame->GetCurSymbol(), UNDO_REDO::LIBEDIT );
|
commit->Modify( m_frame->GetCurSymbol(), m_frame->GetScreen() );
|
||||||
|
|
||||||
m_cursor = controls->GetCursorPosition( !aEvent.DisableGridSnapping() );
|
m_cursor = controls->GetCursorPosition( !aEvent.DisableGridSnapping() );
|
||||||
|
|
||||||
|
@ -355,7 +361,7 @@ int SYMBOL_EDITOR_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
|
|
||||||
if( restore_state )
|
if( restore_state )
|
||||||
{
|
{
|
||||||
m_frame->RollbackSymbolFromUndo();
|
commit->Revert();
|
||||||
|
|
||||||
if( unselect )
|
if( unselect )
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||||
|
@ -367,7 +373,8 @@ int SYMBOL_EDITOR_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
if( unselect )
|
if( unselect )
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||||
|
|
||||||
m_frame->OnModify();
|
if( !localCommit.Empty() )
|
||||||
|
localCommit.Push( _( "Move" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
m_moveInProgress = false;
|
m_moveInProgress = false;
|
||||||
|
|
|
@ -22,9 +22,9 @@
|
||||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <tool/tool_manager.h>
|
|
||||||
#include <tools/ee_selection_tool.h>
|
#include <tools/ee_selection_tool.h>
|
||||||
#include <symbol_edit_frame.h>
|
#include <symbol_edit_frame.h>
|
||||||
|
#include <sch_commit.h>
|
||||||
#include <confirm.h>
|
#include <confirm.h>
|
||||||
#include <ee_actions.h>
|
#include <ee_actions.h>
|
||||||
#include <dialogs/dialog_pin_properties.h>
|
#include <dialogs/dialog_pin_properties.h>
|
||||||
|
@ -120,17 +120,13 @@ bool SYMBOL_EDITOR_PIN_TOOL::EditPinProperties( LIB_PIN* aPin )
|
||||||
{
|
{
|
||||||
LIB_PIN original_pin( *aPin );
|
LIB_PIN original_pin( *aPin );
|
||||||
DIALOG_PIN_PROPERTIES dlg( m_frame, aPin );
|
DIALOG_PIN_PROPERTIES dlg( m_frame, aPin );
|
||||||
|
SCH_COMMIT commit( m_frame );
|
||||||
|
|
||||||
if( aPin->GetEditFlags() == 0 )
|
if( aPin->GetEditFlags() == 0 )
|
||||||
m_frame->SaveCopyInUndoList( aPin->GetParent() );
|
commit.Modify( aPin->GetParent() );
|
||||||
|
|
||||||
if( dlg.ShowModal() == wxID_CANCEL )
|
if( dlg.ShowModal() == wxID_CANCEL )
|
||||||
{
|
|
||||||
if( aPin->GetEditFlags() == 0 )
|
|
||||||
m_frame->PopCommandFromUndoList();
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
aPin->SetModified();
|
aPin->SetModified();
|
||||||
|
|
||||||
|
@ -194,8 +190,8 @@ bool SYMBOL_EDITOR_PIN_TOOL::EditPinProperties( LIB_PIN* aPin )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
commit.Push( _( "Edit Pin Properties" ) );
|
||||||
m_frame->UpdateItem( aPin, false, true );
|
m_frame->UpdateItem( aPin, false, true );
|
||||||
m_frame->OnModify( );
|
|
||||||
|
|
||||||
std::vector<MSG_PANEL_ITEM> items;
|
std::vector<MSG_PANEL_ITEM> items;
|
||||||
aPin->GetMsgPanelInfo( m_frame, items );
|
aPin->GetMsgPanelInfo( m_frame, items );
|
||||||
|
|
Loading…
Reference in New Issue