====== Cilji gradnje ======
WvdS FPC RAD Studio podpira različne cilje gradnje za različne platforme.
===== Pregled =====
^ Cilj ^ Prevajalnik ^ Izhod ^ Izvajalno okolje ^
| GUI | FPC | Naravna binarna datoteka | Namizje (Windows/Linux/macOS) |
| TUI | FPC | Naravna binarna datoteka | Terminal |
| Web | pas2js | JavaScript | Brskalnik/Node.js |
| Extension | pas2js | JavaScript | VS Code Extension Host |
===== GUI cilj =====
Naravne namizne aplikacije z grafičnim uporabniškim vmesnikom.
==== Tehnologija ====
* **Prevajalnik:** Free Pascal Compiler (FPC)
* **UI ogrodje:** LCL (Lazarus Component Library)
* **Izhod:** .exe (Windows), binarna datoteka (Linux/macOS)
==== PXAML upodabljanje ====
PXAML → IR → GUI upodabljalnik → LCL kontrolniki
**Podprti kontrolniki:**
* Vsi standardni LCL kontrolniki
* WvdS kontrolniki po meri
* Naravni gradniki po platformah
==== Konfiguracija gradnje ====
[build]
target=gui
platform=windows-x64
[gui]
widgetset=win32 # ali: gtk2, qt5, cocoa
===== TUI cilj =====
Uporabniški vmesniki v terminalu za strežnike in CLI.
==== Tehnologija ====
* **Prevajalnik:** Free Pascal Compiler (FPC)
* **UI ogrodje:** WvdS TUI Framework
* **Izhod:** Naravna binarna datoteka z ANSI/VT100 izhodom
==== PXAML upodabljanje ====
PXAML → IR → TUI upodabljalnik → ANSI ubežne sekvence
**Podprti kontrolniki:**
* TextBlock, Label
* TextBox (enovrstični vnos)
* Button (s tipkovnično navigacijo)
* ListBox, Table
* ProgressBar
* Border, Panel
==== Konfiguracija gradnje ====
[build]
target=tui
platform=linux-x64
[tui]
colors=256 # ali: 16, truecolor
unicode=true
===== Web cilj =====
Brskalniške aplikacije prek pas2js transpilacije.
==== Tehnologija ====
* **Prevajalnik:** pas2js
* **Izhod:** JavaScript paket
* **Izvajanje:** Brskalnik, Electron, PWA
==== PXAML upodabljanje ====
PXAML → IR → Web upodabljalnik → DOM/CSS
**Podprti kontrolniki:**
* Vsi HTML naravni kontrolniki
* CSS osnovano oblikovanje
* Flexbox/Grid postavitev
==== Konfiguracija gradnje ====
[build]
target=web
platform=browser
[web]
minify=true
sourcemaps=true
===== Extension cilj =====
VS Code razširitve v Pascalu.
==== Tehnologija ====
* **Prevajalnik:** pas2js
* **Izhod:** CommonJS modul
* **Izvajanje:** VS Code Extension Host (Node.js)
==== Posebnosti ====
* Ni dostopa do DOM
* VSCode API na voljo
* WebView za UI
==== Konfiguracija gradnje ====
[build]
target=extension
platform=vscode
[extension]
minversion=1.85.0
===== Matrika platform =====
^ Funkcionalnost ^ GUI ^ TUI ^ Web ^ Extension ^
| Okna | Da | Ne | Da | WebView |
| Dialogi | Da | Omejeno | Da | Quick Input |
| Meniji | Da | Ne | Da | Contributes |
| Dostop do datotek | Da | Da | Omejeno | Da |
| Omrežje | Da | Da | CORS | Da |
| Večnitnost | Da | Da | Web Workers | Ne |
===== Deljenje kode =====
Skupna koda za vse cilje je v ''sources/common/'':
sources/common/
├── core/ # Osnovni tipi, pripomočki
├── ui/
│ ├── controls/ # Abstrakcija kontrolnikov
│ ├── runtime/ # PXAML izvajalno okolje
│ └── targets/
│ ├── gui/ # GUI specifično
│ ├── tui/ # TUI specifično
│ └── web/ # Web specifično
**Pogojna kompilacija:**
{$IFDEF TARGET_GUI}
uses LCLType, Forms;
{$ENDIF}
{$IFDEF TARGET_WEB}
uses JS, Web;
{$ENDIF}
{$IFDEF TARGET_TUI}
uses WvdS.TUI.Console;
{$ENDIF}
===== Glejte tudi =====
* [[.:architektur|Pregled arhitekture]]
* [[.:build-pipeline|Cevovod gradnje]]
* [[.:pxaml-pipeline|PXAML cevovod]]