====== Razvojno okruženje ======
Pregled strukture projekta i važnih putanja za WvdS FPC RAD Studio.
**Tilda (~)** predstavlja korijen repozitorija (npr. ''%WORKSPACE%/WvdS.FPC''). Sve putanje koriste Forward-Slasheve.
===== Struktura projekta =====
~/
├── sources/ # SSOT - verzionirano (SVN)
│ ├── common/ # Shared Units/Libs (FPC + pas2js)
│ │ ├── core/ # Bazne Units (bez UI)
│ │ ├── ui/ # UI Framework
│ │ │ ├── controls/ # Bazni Controls
│ │ │ ├── components/ # Composite Components
│ │ │ ├── runtime/ # PXAML Runtime
│ │ │ └── targets/ # Renderer (tui/gui/web)
│ │ └── web/ # Host Bridges (samo pas2js)
│ │ ├── nodejs/ # Node.js APIs
│ │ └── vscode/ # VSCode Extension APIs
│ ├── extensions/ # VSIX Packs
│ ├── applications/ # Proizvodi/Demos
│ ├── tools/ # wvds-build, pxamlc
│ └── packages/ # IDE Packages
│
├── binaries/ # Build Outputs - NIJE verzionirano
│ ├── out/ # Build outputs
│ ├── cache/ # Compiler caches
│ ├── dist/ # Release artifacts (.vsix)
│ └── logs/ # Build reports, debug logs
│
└── assets/ # Statički assets
===== Putanje projekta =====
^ Varijabla ^ Putanja ^ Opis ^
| ''~'' | Korijen repozitorija | ''%WORKSPACE%/WvdS.FPC'' |
| ''~/sources'' | Izvorni kod | Single Source of Truth |
| ''~/sources/common'' | Shared Code | FPC + pas2js kompatibilan |
| ''~/sources/extensions'' | VSIX Extensions | VSCode paketi |
| ''~/sources/applications'' | Aplikacije | RAD Suite, Demos |
| ''~/binaries'' | Build Output | Može se izbrisati, regenerabilno |
| ''~/binaries/dist'' | Release | .vsix, Installer |
| ''~/binaries/logs'' | Logs | Build-Reports, Debug-Logs |
| ''~/assets'' | Assets | Icons, Templates |
===== Varijable okruženja =====
Ove varijable su **placeholder** i moraju se prilagoditi lokalnom razvojnom okruženju. Apsolutne putanje treba izbjegavati u konfiguracijskim datotekama.
^ Varijabla ^ Standardna vrijednost ^ Opis ^
| ''%LAZARUS%'' | Lazarus-instalacija | npr. ''C:\Lazarus'' ili ''/opt/lazarus'' |
| ''%PROGRAMFILES%'' | Program Files | Windows: ''C:\Program Files'' |
| ''%USERPROFILE%'' | Korisnički direktorij | Windows: ''C:\Users\{name}'', Linux: ''~'' |
| ''%WORKSPACE%'' | Radni direktorij | Korisnički definirano, npr. ''E:\Workspace'' |
===== Compiler i Toolchain =====
^ Varijabla ^ Relativna putanja ^ Opis ^
| FPC | ''%LAZARUS%/fpc/3.3.1/bin'' | Free Pascal Compiler |
| FPC-SRC | ''%LAZARUS%/fpc/3.3.1/source'' | FPC izvorni kod |
| PAS2JS | ''%LAZARUS%/fpc/3.3.1/bin/pas2js.exe'' | Pascal u JavaScript |
| P2J-RTL | ''%LAZARUS%/fpc/pas2js-windows-2.2.0/packages/rtl'' | pas2js RTL |
| P2J-NODE | ''%LAZARUS%/fpc/pas2js-windows-2.2.0/packages/nodejs'' | Node.js Bindings |
| P2J-VSCODE | ''%LAZARUS%/fpc/pas2js-windows-2.2.0/packages/vscode'' | VSCode Bindings |
===== Vanjske reference =====
Ove putanje su **opcionalne** i relevantne samo za razvojne programere koji žele proučavati referentne implementacije.
^ Varijabla ^ Relativna putanja ^ Opis ^
| DXVCL | ''%WORKSPACE%/3rd/DevExpress/VCL'' | DevExpress VCL (Delphi) |
| DXNET | ''%PROGRAMFILES%/DevExpress 25.1/Components/Sources'' | DevExpress .NET |
| NODEJS-SRC | ''%WORKSPACE%/3rd/node-main'' | Node.js izvorni kod |
| VSCODE-SRC | ''%WORKSPACE%/3rd/vscode-main'' | VSCode izvorni kod |
===== Dokumentacija =====
^ Varijabla ^ Relativna putanja ^ Opis ^
| DOKUWIKI | ''%DOKUWIKI_DATA%/pages/de/int/vsce/fpc'' | DokuWiki stranice |
| SKILLS | ''%WORKSPACE%/WvdS.Rihtlinien'' | Skill-definicije |
===== SSOT-Pravila =====
**Single Source of Truth** - Ova pravila su obavezujuća!
- **''~/sources/''** je jedini izvor za verzionirani kod
- **''~/binaries/''** se može potpuno izbrisati i regenerirati
- **Nikada** ne duplicirajte Runtime-kod u ''~/sources/extensions/''
- **Nikada** ne commitajte generirane datoteke u ''~/sources/''
===== Build-Output Struktura =====
~/binaries/out/{app}/{target}/{mode}/
├── gen/ # Generirani kod (ui.generated.pas)
├── bin/ # Izvršne datoteke / JS Bundle
├── assets/ # PXAML, Images, Themes
├── build-plan.json # Build-Konfiguracija
└── build-report.md # Build-Protokol
^ Target ^ Compiler ^ Output ^
| ''tui'' | FPC | Native Console (Windows/Linux) |
| ''gui'' | FPC | Native Desktop (LCL/WinAPI) |
| ''web'' | pas2js | JavaScript Bundle |
^ Mode ^ Opis ^
| ''debug'' | Debug-simboli, bez optimizacije |
| ''release'' | Optimizirano, strippani simboli |
| ''profile'' | Release + Profiling |
===== Extension-Struktura =====
~/sources/extensions/wvds.vscode.{name}/
├── pas/
│ ├── extension_main.pas # Entry Point (OBAVEZNO)
│ ├── {Feature}.Models.pas # Strukture podataka
│ ├── {Feature}.Service.pas # Poslovna logika
│ └── {Feature}.Dialog.pas # UI (opcionalno)
│
├── dist/
│ ├── extension_main.js # Kompilirani JS
│ └── extension_main.js.map # Source Map
│
├── templates/ # WebView Templates
├── images/ # Icons
├── package.json # VSCode Manifest
├── build.cfg # Build-Konfiguracija
└── README.md # Dokumentacija
===== Vidi također =====
* [[.:architektur|Pregled arhitekture]]
* [[.:build-pipeline|Build-Pipeline]]
* [[.:extension-entwicklung|Razvoj Extensiona]]