# ashketchum2017/exportrelated architecture

> Architecture diagram of the GitHub repository ashketchum2017/exportrelated, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ashketchum2017/exportrelated
- Repository: https://github.com/ashketchum2017/exportrelated

## Overview

ExportRelated is a CorelDRAW VBA macro for preparing and running queued PDF, DXF, PNG, and JPEG exports. The documented workflow is: add or edit a job for an open document, configure its destination, pages, naming, layers, and format options, then validate and run the queue. Jobs may produce multiple files and may refer to different open documents. The diagram follows README-documented behavior and module names; source excerpts were unavailable, so uncertain internal calls are omitted.

Main entry points: [`src/classes/ExportRunner.cls`](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportRunner.cls) (Export runner), [`src/forms/ExportRelatedSettings.vba`](https://github.com/ashketchum2017/exportrelated/blob/main/src/forms/ExportRelatedSettings.vba) (Job editor), [`src/forms/ExportRelatedMenu.vba`](https://github.com/ashketchum2017/exportrelated/blob/main/src/forms/ExportRelatedMenu.vba) (Queue menu), [`src/classes/PNGExportRunner.cls`](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/PNGExportRunner.cls) (PNG export)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Queue interface"]
  node_menu["Queue menu"]
  node_settings_form["Job editor"]
  node_format_forms["Format settings"]
end

subgraph group_planning["Job planning"]
  node_job_item["Queue job"]
  node_page_parser["Page parser"]
  node_token_plan["Token plan"]
  node_template_parser["Name templates"]
  node_dynamic_tokens["Dynamic tokens"]
end

subgraph group_execution["Export execution"]
  node_queue_runner["Queue runner"]
  node_export_runner["Export runner<br/>[ExportRunner.cls]"]
  node_pdf_export["PDF export<br/>[PDFExport.cls]"]
  node_dxf_runner["DXF export"]
  node_png_runner["PNG export"]
  node_jpeg_runner["JPEG export"]
  node_preset_readers["Image presets"]
end

subgraph group_integration["Host integration"]
  node_host(("CorelDRAW"))
  node_behavior["Behavior session"]
  node_behavior_contract["Behavior contract"]
  node_target_bridge["Runner bridge<br/>[MRTargetBridge.bas]"]
end

node_user(("User"))
node_files["Output files"]
node_macro_runner(("MacroRunner"))

node_user -->|"controls"| node_menu
node_menu -->|"opens editor"| node_settings_form
node_settings_form -->|"saves job"| node_job_item
node_menu -->|"manages queue"| node_job_item
node_menu -->|"runs queue"| node_queue_runner
node_queue_runner -->|"runs jobs"| node_export_runner
node_settings_form -->|"opens options"| node_format_forms
node_settings_form -->|"previews pages"| node_page_parser
node_settings_form -->|"previews names"| node_template_parser
node_template_parser -->|"uses tokens"| node_dynamic_tokens
node_export_runner -->|"plans pages"| node_page_parser
node_export_runner -->|"plans names"| node_template_parser
node_export_runner -->|"dispatches PDF"| node_pdf_export
node_export_runner -->|"dispatches DXF"| node_dxf_runner
node_export_runner -->|"dispatches PNG"| node_png_runner
node_export_runner -->|"dispatches JPEG"| node_jpeg_runner
node_png_runner -->|"reads presets"| node_preset_readers
node_jpeg_runner -->|"reads presets"| node_preset_readers
node_pdf_export -->|"exports pages"| node_host
node_dxf_runner -->|"exports pages"| node_host
node_png_runner -->|"exports pages"| node_host
node_jpeg_runner -->|"exports pages"| node_host
node_host -->|"writes outputs"| node_files
node_behavior -.->|"uses contract"| node_behavior_contract
node_target_bridge -.->|"bridges target"| node_macro_runner

click node_menu "https://github.com/ashketchum2017/exportrelated/blob/main/src/forms/ExportRelatedMenu.vba"
click node_settings_form "https://github.com/ashketchum2017/exportrelated/blob/main/src/forms/ExportRelatedSettings.vba"
click node_format_forms "https://github.com/ashketchum2017/exportrelated/tree/main/src/forms"
click node_job_item "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportSettingItem.cls"
click node_page_parser "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportPageParser.cls"
click node_token_plan "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportTokenPlan.cls"
click node_template_parser "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportTemplateParser.cls"
click node_dynamic_tokens "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportDynamicTokens.cls"
click node_queue_runner "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportQueueRunner.cls"
click node_export_runner "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportRunner.cls"
click node_pdf_export "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/PDFExport.cls"
click node_dxf_runner "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/DXFExportSettings.cls"
click node_png_runner "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/PNGExportRunner.cls"
click node_jpeg_runner "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/JPEGExportRunner.cls"
click node_preset_readers "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/PNGPresetReader.cls"
click node_behavior "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ERBehaviorSession.cls"
click node_behavior_contract "https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ERBehaviorContract.cls"
click node_target_bridge "https://github.com/ashketchum2017/exportrelated/blob/main/src/modules/MRTargetBridge.bas"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_menu,node_settings_form,node_format_forms,node_user toneBlue
class node_job_item,node_page_parser,node_token_plan,node_template_parser,node_dynamic_tokens toneAmber
class node_queue_runner,node_export_runner,node_pdf_export,node_dxf_runner,node_png_runner,node_jpeg_runner,node_preset_readers toneMint
class node_host,node_behavior,node_behavior_contract,node_target_bridge toneRose
class node_files,node_macro_runner toneIndigo
```

## Components

### Queue interface

- [Queue menu](https://github.com/ashketchum2017/exportrelated/blob/main/src/forms/ExportRelatedMenu.vba): `src/forms/ExportRelatedMenu.vba`
- [Job editor](https://github.com/ashketchum2017/exportrelated/blob/main/src/forms/ExportRelatedSettings.vba): `src/forms/ExportRelatedSettings.vba`
- [Format settings](https://github.com/ashketchum2017/exportrelated/tree/main/src/forms): `src/forms`

### Job planning

- [Queue job](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportSettingItem.cls): `src/classes/ExportSettingItem.cls`
- [Page parser](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportPageParser.cls): `src/classes/ExportPageParser.cls`
- [Token plan](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportTokenPlan.cls): `src/classes/ExportTokenPlan.cls`
- [Name templates](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportTemplateParser.cls): `src/classes/ExportTemplateParser.cls`
- [Dynamic tokens](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportDynamicTokens.cls): `src/classes/ExportDynamicTokens.cls`

### Export execution

- [Queue runner](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportQueueRunner.cls): `src/classes/ExportQueueRunner.cls`
- [Export runner](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ExportRunner.cls): `src/classes/ExportRunner.cls`
- [PDF export](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/PDFExport.cls): `src/classes/PDFExport.cls`
- [DXF export](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/DXFExportSettings.cls): `src/classes/DXFExportSettings.cls`
- [PNG export](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/PNGExportRunner.cls): `src/classes/PNGExportRunner.cls`
- [JPEG export](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/JPEGExportRunner.cls): `src/classes/JPEGExportRunner.cls`
- [Image presets](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/PNGPresetReader.cls): `src/classes/PNGPresetReader.cls`

### Host integration

- **CorelDRAW**
- [Behavior session](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ERBehaviorSession.cls): `src/classes/ERBehaviorSession.cls`
- [Behavior contract](https://github.com/ashketchum2017/exportrelated/blob/main/src/classes/ERBehaviorContract.cls): `src/classes/ERBehaviorContract.cls`
- [Runner bridge](https://github.com/ashketchum2017/exportrelated/blob/main/src/modules/MRTargetBridge.bas): `src/modules/MRTargetBridge.bas`

### Other components

- **User**
- **Output files**
- **MacroRunner**

## Connections

- User → Queue menu: controls
- Queue menu → Job editor: opens editor
- Job editor → Queue job: saves job
- Queue menu → Queue job: manages queue
- Queue menu → Queue runner: runs queue
- Queue runner → Export runner: runs jobs
- Job editor → Format settings: opens options
- Job editor → Page parser: previews pages
- Job editor → Name templates: previews names
- Name templates → Dynamic tokens: uses tokens
- Export runner → Page parser: plans pages
- Export runner → Name templates: plans names
- Export runner → PDF export: dispatches PDF
- Export runner → DXF export: dispatches DXF
- Export runner → PNG export: dispatches PNG
- Export runner → JPEG export: dispatches JPEG
- PNG export → Image presets: reads presets
- JPEG export → Image presets: reads presets
- PDF export → CorelDRAW: exports pages
- DXF export → CorelDRAW: exports pages
- PNG export → CorelDRAW: exports pages
- JPEG export → CorelDRAW: exports pages
- CorelDRAW → Output files: writes outputs
- Behavior session → Behavior contract: uses contract
- Runner bridge → MacroRunner: bridges target
