RCC FileMaker Plugins

Documentation for Mac and Windows

RCCPhotoGrid help for the current build.

Search the FileMaker-facing contract, copy AI prompts and implementation snippets, browse task recipes, and inspect the Mac + Windows API, JSON, options, payloads, and platform behavior.

Mac

.fmplugin package for FileMaker Pro on macOS.

Windows

.fmx64 package for FileMaker Pro on Windows.

Prompts for your AI

Give any AI the right starting point.

These are ready-made instructions for ChatGPT, Claude, Gemini, Cursor, or any coding assistant. Each prompt tells the AI to treat this documentation page as the source of truth, follow the named anchors, preserve exact RCC.PhotoGrid function names, and return FileMaker-ready scripts, JSON, options, or debugging steps.

Source-of-truth docsExact anchorsFileMaker-ready outputCopy/paste prompts

AI-readable map

Page contract
This page is the current public RCCPhotoGrid contract for FileMaker-facing functions, JSON data, options, callback payloads, recipes, and platform notes.
Best entry point
Use search first, then jump to the matching anchor. Every code block exposes Copy Text and Copy XML.
Required fields
Start with #required-fields when building the FileMaker table. Copy XML imports the mandatory fields.
Core flow
CreateWithControl creates the overlay, SetData loads item JSON, Refresh keeps the overlay attached, callbacks register scripts, and Close/CloseAll clean up overlays.
Plain-text map
Use /llms.txt for a compact AI-readable summary of the docs, anchors, API groups, and answer rules.
Important anchors
#required-fields, #start, #recipes, #api, #data, #options, #payloads, #platforms, #references
Answer style
Use exact function names, preserve FileMaker syntax, name assumptions, and cite the section or anchor used.

Understand this page first

You are helping me work with RCCPhotoGrid, a FileMaker plug-in documented at https://www.rccfilemakerplugins.com/docs/.

Read the page as the source of truth. First understand these anchors: #required-fields for mandatory FileMaker fields, #start for setup, #recipes for task workflows, #api for external functions, #data for JSON shape, #options for display/context settings, #payloads for callback payloads, #platforms for native platform differences, and #references for Claris/FileMaker background.

When you answer, use the exact RCC.PhotoGrid function names from the page, preserve FileMaker syntax with semicolon separators, and tell me which section or anchor you used. If a script snippet is needed, give me copy-ready FileMaker script text.

Build my FileMaker script

Use the RCCPhotoGrid documentation at https://www.rccfilemakerplugins.com/docs/ to build a FileMaker script for this task:

[Describe the task here.]

Search the docs for the closest recipe, then verify the exact API function signatures. Return a practical FileMaker script using Set Variable steps, JSONSetElement where needed, and the correct callback payload fields. Include any required setup, refresh, and cleanup calls.

Debug an RCCPhotoGrid issue

Use https://www.rccfilemakerplugins.com/docs/ as the source of truth for RCCPhotoGrid.

I am seeing this issue:

[Paste the error, behavior, script, payload, or screenshot description here.]

Find the relevant docs sections and reason through likely causes. Check setup, gridID lifecycle, named layout object geometry, Refresh usage, JSON shape, callback script registration, and platform limits. Give me a short diagnostic checklist and the exact script/API changes to try first.

Convert my requirement to JSON/options

Use the RCCPhotoGrid docs at https://www.rccfilemakerplugins.com/docs/ and focus on #data, #options, and #payloads.

I need this behavior:

[Describe the desired grid, view mode, context menu, callbacks, metadata, or payload handling here.]

Tell me the JSON fields, display options, context menu options, and callback payload fields I need. Return copy-ready JSONSetElement examples and explain which keys are required vs optional.

Required Fields

Mandatory FileMaker fields for the RCC PhotoGrid table.

Create these fields before wiring the load scripts. The XML button copies the full FileMakerFMObjectListsnippet for import, and each field below includes its type plus the calculation or summary definition to copy manually.

Field name

