====== 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]]