diff --git a/Docs/migration/CONTEXT.md b/Docs/migration/CONTEXT.md new file mode 100644 index 0000000000..6950dcf2ee --- /dev/null +++ b/Docs/migration/CONTEXT.md @@ -0,0 +1,38 @@ +# Migration-doc capture — shared language + +Scoped context for the legacy-screenshot capture work that feeds `Docs/migration/`. +Extends the root [`CONTEXT.md`](../../CONTEXT.md); only adds terms specific to this bounded context. + +## Terms +- **Legacy truth PNG**: a screenshot of a *legacy WinForms* FLEx surface (UIMode=Legacy), + captured as the visual parity baseline for its migration doc. Stored in + `Docs/migration/**/images/-NN.png`. NOT an Avalonia screenshot. +- **Capture target**: a screen that needs a legacy truth PNG — a **tool** (Area/Tool screen), + a **list editor**, or a **dialog**. Tracked in `INVENTORY.md`. +- **Launch-per-tool capture** (option 2): drive FLEx to a **tool** by launching + `FieldWorks.exe -db "" ""` where the link + (`silfw://localhost/link?app=flex&database=&tool=&guid=`, see + `FwLinkArgs.kFwUrlPrefix`) makes the shell open that tool at startup + (`FieldWorks.cs` → `FwAppArgs` → `HasLinkInformation`). Then screenshot the main window. +- **Dialog screenshot harness** (option 3): a standalone WinForms host that opens a + **language project** `LcmCache` (the `LCMBrowser` pattern), constructs a legacy dialog + (`new XDlg()` + `SetDlgInfo(cache, …)` — FLEx's two-phase dialog init), shows it with + seeded data, and renders it to a PNG. Reaches dialogs that navigation can't (conditional + delete/restore/warning dialogs) and doubles as the future legacy↔Avalonia parity rig. +- **Reachable set**: capture targets achievable by option 2 or 3. EXCLUDES Views/Gecko-coupled + dialogs (need a live `IVwRootBox`/`IVwSelection`, e.g. `RelatedWords`) and the 12 non-visual + Phase-2 internals — those stay **on-pickup**. +- **Capture manifest**: machine-readable list (toolId / dialog factory → target doc + image + path) the script and harness iterate over; derived from `INVENTORY.md`. + +## Invariants +- Capture in **UIMode=Legacy** only (this is the legacy baseline). The Avalonia surface has a + separate headless path. +- Data source for representative states: the **Sena 3** language project. +- A capture writes to the image path its doc already references; capturing never edits the + language project (open read-only / discard; close with Cancel/Escape). + +## Open questions +- Headless rendering: `Control.DrawToBitmap` works for ordinary dialogs but not for embedded + native **Views** content — confirm per-dialog during the harness build; fall back to a + visible/VDD desktop + window screenshot where DrawToBitmap is blank. diff --git a/Docs/migration/INVENTORY.md b/Docs/migration/INVENTORY.md new file mode 100644 index 0000000000..6811cddaa5 --- /dev/null +++ b/Docs/migration/INVENTORY.md @@ -0,0 +1,266 @@ +# WinForms → Avalonia migration inventory (master index) + +Auto-generated index of every in-scope WinForms component with a migration doc. +Goal: **100% coverage — no in-scope component without a tracked doc.** Each entry is a +lightweight stub (`_STUB_TEMPLATE.md`); deepen to the full format (`_TEMPLATE.md`) + +capture legacy PNGs (`fieldworks-winapp` skill) when its JIRA ticket is picked up. +See [README.md](./README.md) for the canonical-screen map and Phase-1 strategy. + +**Total components tracked: 227.** + +> Already migrated / kept canonical (not stubbed here — see README canonical-screen map): +> Lexicon Browse pane, Lexicon Edit entry pane (+ notebookEdit/posEdit), ChooserDialog, +> OptionsDialog, InsertEntryDialog, EntryGoDialog. Split to own follow-up PRs: the Words +> interlinear `Analyses` editor and the 6 Grammar rule tools (their tool stubs note this). + +## Phase 1 — user-facing surfaces + +### Deferred dialogs (detailed docs) (13) + +- [Add New Sense](./add-new-sense.md) +- [Configure Columns](./configure-columns.md) +- [Create Feature](./create-feature.md) +- [Date Range Filter](./date-range-filter.md) +- [Delete Confirmation](./delete-confirmation.md) +- [Feature Chooser](./feature-chooser.md) +- [Filter For](./filter-for.md) +- [Find Replace](./find-replace.md) +- [Lex Reference Details](./lex-reference-details.md) +- [Msa Creator](./msa-creator.md) +- [Picture Properties](./picture-properties.md) +- [Special Character](./special-character.md) +- [Writing System Properties](./writing-system-properties.md) + +### Dialogs (107) + +- [Add Allomorph Dlg](./dialogs/add-allomorph-dlg.md) +- [Add Converter](./dialogs/add-converter.md) +- [Add Custom Field](./dialogs/add-custom-field.md) +- [Add List](./dialogs/add-list.md) +- [Add New User](./dialogs/add-new-user.md) +- [Add New Vern Lang Warning](./dialogs/add-new-vern-lang-warning.md) +- [Advanced Mt Dialog](./dialogs/advanced-mt-dialog.md) +- [Anthro Field Mapping Dlg](./dialogs/anthro-field-mapping-dlg.md) +- [Apply Style](./dialogs/apply-style.md) +- [Archive With Ramp](./dialogs/archive-with-ramp.md) +- [Backup Project](./dialogs/backup-project.md) +- [Basic Find](./dialogs/basic-find.md) +- [Cant Restore Linked Files To Original Location](./dialogs/cant-restore-linked-files-to-original-location.md) +- [Change Default Backup Dir](./dialogs/change-default-backup-dir.md) +- [Choose Lang Project](./dialogs/choose-lang-project.md) +- [Choose Text Writing System Dlg](./dialogs/choose-text-writing-system-dlg.md) +- [Chooser](./dialogs/chooser.md) +- [Combine Import Dlg](./dialogs/combine-import-dlg.md) +- [Complex Conc Morph Dlg](./dialogs/complex-conc-morph-dlg.md) +- [Complex Conc Tag Dlg](./dialogs/complex-conc-tag-dlg.md) +- [Complex Conc Word Dlg](./dialogs/complex-conc-word-dlg.md) +- [Concordance Dlg](./dialogs/concordance-dlg.md) +- [Configure Interlin Dialog](./dialogs/configure-interlin-dialog.md) +- [Configure List](./dialogs/configure-list.md) +- [Conflicting Save](./dialogs/conflicting-save.md) +- [Create Allomorph Type Mismatch Dlg](./dialogs/create-allomorph-type-mismatch-dlg.md) +- [Delete Project](./dialogs/delete-project.md) +- [Delete Writing System Warning](./dialogs/delete-writing-system-warning.md) +- [Dictionary Config Mgr](./dialogs/dictionary-config-mgr.md) +- [Dictionary Configuration Import](./dialogs/dictionary-configuration-import.md) +- [Dictionary Configuration Manager](./dialogs/dictionary-configuration-manager.md) +- [Dictionary Configuration Node Rename](./dialogs/dictionary-configuration-node-rename.md) +- [Dictionary Configuration](./dialogs/dictionary-configuration.md) +- [Discourse Export Dialog](./dialogs/discourse-export-dialog.md) +- [Edit Morph Breaks Dlg](./dialogs/edit-morph-breaks-dlg.md) +- [Export Dialog](./dialogs/export-dialog.md) +- [Export Semantic Domains](./dialogs/export-semantic-domains.md) +- [Export Translated Lists](./dialogs/export-translated-lists.md) +- [Files To Restore Are Older](./dialogs/files-to-restore-are-older.md) +- [Filter Texts Dialog](./dialogs/filter-texts-dialog.md) +- [Find Example Sentence Dlg](./dialogs/find-example-sentence-dlg.md) +- [Flexbridge First Send Receive Instructions Dlg](./dialogs/flexbridge-first-send-receive-instructions-dlg.md) +- [Font](./dialogs/font.md) +- [Hc Max Compound Rules Dlg](./dialogs/hc-max-compound-rules-dlg.md) +- [Headword Numbers](./dialogs/headword-numbers.md) +- [Help About](./dialogs/help-about.md) +- [Import Char Mapping Dlg](./dialogs/import-char-mapping-dlg.md) +- [Import Date Format Dlg](./dialogs/import-date-format-dlg.md) +- [Import Enc Cvtr Dlg](./dialogs/import-enc-cvtr-dlg.md) +- [Import Match Replace Dlg](./dialogs/import-match-replace-dlg.md) +- [Import Word Set Dlg](./dialogs/import-word-set-dlg.md) +- [Insert Record Dlg](./dialogs/insert-record-dlg.md) +- [Insert Variant Dlg](./dialogs/insert-variant-dlg.md) +- [Interlinear Export Dialog](./dialogs/interlinear-export-dialog.md) +- [Interlinear Import Dlg](./dialogs/interlinear-import-dlg.md) +- [Lex Import Wizard Char Marker Dlg](./dialogs/lex-import-wizard-char-marker-dlg.md) +- [Lex Import Wizard Language](./dialogs/lex-import-wizard-language.md) +- [Lex Import Wizard Marker](./dialogs/lex-import-wizard-marker.md) +- [Lift Export Message](./dialogs/lift-export-message.md) +- [Lift Import Dlg](./dialogs/lift-import-dlg.md) +- [Lingua Links Import Dlg](./dialogs/lingua-links-import-dlg.md) +- [Link Allomorph Dlg](./dialogs/link-allomorph-dlg.md) +- [Link Entry Or Sense Dlg](./dialogs/link-entry-or-sense-dlg.md) +- [Link Msa Dlg](./dialogs/link-msa-dlg.md) +- [Link Variant To Entry Or Sense](./dialogs/link-variant-to-entry-or-sense.md) +- [Master Category List Dlg](./dialogs/master-category-list-dlg.md) +- [Master Inflection Feature List Dlg](./dialogs/master-inflection-feature-list-dlg.md) +- [Master Phonological Feature List Dlg](./dialogs/master-phonological-feature-list-dlg.md) +- [Merge Entry Dlg](./dialogs/merge-entry-dlg.md) +- [Merge Object](./dialogs/merge-object.md) +- [Merge Writing System](./dialogs/merge-writing-system.md) +- [Mga Dialog](./dialogs/mga-dialog.md) +- [Mga Html Help Dialog](./dialogs/mga-html-help-dialog.md) +- [Missing Old Fieldworks](./dialogs/missing-old-fieldworks.md) +- [Move Or Copy Files](./dialogs/move-or-copy-files.md) +- [New Lang Project](./dialogs/new-lang-project.md) +- [Notebook Export](./dialogs/notebook-export.md) +- [Occurrence Dlg](./dialogs/occurrence-dlg.md) +- [Overwrite Existing Project](./dialogs/overwrite-existing-project.md) +- [Parser Parameters Dlg](./dialogs/parser-parameters-dlg.md) +- [Project Location](./dialogs/project-location.md) +- [Project Properties](./dialogs/project-properties.md) +- [Record Go Dlg](./dialogs/record-go-dlg.md) +- [Related Words](./dialogs/related-words.md) +- [Respeller Dlg](./dialogs/respeller-dlg.md) +- [Restore Defaults Dlg](./dialogs/restore-defaults-dlg.md) +- [Restore Linked Files To Projects Folder](./dialogs/restore-linked-files-to-projects-folder.md) +- [Restore Project](./dialogs/restore-project.md) +- [Reversal Entry Go Dlg](./dialogs/reversal-entry-go-dlg.md) +- [Select Clauses Dialog](./dialogs/select-clauses-dialog.md) +- [Sfm To Texts And Words Mapping Dlg](./dialogs/sfm-to-texts-and-words-mapping-dlg.md) +- [Splash Screen](./dialogs/splash-screen.md) +- [Styles Modified](./dialogs/styles-modified.md) +- [Styles](./dialogs/styles.md) +- [Summary Dialog Form](./dialogs/summary-dialog-form.md) +- [Swap Lexeme With Allomorph Dlg](./dialogs/swap-lexeme-with-allomorph-dlg.md) +- [Try A Word Dlg](./dialogs/try-a-word-dlg.md) +- [Update Report](./dialogs/update-report.md) +- [Upload To Webonary](./dialogs/upload-to-webonary.md) +- [User Properties](./dialogs/user-properties.md) +- [Utility](./dialogs/utility.md) +- [Valid Characters](./dialogs/valid-characters.md) +- [View Hidden Writing Systems](./dialogs/view-hidden-writing-systems.md) +- [Warning Not Using Default Linked Files Location](./dialogs/warning-not-using-default-linked-files-location.md) +- [Webonary Log Viewer](./dialogs/webonary-log-viewer.md) +- [Xml Diagnostics](./dialogs/xml-diagnostics.md) +- [Xml Doc Configure](./dialogs/xml-doc-configure.md) + +### Choosers & launchers (28) + +- [Atomic Reference Launcher](./choosers-launchers/atomic-reference-launcher.md) +- [Audio Visual Launcher](./choosers-launchers/audio-visual-launcher.md) +- [Configure Writing Systems Dlg](./choosers-launchers/configure-writing-systems-dlg.md) +- [Entry Sequence Reference Launcher](./choosers-launchers/entry-sequence-reference-launcher.md) +- [Gen Date Chooser Dlg](./choosers-launchers/gen-date-chooser-dlg.md) +- [Gen Date Launcher](./choosers-launchers/gen-date-launcher.md) +- [Ghost Lex Ref Launcher](./choosers-launchers/ghost-lex-ref-launcher.md) +- [Ghost Reference Vector Launcher](./choosers-launchers/ghost-reference-vector-launcher.md) +- [Lex Reference Collection Launcher](./choosers-launchers/lex-reference-collection-launcher.md) +- [Lex Reference Pair Launcher](./choosers-launchers/lex-reference-pair-launcher.md) +- [Lex Reference Sequence Launcher](./choosers-launchers/lex-reference-sequence-launcher.md) +- [Lex Reference Tree Branches Launcher](./choosers-launchers/lex-reference-tree-branches-launcher.md) +- [Lex Reference Tree Root Launcher](./choosers-launchers/lex-reference-tree-root-launcher.md) +- [Lex Reference Unidirectional Launcher](./choosers-launchers/lex-reference-unidirectional-launcher.md) +- [Master Category List Chooser Launcher](./choosers-launchers/master-category-list-chooser-launcher.md) +- [Morph Type Atomic Launcher](./choosers-launchers/morph-type-atomic-launcher.md) +- [Morph Type Chooser](./choosers-launchers/morph-type-chooser.md) +- [Msa Dlg Launcher](./choosers-launchers/msa-dlg-launcher.md) +- [Phone Env Reference Launcher](./choosers-launchers/phone-env-reference-launcher.md) +- [Possibility Atomic Reference Launcher](./choosers-launchers/possibility-atomic-reference-launcher.md) +- [Possibility Vector Reference Launcher](./choosers-launchers/possibility-vector-reference-launcher.md) +- [Record Reference Vector Launcher](./choosers-launchers/record-reference-vector-launcher.md) +- [Rev Entry Senses Collection Reference Launcher](./choosers-launchers/rev-entry-senses-collection-reference-launcher.md) +- [Semantic Domain Reference Launcher](./choosers-launchers/semantic-domain-reference-launcher.md) +- [Semantic Domains Chooser](./choosers-launchers/semantic-domains-chooser.md) +- [Simple Integer Match Dlg](./choosers-launchers/simple-integer-match-dlg.md) +- [User Interface Chooser](./choosers-launchers/user-interface-chooser.md) +- [Vector Reference Launcher](./choosers-launchers/vector-reference-launcher.md) + +### Tool screens (34) + +- [Adhoc Coprohib Edit](./tools/adhoc-coprohib-edit.md) +- [Analyses](./tools/analyses.md) +- [Bulk Edit Entries Or Senses](./tools/bulk-edit-entries-or-senses.md) +- [Category Browse](./tools/category-browse.md) +- [Complex Concordance](./tools/complex-concordance.md) +- [Compound Rule Advanced Edit](./tools/compound-rule-advanced-edit.md) +- [Concordance](./tools/concordance.md) +- [Corpus Statistics](./tools/corpus-statistics.md) +- [Environment Edit](./tools/environment-edit.md) +- [Features Advanced Edit](./tools/features-advanced-edit.md) +- [Grammar Sketch](./tools/grammar-sketch.md) +- [Interlinear Edit](./tools/interlinear-edit.md) +- [Lexicon Browse](./tools/lexicon-browse.md) +- [Lexicon Classified Dictionary](./tools/lexicon-classified-dictionary.md) +- [Lexicon Dictionary](./tools/lexicon-dictionary.md) +- [Lexicon Edit Popup](./tools/lexicon-edit-popup.md) +- [Lexicon Edit](./tools/lexicon-edit.md) +- [Lexicon Problems](./tools/lexicon-problems.md) +- [Natural Classedit](./tools/natural-classedit.md) +- [Notebook Browse](./tools/notebook-browse.md) +- [Notebook Document](./tools/notebook-document.md) +- [Notebook Edit](./tools/notebook-edit.md) +- [Phoneme Edit](./tools/phoneme-edit.md) +- [Phonological Features Advanced Edit](./tools/phonological-features-advanced-edit.md) +- [Phonological Rule Edit](./tools/phonological-rule-edit.md) +- [Pos Edit](./tools/pos-edit.md) +- [Prod Restrict Edit](./tools/prod-restrict-edit.md) +- [Rapid Data Entry](./tools/rapid-data-entry.md) +- [Reversal Tool Bulk Edit Reversal Entries](./tools/reversal-tool-bulk-edit-reversal-entries.md) +- [Reversal Tool Edit Complete](./tools/reversal-tool-edit-complete.md) +- [Spelling](./tools/spelling.md) +- [Tool Bulk Edit Phonemes](./tools/tool-bulk-edit-phonemes.md) +- [Tool Bulk Edit Wordforms](./tools/tool-bulk-edit-wordforms.md) +- [Word List Concordance](./tools/word-list-concordance.md) + +### List editors (CmPossibility) (33) + +- [Affix Category Edit](./lists/affix-category-edit.md) +- [Annotation Def Edit](./lists/annotation-def-edit.md) +- [Anthro Edit](./lists/anthro-edit.md) +- [Chartmark Edit](./lists/chartmark-edit.md) +- [Charttemp Edit](./lists/charttemp-edit.md) +- [Complex Entry Type Edit](./lists/complex-entry-type-edit.md) +- [Confidence Edit](./lists/confidence-edit.md) +- [Dialects List Edit](./lists/dialects-list-edit.md) +- [Domain Type Edit](./lists/domain-type-edit.md) +- [Education Edit](./lists/education-edit.md) +- [Ext Note Type Edit](./lists/ext-note-type-edit.md) +- [Feature Types Advanced Edit](./lists/feature-types-advanced-edit.md) +- [Genres Edit](./lists/genres-edit.md) +- [Languages List Edit](./lists/languages-list-edit.md) +- [Lex Ref Edit](./lists/lex-ref-edit.md) +- [Locations Edit](./lists/locations-edit.md) +- [Morph Type Edit](./lists/morph-type-edit.md) +- [People Edit](./lists/people-edit.md) +- [Positions Edit](./lists/positions-edit.md) +- [Publications Edit](./lists/publications-edit.md) +- [Rec Type Edit](./lists/rec-type-edit.md) +- [Restrictions Edit](./lists/restrictions-edit.md) +- [Reversal Tool Reversal Index Pos](./lists/reversal-tool-reversal-index-pos.md) +- [Role Edit](./lists/role-edit.md) +- [Semantic Domain Edit](./lists/semantic-domain-edit.md) +- [Sense Status Edit](./lists/sense-status-edit.md) +- [Sense Type Edit](./lists/sense-type-edit.md) +- [Status Edit](./lists/status-edit.md) +- [Text Markup Tags Edit](./lists/text-markup-tags-edit.md) +- [Time Of Day Edit](./lists/time-of-day-edit.md) +- [Translation Type Edit](./lists/translation-type-edit.md) +- [Usage Type Edit](./lists/usage-type-edit.md) +- [Variant Entry Type Edit](./lists/variant-entry-type-edit.md) + +## Phase 2 — shell / framework / native rendering (net10 + cross-platform) + +### Shell & framework (6) + +- [App Lifetime Startup](./phase2/shell/app-lifetime-startup.md) +- [Main Window](./phase2/shell/main-window.md) +- [Mediator Propertytable](./phase2/shell/mediator-propertytable.md) +- [Menus Toolbars Statusbar](./phase2/shell/menus-toolbars-statusbar.md) +- [Panes Splitters](./phase2/shell/panes-splitters.md) +- [Sidebar Navigation](./phase2/shell/sidebar-navigation.md) + +### Native rendering (decommission targets) (6) + +- [Buffered Draw](./phase2/native-render/buffered-draw.md) +- [Datatree Slice Framework](./phase2/native-render/datatree-slice-framework.md) +- [Gecko Pdf Preview](./phase2/native-render/gecko-pdf-preview.md) +- [Graphite Engine](./phase2/native-render/graphite-engine.md) +- [Managed Views Host](./phase2/native-render/managed-views-host.md) +- [Views Engine](./phase2/native-render/views-engine.md) diff --git a/Docs/migration/README.md b/Docs/migration/README.md new file mode 100644 index 0000000000..7b1577c528 --- /dev/null +++ b/Docs/migration/README.md @@ -0,0 +1,55 @@ +# WinForms → Avalonia screen migration index + +This folder documents every FieldWorks WinForms screen in the lexical-edit migration +program: what it is, what it looks like (PNGs from live legacy FLEx), and the gotchas a +teammate needs to migrate it. Each **deferred** screen has a doc here + a JIRA ticket. + +> **[INVENTORY.md](./INVENTORY.md) is the master index** — every in-scope component +> (227 and counting), grouped by dialogs / choosers-launchers / tool-screens / list-editors, +> plus Phase-2 shell & native-render under `phase2/`. Stubs use `_STUB_TEMPLATE.md`; deepen to +> `_TEMPLATE.md` on pickup. The detailed deferred-dialog docs below are the worked examples. + +**Phase model.** Phase 1 (this program) = high-value features/bugfix-grade migrations behind +the `UIMode=New` flag (default `Legacy`, so nothing ships to default users yet). Phase 2 = +net10 / multiplatform / shell conversion (gated until Phase 1 + tester burn-down complete). + +**Canonical-per-primitive.** We keep ONE canonical screen per UI primitive as the reference +implementation teammates copy; everything else is documented here and backed out, to be +re-built/finished under its JIRA ticket. + +## Canonical screens (KEPT — copy these) +| Primitive | Canonical screen | Where | +|---|---|---| +| Virtualized editable TABLE | Lexicon Browse/Edit pane | `Src/Common/FwAvalonia/Region/LexicalBrowseView.cs` | +| Composed detail editor (DataTree replacement) | Lexicon Edit entry pane | `Src/xWorks/FullEntryRegionComposer.cs` | +| Tree + multi-selector | ChooserDialog | `Src/Common/FwAvaloniaDialogs/ChooserDialogView.axaml` | +| Tabs | OptionsDialog | `Src/Common/FwAvaloniaDialogs/OptionsDialogView.axaml` | +| Owned-control composite form | InsertEntryDialog | `Src/Common/FwAvaloniaDialogs/InsertEntryDialogView.axaml` | +| Search + list selector | EntryGoDialog | `Src/Common/FwAvaloniaDialogs/EntryGoDialogView.axaml` | + +Also kept (same composer, other record types): **notebookEdit**, **posEdit**. + +## Split into their own follow-up PRs (XL, isolated) +| Surface | OpenSpec change | +|---|---| +| Words interlinear editor (`Analyses`) | `avalonia-interlinear-editor` | +| Grammar rule family (6 tools) | `avalonia-rule-formula-editor` | + +## Deferred screens (DOCUMENTED + backed out → JIRA) +| Screen | Primitive | Doc | JIRA | +|---|---|---|---| +| ConfigureColumns | dual-list reorder | [configure-columns.md](./configure-columns.md) | _TBD_ | +| AddNewSense | owned-control form | [add-new-sense.md](./add-new-sense.md) | _TBD_ | +| MsaCreator | owned-control form | [msa-creator.md](./msa-creator.md) | _TBD_ | +| FeatureChooser | picker | [feature-chooser.md](./feature-chooser.md) | _TBD_ | +| CreateFeature | plain-form | [create-feature.md](./create-feature.md) | _TBD_ | +| DeleteConfirmation | plain-form | [delete-confirmation.md](./delete-confirmation.md) | _TBD_ | +| LexReferenceDetails | plain-form | [lex-reference-details.md](./lex-reference-details.md) | _TBD_ | +| FilterFor | plain-form / radios | [filter-for.md](./filter-for.md) | _TBD_ | +| DateRangeFilter | plain-form + date pickers | [date-range-filter.md](./date-range-filter.md) | _TBD_ | +| FindReplace | plain-form | [find-replace.md](./find-replace.md) | _TBD_ | +| PictureProperties | plain-form + media | [picture-properties.md](./picture-properties.md) | _TBD_ | +| SpecialCharacter | plain-form + list | [special-character.md](./special-character.md) | _TBD_ | +| WritingSystemProperties (core) | plain-form | [writing-system-properties.md](./writing-system-properties.md) | _TBD_ | + +> See [`_TEMPLATE.md`](./_TEMPLATE.md) for the per-screen doc format. PNGs go in `./images/`. diff --git a/Docs/migration/_STUB_TEMPLATE.md b/Docs/migration/_STUB_TEMPLATE.md new file mode 100644 index 0000000000..38b1d14682 --- /dev/null +++ b/Docs/migration/_STUB_TEMPLATE.md @@ -0,0 +1,35 @@ + + +# (``) + +| | | +|---|---| +| **Legacy class** | `` (`Src/…/.cs`) | +| **Area** | Lexicon / Grammar / Texts&Words / Notebook / Lists / Reversal / Shell / App-wide | +| **Type** | dialog / chooser / launcher / tool-screen / list-editor / browse / detail / shell / native-render | +| **Primitive** | plain-form / TABLE / TREE / MULTI-SELECTOR / TABS / owned-control / n/a | +| **State** | legacy / coexist (behind `UIMode=New`) / migrated / retired | +| **Phase** | 1 / 2 | +| **Canonical reference** | the kept canonical screen to copy when migrating (see Docs/migration/README.md) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![before](./images/-before.png) | ![after](./images/-after.png) | + +Same seeded data in both; attach both to the JIRA ticket. `before` = `fieldworks-winapp` capture +(launch-per-tool script for tool screens; `ScreenshotHarnessTests` harness for dialogs). `after` = +the Avalonia visual test for this surface (`fieldworks-semantic-render-parity` lane), added when the +Avalonia surface is built. + +## What it is + + +## Notes / gotchas +- + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (and capture legacy PNGs via the +> `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/_TEMPLATE.md b/Docs/migration/_TEMPLATE.md new file mode 100644 index 0000000000..bad1a2b285 --- /dev/null +++ b/Docs/migration/_TEMPLATE.md @@ -0,0 +1,46 @@ + + +# (legacy ``) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.…` (`Src/…/.cs`) | +| **Area / tool** | e.g. Lexicon › Browse filter bar | +| **Primitive(s)** | plain-form / TABLE / TREE / MULTI-SELECTOR / TABS / owned-control | +| **Canonical reference** | the kept canonical screen to copy (e.g. ChooserDialog for tree+multi-select) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/View.axaml(.cs)` @ git `` (recover from history) | +| **JIRA** | LT-XXXXX | + +## What it is +One or two sentences: what the user does with this screen and when it opens. + +## What it looks like (before / after) +Same seeded data in both, so the comparison is honest. Attach BOTH PNGs to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![ legacy](./images/-before.png) | ![ avalonia](./images/-after.png) | + +- **before** (legacy truth baseline): capture via the `fieldworks-winapp` skill — the launch-per-tool + script (tool screens) or the dialog harness (`ScreenshotHarnessTests`, dialogs). UIMode=Legacy, Sena 3. +- **after** (Avalonia): rendered from the SAME data by the Avalonia visual test for this surface in + `FwAvaloniaDialogs(Tests)` / `FwAvaloniaTests` — the `fieldworks-semantic-render-parity` lane. Added + when the Avalonia surface exists (during this ticket's implementation). + + +## Behaviour to preserve (parity checklist) +- [ ] …each interactive behaviour the legacy screen has +- [ ] validation / OK-gating rules +- [ ] keyboard / focus / accessibility expectations + +## Migration gotchas +- WS/RTL, owned-control hosting, undo-fencing, layout-choice resolution, etc. +- Anything the backed-out stub got wrong or left as `// PARITY`. + +## Wiring +- Legacy call site(s): `.cs:` +- The Avalonia path branched on `UIMode=New` here before back-out: `.cs:` +- Re-wiring target: this launcher/host should re-enter the Avalonia surface behind the flag. diff --git a/Docs/migration/add-new-sense.md b/Docs/migration/add-new-sense.md new file mode 100644 index 0000000000..1df2bf5de0 --- /dev/null +++ b/Docs/migration/add-new-sense.md @@ -0,0 +1,48 @@ +# Add New Sense (legacy `AddNewSenseDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.AddNewSenseDlg` (`Src/LexText/LexTextControls/AddNewSenseDlg.cs`) | +| **Area / tool** | Interlinear / Sandbox › morpheme/sense combo › "Add new sense…" | +| **Primitive(s)** | owned-control form (FwMultiWsTextField gloss + FwMsaGroupBox grammatical-info) | +| **Canonical reference** | InsertEntryDialog (owned-control form hosting a gloss field + FwMsaGroupBox) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/AddNewSenseDialogView.axaml(.cs)` + `AddNewSenseDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user add a new sense to an existing lexical entry from the interlinear Sandbox morpheme +combo: type a gloss (one row per analysis WS) and set the grammatical info (MSA), creating the sense +in one undoable step. Opens from the Sandbox sense/morph combo's "Add new sense" item. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![add-new-sense legacy](./images/add-new-sense-before.png) | ![add-new-sense avalonia](./images/add-new-sense-after.png) | +## Behaviour to preserve (parity checklist) +- [ ] Read-only citation form / headword shown at top (from the entry). +- [ ] Editable gloss: one `FwMultiWsTextField` row per analysis WS. +- [ ] Owned `FwMsaGroupBox` for grammatical info: POS choosers, slot picker, inflection-class picker, inflection-feature editor. +- [ ] OK is gated when the gloss is empty (legacy `AddNewSenseDlg_Closing` shows `ksFillInGloss` and cancels OK). +- [ ] No gate on the MSA box (always valid). +- [ ] Help button shown only when a help topic is available. + +## Migration gotchas +- WS/RTL: the gloss is multi-WS — each analysis WS gets its own row and must round-trip the right TsString. +- Owned-control hosting: the stub mounts `FwMsaGroupBox` and stages edits into `InMemoryRegionEditContext`. +- The stub header marks this an "MSA-port Stage 5 replacement for the legacy AddNewSenseDlg in New-UI mode". +- Stub markers to honour: `// Stage 3 wires the feature dialogs` and `// §19b Stage 3: wire the inline + create-feature / add-value affordances (replacing the deferred no-op)` — the inline create-feature/add-value + affordances are wired through `LcmInflectionFeatureCreateWiring`, verify they re-attach. + +## Wiring +- Legacy call site(s): `Src/LexText/Interlinear/SandboxBase.ComboHandlers.cs` — the `using (new AddNewSenseDlg(...))` + block in the Legacy branch (below line 2495 in the same method). +- The Avalonia path branched on `UIMode=New` here before back-out: `SandboxBase.ComboHandlers.cs:2492` — + `LcmAddNewSenseDialogLauncher.Show(...)`, inside `if (AvaloniaOptionsDialogLauncher.ShouldUseAvaloniaOptionsDialog(uiMode))` + (the `UIMode` test is at line 2488). Launcher: `LcmAddNewSenseDialogLauncher` + (`Src/LexText/LexTextControls/LcmAddNewSenseDialogLauncher.cs`). +- Re-wiring target: this launcher/host should re-enter the Avalonia surface behind `UIMode=New`; + Legacy keeps `AddNewSenseDlg`. diff --git a/Docs/migration/choosers-launchers/atomic-reference-launcher.md b/Docs/migration/choosers-launchers/atomic-reference-launcher.md new file mode 100644 index 0000000000..6fca2c6db5 --- /dev/null +++ b/Docs/migration/choosers-launchers/atomic-reference-launcher.md @@ -0,0 +1,21 @@ +# Atomic Reference Launcher (`AtomicReferenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.AtomicReferenceLauncher` (`Src/Common/Controls/DetailControls/AtomicReferenceLauncher.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwOptionPicker (atomic owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +The in-slice control for an atomic (single-valued) object reference: shows the current target as an embedded view plus a launch button that opens a chooser to set/replace it. + +## Notes / gotchas +- Owned control embedded in a slice; communicates size changes back to the embedding slice. +- Setting the reference is a model write — wrap in the LCM unit-of-work; preserve undo grouping. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/audio-visual-launcher.md b/Docs/migration/choosers-launchers/audio-visual-launcher.md new file mode 100644 index 0000000000..1829d4cbc8 --- /dev/null +++ b/Docs/migration/choosers-launchers/audio-visual-launcher.md @@ -0,0 +1,21 @@ +# Audio/Visual Launcher (`AudioVisualLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.AudioVisualLauncher` (`Src/Common/Controls/DetailControls/AudioVisualSlice.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwOptionPicker (atomic owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +The button + filename view for a media (audio/visual) field; subclasses `ButtonLauncher` and launches the media player along with the embedded filename display. Defined inside `AudioVisualSlice.cs`. + +## Notes / gotchas +- Involves a linked media file path and an external player — porting must handle the LinkedFiles path resolution and the launch of the player, not just a chooser. +- Owned control inside `AudioVisualSlice`; not a standalone dialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/configure-writing-systems-dlg.md b/Docs/migration/choosers-launchers/configure-writing-systems-dlg.md new file mode 100644 index 0000000000..f1a7f5f2f3 --- /dev/null +++ b/Docs/migration/choosers-launchers/configure-writing-systems-dlg.md @@ -0,0 +1,21 @@ +# Configure Writing Systems (`ConfigureWritingSystemsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.ConfigureWritingSystemsDlg` (`Src/Common/Controls/DetailControls/ConfigureWritingSystemsDlg.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | dialog | +| **Primitive** | MULTI-SELECTOR | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (multi-select checklist) | +| **JIRA** | LT-XXXXX | + +## What it is +Used by `MultiStringSlice` to choose *which* writing systems a multi-string slice displays (a checklist of available WSs). Distinct from `writing-system-properties.md`, which edits a single WS's properties — this one only selects the set of WSs shown. + +## Notes / gotchas +- NOT the WS properties editor; it is a WS visibility selector for a slice. Keep the two migration tickets separate. +- Result feeds back into the slice's displayed-WS list; verify ordering and persistence of the selection. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/entry-sequence-reference-launcher.md b/Docs/migration/choosers-launchers/entry-sequence-reference-launcher.md new file mode 100644 index 0000000000..c57f1aa6d4 --- /dev/null +++ b/Docs/migration/choosers-launchers/entry-sequence-reference-launcher.md @@ -0,0 +1,21 @@ +# Entry Sequence Reference Launcher (`EntrySequenceReferenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.EntrySequenceReferenceLauncher` (`Src/LexText/Lexicon/EntrySequenceReferenceLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for an ordered sequence of entry references (e.g. complex-form components). + +## Notes / gotchas +- Subclass of VectorReferenceLauncher. State=coexist (UIMode-gated). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/gen-date-chooser-dlg.md b/Docs/migration/choosers-launchers/gen-date-chooser-dlg.md new file mode 100644 index 0000000000..3bab4ecd38 --- /dev/null +++ b/Docs/migration/choosers-launchers/gen-date-chooser-dlg.md @@ -0,0 +1,21 @@ +# Generic Date Chooser (`GenDateChooserDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.GenDateChooserDlg` (`Src/Common/Controls/DetailControls/GenDateChooserDlg.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | nearest (small plain-form; OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it is +A chooser dialog for generic dates (`GenDate`) — lets the user pick an approximate/partial date (precision, era, possibly partial year/month/day). Launched by `GenDateLauncher`. + +## Notes / gotchas +- Edits the FieldWorks `GenDate` type (supports imprecise dates: before/about/after, partial fields) — not a plain calendar date. +- Returns the chosen `GenDate` to the launching slice. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/gen-date-launcher.md b/Docs/migration/choosers-launchers/gen-date-launcher.md new file mode 100644 index 0000000000..7320dfbd0d --- /dev/null +++ b/Docs/migration/choosers-launchers/gen-date-launcher.md @@ -0,0 +1,20 @@ +# Generic Date Launcher (`GenDateLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.GenDateLauncher` (`Src/Common/Controls/DetailControls/GenDateLauncher.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwOptionPicker (atomic owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +A button launcher (subclass of `ButtonLauncher`) that opens the generic-date chooser (`GenDateChooserDlg`) to edit a `GenDate` field shown in a slice. + +## Notes / gotchas +- Pairs with `GenDateChooserDlg`; edits the FieldWorks `GenDate` (imprecise/partial date) type, not a plain date. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/ghost-lex-ref-launcher.md b/Docs/migration/choosers-launchers/ghost-lex-ref-launcher.md new file mode 100644 index 0000000000..e7d076fc64 --- /dev/null +++ b/Docs/migration/choosers-launchers/ghost-lex-ref-launcher.md @@ -0,0 +1,21 @@ +# Ghost Lex Ref Launcher (`GhostLexRefLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.GhostLexRefLauncher` (`Src/LexText/Lexicon/GhostLexRefSlice.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control launcher for a ghost (empty-placeholder) lexical-reference slice; creates the relation on first use. + +## Notes / gotchas +- Subclass of ButtonLauncher; defined in GhostLexRefSlice.cs (line 50). State=coexist (UIMode-gated). Lexical-relations slice family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/ghost-reference-vector-launcher.md b/Docs/migration/choosers-launchers/ghost-reference-vector-launcher.md new file mode 100644 index 0000000000..1db0dcd26b --- /dev/null +++ b/Docs/migration/choosers-launchers/ghost-reference-vector-launcher.md @@ -0,0 +1,21 @@ +# Ghost Reference Vector Launcher (`GhostReferenceVectorLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.GhostReferenceVectorLauncher` (`Src/Common/Controls/DetailControls/GhostReferenceVectorSlice.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwReferenceVectorField (vector owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +Vector reference launcher used where a reference-vector slice would appear but the owning object does not yet exist (e.g. the Info tab of Texts/Words on a ghost Notebook record); subclasses `ButtonLauncher`. Inner class of `GhostReferenceVectorSlice`. + +## Notes / gotchas +- "Ghost" semantics: the owning object is NOT created until the user runs the chooser and clicks OK — porting must defer object creation to the OK path (data-loss/empty-object risk if created early). +- Candidate list comes from `ReferenceTargetServices.RnGenericRecReferenceTargetOwner`; currently used only for ghost Notebook-record properties (YAGNI note in source about configurable candidates). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/lex-reference-collection-launcher.md b/Docs/migration/choosers-launchers/lex-reference-collection-launcher.md new file mode 100644 index 0000000000..78f43a443a --- /dev/null +++ b/Docs/migration/choosers-launchers/lex-reference-collection-launcher.md @@ -0,0 +1,21 @@ +# Lex Reference Collection Launcher (`LexReferenceCollectionLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.LexReferenceCollectionLauncher` (`Src/LexText/Lexicon/LexReferenceCollectionLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for a lexical-relation COLLECTION reference; opens a chooser to add/remove members. + +## Notes / gotchas +- Subclass of VectorReferenceLauncher. State=coexist: file participates in UIMode gating. Part of the lexical-relations slice family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/lex-reference-pair-launcher.md b/Docs/migration/choosers-launchers/lex-reference-pair-launcher.md new file mode 100644 index 0000000000..f93b7831e0 --- /dev/null +++ b/Docs/migration/choosers-launchers/lex-reference-pair-launcher.md @@ -0,0 +1,21 @@ +# Lex Reference Pair Launcher (`LexReferencePairLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.LexReferencePairLauncher` (`Src/LexText/Lexicon/LexReferencePairLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for a PAIR (asymmetric) lexical-relation reference. + +## Notes / gotchas +- Subclass of AtomicReferenceLauncher. State=coexist (UIMode-gated). Lexical-relations slice family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/lex-reference-sequence-launcher.md b/Docs/migration/choosers-launchers/lex-reference-sequence-launcher.md new file mode 100644 index 0000000000..975a53e91c --- /dev/null +++ b/Docs/migration/choosers-launchers/lex-reference-sequence-launcher.md @@ -0,0 +1,21 @@ +# Lex Reference Sequence Launcher (`LexReferenceSequenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.LexReferenceSequenceLauncher` (`Src/LexText/Lexicon/LexReferenceSequenceLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for a SEQUENCE (ordered) lexical-relation reference. + +## Notes / gotchas +- Subclass of VectorReferenceLauncher. State=coexist (UIMode-gated). Lexical-relations slice family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/lex-reference-tree-branches-launcher.md b/Docs/migration/choosers-launchers/lex-reference-tree-branches-launcher.md new file mode 100644 index 0000000000..f1a7fd427c --- /dev/null +++ b/Docs/migration/choosers-launchers/lex-reference-tree-branches-launcher.md @@ -0,0 +1,21 @@ +# Lex Reference Tree Branches Launcher (`LexReferenceTreeBranchesLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.LexReferenceTreeBranchesLauncher` (`Src/LexText/Lexicon/LexReferenceTreeBranchesLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for the branches (children) side of a tree lexical relation. + +## Notes / gotchas +- Subclass of VectorReferenceLauncher. State=coexist (UIMode-gated). Lexical-relations slice family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/lex-reference-tree-root-launcher.md b/Docs/migration/choosers-launchers/lex-reference-tree-root-launcher.md new file mode 100644 index 0000000000..d917f358ff --- /dev/null +++ b/Docs/migration/choosers-launchers/lex-reference-tree-root-launcher.md @@ -0,0 +1,21 @@ +# Lex Reference Tree Root Launcher (`LexReferenceTreeRootLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.LexReferenceTreeRootLauncher` (`Src/LexText/Lexicon/LexReferenceTreeRootLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for the root (parent) side of a tree lexical relation. + +## Notes / gotchas +- Subclass of AtomicReferenceLauncher. State=coexist (UIMode-gated). Lexical-relations slice family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/lex-reference-unidirectional-launcher.md b/Docs/migration/choosers-launchers/lex-reference-unidirectional-launcher.md new file mode 100644 index 0000000000..f511940d5a --- /dev/null +++ b/Docs/migration/choosers-launchers/lex-reference-unidirectional-launcher.md @@ -0,0 +1,21 @@ +# Lex Reference Unidirectional Launcher (`LexReferenceUnidirectionalLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.LexReferenceUnidirectionalLauncher` (`Src/LexText/Lexicon/LexReferenceUnidirectionalLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for a UNIDIRECTIONAL lexical-relation reference. + +## Notes / gotchas +- Subclass of VectorReferenceLauncher. State=coexist (UIMode-gated). Lexical-relations slice family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/master-category-list-chooser-launcher.md b/Docs/migration/choosers-launchers/master-category-list-chooser-launcher.md new file mode 100644 index 0000000000..ab206a7ac1 --- /dev/null +++ b/Docs/migration/choosers-launchers/master-category-list-chooser-launcher.md @@ -0,0 +1,21 @@ +# Master Category List Chooser Launcher (`MasterCategoryListChooserLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MasterCategoryListChooserLauncher` (`Src/LexText/LexTextControls/MSAPopupTreeManager.cs`) | +| **Area** | Grammar | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Idle-time launcher that opens MasterCategoryListDlg to choose a grammatical category for a sense (added to avoid LT-11548 dispose race in MSAPopupTreeManager). + +## Notes / gotchas +- Defined inside MSAPopupTreeManager.cs (line 489). Opens MasterCategoryListDlg (which has its own Avalonia coexist path via LcmCreatePartOfSpeechLauncher). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/morph-type-atomic-launcher.md b/Docs/migration/choosers-launchers/morph-type-atomic-launcher.md new file mode 100644 index 0000000000..6ab402dcc3 --- /dev/null +++ b/Docs/migration/choosers-launchers/morph-type-atomic-launcher.md @@ -0,0 +1,21 @@ +# Morph Type Atomic Launcher (`MorphTypeAtomicLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.MorphTypeAtomicLauncher` (`Src/Common/Controls/DetailControls/MorphTypeAtomicLauncher.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwOptionPicker (atomic owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +Atomic reference launcher for the morph type of a lexeme/allomorph; subclasses `PossibilityAtomicReferenceLauncher` and opens the `MorphTypeChooser` (with its "Show all types" toggle). + +## Notes / gotchas +- Launches `MorphTypeChooser` rather than the generic list chooser — carry over the "show all types" behaviour. +- Changing morph type can change allomorph class/behaviour in the model; verify the write path and any side effects. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/morph-type-chooser.md b/Docs/migration/choosers-launchers/morph-type-chooser.md new file mode 100644 index 0000000000..a0ca61e38d --- /dev/null +++ b/Docs/migration/choosers-launchers/morph-type-chooser.md @@ -0,0 +1,21 @@ +# Morph Type Chooser (`MorphTypeChooser`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.MorphTypeChooser` (`Src/Common/Controls/DetailControls/MorphTypeChooser.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | chooser | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +A `SimpleListChooser` subclass that picks a morph type, adding a "Show all types" toggle to filter the hierarchical morph-type list. + +## Notes / gotchas +- Hierarchical (extends the tree-based `SimpleListChooser`/`ReallySimpleListChooser`); not flat. +- Adds a `&Show all types` link/button that re-loads the candidate list between the restricted and full type sets. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/msa-dlg-launcher.md b/Docs/migration/choosers-launchers/msa-dlg-launcher.md new file mode 100644 index 0000000000..2ad0868f3a --- /dev/null +++ b/Docs/migration/choosers-launchers/msa-dlg-launcher.md @@ -0,0 +1,21 @@ +# MSA Dialog Launcher (`MSADlgLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.MSADlgLauncher` (`Src/LexText/Lexicon/MSADlgLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +ButtonLauncher slice that opens the Create Grammatical Info (MSA) dialog from a sense's MSA slice. + +## Notes / gotchas +- State=coexist: in UIMode=New it calls LcmMsaCreatorDialogLauncher.Show seeded from the existing MSA; Legacy keeps WinForms MsaCreatorDlg. The launcher (slice button) is a distinct component from the MsaCreatorDlg it opens. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/phone-env-reference-launcher.md b/Docs/migration/choosers-launchers/phone-env-reference-launcher.md new file mode 100644 index 0000000000..dc38dfc138 --- /dev/null +++ b/Docs/migration/choosers-launchers/phone-env-reference-launcher.md @@ -0,0 +1,21 @@ +# Phonological Environment Reference Launcher (`PhoneEnvReferenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.PhoneEnvReferenceLauncher` (`Src/Common/Controls/DetailControls/PhoneEnvReferenceLauncher.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwReferenceVectorField (vector owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +The in-slice control for editing the set of phonological environments on an allomorph; shows the environment strings and a launch button, subclasses `ReferenceLauncher`. + +## Notes / gotchas +- Environment strings have their own parse/validation syntax (slash, underscore, brackets) — porting must preserve environment validation and error display, not just plain text editing. +- Communicates size changes back to the embedding slice. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/possibility-atomic-reference-launcher.md b/Docs/migration/choosers-launchers/possibility-atomic-reference-launcher.md new file mode 100644 index 0000000000..2f9bab711e --- /dev/null +++ b/Docs/migration/choosers-launchers/possibility-atomic-reference-launcher.md @@ -0,0 +1,21 @@ +# Possibility Atomic Reference Launcher (`PossibilityAtomicReferenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.PossibilityAtomicReferenceLauncher` (`Src/Common/Controls/DetailControls/PossibilityAtomicReferenceLauncher.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwOptionPicker (atomic owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +Atomic reference launcher specialized for a single possibility-list item (e.g. a single category from a `CmPossibilityList`); subclasses `AtomicReferenceLauncher` and implements `IVwNotifyChange`. + +## Notes / gotchas +- Listens for model changes (`IVwNotifyChange`) to refresh the displayed value — unsubscribe on dispose to avoid leaks. +- Candidate list is a hierarchical possibility list; chooser is the tree-based list chooser. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/possibility-vector-reference-launcher.md b/Docs/migration/choosers-launchers/possibility-vector-reference-launcher.md new file mode 100644 index 0000000000..e364764273 --- /dev/null +++ b/Docs/migration/choosers-launchers/possibility-vector-reference-launcher.md @@ -0,0 +1,21 @@ +# Possibility Vector Reference Launcher (`PossibilityVectorReferenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.PossibilityVectorReferenceLauncher` (`Src/Common/Controls/DetailControls/PossibilityVectorReferenceLauncher.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwReferenceVectorField (vector owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +Vector reference launcher specialized for possibility-list items (e.g. multiple categories/domains from a `CmPossibilityList`); subclasses `VectorReferenceLauncher` and implements `IVwNotifyChange`. Base class for `SemanticDomainReferenceLauncher`. + +## Notes / gotchas +- Listens for model changes (`IVwNotifyChange`) to refresh the displayed list — unsubscribe on dispose. +- Multi-select against a hierarchical possibility list; chooser is the tree-based list chooser. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/record-reference-vector-launcher.md b/Docs/migration/choosers-launchers/record-reference-vector-launcher.md new file mode 100644 index 0000000000..e1f8d054af --- /dev/null +++ b/Docs/migration/choosers-launchers/record-reference-vector-launcher.md @@ -0,0 +1,21 @@ +# Record Reference Vector Launcher (`RecordReferenceVectorLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.RecordReferenceVectorLauncher` (`Src/LexText/Lexicon/RecordReferenceVectorLauncher.cs`) | +| **Area** | Notebook | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for a vector reference field on a Data Notebook record. + +## Notes / gotchas +- Subclass of VectorReferenceLauncher. Not in the UIMode grep -> State=legacy. Notebook slice family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/rev-entry-senses-collection-reference-launcher.md b/Docs/migration/choosers-launchers/rev-entry-senses-collection-reference-launcher.md new file mode 100644 index 0000000000..c53ff326e7 --- /dev/null +++ b/Docs/migration/choosers-launchers/rev-entry-senses-collection-reference-launcher.md @@ -0,0 +1,21 @@ +# Rev Entry Senses Collection Reference Launcher (`RevEntrySensesCollectionReferenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.RevEntrySensesCollectionReferenceLauncher` (`Src/LexText/Lexicon/RevEntrySensesCollectionReferenceLauncher.cs`) | +| **Area** | Lexicon | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Owned-control slice launcher for the senses collection of a reversal entry. + +## Notes / gotchas +- Subclass of VectorReferenceLauncher. State=coexist (UIMode-gated). Reversal slice. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/choosers-launchers/semantic-domain-reference-launcher.md b/Docs/migration/choosers-launchers/semantic-domain-reference-launcher.md new file mode 100644 index 0000000000..5ddb144ca0 --- /dev/null +++ b/Docs/migration/choosers-launchers/semantic-domain-reference-launcher.md @@ -0,0 +1,21 @@ +# Semantic Domain Reference Launcher (`SemanticDomainReferenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.SemanticDomainReferenceLauncher` (`Src/Common/Controls/DetailControls/SemanticDomainReferenceLauncher.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwReferenceVectorField (vector owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +The in-slice control for a sense's semantic domains; subclasses `PossibilityVectorReferenceLauncher` and launches the dedicated `SemanticDomainsChooser` (tree + search) rather than the generic list chooser. + +## Notes / gotchas +- `internal` class; overrides chooser launch to open `SemanticDomainsChooser` (with its search/suggest panel). +- Multi-target edit against the semantic-domain possibility list — wrap writes in the LCM unit-of-work. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/semantic-domains-chooser.md b/Docs/migration/choosers-launchers/semantic-domains-chooser.md new file mode 100644 index 0000000000..08511db7ad --- /dev/null +++ b/Docs/migration/choosers-launchers/semantic-domains-chooser.md @@ -0,0 +1,22 @@ +# Semantic Domains Chooser (`SemanticDomainsChooser`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.SemanticDomainsChooser` (`Src/Common/Controls/DetailControls/SemanticDomainsChooser.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | chooser | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +A standalone `Form` for selecting semantic domains: shows the semantic-domain hierarchy in a TreeView plus a search/suggest ListView, used when assigning semantic domains to a sense. + +## Notes / gotchas +- Multi-select against a hierarchical possibility list (semantic domains); displays both a TreeView and a ListView (see `SemanticDomainSelectionUtility`). +- Has a search/suggest panel separate from the tree — selecting in one must keep the other in sync. +- Custom `DomainNode : LabelNode` for domain display formatting. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/simple-integer-match-dlg.md b/Docs/migration/choosers-launchers/simple-integer-match-dlg.md new file mode 100644 index 0000000000..d7c78b1104 --- /dev/null +++ b/Docs/migration/choosers-launchers/simple-integer-match-dlg.md @@ -0,0 +1,21 @@ +# Simple Integer Match (`SimpleIntegerMatchDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Controls.SimpleIntegerMatchDlg` (`Src/Common/Controls/XMLViews/SimpleIntegerMatchDlg.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | nearest (OptionsDialog; sibling of FilterFor/DateRangeFilter) | +| **JIRA** | LT-XXXXX | + +## What it is +Browse-view integer column filter dialog: pick a comparison (greater than / less than / equal / not equal / <= / >= / between) and one or two integer values; used from a numeric column's "Filter for…" menu. Integer sibling of `SimpleMatchDlg` (FilterFor) and `SimpleDateMatchDlg` (DateRangeFilter). + +## Notes / gotchas +- "Between" mode enables a second `NumericUpDown` and an "and" label; other comparisons use a single value — gate UI on the selected comparison. +- Comparison index order is hard-coded (GreaterThan=0 … Between=6); preserve the mapping when porting. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/user-interface-chooser.md b/Docs/migration/choosers-launchers/user-interface-chooser.md new file mode 100644 index 0000000000..37fde7d083 --- /dev/null +++ b/Docs/migration/choosers-launchers/user-interface-chooser.md @@ -0,0 +1,21 @@ +# User Interface Chooser (`UserInterfaceChooser`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Widgets.UserInterfaceChooser` (`Src/Common/Controls/Widgets/UserInterfaceChooser.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | chooser | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwOptionPicker (owned control on a Tools/Options tab) | +| **JIRA** | LT-XXXXX | + +## What it is +A `ComboBox` subclass for a Tools/Options tab that lists the writing systems into which the program UI has been (at least partially) localized, each language name shown in its own language and script. + +## Notes / gotchas +- It is an owned control (combobox), not a dialog — embeds in the Options dialog tab, so it migrates as a control on the OptionsDialog surface rather than a standalone screen. +- Items are `LanguageDisplayItem`s; display strings are localized UI language names — localization-sensitive. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/choosers-launchers/vector-reference-launcher.md b/Docs/migration/choosers-launchers/vector-reference-launcher.md new file mode 100644 index 0000000000..6527449bb7 --- /dev/null +++ b/Docs/migration/choosers-launchers/vector-reference-launcher.md @@ -0,0 +1,21 @@ +# Vector Reference Launcher (`VectorReferenceLauncher`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Framework.DetailControls.VectorReferenceLauncher` (`Src/Common/Controls/DetailControls/VectorReferenceLauncher.cs`) | +| **Area** | App-wide (these are shared controls) | +| **Type** | launcher | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | FwReferenceVectorField (vector owned control) | +| **JIRA** | LT-XXXXX | + +## What it is +The in-slice control for a vector (multi-valued) object reference: shows the current list of targets as an embedded view plus a launch button that opens a chooser to add/remove/reorder items. + +## Notes / gotchas +- Owned control embedded in a slice; communicates size changes back to the embedding slice. +- Multi-target edits (add/remove/reorder) are model writes — wrap in the LCM unit-of-work; preserve undo grouping. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/configure-columns.md b/Docs/migration/configure-columns.md new file mode 100644 index 0000000000..6276e16c72 --- /dev/null +++ b/Docs/migration/configure-columns.md @@ -0,0 +1,40 @@ +# Configure Columns (legacy `ColumnConfigureDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Controls.ColumnConfigureDialog` (`Src/Common/Controls/XMLViews/ColumnConfigureDialog.cs`) | +| **Area / tool** | Any browse view › column header context menu › "Choose Columns…" / "More Column Choices…" | +| **Primitive(s)** | dual-list reorder (available ↔ shown ListBoxes + Add/Remove/MoveUp/MoveDown) | +| **Canonical reference** | none of the kept canonicals is a dual-list; closest patterns: OptionsDialog (list + buttons), ChooserDialog (multi-select). Build fresh against the MVVM kit. | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/ConfigureColumnsDialogView.axaml(.cs)` + `ConfigureColumnsDialogViewModel.cs` (recover from git history on this branch) | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user choose which columns appear in a browse table, in what order. Opened from the +browse column-header menu. Returns the ordered set of visible column specs. + +## What it looks like + +![Configure Columns – initial](./images/configure-columns-01.png) + +## Behaviour to preserve (parity checklist) +- [ ] Two lists: "available" (catalog, grouped) and "shown" (ordered). +- [ ] Add / Remove move items between lists; duplicates in "shown" are guarded. +- [ ] Move Up / Move Down reorder the "shown" list; disabled at ends. +- [ ] The last remaining column cannot be removed. +- [ ] OK returns the ordered visible set; Cancel discards. +- [ ] Some columns appear multiple times legitimately (e.g. per-WS) — not deduped by label. + +## Migration gotchas +- The catalog comes from the browse view's column spec XML; ordering and WS-variants matter. +- The backed-out Avalonia stub implemented the dual-list + guards but was wired only for the + `UIMode=New` browse path; verify it preserved multi-instance columns. +- Re-wiring must round-trip the same column-spec objects the legacy `BrowseViewer` consumes. + +## Wiring +- Legacy invocation: browse column-header menu → `BrowseViewer` column-config command. +- Avalonia path before back-out: `Src/xWorks/RecordBrowseView.cs:726` + (`OnConfigureColumnsRequested` instantiated `ConfigureColumnsDialogViewModel`/`View`). +- Re-wiring target: `RecordBrowseView.OnConfigureColumnsRequested` re-enters the Avalonia + dialog behind `UIMode=New`; Legacy keeps `ColumnConfigureDialog`. diff --git a/Docs/migration/create-feature.md b/Docs/migration/create-feature.md new file mode 100644 index 0000000000..03a9bc3892 --- /dev/null +++ b/Docs/migration/create-feature.md @@ -0,0 +1,53 @@ +# Create Feature / Value (legacy `MasterInflectionFeatureListDlg` / `MasterPhonologicalFeatureListDlg` blank-create link) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MasterInflectionFeatureListDlg` (`Src/LexText/LexTextControls/MasterInflectionFeatureListDlg.cs`) and `MasterPhonologicalFeatureListDlg` (`Src/LexText/LexTextControls/MasterPhonologicalFeatureListDlg.cs`) — their blank-create link | +| **Area / tool** | Feature-structure editor › inline "create new feature / value" affordance | +| **Primitive(s)** | plain-form (2 fields: Name + Abbreviation) | +| **Canonical reference** | InsertEntryDialog (closest kept canonical for a small plain-form with text fields) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/CreateFeatureDialogView.axaml(.cs)` + `CreateFeatureDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +A small dialog to create a new feature or feature value (Name + optional Abbreviation) inline from the +feature-structure editor, without going through the full master feature list. Invoked from the +`FwFeatureStructureEditor` create-feature / add-value affordances. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![master-phonological-feature-list legacy](./images/master-phonological-feature-list-before.png) | ![master-phonological-feature-list avalonia](./images/master-phonological-feature-list-after.png) | +## Behaviour to preserve (parity checklist) +- [ ] Name text field (required). +- [ ] Abbreviation text field (optional). +- [ ] OK gated on a non-empty Name; an in-dialog error message shows when Name is empty. +- [ ] Labels are parameterised for the feature vs. value flows (`NameLabel` / `AbbreviationLabel`). +- [ ] OK (default) / Cancel buttons. + +## Migration gotchas +- Stub header: "Phase-1 §19b Stage 3 … the LCModel-free collector behind the inline create affordances of + `FwFeatureStructureEditor`. It is the Avalonia replacement for the `MasterInflectionFeatureListDlg` / + `MasterPhonologicalFeatureListDlg` blank-create link". +- PARITY deferral (stub): "the heavy MGA-catalog import path is a documented PARITY deferral — it needs the + MGA assembly + GlossList XML parsing, outside this stage's clean reach." The Avalonia stub only covers the + blank-create link, not the full master-catalog import. +- The stub is LCModel-free (a collector); the launcher/wiring applies the result to the model. + +## Wiring +- Legacy call site(s): the blank-create link inside the WinForms `MasterInflectionFeatureListDlg` / + `MasterPhonologicalFeatureListDlg` (`Src/LexText/LexTextControls/`); the Legacy feature-editor path opens + that master list rather than this small dialog. +- The Avalonia path branched on `UIMode=New` here before back-out: the dialog is invoked via the + `FwMsaGroupBox` / `FwFeatureStructureEditor` create-feature + add-value events, routed through + `LcmInflectionFeatureCreateWiring` (`Src/LexText/LexTextControls/LcmInflectionFeatureCreateWiring.cs`). + Product call sites (CreateFeature / AddValue) of that wiring: + - `Src/LexText/LexTextControls/LcmMsaCreatorDialogLauncher.cs:252` and `:254` + - `Src/LexText/LexTextControls/LcmInsertEntryDialogLauncher.cs:555` and `:557` + - `Src/LexText/LexTextControls/LcmAddNewSenseDialogLauncher.cs:160` and `:162` + - Launcher: `LcmCreateFeatureLauncher` (`Src/LexText/LexTextControls/LcmCreateFeatureLauncher.cs`). +- Re-wiring target: the `LcmInflectionFeatureCreateWiring` create/add affordances re-enter the Avalonia + dialog behind `UIMode=New`; Legacy keeps the master-list blank-create link. diff --git a/Docs/migration/date-range-filter.md b/Docs/migration/date-range-filter.md new file mode 100644 index 0000000000..7e57e678a2 --- /dev/null +++ b/Docs/migration/date-range-filter.md @@ -0,0 +1,45 @@ +# Date Range Filter (legacy `SimpleDateMatchDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Controls.SimpleDateMatchDlg` (`Src/Common/Controls/XMLViews/SimpleDateMatchDlg.cs`) | +| **Area / tool** | Any browse view › date column header filter › "Filter for…" (date) | +| **Primitive(s)** | plain-form (relation combo + CalendarDatePickers) | +| **Canonical reference** | OptionsDialog (closest kept canonical for a small plain-form with controls) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/DateRangeFilterDialogView.axaml(.cs)` + `DateRangeFilterDialogViewModel.cs` (+ `DateRangeFilterPattern.cs`) @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user filter a date browse column by a relation (on / not on / on-or-before / on-or-after / +between) and one or two dates. Opens from a date column's filter "Filter for…" command. Returns a +`DateRangeFilterPattern`. + +## What it looks like + +![Date Range Filter – initial](./images/date-range-filter-01.png) + +## Behaviour to preserve (parity checklist) +- [ ] Relation combo with 5 relations: on / not on / on-or-before / on-or-after / between. +- [ ] Start-date picker (required). +- [ ] End-date picker shown only when the relation is "between". +- [ ] Date semantics: start = midnight; end = last instant of the day (23:59:59.9999999) for inclusive matching. +- [ ] OK gated: missing start date blocks OK; for "between", the end day must be on or after the start day. + +## Migration gotchas +- Stub header: "the Avalonia counterpart of the legacy `SimpleDateMatchDlg`"; the header notes "Date + semantics mirror the legacy dialog" with the MIDNIGHT / LAST-INSTANT normalisation and the + "SelectionEnd extends to the very end of the day" rule. +- Legacy uses `DateTimePicker` controls; the Avalonia stub uses `CalendarDatePicker` — verify date round-trip + and the inclusive end-of-day boundary. +- The launcher receives a `handleGenDate` callback (constructor takes `(null, handleGenDate)`); preserve the + GenDate handling on re-wiring. + +## Wiring +- Legacy call site(s): the Legacy branch of the date-filter path in `Src/xWorks/RecordBrowseView.cs` + constructs the WinForms `SimpleDateMatchDlg` (`Src/Common/Controls/XMLViews/SimpleDateMatchDlg.cs`). +- The Avalonia path branched on `UIMode=New` here before back-out (direct, no launcher): + `Src/xWorks/RecordBrowseView.cs:717` — `new FwAvaloniaDialogs.DateRangeFilterDialogViewModel(null, handleGenDate);` + (View at `:718`). +- Re-wiring target: `RecordBrowseView` date-filter path re-enters the Avalonia dialog behind `UIMode=New`; + Legacy keeps `SimpleDateMatchDlg`. diff --git a/Docs/migration/delete-confirmation.md b/Docs/migration/delete-confirmation.md new file mode 100644 index 0000000000..9e79a0d431 --- /dev/null +++ b/Docs/migration/delete-confirmation.md @@ -0,0 +1,48 @@ +# Delete Confirmation (legacy `ConfirmDeleteObjectDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FdoUi.Dialogs.ConfirmDeleteObjectDlg` (`Src/FdoUi/Dialogs/ConfirmDeleteObjectDlg.cs`) | +| **Area / tool** | Lexicon › lexical-reference slice (and other delete-object flows) › "Delete…" confirmation | +| **Primitive(s)** | plain-form (message + gated Delete/Cancel) | +| **Canonical reference** | OptionsDialog (closest kept canonical for a simple message-and-buttons plain form) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/DeleteConfirmationDialogView.axaml(.cs)` + `DeleteConfirmationDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +Confirms deletion of an object (e.g. a lexical relation): shows the affected item and asks the user to +continue, with a gated "Delete" button. Opens from delete commands such as the lexical-reference slice. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![confirm-delete-object legacy](./images/confirm-delete-object-before.png) | ![confirm-delete-object avalonia](./images/confirm-delete-object-after.png) | +## Behaviour to preserve (parity checklist) +- [ ] Top message ("You are deleting the following item:"). +- [ ] Summary of the affected object, shown in bold. +- [ ] Optional note line (orphan / relation wording), hidden when empty. +- [ ] Bottom question ("Do you want to continue…?"), hidden when `CanDelete` is false. +- [ ] Warning icon. +- [ ] Affirmative button is labelled "Delete" (not "OK") and is gated on `CanDelete`. +- [ ] When the object cannot be deleted, the dialog becomes an informational "cannot delete" message (Delete disabled, bottom question hidden). + +## Migration gotchas +- Stub header: "Phase-1 §19g". +- PARITY (stub): "the affirmative button is "Delete" (not "OK") and is gated on CanDelete; when the object + cannot be deleted, the bottom question … is hidden and Delete is disabled — the dialog becomes an + informational "cannot delete" message." Preserve both the gating and the informational-mode collapse. +- Undo-fencing: deletion runs inside the caller's undo action (e.g. `ksUndoDeleteRelation`); the dialog only + confirms — the launcher's `Confirm(...)` callback performs the model change. + +## Wiring +- Legacy call site(s): the Legacy delete paths in `Src/LexText/LexTextControls/LexReferenceMultiSlice.cs` + construct the WinForms `ConfirmDeleteObjectDlg` (`Src/FdoUi/Dialogs/ConfirmDeleteObjectDlg.cs`). +- The Avalonia path branched on `UIMode=New` here before back-out: + `Src/LexText/LexTextControls/LexReferenceMultiSlice.cs:908` and `:987` — `LcmDeleteObjectLauncher.Confirm(...)` + (one for `TargetsRS.Remove`, one for `DeleteObj`). Launcher: `LcmDeleteObjectLauncher` + (`Src/LexText/LexTextControls/LcmDeleteObjectLauncher.cs`). +- Re-wiring target: `LexReferenceMultiSlice` delete paths re-enter the Avalonia dialog behind `UIMode=New`; + Legacy keeps `ConfirmDeleteObjectDlg`. diff --git a/Docs/migration/dialogs/add-allomorph-dlg.md b/Docs/migration/dialogs/add-allomorph-dlg.md new file mode 100644 index 0000000000..036b41be3a --- /dev/null +++ b/Docs/migration/dialogs/add-allomorph-dlg.md @@ -0,0 +1,28 @@ +# Add Allomorph (`AddAllomorphDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.AddAllomorphDlg` (`Src/LexText/LexTextControls/AddAllomorphDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![add-allomorph legacy](./images/add-allomorph-before.png) | ![add-allomorph avalonia](./images/add-allomorph-after.png) | +## What it is +Search for an existing entry and add the typed form to it as an allomorph. + +## Notes / gotchas +- Subclass of EntryGoDlg (base skipped; subclass is a distinct shipping dialog). State=coexist: Avalonia path is LcmAddAllomorphDialogLauncher under UIMode=New. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/add-converter.md b/Docs/migration/dialogs/add-converter.md new file mode 100644 index 0000000000..852684d75d --- /dev/null +++ b/Docs/migration/dialogs/add-converter.md @@ -0,0 +1,32 @@ +# Add / Configure Encoding Converter (`AddCnvtrDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.AddCnvtrDlg` (`Src/FwCoreDlgs/AddCnvtrDlg.cs`) | +| **Area** | App-wide (encoding converters) | +| **Type** | dialog | +| **Primitive** | TABS | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | tabs→OptionsDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![add-cnvtr legacy](./images/add-cnvtr-before.png) | ![add-cnvtr avalonia](./images/add-cnvtr-after.png) | + +Tabs (legacy): + +![advanced](./images/add-cnvtr-tab-advanced.png) ![properties](./images/add-cnvtr-tab-properties.png) ![test](./images/add-cnvtr-tab-test.png) +## What it is +The dialog for adding/configuring encoding converters. + +## Notes / gotchas +- Hosts owned sub-controls `CnvtrPropertiesCtrl` (converter properties editor), `AdvancedEncProps` (advanced encoding properties), and `ConverterTester` (a live test pane that is Views-coupled — its `SampleView : SimpleRootSite` renders converted text). Fold these controls into this dialog's migration. +- Views-coupled via the embedded converter test pane. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/add-custom-field.md b/Docs/migration/dialogs/add-custom-field.md new file mode 100644 index 0000000000..754b9f2360 --- /dev/null +++ b/Docs/migration/dialogs/add-custom-field.md @@ -0,0 +1,28 @@ +# Add Custom Field (`AddCustomFieldDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.AddCustomFieldDlg` (`Src/xWorks/AddCustomFieldDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | TABLE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (list/table of fields with add/edit/delete) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![add-custom-field legacy](./images/add-custom-field-before.png) | ![add-custom-field avalonia](./images/add-custom-field-after.png) | +## What it is +Lets the user add and manage custom fields on a class; shows existing custom fields in a `ListView` and edits the selected field's name/type/writing-system properties. + +## Notes / gotchas +- Built entirely in code (no `.Designer.cs`); `ListView` (`m_fieldsListView`) drives a master-detail layout with the field editor controls below. +- Field type/WS controls are interdependent (selecting a type enables/disables WS pickers) — preserve the enable/disable logic. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/add-list.md b/Docs/migration/dialogs/add-list.md new file mode 100644 index 0000000000..60bd5bf6e0 --- /dev/null +++ b/Docs/migration/dialogs/add-list.md @@ -0,0 +1,29 @@ +# Add Custom List (`AddListDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.AddListDlg` (`Src/xWorks/CustomListDlg.cs`) | +| **Area** | Lists | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![custom-list legacy](./images/custom-list-before.png) | ![custom-list avalonia](./images/custom-list-after.png) | +## What it is +Creates a new TopicListEditor-style custom list: collects multilingual name/description plus hierarchy, sort-by, duplicate and display-by options, then creates the list. + +## Notes / gotchas +- Concrete subclass of the shared base `CustomListDlg` (`Src/xWorks/CustomListDlg.cs`); the base hosts the actual controls (multistring name/description via `LabeledMultiStringControl`, WS combo, display-by combo, hierarchy/sort/duplicate checkboxes). Migrate the base once and parameterise for Add vs Configure. +- Newed at `Src/xWorks/XWorksViewBase.cs:812`. +- Uses `LabeledMultiStringControl` (owned multilingual control) — needs an owned-control equivalent. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/add-new-user.md b/Docs/migration/dialogs/add-new-user.md new file mode 100644 index 0000000000..3056d2a496 --- /dev/null +++ b/Docs/migration/dialogs/add-new-user.md @@ -0,0 +1,27 @@ +# Add New User (`AddNewUserDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.AddNewUserDlg` (`Src/FwCoreDlgs/AddNewUserDlg.cs`) | +| **Area** | App-wide (user properties) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![add-new-user legacy](./images/add-new-user-before.png) | ![add-new-user avalonia](./images/add-new-user-after.png) | +## What it is +Used by the User Properties dialog when the Add button is clicked, to add a new user. + +## Notes / gotchas +- Child of `FwUserProperties`, which is itself largely obsolete (see notes there). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/add-new-vern-lang-warning.md b/Docs/migration/dialogs/add-new-vern-lang-warning.md new file mode 100644 index 0000000000..5ccce36b1a --- /dev/null +++ b/Docs/migration/dialogs/add-new-vern-lang-warning.md @@ -0,0 +1,27 @@ +# Add New Vernacular Language Warning (`AddNewVernLangWarningDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.AddNewVernLangWarningDlg` (`Src/FwCoreDlgs/AddNewVernLangWarningDlg.cs`) | +| **Area** | App-wide (writing-system management) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![add-new-vern-lang-warning legacy](./images/add-new-vern-lang-warning-before.png) | ![add-new-vern-lang-warning avalonia](./images/add-new-vern-lang-warning-after.png) | +## What it is +A warning to dissuade users from adding multiple vernacular languages when they usually want multiple writing systems of the same vernacular language. + +## Notes / gotchas +- Confirmation/warning dialog; modal. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/advanced-mt-dialog.md b/Docs/migration/dialogs/advanced-mt-dialog.md new file mode 100644 index 0000000000..238b9b43c5 --- /dev/null +++ b/Docs/migration/dialogs/advanced-mt-dialog.md @@ -0,0 +1,21 @@ +# Advanced Mark Pre/Postposed (`AdvancedMTDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Discourse.AdvancedMTDialog` (`Src/LexText/Discourse/AdvancedMTDialog.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Marks SOME of the text in a constituent-chart cell as pre/postposed from the same or different rows of the chart; the logic lives in a separate class. + +## Notes / gotchas +- Discourse constituent-chart feature; owned move-target selection control. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/anthro-field-mapping-dlg.md b/Docs/migration/dialogs/anthro-field-mapping-dlg.md new file mode 100644 index 0000000000..83e710b04d --- /dev/null +++ b/Docs/migration/dialogs/anthro-field-mapping-dlg.md @@ -0,0 +1,28 @@ +# Anthro Field Mapping (`AnthroFieldMappingDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.DataNotebook.AnthroFieldMappingDlg` (`Src/LexText/LexTextControls/DataNotebook/AnthroFieldMappingDlg.cs`) | +| **Area** | Notebook | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![anthro-field-mapping legacy](./images/anthro-field-mapping-before.png) | ![anthro-field-mapping avalonia](./images/anthro-field-mapping-after.png) | +## What it is +Maps an imported field to an anthropology-category destination during Data Notebook import. + +## Notes / gotchas +- Part of the Data Notebook SFM-import wizard mapping family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/apply-style.md b/Docs/migration/dialogs/apply-style.md new file mode 100644 index 0000000000..56342fb8a8 --- /dev/null +++ b/Docs/migration/dialogs/apply-style.md @@ -0,0 +1,28 @@ +# Apply Style (`FwApplyStyleDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwApplyStyleDlg` (`Src/FwCoreDlgs/FwApplyStyleDlg.cs`) | +| **Area** | App-wide (styles) | +| **Type** | dialog | +| **Primitive** | plain-form (style list) | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | search+list→EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user apply an existing paragraph/character style to the current selection (a lighter sibling of the full Styles dialog). + +## What it looks like (before / after) +**Live-capture / on-pickup.** The Format → Apply Style command is **disabled unless there is a live text +selection** to apply a style to (verified live: greyed out in the lexicon tool). The live-UIA menu-capture +harness (`Capture-MenuDialogs.ps1`) skips disabled leaves, so this dialog is captured when its ticket is +worked, from a text-editing context where the command is enabled. Its sibling Styles dialog (FwStylesDlg) +is captured — see [styles.md](./styles.md). + +## Notes / gotchas +- Views-coupled (references `IVwRootSite`/selection to apply styles to the active view). +- Shares the style-list helper infrastructure with the full Styles dialog (FwStylesDlg). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/archive-with-ramp.md b/Docs/migration/dialogs/archive-with-ramp.md new file mode 100644 index 0000000000..aa43a81e7f --- /dev/null +++ b/Docs/migration/dialogs/archive-with-ramp.md @@ -0,0 +1,20 @@ +# Archive With RAMP (`ArchiveWithRamp`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.ArchiveWithRamp` (`Src/FwCoreDlgs/ArchiveWithRamp.cs`) | +| **Area** | App-wide (archiving / Send-Receive) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +Dialog supporting archiving the project with RAMP (the SIL archiving tool). + +## Notes / gotchas +- Integrates with an external RAMP tool; modal. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/backup-project.md b/Docs/migration/dialogs/backup-project.md new file mode 100644 index 0000000000..ee60755227 --- /dev/null +++ b/Docs/migration/dialogs/backup-project.md @@ -0,0 +1,28 @@ +# Backup Project (`BackupProjectDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.BackupRestore.BackupProjectDlg` (`Src/FwCoreDlgs/BackupRestore/BackupProjectDlg.cs`) | +| **Area** | App-wide (backup / restore) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![backup-project legacy](./images/backup-project-before.png) | ![backup-project avalonia](./images/backup-project-after.png) | +## What it is +The Backup Project dialog — configures and runs a backup of the current project (implements `IBackupProjectView`). + +## Notes / gotchas +- View/presenter split (`IBackupProjectView` / `BackupProjectPresenter`). +- May launch `ChangeDefaultBackupDir` for the backup-directory option. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/basic-find.md b/Docs/migration/dialogs/basic-find.md new file mode 100644 index 0000000000..9d74318741 --- /dev/null +++ b/Docs/migration/dialogs/basic-find.md @@ -0,0 +1,27 @@ +# Basic Find (`BasicFindDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.BasicFindDialog` (`Src/FwCoreDlgs/BasicFindDialog.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![basic-find legacy](./images/basic-find-before.png) | ![basic-find avalonia](./images/basic-find-after.png) | +## What it is +A no-frills find dialog; all work is done by the caller via events fired by the dialog (implements `IBasicFindView`). + +## Notes / gotchas +- View/presenter split (`IBasicFindView`); caller owns the search logic. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/cant-restore-linked-files-to-original-location.md b/Docs/migration/dialogs/cant-restore-linked-files-to-original-location.md new file mode 100644 index 0000000000..5a64d4475a --- /dev/null +++ b/Docs/migration/dialogs/cant-restore-linked-files-to-original-location.md @@ -0,0 +1,20 @@ +# Cannot Restore Linked Files to Original Location (`CantRestoreLinkedFilesToOriginalLocation`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FdoUi.Dialogs.CantRestoreLinkedFilesToOriginalLocation` (`Src/FdoUi/Dialogs/CantRestoreLinkedFilesToOriginalLocation.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it is +Restore-linked-files prompt shown when linked files cannot be restored to their original location; offers the user an alternative location choice. + +## Notes / gotchas +- Part of the linked-files restore prompt family (with `FilesToRestoreAreOlder` and `RestoreLinkedFilesToProjectsFolder`) — migrate together; likely radio-option + OK/Cancel. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/change-default-backup-dir.md b/Docs/migration/dialogs/change-default-backup-dir.md new file mode 100644 index 0000000000..4e96a65c7e --- /dev/null +++ b/Docs/migration/dialogs/change-default-backup-dir.md @@ -0,0 +1,20 @@ +# Change Default Backup Directory (`ChangeDefaultBackupDir`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.BackupRestore.ChangeDefaultBackupDir` (`Src/FwCoreDlgs/BackupRestore/ChangeDefaultBackupDir.cs`) | +| **Area** | App-wide (backup / restore) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +TBD — lets the user change the default directory where project backups are stored (infer from class name; fill on pickup). + +## Notes / gotchas +- Small folder-selection dialog launched from `BackupProjectDlg`. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/choose-lang-project.md b/Docs/migration/dialogs/choose-lang-project.md new file mode 100644 index 0000000000..4257aa60e5 --- /dev/null +++ b/Docs/migration/dialogs/choose-lang-project.md @@ -0,0 +1,27 @@ +# Choose Language Project (`ChooseLangProjectDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.ChooseLangProjectDialog` (`Src/FwCoreDlgs/ChooseLangProjectDialog.cs`) | +| **Area** | App-wide (project open / Send-Receive) | +| **Type** | dialog | +| **Primitive** | plain-form (search + list) | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | search+list→EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![choose-lang-project legacy](./images/choose-lang-project-before.png) | ![choose-lang-project avalonia](./images/choose-lang-project-after.png) | +## What it is +Lets the user pick a language project to open — local projects, networked projects, or projects obtained via Send/Receive. Presents a ListBox of available projects. + +## Notes / gotchas +- ListBox-of-projects picker (`m_lstLanguageProjects`); no tabs. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/choose-text-writing-system-dlg.md b/Docs/migration/dialogs/choose-text-writing-system-dlg.md new file mode 100644 index 0000000000..89d0871fd6 --- /dev/null +++ b/Docs/migration/dialogs/choose-text-writing-system-dlg.md @@ -0,0 +1,21 @@ +# Choose Text Writing System (`ChooseTextWritingSystemDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.ChooseTextWritingSystemDlg` (`Src/LexText/Interlinear/ChooseTextWritingSystemDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user pick the writing system for a text. + +## Notes / gotchas +- Small picker form. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/chooser.md b/Docs/migration/dialogs/chooser.md new file mode 100644 index 0000000000..a60261f8cc --- /dev/null +++ b/Docs/migration/dialogs/chooser.md @@ -0,0 +1,28 @@ +# Chooser (`FwChooserDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwChooserDlg` (`Src/FwCoreDlgs/FwChooserDlg.cs`) | +| **Area** | App-wide (possibility/list chooser) | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | tree/multi-select/picker→ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-chooser legacy](./images/fw-chooser-before.png) | ![fw-chooser avalonia](./images/fw-chooser-after.png) | +## What it is +A general-purpose chooser for `ICmPossibility` items (implements `ISettings`, `ICmPossibilitySupplier`). + +## Notes / gotchas +- Hosts the owned `ChooserTreeView` (a `TriStateTreeView`). Fold into this dialog's migration. +- Tri-state tree selection of possibility-list items. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/combine-import-dlg.md b/Docs/migration/dialogs/combine-import-dlg.md new file mode 100644 index 0000000000..ad0cb5474a --- /dev/null +++ b/Docs/migration/dialogs/combine-import-dlg.md @@ -0,0 +1,28 @@ +# Combine (FLEx) Import (`CombineImportDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.CombineImportDlg` (`Src/LexText/LexTextControls/CombineImportDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![combine-import legacy](./images/combine-import-before.png) | ![combine-import avalonia](./images/combine-import-after.png) | +## What it is +Imports a project sent from The Combine (web word-collection tool). + +## Notes / gotchas +- Implements IFwExtension. Uses Ionic.Zip + FileDialog wrappers. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/complex-conc-morph-dlg.md b/Docs/migration/dialogs/complex-conc-morph-dlg.md new file mode 100644 index 0000000000..f28d64aa9a --- /dev/null +++ b/Docs/migration/dialogs/complex-conc-morph-dlg.md @@ -0,0 +1,21 @@ +# Complex Concordance Morpheme (`ComplexConcMorphDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.ComplexConcMorphDlg` (`Src/LexText/Interlinear/ComplexConcMorphDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Edits a morpheme node in the Complex Concordance query builder. + +## Notes / gotchas +- Owned FW writing-system-aware edit controls (SIL.FieldWorks.Common.Widgets); part of the complex-concordance query UI. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/complex-conc-tag-dlg.md b/Docs/migration/dialogs/complex-conc-tag-dlg.md new file mode 100644 index 0000000000..5aa7d5a95b --- /dev/null +++ b/Docs/migration/dialogs/complex-conc-tag-dlg.md @@ -0,0 +1,21 @@ +# Complex Concordance Tag (`ComplexConcTagDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.ComplexConcTagDlg` (`Src/LexText/Interlinear/ComplexConcTagDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Edits a tag node in the Complex Concordance query builder. + +## Notes / gotchas +- Part of the complex-concordance query UI. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/complex-conc-word-dlg.md b/Docs/migration/dialogs/complex-conc-word-dlg.md new file mode 100644 index 0000000000..dfa694fb84 --- /dev/null +++ b/Docs/migration/dialogs/complex-conc-word-dlg.md @@ -0,0 +1,21 @@ +# Complex Concordance Word (`ComplexConcWordDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.ComplexConcWordDlg` (`Src/LexText/Interlinear/ComplexConcWordDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Edits a word node in the Complex Concordance query builder. + +## Notes / gotchas +- Owned FW widgets; part of the complex-concordance query UI. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/concordance-dlg.md b/Docs/migration/dialogs/concordance-dlg.md new file mode 100644 index 0000000000..d2ec9f3fa8 --- /dev/null +++ b/Docs/migration/dialogs/concordance-dlg.md @@ -0,0 +1,21 @@ +# Concordance (`ConcordanceDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.MorphologyEditor.ConcordanceDlg` (`Src/LexText/Morphology/ConcordanceDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Shows text occurrences (concordance) of a selected wordform, excluding instances assigned to a child analysis/gloss. + +## Notes / gotchas +- Implements IFwGuiControl. Hosts a concordance browse view (Views-coupled). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/configure-interlin-dialog.md b/Docs/migration/dialogs/configure-interlin-dialog.md new file mode 100644 index 0000000000..bb8c9dc5d1 --- /dev/null +++ b/Docs/migration/dialogs/configure-interlin-dialog.md @@ -0,0 +1,28 @@ +# Configure Interlinear (`ConfigureInterlinDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.ConfigureInterlinDialog` (`Src/LexText/Interlinear/ConfigureInterlinDialog.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![configure-interlin legacy](./images/configure-interlin-before.png) | ![configure-interlin avalonia](./images/configure-interlin-after.png) | +## What it is +Configures which interlinear lines/writing systems are shown and their order. + +## Notes / gotchas +- Owned line-ordering control (multi-line picker). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/configure-list.md b/Docs/migration/dialogs/configure-list.md new file mode 100644 index 0000000000..399d5615f1 --- /dev/null +++ b/Docs/migration/dialogs/configure-list.md @@ -0,0 +1,22 @@ +# Configure Custom List (`ConfigureListDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.ConfigureListDlg` (`Src/xWorks/CustomListDlg.cs`) | +| **Area** | Lists | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it is +Edits the properties (name, description, hierarchy/sort/duplicate/display-by options) of an existing custom list and reports whether changes were made. + +## Notes / gotchas +- Concrete subclass of the shared base `CustomListDlg` (`Src/xWorks/CustomListDlg.cs`); shares all controls with `AddListDlg` — migrate the base once. +- Newed at `Src/xWorks/XWorksViewBase.cs:776`. Tracks a "changed existing list" flag for caller refresh. +- Uses `LabeledMultiStringControl` (owned multilingual control). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/conflicting-save.md b/Docs/migration/dialogs/conflicting-save.md new file mode 100644 index 0000000000..ff52859812 --- /dev/null +++ b/Docs/migration/dialogs/conflicting-save.md @@ -0,0 +1,27 @@ +# Conflicting Save (`ConflictingSaveDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FdoUi.Dialogs.ConflictingSaveDlg` (`Src/FdoUi/Dialogs/ConflictingSaveDlg.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![conflicting-save legacy](./images/conflicting-save-before.png) | ![conflicting-save avalonia](./images/conflicting-save-after.png) | +## What it is +Message-box-like dialog warning of a conflicting save, offering OK and "Refresh Now"; clicking Refresh Now yields `DialogResult.Yes`. + +## Notes / gotchas +- Trivial two-button message form; the non-standard `DialogResult.Yes` for "Refresh Now" must be preserved for callers. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/create-allomorph-type-mismatch-dlg.md b/Docs/migration/dialogs/create-allomorph-type-mismatch-dlg.md new file mode 100644 index 0000000000..9579c99aca --- /dev/null +++ b/Docs/migration/dialogs/create-allomorph-type-mismatch-dlg.md @@ -0,0 +1,21 @@ +# Create Allomorph Type Mismatch (`CreateAllomorphTypeMismatchDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.CreateAllomorphTypeMismatchDlg` (`Src/LexText/Interlinear/CreateAllomorphTypeMismatchDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Warns/prompts when a created allomorph's type does not match the morpheme-break markers. + +## Notes / gotchas +- MorphType-mismatch prompt; data-loss-adjacent confirmation - preserve exact prompt semantics. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/delete-project.md b/Docs/migration/dialogs/delete-project.md new file mode 100644 index 0000000000..297d0d1d1a --- /dev/null +++ b/Docs/migration/dialogs/delete-project.md @@ -0,0 +1,27 @@ +# Delete Project (`FwDeleteProjectDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwDeleteProjectDlg` (`Src/FwCoreDlgs/FwDeleteProjectDlg.cs`) | +| **Area** | App-wide (project management) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-delete-project legacy](./images/fw-delete-project-before.png) | ![fw-delete-project avalonia](./images/fw-delete-project-after.png) | +## What it is +TBD — confirm/delete a FieldWorks project (infer from class name; fill on pickup). + +## Notes / gotchas +- Confirmation-style project deletion dialog; modal. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/delete-writing-system-warning.md b/Docs/migration/dialogs/delete-writing-system-warning.md new file mode 100644 index 0000000000..f6861ed832 --- /dev/null +++ b/Docs/migration/dialogs/delete-writing-system-warning.md @@ -0,0 +1,27 @@ +# Delete Writing System Warning (`DeleteWritingSystemWarningDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.DeleteWritingSystemWarningDialog` (`Src/FwCoreDlgs/DeleteWritingSystemWarningDialog.cs`) | +| **Area** | App-wide (writing-system management) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![delete-writing-system-warning legacy](./images/delete-writing-system-warning-before.png) | ![delete-writing-system-warning avalonia](./images/delete-writing-system-warning-after.png) | +## What it is +A warning dialog used in place of a plain MessageBox because custom text is required for the "Yes" button when deleting a writing system. + +## Notes / gotchas +- Confirmation dialog; modal. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/dictionary-config-mgr.md b/Docs/migration/dialogs/dictionary-config-mgr.md new file mode 100644 index 0000000000..86304750b8 --- /dev/null +++ b/Docs/migration/dialogs/dictionary-config-mgr.md @@ -0,0 +1,26 @@ +# Dictionary Config Manager (legacy XML) (`DictionaryConfigMgrDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.DictionaryConfigMgrDlg` (`Src/xWorks/DictionaryConfigMgrDlg.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | TABLE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (list of named configurations with rename/copy/delete) | +| **JIRA** | LT-XXXXX | + +## What it is +MVP "view" for managing stored dictionary configurations (rename/copy/delete/select). Displays the configurations in a `ListView` and reports user actions to `DictionaryConfigManager`. Implements `IDictConfigViewer`. + +## What it looks like (before / after) +**Live-capture / on-pickup.** Not captured: the dialog NRE'd in the headless harness +(`LoadDataFromInventory` needs a specific inventory node) and has no standalone menu entry (it opens only +from the legacy XML configure path). Capture live from that flow on pickup. + +## Notes / gotchas +- This is the OLDER manager, tied to the legacy XML configure path: newed only from `Src/xWorks/XmlDocConfigureDlg.cs:4368`. The newer equivalent is DictionaryConfigurationManagerDlg (`dictionary-configuration-manager.md`). Confirm on pickup which one survives; this one may retire with XmlDocConfigureDlg. +- `ListView` items are a custom `VisibleListItem : ListViewItem`. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/dictionary-configuration-import.md b/Docs/migration/dialogs/dictionary-configuration-import.md new file mode 100644 index 0000000000..44739cbbfe --- /dev/null +++ b/Docs/migration/dialogs/dictionary-configuration-import.md @@ -0,0 +1,28 @@ +# Dictionary Configuration Import (`DictionaryConfigurationImportDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.DictionaryConfigurationImportDlg` (`Src/xWorks/DictionaryConfigurationImportDlg.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![dictionary-configuration-import legacy](./images/dictionary-configuration-import-before.png) | ![dictionary-configuration-import avalonia](./images/dictionary-configuration-import-after.png) | +## What it is +Imports a dictionary configuration from a file: file-path text box + Browse, overwrite/don't-overwrite radio options, an explanation pane, and Import/Cancel/Help. + +## Notes / gotchas +- Plain-form (TextBox + Browse button + RadioButtons + explanation TextBox); logic in `DictionaryConfigurationImportController`. +- Overwrite vs new-name radio options drive the import behaviour — preserve the gating/explanation text. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/dictionary-configuration-manager.md b/Docs/migration/dialogs/dictionary-configuration-manager.md new file mode 100644 index 0000000000..da6277c519 --- /dev/null +++ b/Docs/migration/dialogs/dictionary-configuration-manager.md @@ -0,0 +1,31 @@ +# Dictionary Configuration Manager (`DictionaryConfigurationManagerDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.DictionaryConfigurationManagerDlg` (`Src/xWorks/DictionaryConfigurationManagerDlg.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | TABLE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (list of configurations with rename/copy/delete/import/export) | +| **JIRA** | LT-XXXXX | + +## What it is +Manages the set of dictionary configurations (rename, copy, delete, import, export) shown in a `ListView` (`configurationsListView`). The "Manage Configurations" sub-dialog launched from the Configure Dictionary dialog. + +## What it looks like (before / after) +Legacy "before" captured live (Capture-MenuDialogs.ps1, option 2b) by opening Configure Dictionary +(Tools→Configure) then clicking the **Manage Layouts…** button — the in-modal `postClicks` path. Avalonia +"after" comes from the surface's FwAvaloniaDialogs(Tests) visual test; attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![dictionary-configuration-manager legacy](./images/dictionary-configuration-manager-before.png) | ![dictionary-configuration-manager avalonia](./images/dictionary-configuration-manager-after.png) | + +## Notes / gotchas +- The CURRENT manager (newer than `DictionaryConfigMgrDlg`); newed from `Src/xWorks/DictionaryConfigurationController.cs:367`. Logic lives in `DictionaryConfigurationManagerController`. +- Manipulates per-item fonts (bold = current) and focus handlers on the `ListView`. +- Import/export flows reach `DictionaryConfigurationImportDlg` and controller export code. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/dictionary-configuration-node-rename.md b/Docs/migration/dialogs/dictionary-configuration-node-rename.md new file mode 100644 index 0000000000..1e088af333 --- /dev/null +++ b/Docs/migration/dialogs/dictionary-configuration-node-rename.md @@ -0,0 +1,27 @@ +# Dictionary Configuration Node Rename (`DictionaryConfigurationNodeRenameDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.DictionaryConfigurationNodeRenameDlg` (`Src/xWorks/DictionaryConfigurationNodeRenameDlg.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![dictionary-configuration-node-rename legacy](./images/dictionary-configuration-node-rename-before.png) | ![dictionary-configuration-node-rename avalonia](./images/dictionary-configuration-node-rename-after.png) | +## What it is +Small single-field dialog to rename a node (duplicate label) in the dictionary configuration tree; inserts the node value into the description text. + +## Notes / gotchas +- Trivial plain-form (label + textbox + OK/Cancel) launched from the configuration tree context. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/dictionary-configuration.md b/Docs/migration/dialogs/dictionary-configuration.md new file mode 100644 index 0000000000..00b26f1975 --- /dev/null +++ b/Docs/migration/dialogs/dictionary-configuration.md @@ -0,0 +1,30 @@ +# Dictionary Configuration (`DictionaryConfigurationDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.DictionaryConfigurationDlg` (`Src/xWorks/DictionaryConfigurationDlg.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (tree + detail), but this is a large bespoke screen — see gotchas | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![dictionary-configuration legacy](./images/dictionary-configuration-before.png) | ![dictionary-configuration avalonia](./images/dictionary-configuration-after.png) | +## What it is +The main Dictionary Configuration editor: a configuration tree (`DictionaryConfigurationTreeControl`) on the left, a per-node details pane (`DictionaryDetailsView` family) on the right, and a live HTML preview, with OK/Apply/Cancel and a "Manage Views" entry point. Implements `IDictionaryConfigurationView` (MVC view, driven by `DictionaryConfigurationController`). + +## Notes / gotchas +- LARGE, COMPLEX screen — not a simple plain-form. Composes three regions: tree control, swappable details panels (`DetailsView`, `ListOptionsView`, `PictureOptionsView`, `GroupingOptionsView`, `*OverPanel`), and a preview. +- HARD dependency on **GeckoWebBrowser**: the preview (`m_preview.NativeBrowser`) is asserted to be a `GeckoWebBrowser`; node highlighting walks `GeckoElement`s in the rendered HTML. Migration must reproduce or replace the HTML preview + element-highlight feature. +- Details panels are owned WinForms UserControls hosted in this dialog (covered by directory scope, not separately stubbed). +- MVC: behaviour lives in `DictionaryConfigurationController`; the dialog is mostly the view surface. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/discourse-export-dialog.md b/Docs/migration/dialogs/discourse-export-dialog.md new file mode 100644 index 0000000000..f2a89b3b52 --- /dev/null +++ b/Docs/migration/dialogs/discourse-export-dialog.md @@ -0,0 +1,22 @@ +# Discourse Export (`DiscourseExportDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Discourse.DiscourseExportDialog` (`Src/LexText/Discourse/DiscourseExportDialog.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Exports the discourse constituent chart; subclass of ExportDialog. + +## Notes / gotchas +- Subclasses shared ExportDialog (in FwControls, outside this tree) - migrate alongside the InterlinearExportDialog/ExportDialog family. +- Source comment notes considerable overlap with InterlinearExportDialog; common code could move down to ExportDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/edit-morph-breaks-dlg.md b/Docs/migration/dialogs/edit-morph-breaks-dlg.md new file mode 100644 index 0000000000..3cfdd356f5 --- /dev/null +++ b/Docs/migration/dialogs/edit-morph-breaks-dlg.md @@ -0,0 +1,21 @@ +# Edit Morph Breaks (`EditMorphBreaksDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.EditMorphBreaksDlg` (`Src/LexText/Interlinear/EditMorphBreaksDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Large edit box for editing the morph breaks in a word, with helper info to assist marking morpheme types. + +## Notes / gotchas +- Bigger edit box than the inline combobox; displays morpheme-type guidance. Tied to interlinear morph-break editing (see split-out Analyses Sandbox editor for the inline path). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/entry-go.md b/Docs/migration/dialogs/entry-go.md new file mode 100644 index 0000000000..3a813cc149 --- /dev/null +++ b/Docs/migration/dialogs/entry-go.md @@ -0,0 +1,31 @@ +# Go To Entry (`EntryGoDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.EntryGoDlg` (`Src/LexText/LexTextControls/EntryGoDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog (search + matching-entries list) | +| **Primitive** | search + list selector | +| **State** | coexist — the Avalonia **EntryGoDialog** is a KEPT canonical screen (see [README](../README.md)) | +| **JIRA** | LT-XXXXX (canonical reference — not a deferred port) | + +Legacy "before" baseline for the kept-canonical Avalonia `EntryGoDialog`. Harness captures the dialog +CHROME (ctor-only); the live matching-entries search-browse populates only in the running app. + +## Notes / gotchas +- Base of the GoDlg family (the abstract BaseGoDlg): the matching-entries browser is a live XMLView/SearchEngine. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![entry-go legacy](./images/entry-go-before.png) | ![entry-go avalonia](./images/entry-go-after.png) | +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![entry-go legacy](./images/entry-go-before.png) | ![entry-go avalonia](./images/entry-go-after.png) | diff --git a/Docs/migration/dialogs/export-dialog.md b/Docs/migration/dialogs/export-dialog.md new file mode 100644 index 0000000000..4c1686b8ff --- /dev/null +++ b/Docs/migration/dialogs/export-dialog.md @@ -0,0 +1,30 @@ +# Export (`ExportDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.ExportDialog` (`Src/xWorks/ExportDialog.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | TABLE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (list of export formats + Export action) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![export-dialog legacy](./images/export-dialog-before.png) | ![export-dialog avalonia](./images/export-dialog-after.png) | +## What it is +XML-configurable export chooser: lists available export formats/targets in a `ListView` (`m_exportList`, columns data/format/extension/filter/description), the user picks one and runs the export (default is the main lexicon export). Subclassed for other areas (see NotebookExportDialog). + +## Notes / gotchas +- Base class is instantiated directly (main lexicon export) AND subclassed — migrate as a parameterised/overridable surface, not a one-off. +- Driven by an XML configuration file (`ConfigurationFilePath`); export options are data-driven, not hardcoded — preserve the config-file contract. +- `ListView` master list with column sorting; uses `Common.RootSites` (review for any Views coupling on the export path). +- Standard FXT export pipeline by default; subclasses override `ConfigureItem`/the export process. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/export-semantic-domains.md b/Docs/migration/dialogs/export-semantic-domains.md new file mode 100644 index 0000000000..2ba8e50da4 --- /dev/null +++ b/Docs/migration/dialogs/export-semantic-domains.md @@ -0,0 +1,27 @@ +# Export Semantic Domains (`ExportSemanticDomainsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.ExportSemanticDomainsDlg` (`Src/xWorks/ExportSemanticDomainsDlg.cs`) | +| **Area** | Lists | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![export-semantic-domains legacy](./images/export-semantic-domains-before.png) | ![export-semantic-domains avalonia](./images/export-semantic-domains-after.png) | +## What it is +Options dialog for exporting the semantic-domains list: choose the writing system and whether to show missing translations with English shown in red. + +## Notes / gotchas +- Small options form; the "English in red" checkbox enablement depends on the chosen WS (`m_EnglishInRedCheckBox.Enabled`) — preserve the gating. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/export-translated-lists.md b/Docs/migration/dialogs/export-translated-lists.md new file mode 100644 index 0000000000..bff3c0bce3 --- /dev/null +++ b/Docs/migration/dialogs/export-translated-lists.md @@ -0,0 +1,27 @@ +# Export Translated Lists (`ExportTranslatedListsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.ExportTranslatedListsDlg` (`Src/xWorks/ExportTranslatedListsDlg.cs`) | +| **Area** | Lists | +| **Type** | dialog | +| **Primitive** | MULTI-SELECTOR | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (checked multi-select of lists + writing systems) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![export-translated-lists legacy](./images/export-translated-lists-before.png) | ![export-translated-lists avalonia](./images/export-translated-lists-after.png) | +## What it is +Lets the user select specific lists to export and the specific writing systems to include, via two checkbox `ListView`s (`m_lvLists`, `m_lvWritingSystems`). + +## Notes / gotchas +- Two parallel checkbox lists (lists + writing systems) using `ListView.CheckedItems`; column widths are computed from list width at load — preserve checked-item collection semantics. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/files-to-restore-are-older.md b/Docs/migration/dialogs/files-to-restore-are-older.md new file mode 100644 index 0000000000..3fdadd035c --- /dev/null +++ b/Docs/migration/dialogs/files-to-restore-are-older.md @@ -0,0 +1,20 @@ +# Files to Restore Are Older (`FilesToRestoreAreOlder`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FdoUi.Dialogs.FilesToRestoreAreOlder` (`Src/FdoUi/Dialogs/FilesToRestoreAreOlder.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it is +Restore-linked-files prompt shown when the files being restored are older than existing files; asks the user how to proceed (overwrite / keep). + +## Notes / gotchas +- Part of the linked-files restore prompt family (with `CantRestoreLinkedFilesToOriginalLocation` and `RestoreLinkedFilesToProjectsFolder`) — migrate together; likely radio-option + OK/Cancel. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/filter-texts-dialog.md b/Docs/migration/dialogs/filter-texts-dialog.md new file mode 100644 index 0000000000..a759817981 --- /dev/null +++ b/Docs/migration/dialogs/filter-texts-dialog.md @@ -0,0 +1,21 @@ +# Filter Texts (`FilterTextsDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.FilterTextsDialog` (`Src/LexText/Interlinear/FilterTextsDialog.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Bundles ordinary and Scripture texts into a checkable tree so the user can filter which texts are shown. + +## Notes / gotchas +- Subclass of abstract FilterAllTextsDialog (base excluded). Checkable text tree; Scripture vs ordinary text bundling. Source TODO suggests merging the base in. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/find-example-sentence-dlg.md b/Docs/migration/dialogs/find-example-sentence-dlg.md new file mode 100644 index 0000000000..e19fd66393 --- /dev/null +++ b/Docs/migration/dialogs/find-example-sentence-dlg.md @@ -0,0 +1,21 @@ +# Find Example Sentence (`FindExampleSentenceDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.FindExampleSentenceDlg` (`Src/LexText/Lexicon/FindExampleSentenceDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Finds corpus example sentences for a sense and lets the user attach one as an example. + +## Notes / gotchas +- Implements IFwGuiControl. Couples to interlinear/concordance views to display matches. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/flexbridge-first-send-receive-instructions-dlg.md b/Docs/migration/dialogs/flexbridge-first-send-receive-instructions-dlg.md new file mode 100644 index 0000000000..35d2aa4944 --- /dev/null +++ b/Docs/migration/dialogs/flexbridge-first-send-receive-instructions-dlg.md @@ -0,0 +1,21 @@ +# FLExBridge First Send/Receive Instructions (`FLExBridgeFirstSendReceiveInstructionsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.FLExBridgeFirstSendReceiveInstructionsDlg` (`Src/LexText/Lexicon/FLExBridgeFirstSendReceiveInstructionsDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Shows first-time instructions before the initial FLExBridge Send/Receive. + +## Notes / gotchas +- Informational/instructional dialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/font.md b/Docs/migration/dialogs/font.md new file mode 100644 index 0000000000..b3b93526ee --- /dev/null +++ b/Docs/migration/dialogs/font.md @@ -0,0 +1,27 @@ +# Font (`FwFontDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwFontDialog` (`Src/FwCoreDlgs/FwFontDialog.cs`) | +| **Area** | App-wide (styles / formatting) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-font legacy](./images/fw-font-before.png) | ![fw-font avalonia](./images/fw-font-after.png) | +## What it is +A FieldWorks font picker dialog (implements `IFontDialog`) — choose font family, size, and attributes. + +## Notes / gotchas +- Implements `IFontDialog`; hosts owned controls `FwFontAttributes` and `FontFeaturesButton`. Fold those into this dialog's migration. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/hc-max-compound-rules-dlg.md b/Docs/migration/dialogs/hc-max-compound-rules-dlg.md new file mode 100644 index 0000000000..8eb34d59b2 --- /dev/null +++ b/Docs/migration/dialogs/hc-max-compound-rules-dlg.md @@ -0,0 +1,21 @@ +# HC Max Compound Rules (`HCMaxCompoundRulesDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.HCMaxCompoundRulesDlg` (`Src/LexText/ParserUI/HCMaxCompoundRulesDlg.cs`) | +| **Area** | Grammar | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | OptionsDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Sets the maximum number of compound-rule applications for the Hermit Crab parser. + +## Notes / gotchas +- Subclass of ParserParametersBase (base excluded). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/headword-numbers.md b/Docs/migration/dialogs/headword-numbers.md new file mode 100644 index 0000000000..aec55e322f --- /dev/null +++ b/Docs/migration/dialogs/headword-numbers.md @@ -0,0 +1,28 @@ +# Headword Numbers (`HeadwordNumbersDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.HeadwordNumbersDlg` (`Src/xWorks/HeadWordNumbersDlg.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![headword-numbers legacy](./images/headword-numbers-before.png) | ![headword-numbers avalonia](./images/headword-numbers-after.png) | +## What it is +Configures the display and manipulation of homograph/headword numbers (style, before/after text, subentry options). Implements `IHeadwordNumbersView` (MVC view). + +## Notes / gotchas +- Has a "Styles..." button that opens the style chooser; raises an event passing the style `ComboBox` as sender so the controller can update it — preserve the styles round-trip. +- Behaviour lives in the controller; the dialog is the view surface. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/help-about.md b/Docs/migration/dialogs/help-about.md new file mode 100644 index 0000000000..47ceb1765a --- /dev/null +++ b/Docs/migration/dialogs/help-about.md @@ -0,0 +1,27 @@ +# Help About (`FwHelpAbout`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwHelpAbout` (`Src/FwCoreDlgs/FwHelpAbout.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![help-about legacy](./images/help-about-before.png) | ![help-about avalonia](./images/help-about-after.png) | +## What it is +The FieldWorks Help > About dialog (previously HelpAboutDlg in AfDialog.cpp) — shows version/build/credits. + +## Notes / gotchas +- Read-only informational dialog; modal. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/images/add-allomorph-before.png b/Docs/migration/dialogs/images/add-allomorph-before.png new file mode 100644 index 0000000000..5b50fd3882 Binary files /dev/null and b/Docs/migration/dialogs/images/add-allomorph-before.png differ diff --git a/Docs/migration/dialogs/images/add-cnvtr-before.png b/Docs/migration/dialogs/images/add-cnvtr-before.png new file mode 100644 index 0000000000..6801be23dc Binary files /dev/null and b/Docs/migration/dialogs/images/add-cnvtr-before.png differ diff --git a/Docs/migration/dialogs/images/add-cnvtr-tab-advanced.png b/Docs/migration/dialogs/images/add-cnvtr-tab-advanced.png new file mode 100644 index 0000000000..53b576360c Binary files /dev/null and b/Docs/migration/dialogs/images/add-cnvtr-tab-advanced.png differ diff --git a/Docs/migration/dialogs/images/add-cnvtr-tab-properties.png b/Docs/migration/dialogs/images/add-cnvtr-tab-properties.png new file mode 100644 index 0000000000..6801be23dc Binary files /dev/null and b/Docs/migration/dialogs/images/add-cnvtr-tab-properties.png differ diff --git a/Docs/migration/dialogs/images/add-cnvtr-tab-test.png b/Docs/migration/dialogs/images/add-cnvtr-tab-test.png new file mode 100644 index 0000000000..3aecdd0327 Binary files /dev/null and b/Docs/migration/dialogs/images/add-cnvtr-tab-test.png differ diff --git a/Docs/migration/dialogs/images/add-custom-field-before.png b/Docs/migration/dialogs/images/add-custom-field-before.png new file mode 100644 index 0000000000..df2c996836 Binary files /dev/null and b/Docs/migration/dialogs/images/add-custom-field-before.png differ diff --git a/Docs/migration/dialogs/images/add-new-user-before.png b/Docs/migration/dialogs/images/add-new-user-before.png new file mode 100644 index 0000000000..eaacc47e5d Binary files /dev/null and b/Docs/migration/dialogs/images/add-new-user-before.png differ diff --git a/Docs/migration/dialogs/images/add-new-vern-lang-warning-before.png b/Docs/migration/dialogs/images/add-new-vern-lang-warning-before.png new file mode 100644 index 0000000000..ea14ad8361 Binary files /dev/null and b/Docs/migration/dialogs/images/add-new-vern-lang-warning-before.png differ diff --git a/Docs/migration/dialogs/images/anthro-field-mapping-before.png b/Docs/migration/dialogs/images/anthro-field-mapping-before.png new file mode 100644 index 0000000000..1efc36c7e7 Binary files /dev/null and b/Docs/migration/dialogs/images/anthro-field-mapping-before.png differ diff --git a/Docs/migration/dialogs/images/backup-project-before.png b/Docs/migration/dialogs/images/backup-project-before.png new file mode 100644 index 0000000000..3cf462a094 Binary files /dev/null and b/Docs/migration/dialogs/images/backup-project-before.png differ diff --git a/Docs/migration/dialogs/images/basic-find-before.png b/Docs/migration/dialogs/images/basic-find-before.png new file mode 100644 index 0000000000..57b3b63511 Binary files /dev/null and b/Docs/migration/dialogs/images/basic-find-before.png differ diff --git a/Docs/migration/dialogs/images/choose-lang-project-before.png b/Docs/migration/dialogs/images/choose-lang-project-before.png new file mode 100644 index 0000000000..81849588fb Binary files /dev/null and b/Docs/migration/dialogs/images/choose-lang-project-before.png differ diff --git a/Docs/migration/dialogs/images/combine-import-before.png b/Docs/migration/dialogs/images/combine-import-before.png new file mode 100644 index 0000000000..114d86c526 Binary files /dev/null and b/Docs/migration/dialogs/images/combine-import-before.png differ diff --git a/Docs/migration/dialogs/images/configure-interlin-before.png b/Docs/migration/dialogs/images/configure-interlin-before.png new file mode 100644 index 0000000000..054b7d6613 Binary files /dev/null and b/Docs/migration/dialogs/images/configure-interlin-before.png differ diff --git a/Docs/migration/dialogs/images/conflicting-save-before.png b/Docs/migration/dialogs/images/conflicting-save-before.png new file mode 100644 index 0000000000..213bc5cc6d Binary files /dev/null and b/Docs/migration/dialogs/images/conflicting-save-before.png differ diff --git a/Docs/migration/dialogs/images/custom-list-before.png b/Docs/migration/dialogs/images/custom-list-before.png new file mode 100644 index 0000000000..5ff59a9ce8 Binary files /dev/null and b/Docs/migration/dialogs/images/custom-list-before.png differ diff --git a/Docs/migration/dialogs/images/delete-writing-system-warning-before.png b/Docs/migration/dialogs/images/delete-writing-system-warning-before.png new file mode 100644 index 0000000000..c0b2869a1a Binary files /dev/null and b/Docs/migration/dialogs/images/delete-writing-system-warning-before.png differ diff --git a/Docs/migration/dialogs/images/dictionary-configuration-before.png b/Docs/migration/dialogs/images/dictionary-configuration-before.png new file mode 100644 index 0000000000..8e8828f2e5 Binary files /dev/null and b/Docs/migration/dialogs/images/dictionary-configuration-before.png differ diff --git a/Docs/migration/dialogs/images/dictionary-configuration-import-before.png b/Docs/migration/dialogs/images/dictionary-configuration-import-before.png new file mode 100644 index 0000000000..b1a9983062 Binary files /dev/null and b/Docs/migration/dialogs/images/dictionary-configuration-import-before.png differ diff --git a/Docs/migration/dialogs/images/dictionary-configuration-manager-before.png b/Docs/migration/dialogs/images/dictionary-configuration-manager-before.png new file mode 100644 index 0000000000..ee4fcd2b25 Binary files /dev/null and b/Docs/migration/dialogs/images/dictionary-configuration-manager-before.png differ diff --git a/Docs/migration/dialogs/images/dictionary-configuration-node-rename-before.png b/Docs/migration/dialogs/images/dictionary-configuration-node-rename-before.png new file mode 100644 index 0000000000..baad79f236 Binary files /dev/null and b/Docs/migration/dialogs/images/dictionary-configuration-node-rename-before.png differ diff --git a/Docs/migration/dialogs/images/entry-go-before.png b/Docs/migration/dialogs/images/entry-go-before.png new file mode 100644 index 0000000000..48d8711c77 Binary files /dev/null and b/Docs/migration/dialogs/images/entry-go-before.png differ diff --git a/Docs/migration/dialogs/images/export-before.png b/Docs/migration/dialogs/images/export-before.png new file mode 100644 index 0000000000..3397fbf4d0 Binary files /dev/null and b/Docs/migration/dialogs/images/export-before.png differ diff --git a/Docs/migration/dialogs/images/export-dialog-before.png b/Docs/migration/dialogs/images/export-dialog-before.png new file mode 100644 index 0000000000..e607f0b2f6 Binary files /dev/null and b/Docs/migration/dialogs/images/export-dialog-before.png differ diff --git a/Docs/migration/dialogs/images/export-semantic-domains-before.png b/Docs/migration/dialogs/images/export-semantic-domains-before.png new file mode 100644 index 0000000000..c511ee340a Binary files /dev/null and b/Docs/migration/dialogs/images/export-semantic-domains-before.png differ diff --git a/Docs/migration/dialogs/images/export-translated-lists-before.png b/Docs/migration/dialogs/images/export-translated-lists-before.png new file mode 100644 index 0000000000..c8ce95c800 Binary files /dev/null and b/Docs/migration/dialogs/images/export-translated-lists-before.png differ diff --git a/Docs/migration/dialogs/images/fw-chooser-before.png b/Docs/migration/dialogs/images/fw-chooser-before.png new file mode 100644 index 0000000000..22602ca675 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-chooser-before.png differ diff --git a/Docs/migration/dialogs/images/fw-delete-project-before.png b/Docs/migration/dialogs/images/fw-delete-project-before.png new file mode 100644 index 0000000000..3218b278e6 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-delete-project-before.png differ diff --git a/Docs/migration/dialogs/images/fw-font-before.png b/Docs/migration/dialogs/images/fw-font-before.png new file mode 100644 index 0000000000..c02415897f Binary files /dev/null and b/Docs/migration/dialogs/images/fw-font-before.png differ diff --git a/Docs/migration/dialogs/images/fw-proj-properties-before.png b/Docs/migration/dialogs/images/fw-proj-properties-before.png new file mode 100644 index 0000000000..f5c5706335 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-proj-properties-before.png differ diff --git a/Docs/migration/dialogs/images/fw-proj-properties-tab-general.png b/Docs/migration/dialogs/images/fw-proj-properties-tab-general.png new file mode 100644 index 0000000000..f5c5706335 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-proj-properties-tab-general.png differ diff --git a/Docs/migration/dialogs/images/fw-proj-properties-tab-linked-files.png b/Docs/migration/dialogs/images/fw-proj-properties-tab-linked-files.png new file mode 100644 index 0000000000..2cb50db940 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-proj-properties-tab-linked-files.png differ diff --git a/Docs/migration/dialogs/images/fw-proj-properties-tab-sharing.png b/Docs/migration/dialogs/images/fw-proj-properties-tab-sharing.png new file mode 100644 index 0000000000..d05d759f0f Binary files /dev/null and b/Docs/migration/dialogs/images/fw-proj-properties-tab-sharing.png differ diff --git a/Docs/migration/dialogs/images/fw-styles-before.png b/Docs/migration/dialogs/images/fw-styles-before.png new file mode 100644 index 0000000000..cfb43aaf34 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-styles-before.png differ diff --git a/Docs/migration/dialogs/images/fw-styles-modified-before.png b/Docs/migration/dialogs/images/fw-styles-modified-before.png new file mode 100644 index 0000000000..7f9e3f42da Binary files /dev/null and b/Docs/migration/dialogs/images/fw-styles-modified-before.png differ diff --git a/Docs/migration/dialogs/images/fw-styles-tab-border.png b/Docs/migration/dialogs/images/fw-styles-tab-border.png new file mode 100644 index 0000000000..0647311dd5 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-styles-tab-border.png differ diff --git a/Docs/migration/dialogs/images/fw-styles-tab-bullets.png b/Docs/migration/dialogs/images/fw-styles-tab-bullets.png new file mode 100644 index 0000000000..da1a87ae63 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-styles-tab-bullets.png differ diff --git a/Docs/migration/dialogs/images/fw-styles-tab-font.png b/Docs/migration/dialogs/images/fw-styles-tab-font.png new file mode 100644 index 0000000000..b052e700c6 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-styles-tab-font.png differ diff --git a/Docs/migration/dialogs/images/fw-styles-tab-general.png b/Docs/migration/dialogs/images/fw-styles-tab-general.png new file mode 100644 index 0000000000..03f00a9a35 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-styles-tab-general.png differ diff --git a/Docs/migration/dialogs/images/fw-styles-tab-paragraph.png b/Docs/migration/dialogs/images/fw-styles-tab-paragraph.png new file mode 100644 index 0000000000..99a33e963c Binary files /dev/null and b/Docs/migration/dialogs/images/fw-styles-tab-paragraph.png differ diff --git a/Docs/migration/dialogs/images/fw-update-report-before.png b/Docs/migration/dialogs/images/fw-update-report-before.png new file mode 100644 index 0000000000..c85fe0e202 Binary files /dev/null and b/Docs/migration/dialogs/images/fw-update-report-before.png differ diff --git a/Docs/migration/dialogs/images/headword-numbers-before.png b/Docs/migration/dialogs/images/headword-numbers-before.png new file mode 100644 index 0000000000..53c715ed75 Binary files /dev/null and b/Docs/migration/dialogs/images/headword-numbers-before.png differ diff --git a/Docs/migration/dialogs/images/help-about-before.png b/Docs/migration/dialogs/images/help-about-before.png new file mode 100644 index 0000000000..f45afec444 Binary files /dev/null and b/Docs/migration/dialogs/images/help-about-before.png differ diff --git a/Docs/migration/dialogs/images/import-char-mapping-before.png b/Docs/migration/dialogs/images/import-char-mapping-before.png new file mode 100644 index 0000000000..9fa35d4d0f Binary files /dev/null and b/Docs/migration/dialogs/images/import-char-mapping-before.png differ diff --git a/Docs/migration/dialogs/images/import-date-format-before.png b/Docs/migration/dialogs/images/import-date-format-before.png new file mode 100644 index 0000000000..ffb3af4e0c Binary files /dev/null and b/Docs/migration/dialogs/images/import-date-format-before.png differ diff --git a/Docs/migration/dialogs/images/import-enc-cvtr-before.png b/Docs/migration/dialogs/images/import-enc-cvtr-before.png new file mode 100644 index 0000000000..87e2bc4075 Binary files /dev/null and b/Docs/migration/dialogs/images/import-enc-cvtr-before.png differ diff --git a/Docs/migration/dialogs/images/import-match-replace-before.png b/Docs/migration/dialogs/images/import-match-replace-before.png new file mode 100644 index 0000000000..015e943d5f Binary files /dev/null and b/Docs/migration/dialogs/images/import-match-replace-before.png differ diff --git a/Docs/migration/dialogs/images/insert-entry-before.png b/Docs/migration/dialogs/images/insert-entry-before.png new file mode 100644 index 0000000000..ee19b64c30 Binary files /dev/null and b/Docs/migration/dialogs/images/insert-entry-before.png differ diff --git a/Docs/migration/dialogs/images/insert-record-before.png b/Docs/migration/dialogs/images/insert-record-before.png new file mode 100644 index 0000000000..5137732aca Binary files /dev/null and b/Docs/migration/dialogs/images/insert-record-before.png differ diff --git a/Docs/migration/dialogs/images/insert-variant-before.png b/Docs/migration/dialogs/images/insert-variant-before.png new file mode 100644 index 0000000000..29ebb3d93a Binary files /dev/null and b/Docs/migration/dialogs/images/insert-variant-before.png differ diff --git a/Docs/migration/dialogs/images/interlinear-export-before.png b/Docs/migration/dialogs/images/interlinear-export-before.png new file mode 100644 index 0000000000..e1248b281f Binary files /dev/null and b/Docs/migration/dialogs/images/interlinear-export-before.png differ diff --git a/Docs/migration/dialogs/images/interlinear-import-before.png b/Docs/migration/dialogs/images/interlinear-import-before.png new file mode 100644 index 0000000000..46bf55043e Binary files /dev/null and b/Docs/migration/dialogs/images/interlinear-import-before.png differ diff --git a/Docs/migration/dialogs/images/lex-import-wizard-char-marker-before.png b/Docs/migration/dialogs/images/lex-import-wizard-char-marker-before.png new file mode 100644 index 0000000000..9e90e0995f Binary files /dev/null and b/Docs/migration/dialogs/images/lex-import-wizard-char-marker-before.png differ diff --git a/Docs/migration/dialogs/images/lex-options-before.png b/Docs/migration/dialogs/images/lex-options-before.png new file mode 100644 index 0000000000..7b0f6541b1 Binary files /dev/null and b/Docs/migration/dialogs/images/lex-options-before.png differ diff --git a/Docs/migration/dialogs/images/lex-options-tab-general.png b/Docs/migration/dialogs/images/lex-options-tab-general.png new file mode 100644 index 0000000000..7b0f6541b1 Binary files /dev/null and b/Docs/migration/dialogs/images/lex-options-tab-general.png differ diff --git a/Docs/migration/dialogs/images/lex-options-tab-plugins.png b/Docs/migration/dialogs/images/lex-options-tab-plugins.png new file mode 100644 index 0000000000..3053f91f03 Binary files /dev/null and b/Docs/migration/dialogs/images/lex-options-tab-plugins.png differ diff --git a/Docs/migration/dialogs/images/lex-options-tab-privacy.png b/Docs/migration/dialogs/images/lex-options-tab-privacy.png new file mode 100644 index 0000000000..8faf4acbab Binary files /dev/null and b/Docs/migration/dialogs/images/lex-options-tab-privacy.png differ diff --git a/Docs/migration/dialogs/images/lex-options-tab-updates.png b/Docs/migration/dialogs/images/lex-options-tab-updates.png new file mode 100644 index 0000000000..55ab886851 Binary files /dev/null and b/Docs/migration/dialogs/images/lex-options-tab-updates.png differ diff --git a/Docs/migration/dialogs/images/lift-export-message-before.png b/Docs/migration/dialogs/images/lift-export-message-before.png new file mode 100644 index 0000000000..d5e337d28e Binary files /dev/null and b/Docs/migration/dialogs/images/lift-export-message-before.png differ diff --git a/Docs/migration/dialogs/images/lift-import-before.png b/Docs/migration/dialogs/images/lift-import-before.png new file mode 100644 index 0000000000..0a339f27e0 Binary files /dev/null and b/Docs/migration/dialogs/images/lift-import-before.png differ diff --git a/Docs/migration/dialogs/images/link-allomorph-before.png b/Docs/migration/dialogs/images/link-allomorph-before.png new file mode 100644 index 0000000000..a193af5aeb Binary files /dev/null and b/Docs/migration/dialogs/images/link-allomorph-before.png differ diff --git a/Docs/migration/dialogs/images/link-entry-or-sense-before.png b/Docs/migration/dialogs/images/link-entry-or-sense-before.png new file mode 100644 index 0000000000..aa90146c7e Binary files /dev/null and b/Docs/migration/dialogs/images/link-entry-or-sense-before.png differ diff --git a/Docs/migration/dialogs/images/link-msa-before.png b/Docs/migration/dialogs/images/link-msa-before.png new file mode 100644 index 0000000000..57a04fcfe8 Binary files /dev/null and b/Docs/migration/dialogs/images/link-msa-before.png differ diff --git a/Docs/migration/dialogs/images/master-category-list-before.png b/Docs/migration/dialogs/images/master-category-list-before.png new file mode 100644 index 0000000000..fb35b38500 Binary files /dev/null and b/Docs/migration/dialogs/images/master-category-list-before.png differ diff --git a/Docs/migration/dialogs/images/merge-entry-before.png b/Docs/migration/dialogs/images/merge-entry-before.png new file mode 100644 index 0000000000..b271e67943 Binary files /dev/null and b/Docs/migration/dialogs/images/merge-entry-before.png differ diff --git a/Docs/migration/dialogs/images/merge-object-before.png b/Docs/migration/dialogs/images/merge-object-before.png new file mode 100644 index 0000000000..619c0dd370 Binary files /dev/null and b/Docs/migration/dialogs/images/merge-object-before.png differ diff --git a/Docs/migration/dialogs/images/move-or-copy-files-before.png b/Docs/migration/dialogs/images/move-or-copy-files-before.png new file mode 100644 index 0000000000..e8924b2782 Binary files /dev/null and b/Docs/migration/dialogs/images/move-or-copy-files-before.png differ diff --git a/Docs/migration/dialogs/images/notebook-export-before.png b/Docs/migration/dialogs/images/notebook-export-before.png new file mode 100644 index 0000000000..e62131033c Binary files /dev/null and b/Docs/migration/dialogs/images/notebook-export-before.png differ diff --git a/Docs/migration/dialogs/images/occurrence-before.png b/Docs/migration/dialogs/images/occurrence-before.png new file mode 100644 index 0000000000..a4ba99a00a Binary files /dev/null and b/Docs/migration/dialogs/images/occurrence-before.png differ diff --git a/Docs/migration/dialogs/images/parser-parameters-before.png b/Docs/migration/dialogs/images/parser-parameters-before.png new file mode 100644 index 0000000000..93ca38f775 Binary files /dev/null and b/Docs/migration/dialogs/images/parser-parameters-before.png differ diff --git a/Docs/migration/dialogs/images/project-location-before.png b/Docs/migration/dialogs/images/project-location-before.png new file mode 100644 index 0000000000..cfe8edddc1 Binary files /dev/null and b/Docs/migration/dialogs/images/project-location-before.png differ diff --git a/Docs/migration/dialogs/images/record-go-before.png b/Docs/migration/dialogs/images/record-go-before.png new file mode 100644 index 0000000000..53d305d3da Binary files /dev/null and b/Docs/migration/dialogs/images/record-go-before.png differ diff --git a/Docs/migration/dialogs/images/restore-defaults-before.png b/Docs/migration/dialogs/images/restore-defaults-before.png new file mode 100644 index 0000000000..787a6e194b Binary files /dev/null and b/Docs/migration/dialogs/images/restore-defaults-before.png differ diff --git a/Docs/migration/dialogs/images/restore-project-before.png b/Docs/migration/dialogs/images/restore-project-before.png new file mode 100644 index 0000000000..a088c062e4 Binary files /dev/null and b/Docs/migration/dialogs/images/restore-project-before.png differ diff --git a/Docs/migration/dialogs/images/sfm-to-texts-and-words-mapping-before.png b/Docs/migration/dialogs/images/sfm-to-texts-and-words-mapping-before.png new file mode 100644 index 0000000000..f296dff1f2 Binary files /dev/null and b/Docs/migration/dialogs/images/sfm-to-texts-and-words-mapping-before.png differ diff --git a/Docs/migration/dialogs/images/try-a-word-before.png b/Docs/migration/dialogs/images/try-a-word-before.png new file mode 100644 index 0000000000..e62d38e4ed Binary files /dev/null and b/Docs/migration/dialogs/images/try-a-word-before.png differ diff --git a/Docs/migration/dialogs/images/upload-to-webonary-before.png b/Docs/migration/dialogs/images/upload-to-webonary-before.png new file mode 100644 index 0000000000..94b144d482 Binary files /dev/null and b/Docs/migration/dialogs/images/upload-to-webonary-before.png differ diff --git a/Docs/migration/dialogs/images/utility-before.png b/Docs/migration/dialogs/images/utility-before.png new file mode 100644 index 0000000000..38f6948522 Binary files /dev/null and b/Docs/migration/dialogs/images/utility-before.png differ diff --git a/Docs/migration/dialogs/images/view-hidden-writing-systems-before.png b/Docs/migration/dialogs/images/view-hidden-writing-systems-before.png new file mode 100644 index 0000000000..21f1c68bca Binary files /dev/null and b/Docs/migration/dialogs/images/view-hidden-writing-systems-before.png differ diff --git a/Docs/migration/dialogs/images/xml-doc-configure-before.png b/Docs/migration/dialogs/images/xml-doc-configure-before.png new file mode 100644 index 0000000000..0c4c005ccf Binary files /dev/null and b/Docs/migration/dialogs/images/xml-doc-configure-before.png differ diff --git a/Docs/migration/dialogs/import-char-mapping-dlg.md b/Docs/migration/dialogs/import-char-mapping-dlg.md new file mode 100644 index 0000000000..c152154a03 --- /dev/null +++ b/Docs/migration/dialogs/import-char-mapping-dlg.md @@ -0,0 +1,28 @@ +# Import Char Mapping (`ImportCharMappingDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.DataNotebook.ImportCharMappingDlg` (`Src/LexText/LexTextControls/DataNotebook/ImportCharMappingDlg.cs`) | +| **Area** | Notebook | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![import-char-mapping legacy](./images/import-char-mapping-before.png) | ![import-char-mapping avalonia](./images/import-char-mapping-after.png) | +## What it is +Defines a character/inline-marker mapping for Data Notebook SFM import. + +## Notes / gotchas +- Part of the Data Notebook import-mapping family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/import-date-format-dlg.md b/Docs/migration/dialogs/import-date-format-dlg.md new file mode 100644 index 0000000000..9f49b7c810 --- /dev/null +++ b/Docs/migration/dialogs/import-date-format-dlg.md @@ -0,0 +1,28 @@ +# Import Date Format (`ImportDateFormatDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.DataNotebook.ImportDateFormatDlg` (`Src/LexText/LexTextControls/DataNotebook/ImportDateFormatDlg.cs`) | +| **Area** | Notebook | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![import-date-format legacy](./images/import-date-format-before.png) | ![import-date-format avalonia](./images/import-date-format-after.png) | +## What it is +Specifies the date format for an imported date field (Data Notebook import). + +## Notes / gotchas +- Part of the Data Notebook import-mapping family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/import-enc-cvtr-dlg.md b/Docs/migration/dialogs/import-enc-cvtr-dlg.md new file mode 100644 index 0000000000..3943729235 --- /dev/null +++ b/Docs/migration/dialogs/import-enc-cvtr-dlg.md @@ -0,0 +1,28 @@ +# Import Encoding Converter (`ImportEncCvtrDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.DataNotebook.ImportEncCvtrDlg` (`Src/LexText/LexTextControls/DataNotebook/ImportEncCvtrDlg.cs`) | +| **Area** | Notebook | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![import-enc-cvtr legacy](./images/import-enc-cvtr-before.png) | ![import-enc-cvtr avalonia](./images/import-enc-cvtr-after.png) | +## What it is +Chooses an encoding converter for a given writing system during import. + +## Notes / gotchas +- Wraps an encoding-converter chooser (SilEncConverters40). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/import-match-replace-dlg.md b/Docs/migration/dialogs/import-match-replace-dlg.md new file mode 100644 index 0000000000..1cae5f7711 --- /dev/null +++ b/Docs/migration/dialogs/import-match-replace-dlg.md @@ -0,0 +1,28 @@ +# Import Match/Replace (`ImportMatchReplaceDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.DataNotebook.ImportMatchReplaceDlg` (`Src/LexText/LexTextControls/DataNotebook/ImportMatchReplaceDlg.cs`) | +| **Area** | Notebook | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![import-match-replace legacy](./images/import-match-replace-before.png) | ![import-match-replace avalonia](./images/import-match-replace-after.png) | +## What it is +Defines a match/replace transformation applied to an imported field. + +## Notes / gotchas +- Part of the Data Notebook import-mapping family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/import-word-set-dlg.md b/Docs/migration/dialogs/import-word-set-dlg.md new file mode 100644 index 0000000000..501e411011 --- /dev/null +++ b/Docs/migration/dialogs/import-word-set-dlg.md @@ -0,0 +1,21 @@ +# Import Word Set (`ImportWordSetDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.ImportWordSetDlg` (`Src/LexText/ParserUI/ImportWordSetDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Imports a word set (list of words) for the parser to try. + +## Notes / gotchas +- Parser tool dialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/insert-entry.md b/Docs/migration/dialogs/insert-entry.md new file mode 100644 index 0000000000..5bf552855e --- /dev/null +++ b/Docs/migration/dialogs/insert-entry.md @@ -0,0 +1,33 @@ +# Insert Entry (`InsertEntryDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.InsertEntryDlg` (`Src/LexText/LexTextControls/InsertEntryDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | owned-control form (multi-WS lexeme/gloss + morph-type picker + MSA group box + matching-entries list) | +| **State** | coexist — the Avalonia **InsertEntryDialog** is a KEPT canonical screen (see [README](../README.md)) | +| **JIRA** | LT-XXXXX (canonical reference — not a deferred port) | + +This is the legacy "before" baseline for the kept-canonical Avalonia `InsertEntryDialog`. The harness +captures the dialog CHROME (ctor-only); its live "matching entries" search-browse populates only in the +running app, so the populated results list is captured live / on pickup. + +## Notes / gotchas +- Owned controls: `FwMultiWsTextField` (lexeme form + gloss), `FwOptionPicker` (morph type), `FwMsaGroupBox`. +- The matching-entries list is the live search-browse (XMLView) — see the matching-entries note in `capture-ledger.md`. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![insert-entry legacy](./images/insert-entry-before.png) | ![insert-entry avalonia](./images/insert-entry-after.png) | +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![insert-entry legacy](./images/insert-entry-before.png) | ![insert-entry avalonia](./images/insert-entry-after.png) | diff --git a/Docs/migration/dialogs/insert-record-dlg.md b/Docs/migration/dialogs/insert-record-dlg.md new file mode 100644 index 0000000000..5dca6062d5 --- /dev/null +++ b/Docs/migration/dialogs/insert-record-dlg.md @@ -0,0 +1,29 @@ +# Insert Record (`InsertRecordDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.InsertRecordDlg` (`Src/LexText/LexTextControls/InsertRecordDlg.cs`) | +| **Area** | Notebook | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![insert-record legacy](./images/insert-record-before.png) | ![insert-record avalonia](./images/insert-record-after.png) | +## What it is +Creates a new Data Notebook record (Notebook counterpart of InsertEntryDlg). + +## Notes / gotchas +- Owned FW writing-system-aware title control; writes through LcmModel.Infrastructure (UnitOfWork). +- Closest sibling to the already-migrated InsertEntryDialog - copy that pattern. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/insert-variant-dlg.md b/Docs/migration/dialogs/insert-variant-dlg.md new file mode 100644 index 0000000000..5d906709e3 --- /dev/null +++ b/Docs/migration/dialogs/insert-variant-dlg.md @@ -0,0 +1,28 @@ +# Insert Variant (`InsertVariantDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.InsertVariantDlg` (`Src/LexText/LexTextControls/LinkVariantToEntryOrSense.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![insert-variant legacy](./images/insert-variant-before.png) | ![insert-variant avalonia](./images/insert-variant-after.png) | +## What it is +Insert a new variant, reusing LinkVariantToEntryOrSense logic to detect an already-inserted selected variant. + +## Notes / gotchas +- Subclass of LinkVariantToEntryOrSense (same file, line 427). Source TODO flags refactor of m_fBackRefToVariant logic. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/interlinear-export-dialog.md b/Docs/migration/dialogs/interlinear-export-dialog.md new file mode 100644 index 0000000000..50ae779da5 --- /dev/null +++ b/Docs/migration/dialogs/interlinear-export-dialog.md @@ -0,0 +1,29 @@ +# Interlinear Export (`InterlinearExportDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.InterlinearExportDialog` (`Src/LexText/Interlinear/InterlinearExportDialog.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![interlinear-export legacy](./images/interlinear-export-before.png) | ![interlinear-export avalonia](./images/interlinear-export-after.png) | +## What it is +Exports interlinear text; subclass of ExportDialog. + +## Notes / gotchas +- Subclasses shared ExportDialog (outside this tree); migrate with the ExportDialog family. +- Couples to RootSites (SIL.FieldWorks.Common.RootSites) for view rendering. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/interlinear-import-dlg.md b/Docs/migration/dialogs/interlinear-import-dlg.md new file mode 100644 index 0000000000..5da56816ce --- /dev/null +++ b/Docs/migration/dialogs/interlinear-import-dlg.md @@ -0,0 +1,29 @@ +# Interlinear Import (`InterlinearImportDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.InterlinearImportDlg` (`Src/LexText/Interlinear/InterlinearImportDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![interlinear-import legacy](./images/interlinear-import-before.png) | ![interlinear-import avalonia](./images/interlinear-import-after.png) | +## What it is +Imports interlinear text (FlexText) into the project. + +## Notes / gotchas +- Implements IFwExtension (loaded as a tool extension). +- Uses FileDialog wrappers (SIL.FieldWorks.Common.Controls.FileDialog). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/lex-import-wizard-char-marker-dlg.md b/Docs/migration/dialogs/lex-import-wizard-char-marker-dlg.md new file mode 100644 index 0000000000..fef07d2d2d --- /dev/null +++ b/Docs/migration/dialogs/lex-import-wizard-char-marker-dlg.md @@ -0,0 +1,28 @@ +# Lex Import Wizard - Char Marker (`LexImportWizardCharMarkerDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LexImportWizardCharMarkerDlg` (`Src/LexText/LexTextControls/LexImportWizardCharMarkerDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![lex-import-wizard-char-marker legacy](./images/lex-import-wizard-char-marker-before.png) | ![lex-import-wizard-char-marker avalonia](./images/lex-import-wizard-char-marker-after.png) | +## What it is +Edits an inline character/begin-end marker mapping in the standard-format lexicon import wizard. + +## Notes / gotchas +- Part of the LexImport SFM wizard step family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/lex-import-wizard-language.md b/Docs/migration/dialogs/lex-import-wizard-language.md new file mode 100644 index 0000000000..740edb997e --- /dev/null +++ b/Docs/migration/dialogs/lex-import-wizard-language.md @@ -0,0 +1,21 @@ +# Lex Import Wizard - Language (`LexImportWizardLanguage`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LexImportWizardLanguage` (`Src/LexText/LexTextControls/LexImportWizardLanguage.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Defines a language/writing-system + encoding-converter for a marker in the lexicon import wizard. + +## Notes / gotchas +- Part of the LexImport SFM wizard step family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/lex-import-wizard-marker.md b/Docs/migration/dialogs/lex-import-wizard-marker.md new file mode 100644 index 0000000000..d654465a90 --- /dev/null +++ b/Docs/migration/dialogs/lex-import-wizard-marker.md @@ -0,0 +1,21 @@ +# Lex Import Wizard - Marker (`LexImportWizardMarker`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LexImportWizardMarker` (`Src/LexText/LexTextControls/LexImportWizardMarker.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Edits the destination mapping for an SFM marker in the lexicon import wizard. + +## Notes / gotchas +- Part of the LexImport SFM wizard step family. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/lex-options.md b/Docs/migration/dialogs/lex-options.md new file mode 100644 index 0000000000..d884abcae5 --- /dev/null +++ b/Docs/migration/dialogs/lex-options.md @@ -0,0 +1,39 @@ +# Tools → Options (`LexOptionsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexText.LexOptionsDlg` (`Src/LexText/LexTextControls/LexOptionsDlg.cs`) | +| **Area** | App-wide | +| **Type** | dialog (TABS) | +| **Primitive** | tabs | +| **State** | coexist — the Avalonia **OptionsDialog** is a KEPT canonical screen (see [README](../README.md)) | +| **JIRA** | LT-XXXXX (canonical reference — not a deferred port) | + +Legacy "before" baseline for the kept-canonical Avalonia `OptionsDialog`. Captured with all tabs +(General / Plugins / Privacy / Updates). + +## Notes / gotchas +- Canonical TABS example; the Avalonia `OptionsDialog` replaces it (live UI-mode apply, no restart). + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![lex-options legacy](./images/lex-options-before.png) | ![lex-options avalonia](./images/lex-options-after.png) | + +Tabs (legacy): + +![general](./images/lex-options-tab-general.png) ![plugins](./images/lex-options-tab-plugins.png) ![privacy](./images/lex-options-tab-privacy.png) ![updates](./images/lex-options-tab-updates.png) +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![lex-options legacy](./images/lex-options-before.png) | ![lex-options avalonia](./images/lex-options-after.png) | + +Tabs (legacy): + +![general](./images/lex-options-tab-general.png) ![plugins](./images/lex-options-tab-plugins.png) ![privacy](./images/lex-options-tab-privacy.png) ![updates](./images/lex-options-tab-updates.png) diff --git a/Docs/migration/dialogs/lift-export-message.md b/Docs/migration/dialogs/lift-export-message.md new file mode 100644 index 0000000000..7df3d18e4b --- /dev/null +++ b/Docs/migration/dialogs/lift-export-message.md @@ -0,0 +1,27 @@ +# LIFT Export Message (`LiftExportMessageDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LiftExportMessageDlg` (`Src/xWorks/LiftExportMessageDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![lift-export-message legacy](./images/lift-export-message-before.png) | ![lift-export-message avalonia](./images/lift-export-message-after.png) | +## What it is +Informational message dialog shown after a LIFT export. + +## Notes / gotchas +- Simple message-and-button plain-form; TBD — confirm exact message/buttons on pickup. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/lift-import-dlg.md b/Docs/migration/dialogs/lift-import-dlg.md new file mode 100644 index 0000000000..dbc7ad59ad --- /dev/null +++ b/Docs/migration/dialogs/lift-import-dlg.md @@ -0,0 +1,28 @@ +# LIFT Import (`LiftImportDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LiftImportDlg` (`Src/LexText/LexTextControls/LiftImportDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![lift-import legacy](./images/lift-import-before.png) | ![lift-import avalonia](./images/lift-import-after.png) | +## What it is +Imports a LIFT lexicon file into the project. + +## Notes / gotchas +- Implements IFwExtension. Uses SIL.Lift validation. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/lingua-links-import-dlg.md b/Docs/migration/dialogs/lingua-links-import-dlg.md new file mode 100644 index 0000000000..f68a0a454e --- /dev/null +++ b/Docs/migration/dialogs/lingua-links-import-dlg.md @@ -0,0 +1,21 @@ +# LinguaLinks Import (`LinguaLinksImportDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.IText.LinguaLinksImportDlg` (`Src/LexText/Interlinear/LinguaLinksImportDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Imports data from a legacy LinguaLinks export. + +## Notes / gotchas +- Implements IFwExtension. Multi-step import flow. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/link-allomorph-dlg.md b/Docs/migration/dialogs/link-allomorph-dlg.md new file mode 100644 index 0000000000..d806d2285a --- /dev/null +++ b/Docs/migration/dialogs/link-allomorph-dlg.md @@ -0,0 +1,28 @@ +# Link Allomorph (`LinkAllomorphDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LinkAllomorphDlg` (`Src/LexText/LexTextControls/LinkAllomorphDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![link-allomorph legacy](./images/link-allomorph-before.png) | ![link-allomorph avalonia](./images/link-allomorph-after.png) | +## What it is +Search for and select an existing allomorph to link to. + +## Notes / gotchas +- Subclass of EntryGoDlg. State=coexist: Avalonia path is LcmLinkAllomorphDialogLauncher under UIMode=New. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/link-entry-or-sense-dlg.md b/Docs/migration/dialogs/link-entry-or-sense-dlg.md new file mode 100644 index 0000000000..7e4c1da2bf --- /dev/null +++ b/Docs/migration/dialogs/link-entry-or-sense-dlg.md @@ -0,0 +1,28 @@ +# Link Entry or Sense (`LinkEntryOrSenseDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LinkEntryOrSenseDlg` (`Src/LexText/LexTextControls/LinkEntryOrSenseDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![link-entry-or-sense legacy](./images/link-entry-or-sense-before.png) | ![link-entry-or-sense avalonia](./images/link-entry-or-sense-after.png) | +## What it is +Search for and select an existing lexical entry or sense to link to. + +## Notes / gotchas +- Subclass of EntryGoDlg. State=coexist: Avalonia path is LcmLinkEntryOrSenseDialogLauncher under UIMode=New. Base class for LinkVariantToEntryOrSense. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/link-msa-dlg.md b/Docs/migration/dialogs/link-msa-dlg.md new file mode 100644 index 0000000000..207d70a4a9 --- /dev/null +++ b/Docs/migration/dialogs/link-msa-dlg.md @@ -0,0 +1,28 @@ +# Link MSA (`LinkMSADlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LinkMSADlg` (`Src/LexText/LexTextControls/LinkMSADlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![link-msa legacy](./images/link-msa-before.png) | ![link-msa avalonia](./images/link-msa-after.png) | +## What it is +Search for and select an existing entry/MSA (grammatical info) to link to. + +## Notes / gotchas +- Subclass of EntryGoDlg. State=coexist: Avalonia path is LcmLinkMsaDialogLauncher under UIMode=New. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/link-variant-to-entry-or-sense.md b/Docs/migration/dialogs/link-variant-to-entry-or-sense.md new file mode 100644 index 0000000000..0e4d2f3f28 --- /dev/null +++ b/Docs/migration/dialogs/link-variant-to-entry-or-sense.md @@ -0,0 +1,21 @@ +# Link Variant to Entry or Sense (`LinkVariantToEntryOrSense`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LinkVariantToEntryOrSense` (`Src/LexText/LexTextControls/LinkVariantToEntryOrSense.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Search for and link a variant to its main entry/sense, with extra variant-back-reference logic. + +## Notes / gotchas +- Subclass of LinkEntryOrSenseDlg; instantiated directly (e.g. from the interlinear Sandbox combo handlers) AND subclassed by InsertVariantDlg. State=coexist via the LinkEntryOrSenseDlg/LcmLinkEntryOrSenseDialogLauncher path. Adds m_fBackRefToVariant logic. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/master-category-list-dlg.md b/Docs/migration/dialogs/master-category-list-dlg.md new file mode 100644 index 0000000000..9ea78f154d --- /dev/null +++ b/Docs/migration/dialogs/master-category-list-dlg.md @@ -0,0 +1,29 @@ +# Master Category List (`MasterCategoryListDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MasterCategoryListDlg` (`Src/LexText/LexTextControls/MasterCategoryListDlg.cs`) | +| **Area** | Grammar | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![master-category-list legacy](./images/master-category-list-before.png) | ![master-category-list avalonia](./images/master-category-list-after.png) | +## What it is +Pick a grammatical category (part of speech) from the GOLD master catalog tree and add it to the project. + +## Notes / gotchas +- State=coexist: the Avalonia replacement is LcmCreatePartOfSpeechLauncher (UIMode=New), which mirrors this dialog's catalog-load + create-in-project logic exactly. Also reached via MasterCategoryListChooserLauncher and POSPopupTreeManager. +- Hierarchical single-select tree of master categories loaded from the template directory. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/master-inflection-feature-list-dlg.md b/Docs/migration/dialogs/master-inflection-feature-list-dlg.md new file mode 100644 index 0000000000..9c140a40b7 --- /dev/null +++ b/Docs/migration/dialogs/master-inflection-feature-list-dlg.md @@ -0,0 +1,21 @@ +# Master Inflection Feature List (`MasterInflectionFeatureListDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MasterInflectionFeatureListDlg` (`Src/LexText/LexTextControls/MasterInflectionFeatureListDlg.cs`) | +| **Area** | Grammar | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Pick an inflection feature from the master feature catalog tree and add it to the project. + +## Notes / gotchas +- Subclass of MasterListDlg (base excluded). Sibling of the feature-chooser family but distinct (this picks from the GOLD master catalog, not the project feature structure). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/master-phonological-feature-list-dlg.md b/Docs/migration/dialogs/master-phonological-feature-list-dlg.md new file mode 100644 index 0000000000..78e91485ed --- /dev/null +++ b/Docs/migration/dialogs/master-phonological-feature-list-dlg.md @@ -0,0 +1,21 @@ +# Master Phonological Feature List (`MasterPhonologicalFeatureListDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MasterPhonologicalFeatureListDlg` (`Src/LexText/LexTextControls/MasterPhonologicalFeatureListDlg.cs`) | +| **Area** | Grammar | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Pick a phonological feature from the master feature catalog tree and add it to the project. + +## Notes / gotchas +- Subclass of MasterListDlg (base excluded). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/merge-entry-dlg.md b/Docs/migration/dialogs/merge-entry-dlg.md new file mode 100644 index 0000000000..7217824969 --- /dev/null +++ b/Docs/migration/dialogs/merge-entry-dlg.md @@ -0,0 +1,28 @@ +# Merge Entry (`MergeEntryDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MergeEntryDlg` (`Src/LexText/LexTextControls/MergeEntryDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![merge-entry legacy](./images/merge-entry-before.png) | ![merge-entry avalonia](./images/merge-entry-after.png) | +## What it is +Search for and select the entry to merge the current entry into. + +## Notes / gotchas +- Subclass of EntryGoDlg. State=coexist: Avalonia path is LcmMergeEntryDialogLauncher under UIMode=New. Merge is destructive - preserve confirmation/undo semantics. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/merge-object.md b/Docs/migration/dialogs/merge-object.md new file mode 100644 index 0000000000..ec78276e74 --- /dev/null +++ b/Docs/migration/dialogs/merge-object.md @@ -0,0 +1,28 @@ +# Merge Object (`MergeObjectDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FdoUi.Dialogs.MergeObjectDlg` (`Src/FdoUi/Dialogs/MergeObjectDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (pick a merge target from a list) with an owned preview control | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![merge-object legacy](./images/merge-object-before.png) | ![merge-object avalonia](./images/merge-object-after.png) | +## What it is +Lets the user merge the current object into another object of the same kind: pick the target to merge into, with a preview/summary of the candidate. + +## Notes / gotchas +- Uses an owned `FwTextBox` (`m_fwTextBoxBottomMsg`, `SIL.FieldWorks.Common.Widgets.FwTextBox`) for the bottom message — needs an owned-control / styled-text equivalent. +- Destructive operation (merge); confirm undo/transaction semantics on pickup. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/merge-writing-system.md b/Docs/migration/dialogs/merge-writing-system.md new file mode 100644 index 0000000000..462bd6afa5 --- /dev/null +++ b/Docs/migration/dialogs/merge-writing-system.md @@ -0,0 +1,20 @@ +# Merge Writing System (`MergeWritingSystemDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.MergeWritingSystemDlg` (`Src/FwCoreDlgs/MergeWritingSystemDlg.cs`) | +| **Area** | App-wide (writing-system management) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +The merge writing systems dialog — merges one writing system's data into another. + +## Notes / gotchas +- Modal; data-mutating operation (confirm semantics on pickup). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/mga-dialog.md b/Docs/migration/dialogs/mga-dialog.md new file mode 100644 index 0000000000..b4a8d2eb8d --- /dev/null +++ b/Docs/migration/dialogs/mga-dialog.md @@ -0,0 +1,21 @@ +# MGA (Gloss Assistant) (`MGADialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MGA.MGADialog` (`Src/LexText/Morphology/MGA/MGADialog.cs`) | +| **Area** | Grammar | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Morphological Glossing Assistant: build a gloss/grammatical-info string by walking a feature tree. Usable standalone (no HTML help). + +## Notes / gotchas +- Base for MGAHtmlHelpDialog but also used standalone, so it is a real user-facing dialog. Feature tree + generated gloss string. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/mga-html-help-dialog.md b/Docs/migration/dialogs/mga-html-help-dialog.md new file mode 100644 index 0000000000..1100b54bb0 --- /dev/null +++ b/Docs/migration/dialogs/mga-html-help-dialog.md @@ -0,0 +1,21 @@ +# MGA (with HTML Help) (`MGAHtmlHelpDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MGA.MGAHtmlHelpDialog` (`Src/LexText/Morphology/MGA/MGAHtmlHelpDialog.cs`) | +| **Area** | Grammar | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +MGADialog plus an embedded HTML help pane describing the currently selected feature node. + +## Notes / gotchas +- Subclass of MGADialog adding an HTML help browser pane. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/missing-old-fieldworks.md b/Docs/migration/dialogs/missing-old-fieldworks.md new file mode 100644 index 0000000000..99b64d9791 --- /dev/null +++ b/Docs/migration/dialogs/missing-old-fieldworks.md @@ -0,0 +1,20 @@ +# Missing Old FieldWorks (`MissingOldFieldWorksDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.MissingOldFieldWorksDlg` (`Src/FwCoreDlgs/MissingOldFieldWorksDlg.cs`) | +| **Area** | App-wide (restore / migration) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +Pops up when the user tries to restore/migrate an old project but the old version of FieldWorks (or its special SQL Server instance) is not installed. + +## Notes / gotchas +- Informational/blocking dialog; modal. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/move-or-copy-files.md b/Docs/migration/dialogs/move-or-copy-files.md new file mode 100644 index 0000000000..2ec126b260 --- /dev/null +++ b/Docs/migration/dialogs/move-or-copy-files.md @@ -0,0 +1,27 @@ +# Move or Copy Files (`MoveOrCopyFilesDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.MoveOrCopyFilesDlg` (`Src/FwCoreDlgs/MoveOrCopyFilesDlg.cs`) | +| **Area** | App-wide (linked files) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![move-or-copy-files legacy](./images/move-or-copy-files-before.png) | ![move-or-copy-files avalonia](./images/move-or-copy-files-after.png) | +## What it is +Asks what to do with files when `LangProject.LinkedFilesRootDir` changes, or when linking a file from outside that root — move, copy into the linked-files root, or leave in place. + +## Notes / gotchas +- Driven by `MoveOrCopyFilesController` (folds in); choice/radio-button style decision dialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/new-lang-project.md b/Docs/migration/dialogs/new-lang-project.md new file mode 100644 index 0000000000..48898c9487 --- /dev/null +++ b/Docs/migration/dialogs/new-lang-project.md @@ -0,0 +1,21 @@ +# New Language Project (`FwNewLangProject`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwNewLangProject` (`Src/FwCoreDlgs/FwNewLangProject.cs`) | +| **Area** | App-wide (project creation) | +| **Type** | dialog | +| **Primitive** | owned-control (wizard steps) | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | owned-control form→InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +The New Language Project dialog — collects project name and initial writing systems to create a new FLEx project. + +## Notes / gotchas +- Hosts owned sub-controls: `FwNewProjectProjectNameControl`, `FwNewLangProjWritingSystemsControl`, `FwNewLangProjMoreWsControl`, `FwChooseAnthroListCtrl` (anthropology-list picker, backed by `FwChooseAnthroListModel`), and `WizardStep` (driven by `FwNewLangProjectModel` / `NewLangProjStep`). Fold these into this dialog's migration. +- Wizard-style multi-step flow. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/notebook-export.md b/Docs/migration/dialogs/notebook-export.md new file mode 100644 index 0000000000..0e5edbf2f1 --- /dev/null +++ b/Docs/migration/dialogs/notebook-export.md @@ -0,0 +1,27 @@ +# Notebook Export (`NotebookExportDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.NotebookExportDialog` (`Src/xWorks/NotebookExportDialog.cs`) | +| **Area** | App-wide (Data Notebook) | +| **Type** | dialog | +| **Primitive** | TABLE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (list of export formats + Export action) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![notebook-export legacy](./images/notebook-export-before.png) | ![notebook-export avalonia](./images/notebook-export-after.png) | +## What it is +Subclass of `ExportDialog` that overrides export behaviour to export from the Data Notebook section of Language Explorer. + +## Notes / gotchas +- Inherits the `ExportDialog` `ListView`/config-file surface (`export-dialog.md`); only `ConfigureItem` and the export process differ. Migrate together with `ExportDialog` as a configured variant. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/occurrence-dlg.md b/Docs/migration/dialogs/occurrence-dlg.md new file mode 100644 index 0000000000..f513868d82 --- /dev/null +++ b/Docs/migration/dialogs/occurrence-dlg.md @@ -0,0 +1,28 @@ +# Occurrence (`OccurrenceDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.OccurrenceDlg` (`Src/LexText/LexTextControls/OccurrenceDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![occurrence legacy](./images/occurrence-before.png) | ![occurrence avalonia](./images/occurrence-after.png) | +## What it is +TBD - fill on pickup (prompts for an occurrence count/spec). + +## Notes / gotchas +- No class summary in source. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/overwrite-existing-project.md b/Docs/migration/dialogs/overwrite-existing-project.md new file mode 100644 index 0000000000..43f973a5ee --- /dev/null +++ b/Docs/migration/dialogs/overwrite-existing-project.md @@ -0,0 +1,26 @@ +# Overwrite Existing Project (`OverwriteExistingProject`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.BackupRestore.OverwriteExistingProject` (`Src/FwCoreDlgs/BackupRestore/OverwriteExistingProject.cs`) | +| **Area** | App-wide (backup / restore) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +TBD — confirmation shown during restore when the target project already exists, to confirm overwriting (infer from class name; fill on pickup). + +## What it looks like (before / after) +**Live-capture / on-pickup.** This confirmation only appears *mid-restore* (when the target project already +exists), so it can't be opened unattended without actually performing a restore (which would modify a +project — out of scope for read-only capture). Its parent RestoreProjectDlg is captured — see +[restore-project.md](./restore-project.md). + +## Notes / gotchas +- Confirmation dialog launched from the Restore-a-Project dialog (RestoreProjectDlg); modal. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/parser-parameters-dlg.md b/Docs/migration/dialogs/parser-parameters-dlg.md new file mode 100644 index 0000000000..e0933ba330 --- /dev/null +++ b/Docs/migration/dialogs/parser-parameters-dlg.md @@ -0,0 +1,28 @@ +# Parser Parameters (`ParserParametersDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.ParserParametersDlg` (`Src/LexText/ParserUI/ParserParametersDlg.cs`) | +| **Area** | Grammar | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | OptionsDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![parser-parameters legacy](./images/parser-parameters-before.png) | ![parser-parameters avalonia](./images/parser-parameters-after.png) | +## What it is +Edits the active parser's parameters (XML-backed settings). + +## Notes / gotchas +- Subclass of ParserParametersBase (base excluded - never instantiated directly). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/project-location.md b/Docs/migration/dialogs/project-location.md new file mode 100644 index 0000000000..69ffad99eb --- /dev/null +++ b/Docs/migration/dialogs/project-location.md @@ -0,0 +1,27 @@ +# Project Location (`ProjectLocationDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.ProjectLocationDlg` (`Src/FwCoreDlgs/ProjectLocationDlg.cs`) | +| **Area** | App-wide (project management) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![project-location legacy](./images/project-location-before.png) | ![project-location avalonia](./images/project-location-after.png) | +## What it is +Supports controlling the location and sharing of the project folder. + +## Notes / gotchas +- Modal; folder/path selection plus sharing options. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/project-properties.md b/Docs/migration/dialogs/project-properties.md new file mode 100644 index 0000000000..6e5adc52d3 --- /dev/null +++ b/Docs/migration/dialogs/project-properties.md @@ -0,0 +1,32 @@ +# Project Properties (`FwProjPropertiesDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwProjPropertiesDlg` (`Src/FwCoreDlgs/FwProjPropertiesDlg.cs`) | +| **Area** | App-wide (project settings) | +| **Type** | dialog | +| **Primitive** | TABS | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | tabs→OptionsDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-proj-properties legacy](./images/fw-proj-properties-before.png) | ![fw-proj-properties avalonia](./images/fw-proj-properties-after.png) | + +Tabs (legacy): + +![general](./images/fw-proj-properties-tab-general.png) ![linked-files](./images/fw-proj-properties-tab-linked-files.png) ![sharing](./images/fw-proj-properties-tab-sharing.png) +## What it is +The Project Properties dialog — edits project-level settings (name, description, writing systems, linked-files location, etc.). + +## Notes / gotchas +- Views-coupled (references `IVwRootSite`/selection-based rendering for some fields). +- Multi-tab settings surface. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/record-go-dlg.md b/Docs/migration/dialogs/record-go-dlg.md new file mode 100644 index 0000000000..6b39633bf6 --- /dev/null +++ b/Docs/migration/dialogs/record-go-dlg.md @@ -0,0 +1,28 @@ +# Record Go (Notebook) (`RecordGoDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.RecordGoDlg` (`Src/LexText/LexTextControls/RecordGoDlg.cs`) | +| **Area** | Notebook | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![record-go legacy](./images/record-go-before.png) | ![record-go avalonia](./images/record-go-after.png) | +## What it is +Go-to / find dialog for Data Notebook records (Notebook analog of GotoEntryDlg). + +## Notes / gotchas +- Subclass of BaseGoDlg (base excluded). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/related-words.md b/Docs/migration/dialogs/related-words.md new file mode 100644 index 0000000000..0e661e1747 --- /dev/null +++ b/Docs/migration/dialogs/related-words.md @@ -0,0 +1,21 @@ +# Related Words (`RelatedWords`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FdoUi.Dialogs.RelatedWords` (`Src/FdoUi/Dialogs/RelatedWords.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog (owned native-render control inside a dialog) | +| **JIRA** | LT-XXXXX | + +## What it is +Shows words semantically/lexically related to a selected word (or a "not in dictionary" message), letting the user navigate to a related entry. + +## Notes / gotchas +- HARD Views coupling: hosts an embedded `RelatedWordsView : SimpleRootSite` (`Src/FdoUi/Dialogs/RelatedWords.cs:553`) with its own `IVwRootBox`. Migration needs a native-render owned control or a re-implemented related-words view. +- `using SIL.FieldWorks.Common.RootSites`. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/respeller-dlg.md b/Docs/migration/dialogs/respeller-dlg.md new file mode 100644 index 0000000000..7f3dc36f05 --- /dev/null +++ b/Docs/migration/dialogs/respeller-dlg.md @@ -0,0 +1,21 @@ +# Respeller (`RespellerDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.MorphologyEditor.RespellerDlg` (`Src/LexText/Morphology/RespellerDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | TABLE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Bulk-corrects the spelling of a wordform across all its occurrences, with per-occurrence include/exclude. + +## Notes / gotchas +- Owned occurrences browse view (Views-coupled); applies a respelling across many text instances - preserve undo + per-occurrence selection. Resources/Drawing coupling. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/restore-defaults-dlg.md b/Docs/migration/dialogs/restore-defaults-dlg.md new file mode 100644 index 0000000000..97c527cf7c --- /dev/null +++ b/Docs/migration/dialogs/restore-defaults-dlg.md @@ -0,0 +1,28 @@ +# Restore Defaults (`RestoreDefaultsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexText.RestoreDefaultsDlg` (`Src/LexText/LexTextDll/RestoreDefaultsDlg.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![restore-defaults legacy](./images/restore-defaults-before.png) | ![restore-defaults avalonia](./images/restore-defaults-after.png) | +## What it is +TBD - fill on pickup (confirms restoring default settings/layouts). + +## Notes / gotchas +- No class summary in source. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/restore-linked-files-to-projects-folder.md b/Docs/migration/dialogs/restore-linked-files-to-projects-folder.md new file mode 100644 index 0000000000..37c074bbe4 --- /dev/null +++ b/Docs/migration/dialogs/restore-linked-files-to-projects-folder.md @@ -0,0 +1,20 @@ +# Restore Linked Files to Projects Folder (`RestoreLinkedFilesToProjectsFolder`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FdoUi.Dialogs.RestoreLinkedFilesToProjectsFolder` (`Src/FdoUi/Dialogs/RestoreLinkedFilesToProjectsFolder.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it is +Restore-linked-files prompt offering to restore linked files into the project's folder (vs another location). + +## Notes / gotchas +- Part of the linked-files restore prompt family (with `CantRestoreLinkedFilesToOriginalLocation` and `FilesToRestoreAreOlder`) — migrate together; likely radio-option + OK/Cancel. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/restore-project.md b/Docs/migration/dialogs/restore-project.md new file mode 100644 index 0000000000..a864c26d8f --- /dev/null +++ b/Docs/migration/dialogs/restore-project.md @@ -0,0 +1,28 @@ +# Restore Project (`RestoreProjectDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.BackupRestore.RestoreProjectDlg` (`Src/FwCoreDlgs/BackupRestore/RestoreProjectDlg.cs`) | +| **Area** | App-wide (backup / restore) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![restore-project legacy](./images/restore-project-before.png) | ![restore-project avalonia](./images/restore-project-after.png) | +## What it is +The Restore Project dialog — picks a backup and restores it into a project. + +## Notes / gotchas +- Driven by `RestoreProjectPresenter`. +- May surface `OverwriteExistingProject` when the restore target already exists. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/reversal-entry-go-dlg.md b/Docs/migration/dialogs/reversal-entry-go-dlg.md new file mode 100644 index 0000000000..768e6921e4 --- /dev/null +++ b/Docs/migration/dialogs/reversal-entry-go-dlg.md @@ -0,0 +1,21 @@ +# Reversal Entry Go (`ReversalEntryGoDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.ReversalEntryGoDlg` (`Src/LexText/Lexicon/ReversalEntryGoDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | search+list | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Go-to / find dialog for reversal-index entries. + +## Notes / gotchas +- Subclass of BaseGoDlg (base excluded). Reversal-index variant of GotoEntryDlg. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/select-clauses-dialog.md b/Docs/migration/dialogs/select-clauses-dialog.md new file mode 100644 index 0000000000..a4d83630bd --- /dev/null +++ b/Docs/migration/dialogs/select-clauses-dialog.md @@ -0,0 +1,21 @@ +# Select Clauses (`SelectClausesDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Discourse.SelectClausesDialog` (`Src/LexText/Discourse/SelectClausesDialog.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +TBD - fill on pickup (constituent-chart clause selection). + +## Notes / gotchas +- No class summary in source. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/sfm-to-texts-and-words-mapping-dlg.md b/Docs/migration/dialogs/sfm-to-texts-and-words-mapping-dlg.md new file mode 100644 index 0000000000..5ce6601bb1 --- /dev/null +++ b/Docs/migration/dialogs/sfm-to-texts-and-words-mapping-dlg.md @@ -0,0 +1,28 @@ +# SFM -> Texts & Words Mapping (`SfmToTextsAndWordsMappingDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.SfmToTextsAndWordsMappingDlg` (`Src/LexText/LexTextControls/SfmToTextsAndWordsMappingBaseDlg.cs`) | +| **Area** | Texts&Words | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![sfm-to-texts-and-words-mapping legacy](./images/sfm-to-texts-and-words-mapping-before.png) | ![sfm-to-texts-and-words-mapping avalonia](./images/sfm-to-texts-and-words-mapping-after.png) | +## What it is +Maps an SFM marker to a Texts & Words destination during interlinear SFM import. + +## Notes / gotchas +- Uses encoding-converter (SilEncConverters40) + writing-system selection. Sibling of the DataNotebook import-mapping dialogs. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/splash-screen.md b/Docs/migration/dialogs/splash-screen.md new file mode 100644 index 0000000000..4f76f12560 --- /dev/null +++ b/Docs/migration/dialogs/splash-screen.md @@ -0,0 +1,21 @@ +# Splash Screen (`RealSplashScreen`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.RealSplashScreen` (`Src/FwCoreDlgs/RealSplashScreen.cs`) | +| **Area** | App-wide (startup) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +The startup splash screen the user sees while FieldWorks loads. Created and managed by `FwSplashScreen` (a non-Form `IThreadedProgress` wrapper) and runs on a separate thread; implements `IProgress`. + +## Notes / gotchas +- This is a splash window, not a true modal/modeless dialog — borderless, no user input, runs on its own thread. Migration treatment differs from ordinary dialogs. +- `internal class` (not public). `FwSplashScreen` is the public wrapper/owner and is not itself a Form. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/styles-modified.md b/Docs/migration/dialogs/styles-modified.md new file mode 100644 index 0000000000..118971a880 --- /dev/null +++ b/Docs/migration/dialogs/styles-modified.md @@ -0,0 +1,27 @@ +# Styles Modified (`FwStylesModifiedDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwStylesModifiedDlg` (`Src/FwCoreDlgs/FwStylesModifiedDlg.cs`) | +| **Area** | App-wide (styles) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-styles-modified legacy](./images/fw-styles-modified-before.png) | ![fw-styles-modified avalonia](./images/fw-styles-modified-after.png) | +## What it is +A message box displayed when the stylesheet has been modified, to notify the user that they may want to check their styles. + +## Notes / gotchas +- Subclass of FwUpdateReportDlg (report-style dialog). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/styles.md b/Docs/migration/dialogs/styles.md new file mode 100644 index 0000000000..f784ae55c6 --- /dev/null +++ b/Docs/migration/dialogs/styles.md @@ -0,0 +1,33 @@ +# Styles (`FwStylesDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwStylesDlg` (`Src/FwCoreDlgs/FwStylesDlg.cs`) | +| **Area** | App-wide (styles) | +| **Type** | dialog | +| **Primitive** | TABS | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | tabs→OptionsDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-styles legacy](./images/fw-styles-before.png) | ![fw-styles avalonia](./images/fw-styles-after.png) | + +Tabs (legacy): + +![border](./images/fw-styles-tab-border.png) ![bullets](./images/fw-styles-tab-bullets.png) ![font](./images/fw-styles-tab-font.png) ![general](./images/fw-styles-tab-general.png) ![paragraph](./images/fw-styles-tab-paragraph.png) +## What it is +The (new) Styles dialog — create, edit, and organize paragraph/character styles for the project. + +## Notes / gotchas +- Views-coupled (hosts a live style preview / `IVwRootSite`). +- Hosts the owned `IStylesTab` tab controls (`FwGeneralTab`, `FwFontTab`, `FwParagraphTab`, `FwBulletsTab`, `FwBorderTab`) plus style-list helpers and `StyleInfo`. Fold these into this dialog's migration. +- Includes an `UndoStyleChangesAction` (undo integration). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/summary-dialog-form.md b/Docs/migration/dialogs/summary-dialog-form.md new file mode 100644 index 0000000000..481aedd5ea --- /dev/null +++ b/Docs/migration/dialogs/summary-dialog-form.md @@ -0,0 +1,22 @@ +# Summary Dialog Find in Lexicon (`SummaryDialogForm`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FdoUi.Dialogs.SummaryDialogForm` (`Src/FdoUi/Dialogs/SummaryDialogForm.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog (owned native-render summary control inside a dialog) | +| **JIRA** | LT-XXXXX | + +## What it is +Launched from TE's "Find In Lexicon" when a matching lexical entry exists: displays a summary of the entry with buttons to find other similar entries or to open Flex on the relevant entry. + +## Notes / gotchas +- `internal` class but a real user-facing dialog (not a sub-control). +- `using SIL.FieldWorks.Common.RootSites` -- review for a native-render summary view (owned control). +- UNUSUAL modal pattern: after `ShowDialog`, the caller must test `ShouldLink` and call `LinkToLexicon()` only AFTER the dialog fully closes (see LT-3461) -- closing first prevents TE jumping in front of Flex. Also test `OtherButtonClicked`. Preserve this close-then-link ordering. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/swap-lexeme-with-allomorph-dlg.md b/Docs/migration/dialogs/swap-lexeme-with-allomorph-dlg.md new file mode 100644 index 0000000000..8efff4181b --- /dev/null +++ b/Docs/migration/dialogs/swap-lexeme-with-allomorph-dlg.md @@ -0,0 +1,21 @@ +# Swap Lexeme With Allomorph (`SwapLexemeWithAllomorphDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.LexEd.SwapLexemeWithAllomorphDlg` (`Src/LexText/Lexicon/SwapLexemeWithAllomorphDlg.cs`) | +| **Area** | Lexicon | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it is +TBD - fill on pickup (swaps the lexeme form with one of its allomorphs). + +## Notes / gotchas +- No descriptive class summary in source. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/try-a-word-dlg.md b/Docs/migration/dialogs/try-a-word-dlg.md new file mode 100644 index 0000000000..1e653f2996 --- /dev/null +++ b/Docs/migration/dialogs/try-a-word-dlg.md @@ -0,0 +1,28 @@ +# Try A Word (`TryAWordDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.TryAWordDlg` (`Src/LexText/ParserUI/TryAWordDlg.cs`) | +| **Area** | Grammar | +| **Type** | dialog | +| **Primitive** | owned-control | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | InsertEntryDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![try-a-word legacy](./images/try-a-word-before.png) | ![try-a-word avalonia](./images/try-a-word-after.png) | +## What it is +Runs the parser on a single word and shows the trace/results. + +## Notes / gotchas +- Implements IMediatorProvider + IPropertyTableProvider (hosts its own mediator). Hosts a trace/results view (Views-coupled). Modeless-style parser tool. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. + diff --git a/Docs/migration/dialogs/update-report.md b/Docs/migration/dialogs/update-report.md new file mode 100644 index 0000000000..552dfa0282 --- /dev/null +++ b/Docs/migration/dialogs/update-report.md @@ -0,0 +1,27 @@ +# Update Report (`FwUpdateReportDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwUpdateReportDlg` (`Src/FwCoreDlgs/FwUpdateReportDlg.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +Displays somewhat technical information reporting changes that were applied automatically to a project but which the user might want to review. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-update-report legacy](./images/fw-update-report-before.png) | ![fw-update-report avalonia](./images/fw-update-report-after.png) | +## Notes / gotchas +- Intended as an abstract base but kept concrete so the Designer works in derived classes; subclassed by FwStylesModifiedDlg. Override `HelpTopicKey` per use. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/upload-to-webonary.md b/Docs/migration/dialogs/upload-to-webonary.md new file mode 100644 index 0000000000..712ec7ee79 --- /dev/null +++ b/Docs/migration/dialogs/upload-to-webonary.md @@ -0,0 +1,29 @@ +# Upload to Webonary (`UploadToWebonaryDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.UploadToWebonaryDlg` (`Src/xWorks/UploadToWebonaryDlg.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | MULTI-SELECTOR | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (credentials + checked multi-select of reversals/publications) | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![upload-to-webonary legacy](./images/upload-to-webonary-before.png) | ![upload-to-webonary avalonia](./images/upload-to-webonary-after.png) | +## What it is +Dialog for publishing dictionary data to the Webonary web site: site/credentials, publication and configuration choice, and a checkbox list of reversals (`reversalsCheckedListBox`) to include. Implements `IUploadToWebonaryView` (MVC view). + +## Notes / gotchas +- `CheckedListBox` of reversals (checked-item state must round-trip to/from saved project settings). +- Performs network upload; needs `HelpTopicProvider` and saves project-specific settings. Logic in the Webonary controller/model (`UploadToWebonaryModel`, `WebonaryClient`). +- Pairs with `WebonaryLogViewer` for results. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/user-properties.md b/Docs/migration/dialogs/user-properties.md new file mode 100644 index 0000000000..dbc875203b --- /dev/null +++ b/Docs/migration/dialogs/user-properties.md @@ -0,0 +1,21 @@ +# User Properties (`FwUserProperties`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwUserProperties` (`Src/FwCoreDlgs/FwUserProperties.cs`) | +| **Area** | App-wide (user management) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +User Properties / logons dialog. Per the class comment, this is reached only by a menu command not currently configured in any XML, and the feature was never fully implemented — likely obsolete. + +## Notes / gotchas +- Largely dead code; verify whether it is still reachable before investing in a migration. +- Parent of `AddNewUserDlg` (Add button). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/utility.md b/Docs/migration/dialogs/utility.md new file mode 100644 index 0000000000..544a393914 --- /dev/null +++ b/Docs/migration/dialogs/utility.md @@ -0,0 +1,27 @@ +# Utilities (`UtilityDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.UtilityDlg` (`Src/FwCoreDlgs/UtilityDlg.cs`) | +| **Area** | App-wide (tools / utilities) | +| **Type** | dialog | +| **Primitive** | plain-form (list + description panes) | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | search+list→EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![utility legacy](./images/utility-before.png) | ![utility avalonia](./images/utility-after.png) | +## What it is +Presents the list of utilities defined in `Language Explorer\Configuration\UtilityCatalogInclude.xml`. Each utility implements `IUtility` and can set explanatory labels describing when it is needed and what it does. + +## Notes / gotchas +- Plugin-style: items come from `IUtility` implementations enumerated from XML config. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/valid-characters.md b/Docs/migration/dialogs/valid-characters.md new file mode 100644 index 0000000000..5d482396f0 --- /dev/null +++ b/Docs/migration/dialogs/valid-characters.md @@ -0,0 +1,21 @@ +# Valid Characters (`ValidCharactersDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.ValidCharactersDlg` (`Src/FwCoreDlgs/ValidCharactersDlg.cs`) | +| **Area** | App-wide (writing-system management) | +| **Type** | dialog | +| **Primitive** | TABS | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | tabs→OptionsDialog | +| **JIRA** | LT-XXXXX | + +## What it is +Dialog for specifying the valid characters for a FieldWorks writing system. + +## Notes / gotchas +- Views-coupled (hosts `IVwRootSite`-based rendering). +- Hosts the owned `CharContextCtrl` (a `UserControl` with a `ContextGrid : DataGridView` and Views coupling) and uses `FwCharacterCategorizer`. Fold these into this dialog's migration. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/view-hidden-writing-systems.md b/Docs/migration/dialogs/view-hidden-writing-systems.md new file mode 100644 index 0000000000..aee2e9e849 --- /dev/null +++ b/Docs/migration/dialogs/view-hidden-writing-systems.md @@ -0,0 +1,27 @@ +# View Hidden Writing Systems (`ViewHiddenWritingSystemsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.ViewHiddenWritingSystemsDlg` (`Src/FwCoreDlgs/ViewHiddenWritingSystemsDlg.cs`) | +| **Area** | App-wide (writing-system management) | +| **Type** | dialog | +| **Primitive** | plain-form (list) | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | search+list→EntryGoDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![view-hidden-writing-systems legacy](./images/view-hidden-writing-systems-before.png) | ![view-hidden-writing-systems avalonia](./images/view-hidden-writing-systems-after.png) | +## What it is +Lists writing systems that have text in the project but are not in the current type's list (may be in the opposite list); lets the user add a writing system or delete all text in one. Backed by `ViewHiddenWritingSystemsModel`. + +## Notes / gotchas +- View/model split (`ViewHiddenWritingSystemsModel`). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/warning-not-using-default-linked-files-location.md b/Docs/migration/dialogs/warning-not-using-default-linked-files-location.md new file mode 100644 index 0000000000..4c1d3da174 --- /dev/null +++ b/Docs/migration/dialogs/warning-not-using-default-linked-files-location.md @@ -0,0 +1,20 @@ +# Warning: Not Using Default Linked Files Location (`WarningNotUsingDefaultLinkedFilesLocation`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.WarningNotUsingDefaultLinkedFilesLocation` (`Src/FwCoreDlgs/WarningNotUsingDefaultLinkedFilesLocation.cs`) | +| **Area** | App-wide (linked files / Send-Receive) | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form→nearest | +| **JIRA** | LT-XXXXX | + +## What it is +Warns the user that when they choose a custom location for linked files, Send/Receive will not send those files. + +## Notes / gotchas +- Warning dialog; modal. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/webonary-log-viewer.md b/Docs/migration/dialogs/webonary-log-viewer.md new file mode 100644 index 0000000000..f21f1faa59 --- /dev/null +++ b/Docs/migration/dialogs/webonary-log-viewer.md @@ -0,0 +1,21 @@ +# Webonary Log Viewer (`WebonaryLogViewer`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.WebonaryLogViewer` (`Src/xWorks/WebonaryLogViewer.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | TABLE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (filterable log grid) | +| **JIRA** | LT-XXXXX | + +## What it is +Displays the Webonary upload log in a `DataGridView`, with a status-level filter combo (Full Log / errors / warnings) backed by `WebonaryStatusCondition`. + +## Notes / gotchas +- `DataGridView` (not `ListView`) loaded from a log file; filter uses a custom `ComboBoxItem` and a checked-combo (`SIL.Windows.Forms.CheckedComboBox`). +- Read-only viewer; pairs with `UploadToWebonaryDlg`. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/xml-diagnostics.md b/Docs/migration/dialogs/xml-diagnostics.md new file mode 100644 index 0000000000..08f2244f09 --- /dev/null +++ b/Docs/migration/dialogs/xml-diagnostics.md @@ -0,0 +1,20 @@ +# XML Diagnostics (`XmlDiagnosticsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.XmlDiagnosticsDlg` (`Src/xWorks/XmlDiagnosticsDlg.cs`) | +| **Area** | App-wide | +| **Type** | dialog | +| **Primitive** | plain-form | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | plain-form (nearest: OptionsDialog) | +| **JIRA** | LT-XXXXX | + +## What it is +Developer/diagnostics dialog that displays XML diagnostics information. + +## Notes / gotchas +- Diagnostics/utility surface (likely text display); low user exposure. Confirm exact content/controls on pickup. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/dialogs/xml-doc-configure.md b/Docs/migration/dialogs/xml-doc-configure.md new file mode 100644 index 0000000000..2856443e3b --- /dev/null +++ b/Docs/migration/dialogs/xml-doc-configure.md @@ -0,0 +1,30 @@ +# XML Document Configure (legacy) (`XmlDocConfigureDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.XWorks.XmlDocConfigureDlg` (`Src/xWorks/XmlDocConfigureDlg.cs`) | +| **Area** | Dictionary-config | +| **Type** | dialog | +| **Primitive** | TREE | +| **State** | legacy | +| **Phase** | 1 | +| **Canonical reference** | ChooserDialog (tree + detail), but this is a large bespoke screen — see gotchas | +| **JIRA** | LT-XXXXX | + +## What it is +The older jtview-layout configuration editor (the predecessor to `DictionaryConfigurationDlg`): builds a checkable `TreeView` (`m_tvParts`) from XML ``/`` nodes and lets the user configure the Dictionary view. Implements `ILayoutConverter`. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test; attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![xml-doc-configure legacy](./images/xml-doc-configure-before.png) | ![xml-doc-configure avalonia](./images/xml-doc-configure-after.png) | + +## Notes / gotchas +- LARGE, COMPLEX legacy screen with a checkable parts `TreeView`, content `ListView` (writing systems / relation / complex-form / variant / minor-entry types), and per-node detail editing. +- Tightly coupled to the XML jtview layout model (`` traversal, `hideConfig` attributes) and `Common.RootSites`. +- Launches the legacy `DictionaryConfigMgrDlg` (`dictionary-config-mgr.md`) from its Manage button (`:4368`). Likely to RETIRE alongside the legacy config path — confirm which configure dialog survives before investing. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/feature-chooser.md b/Docs/migration/feature-chooser.md new file mode 100644 index 0000000000..65881c3234 --- /dev/null +++ b/Docs/migration/feature-chooser.md @@ -0,0 +1,53 @@ +# Feature-Value Chooser (legacy `MsaInflectionFeatureListDlg` / `PhonologicalFeatureChooserDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MsaInflectionFeatureListDlg` (`Src/LexText/LexTextControls/MsaInflectionFeatureListDlg.cs`) and `PhonologicalFeatureChooserDlg` (`Src/LexText/LexTextControls/PhonologicalFeatureChooserDlg.cs`) | +| **Area / tool** | Lexicon / Grammar › inflection-feature slice and phonological-feature slice › feature-value chooser | +| **Primitive(s)** | picker (owned `FwFeatureStructureEditor` feature-value tree) | +| **Canonical reference** | ChooserDialog (tree / multi-select picker) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/FeatureChooserDialogView.axaml(.cs)` + `FeatureChooserDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +A standalone feature-structure chooser: assigns feature values to an MSA's `IFsFeatStruc` (inflection +features) or to the phonological feature system. Opens from the inflection-feature slice and the +phonological-feature slice. **PARTIAL completeness** — see gotchas. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![phonological-feature-chooser legacy](./images/phonological-feature-chooser-before.png) | ![phonological-feature-chooser avalonia](./images/phonological-feature-chooser-after.png) | +## Behaviour to preserve (parity checklist) +- [ ] Optional instruction prompt at top (may be empty). +- [ ] Owned `FwFeatureStructureEditor`: hierarchical feature system with per-feature value assignment. +- [ ] No OK gate — an empty assignment set (every feature "") is the valid "delete the FS / unspecified" outcome (matches both legacy dialogs). +- [ ] Help button shown only when a help topic is available. + +## Migration gotchas +- The single Avalonia chooser stands in for **two** legacy dialogs (inflection + phonological), driven by + two launchers (`LcmInflectionFeatureChooserLauncher`, `LcmPhonologicalFeatureChooserLauncher`). +- Stub header: "Phase-1 §19b Stage 3 … the Avalonia replacement for the WinForms MsaInflectionFeatureListDlg + … and PhonologicalFeatureChooserDlg". +- PARTIAL — PARITY (from `LcmPhonologicalFeatureChooserLauncher.cs`): "the legacy dialog can also drive + phonological-RULE feature CONSTRAINTS (agree/disagree polarity over IPhFeatureConstraint), used only from + the rule-formula control. That polarity surface is NOT ported here." Re-wiring the rule-formula constraint + path is out of scope for the bounded port. +- Inline create-feature / add-value affordances are wired through `LcmInflectionFeatureCreateWiring`. + +## Wiring +- Legacy call site(s): `Src/LexText/LexTextControls/MsaInflectionFeatureListDlgLauncher.cs` and + `PhonologicalFeatureListDlgLauncher.cs` — the Legacy branches construct the WinForms + `MsaInflectionFeatureListDlg` / `PhonologicalFeatureChooserDlg`. +- The Avalonia path branched on `UIMode=New` here before back-out: + - inflection: `Src/LexText/LexTextControls/MsaInflectionFeatureListDlgLauncher.cs:176` — + `LcmInflectionFeatureChooserLauncher.ShowForOwner(...)`. + - phonological: `Src/LexText/LexTextControls/PhonologicalFeatureListDlgLauncher.cs:124` — + `LcmPhonologicalFeatureChooserLauncher.Show(...)`. + - Launchers: `LcmInflectionFeatureChooserLauncher` / `LcmPhonologicalFeatureChooserLauncher` + (`Src/LexText/LexTextControls/`). +- Re-wiring target: both launchers re-enter the Avalonia chooser behind `UIMode=New`; Legacy keeps + `MsaInflectionFeatureListDlg` / `PhonologicalFeatureChooserDlg`. diff --git a/Docs/migration/filter-for.md b/Docs/migration/filter-for.md new file mode 100644 index 0000000000..b4b0e6e5a9 --- /dev/null +++ b/Docs/migration/filter-for.md @@ -0,0 +1,43 @@ +# Filter For (legacy `SimpleMatchDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.Common.Controls.SimpleMatchDlg` (`Src/Common/Controls/XMLViews/SimpleMatchDlg.cs`) | +| **Area / tool** | Any browse view › column header filter › "Filter for…" | +| **Primitive(s)** | plain-form (text + position radios + regex/case checkboxes) | +| **Canonical reference** | OptionsDialog (closest kept canonical for a small plain-form with controls) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/FilterForDialogView.axaml(.cs)` + `FilterForDialogViewModel.cs` (+ `FilterForPattern.cs`) @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user enter a text match for a browse-view column filter: the match string plus where it must +match (anywhere / start / end / whole item), with regex and case options. Opens from a browse column's +"Filter for…" command. Returns a `FilterForPattern`. + +## What it looks like + +![Filter For – initial](./images/filter-for-01.png) + +## Behaviour to preserve (parity checklist) +- [ ] Match-text field (required). +- [ ] Position radios (mutually exclusive): anywhere (default) / at start / at end / whole item. +- [ ] "Use regular expressions" checkbox: disables the position radios when on. +- [ ] "Match case" checkbox. +- [ ] OK gated: empty match text blocks OK; in regex mode an invalid regex blocks OK. + +## Migration gotchas +- Stub header: "the Avalonia counterpart of the legacy `SimpleMatchDlg`"; its Behaviors section documents + the position-radio disabling under regex and the OK-gating rules. +- Note: the legacy `SimpleMatchDlg` also exposes a "Match diacritics" option; verify whether the Avalonia + `FilterForPattern` carries it (the stub's documented radios are anywhere/start/end/whole + regex + case). +- WS/RTL: the match text is plain text against a single column's display string. + +## Wiring +- Legacy call site(s): the Legacy branch of the filter-for path in `Src/xWorks/RecordBrowseView.cs` + constructs the WinForms `SimpleMatchDlg` (`Src/Common/Controls/XMLViews/SimpleMatchDlg.cs`). +- The Avalonia path branched on `UIMode=New` here before back-out (direct, no launcher): + `Src/xWorks/RecordBrowseView.cs:662` — `new FwAvaloniaDialogs.FilterForDialogViewModel();` + (View constructed at `:663`). +- Re-wiring target: `RecordBrowseView` filter-for path re-enters the Avalonia dialog behind `UIMode=New`; + Legacy keeps `SimpleMatchDlg`. diff --git a/Docs/migration/find-replace.md b/Docs/migration/find-replace.md new file mode 100644 index 0000000000..fc700669ab --- /dev/null +++ b/Docs/migration/find-replace.md @@ -0,0 +1,53 @@ +# Find / Replace — bulk-replace subset (legacy `FwFindReplaceDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwFindReplaceDlg` (`Src/FwCoreDlgs/FwFindReplaceDlg.cs`) — app-wide modeless find/replace; this is a Phase-1 **subset** for bulk replace only | +| **Area / tool** | Browse view › bulk edit › Find/Replace pattern setup | +| **Primitive(s)** | plain-form (find/replace text + match-option checkboxes) | +| **Canonical reference** | OptionsDialog (closest kept canonical for a small plain-form with controls) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/FindReplaceDialogView.axaml(.cs)` + `FindReplaceDialogViewModel.cs` (+ `FindReplacePattern.cs`) @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +A spec-only modal that lets the user author a Find/Replace pattern for a bulk replace over a browse +column. OK snapshots the edited fields into a `FindReplacePattern`. There is NO find engine and NO +modeless app-wide find/replace here — that is deferred to Phase 2. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-find-replace legacy](./images/fw-find-replace-before.png) | ![fw-find-replace avalonia](./images/fw-find-replace-after.png) | + +Tabs (legacy): + +![find](./images/fw-find-replace-tab-find.png) +## Behaviour to preserve (parity checklist) +- [ ] Find-text field (required) and Replace-text field. +- [ ] "Use regular expressions" checkbox: disables/clears the literal-only options (match case, whole word). +- [ ] "Match case" and "Match whole word" checkboxes (literal mode only; disabled when regex is on). +- [ ] "Match diacritics" and "Match writing system" checkboxes are present but grayed (P1 no-ops). +- [ ] OK gated: empty find text blocks OK; in regex mode an invalid regex blocks OK. + +## Migration gotchas +- DEFERRED P2 (stub `FindReplaceDialogViewModel.cs`): "There is NO find engine and NO modeless app-wide + Find/Replace here (deferred P2); OK simply snapshots the edited fields into" the pattern. +- P1 SCOPE (stub `FindReplacePattern.cs`): the producer applies the pattern over single-WS plain-text cells + in managed code (System.Text.RegularExpressions, else literal case/whole-word replace). +- P1 NO-OPS (stub): "`MatchDiacritics` and `MatchWritingSystem` are CARRIED but are P1 no-ops (a faithful + diacritic/WS-collation match needs the full `IVwPattern` + TsString round-trip, deferred to P2)"; the + dialog grays them "so the user is not misled." +- View comment: "Spec-only modal (OK snapshots the FindReplacePattern into Result) — there is NO find engine + and NO modeless app-wide dialog here (deferred P2)." + +## Wiring +- Legacy call site(s): the legacy bulk-replace path opens the WinForms find/replace surface + (`FwFindReplaceDlg`, `Src/FwCoreDlgs/FwFindReplaceDlg.cs`); the modeless app-wide dialog stays on this path. +- The Avalonia path branched on `UIMode=New` here before back-out (direct, no launcher): + `Src/xWorks/RecordBrowseView.cs:1641` — `new FwAvaloniaDialogs.FindReplaceDialogViewModel(pattern);` + (View at `:1642`). +- Re-wiring target: `RecordBrowseView` bulk find/replace path re-enters the Avalonia dialog behind + `UIMode=New`; the modeless app-wide `FwFindReplaceDlg` remains on the legacy path and is the Phase-2 target. diff --git a/Docs/migration/images/add-new-sense-before.png b/Docs/migration/images/add-new-sense-before.png new file mode 100644 index 0000000000..ed3ffa25e1 Binary files /dev/null and b/Docs/migration/images/add-new-sense-before.png differ diff --git a/Docs/migration/images/confirm-delete-object-before.png b/Docs/migration/images/confirm-delete-object-before.png new file mode 100644 index 0000000000..a925eac808 Binary files /dev/null and b/Docs/migration/images/confirm-delete-object-before.png differ diff --git a/Docs/migration/images/feature-chooser-01.png b/Docs/migration/images/feature-chooser-01.png new file mode 100644 index 0000000000..8440f7c6f0 Binary files /dev/null and b/Docs/migration/images/feature-chooser-01.png differ diff --git a/Docs/migration/images/feature-chooser-before.png b/Docs/migration/images/feature-chooser-before.png new file mode 100644 index 0000000000..c06aacd41f Binary files /dev/null and b/Docs/migration/images/feature-chooser-before.png differ diff --git a/Docs/migration/images/fw-find-replace-before.png b/Docs/migration/images/fw-find-replace-before.png new file mode 100644 index 0000000000..972a7f9468 Binary files /dev/null and b/Docs/migration/images/fw-find-replace-before.png differ diff --git a/Docs/migration/images/fw-find-replace-tab-find.png b/Docs/migration/images/fw-find-replace-tab-find.png new file mode 100644 index 0000000000..972a7f9468 Binary files /dev/null and b/Docs/migration/images/fw-find-replace-tab-find.png differ diff --git a/Docs/migration/images/fw-writing-system-setup-before.png b/Docs/migration/images/fw-writing-system-setup-before.png new file mode 100644 index 0000000000..9751ce6ade Binary files /dev/null and b/Docs/migration/images/fw-writing-system-setup-before.png differ diff --git a/Docs/migration/images/fw-writing-system-setup-tab-characters.png b/Docs/migration/images/fw-writing-system-setup-tab-characters.png new file mode 100644 index 0000000000..04d8aada62 Binary files /dev/null and b/Docs/migration/images/fw-writing-system-setup-tab-characters.png differ diff --git a/Docs/migration/images/fw-writing-system-setup-tab-converters.png b/Docs/migration/images/fw-writing-system-setup-tab-converters.png new file mode 100644 index 0000000000..e0213e55ca Binary files /dev/null and b/Docs/migration/images/fw-writing-system-setup-tab-converters.png differ diff --git a/Docs/migration/images/fw-writing-system-setup-tab-font.png b/Docs/migration/images/fw-writing-system-setup-tab-font.png new file mode 100644 index 0000000000..d93c787290 Binary files /dev/null and b/Docs/migration/images/fw-writing-system-setup-tab-font.png differ diff --git a/Docs/migration/images/fw-writing-system-setup-tab-general.png b/Docs/migration/images/fw-writing-system-setup-tab-general.png new file mode 100644 index 0000000000..9751ce6ade Binary files /dev/null and b/Docs/migration/images/fw-writing-system-setup-tab-general.png differ diff --git a/Docs/migration/images/fw-writing-system-setup-tab-keyboard.png b/Docs/migration/images/fw-writing-system-setup-tab-keyboard.png new file mode 100644 index 0000000000..7792bcd38d Binary files /dev/null and b/Docs/migration/images/fw-writing-system-setup-tab-keyboard.png differ diff --git a/Docs/migration/images/fw-writing-system-setup-tab-numbers.png b/Docs/migration/images/fw-writing-system-setup-tab-numbers.png new file mode 100644 index 0000000000..5e89ba444d Binary files /dev/null and b/Docs/migration/images/fw-writing-system-setup-tab-numbers.png differ diff --git a/Docs/migration/images/fw-writing-system-setup-tab-sorting.png b/Docs/migration/images/fw-writing-system-setup-tab-sorting.png new file mode 100644 index 0000000000..1f898848a6 Binary files /dev/null and b/Docs/migration/images/fw-writing-system-setup-tab-sorting.png differ diff --git a/Docs/migration/images/lex-reference-details-before.png b/Docs/migration/images/lex-reference-details-before.png new file mode 100644 index 0000000000..7d13a276a4 Binary files /dev/null and b/Docs/migration/images/lex-reference-details-before.png differ diff --git a/Docs/migration/images/master-inflection-feature-list-before.png b/Docs/migration/images/master-inflection-feature-list-before.png new file mode 100644 index 0000000000..f1e77af322 Binary files /dev/null and b/Docs/migration/images/master-inflection-feature-list-before.png differ diff --git a/Docs/migration/images/master-phonological-feature-list-before.png b/Docs/migration/images/master-phonological-feature-list-before.png new file mode 100644 index 0000000000..27ac6a40c3 Binary files /dev/null and b/Docs/migration/images/master-phonological-feature-list-before.png differ diff --git a/Docs/migration/images/msa-creator-before.png b/Docs/migration/images/msa-creator-before.png new file mode 100644 index 0000000000..56f88e45ec Binary files /dev/null and b/Docs/migration/images/msa-creator-before.png differ diff --git a/Docs/migration/images/msa-inflection-feature-list-before.png b/Docs/migration/images/msa-inflection-feature-list-before.png new file mode 100644 index 0000000000..d5779d7b53 Binary files /dev/null and b/Docs/migration/images/msa-inflection-feature-list-before.png differ diff --git a/Docs/migration/images/phonological-feature-chooser-before.png b/Docs/migration/images/phonological-feature-chooser-before.png new file mode 100644 index 0000000000..a5f6d737a1 Binary files /dev/null and b/Docs/migration/images/phonological-feature-chooser-before.png differ diff --git a/Docs/migration/lex-reference-details.md b/Docs/migration/lex-reference-details.md new file mode 100644 index 0000000000..5abe85852b --- /dev/null +++ b/Docs/migration/lex-reference-details.md @@ -0,0 +1,46 @@ +# Lexical Reference Details (legacy `LexReferenceDetailsDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.LexReferenceDetailsDlg` (`Src/LexText/LexTextControls/LexReferenceDetailsDlg.cs`) | +| **Area / tool** | Lexicon › lexical-reference slice › "Edit Reference Set Details…" | +| **Primitive(s)** | plain-form (2 fields: Name + multi-line Comment) | +| **Canonical reference** | InsertEntryDialog (closest kept canonical for a small plain-form with text fields) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/LexReferenceDetailsDialogView.axaml(.cs)` + `LexReferenceDetailsDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user edit a lexical reference set's name (its display label / "type" for this set) and an optional +comment/note. Opens from the lexical-reference slice's "edit details" command. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![lex-reference-details legacy](./images/lex-reference-details-before.png) | ![lex-reference-details avalonia](./images/lex-reference-details-after.png) | +## Behaviour to preserve (parity checklist) +- [ ] Explanation / instructional text at top. +- [ ] Name text field (single-line) with its label. +- [ ] Comment text field (multi-line, accepts returns / wraps) with its label. +- [ ] OK is intentionally NOT gated — a reference set may legitimately carry an empty name or note. +- [ ] Name and Comment are trimmed before the launcher reads them. +- [ ] OK / Cancel buttons. + +## Migration gotchas +- Stub header: "Phase-1 §19g". +- PARITY (stub): "OK is intentionally NOT gated — parity with the legacy dialog, where a reference set may + legitimately carry an empty name or note (the slice display falls back to the reference type's own name)." + Do not add an OK gate on Name. +- Undo-fencing: the edit runs inside the caller's undo action (`ksUndoEditRefSetDetails` / + `ksRedoEditRefSetDetails`). + +## Wiring +- Legacy call site(s): the Legacy edit-details path in `Src/LexText/LexTextControls/LexReferenceMultiSlice.cs` + constructs the WinForms `LexReferenceDetailsDlg` (`Src/LexText/LexTextControls/LexReferenceDetailsDlg.cs`). +- The Avalonia path branched on `UIMode=New` here before back-out: + `Src/LexText/LexTextControls/LexReferenceMultiSlice.cs:1041` — `LcmLexReferenceDetailsLauncher.Edit(...)`. + Launcher: `LcmLexReferenceDetailsLauncher` (`Src/LexText/LexTextControls/LcmLexReferenceDetailsLauncher.cs`). +- Re-wiring target: `LexReferenceMultiSlice` edit-details path re-enters the Avalonia dialog behind + `UIMode=New`; Legacy keeps `LexReferenceDetailsDlg`. diff --git a/Docs/migration/lists/affix-category-edit.md b/Docs/migration/lists/affix-category-edit.md new file mode 100644 index 0000000000..c784a10762 --- /dev/null +++ b/Docs/migration/lists/affix-category-edit.md @@ -0,0 +1,25 @@ +# Affix Categories (`affixCategoryEdit`) + +| | | +|---|---| +| **Tool id** | `affixCategoryEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Affix Categories (`affixCategoryEdit`) (Sena 3, Legacy)](./images/affix-category-edit-01.png) + +## What it is +Edit the 'Affix Categories' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/annotation-def-edit.md b/Docs/migration/lists/annotation-def-edit.md new file mode 100644 index 0000000000..57e5bc18da --- /dev/null +++ b/Docs/migration/lists/annotation-def-edit.md @@ -0,0 +1,25 @@ +# Annotation Definitions (`annotationDefEdit`) + +| | | +|---|---| +| **Tool id** | `annotationDefEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Annotation Definitions (`annotationDefEdit`) (Sena 3, Legacy)](./images/annotation-def-edit-01.png) + +## What it is +Edit the 'Annotation Definitions' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/anthro-edit.md b/Docs/migration/lists/anthro-edit.md new file mode 100644 index 0000000000..327d2f876e --- /dev/null +++ b/Docs/migration/lists/anthro-edit.md @@ -0,0 +1,25 @@ +# Anthropology Categories (`anthroEdit`) + +| | | +|---|---| +| **Tool id** | `anthroEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Anthropology Categories (`anthroEdit`) (Sena 3, Legacy)](./images/anthro-edit-01.png) + +## What it is +Edit the 'Anthropology Categories' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/chartmark-edit.md b/Docs/migration/lists/chartmark-edit.md new file mode 100644 index 0000000000..a827fc6696 --- /dev/null +++ b/Docs/migration/lists/chartmark-edit.md @@ -0,0 +1,25 @@ +# Text Chart Markers (`chartmarkEdit`) + +| | | +|---|---| +| **Tool id** | `chartmarkEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Text Chart Markers (`chartmarkEdit`) (Sena 3, Legacy)](./images/chartmark-edit-01.png) + +## What it is +Edit the 'Text Chart Markers' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/charttemp-edit.md b/Docs/migration/lists/charttemp-edit.md new file mode 100644 index 0000000000..ca54f404bf --- /dev/null +++ b/Docs/migration/lists/charttemp-edit.md @@ -0,0 +1,25 @@ +# Text Constituent Chart Templates (`charttempEdit`) + +| | | +|---|---| +| **Tool id** | `charttempEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Text Constituent Chart Templates (`charttempEdit`) (Sena 3, Legacy)](./images/charttemp-edit-01.png) + +## What it is +Edit the 'Text Constituent Chart Templates' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/complex-entry-type-edit.md b/Docs/migration/lists/complex-entry-type-edit.md new file mode 100644 index 0000000000..96019dc234 --- /dev/null +++ b/Docs/migration/lists/complex-entry-type-edit.md @@ -0,0 +1,25 @@ +# Complex Form Types (`complexEntryTypeEdit`) + +| | | +|---|---| +| **Tool id** | `complexEntryTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Complex Form Types (`complexEntryTypeEdit`) (Sena 3, Legacy)](./images/complex-entry-type-edit-01.png) + +## What it is +Edit the 'Complex Form Types' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/confidence-edit.md b/Docs/migration/lists/confidence-edit.md new file mode 100644 index 0000000000..1a1a8c90cf --- /dev/null +++ b/Docs/migration/lists/confidence-edit.md @@ -0,0 +1,25 @@ +# Confidence Levels (`confidenceEdit`) + +| | | +|---|---| +| **Tool id** | `confidenceEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Confidence Levels (`confidenceEdit`) (Sena 3, Legacy)](./images/confidence-edit-01.png) + +## What it is +Edit the 'Confidence Levels' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/dialects-list-edit.md b/Docs/migration/lists/dialects-list-edit.md new file mode 100644 index 0000000000..89e6e9ecf0 --- /dev/null +++ b/Docs/migration/lists/dialects-list-edit.md @@ -0,0 +1,25 @@ +# Dialect Labels (`dialectsListEdit`) + +| | | +|---|---| +| **Tool id** | `dialectsListEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Dialect Labels (`dialectsListEdit`) (Sena 3, Legacy)](./images/dialects-list-edit-01.png) + +## What it is +Edit the 'Dialect Labels' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/domain-type-edit.md b/Docs/migration/lists/domain-type-edit.md new file mode 100644 index 0000000000..3e02b30a4e --- /dev/null +++ b/Docs/migration/lists/domain-type-edit.md @@ -0,0 +1,25 @@ +# Academic Domains (`domainTypeEdit`) + +| | | +|---|---| +| **Tool id** | `domainTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Academic Domains (`domainTypeEdit`) (Sena 3, Legacy)](./images/domain-type-edit-01.png) + +## What it is +Edit the 'Academic Domains' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/education-edit.md b/Docs/migration/lists/education-edit.md new file mode 100644 index 0000000000..ff6f163ae0 --- /dev/null +++ b/Docs/migration/lists/education-edit.md @@ -0,0 +1,25 @@ +# Education Levels (`educationEdit`) + +| | | +|---|---| +| **Tool id** | `educationEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Education Levels (`educationEdit`) (Sena 3, Legacy)](./images/education-edit-01.png) + +## What it is +Edit the 'Education Levels' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/ext-note-type-edit.md b/Docs/migration/lists/ext-note-type-edit.md new file mode 100644 index 0000000000..75abc0e971 --- /dev/null +++ b/Docs/migration/lists/ext-note-type-edit.md @@ -0,0 +1,25 @@ +# Extended Note Types (`extNoteTypeEdit`) + +| | | +|---|---| +| **Tool id** | `extNoteTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Extended Note Types (`extNoteTypeEdit`) (Sena 3, Legacy)](./images/ext-note-type-edit-01.png) + +## What it is +Edit the 'Extended Note Types' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/feature-types-advanced-edit.md b/Docs/migration/lists/feature-types-advanced-edit.md new file mode 100644 index 0000000000..43081e1cf4 --- /dev/null +++ b/Docs/migration/lists/feature-types-advanced-edit.md @@ -0,0 +1,25 @@ +# Feature Types (`featureTypesAdvancedEdit`) + +| | | +|---|---| +| **Tool id** | `featureTypesAdvancedEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Feature Types (`featureTypesAdvancedEdit`) (Sena 3, Legacy)](./images/feature-types-advanced-edit-01.png) + +## What it is +Edit the 'Feature Types' CmPossibility list. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail over the FsFeatStrucType list. +- CmPossibility-style list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/genres-edit.md b/Docs/migration/lists/genres-edit.md new file mode 100644 index 0000000000..56c3b9d59c --- /dev/null +++ b/Docs/migration/lists/genres-edit.md @@ -0,0 +1,25 @@ +# Genres (`genresEdit`) + +| | | +|---|---| +| **Tool id** | `genresEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Genres (`genresEdit`) (Sena 3, Legacy)](./images/genres-edit-01.png) + +## What it is +Edit the 'Genres' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/images/affix-category-edit-01.png b/Docs/migration/lists/images/affix-category-edit-01.png new file mode 100644 index 0000000000..fbb77f0276 Binary files /dev/null and b/Docs/migration/lists/images/affix-category-edit-01.png differ diff --git a/Docs/migration/lists/images/annotation-def-edit-01.png b/Docs/migration/lists/images/annotation-def-edit-01.png new file mode 100644 index 0000000000..fbb77f0276 Binary files /dev/null and b/Docs/migration/lists/images/annotation-def-edit-01.png differ diff --git a/Docs/migration/lists/images/anthro-edit-01.png b/Docs/migration/lists/images/anthro-edit-01.png new file mode 100644 index 0000000000..f6868f74e8 Binary files /dev/null and b/Docs/migration/lists/images/anthro-edit-01.png differ diff --git a/Docs/migration/lists/images/chartmark-edit-01.png b/Docs/migration/lists/images/chartmark-edit-01.png new file mode 100644 index 0000000000..94a7c10568 Binary files /dev/null and b/Docs/migration/lists/images/chartmark-edit-01.png differ diff --git a/Docs/migration/lists/images/charttemp-edit-01.png b/Docs/migration/lists/images/charttemp-edit-01.png new file mode 100644 index 0000000000..d19cc916cd Binary files /dev/null and b/Docs/migration/lists/images/charttemp-edit-01.png differ diff --git a/Docs/migration/lists/images/complex-entry-type-edit-01.png b/Docs/migration/lists/images/complex-entry-type-edit-01.png new file mode 100644 index 0000000000..45d30d7e93 Binary files /dev/null and b/Docs/migration/lists/images/complex-entry-type-edit-01.png differ diff --git a/Docs/migration/lists/images/confidence-edit-01.png b/Docs/migration/lists/images/confidence-edit-01.png new file mode 100644 index 0000000000..caad767cd6 Binary files /dev/null and b/Docs/migration/lists/images/confidence-edit-01.png differ diff --git a/Docs/migration/lists/images/dialects-list-edit-01.png b/Docs/migration/lists/images/dialects-list-edit-01.png new file mode 100644 index 0000000000..6d2b8912da Binary files /dev/null and b/Docs/migration/lists/images/dialects-list-edit-01.png differ diff --git a/Docs/migration/lists/images/domain-type-edit-01.png b/Docs/migration/lists/images/domain-type-edit-01.png new file mode 100644 index 0000000000..e04e26b73b Binary files /dev/null and b/Docs/migration/lists/images/domain-type-edit-01.png differ diff --git a/Docs/migration/lists/images/education-edit-01.png b/Docs/migration/lists/images/education-edit-01.png new file mode 100644 index 0000000000..7482d0c566 Binary files /dev/null and b/Docs/migration/lists/images/education-edit-01.png differ diff --git a/Docs/migration/lists/images/ext-note-type-edit-01.png b/Docs/migration/lists/images/ext-note-type-edit-01.png new file mode 100644 index 0000000000..05038c8787 Binary files /dev/null and b/Docs/migration/lists/images/ext-note-type-edit-01.png differ diff --git a/Docs/migration/lists/images/feature-types-advanced-edit-01.png b/Docs/migration/lists/images/feature-types-advanced-edit-01.png new file mode 100644 index 0000000000..bbd86eed97 Binary files /dev/null and b/Docs/migration/lists/images/feature-types-advanced-edit-01.png differ diff --git a/Docs/migration/lists/images/genres-edit-01.png b/Docs/migration/lists/images/genres-edit-01.png new file mode 100644 index 0000000000..4b8c76faf6 Binary files /dev/null and b/Docs/migration/lists/images/genres-edit-01.png differ diff --git a/Docs/migration/lists/images/languages-list-edit-01.png b/Docs/migration/lists/images/languages-list-edit-01.png new file mode 100644 index 0000000000..62a75a1a06 Binary files /dev/null and b/Docs/migration/lists/images/languages-list-edit-01.png differ diff --git a/Docs/migration/lists/images/lex-ref-edit-01.png b/Docs/migration/lists/images/lex-ref-edit-01.png new file mode 100644 index 0000000000..24acdd93ad Binary files /dev/null and b/Docs/migration/lists/images/lex-ref-edit-01.png differ diff --git a/Docs/migration/lists/images/locations-edit-01.png b/Docs/migration/lists/images/locations-edit-01.png new file mode 100644 index 0000000000..2516d80022 Binary files /dev/null and b/Docs/migration/lists/images/locations-edit-01.png differ diff --git a/Docs/migration/lists/images/morph-type-edit-01.png b/Docs/migration/lists/images/morph-type-edit-01.png new file mode 100644 index 0000000000..443ad7a3d9 Binary files /dev/null and b/Docs/migration/lists/images/morph-type-edit-01.png differ diff --git a/Docs/migration/lists/images/people-edit-01.png b/Docs/migration/lists/images/people-edit-01.png new file mode 100644 index 0000000000..9c8ee5c11d Binary files /dev/null and b/Docs/migration/lists/images/people-edit-01.png differ diff --git a/Docs/migration/lists/images/positions-edit-01.png b/Docs/migration/lists/images/positions-edit-01.png new file mode 100644 index 0000000000..22d06e7de6 Binary files /dev/null and b/Docs/migration/lists/images/positions-edit-01.png differ diff --git a/Docs/migration/lists/images/publications-edit-01.png b/Docs/migration/lists/images/publications-edit-01.png new file mode 100644 index 0000000000..8fb8ac6774 Binary files /dev/null and b/Docs/migration/lists/images/publications-edit-01.png differ diff --git a/Docs/migration/lists/images/rec-type-edit-01.png b/Docs/migration/lists/images/rec-type-edit-01.png new file mode 100644 index 0000000000..58932403f5 Binary files /dev/null and b/Docs/migration/lists/images/rec-type-edit-01.png differ diff --git a/Docs/migration/lists/images/restrictions-edit-01.png b/Docs/migration/lists/images/restrictions-edit-01.png new file mode 100644 index 0000000000..aca53a2c99 Binary files /dev/null and b/Docs/migration/lists/images/restrictions-edit-01.png differ diff --git a/Docs/migration/lists/images/reversal-tool-reversal-index-pos-01.png b/Docs/migration/lists/images/reversal-tool-reversal-index-pos-01.png new file mode 100644 index 0000000000..242478ba29 Binary files /dev/null and b/Docs/migration/lists/images/reversal-tool-reversal-index-pos-01.png differ diff --git a/Docs/migration/lists/images/role-edit-01.png b/Docs/migration/lists/images/role-edit-01.png new file mode 100644 index 0000000000..2cca04edba Binary files /dev/null and b/Docs/migration/lists/images/role-edit-01.png differ diff --git a/Docs/migration/lists/images/semantic-domain-edit-01.png b/Docs/migration/lists/images/semantic-domain-edit-01.png new file mode 100644 index 0000000000..a50cc4d203 Binary files /dev/null and b/Docs/migration/lists/images/semantic-domain-edit-01.png differ diff --git a/Docs/migration/lists/images/sense-status-edit-01.png b/Docs/migration/lists/images/sense-status-edit-01.png new file mode 100644 index 0000000000..8adfdccfc2 Binary files /dev/null and b/Docs/migration/lists/images/sense-status-edit-01.png differ diff --git a/Docs/migration/lists/images/sense-type-edit-01.png b/Docs/migration/lists/images/sense-type-edit-01.png new file mode 100644 index 0000000000..cf05dbaf62 Binary files /dev/null and b/Docs/migration/lists/images/sense-type-edit-01.png differ diff --git a/Docs/migration/lists/images/status-edit-01.png b/Docs/migration/lists/images/status-edit-01.png new file mode 100644 index 0000000000..c3684c2278 Binary files /dev/null and b/Docs/migration/lists/images/status-edit-01.png differ diff --git a/Docs/migration/lists/images/text-markup-tags-edit-01.png b/Docs/migration/lists/images/text-markup-tags-edit-01.png new file mode 100644 index 0000000000..335cdc8075 Binary files /dev/null and b/Docs/migration/lists/images/text-markup-tags-edit-01.png differ diff --git a/Docs/migration/lists/images/time-of-day-edit-01.png b/Docs/migration/lists/images/time-of-day-edit-01.png new file mode 100644 index 0000000000..19e95362d2 Binary files /dev/null and b/Docs/migration/lists/images/time-of-day-edit-01.png differ diff --git a/Docs/migration/lists/images/translation-type-edit-01.png b/Docs/migration/lists/images/translation-type-edit-01.png new file mode 100644 index 0000000000..26b393b2cd Binary files /dev/null and b/Docs/migration/lists/images/translation-type-edit-01.png differ diff --git a/Docs/migration/lists/images/usage-type-edit-01.png b/Docs/migration/lists/images/usage-type-edit-01.png new file mode 100644 index 0000000000..d3ac321692 Binary files /dev/null and b/Docs/migration/lists/images/usage-type-edit-01.png differ diff --git a/Docs/migration/lists/images/variant-entry-type-edit-01.png b/Docs/migration/lists/images/variant-entry-type-edit-01.png new file mode 100644 index 0000000000..9d86fdd06b Binary files /dev/null and b/Docs/migration/lists/images/variant-entry-type-edit-01.png differ diff --git a/Docs/migration/lists/languages-list-edit.md b/Docs/migration/lists/languages-list-edit.md new file mode 100644 index 0000000000..b898660dac --- /dev/null +++ b/Docs/migration/lists/languages-list-edit.md @@ -0,0 +1,25 @@ +# Languages (`languagesListEdit`) + +| | | +|---|---| +| **Tool id** | `languagesListEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Languages (`languagesListEdit`) (Sena 3, Legacy)](./images/languages-list-edit-01.png) + +## What it is +Edit the 'Languages' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/lex-ref-edit.md b/Docs/migration/lists/lex-ref-edit.md new file mode 100644 index 0000000000..40e5e20060 --- /dev/null +++ b/Docs/migration/lists/lex-ref-edit.md @@ -0,0 +1,25 @@ +# Lexical Relations (`lexRefEdit`) + +| | | +|---|---| +| **Tool id** | `lexRefEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Lexical Relations (`lexRefEdit`) (Sena 3, Legacy)](./images/lex-ref-edit-01.png) + +## What it is +Edit the 'Lexical Relations' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/locations-edit.md b/Docs/migration/lists/locations-edit.md new file mode 100644 index 0000000000..2872974e39 --- /dev/null +++ b/Docs/migration/lists/locations-edit.md @@ -0,0 +1,25 @@ +# Locations (`locationsEdit`) + +| | | +|---|---| +| **Tool id** | `locationsEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Locations (`locationsEdit`) (Sena 3, Legacy)](./images/locations-edit-01.png) + +## What it is +Edit the 'Locations' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/morph-type-edit.md b/Docs/migration/lists/morph-type-edit.md new file mode 100644 index 0000000000..405af28141 --- /dev/null +++ b/Docs/migration/lists/morph-type-edit.md @@ -0,0 +1,25 @@ +# Morpheme Types (`morphTypeEdit`) + +| | | +|---|---| +| **Tool id** | `morphTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Morpheme Types (`morphTypeEdit`) (Sena 3, Legacy)](./images/morph-type-edit-01.png) + +## What it is +Edit the 'Morpheme Types' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/people-edit.md b/Docs/migration/lists/people-edit.md new file mode 100644 index 0000000000..61411fb1c9 --- /dev/null +++ b/Docs/migration/lists/people-edit.md @@ -0,0 +1,25 @@ +# People (`peopleEdit`) + +| | | +|---|---| +| **Tool id** | `peopleEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![People (`peopleEdit`) (Sena 3, Legacy)](./images/people-edit-01.png) + +## What it is +Edit the 'People' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/positions-edit.md b/Docs/migration/lists/positions-edit.md new file mode 100644 index 0000000000..b522814f58 --- /dev/null +++ b/Docs/migration/lists/positions-edit.md @@ -0,0 +1,25 @@ +# Positions (`positionsEdit`) + +| | | +|---|---| +| **Tool id** | `positionsEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Positions (`positionsEdit`) (Sena 3, Legacy)](./images/positions-edit-01.png) + +## What it is +Edit the 'Positions' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/publications-edit.md b/Docs/migration/lists/publications-edit.md new file mode 100644 index 0000000000..039effc442 --- /dev/null +++ b/Docs/migration/lists/publications-edit.md @@ -0,0 +1,25 @@ +# Publications (`publicationsEdit`) + +| | | +|---|---| +| **Tool id** | `publicationsEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Publications (`publicationsEdit`) (Sena 3, Legacy)](./images/publications-edit-01.png) + +## What it is +Edit the 'Publications' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/rec-type-edit.md b/Docs/migration/lists/rec-type-edit.md new file mode 100644 index 0000000000..dc4957568b --- /dev/null +++ b/Docs/migration/lists/rec-type-edit.md @@ -0,0 +1,25 @@ +# Notebook Record Types (`recTypeEdit`) + +| | | +|---|---| +| **Tool id** | `recTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Notebook Record Types (`recTypeEdit`) (Sena 3, Legacy)](./images/rec-type-edit-01.png) + +## What it is +Edit the 'Notebook Record Types' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/restrictions-edit.md b/Docs/migration/lists/restrictions-edit.md new file mode 100644 index 0000000000..2b6149e1ae --- /dev/null +++ b/Docs/migration/lists/restrictions-edit.md @@ -0,0 +1,25 @@ +# Restrictions (`restrictionsEdit`) + +| | | +|---|---| +| **Tool id** | `restrictionsEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Restrictions (`restrictionsEdit`) (Sena 3, Legacy)](./images/restrictions-edit-01.png) + +## What it is +Edit the 'Restrictions' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/reversal-tool-reversal-index-pos.md b/Docs/migration/lists/reversal-tool-reversal-index-pos.md new file mode 100644 index 0000000000..e6aa64970e --- /dev/null +++ b/Docs/migration/lists/reversal-tool-reversal-index-pos.md @@ -0,0 +1,25 @@ +# Reversal Index Categories (`reversalToolReversalIndexPOS`) + +| | | +|---|---| +| **Tool id** | `reversalToolReversalIndexPOS` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Reversal Index Categories (`reversalToolReversalIndexPOS`) (Sena 3, Legacy)](./images/reversal-tool-reversal-index-pos-01.png) + +## What it is +Edit the 'Reversal Index Categories' CmPossibility list. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail over the reversal-index PartOfSpeech possibility list. +- CmPossibility list editor (reversal categories) -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/role-edit.md b/Docs/migration/lists/role-edit.md new file mode 100644 index 0000000000..ed32d16cc8 --- /dev/null +++ b/Docs/migration/lists/role-edit.md @@ -0,0 +1,25 @@ +# Roles (`roleEdit`) + +| | | +|---|---| +| **Tool id** | `roleEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Roles (`roleEdit`) (Sena 3, Legacy)](./images/role-edit-01.png) + +## What it is +Edit the 'Roles' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/semantic-domain-edit.md b/Docs/migration/lists/semantic-domain-edit.md new file mode 100644 index 0000000000..d166d4fe82 --- /dev/null +++ b/Docs/migration/lists/semantic-domain-edit.md @@ -0,0 +1,25 @@ +# Semantic Domains (`semanticDomainEdit`) + +| | | +|---|---| +| **Tool id** | `semanticDomainEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Semantic Domains (`semanticDomainEdit`) (Sena 3, Legacy)](./images/semantic-domain-edit-01.png) + +## What it is +Edit the 'Semantic Domains' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/sense-status-edit.md b/Docs/migration/lists/sense-status-edit.md new file mode 100644 index 0000000000..3912b64d0a --- /dev/null +++ b/Docs/migration/lists/sense-status-edit.md @@ -0,0 +1,25 @@ +# Sense Status (`senseStatusEdit`) + +| | | +|---|---| +| **Tool id** | `senseStatusEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Sense Status (`senseStatusEdit`) (Sena 3, Legacy)](./images/sense-status-edit-01.png) + +## What it is +Edit the 'Sense Status' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/sense-type-edit.md b/Docs/migration/lists/sense-type-edit.md new file mode 100644 index 0000000000..ce80037461 --- /dev/null +++ b/Docs/migration/lists/sense-type-edit.md @@ -0,0 +1,25 @@ +# Sense Types (`senseTypeEdit`) + +| | | +|---|---| +| **Tool id** | `senseTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Sense Types (`senseTypeEdit`) (Sena 3, Legacy)](./images/sense-type-edit-01.png) + +## What it is +Edit the 'Sense Types' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/status-edit.md b/Docs/migration/lists/status-edit.md new file mode 100644 index 0000000000..9ff0dc202c --- /dev/null +++ b/Docs/migration/lists/status-edit.md @@ -0,0 +1,25 @@ +# Status (`statusEdit`) + +| | | +|---|---| +| **Tool id** | `statusEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Status (`statusEdit`) (Sena 3, Legacy)](./images/status-edit-01.png) + +## What it is +Edit the 'Status' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/text-markup-tags-edit.md b/Docs/migration/lists/text-markup-tags-edit.md new file mode 100644 index 0000000000..d1932443f4 --- /dev/null +++ b/Docs/migration/lists/text-markup-tags-edit.md @@ -0,0 +1,25 @@ +# Text Markup Tags (`textMarkupTagsEdit`) + +| | | +|---|---| +| **Tool id** | `textMarkupTagsEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Text Markup Tags (`textMarkupTagsEdit`) (Sena 3, Legacy)](./images/text-markup-tags-edit-01.png) + +## What it is +Edit the 'Text Markup Tags' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/time-of-day-edit.md b/Docs/migration/lists/time-of-day-edit.md new file mode 100644 index 0000000000..3397a7762d --- /dev/null +++ b/Docs/migration/lists/time-of-day-edit.md @@ -0,0 +1,25 @@ +# Time Of Day (`timeOfDayEdit`) + +| | | +|---|---| +| **Tool id** | `timeOfDayEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Time Of Day (`timeOfDayEdit`) (Sena 3, Legacy)](./images/time-of-day-edit-01.png) + +## What it is +Edit the 'Time Of Day' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/translation-type-edit.md b/Docs/migration/lists/translation-type-edit.md new file mode 100644 index 0000000000..c8200b73c7 --- /dev/null +++ b/Docs/migration/lists/translation-type-edit.md @@ -0,0 +1,25 @@ +# Translation Types (`translationTypeEdit`) + +| | | +|---|---| +| **Tool id** | `translationTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Translation Types (`translationTypeEdit`) (Sena 3, Legacy)](./images/translation-type-edit-01.png) + +## What it is +Edit the 'Translation Types' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/usage-type-edit.md b/Docs/migration/lists/usage-type-edit.md new file mode 100644 index 0000000000..59b31a234f --- /dev/null +++ b/Docs/migration/lists/usage-type-edit.md @@ -0,0 +1,25 @@ +# Usages (`usageTypeEdit`) + +| | | +|---|---| +| **Tool id** | `usageTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Usages (`usageTypeEdit`) (Sena 3, Legacy)](./images/usage-type-edit-01.png) + +## What it is +Edit the 'Usages' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/lists/variant-entry-type-edit.md b/Docs/migration/lists/variant-entry-type-edit.md new file mode 100644 index 0000000000..5dbd9e324e --- /dev/null +++ b/Docs/migration/lists/variant-entry-type-edit.md @@ -0,0 +1,25 @@ +# Variant Types (`variantEntryTypeEdit`) + +| | | +|---|---| +| **Tool id** | `variantEntryTypeEdit` | +| **Area** | Lists | +| **Type** | list-editor | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | TREE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | tree -> ChooserDialog | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Variant Types (`variantEntryTypeEdit`) (Sena 3, Legacy)](./images/variant-entry-type-edit-01.png) + +## What it is +Edit the 'Variant Types' CmPossibility list. + +## Notes / gotchas +- RecordEditView DataTree detail over a CmPossibility list, with the list hierarchy in the tree bar. +- CmPossibility list editor -> Primitive TREE; Canonical ChooserDialog. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/msa-creator.md b/Docs/migration/msa-creator.md new file mode 100644 index 0000000000..25d7009007 --- /dev/null +++ b/Docs/migration/msa-creator.md @@ -0,0 +1,50 @@ +# Create Grammatical Info / MSA (legacy `MsaCreatorDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.LexText.Controls.MsaCreatorDlg` (`Src/LexText/LexTextControls/MsaCreatorDlg.cs`) | +| **Area / tool** | Lexicon › sense grammatical-info slice › "Create New Grammatical Info." | +| **Primitive(s)** | owned-control form (FwMsaGroupBox) | +| **Canonical reference** | InsertEntryDialog (owned-control form hosting a FwMsaGroupBox) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/MsaCreatorDialogView.axaml(.cs)` + `MsaCreatorDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user create (or edit) the grammatical info / morpho-syntactic analysis (MSA) for a sense: +choose the POS, slot, inflection class, and inflection features. Opens from the MSA slice and from the +interlinear MSA popup. Returns a `SandboxGenericMSA` for the caller to apply. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![msa-creator legacy](./images/msa-creator-before.png) | ![msa-creator avalonia](./images/msa-creator-after.png) | +## Behaviour to preserve (parity checklist) +- [ ] Read-only lexical-entry headword shown at top. +- [ ] Read-only senses summary shown on the edit path. +- [ ] Owned `FwMsaGroupBox`: POS choosers, slot picker, inflection-class picker, inflection-feature editor. +- [ ] No OK gate — the box always has a valid grammatical-info class (matches the legacy dialog). +- [ ] Help button shown only when a help topic is available. + +## Migration gotchas +- Owned-control hosting: the stub mounts `FwMsaGroupBox` and stages edits into `InMemoryRegionEditContext`. +- The stub header marks this an "MSA-port Stage 5 replacement for the legacy MsaCreatorDlg in New-UI mode" + and notes "Like the legacy dialog there is NO OK gate (the box always has a valid grammatical-info class)". +- PARITY (from `LcmMsaCreatorDialogLauncher.cs`): "the legacy dialog has two consumers with DIFFERENT apply + branches — MSAPopupTreeManager does `m_sense.SandboxMSA = dlg.SandboxMSA` (find-or-create on a sense) and + MSADlgLauncher does `originalMsa.UpdateOrReplace(dlg.SandboxMSA)` (modify an existing MSA)". +- PARITY (Stage 6 inflection class): "this launcher produces a `SandboxGenericMSA` for the CALLER to apply … + and does NOT itself mutate the model." Re-wiring must preserve the caller-applies contract. +- Stub markers: `// Stage 3 wires the feature dialogs` and `// §19b Stage 3: wire the inline create-feature + / add-value affordances (replacing the deferred no-op)`. + +## Wiring +- Legacy call site(s): `Src/LexText/Lexicon/MSADlgLauncher.cs` — the Legacy branch constructs the WinForms + `MsaCreatorDlg` (the second consumer, `MSAPopupTreeManager`, has its own Legacy construction). +- The Avalonia path branched on `UIMode=New` here before back-out: `Src/LexText/Lexicon/MSADlgLauncher.cs:67` — + `LcmMsaCreatorDialogLauncher.Show(...)` (one of two consumers; the other is `MSAPopupTreeManager`). + Launcher: `LcmMsaCreatorDialogLauncher` (`Src/LexText/LexTextControls/LcmMsaCreatorDialogLauncher.cs`). +- Re-wiring target: `MSADlgLauncher` (and `MSAPopupTreeManager`) re-enter the Avalonia dialog behind + `UIMode=New`; each must keep its own apply branch (see PARITY note above). Legacy keeps `MsaCreatorDlg`. diff --git a/Docs/migration/phase2/native-render/buffered-draw.md b/Docs/migration/phase2/native-render/buffered-draw.md new file mode 100644 index 0000000000..aefac3fb32 --- /dev/null +++ b/Docs/migration/phase2/native-render/buffered-draw.md @@ -0,0 +1,21 @@ +# Buffered draw (`VwDrawRootBuffered`) + +| | | +|---|---| +| **Key files** | `Src/ManagedVwDrawRootBuffered/VwDrawRootBuffered.cs` | +| **Area** | Native-render | +| **Type** | native-render | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 13 | +| **JIRA** | LT-XXXXX | + +## What it is +Managed double-buffered draw helper for the Views engine: renders the root box to an off-screen buffer to avoid flicker on the WinForms host. + +## Notes / gotchas +- Pure decommission target — Avalonia compositing supplies its own buffering, so there is no reimplementation; deleted at Stage 13. +- Tied to the GDI/WinForms paint model; obsolete once the native render path is gone. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/native-render/datatree-slice-framework.md b/Docs/migration/phase2/native-render/datatree-slice-framework.md new file mode 100644 index 0000000000..96ce5fb516 --- /dev/null +++ b/Docs/migration/phase2/native-render/datatree-slice-framework.md @@ -0,0 +1,22 @@ +# DataTree / Slice framework (`DataTree` / `Slice` / `SliceFactory`) + +| | | +|---|---| +| **Key files** | `Src/Common/Controls/DetailControls/DataTree.cs`, `Slice.cs`, `SliceFactory.cs` (DetailControls, 73 files) | +| **Area** | Native-render | +| **Type** | native-render | +| **Primitive** | n/a | +| **State** | region-path supersedes | +| **Phase** | 2 | +| **Census stage** | superseded by region path | +| **JIRA** | LT-XXXXX | + +## What it is +The legacy detail-editing framework: `DataTree` builds a vertical stack of `Slice` controls from a view definition (`SliceFactory` materializes each field's slice) — the WinForms predecessor of the region/composer path. + +## Notes / gotchas +- Phase-2 **retirement target**: the Avalonia region/composer path (`FullEntryRegionComposer` + `FwAvalonia/Region/`) replaces it, not a 1:1 port. +- Frozen during coexistence — no new slice types; new fields go to the region path. +- Large surface (73 DetailControls files); deleted once all detail editing is on the region path. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/native-render/gecko-pdf-preview.md b/Docs/migration/phase2/native-render/gecko-pdf-preview.md new file mode 100644 index 0000000000..7ee384a117 --- /dev/null +++ b/Docs/migration/phase2/native-render/gecko-pdf-preview.md @@ -0,0 +1,22 @@ +# Gecko / PDF preview (`GeckoWebBrowser` / `GeckofxHtmlToPdf`) + +| | | +|---|---| +| **Key files** | `GeckoWebBrowser` / `GeckofxHtmlToPdf` consumers — `Src/xWorks/XhtmlDocView.cs`, `GeneratedHtmlViewer.cs`, `Src/XCore/HtmlControl.cs` | +| **Area** | Native-render | +| **Type** | native-render | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 10A | +| **JIRA** | LT-XXXXX | + +## What it is +The embedded Gecko (Geckofx) HTML browser used for dictionary preview and the Gecko-based HTML-to-PDF export path. + +## Notes / gotchas +- Decommission target: replace Gecko with a cross-platform HTML render/preview and a non-Gecko PDF export. +- Geckofx is a heavyweight native dependency and a major cross-platform/packaging blocker — removal is a goal, not just a port. +- Multiple consumers (`XhtmlDocView`, `GeneratedHtmlViewer`, `HtmlControl`); migrate them together. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/native-render/graphite-engine.md b/Docs/migration/phase2/native-render/graphite-engine.md new file mode 100644 index 0000000000..011d096564 --- /dev/null +++ b/Docs/migration/phase2/native-render/graphite-engine.md @@ -0,0 +1,22 @@ +# Graphite engine (`GraphiteEngineClass`) + +| | | +|---|---| +| **Key files** | `Src/views/lib/GraphiteEngine.cpp`, `GraphiteEngine.h` | +| **Area** | Native-render | +| **Type** | native-render | +| **Primitive** | n/a | +| **State** | legacy — removal accepted (doc+notify Awami Nastaliq) | +| **Phase** | 2 | +| **Census stage** | 10B (path) / 13 (delete) | +| **JIRA** | LT-XXXXX | + +## What it is +The native Graphite smart-font shaping engine used by the Views renderer for complex-script layout. + +## Notes / gotchas +- Removal accepted: documented decommission with a heads-up to affected scripts (notify Awami Nastaliq), not a reimplementation. +- The replacement render path (HarfBuzz/platform shaping) is evaluated at Stage 10B; native code deleted at Stage 13. +- Registration-free COM constraint applies while it still ships. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/native-render/managed-views-host.md b/Docs/migration/phase2/native-render/managed-views-host.md new file mode 100644 index 0000000000..be04b0410e --- /dev/null +++ b/Docs/migration/phase2/native-render/managed-views-host.md @@ -0,0 +1,22 @@ +# Managed Views host (`SimpleRootSite` / `RootSite`) + +| | | +|---|---| +| **Key files** | `Src/Common/SimpleRootSite/SimpleRootSite.cs`, `Src/Common/RootSite/RootSite.cs` | +| **Area** | Native-render | +| **Type** | native-render | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 9/13 | +| **JIRA** | LT-XXXXX | + +## What it is +The managed WinForms control that hosts the native Views engine: pumps paint/keyboard/mouse/IME into `VwRootBox` and surfaces selection back to .NET. + +## Notes / gotchas +- Decommission target paired with the Views engine — replaced at Stage 9, deleted at Stage 13. +- The WinForms `Control` boundary where native rendering meets managed UI; the Avalonia render host supersedes it. +- Registration-free COM bridge to native Views — keep activation via manifest only. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/native-render/views-engine.md b/Docs/migration/phase2/native-render/views-engine.md new file mode 100644 index 0000000000..9e15ef61b7 --- /dev/null +++ b/Docs/migration/phase2/native-render/views-engine.md @@ -0,0 +1,22 @@ +# Views engine (`VwRootBox` / `VwSelection` / `VwTextBoxes`) + +| | | +|---|---| +| **Key files** | `Src/views/VwRootBox.cpp`, `VwSelection.cpp`, `VwTextBoxes.cpp` (+ `Src/views/`) | +| **Area** | Native-render | +| **Type** | native-render | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 9 (replace) / 13 (delete) | +| **JIRA** | LT-XXXXX | + +## What it is +The native C++ rendering/layout/selection engine: `VwRootBox` builds and lays out the view box tree, `VwSelection` models the insertion point/range, `VwTextBoxes` renders styled multi-writing-system text. + +## Notes / gotchas +- Decommission target: the Avalonia presentation IR + render path replaces it at Stage 9; native code deleted at Stage 13. +- Registration-free COM — consumed via the manifest; no global COM registration. +- Carries deep correctness (BiDi, IME, selection semantics) — parity is the hard part; do not delete until consumers are off it. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/shell/app-lifetime-startup.md b/Docs/migration/phase2/shell/app-lifetime-startup.md new file mode 100644 index 0000000000..260f90760a --- /dev/null +++ b/Docs/migration/phase2/shell/app-lifetime-startup.md @@ -0,0 +1,22 @@ +# App lifetime / startup (`FieldWorks.cs`) + +| | | +|---|---| +| **Key files** | `Src/Common/FieldWorks/FieldWorks.cs` (+ `Src/Common/Framework/FwApp.cs`, `IFieldWorksManager.cs`) | +| **Area** | Shell | +| **Type** | shell | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 11a | +| **JIRA** | LT-XXXXX | + +## What it is +Process entry point and application lifetime manager: single-instance/remoting bootstrap, project open/close, app-to-app handoff, and shutdown. + +## Notes / gotchas +- Reimplement as the cross-platform host bootstrap; today it is WinForms `Application.Run`-centric. +- Registration-free COM constraint — startup activates native Views/COM via the manifest; do not register globally. +- Coordinates with `FwApp`/`IFieldWorksManager`; deleted at end of coexistence once the net10 shell owns lifetime. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/shell/main-window.md b/Docs/migration/phase2/shell/main-window.md new file mode 100644 index 0000000000..1cb8df5a99 --- /dev/null +++ b/Docs/migration/phase2/shell/main-window.md @@ -0,0 +1,22 @@ +# Main window (`xWindow.cs`) + +| | | +|---|---| +| **Key files** | `Src/XCore/xWindow.cs` (2,498 lines, `: Form`) (+ `Src/xWorks/FwXWindow.cs`) | +| **Area** | Shell | +| **Type** | shell | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 11a | +| **JIRA** | LT-XXXXX | + +## What it is +The top-level XCore application window (`: Form`): hosts the mediator/property table, menu/toolbar adapters, sidebar, and the content pane tree; `FwXWindow` is the FieldWorks specialization. + +## Notes / gotchas +- Reimplement as the Avalonia main window; the 2,498-line `Form` subclass is the central WinForms coupling point. +- Owns the mediator/PropertyTable instance and broadcasts content-switching — keep the bridge seam working during coexistence. +- Deleted at end of coexistence once the net10 shell window is default. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/shell/mediator-propertytable.md b/Docs/migration/phase2/shell/mediator-propertytable.md new file mode 100644 index 0000000000..46602e534a --- /dev/null +++ b/Docs/migration/phase2/shell/mediator-propertytable.md @@ -0,0 +1,22 @@ +# Mediator / PropertyTable (`Mediator.cs` / `PropertyTable.cs`) + +| | | +|---|---| +| **Key files** | `Src/XCore/xCoreInterfaces/Mediator.cs`, `PropertyTable.cs` (+ `ReadOnlyPropertyTable.cs`) | +| **Area** | Framework | +| **Type** | framework | +| **Primitive** | n/a | +| **State** | legacy (bridge seam exists) | +| **Phase** | 2 | +| **Census stage** | 11c (bridge: 2.3) | +| **JIRA** | LT-XXXXX | + +## What it is +The XCore message bus (`Mediator`) and global state store (`PropertyTable`) that route commands, colleague notifications, and shared settings across the shell and tools. + +## Notes / gotchas +- A Phase-2.3 bridge seam already exists so Avalonia surfaces can read/write the table during coexistence. +- Reimplement/replace incrementally; pervasive dependency — almost every tool colleague subscribes here. +- Removal is late (after consumers migrate); keep the bridge faithful until then. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/shell/menus-toolbars-statusbar.md b/Docs/migration/phase2/shell/menus-toolbars-statusbar.md new file mode 100644 index 0000000000..6863d97dbc --- /dev/null +++ b/Docs/migration/phase2/shell/menus-toolbars-statusbar.md @@ -0,0 +1,22 @@ +# Menus / toolbars / status bar (`FlexUIAdapter` / `Inventory` / `Main.xml`) + +| | | +|---|---| +| **Key files** | `Src/XCore/FlexUIAdapter/` (`MenuAdapter.cs`, `BarAdapterBase.cs`), `Src/XCore/Inventory.cs`, `DistFiles/Language Explorer/Configuration/Main.xml` | +| **Area** | Shell | +| **Type** | shell | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 11b/11f | +| **JIRA** | LT-XXXXX | + +## What it is +The XML-driven command surface: `Main.xml` declares menus/toolbars/commands, `Inventory` loads and merges the XML, and `FlexUIAdapter` realizes it as WinForms menu/toolbar/status-bar widgets. + +## Notes / gotchas +- Reimplement the adapter layer for Avalonia menus/toolbars; keep the `Main.xml`/`Inventory` declarative model so commands route unchanged. +- Command enable/visibility flows through mediator colleague dispatch — preserve during coexistence. +- Adapters deleted at end of coexistence; `Main.xml` config likely survives the shell swap. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/shell/panes-splitters.md b/Docs/migration/phase2/shell/panes-splitters.md new file mode 100644 index 0000000000..c9ac0dedb9 --- /dev/null +++ b/Docs/migration/phase2/shell/panes-splitters.md @@ -0,0 +1,22 @@ +# Panes / splitters (`CollapsingSplitContainer` / `MultiPane` / `PaneBarContainer`) + +| | | +|---|---| +| **Key files** | `Src/XCore/CollapsingSplitContainer.cs` (+ `MultiPane.cs`, `PaneBarContainer.cs`) | +| **Area** | Shell | +| **Type** | shell | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 11d | +| **JIRA** | LT-XXXXX | + +## What it is +The content-pane layout primitives: collapsible split containers, multi-pane hosting, and the pane-bar container that frames each tool's editing surface. + +## Notes / gotchas +- Reimplement as Avalonia layout (Grid/GridSplitter + pane-bar control); persisted split sizes live in the PropertyTable. +- These host the region/composer content during coexistence — the Avalonia host plugs in here before they retire. +- Deleted at end of coexistence with the legacy shell window. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/phase2/shell/sidebar-navigation.md b/Docs/migration/phase2/shell/sidebar-navigation.md new file mode 100644 index 0000000000..e248acfa84 --- /dev/null +++ b/Docs/migration/phase2/shell/sidebar-navigation.md @@ -0,0 +1,22 @@ +# Sidebar / navigation (`SilSidePane` / `OutlookBar`) + +| | | +|---|---| +| **Key files** | `Src/XCore/SilSidePane/OutlookBar.cs` (+ `OutlookBarButton.cs`, the `SilSidePane/` controls) | +| **Area** | Shell | +| **Type** | shell | +| **Primitive** | n/a | +| **State** | legacy | +| **Phase** | 2 | +| **Census stage** | 11d | +| **JIRA** | LT-XXXXX | + +## What it is +The left-hand area/tool navigation sidebar: an Outlook-bar-style stack of buttons (`SilSidePane`) driving the active area and tool selection. + +## Notes / gotchas +- Reimplement as an Avalonia navigation control; selection state flows through the mediator/PropertyTable. +- Custom-drawn WinForms `OutlookBar` widgetry; no direct Avalonia equivalent — rebuild rather than wrap. +- Deleted at end of coexistence with the legacy shell window. + +> Stub. Phase-2 (net10/shell/cross-platform). Deepen when the Phase-2 stage that owns it is scheduled. diff --git a/Docs/migration/picture-properties.md b/Docs/migration/picture-properties.md new file mode 100644 index 0000000000..3abd271f34 --- /dev/null +++ b/Docs/migration/picture-properties.md @@ -0,0 +1,47 @@ +# Picture Properties (legacy `PicturePropertiesDialog`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.PicturePropertiesDialog` (`Src/FwCoreDlgs/PicturePropertiesDialog.cs`) | +| **Area / tool** | Lexicon › sense picture region › insert / edit picture | +| **Primitive(s)** | plain-form (metadata text fields + image file picker / media) | +| **Canonical reference** | InsertEntryDialog (closest kept canonical for a plain-form with text fields + a picker affordance) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/PicturePropertiesDialogView.cs` (code-only, no `.axaml`) + `PicturePropertiesDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +Lets the user choose an image file and edit a picture's metadata (caption, description, license, creator). +Opens when inserting a new picture or editing an existing one in the picture region. Returns the chosen +file plus the edited metadata. + +## What it looks like + +![Picture Properties – initial](./images/picture-properties-01.png) + +## Behaviour to preserve (parity checklist) +- [ ] Metadata text fields: caption, description, license, creator. +- [ ] Image-file display (shows "(no file chosen)" when none). +- [ ] "Choose image…" button triggers an async file picker. +- [ ] OK caption is "Insert" for a new picture, "OK" when editing. +- [ ] OK gated for a new picture on a chosen file (`!_isNew || !string.IsNullOrEmpty(ImageFile)`); for an existing picture the file is optional (metadata-only edits allowed). + +## Migration gotchas +- The Avalonia stub is **code-only** (`PicturePropertiesDialogView.cs`, no `.axaml`) — re-wiring should keep + the programmatic view or convert it deliberately. +- Stub header (`§19d`): "view-model for the Avalonia picture-properties dialog — the parity replacement for + the WinForms `PicturePropertiesDialog`. OK snapshots the edited metadata + file into `Result`; the + launcher's Apply reads it. For a new picture OK is gated on a chosen file … for an existing one the file + is optional." +- Media handling: the file picker is wired through a `ChooseImageRequested` event handled by the launcher + (`LcmRegionMediaServices`). Preserve the linked-files / media-path conventions (see `sil-library-reuse`). + +## Wiring +- Legacy call site(s): the Legacy picture insert/edit path constructs the WinForms `PicturePropertiesDialog` + (`Src/FwCoreDlgs/PicturePropertiesDialog.cs`). +- The Avalonia path branched on `UIMode=New` here before back-out: `Src/xWorks/LcmRegionMediaServices.cs` — + `ShowPictureProperties(...)` (method at line 79; instantiates `PicturePropertiesDialogViewModel` + + `PicturePropertiesDialogView`, wires the picker through `ChooseImageRequested`, shows modal via + `AvaloniaDialogHost.ShowModal`, lines ~82–99). +- Re-wiring target: `LcmRegionMediaServices.ShowPictureProperties` re-enters the Avalonia dialog behind + `UIMode=New`; Legacy keeps `PicturePropertiesDialog`. diff --git a/Docs/migration/special-character.md b/Docs/migration/special-character.md new file mode 100644 index 0000000000..fc5fa11324 --- /dev/null +++ b/Docs/migration/special-character.md @@ -0,0 +1,45 @@ +# Special Character / Unicode Insert (net-new — replaces OS charmap shellout) + +| | | +|---|---| +| **Legacy class** | _None._ The legacy `Format › Special character` command shells out to the OS character map (`charmap.exe` / `gucharmap`); there is no WinForms truth dialog to port. | +| **Area / tool** | Any editable field › Format › Special character (insert a Unicode character) | +| **Primitive(s)** | plain-form + list (filterable character picker) | +| **Canonical reference** | EntryGoDialog (closest kept canonical: a filter text box + a results list) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/SpecialCharacterDialogView.axaml(.cs)` + `SpecialCharacterDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +A net-new in-app Avalonia Unicode picker: a filterable list of insertable characters over a gated +Insert + Cancel. It replaces the legacy `Format › Special character` shellout to the OS character map. + +## What it looks like + +![Special Character – initial](./images/special-character-01.png) + +## Behaviour to preserve (parity checklist) +- [ ] Filter text box (watermark prompt) does a case-insensitive search across character name OR code label OR exact character. +- [ ] Character list shows `{Character} {CodeLabel} {Name}` (e.g. "é U+00E9 Latin Small Letter E…"). +- [ ] When the current selection filters out, it is cleared. +- [ ] A curated default set (combining diacritics, IPA, punctuation, arrows — ~25 chars) is shown initially. +- [ ] Insert gated on a selection (`GetValidationErrors` yields `MustSelectMessage` when none selected). +- [ ] In-line validation message shown below the list when nothing is selected. + +## Migration gotchas +- Net-new, so there is no pixel parity baseline against a WinForms dialog — parity is against the OS charmap + *capability* (pick a character and insert it), not its appearance. +- Stub header: "Phase-1 §19g … Unlike the other §19g dialogs there is no WinForms truth dialog to port — + the legacy `Format > Special character` command shells out to the OS character map + (`charmap.exe`/`gucharmap`). This is a net-new in-app Avalonia picker…". +- The default character set is curated in the ViewModel; a future ticket may broaden it to a full Unicode + catalog. + +## Wiring +- **UNWIRED (test-only).** There is no product call site. The only references are the stub definition + (`SpecialCharacterDialogView.axaml.cs`, `SpecialCharacterDialogViewModel.cs`), the tests under + `Src/Common/FwAvaloniaDialogs/FwAvaloniaDialogsTests/`, and a comment in `Src/xWorks/FwXWindow.cs:955` + ("§19g … ships a NET-NEW in-app Avalonia Unicode picker … this legacy OS-charmap shellout is preserved + unchanged"). The legacy charmap shellout is untouched, so there is no call site to revert. +- Re-wiring target (future): the New-UI "insert into field" affordance opens this picker behind `UIMode=New`; + Legacy keeps the OS-charmap shellout. diff --git a/Docs/migration/tools/adhoc-coprohib-edit.md b/Docs/migration/tools/adhoc-coprohib-edit.md new file mode 100644 index 0000000000..54de5d46d2 --- /dev/null +++ b/Docs/migration/tools/adhoc-coprohib-edit.md @@ -0,0 +1,25 @@ +# Ad hoc Rules (`AdhocCoprohibEdit`) + +| | | +|---|---| +| **Tool id** | `AdhocCoprohibEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | split-out (own PR) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Ad hoc Rules (`AdhocCoprohibEdit`) (Sena 3, Legacy)](./images/adhoc-coprohib-edit-01.png) + +## What it is +Edit ad hoc co-occurrence prohibition rules. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail. +- Grammar rule editor -> State split-out (own PR). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/analyses.md b/Docs/migration/tools/analyses.md new file mode 100644 index 0000000000..84ed9f5bd0 --- /dev/null +++ b/Docs/migration/tools/analyses.md @@ -0,0 +1,25 @@ +# Word Analyses (`Analyses`) + +| | | +|---|---| +| **Tool id** | `Analyses` | +| **Area** | Texts & Words | +| **Type** | tool-screen | +| **Surface** | interlinear | +| **Primitive** | interlinear | +| **State** | split-out (own PR) | +| **Phase** | 1 | +| **Canonical reference** | n/a | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Word Analyses (`Analyses`) (Sena 3, Legacy)](./images/analyses-01.png) + +## What it is +Word Analyses morph-bundle editor (per-wordform analyses). + +## Notes / gotchas +- Control is RecordEditView (DataTree detail) with WordsEditToolMenuHandler, but the task frames this as the interlinear analyses editor. +- Surface interlinear; State split-out (own PR). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/bulk-edit-entries-or-senses.md b/Docs/migration/tools/bulk-edit-entries-or-senses.md new file mode 100644 index 0000000000..1d66b993a7 --- /dev/null +++ b/Docs/migration/tools/bulk-edit-entries-or-senses.md @@ -0,0 +1,24 @@ +# Bulk Edit Entries (`bulkEditEntriesOrSenses`) + +| | | +|---|---| +| **Tool id** | `bulkEditEntriesOrSenses` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Bulk Edit Entries (`bulkEditEntriesOrSenses`) (Sena 3, Legacy)](./images/bulk-edit-entries-or-senses-01.png) + +## What it is +Bulk-edit table over entries or senses. + +## Notes / gotchas +- RecordBrowseView table with bulk-edit bar. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/category-browse.md b/Docs/migration/tools/category-browse.md new file mode 100644 index 0000000000..a55f5583be --- /dev/null +++ b/Docs/migration/tools/category-browse.md @@ -0,0 +1,24 @@ +# Categories Browse (`categoryBrowse`) + +| | | +|---|---| +| **Tool id** | `categoryBrowse` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Categories Browse (`categoryBrowse`) (Sena 3, Legacy)](./images/category-browse-01.png) + +## What it is +Browse table of grammatical categories (Parts of Speech). + +## Notes / gotchas +- RecordBrowseView table. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/complex-concordance.md b/Docs/migration/tools/complex-concordance.md new file mode 100644 index 0000000000..187e62ccc3 --- /dev/null +++ b/Docs/migration/tools/complex-concordance.md @@ -0,0 +1,25 @@ +# Complex Concordance (`complexConcordance`) + +| | | +|---|---| +| **Tool id** | `complexConcordance` | +| **Area** | Texts & Words | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Complex Concordance (`complexConcordance`) (Sena 3, Legacy)](./images/complex-concordance-01.png) + +## What it is +Complex (multi-criteria) concordance search + occurrences table. + +## Notes / gotchas +- Composite (ConcordanceContainer): ComplexConcControl pattern builder + RecordBrowseView results + InterlinMasterNoTitleBar preview. +- Defining surface is the results browse table. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/compound-rule-advanced-edit.md b/Docs/migration/tools/compound-rule-advanced-edit.md new file mode 100644 index 0000000000..743d73cc81 --- /dev/null +++ b/Docs/migration/tools/compound-rule-advanced-edit.md @@ -0,0 +1,25 @@ +# Compound Rules (`compoundRuleAdvancedEdit`) + +| | | +|---|---| +| **Tool id** | `compoundRuleAdvancedEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | split-out (own PR) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Compound Rules (`compoundRuleAdvancedEdit`) (Sena 3, Legacy)](./images/compound-rule-advanced-edit-01.png) + +## What it is +Edit morphological compound rules. + +## Notes / gotchas +- Side-by-side: RecordBrowseActiveView list + RecordEditView detail. +- Grammar rule editor -> State split-out (own PR). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/concordance.md b/Docs/migration/tools/concordance.md new file mode 100644 index 0000000000..6bc1d41eaa --- /dev/null +++ b/Docs/migration/tools/concordance.md @@ -0,0 +1,25 @@ +# Concordance (`concordance`) + +| | | +|---|---| +| **Tool id** | `concordance` | +| **Area** | Texts & Words | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Concordance (`concordance`) (Sena 3, Legacy)](./images/concordance-01.png) + +## What it is +Concordance search + occurrences table over the text corpus. + +## Notes / gotchas +- Composite (ConcordanceContainer): ConcordanceControl search pane + RecordBrowseView results + InterlinMasterNoTitleBar preview. +- Defining surface is the results browse table. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/corpus-statistics.md b/Docs/migration/tools/corpus-statistics.md new file mode 100644 index 0000000000..7b0cf3cb79 --- /dev/null +++ b/Docs/migration/tools/corpus-statistics.md @@ -0,0 +1,25 @@ +# Statistics (`corpusStatistics`) + +| | | +|---|---| +| **Tool id** | `corpusStatistics` | +| **Area** | Texts & Words | +| **Type** | tool-screen | +| **Surface** | document (DocView) | +| **Primitive** | n/a | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | n/a | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Statistics (`corpusStatistics`) (Sena 3, Legacy)](./images/corpus-statistics-01.png) + +## What it is +Corpus statistics document. + +## Notes / gotchas +- StatisticsView document view. +- Read-only generated document. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/environment-edit.md b/Docs/migration/tools/environment-edit.md new file mode 100644 index 0000000000..87a318dee4 --- /dev/null +++ b/Docs/migration/tools/environment-edit.md @@ -0,0 +1,25 @@ +# Environments (`EnvironmentEdit`) + +| | | +|---|---| +| **Tool id** | `EnvironmentEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | split-out (own PR) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Environments (`EnvironmentEdit`) (Sena 3, Legacy)](./images/environment-edit-01.png) + +## What it is +Edit phonological environments. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail. +- Grammar rule editor -> State split-out (own PR). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/features-advanced-edit.md b/Docs/migration/tools/features-advanced-edit.md new file mode 100644 index 0000000000..b2b78696ae --- /dev/null +++ b/Docs/migration/tools/features-advanced-edit.md @@ -0,0 +1,24 @@ +# Inflection Features (`featuresAdvancedEdit`) + +| | | +|---|---| +| **Tool id** | `featuresAdvancedEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Inflection Features (`featuresAdvancedEdit`) (Sena 3, Legacy)](./images/features-advanced-edit-01.png) + +## What it is +Edit inflection feature definitions. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/grammar-sketch.md b/Docs/migration/tools/grammar-sketch.md new file mode 100644 index 0000000000..996cc69c21 --- /dev/null +++ b/Docs/migration/tools/grammar-sketch.md @@ -0,0 +1,25 @@ +# Grammar Sketch (`grammarSketch`) + +| | | +|---|---| +| **Tool id** | `grammarSketch` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | document (DocView) | +| **Primitive** | n/a | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | n/a | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Grammar Sketch (`grammarSketch`) (Sena 3, Legacy)](./images/grammar-sketch-01.png) + +## What it is +Generated grammar sketch document. + +## Notes / gotchas +- GeneratedHtmlViewer document view (GrammarSketchDataRetriever). +- Read-only generated document. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/images/adhoc-coprohib-edit-01.png b/Docs/migration/tools/images/adhoc-coprohib-edit-01.png new file mode 100644 index 0000000000..ff0477098c Binary files /dev/null and b/Docs/migration/tools/images/adhoc-coprohib-edit-01.png differ diff --git a/Docs/migration/tools/images/analyses-01.png b/Docs/migration/tools/images/analyses-01.png new file mode 100644 index 0000000000..b10fc2f619 Binary files /dev/null and b/Docs/migration/tools/images/analyses-01.png differ diff --git a/Docs/migration/tools/images/bulk-edit-entries-or-senses-01.png b/Docs/migration/tools/images/bulk-edit-entries-or-senses-01.png new file mode 100644 index 0000000000..a409dc4bec Binary files /dev/null and b/Docs/migration/tools/images/bulk-edit-entries-or-senses-01.png differ diff --git a/Docs/migration/tools/images/category-browse-01.png b/Docs/migration/tools/images/category-browse-01.png new file mode 100644 index 0000000000..d1aa5a6b15 Binary files /dev/null and b/Docs/migration/tools/images/category-browse-01.png differ diff --git a/Docs/migration/tools/images/complex-concordance-01.png b/Docs/migration/tools/images/complex-concordance-01.png new file mode 100644 index 0000000000..d71edeb062 Binary files /dev/null and b/Docs/migration/tools/images/complex-concordance-01.png differ diff --git a/Docs/migration/tools/images/compound-rule-advanced-edit-01.png b/Docs/migration/tools/images/compound-rule-advanced-edit-01.png new file mode 100644 index 0000000000..43c0911466 Binary files /dev/null and b/Docs/migration/tools/images/compound-rule-advanced-edit-01.png differ diff --git a/Docs/migration/tools/images/concordance-01.png b/Docs/migration/tools/images/concordance-01.png new file mode 100644 index 0000000000..d5d50a05b3 Binary files /dev/null and b/Docs/migration/tools/images/concordance-01.png differ diff --git a/Docs/migration/tools/images/corpus-statistics-01.png b/Docs/migration/tools/images/corpus-statistics-01.png new file mode 100644 index 0000000000..55a9ac456b Binary files /dev/null and b/Docs/migration/tools/images/corpus-statistics-01.png differ diff --git a/Docs/migration/tools/images/environment-edit-01.png b/Docs/migration/tools/images/environment-edit-01.png new file mode 100644 index 0000000000..965ce02e7f Binary files /dev/null and b/Docs/migration/tools/images/environment-edit-01.png differ diff --git a/Docs/migration/tools/images/features-advanced-edit-01.png b/Docs/migration/tools/images/features-advanced-edit-01.png new file mode 100644 index 0000000000..9c1720c218 Binary files /dev/null and b/Docs/migration/tools/images/features-advanced-edit-01.png differ diff --git a/Docs/migration/tools/images/grammar-sketch-01.png b/Docs/migration/tools/images/grammar-sketch-01.png new file mode 100644 index 0000000000..2cbc2ecd5c Binary files /dev/null and b/Docs/migration/tools/images/grammar-sketch-01.png differ diff --git a/Docs/migration/tools/images/interlinear-edit-01.png b/Docs/migration/tools/images/interlinear-edit-01.png new file mode 100644 index 0000000000..e963bd1621 Binary files /dev/null and b/Docs/migration/tools/images/interlinear-edit-01.png differ diff --git a/Docs/migration/tools/images/lexicon-browse-01.png b/Docs/migration/tools/images/lexicon-browse-01.png new file mode 100644 index 0000000000..546e4249bd Binary files /dev/null and b/Docs/migration/tools/images/lexicon-browse-01.png differ diff --git a/Docs/migration/tools/images/lexicon-classified-dictionary-01.png b/Docs/migration/tools/images/lexicon-classified-dictionary-01.png new file mode 100644 index 0000000000..21efa8a4d2 Binary files /dev/null and b/Docs/migration/tools/images/lexicon-classified-dictionary-01.png differ diff --git a/Docs/migration/tools/images/lexicon-dictionary-01.png b/Docs/migration/tools/images/lexicon-dictionary-01.png new file mode 100644 index 0000000000..6cc1e5b7ec Binary files /dev/null and b/Docs/migration/tools/images/lexicon-dictionary-01.png differ diff --git a/Docs/migration/tools/images/lexicon-edit-01.png b/Docs/migration/tools/images/lexicon-edit-01.png new file mode 100644 index 0000000000..8e11f2982a Binary files /dev/null and b/Docs/migration/tools/images/lexicon-edit-01.png differ diff --git a/Docs/migration/tools/images/lexicon-edit-popup-01.png b/Docs/migration/tools/images/lexicon-edit-popup-01.png new file mode 100644 index 0000000000..8e11f2982a Binary files /dev/null and b/Docs/migration/tools/images/lexicon-edit-popup-01.png differ diff --git a/Docs/migration/tools/images/lexicon-problems-01.png b/Docs/migration/tools/images/lexicon-problems-01.png new file mode 100644 index 0000000000..61a810f16a Binary files /dev/null and b/Docs/migration/tools/images/lexicon-problems-01.png differ diff --git a/Docs/migration/tools/images/natural-classedit-01.png b/Docs/migration/tools/images/natural-classedit-01.png new file mode 100644 index 0000000000..f5db8c647c Binary files /dev/null and b/Docs/migration/tools/images/natural-classedit-01.png differ diff --git a/Docs/migration/tools/images/notebook-browse-01.png b/Docs/migration/tools/images/notebook-browse-01.png new file mode 100644 index 0000000000..47812303d0 Binary files /dev/null and b/Docs/migration/tools/images/notebook-browse-01.png differ diff --git a/Docs/migration/tools/images/notebook-document-01.png b/Docs/migration/tools/images/notebook-document-01.png new file mode 100644 index 0000000000..02136782c7 Binary files /dev/null and b/Docs/migration/tools/images/notebook-document-01.png differ diff --git a/Docs/migration/tools/images/notebook-edit-01.png b/Docs/migration/tools/images/notebook-edit-01.png new file mode 100644 index 0000000000..7599a517d4 Binary files /dev/null and b/Docs/migration/tools/images/notebook-edit-01.png differ diff --git a/Docs/migration/tools/images/phoneme-edit-01.png b/Docs/migration/tools/images/phoneme-edit-01.png new file mode 100644 index 0000000000..a1aaf5e68b Binary files /dev/null and b/Docs/migration/tools/images/phoneme-edit-01.png differ diff --git a/Docs/migration/tools/images/phonological-features-advanced-edit-01.png b/Docs/migration/tools/images/phonological-features-advanced-edit-01.png new file mode 100644 index 0000000000..a89b9b5105 Binary files /dev/null and b/Docs/migration/tools/images/phonological-features-advanced-edit-01.png differ diff --git a/Docs/migration/tools/images/phonological-rule-edit-01.png b/Docs/migration/tools/images/phonological-rule-edit-01.png new file mode 100644 index 0000000000..812a430fb8 Binary files /dev/null and b/Docs/migration/tools/images/phonological-rule-edit-01.png differ diff --git a/Docs/migration/tools/images/pos-edit-01.png b/Docs/migration/tools/images/pos-edit-01.png new file mode 100644 index 0000000000..28e9cc33cd Binary files /dev/null and b/Docs/migration/tools/images/pos-edit-01.png differ diff --git a/Docs/migration/tools/images/prod-restrict-edit-01.png b/Docs/migration/tools/images/prod-restrict-edit-01.png new file mode 100644 index 0000000000..4ee929fc3f Binary files /dev/null and b/Docs/migration/tools/images/prod-restrict-edit-01.png differ diff --git a/Docs/migration/tools/images/rapid-data-entry-01.png b/Docs/migration/tools/images/rapid-data-entry-01.png new file mode 100644 index 0000000000..36ad7f6d4f Binary files /dev/null and b/Docs/migration/tools/images/rapid-data-entry-01.png differ diff --git a/Docs/migration/tools/images/reversal-tool-bulk-edit-reversal-entries-01.png b/Docs/migration/tools/images/reversal-tool-bulk-edit-reversal-entries-01.png new file mode 100644 index 0000000000..d78033e744 Binary files /dev/null and b/Docs/migration/tools/images/reversal-tool-bulk-edit-reversal-entries-01.png differ diff --git a/Docs/migration/tools/images/reversal-tool-edit-complete-01.png b/Docs/migration/tools/images/reversal-tool-edit-complete-01.png new file mode 100644 index 0000000000..7bd370d007 Binary files /dev/null and b/Docs/migration/tools/images/reversal-tool-edit-complete-01.png differ diff --git a/Docs/migration/tools/images/spelling-01.png b/Docs/migration/tools/images/spelling-01.png new file mode 100644 index 0000000000..102fdf5d3e Binary files /dev/null and b/Docs/migration/tools/images/spelling-01.png differ diff --git a/Docs/migration/tools/images/tool-bulk-edit-phonemes-01.png b/Docs/migration/tools/images/tool-bulk-edit-phonemes-01.png new file mode 100644 index 0000000000..316a564bd7 Binary files /dev/null and b/Docs/migration/tools/images/tool-bulk-edit-phonemes-01.png differ diff --git a/Docs/migration/tools/images/tool-bulk-edit-wordforms-01.png b/Docs/migration/tools/images/tool-bulk-edit-wordforms-01.png new file mode 100644 index 0000000000..ac63c5f84e Binary files /dev/null and b/Docs/migration/tools/images/tool-bulk-edit-wordforms-01.png differ diff --git a/Docs/migration/tools/images/word-list-concordance-01.png b/Docs/migration/tools/images/word-list-concordance-01.png new file mode 100644 index 0000000000..8702b11560 Binary files /dev/null and b/Docs/migration/tools/images/word-list-concordance-01.png differ diff --git a/Docs/migration/tools/interlinear-edit.md b/Docs/migration/tools/interlinear-edit.md new file mode 100644 index 0000000000..a12aa5334f --- /dev/null +++ b/Docs/migration/tools/interlinear-edit.md @@ -0,0 +1,25 @@ +# Interlinear Texts (`interlinearEdit`) + +| | | +|---|---| +| **Tool id** | `interlinearEdit` | +| **Area** | Texts & Words | +| **Type** | tool-screen | +| **Surface** | interlinear | +| **Primitive** | interlinear | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | n/a | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Interlinear Texts – Analyze tab (Sena 3)](./images/interlinear-edit-01.png) + +## What it is +Interlinear text editor (baseline/word/morph/gloss lines over texts). + +## Notes / gotchas +- InterlinMaster interlinear master control. +- Interlinear surface -> Primitive interlinear; Canonical n/a. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/lexicon-browse.md b/Docs/migration/tools/lexicon-browse.md new file mode 100644 index 0000000000..b99c4dd95a --- /dev/null +++ b/Docs/migration/tools/lexicon-browse.md @@ -0,0 +1,25 @@ +# Browse (`lexiconBrowse`) + +| | | +|---|---| +| **Tool id** | `lexiconBrowse` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Browse (`lexiconBrowse`) (Sena 3, Legacy)](./images/lexicon-browse-01.png) + +## What it is +Browse/bulk-view table of lexical entries. + +## Notes / gotchas +- RecordBrowseView table. +- Already flipped to the Avalonia path -> State coexist. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/lexicon-classified-dictionary.md b/Docs/migration/tools/lexicon-classified-dictionary.md new file mode 100644 index 0000000000..26cd456250 --- /dev/null +++ b/Docs/migration/tools/lexicon-classified-dictionary.md @@ -0,0 +1,25 @@ +# Classified Dictionary (`lexiconClassifiedDictionary`) + +| | | +|---|---| +| **Tool id** | `lexiconClassifiedDictionary` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | document (DocView) | +| **Primitive** | n/a | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | n/a | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Classified Dictionary (`lexiconClassifiedDictionary`) (Sena 3, Legacy)](./images/lexicon-classified-dictionary-01.png) + +## What it is +Dictionary entries organised/classified by semantic domain, as a document. + +## Notes / gotchas +- XhtmlDocView document view. +- Has a 'Show Unused Items' (ShowFailingItems) toggle. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/lexicon-dictionary.md b/Docs/migration/tools/lexicon-dictionary.md new file mode 100644 index 0000000000..6788f0f6f1 --- /dev/null +++ b/Docs/migration/tools/lexicon-dictionary.md @@ -0,0 +1,25 @@ +# Dictionary (`lexiconDictionary`) + +| | | +|---|---| +| **Tool id** | `lexiconDictionary` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | document (DocView) | +| **Primitive** | n/a | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | n/a | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Dictionary (`lexiconDictionary`) (Sena 3, Legacy)](./images/lexicon-dictionary-01.png) + +## What it is +Formatted dictionary publication view of entries. + +## Notes / gotchas +- XhtmlRecordDocView document view (rendered dictionary publication, configurable layout). +- Read-oriented document surface; not a table or DataTree editor. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/lexicon-edit-popup.md b/Docs/migration/tools/lexicon-edit-popup.md new file mode 100644 index 0000000000..77b8d34e0a --- /dev/null +++ b/Docs/migration/tools/lexicon-edit-popup.md @@ -0,0 +1,26 @@ +# Lexicon Edit Popup (`lexiconEditPopup`) + +| | | +|---|---| +| **Tool id** | `lexiconEditPopup` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Lexicon Edit Popup (`lexiconEditPopup`) (Sena 3, Legacy)](./images/lexicon-edit-popup-01.png) + +## What it is +Test/popup composite: dictionary preview over a RecordEditView edit pane for the current entry. + +## Notes / gotchas +- NOT a normal navigable screen -- embedded popup/test edit composite (id 'TestEditMulti'); not wired into any sidebar tool list. +- PaneBarContainer > MultiPane: Dictionary preview pane + RecordEditView edit pane. +- Included only for inventory completeness. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/lexicon-edit.md b/Docs/migration/tools/lexicon-edit.md new file mode 100644 index 0000000000..1916bcc94a --- /dev/null +++ b/Docs/migration/tools/lexicon-edit.md @@ -0,0 +1,26 @@ +# Lexicon Edit (`lexiconEdit`) + +| | | +|---|---| +| **Tool id** | `lexiconEdit` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Lexicon Edit (`lexiconEdit`) (Sena 3, Legacy)](./images/lexicon-edit-01.png) + +## What it is +Browse list + detail edit of lexical entries (the primary dictionary entry editor). + +## Notes / gotchas +- Side-by-side: RecordBrowseView list pane + RecordEditView DataTree detail pane (MultiPane). +- Already flipped to the Avalonia path -> State coexist. +- This is the canonical detail-editor reference surface (FullEntryRegionComposer). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/lexicon-problems.md b/Docs/migration/tools/lexicon-problems.md new file mode 100644 index 0000000000..d369187d4d --- /dev/null +++ b/Docs/migration/tools/lexicon-problems.md @@ -0,0 +1,24 @@ +# Problems (`lexiconProblems`) + +| | | +|---|---| +| **Tool id** | `lexiconProblems` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Problems (`lexiconProblems`) (Sena 3, Legacy)](./images/lexicon-problems-01.png) + +## What it is +View/edit parser/grammar problem items. + +## Notes / gotchas +- RecordEditView detail. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/natural-classedit.md b/Docs/migration/tools/natural-classedit.md new file mode 100644 index 0000000000..8676a04d46 --- /dev/null +++ b/Docs/migration/tools/natural-classedit.md @@ -0,0 +1,25 @@ +# Natural Classes (`naturalClassedit`) + +| | | +|---|---| +| **Tool id** | `naturalClassedit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | split-out (own PR) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Natural Classes (`naturalClassedit`) (Sena 3, Legacy)](./images/natural-classedit-01.png) + +## What it is +Edit phonological natural classes. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail. +- Grammar rule editor -> State split-out (own PR). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/notebook-browse.md b/Docs/migration/tools/notebook-browse.md new file mode 100644 index 0000000000..ad826735c7 --- /dev/null +++ b/Docs/migration/tools/notebook-browse.md @@ -0,0 +1,24 @@ +# Browse (`notebookBrowse`) + +| | | +|---|---| +| **Tool id** | `notebookBrowse` | +| **Area** | Notebook | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Browse (`notebookBrowse`) (Sena 3, Legacy)](./images/notebook-browse-01.png) + +## What it is +Browse table of notebook records. + +## Notes / gotchas +- RecordBrowseView table. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/notebook-document.md b/Docs/migration/tools/notebook-document.md new file mode 100644 index 0000000000..9890d58435 --- /dev/null +++ b/Docs/migration/tools/notebook-document.md @@ -0,0 +1,24 @@ +# Document (`notebookDocument`) + +| | | +|---|---| +| **Tool id** | `notebookDocument` | +| **Area** | Notebook | +| **Type** | tool-screen | +| **Surface** | document (DocView) | +| **Primitive** | n/a | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | n/a | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Document (`notebookDocument`) (Sena 3, Legacy)](./images/notebook-document-01.png) + +## What it is +Document view of notebook records. + +## Notes / gotchas +- XmlDocView document view. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/notebook-edit.md b/Docs/migration/tools/notebook-edit.md new file mode 100644 index 0000000000..2aeb16bb4a --- /dev/null +++ b/Docs/migration/tools/notebook-edit.md @@ -0,0 +1,25 @@ +# Record Edit (`notebookEdit`) + +| | | +|---|---| +| **Tool id** | `notebookEdit` | +| **Area** | Notebook | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Record Edit (`notebookEdit`) (Sena 3, Legacy)](./images/notebook-edit-01.png) + +## What it is +Browse list + detail edit of anthropology/notebook records. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView DataTree detail. +- Already flipped to the Avalonia path -> State coexist. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/phoneme-edit.md b/Docs/migration/tools/phoneme-edit.md new file mode 100644 index 0000000000..76d4381c5e --- /dev/null +++ b/Docs/migration/tools/phoneme-edit.md @@ -0,0 +1,25 @@ +# Phonemes (`phonemeEdit`) + +| | | +|---|---| +| **Tool id** | `phonemeEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | split-out (own PR) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Phonemes (`phonemeEdit`) (Sena 3, Legacy)](./images/phoneme-edit-01.png) + +## What it is +Edit the phoneme inventory. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail. +- Grammar rule editor -> State split-out (own PR). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/phonological-features-advanced-edit.md b/Docs/migration/tools/phonological-features-advanced-edit.md new file mode 100644 index 0000000000..8b376f121a --- /dev/null +++ b/Docs/migration/tools/phonological-features-advanced-edit.md @@ -0,0 +1,24 @@ +# Phonological Features (`phonologicalFeaturesAdvancedEdit`) + +| | | +|---|---| +| **Tool id** | `phonologicalFeaturesAdvancedEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Phonological Features (`phonologicalFeaturesAdvancedEdit`) (Sena 3, Legacy)](./images/phonological-features-advanced-edit-01.png) + +## What it is +Edit phonological feature definitions. + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/phonological-rule-edit.md b/Docs/migration/tools/phonological-rule-edit.md new file mode 100644 index 0000000000..1cc7a4f183 --- /dev/null +++ b/Docs/migration/tools/phonological-rule-edit.md @@ -0,0 +1,25 @@ +# Phonological Rules (`PhonologicalRuleEdit`) + +| | | +|---|---| +| **Tool id** | `PhonologicalRuleEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | split-out (own PR) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Phonological Rules (`PhonologicalRuleEdit`) (Sena 3, Legacy)](./images/phonological-rule-edit-01.png) + +## What it is +Edit phonological rules. + +## Notes / gotchas +- Side-by-side: RecordBrowseActiveView list + RecordEditView detail (rule formula editor). +- Grammar rule editor -> State split-out (own PR). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/pos-edit.md b/Docs/migration/tools/pos-edit.md new file mode 100644 index 0000000000..92df5274b8 --- /dev/null +++ b/Docs/migration/tools/pos-edit.md @@ -0,0 +1,26 @@ +# Category Edit (`posEdit`) + +| | | +|---|---| +| **Tool id** | `posEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | coexist | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Category Edit (`posEdit`) (Sena 3, Legacy)](./images/pos-edit-01.png) + +## What it is +Edit the Parts of Speech (grammatical category) hierarchy with a detail editor. + +## Notes / gotchas +- RecordEditView DataTree detail over the PartsOfSpeech possibility hierarchy. +- Lives in Grammar (not Lists) -> Type tool-screen. +- Already flipped to the Avalonia path -> State coexist. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/prod-restrict-edit.md b/Docs/migration/tools/prod-restrict-edit.md new file mode 100644 index 0000000000..ca32d1e64d --- /dev/null +++ b/Docs/migration/tools/prod-restrict-edit.md @@ -0,0 +1,25 @@ +# Exception "Features" (`ProdRestrictEdit`) + +| | | +|---|---| +| **Tool id** | `ProdRestrictEdit` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Exception "Features" (`ProdRestrictEdit`) (Sena 3, Legacy)](./images/prod-restrict-edit-01.png) + +## What it is +Edit exception 'features' (productivity restrictions). + +## Notes / gotchas +- Side-by-side: RecordBrowseView list + RecordEditView detail. +- Edits the CmPossibility-based productivity-restriction list, but lives in Grammar -> Type tool-screen. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/rapid-data-entry.md b/Docs/migration/tools/rapid-data-entry.md new file mode 100644 index 0000000000..ebce8485a2 --- /dev/null +++ b/Docs/migration/tools/rapid-data-entry.md @@ -0,0 +1,26 @@ +# Collect Words (`rapidDataEntry`) + +| | | +|---|---| +| **Tool id** | `rapidDataEntry` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Collect Words (`rapidDataEntry`) (Sena 3, Legacy)](./images/rapid-data-entry-01.png) + +## What it is +Rapid Data Entry: collect words by semantic domain (RDE). + +## Notes / gotchas +- Composite: semantic-domain tree/record list + RecordBrowseView + RecordEditView edit pane (SemanticCategoryAndItems MultiPane). +- Defining surface is the RDE browse/collect grid; secondary RecordEditView detail pane. +- Driven by a PossibilityRecordList over Semantic Domains. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/reversal-tool-bulk-edit-reversal-entries.md b/Docs/migration/tools/reversal-tool-bulk-edit-reversal-entries.md new file mode 100644 index 0000000000..02ed7afacb --- /dev/null +++ b/Docs/migration/tools/reversal-tool-bulk-edit-reversal-entries.md @@ -0,0 +1,24 @@ +# Bulk Edit Reversal Entries (`reversalToolBulkEditReversalEntries`) + +| | | +|---|---| +| **Tool id** | `reversalToolBulkEditReversalEntries` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Bulk Edit Reversal Entries (`reversalToolBulkEditReversalEntries`) (Sena 3, Legacy)](./images/reversal-tool-bulk-edit-reversal-entries-01.png) + +## What it is +Bulk-edit table over Reversal Index entries. + +## Notes / gotchas +- RecordBrowseView table with bulk-edit (BulkReversalEntryPosEditor). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/reversal-tool-edit-complete.md b/Docs/migration/tools/reversal-tool-edit-complete.md new file mode 100644 index 0000000000..5ec8d46f07 --- /dev/null +++ b/Docs/migration/tools/reversal-tool-edit-complete.md @@ -0,0 +1,25 @@ +# Reversal Indexes (`reversalToolEditComplete`) + +| | | +|---|---| +| **Tool id** | `reversalToolEditComplete` | +| **Area** | Lexicon | +| **Type** | tool-screen | +| **Surface** | edit (RecordEditView/detail) | +| **Primitive** | detail (composed editor) | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | detail editor -> Lexicon Edit entry pane (FullEntryRegionComposer) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Reversal Indexes (`reversalToolEditComplete`) (Sena 3, Legacy)](./images/reversal-tool-edit-complete-01.png) + +## What it is +Browse/edit Reversal Index entries. + +## Notes / gotchas +- Composite: XhtmlDocView preview pane + RecordEditView DataTree detail pane for reversal index entries. +- Reversal-specific menu handler (ReversalIndexEntryMenuHandler). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/spelling.md b/Docs/migration/tools/spelling.md new file mode 100644 index 0000000000..74fe72cb2c --- /dev/null +++ b/Docs/migration/tools/spelling.md @@ -0,0 +1,26 @@ +# (Spelling Proto) (`spelling`) + +| | | +|---|---| +| **Tool id** | `spelling` | +| **Area** | Texts & Words | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![(Spelling Proto) (`spelling`) (Sena 3, Legacy)](./images/spelling-01.png) + +## What it is +Prototype spelling tool (browse table). + +## Notes / gotchas +- RecordBrowseView table. +- NOT wired into the active Texts & Words area (its toolConfiguration is not included by areaConfiguration.xml) -- prototype, not a live screen. +- Included only for inventory completeness. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/tool-bulk-edit-phonemes.md b/Docs/migration/tools/tool-bulk-edit-phonemes.md new file mode 100644 index 0000000000..09af9d3a03 --- /dev/null +++ b/Docs/migration/tools/tool-bulk-edit-phonemes.md @@ -0,0 +1,24 @@ +# Bulk Edit Phoneme Features (`toolBulkEditPhonemes`) + +| | | +|---|---| +| **Tool id** | `toolBulkEditPhonemes` | +| **Area** | Grammar | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Bulk Edit Phoneme Features (`toolBulkEditPhonemes`) (Sena 3, Legacy)](./images/tool-bulk-edit-phonemes-01.png) + +## What it is +Bulk-assign phonological features to phonemes. + +## Notes / gotchas +- RecordBrowseView table with bulk-edit (AssignFeaturesToPhonemes / PhonologicalFeatureEditor). + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/tool-bulk-edit-wordforms.md b/Docs/migration/tools/tool-bulk-edit-wordforms.md new file mode 100644 index 0000000000..bd078e3120 --- /dev/null +++ b/Docs/migration/tools/tool-bulk-edit-wordforms.md @@ -0,0 +1,24 @@ +# Bulk Edit Wordforms (`toolBulkEditWordforms`) + +| | | +|---|---| +| **Tool id** | `toolBulkEditWordforms` | +| **Area** | Texts & Words | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Bulk Edit Wordforms (`toolBulkEditWordforms`) (Sena 3, Legacy)](./images/tool-bulk-edit-wordforms-01.png) + +## What it is +Bulk-edit table over wordforms. + +## Notes / gotchas +- RecordBrowseView table with bulk-edit bar. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/tools/word-list-concordance.md b/Docs/migration/tools/word-list-concordance.md new file mode 100644 index 0000000000..072a363db3 --- /dev/null +++ b/Docs/migration/tools/word-list-concordance.md @@ -0,0 +1,25 @@ +# Word List Concordance (`wordListConcordance`) + +| | | +|---|---| +| **Tool id** | `wordListConcordance` | +| **Area** | Texts & Words | +| **Type** | tool-screen | +| **Surface** | browse (RecordBrowseView/table) | +| **Primitive** | TABLE | +| **State** | legacy (default) | +| **Phase** | 1 | +| **Canonical reference** | browse/table -> Lexicon Browse pane (LexicalBrowseView) | +| **JIRA** | LT-XXXXX | + +## What it looks like +![Word List Concordance (`wordListConcordance`) (Sena 3, Legacy)](./images/word-list-concordance-01.png) + +## What it is +Concordance driven by a word list, with occurrences table. + +## Notes / gotchas +- Composite (ConcordanceContainer): word-list RecordBrowseView + InterlinMasterNoTitleBar preview. +- Defining surface is the results browse table. + +> Stub. Deepen using `Docs/migration/_TEMPLATE.md` (capture legacy PNGs via the `fieldworks-winapp` skill) when this ticket is picked up. diff --git a/Docs/migration/writing-system-properties.md b/Docs/migration/writing-system-properties.md new file mode 100644 index 0000000000..9af91c5b4c --- /dev/null +++ b/Docs/migration/writing-system-properties.md @@ -0,0 +1,61 @@ +# Writing System Properties — bounded core (legacy `FwWritingSystemSetupDlg`) + +| | | +|---|---| +| **Legacy class** | `SIL.FieldWorks.FwCoreDlgs.FwWritingSystemSetupDlg` (`Src/FwCoreDlgs/FwWritingSystemSetupDlg.cs`) | +| **Area / tool** | Format › Set up Writing Systems › single-WS Add/Edit properties (bounded core) | +| **Primitive(s)** | plain-form (name / abbreviation / font / RTL / sort) | +| **Canonical reference** | OptionsDialog (closest kept canonical for a plain-form of fields; legacy is tabbed but this bounded core is plain) | +| **Backed-out Avalonia stub** | `Src/Common/FwAvaloniaDialogs/WritingSystemPropertiesDialogView.axaml(.cs)` + `WritingSystemPropertiesDialogViewModel.cs` @ git `this branch (recover from history)` | +| **JIRA** | LT-XXXXX | + +## What it is +A bounded managed core of the writing-system setup dialog: edit a single WS's name, abbreviation, default +font, right-to-left direction, and sort label. **PARTIAL** — the full `FwWritingSystemSetupDlg` surface +(SLDR sharing, encoding converters, merge, the advanced script/region/variant editor, keyboard assignment, +numbering/character-inventory tabs) is NOT ported. + +## What it looks like (before / after) +Legacy "before" captured by the screenshot harness (ScreenshotHarnessTests, option 2). Avalonia "after" +comes from the surface's FwAvaloniaDialogs(Tests) visual test (same data); attach both to the JIRA ticket. + +| Legacy (WinForms) — "before" | Avalonia (New) — "after" | +|---|---| +| ![fw-writing-system-setup legacy](./images/fw-writing-system-setup-before.png) | ![fw-writing-system-setup avalonia](./images/fw-writing-system-setup-after.png) | + +Tabs (legacy): + +![characters](./images/fw-writing-system-setup-tab-characters.png) ![converters](./images/fw-writing-system-setup-tab-converters.png) ![font](./images/fw-writing-system-setup-tab-font.png) ![general](./images/fw-writing-system-setup-tab-general.png) ![keyboard](./images/fw-writing-system-setup-tab-keyboard.png) ![numbers](./images/fw-writing-system-setup-tab-numbers.png) ![sorting](./images/fw-writing-system-setup-tab-sorting.png) +## Behaviour to preserve (parity checklist) +- [ ] Name field (required, trimmed). +- [ ] Abbreviation field (required, trimmed). +- [ ] Default-font combo (from the available-fonts list). +- [ ] Right-to-left checkbox. +- [ ] Sort label field (trimmed). +- [ ] OK gated: non-empty name + abbreviation, and a valid (non-duplicate, case-insensitive) tag — mirroring the legacy model's `IsListValid` / duplicate guard at this granularity. +- [ ] In-line validation message (first error) shown when invalid. + +## Migration gotchas +- PARTIAL — PARITY (stub `WritingSystemPropertiesDialogViewModel.cs`, §19g): "this is the managed + name/abbr/font/direction/sort core only. The full `FwWritingSystemSetupModel` surface — SLDR sharing, + encoding converters, merge, the advanced script/region/variant editor, keyboard assignment, and the + numbering/character-inventory tabs — is NOT ported here; those remain the legacy `FwWritingSystemSetupDlg`. + OK is gated on a non-empty name + abbreviation and a valid (non-duplicate) tag, mirroring the legacy + model's IsListValid/duplicate guard at this granularity." +- WS/RTL: this dialog *defines* a WS's direction — the RTL flag must persist correctly. +- The list-management surface (add/remove/merge across all WSs) is explicitly out of scope; only single-WS + Add/Edit properties are migrated. + +## Wiring +- **UNWIRED (test-only).** There is no product call site. The only references are the stub definition + (`WritingSystemPropertiesDialogView.axaml.cs`, `WritingSystemPropertiesDialogViewModel.cs`) and the tests + under `Src/Common/FwAvaloniaDialogs/FwAvaloniaDialogsTests/`. The legacy list-management call site is still + active and is NOT gated onto the Avalonia stub — so there is no call site to revert. +- PARITY note at the legacy call site (`Src/xWorks/FwXWindow.cs:1547`–`1553`, in `ShowWsPropsDialog`): + "PARITY §19g: the full Writing System SETUP dialog (`FwWritingSystemSetupDlg` over + `FwWritingSystemSetupModel` …) stays on the legacy WinForms path: it is far larger than a bounded §19g + slice. The bounded managed name/abbr/font/direction/sort PROPERTIES core IS migrated to the Avalonia kit + … for the future single-WS Add/Edit New-UI surface; this list-management call site is not yet gated onto + it." The live legacy dialog is constructed at `FwXWindow.cs:1557`. +- Re-wiring target (future): a single-WS Add/Edit New-UI surface enters this dialog behind `UIMode=New`; + Legacy keeps `FwWritingSystemSetupDlg`.