__ID Photo

TextNormal

Stable unique key used as the RCCPhotoGrid item id and callback record match key.

Auto-enter calculation
Get ( UUID )

Field name

Caption

TextNormal

Human-readable subtitle/caption shown in the grid item JSON.

Auto-enter calculation
GetContainerAttribute ( Photo | Container ; "FileName" )

Field name

listOf_Photo IDs

TextSummary

Return-delimited summary list of every __ID Photo in the current found set.

Summary definition
List of: __ID Photo

Field name

Photo | Container

BinaryNormal

Container field that stores the original photo or file.

Field definition
Container field. No calculation.

Field name

PhotoGrid Item JSON

TextNormal

Auto-enter JSON object for one record. The load script collects these into the SetData array.

Auto-enter calculation
Let ( [
  trigger = _trigger_Last Modification ;

  photo = RCC PhotoGrid::Photo | Container ;
  gridPreview = GetThumbnail ( photo ; 320 ; 320 ) ;
  fileName = GetContainerAttribute ( photo ; "filename" ) ;
  fileLower = Lower ( fileName ) ;
  extension = Lower ( RightWords ( Substitute ( fileName ; "." ; " " ) ; 1 ) ) ;

  // Container attributes
  fileSize = GetContainerAttribute ( photo ; "fileSize" ) ;
  width = GetContainerAttribute ( photo ; "width" ) ;
  height = GetContainerAttribute ( photo ; "height" ) ;
  dpiWidth = GetContainerAttribute ( photo ; "dpiWidth" ) ;
  dpiHeight = GetContainerAttribute ( photo ; "dpiHeight" ) ;

  // Browser/QuickLook type hint
  mime = Case (
    PatternCount ( fileLower ; ".pdf" ) ; "application/pdf" ;
    PatternCount ( fileLower ; ".png" ) ; "image/png" ;
    PatternCount ( fileLower ; ".gif" ) ; "image/gif" ;
    PatternCount ( fileLower ; ".webp" ) ; "image/webp" ;
    "image/jpeg"
  ) ;

  // Small grid thumbnail only
  thumb = Case (
    IsEmpty ( photo ) or IsEmpty ( gridPreview ) ;
      "" ;
    "data:image/jpeg;base64," & Base64EncodeRFC ( 4648 ; gridPreview )
  )
] ;
  Case (
    IsEmpty ( photo ) ;
      "" ;
    JSONSetElement ( "{}" ;

      [ "id" ; __ID Photo ; JSONString ] ;
      [ "title" ; fileName ; JSONString ] ;
      [ "subtitle" ; RCC PhotoGrid::Caption ; JSONString ] ;
      [ "thumbnail" ; thumb ; JSONString ] ;
      [ "mime" ; mime ; JSONString ] ;
      [ "extension" ; extension ; JSONString ] ;

      // Displayed in the Photo Info HUD
      [ "metadata.File Name" ; fileName ; JSONString ] ;
      [ "metadata.Extension" ; extension ; JSONString ] ;
      [ "metadata.MIME" ; mime ; JSONString ] ;
      [ "metadata.File Size" ; fileSize ; JSONString ] ;
      [ "metadata.Width" ; width ; JSONString ] ;
      [ "metadata.Height" ; height ; JSONString ] ;
      [ "metadata.Image DPI" ; dpiWidth & " x " & dpiHeight ; JSONString ] ;
      [ "metadata.Storage Type" ; GetContainerAttribute ( photo ; "storageType" ) ; JSONString ] ;
      [ "metadata.MD5" ; GetContainerAttribute ( photo ; "MD5" ) ; JSONString ] ;
      [ "metadata.Orientation" ; GetContainerAttribute ( photo ; "orientation" ) ; JSONString ] ;
      [ "metadata.Created" ; GetContainerAttribute ( photo ; "created" ) ; JSONString ] ;
      [ "metadata.Modified" ; GetContainerAttribute ( photo ; "modified" ) ; JSONString ] ;
      [ "metadata.Camera Make" ; GetContainerAttribute ( photo ; "make" ) ; JSONString ] ;
      [ "metadata.Camera Model" ; GetContainerAttribute ( photo ; "model" ) ; JSONString ] ;
      [ "metadata.Latitude" ; GetContainerAttribute ( photo ; "latitude" ) ; JSONString ] ;
      [ "metadata.Longitude" ; GetContainerAttribute ( photo ; "longitude" ) ; JSONString ] ;

      [ "isPhoto" ; not IsEmpty ( GetContainerAttribute ( photo ; "image" ) ) ; JSONBoolean ] ;
      [ "selected" ; False ; JSONBoolean ]
    )
  )
)

