Resource

Resource Basics

Resource Name Find Catalog Labels with Overwriting GEO Location
Resource Version 1.0
Category Catalog
Downloads 593
Release Date 11/16/2022 4:39:07 PM
 

Resource Details

Description this script will search for catalog labels that have the "Overwrite pre-existing GEO location" ticked
Installation Instructions download the script
Usage Instructions 1. Start Photo Supreme
2. Select Tools -> Scripter from the upper left hamburger menu
3. Load the downloaded script
4. Run the script
Changes in this version na
Special Requirements
 

Author Information

Author Name IDimager Support
 

Available Attachments

Attachment #1 FindGPSOverwrite.png
 

Script

{
  this script will search for catalog labels that have the "Overwrite
  Overwrite pre-existing GEO location" ticked

  author: IDimager
  initial date: 2022-11-16
}

var
  AProps: TCatalogItemProps;
  AProp: TCatalogItemProp;
  i: Integer;
  AList: TTntStringList;
  ASl: TTntStringList;
  AResult: Integer;
  ACheck: Boolean;
  ADoAsk: Boolean;
  AHit: Integer;
  AProgress: TxomProgress;
begin
  AProgress := TxomProgress.Create(nil);
  AProgress.Cancel := False;

  AProps := TCatalogItemProps.Create(TCatalogItemProp, '');
  AList := TTntStringList.Create;

  AProgress.Caption := 'Finding GPS catalog labels...';
  AProgress.Show;

  PublicCatalog.EnumAllProps(AProps);

  AProgress.Max := AProps.Count;
  AProgress.Pos := 0;

  for i := 0 to AProps.Count - 1 do
  begin
    AProgress.Pos := i + 1;
    AProgress.ProgressText := IntToStr(MulDiv (i, 100, AProps.Count)) + '%; Found ' + IntToStr(AList.Count) + ' catalog labels';

    AProp := AProps.Items[i];
    if AProp.PropValue = AutoPropValue then    // skip auto-props
      Continue;

    if AProp.GPSGeoTagIfExist then
      AList.AddObject (PublicCatalog.PathNameForProp(AProp, '::', True), AProp);

    // for testing
    //if AList.Count = 100 then
    //  break;

    if AProgress.Cancel then
      break;
  end;

  Progress.Hide;

  ASaved := False;
  ASl := TTntStringList.Create;
  ASl.Add('Save results to file');
  ASl.Add('Show results on-screen');
  ASl.Add('Delete all ' + IntToStr(AList.Count) + ' catalog labels');
  ASl.Add('Cancel');

  ADoAsk := AList.Count > 0;
  if not ADoAsk then
    Say('No results');
  while ADoAsk do
  begin
    ACheck := False;
    AResult := AskCustom ('What would you like to do?', 'There are ' + IntToStr(AList.Count) + ' catalog labels found with "Overwrite pre-existing GEO location".', '', '', ACheck, ASl);

    case AResult of
      0:      // save to file
      begin
        SaveDialog.FileName := WideIncludeTrailingBackslash(WindowsDesktopDir) + 'GPSlabels.txt';
        if SaveDialog.Execute then
        begin
          AList.SaveToFile (SaveDialog.FileName);
          Say ('The results are saved to file ' + SaveDialog.FileName);
          ADoAsk := False;
        end;
      end;
      1:      // show on screen
      begin
        Say (AList.Text);
        ADoAsk := True;
      end;
      2:      // delete empty labels
      begin
        if Ask ('Are you sure you want to permanently delete these ' + IntToStr(AList.Count) + ' catalog labels?') then
        begin
          AProgress.Cancel := False;
          AProgress.Max := AList.Count;
          AProgress.Pos := 0;
          AProgress.Show;

          AHit := 0;
          for i := 0 to AList.Count - 1 do
          begin
            AProgress.Pos := i + i;
            AProgress.ProgressText := IntToStr(MulDiv (i, 100, AList.Count)) + ' %';

            AProp := AList.Objects[i];

            //Say (AProp.PropName);
            Catalog.DeleteProp (AProp);
            Inc(AHit);

            if AProgress.Cancel then
              break;
          end;

          AProgress.Hide;

          Say (IntToStr(AHit) + ' catalog labels are deleted from the catalog');
          ADoAsk := not AProgress.Cancel;
        end;
      end;
      -1, 3:      // cancel
      begin
        ADoAsk := False;
      end;
    end;
  end;

  AList.Free;
  AProps.Free;

  AProgress.Free;
end;