Skip to content

Commit 6786308

Browse files
committed
docs: rewrite README and trim docs/
Rewrite README to lead with what SharpFM does (extract FileMaker objects as editable XML and round-trip them back) and why it's useful (version control, cross-RDP/Citrix, real editors, inspection). Drop the step-by-step menu/plugin walkthroughs in favor of a tighter How It Works section. Remove obsolete docs: - docs/plans/ — POCO migration is complete. - docs/step-definitions.md — the POCO migration tracker; all Priority 1 steps have typed implementations and the Priority 3 long tail is explicitly on-demand. - docs/plugins/ — described four plugin types (Panel, Event, Persistence, Transform) but only Panel and Transform exist; replaced with a minimal docs/plugins.md pointer to the contracts and sample project. Update docs/advanced-filemaker-scripting-syntax.md to note that Show Custom Dialog's Inputs: block is already implemented, and drop the single-entry change log.
1 parent e5db1c1 commit 6786308

11 files changed

Lines changed: 43 additions & 1634 deletions

README.md

Lines changed: 33 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,65 @@
11
# SharpFM
22

3-
SharpFM is a cross-platform (Mac, Windows, Linux) FileMaker Pro Developer Utility for migrating FileMaker code between files, sharing code with other developers, or inspecting what's happening under the hood. Copy scripts, layouts, tables, and fields from FileMaker Pro, edit them in structured editors, and paste them back -- across machine barriers like Remote Desktop, Citrix, or anything that supports plain text.
3+
**Get FileMaker objects out of FileMaker, edit or share them, and paste them back.**
44

