====== Razvojno okolje ======
Pregled projektne strukture in pomembnih poti za WvdS FPC RAD Studio.
**Tilda (~)** predstavlja korensko mapo repozitorija (npr. ''%WORKSPACE%/WvdS.FPC''). Vse poti uporabljajo poševnice naprej.
===== Projektna struktura =====
~/
├── sources/ # SSOT - verzioniran (SVN)
│ ├── common/ # Deljene enote/knjižnice (FPC + pas2js)
│ │ ├── core/ # Osnovne enote (brez UI)
│ │ ├── ui/ # UI ogrodje
│ │ │ ├── controls/ # Osnovni kontrolniki
│ │ │ ├── components/ # Sestavljene komponente
│ │ │ ├── runtime/ # PXAML izvajalno okolje
│ │ │ └── targets/ # Upodabljalniki (tui/gui/web)
│ │ └── web/ # Mostovi gostitelja (samo pas2js)
│ │ ├── nodejs/ # Node.js API-ji
│ │ └── vscode/ # VSCode Extension API-ji
│ ├── extensions/ # VSIX paketi
│ ├── applications/ # Produkti/Demo aplikacije
│ ├── tools/ # wvds-build, pxamlc
│ └── packages/ # IDE paketi
│
├── binaries/ # Izhodne datoteke gradnje - NISO verzioniran
│ ├── out/ # Izhodne datoteke gradnje
│ ├── cache/ # Predpomnilnik prevajalnika
│ ├── dist/ # Izdajni artefakti (.vsix)
│ └── logs/ # Poročila gradnje, razhroščevalni dnevniki
│
└── assets/ # Statični viri
===== Projektne poti =====
^ Spremenljivka ^ Pot ^ Opis ^
| ''~'' | Korenski imenik repozitorija | ''%WORKSPACE%/WvdS.FPC'' |
| ''~/sources'' | Izvorna koda | Edini vir resnice |
| ''~/sources/common'' | Deljena koda | Združljiva s FPC + pas2js |
| ''~/sources/extensions'' | VSIX razširitve | VSCode paketi |
| ''~/sources/applications'' | Aplikacije | RAD Suite, Demo aplikacije |
| ''~/binaries'' | Izhod gradnje | Odvržljivo, ponovno generirano |
| ''~/binaries/dist'' | Izdaja | .vsix, namestitveni programi |
| ''~/binaries/logs'' | Dnevniki | Poročila gradnje, razhroščevalni dnevniki |
| ''~/assets'' | Viri | Ikone, predloge |
===== Okoljske spremenljivke =====
Te spremenljivke so **nadomestki** in jih je treba prilagoditi lokalnemu razvojnemu okolju. Absolutne poti se je treba izogibati v konfiguracijskih datotekah.
^ Spremenljivka ^ Privzeta vrednost ^ Opis ^
| ''%LAZARUS%'' | Namestitev Lazarusa | npr. ''C:\Lazarus'' ali ''/opt/lazarus'' |
| ''%PROGRAMFILES%'' | Program Files | Windows: ''C:\Program Files'' |
| ''%USERPROFILE%'' | Uporabniški imenik | Windows: ''C:\Users\{ime}'', Linux: ''~'' |
| ''%WORKSPACE%'' | Delovni imenik | Po meri uporabnika, npr. ''E:\Workspace'' |
===== Prevajalnik in orodna veriga =====
^ Spremenljivka ^ Relativna pot ^ Opis ^
| FPC | ''%LAZARUS%/fpc/3.3.1/bin'' | Free Pascal Compiler |
| FPC-SRC | ''%LAZARUS%/fpc/3.3.1/source'' | FPC izvorna koda |
| PAS2JS | ''%LAZARUS%/fpc/3.3.1/bin/pas2js.exe'' | Pascal v 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 vezave |
| P2J-VSCODE | ''%LAZARUS%/fpc/pas2js-windows-2.2.0/packages/vscode'' | VSCode vezave |
===== Zunanje reference =====
Te poti so **opcijske** in relevantne samo za razvijalce, ki želijo preučevati referenčne implementacije.
^ Spremenljivka ^ Relativna pot ^ 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 izvorna koda |
| VSCODE-SRC | ''%WORKSPACE%/3rd/vscode-main'' | VSCode izvorna koda |
===== Dokumentacija =====
^ Spremenljivka ^ Relativna pot ^ Opis ^
| DOKUWIKI | ''%DOKUWIKI_DATA%/pages/de/int/vsce/fpc'' | DokuWiki strani |
| SKILLS | ''%WORKSPACE%/WvdS.Rihtlinien'' | Definicije veščin |
===== SSOT pravila =====
**Edini vir resnice** - Ta pravila so obvezujoča!
- **''~/sources/''** je edini vir za verzionno kodo
- **''~/binaries/''** je popolnoma odvržljiv in ponovno generirani
- **Nikoli** ne podvajajte izvajalne kode v ''~/sources/extensions/''
- **Nikoli** ne potrjujte generiranih datotek v ''~/sources/''
===== Struktura izhodnih datotek gradnje =====
~/binaries/out/{app}/{target}/{mode}/
├── gen/ # Generirana koda (ui.generated.pas)
├── bin/ # Izvršljive datoteke / JS paket
├── assets/ # PXAML, slike, teme
├── build-plan.json # Konfiguracija gradnje
└── build-report.md # Protokol gradnje
^ Cilj ^ Prevajalnik ^ Izhod ^
| ''tui'' | FPC | Naravna konzola (Windows/Linux) |
| ''gui'' | FPC | Naravna namizna aplikacija (LCL/WinAPI) |
| ''web'' | pas2js | JavaScript paket |
^ Način ^ Opis ^
| ''debug'' | Razhroščevalni simboli, brez optimizacije |
| ''release'' | Optimizirano, odstranjeni simboli |
| ''profile'' | Release + profiliranje |
===== Struktura razširitve =====
~/sources/extensions/wvds.vscode.{name}/
├── pas/
│ ├── extension_main.pas # Vstopna točka (OBVEZNO)
│ ├── {Feature}.Models.pas # Podatkovne strukture
│ ├── {Feature}.Service.pas # Poslovna logika
│ └── {Feature}.Dialog.pas # UI (opcijsko)
│
├── dist/
│ ├── extension_main.js # Prevedeni JS
│ └── extension_main.js.map # Izvorna karta
│
├── templates/ # WebView predloge
├── images/ # Ikone
├── package.json # VSCode manifest
├── build.cfg # Konfiguracija gradnje
└── README.md # Dokumentacija
===== Glejte tudi =====
* [[.:architektur|Pregled arhitekture]]
* [[.:build-pipeline|Cevovod gradnje]]
* [[.:extension-entwicklung|Razvoj razširitev]]