/*
RCC PhotoGrid Item JSON

Purpose:
  This calculation builds one JSON object for one FileMaker photo record.
  The load script later collects these per-record JSON objects into one JSON array
  and sends that array to RCC.PhotoGrid.SetData.

Why this is fast:
  The grid receives a small 320 x 320 thumbnail, not the full container file.
  The full container is read later only when the user opens QuickLook / Photo view.

Core keys used by PhotoGrid:
  id
    Stable record key. This must match the field used by open, save, delete,
    and drag-export scripts.

  title
    Main display title. Usually the container filename.

  subtitle
    Secondary display text. Usually the caption.

  thumbnail
    Browser-safe data URL used in Grid, List, and HorizontalView.

  mime
    Type hint used for filtering and preview behavior.

  extension
    File extension used by list/horizontal display chips.

  isPhoto
    Boolean hint. True lets PhotoGrid know this item can enter Photo editor mode.

  selected
    Initial selection state.

Metadata keys:
  Any key under "metadata." appears in the Photo Info HUD.
  Example:
    "metadata.File Name"
    "metadata.Camera Model"
    "metadata.Latitude"

Thumbnail size note:
  The grid thumbnail is generated at 320 x 320 because it is a good balance between speed and visual quality.
  PhotoGrid only needs this thumbnail for Grid, List, and HorizontalView display. The full container is loaded later, only when the user opens the item in Photo view or QuickLook.
  You can increase 320 x 320 if you want sharper thumbnails, but loading will be slower and the JSON payload will be larger.
  You can decrease 320 x 320 if you want faster loading, but thumbnails may look softer, especially at larger zoom sizes.

Trigger variable:
  trigger = _trigger_Last Modification
  This makes the stored auto-enter calculation refresh when your trigger field changes.
*/

Field name

PhotoGrid Item JSON List

TextSummary

Return-delimited summary list of PhotoGrid Item JSON objects for the current found set.

Summary definition
List of: PhotoGrid Item JSON

Find anything

Search the whole RCCPhotoGrid contract.

Search functions, options, payload fields, recipes, platform notes, and JSON schema details. Results update instantly below.

Showing 50 of 50 entries

1. Name a layout object

Draw a normal FileMaker object and name it photoGridPlaceholder. FileMaker owns the layout rectangle.

2. Create the native overlay

Call CreateWithControl with Get ( WindowName ) and the placeholder object name. Store the returned gridID.

3. Load JSON

Send a JSON array with IDs, labels, thumbnails, file hints, metadata, and selected state.

4. Register scripts

Add only the callbacks you need: click, double-click, drop, delete, save, iPhone import, or drag export.

5. Refresh on layout changes

Call Refresh from layout/window resize triggers so the overlay stays attached to the named object.

First grid
Set Variable [ $$photoGrid ;
  RCC.PhotoGrid.CreateWithControl (
    Get ( WindowName ) ;
    "photoGridPlaceholder"
  )
]

Set Variable [ $result ;
  RCC.PhotoGrid.LoadDemoData ( $$photoGrid )
]

Set Variable [ $selectedIDs ;
  RCC.PhotoGrid.GetSelectedIDs ( $$photoGrid )
]

Recipes

Use-case first, function second.

