Resource

Resource Basics

Resource Name Delete sidecar XMP file
Resource Version 1.1
Category Metadata
Downloads 859
Release Date 6/26/2023 4:11:20 PM
 

Resource Details

Description This script will remove existing XMP sidecar files from the file system for the selected thumbs. Use with care!
Installation Instructions In the application, right click on a thumbnail and select Run Script from Repository -> Metadata -> Delete sidecar XMP file
Usage Instructions na
Changes in this version na
Special Requirements
 

Author Information

Author Name IDimager Support
 

Script


  procedure DeleteXMPSidecarFor(AImage: TImageItem);
  var
    AXmp: TXMP;
    ASidecar: WideString;
  begin
    ASidecar := WideChangeFileExt(AImage.FileName, '.xmp');
    if WideFileExists(ASidecar) then
      WideDeleteFile(ASidecar);
    ASidecar := AImage.FileName + '.xmp';
    if WideFileExists(ASidecar) then
      WideDeleteFile(ASidecar);
  end;

var
  i: Integer;
  AList: TStringList;
  AImage: TImageItem;
  ASidecar: WideString;
  APro: TxomProgress;
begin
  if Selected.Count = 0 then
  begin
    Say2('No images selected.', 'Select one or more thumbnails and try again.');
    exit;
  end;

  AList := TStringList.Create;
  for i := 0 to Selected.Count - 1 do
  begin
    AImage := Selected.Items[i];

    AGo := False;
    ASidecar := WideChangeFileExt(AImage.FileName, '.xmp');
    if WideFileExists(ASidecar) then
      AList.AddObject(AImage.FileName, AImage)
    else
    begin
      ASidecar := AImage.FileName + '.xmp';
      if WideFileExists(ASidecar) then
        AList.AddObject(AImage.FileName, AImage)
    end;
  end;

  if AList.Count > 0 then
  begin
    if AskYN('There are ' + IntToStr(AList.Count) + ' images found in your selection that have XMP sidecar files.' + CrLf2 +
             'Do you want to delete these XMP files from the file system?' + CrLf2 +
             'WARNING: This cannot be undone.')
    then
    begin
      APro := TxomProgress.Create(nil);
      APro.Caption := 'Delete sidecar XMP file';
      APro.Max := AList.Count;
      for i := 0 to AList.Count - 1 do
      begin
        AImage := AList.Objects[i];

        APro.Pos := i + 1;
        APro.ProgressText := AImage.FileNameOnly;
        if APro.Cancel then
          break;
        DeleteXMPSidecarFor(AImage);
      end;
      APro.Free;
    end;
  end
  else
    Say('No sidecar XMP files found.');

  AList.Free;
end;