# khttemp/dend-mod-gui-pyside6 architecture

> Architecture diagram of the GitHub repository khttemp/dend-mod-gui-pyside6, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/khttemp/dend-mod-gui-pyside6
- Repository: https://github.com/khttemp/dend-mod-gui-pyside6

## Overview

This is a PySide6 GUI suite for inspecting and modifying Densha de D data. The user selects a tool from the main program menu, opens a target BIN file, edits or extracts its contents, and saves the result. The tools cover vehicle data, model binaries, MDLINFO, comic scripts, BGM, FVT creation, rail data, RS rail/AMB, SMF, and SS/Unity assets. Sampled source shows the main shell and several editor implementations; links to unsampled tool internals are based on the source index or README, not direct inspection.

Main entry points: [`program/main/mainGui.py`](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/main/mainGui.py) (Main window), [`program/sub/orgInfoEditor/orgInfoEditorGui.py`](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/orgInfoEditor/orgInfoEditorGui.py) (Vehicle editor), [`program/sub/mdlBin/mdlBinGui.py`](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlBin/mdlBinGui.py) (Model binary editor), [`program/sub/railEditor/railEditorGui.py`](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/railEditorGui.py) (Rail editor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_shell["Application shell"]
  node_entry["Application entry<br/>[main.py]"]
  node_mainui["Main window<br/>[mainGui.py]"]
  node_mainproc["Main services<br/>[mainProcess.py]"]
end

subgraph group_editors["Data editors"]
  node_vehicle["Vehicle editor"]
  node_vehicleproc["Vehicle processing"]
  node_vehicledecode["Vehicle decoders<br/>[RSdecrypt.py]"]
  node_mdlbin["Model binary editor<br/>[mdlBinGui.py]"]
  node_mdlbinproc["Model binary processing<br/>[mdlBinProcess.py]"]
  node_mdlbindecode["Model binary decoder<br/>[decrypt.py]"]
  node_mdlinfo["MDLINFO editor<br/>[mdlinfoGui.py]"]
  node_mdlinfodecode["MDLINFO decoder<br/>[decrypt.py]"]
  node_comic["Comic script editor<br/>[comicscriptGui.py]"]
  node_comicdecode["Comic script decoder<br/>[decrypt.py]"]
  node_music["BGM list editor<br/>[musicEditorGui.py]"]
  node_fvt["FVT creator<br/>[fvtMakerGui.py]"]
  node_rail["Rail editor<br/>[railEditorGui.py]"]
  node_raildata["Rail data editors<br/>[railListWidget.py]"]
  node_railamb["Rail AMB editor<br/>[ambListWidget.py]"]
  node_raildecode["Rail decoders<br/>[CSdecrypt.py]"]
  node_rsrail["RS rail and AMB<br/>[rsRailGui.py]"]
end

subgraph group_assets["Asset tools"]
  node_smf["SMF editor<br/>[smfGui.py]"]
  node_smfdecode["SMF decoder<br/>[decrypt.py]"]
  node_ssunity["SS/Unity editor<br/>[ssUnityGui.py]"]
  node_ssprocess["SS/Unity processing<br/>[ssUnityProcess.py]"]
end

subgraph group_shared["Shared services"]
  node_appearance["Custom dialogs"]
  node_commands["Command definitions<br/>[cmdList.py]"]
  node_encoding["Text encoding<br/>[encodingClass.py]"]
  node_errors["Error logging<br/>[errorLogClass.py]"]
  node_text["Text settings<br/>[textSetting.py]"]
end

node_user(("User"))

node_user -->|"selects tool"| node_mainui
node_entry -->|"starts"| node_mainui
node_mainui -->|"reads settings"| node_mainproc
node_mainui -->|"opens"| node_vehicle
node_mainui -->|"opens"| node_mdlbin
node_mainui -->|"opens"| node_mdlinfo
node_mainui -->|"opens"| node_comic
node_mainui -->|"opens"| node_music
node_mainui -->|"opens"| node_fvt
node_mainui -->|"opens"| node_rail
node_mainui -->|"opens"| node_rsrail
node_mainui -->|"opens"| node_smf
node_mainui -->|"opens"| node_ssunity
node_mdlbin -->|"uses decoder"| node_mdlbindecode
node_mdlbin -->|"delegates to"| node_mdlbinproc
node_mdlinfo -->|"uses decoder"| node_mdlinfodecode
node_comic -->|"uses decoder"| node_comicdecode
node_comic -->|"uses commands"| node_commands
node_vehicle -->|"delegates to"| node_vehicleproc
node_vehicle -->|"uses decoder"| node_vehicledecode
node_rail -->|"uses editor"| node_raildata
node_rail -->|"uses editor"| node_railamb
node_rail -->|"uses decoder"| node_raildecode
node_smf -->|"uses decoder"| node_smfdecode
node_ssunity -->|"delegates to"| node_ssprocess
node_smfdecode -->|"uses encoding"| node_encoding
node_smfdecode -->|"logs errors"| node_errors
node_mainproc -->|"logs errors"| node_errors
node_mdlbin -->|"shows dialogs"| node_appearance
node_vehicle -->|"shows dialogs"| node_appearance

click node_entry "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/main.py"
click node_mainui "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/main/mainGui.py"
click node_mainproc "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/main/mainProcess.py"
click node_vehicle "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/orgInfoEditor/orgInfoEditorGui.py"
click node_vehicleproc "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/orgInfoEditor/orgInfoEditorProcess.py"
click node_vehicledecode "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/orgInfoEditor/dendDecrypt/RSdecrypt.py"
click node_mdlbin "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlBin/mdlBinGui.py"
click node_mdlbinproc "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlBin/mdlBinProcess.py"
click node_mdlbindecode "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlBin/dendDecrypt/decrypt.py"
click node_mdlinfo "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlinfo/mdlinfoGui.py"
click node_mdlinfodecode "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlinfo/dendDecrypt/decrypt.py"
click node_comic "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/comicscript/comicscriptGui.py"
click node_comicdecode "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/comicscript/dendDecrypt/decrypt.py"
click node_music "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/musicEditor/musicEditorGui.py"
click node_fvt "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/fvtMaker/fvtMakerGui.py"
click node_rail "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/railEditorGui.py"
click node_raildata "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/importPy/tab8/railListWidget.py"
click node_railamb "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/importPy/tab11/ambListWidget.py"
click node_raildecode "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/dendDecrypt/CSdecrypt.py"
click node_rsrail "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/rsRail/rsRailGui.py"
click node_smf "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/smf/smfGui.py"
click node_smfdecode "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/smf/dendDecrypt/decrypt.py"
click node_ssunity "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/ssUnity/ssUnityGui.py"
click node_ssprocess "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/ssUnity/ssUnityProcess.py"
click node_appearance "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/appearance/customMessageBoxWidget.py"
click node_commands "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/cmdList.py"
click node_encoding "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/encodingClass.py"
click node_errors "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/errorLogClass.py"
click node_text "https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/textSetting.py"

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_entry,node_mainui,node_mainproc,node_user toneBlue
class node_vehicle,node_vehicleproc,node_vehicledecode,node_mdlbin,node_mdlbinproc,node_mdlbindecode,node_mdlinfo,node_mdlinfodecode,node_comic,node_comicdecode,node_music,node_fvt,node_rail,node_raildata,node_railamb,node_raildecode,node_rsrail toneAmber
class node_smf,node_smfdecode,node_ssunity,node_ssprocess toneMint
class node_appearance,node_commands,node_encoding,node_errors,node_text toneRose
```

## Components

### Application shell

- [Application entry](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/main.py): `main.py`
- [Main window](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/main/mainGui.py): `program/main/mainGui.py`
- [Main services](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/main/mainProcess.py): `program/main/mainProcess.py`

### Data editors

- [Vehicle editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/orgInfoEditor/orgInfoEditorGui.py): `program/sub/orgInfoEditor/orgInfoEditorGui.py`
- [Vehicle processing](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/orgInfoEditor/orgInfoEditorProcess.py): `program/sub/orgInfoEditor/orgInfoEditorProcess.py`
- [Vehicle decoders](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/orgInfoEditor/dendDecrypt/RSdecrypt.py): `program/sub/orgInfoEditor/dendDecrypt/RSdecrypt.py`
- [Model binary editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlBin/mdlBinGui.py): `program/sub/mdlBin/mdlBinGui.py`
- [Model binary processing](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlBin/mdlBinProcess.py): `program/sub/mdlBin/mdlBinProcess.py`
- [Model binary decoder](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlBin/dendDecrypt/decrypt.py): `program/sub/mdlBin/dendDecrypt/decrypt.py`
- [MDLINFO editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlinfo/mdlinfoGui.py): `program/sub/mdlinfo/mdlinfoGui.py`
- [MDLINFO decoder](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/mdlinfo/dendDecrypt/decrypt.py): `program/sub/mdlinfo/dendDecrypt/decrypt.py`
- [Comic script editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/comicscript/comicscriptGui.py): `program/sub/comicscript/comicscriptGui.py`
- [Comic script decoder](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/comicscript/dendDecrypt/decrypt.py): `program/sub/comicscript/dendDecrypt/decrypt.py`
- [BGM list editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/musicEditor/musicEditorGui.py): `program/sub/musicEditor/musicEditorGui.py`
- [FVT creator](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/fvtMaker/fvtMakerGui.py): `program/sub/fvtMaker/fvtMakerGui.py`
- [Rail editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/railEditorGui.py): `program/sub/railEditor/railEditorGui.py`
- [Rail data editors](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/importPy/tab8/railListWidget.py): `program/sub/railEditor/importPy/tab8/railListWidget.py`
- [Rail AMB editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/importPy/tab11/ambListWidget.py): `program/sub/railEditor/importPy/tab11/ambListWidget.py`
- [Rail decoders](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/railEditor/dendDecrypt/CSdecrypt.py): `program/sub/railEditor/dendDecrypt/CSdecrypt.py`
- [RS rail and AMB](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/rsRail/rsRailGui.py): `program/sub/rsRail/rsRailGui.py`

### Asset tools

- [SMF editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/smf/smfGui.py): `program/sub/smf/smfGui.py`
- [SMF decoder](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/smf/dendDecrypt/decrypt.py): `program/sub/smf/dendDecrypt/decrypt.py`
- [SS/Unity editor](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/ssUnity/ssUnityGui.py): `program/sub/ssUnity/ssUnityGui.py`
- [SS/Unity processing](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/ssUnity/ssUnityProcess.py): `program/sub/ssUnity/ssUnityProcess.py`

### Shared services

- [Custom dialogs](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/appearance/customMessageBoxWidget.py): `program/sub/appearance/customMessageBoxWidget.py`
- [Command definitions](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/cmdList.py): `program/sub/cmdList.py`
- [Text encoding](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/encodingClass.py): `program/sub/encodingClass.py`
- [Error logging](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/errorLogClass.py): `program/sub/errorLogClass.py`
- [Text settings](https://github.com/khttemp/dend-mod-gui-pyside6/blob/main/program/sub/textSetting.py): `program/sub/textSetting.py`

### Other components

- **User**

## Connections

- User → Main window: selects tool (evidence: `README.md`)
- Application entry → Main window: starts (evidence: `main.py`)
- Main window → Main services: reads settings (evidence: `program/main/mainGui.py`)
- Main window → Vehicle editor: opens (evidence: `program/main/mainGui.py`)
- Main window → Model binary editor: opens (evidence: `program/main/mainGui.py`)
- Main window → MDLINFO editor: opens (evidence: `program/main/mainGui.py`)
- Main window → Comic script editor: opens (evidence: `program/main/mainGui.py`)
- Main window → BGM list editor: opens (evidence: `program/main/mainGui.py`)
- Main window → FVT creator: opens (evidence: `program/main/mainGui.py`)
- Main window → Rail editor: opens (evidence: `program/main/mainGui.py`)
- Main window → RS rail and AMB: opens (evidence: `program/main/mainGui.py`)
- Main window → SMF editor: opens (evidence: `program/main/mainGui.py`)
- Main window → SS/Unity editor: opens (evidence: `program/main/mainGui.py`)
- Model binary editor → Model binary decoder: uses decoder (evidence: `program/sub/mdlBin/mdlBinGui.py`)
- Model binary editor → Model binary processing: delegates to (evidence: `program/sub/mdlBin/mdlBinGui.py`)
- MDLINFO editor → MDLINFO decoder: uses decoder (evidence: `program/sub/mdlinfo/mdlinfoGui.py`)
- Comic script editor → Comic script decoder: uses decoder (evidence: `program/sub/comicscript/comicscriptGui.py`)
- Comic script editor → Command definitions: uses commands (evidence: `program/sub/comicscript/comicscriptGui.py`)
- Vehicle editor → Vehicle processing: delegates to (evidence: `program/sub/orgInfoEditor/orgInfoEditorGui.py`)
- Vehicle editor → Vehicle decoders: uses decoder (evidence: `program/sub/orgInfoEditor/orgInfoEditorGui.py`)
- Rail editor → Rail data editors: uses editor (evidence: `program/sub/railEditor/railEditorGui.py`)
- Rail editor → Rail AMB editor: uses editor (evidence: `program/sub/railEditor/railEditorGui.py`)
- Rail editor → Rail decoders: uses decoder (evidence: `program/sub/railEditor/railEditorGui.py`)
- SMF editor → SMF decoder: uses decoder (evidence: `program/sub/smf/smfGui.py`)
- SS/Unity editor → SS/Unity processing: delegates to (evidence: `program/sub/ssUnity/ssUnityGui.py`)
- SMF decoder → Text encoding: uses encoding (evidence: `program/sub/smf/dendDecrypt/decrypt.py`)
- SMF decoder → Error logging: logs errors (evidence: `program/sub/smf/dendDecrypt/decrypt.py`)
- Main services → Error logging: logs errors (evidence: `program/main/mainProcess.py`)
- Model binary editor → Custom dialogs: shows dialogs (evidence: `program/sub/mdlBin/mdlBinGui.py`)
- Vehicle editor → Custom dialogs: shows dialogs (evidence: `program/sub/orgInfoEditor/orgInfoEditorGui.py`)