Start with the job you need to do, then copy the matching FileMaker script shape.

Recipes

First grid smoke test

quick start

Create an overlay and load demo data before you wire your found set.

This proves the plug-in is installed, the placeholder is named correctly, and FileMaker can call the external functions.

quick startdemoinstallplaceholder
Example
Set Variable [ $$photoGrid ;
  RCC.PhotoGrid.CreateWithControl (
    Get ( WindowName ) ;
    "photoGridPlaceholder"
  )
]

Set Variable [ $result ;
  RCC.PhotoGrid.LoadDemoData ( $$photoGrid )
]

Set Variable [ $selectedIDs ;
  RCC.PhotoGrid.GetSelectedIDs ( $$photoGrid )
]
Recipes

Load a found-set JSON array

found set

Send compact JSON from FileMaker instead of looping UI updates.

Build the array from record IDs, titles, subtitles, thumbnails, file hints, metadata, and selection state.

found setjsonsetdatano-loop
Example
Set Variable [ $json ; Value: /* JSON array of photo/file items */ ]

Set Variable [ $result ;
  RCC.PhotoGrid.SetData ( $$photoGrid ; $json )
]
Recipes

Keep overlays attached after resize

refresh

Call Refresh from resize, tab, panel, or sidebar triggers.

The explicit window form avoids moving the wrong overlay in multi-window solutions.

refreshresizemulti-windowlayout trigger
Example
Set Variable [ $result ;
  RCC.PhotoGrid.Refresh ( Get ( WindowName ) ; $$photoGrid )
]
Recipes

Lazy-open a full-resolution image

double click

Register a double-click script, find the record, then call ShowImage.

This keeps initial grid data light while still giving users full-resolution preview on demand.

double clicklazy loadingshowimageviewer
Example
Set Variable [ $result ;
  RCC.PhotoGrid.SetDoubleClickScript (
    $$photoGrid ;
    "PhotoGrid | Open Full Asset"
  )
]

# In "PhotoGrid | Open Full Asset":
Set Variable [ $request ; Get ( ScriptParameter ) ]
Set Variable [ $id ; JSONGetElement ( $request ; "id" ) ]
Set Variable [ $gridID ; JSONGetElement ( $request ; "gridID" ) ]

# Find the record by $id, export the full asset as a data URL, then:
Set Variable [ $result ;
  RCC.PhotoGrid.ShowImage (
    Get ( WindowName ) ;
    $gridID ;
    $dataURL ;
    $fileName
  )
]
Recipes

Preview PDFs, videos, and files

quicklook

Use ShowQuickLook for non-image assets.

Browser-safe images use the viewer. Other file types can use native Quick Look where supported.

quicklookpdfvideodocumentviewer
Example
Set Variable [ $result ;
  RCC.PhotoGrid.ShowQuickLook (
    Get ( WindowName ) ;
    $gridID ;
    $dataURL ;
    $fileName
  )
]
Recipes

Create a compact HorizontalView strip

HorizontalView

Use SetDisplayOptions for a small related-record strip.

HorizontalView is script-configurable, supports selection and callbacks, and is not shown as a visible Grid/Photo/List segment.

HorizontalViewminimalwidgetthumbnail size
Example
Set Variable [ $result ;
  RCC.PhotoGrid.SetDisplayOptions (
    $$photoGrid ;
    JSONSetElement ( "{}" ;
      [ "preset" ; "minimalHorizontalView" ; JSONString ] ;
      [ "horizontalViewStyle" ; "compact" ; JSONString ] ;
      [ "horizontalViewThumbnailSize" ; 96 ; JSONNumber ]
    )
  )
]
Recipes

Configure right-click actions

context menu

Show, hide, enable, or disable Save, Copy, Share, and Delete.

download is accepted as an alias for save. SetDeleteScript also enables the built-in Delete item.

