From bbecc4eaa812f3523ba5a01f78c26f1d371fd506 Mon Sep 17 00:00:00 2001 From: Mark Roszko Date: Sun, 7 Sep 2025 09:56:04 -0400 Subject: [PATCH] Add UUID to PCB tables to ensure stable file sort --- pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.cpp | 2 ++ pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.h | 3 ++- pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr_parser.cpp | 6 ++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.cpp b/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.cpp index 8fae01805b..472cab6074 100644 --- a/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.cpp +++ b/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.cpp @@ -2181,6 +2181,8 @@ void PCB_IO_KICAD_SEXPR::format( const PCB_TABLE* aTable ) const m_out->Print( "(table (column_count %d)", aTable->GetColCount() ); + KICAD_FORMAT::FormatUuid( m_out, aTable->m_Uuid ); + if( aTable->IsLocked() ) KICAD_FORMAT::FormatBool( m_out, "locked", true ); diff --git a/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.h b/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.h index 7b782d91b5..b166f878a9 100644 --- a/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.h +++ b/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr.h @@ -190,7 +190,8 @@ class PCB_IO_KICAD_SEXPR; // forward decl //#define SEXPR_BOARD_FILE_VERSION 20250811 // press-fit pad fabr prop support //#define SEXPR_BOARD_FILE_VERSION 20250818 // Support for custom layer counts in footprints //#define SEXPR_BOARD_FILE_VERSION 20250829 // Support Rounded Rectangles -#define SEXPR_BOARD_FILE_VERSION 20250901 // PCB points +//#define SEXPR_BOARD_FILE_VERSION 20250901 // PCB points +#define SEXPR_BOARD_FILE_VERSION 20250907 // uuids for tables #define BOARD_FILE_HOST_VERSION 20200825 ///< Earlier files than this include the host tag #define LEGACY_ARC_FORMATTING 20210925 ///< These were the last to use old arc formatting diff --git a/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr_parser.cpp b/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr_parser.cpp index 2248dee00f..c21611fed7 100644 --- a/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr_parser.cpp +++ b/pcbnew/pcb_io/kicad_sexpr/pcb_io_kicad_sexpr_parser.cpp @@ -3862,6 +3862,12 @@ PCB_TABLE* PCB_IO_KICAD_SEXPR_PARSER::parsePCB_TABLE( BOARD_ITEM* aParent ) NeedRIGHT(); break; + case T_uuid: + NextTok(); + const_cast( table->m_Uuid ) = CurStrToKIID(); + NeedRIGHT(); + break; + case T_locked: table->SetLocked( parseBool() ); NeedRIGHT();