5-
## Getting Started
6-
7-
Head over to [Releases](https://github.com/fuzzzerd/SharpFM/releases) and grab the latest version for your platform (Windows, Mac, Linux).
8-
9-
SharpFM and FileMaker must be running on the same computer. To share clips across machines, use the XML files directly.
10-
11-
### Importing Clips from FileMaker
12-
13-
1. Open SharpFM and FileMaker side by side.
14-
2. In FileMaker, copy something to the clipboard (scripts, tables, layouts, etc).
15-
3. In SharpFM, use **Edit > Paste from FileMaker** (`Ctrl+V`).
16-
4. The clip appears in the left panel with the appropriate editor on the right.
17-
18-
### Exporting Clips to FileMaker
5+
SharpFM is a cross-platform (Windows, macOS, Linux) developer utility for FileMaker Pro. It captures the proprietary clipboard format FileMaker uses for scripts, tables, fields, and layouts, exposes it as plain XML plus structured editors, and lets you paste the result back into FileMaker when you're done.
196

20-
1. Select a clip in the left panel.
21-
2. Use **Edit > Copy to FileMaker** (`Ctrl+Shift+C`).
22-
3. Switch to FileMaker and open the appropriate destination (Database Manager, Script Workspace, Layout mode, etc).
23-
4. Paste as you normally would.
7+
If you've ever wanted to diff two scripts, commit a table definition to git, or move code across a Remote Desktop / Citrix boundary that strips custom clipboard formats — that's what SharpFM is for.
248

25-
### Creating New Clips
9+
## Why SharpFM
2610

27-
- **File > New Script** (`Ctrl+N`) -- creates an empty script clip with the FmScript editor.
28-
- **File > New Table** (`Ctrl+Shift+N`) -- creates an empty table clip with the DataGrid editor.
11+
FileMaker's clipboard is a closed format. Scripts, tables, and layouts never really leave FileMaker — the only way out is a copy/paste into another FileMaker session on the same machine. SharpFM sits in the middle of that copy/paste: it decodes the clipboard into plain XML, gives you real editors to work with it, and re-encodes it on the way back. Whatever you do in between — edit, save, diff, share — is up to you.
2912

30-
### Editing Scripts
13+
That middle step unlocks a few things:
3114

32-
Select a script clip to open the plain-text script editor with FmScript syntax highlighting, autocomplete, bracket matching, and validation diagnostics. Edit the script text directly -- changes sync to the underlying XML automatically.
15+
- **Version control FileMaker code.** Save clips as XML files, drop them in a git repo, review diffs like any other source.
16+
- **Share snippets with other developers.** XML files travel through any text-based channel — chat, gists, shared folders.
17+
- **Cross Remote Desktop / Citrix boundaries.** Those environments often strip custom clipboard data. Plain text survives.
18+
- **Edit in a real editor.** Scripts get syntax highlighting, autocomplete, and validation. Tables get a spreadsheet-style grid with a calculation editor.
19+
- **Inspect what FileMaker is actually doing.** See the raw XML behind any clip and learn the underlying structure.
3320

34-
### Editing Tables
21+
## How It Works
3522

36-
Select a table clip to open the DataGrid editor with columns for Field Name, Type, Kind, Required, Unique, and Comment. Use **+ Add Field** to add fields, **Remove** or `Delete` to remove them. Change a field's Kind to Calculated or Summary, then click **Edit Calculation...** for the calculation editor.
23+
1. **Copy from FileMaker.** Select a script, table, field set, or layout in FileMaker and copy it.
24+
2. **Paste into SharpFM** (`Ctrl+V` / `Edit > Paste from FileMaker`). The clip appears in the tree on the left; the matching editor opens on the right.
25+
3. **Edit or save.** Modify the script text, tweak field definitions, or save the clip as an XML file to share or commit.
26+
4. **Copy back to FileMaker** (`Ctrl+Shift+C` / `Edit > Copy to FileMaker`), then paste into the Script Workspace, Database Manager, or Layout mode.
3727

38-
### Viewing Raw XML
28+
SharpFM and FileMaker need to run on the same machine for clipboard hand-off. To move clips between machines, share the XML files directly.
3929

40-
Use the **XML Viewer** plugin (`Ctrl+Shift+X`) to open a live XML panel alongside any structured editor. Edits in either direction sync automatically -- change the script and the XML updates, edit the XML and the script rebuilds.
30+
## Getting Started
4131

42-
### Saving and Loading Clips
32+
Grab the latest build for your platform from [Releases](https://github.com/fuzzzerd/SharpFM/releases).
4333

44-
SharpFM persists clips as XML files in a local folder.
34+
## Features
4535

46-
- **File > Save All** (`Ctrl+S`) -- saves all clips to the current folder.
47-
- **File > Open Folder...** -- load clips from a different folder.
48-
- Clip files are plain XML and can be shared via git, email, or any text-based tool.
36+
- **Round-trip clipboard support** for FileMaker scripts, tables, fields, and layouts.
37+
- **FmScript editor** with syntax highlighting, autocomplete, bracket matching, and inline validation diagnostics.
38+
- **Table/field grid editor** with inline editing, type and kind selection, and a dedicated calculation editor for calculated and summary fields.
39+
- **Live XML view** (`Ctrl+Shift+X`) — structured edits and raw XML stay in sync, either direction.
40+
- **New clips from scratch** — start an empty script (`Ctrl+N`) or table (`Ctrl+Shift+N`) without needing to copy from FileMaker first.
41+
- **Tree browser with VS Code-style tabs** for working across multiple clips at once.
42+
- **Plain-XML storage** — clips are files on disk, shareable by any text-based channel.
4943

5044
## Keyboard Shortcuts
5145

5246
| Shortcut | Action |
5347
|----------|--------|
54-
| `Ctrl+N` | New Script |
55-
| `Ctrl+Shift+N` | New Table |
5648
| `Ctrl+V` | Paste from FileMaker |
5749
| `Ctrl+Shift+C` | Copy to FileMaker |
50+
| `Ctrl+N` | New Script |
51+
| `Ctrl+Shift+N` | New Table |
5852
| `Ctrl+S` | Save All |
5953
| `Ctrl+Shift+X` | Toggle XML Viewer |
6054

61-
## Menu Reference
62-
63-
| Menu | Items |
64-
|------|-------|
65-
| **File** | New Script, New Table, Open Folder..., Save All, Exit |
66-
| **Edit** | Paste from FileMaker, Copy to FileMaker, Copy as C# Class |
67-
| **Plugins** | Loaded plugins (toggle panels), Manage Plugins... |
68-
69-
## Features
70-
71-
- Copy FileMaker Scripts, Tables, Fields, and Layouts to their XML representation and back.
72-
- Persist clips as XML files shareable via git, email, or other text-based tools.
73-
- Plain-text script editor with FmScript syntax highlighting, autocomplete, and validation.
74-
- DataGrid table/field editor with inline editing, calculation editor, and type/kind selection.
75-
- Live bidirectional XML viewer -- edit XML or structured data, both stay in sync.
76-
- Extensible plugin architecture for adding custom panels and tools.
77-
78-
## Plugins
79-
80-
SharpFM supports plugins via the `SharpFM.Plugin` contract library. Plugins are loaded from the `plugins/` directory at startup and can be managed from **Plugins > Manage Plugins...**.
81-
82-
### Bundled Plugins
83-
84-
- **XML Viewer** -- Live XML panel with syntax highlighting and bidirectional sync (`Ctrl+Shift+X`).
85-
- **Clip Inspector** -- Displays clip metadata (name, type, element count, size).
86-
87-
### Writing a Plugin
88-
89-
1. Create a .NET 10 class library referencing `SharpFM.Plugin`.
90-
2. Implement `IPanelPlugin` -- provide an `Id`, `DisplayName`, `CreatePanel()` returning an Avalonia `Control`.
91-
3. Use `IPluginHost` in `Initialize()` to observe clip selection changes and content updates.
92-
4. Optionally register keyboard shortcuts via `KeyBindings` and custom menu actions via `MenuActions`.
93-
5. Build the DLL and drop it in the `plugins/` directory.
94-
95-
See `src/SharpFM.Plugin.Sample/` for a complete working example.
96-
9755
## Troubleshooting
9856

99-
Logs are stored in `${specialfolder:folder=CommonApplicationData}\SharpFM` and are automatically rotated after thirty days.
57+
Logs are stored in `${specialfolder:folder=CommonApplicationData}\SharpFM` and rotate after thirty days.
10058

101-
## Similar Mac OS / Apple Based Developer Utilities
59+
## Similar Tools
10260

103-
- Apple Script utility: <https://github.com/DanShockley/FmClipTools>
104-
- FileMaker based Generator: <https://github.com/proofgeist/generator>
61+
- [FmClipTools](https://github.com/DanShockley/FmClipTools) — AppleScript-based clipboard utilities (macOS only).
62+
- [Generator](https://github.com/proofgeist/generator) — FileMaker-based code generator.
10563

10664
## App Icon
10765

docs/advanced-filemaker-scripting-syntax.md

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ Bulk or structured state that doesn't reduce to a single flag:
6868

6969
- `; Buttons: ["OK" commit; "Cancel" nocommit; "" nocommit]` — used by
7070
Show Custom Dialog for its button configuration.
71-
- Future bulk state (Input Field specs, etc.) takes this form.
71+
- `; Inputs: [Table::Field "Label" password; ...]` — used by Show
72+
Custom Dialog for its input field specs.
73+
- Additional bulk state surfaced in the future takes this same shape.
7274

7375
## Parsing precedence
7476

@@ -177,10 +179,3 @@ per-step extension. Covered here for completeness.
177179
- `PerformScriptStep.FromDisplayParams`,
178180
`GoToLayoutStep.FromDisplayParams` — Form 1 regex parsers for named
179181
refs with `(#id)` suffixes.
180-
181-
## Change log
182-
183-
- **2026-04** — Extracted from `docs/step-definitions.md:44-69` into
184-
its own document as part of the POCO big-bang migration. Rationale
185-
section ("what to drop vs. surface") added with `Restore` on `If` as
186-
the canonical drop example.

0 commit comments

Comments
 (0)