context menusavecopysharedelete
Example
Set Variable [ $result ;
  RCC.PhotoGrid.SetContextMenuOptions (
    $$photoGrid ;
    JSONSetElement ( "{}" ;
      [ "save" ; True ; JSONBoolean ] ;
      [ "copy" ; True ; JSONBoolean ] ;
      [ "share" ; True ; JSONBoolean ] ;
      [ "delete" ; False ; JSONBoolean ]
    )
  )
]
Recipes

Import dropped files and folders

drop

Register a drop script to receive paths, filemac/filewin values, names, extensions, and folder flags.

The iPhone/camera import payload uses the same core item shape so one import script can handle both workflows.

dropfolderimportfile pathiPhone
Example
Set Variable [ $result ;
  RCC.PhotoGrid.SetDropScript (
    $$photoGrid ;
    "PhotoGrid | Import Dropped Files"
  )
]
Recipes

Save edited images back to FileMaker

save

Register SetSaveScript and read dataURL, adjustments, and crop from the payload.

Save Changes bakes rotation, flip, adjustments, filter preset, vignette, and crop into the returned image data URL.

saveadjustmentscropfilterdataURL
Example
Set Variable [ $result ;
  RCC.PhotoGrid.SetSaveScript (
    $$photoGrid ;
    "PhotoGrid | Save Edited Image"
  )
]

API

Searchable external function reference.

Every current FileMaker-facing function is grouped here with signatures, intent, and when to use it.

API

RCC.PhotoGrid.Version

version

Returns the plug-in version string.

Use this for diagnostics, support, and confirming the installed plug-in build.

versiondiagnosticssupport
Signature
RCC.PhotoGrid.Version
API

RCC.PhotoGrid.CreateWithControl

create

Creates an overlay anchored to a named FileMaker layout object and returns a gridID.

The plug-in evaluates GetLayoutObjectAttribute for the named object in the current calculation context.

createoverlaylayout objectgridIDGetLayoutObjectAttribute
Signature
RCC.PhotoGrid.CreateWithControl ( windowName ; objectName )
API

RCC.PhotoGrid.SetFrameWithControl

positioning

Moves an existing overlay to match a named layout object.

Use this when the placeholder object changes or when you want to rebind an existing grid to a different object.

positioninglayout objectoverlay
Signature
RCC.PhotoGrid.SetFrameWithControl ( gridID ; objectName )
API

RCC.PhotoGrid.SetFrame

positioning

Manual positioning escape hatch using FileMaker work-area coordinates.

Useful for debugging or layouts where named object geometry is not the right fit.

positioningmanualcoordinates
Signature
RCC.PhotoGrid.SetFrame ( gridID ; left ; top ; width ; height )
API

RCC.PhotoGrid.Refresh

refresh

Re-resolves the saved object frame after window, layout, sidebar, or panel changes.

Prefer the window-scoped form in multi-window FileMaker solutions.

refreshresizemulti-windowlayout
Signature
RCC.PhotoGrid.Refresh ( gridID )
RCC.PhotoGrid.Refresh ( windowName ; gridID )
API

RCC.PhotoGrid.SetData

json

Loads the JSON array of photo/file items into the grid.

Bad JSON returns an ERROR string. The grid accepts images, videos, PDFs, documents, folders, and generic file hints.

jsondatafound setthumbnailselection
Signature
RCC.PhotoGrid.SetData ( gridID ; json )
API

RCC.PhotoGrid.LoadDemoData

demo

Loads generated placeholder records for a quick smoke test.

Use this before wiring your found-set JSON.

demotestsmoke test
Signature
RCC.PhotoGrid.LoadDemoData ( gridID )
API

RCC.PhotoGrid.GetSelectedIDs

selection

Returns selected IDs as FileMaker return-delimited text.

Selection is cached natively after every click, Shift-click, or Option/Alt-click.

selectionidsreturn-delimited
Signature
RCC.PhotoGrid.GetSelectedIDs ( gridID )
API

RCC.PhotoGrid.ShowImage

viewer

Shows a full-resolution browser-displayable image in the viewer.

