From d016f596f52d1a9bdf7a285fddba2133f72fcc49 Mon Sep 17 00:00:00 2001 From: Alex Shvartzkop Date: Wed, 8 Nov 2023 23:37:38 +0300 Subject: [PATCH] Add CADSTAR_SCH_ARCHIVE_PLUGIN::CanReadLibrary --- .../cadstar/cadstar_sch_archive_plugin.cpp | 30 +++++++++++++++++++ .../cadstar/cadstar_sch_archive_plugin.h | 2 ++ 2 files changed, 32 insertions(+) diff --git a/eeschema/sch_plugins/cadstar/cadstar_sch_archive_plugin.cpp b/eeschema/sch_plugins/cadstar/cadstar_sch_archive_plugin.cpp index 9afcb5ef81..95d152dc63 100644 --- a/eeschema/sch_plugins/cadstar/cadstar_sch_archive_plugin.cpp +++ b/eeschema/sch_plugins/cadstar/cadstar_sch_archive_plugin.cpp @@ -38,6 +38,8 @@ #include #include #include +#include +#include const wxString CADSTAR_SCH_ARCHIVE_PLUGIN::GetName() const @@ -46,6 +48,34 @@ const wxString CADSTAR_SCH_ARCHIVE_PLUGIN::GetName() const } +bool CADSTAR_SCH_ARCHIVE_PLUGIN::CanReadLibrary( const wxString& aFileName ) const +{ + if( !SCH_PLUGIN::CanReadLibrary( aFileName ) ) + return false; + + wxFFileInputStream input( aFileName ); + + if( !input.IsOk() || input.Eof() ) + return false; + + // Find first non-empty line + wxTextInputStream text( input ); + wxString line = text.ReadLine(); + + while( !input.Eof() && line.IsEmpty() ) + line = text.ReadLine().Trim( false /*trim from left*/ ); + + // CADSTAR libs start with + // # FORMAT 32 + // or + // .PartName :2 ;Part 0 Description + if( line.StartsWith( wxS( "#" ) ) || line.StartsWith( wxS( "." ) ) ) + return true; + + return false; +} + + int CADSTAR_SCH_ARCHIVE_PLUGIN::GetModifyHash() const { return 0; diff --git a/eeschema/sch_plugins/cadstar/cadstar_sch_archive_plugin.h b/eeschema/sch_plugins/cadstar/cadstar_sch_archive_plugin.h index b0fb2608ce..09c6ab6d5a 100644 --- a/eeschema/sch_plugins/cadstar/cadstar_sch_archive_plugin.h +++ b/eeschema/sch_plugins/cadstar/cadstar_sch_archive_plugin.h @@ -70,6 +70,8 @@ public: { CadstarPartsLibraryFileExtension } ); } + bool CanReadLibrary( const wxString& aFileName ) const override; + int GetModifyHash() const override; SCH_SHEET* LoadSchematicFile( const wxString& aFileName, SCHEMATIC* aSchematic,