Use the window-scoped form when callback scripts may run from multiple FileMaker windows.

viewerimagedataURLlazy loading
Signature
RCC.PhotoGrid.ShowImage ( gridID ; dataURL ; title )
RCC.PhotoGrid.ShowImage ( windowName ; gridID ; dataURL ; title )
API

RCC.PhotoGrid.ShowQuickLook

viewer

Shows a full-resolution file using browser image display or native Quick Look.

Best for PDFs, videos, and files that should preview without converting to a thumbnail-only image.

viewerQuick Lookpdfvideofile
Signature
RCC.PhotoGrid.ShowQuickLook ( gridID ; dataURL ; title )
RCC.PhotoGrid.ShowQuickLook ( windowName ; gridID ; dataURL ; title )
API

RCC.PhotoGrid.GetOpenRequest

callback

Returns the most recent open/click request JSON.

Prefer Get ( ScriptParameter ) inside callbacks. Use this as a fallback.

callbackopenclickfallback
Signature
RCC.PhotoGrid.GetOpenRequest ( gridID )
RCC.PhotoGrid.GetOpenRequest ( windowName ; gridID )
API

Click script registration

single click

Registers single-click, double-click, and legacy open scripts.

SetOpenScript remains a deprecated alias for SetDoubleClickScript. If a click script is not declared, selection still works but no script runs.

single clickdouble clickopencallbackdeprecated
Signature
RCC.PhotoGrid.SetSingleClickScript ( gridID ; scriptName )
RCC.PhotoGrid.SetDoubleClickScript ( gridID ; scriptName )
RCC.PhotoGrid.SetOpenScript ( gridID ; scriptName )
API

Drop, delete, and save script registration

drop

Registers scripts for file drop import, context-menu delete, and Save Changes.

SetDeleteScript also enables the built-in Delete context-menu action.

dropdeletesavecontext menucallback
Signature
RCC.PhotoGrid.SetDropScript ( gridID ; scriptName )
RCC.PhotoGrid.SetDeleteScript ( gridID ; scriptName )
RCC.PhotoGrid.SetSaveScript ( gridID ; scriptName )
API

iPhone/camera import

iPhone

Opens the native macOS Image Capture import window and calls a FileMaker script with imported files.

SetIPhoneImportScript is preferred. If unset, ImportFromIPhone falls back to the grid's drop script. Windows returns an error for ImportFromIPhone.

iPhonecameraImage CapturemacOSimport
Signature
RCC.PhotoGrid.SetIPhoneImportScript ( gridID ; scriptName )
RCC.PhotoGrid.ImportFromIPhone ( gridID )
API

Context menu and display options

options

Controls built-in menu actions, visible chrome, initial modes, widget presets, and thumbnail sizing.

Use JSON booleans for simple states or object values for visible/enabled control.

optionscontext menudisplayminimalHorizontalView
Signature
RCC.PhotoGrid.SetContextMenuOptions ( gridID ; optionsJSON )
RCC.PhotoGrid.SetDisplayOptions ( gridID ; optionsJSON )
API

RCC.PhotoGrid.SetDragExportScript

drag export

Registers the script called after a drag-out operation receives a Finder/Desktop destination.

Use the payload IDs to find records, then export each container to destinationFileMakerPath.

drag exportFinderDesktopfile promise
Signature
RCC.PhotoGrid.SetDragExportScript ( gridID ; scriptName )
API

Debug and lifecycle

debug

Inspect grid state or close one/all overlays.

Close overlays on layout unload, file close, or solution shutdown when you do not want them to persist.

debugcloselifecyclecleanup
Signature
RCC.PhotoGrid.GetDebugStatus ( gridID )
RCC.PhotoGrid.Close ( gridID )
RCC.PhotoGrid.CloseAll

Data

The JSON shape the grid understands.

SetData accepts a JSON array. Unknown fields can travel with the record, but these keys power UI, filtering, callbacks, and fallback behavior.

Item array
[
  {
    "id": "PHOTO-001",
    "title": "IMG_0001.jpg",
    "subtitle": "Container thumbnail",
    "thumbnail": "data:image/jpeg;base64,...",
    "mime": "image/jpeg",
    "fileType": "image",
    "extension": "jpg",
    "metadata": {
      "File Size": "1.8 MB",
      "Width": "3000",
      "Height": "2000"
    },
    "isFolder": false,
    "isPhoto": true,
    "selected": false
  }
]
id

Returned by selection, click, delete, save, and export payloads.

title

Visible label and suggested export filename.

subtitle

Secondary visible text.

thumbnail

Optional data URL for images and image actions.

mime/type

File-kind detection for images, videos, PDFs, and documents.

extension/fileType

Fallback kind hints when MIME is absent.

metadata

File Size, Width, and Height can feed metadata chips.

selected

Initial selected state.

Data

Fallback behavior

fallback

Missing id is generated, missing title falls back to id, and selected defaults to false.

File type detection uses MIME, type, extension, fileType, title, and isPhoto/isFolder hints.

fallbackidtitlefile typeisPhoto
Data

Filter categories

filter

The grid can filter All, Images, Videos, PDFs, and Documents.

Detection uses image/video MIME values, PDF extension or MIME, common document extensions, text MIME values, and explicit isPhoto false for documents.

filterimagesvideospdfdocuments

Options

Control chrome, widgets, menus, and sizing.

Options are plain JSON, so they are easy to generate with JSONSetElement in FileMaker.

Options

Context menu option semantics

context menu

Boolean true shows enabled. Boolean false shows disabled. Object values can set visible/enabled.

Keys are save, copy, share, delete, and download as an alias for save.

context menuvisibleenableddownload
Example
Set Variable [ $result ;
  RCC.PhotoGrid.SetContextMenuOptions (
    $$photoGrid ;
    JSONSetElement ( "{}" ;
      [ "save" ; True ; JSONBoolean ] ;
      [ "copy" ; True ; JSONBoolean ] ;
      [ "share" ; True ; JSONBoolean ] ;
      [ "delete" ; False ; JSONBoolean ]
    )
  )
]
Options

Display option keys

display

Control filter, zoom, info, view switch, minimal mode, initial view, presets, sizing, and HorizontalView style.

Aliases include displayFilter, displayGridZoom, displayInfo, displayViewSwitch, minimalMode, initialView, displayView, mode, and modePreset.

displayfilterzoomminimalpresetHorizontalView
Example
Set Variable [ $result ;
  RCC.PhotoGrid.SetDisplayOptions (
    $$photoGrid ;
    JSONSetElement ( "{}" ;
      [ "preset" ; "minimalHorizontalView" ; JSONString ] ;
      [ "horizontalViewStyle" ; "compact" ; JSONString ] ;
      [ "horizontalViewThumbnailSize" ; 96 ; JSONNumber ]
    )
  )
]
Options

Supported presets and views

preset

Use grid, list, photo, HorizontalView, minimalGrid, minimalList, minimalHorizontalView, minimalLazy, minimalViewer, or single.

HorizontalView has thumbnail, compact, and verbose styles. single is a dedicated single-photo widget with no Back-to-grid button.

presetsingleminimalLazyminimalViewerHorizontalView
Options

Zoom and sizing aliases

zoom

Use zoom levels or desired thumbnail/tile sizes.

gridZoomLevel, listZoomLevel, horizontalViewZoomLevel, gridThumbnailSize, listThumbnailSize, horizontalViewThumbnailSize, thumbnailSize, and tileSize choose the nearest supported size.

zoomthumbnailSizetileSizegridlisthorizontal

Payloads

What your FileMaker scripts receive.

Use Get ( ScriptParameter ) in the callback script. GetOpenRequest is available as a fallback for click/open requests.

Payloads

Single-click and double-click payload

click

Includes action, clickType, viewMode, gridID, id, title, and viewerIndex.

Photo view and lazy-view navigation can use the declared double-click script as the full-asset loader even when the request is not itself a double-click.

clickdoubleClicksingleClickviewerIndex
Example
{
  "action": "doubleClick",
  "clickType": "double",
  "viewMode": "Grid",
  "gridID": "RCC-PHOTOGRID-1",
  "id": "PHOTO-001",
  "title": "IMG_0001.jpg",
  "viewerIndex": 0
}
Payloads

Delete payload

delete

Includes selected IDs as both an array and FileMaker return-delimited text.

Use ids for structured handling, or selectedIDs when a return-delimited list is more convenient.

deleteselectedIDsids
Example
{
  "action": "delete",
  "gridID": "RCC-PHOTOGRID-1",
  "count": 2,
  "ids": ["PHOTO-001", "PHOTO-002"],
  "selectedIDs": "PHOTO-001\rPHOTO-002"
}
Payloads

Save Changes payload

save

Includes the adjusted image dataURL plus adjustment and crop state.

Use id to find the record, then replace the container content with the returned dataURL.

savedataURLadjustmentscrop
Example
{
  "action": "save",
  "gridID": "RCC-PHOTOGRID-1",
  "id": "PHOTO-001",
  "title": "IMG_0001.jpg",
  "dataURL": "data:image/png;base64,...",
  "adjustments": {},
  "crop": {}
}
Payloads

Drop and iPhone import payload

drop

Includes paths, FileMaker file paths, count, and items with file metadata.

iPhone import adds source, deviceName, downloadDirectory, and sourceDevice details while preserving the core items array.

dropiPhonecamerapathsitems
Example
{
  "action": "drop",
  "gridID": "RCC-PHOTOGRID-1",
  "count": 1,
  "paths": ["/Users/you/Desktop/a.jpg"],
  "filePaths": ["filemac:/Macintosh HD/Users/you/Desktop/a.jpg"],
  "items": [
    {
      "path": "/Users/you/Desktop/a.jpg",
      "posixPath": "/Users/you/Desktop/a.jpg",
      "filePath": "filemac:/Macintosh HD/Users/you/Desktop/a.jpg",
      "name": "a.jpg",
      "extension": "jpg",
      "isFolder": false
    }
  ]
}
Payloads

Drag export payload

drag export

Includes selected IDs, titles, selectedIDs text, and the destination folder.

Export each selected record's container to destinationFileMakerPath.

drag exportdestinationPathdestinationFileMakerPath
Example
{
  "action": "dragExport",
  "gridID": "RCC-PHOTOGRID-1",
  "count": 2,
  "ids": ["PHOTO-001", "PHOTO-002"],
  "titles": ["IMG_0001.jpg", "IMG_0002.jpg"],
  "selectedIDs": "PHOTO-001\rPHOTO-002",
  "destinationPath": "/Users/you/Desktop",
  "destinationFileMakerPath": "filemac:/Macintosh HD/Users/you/Desktop"
}

Platforms

Same FileMaker contract, native platform differences.

The external function surface is shared. Preview and import behavior depends on the native layer.

Mac behavior

.fmplugin package, native overlay, WKWebView grid layer, Quick Look, and Image Capture iPhone/camera import.

macOS includes the richest viewer/import surface today.

Windows behavior

.fmx64 package with the same external function API and a native overlay renderer.

Windows supports positioning, selection, Grid/List/HorizontalView basics, context menu, file drop, drag export callback plumbing, and Browse-mode sync. ImportFromIPhone returns an error.

Lifecycle

Overlays are visible only in Browse mode and close during file/session shutdown.

Native UI events queue FileMaker scripts, and script execution runs through the FileMaker idle bridge.

References

Official FileMaker pages this integration relies on.

These are the Claris help pages behind the plug-in model and named object geometry.

Implementation handoff

Need the full engineering dump?

The local RCCPhotoGrid/docs/FeatureDocumentation.html remains the deeper implementation document. This page is the searchable public help surface.

Ask a Question