====== WvdS FPC RAD Studio - Dokumentacija za razvijalce ======
//Interna dokumentacija za razvijalce WvdS FPC RAD Suite//
Ta dokumentacija je namenjena **internim razvijalcem** paketa, ne uporabnikom. Za uporabniško dokumentacijo glejte [[..:p:start|Javna dokumentacija]].
===== Pregled =====
WvdS FPC RAD Studio je paket razširitev za Visual Studio Code, ki je v celoti napisan v Pascalu in s pas2js preveden v JavaScript.
==== Temeljna načela ====
* **Brez TypeScript** - Vse razširitve temeljijo na Pascalu
* **SSOT** - Enoten vir resnice v ''sources/''
* **Ločevanje odgovornosti** - Stroga slojevita arhitektura
* **Skladnost s KRITIS/NIS2** - Varnost kot osnovna zahteva
===== Kazalo dokumentacije =====
==== Arhitektura ====
^ Dokument ^ Vsebina ^
| [[.:architektur|Pregled arhitekture]] | Struktura monorepo, sloji, odvisnosti |
| [[.:umgebung|Razvojno okolje]] | Struktura projekta, poti, pravila SSOT |
| [[.:pxaml-pipeline|Cevovod PXAML]] | Od označevanja do IR do upodabljanja |
| [[.:extension-architektur|Arhitektura razširitev]] | Vstopne točke, aktivacija, storitve |
| [[.:targets|Cilji gradnje]] | GUI, TUI, Web - razlike in skupne točke |
==== Razvoj ====
^ Dokument ^ Vsebina ^
| [[.:extension-entwicklung|Razvoj razširitev]] | Ustvarjanje nove razširitve, najboljše prakse |
| [[.:control-entwicklung|Razvoj kontrolnikov]] | 7-koračni potek dela za UI kontrolnike |
| [[.:code-konventionen|Konvencije kode]] | Poimenovanje, struktura, dokumentacija |
| [[.:sicherheit|Varnostne smernice]] | OWASP, KRITIS, revizija |
| [[.:i18n|Internacionalizacija]] | Resourcestrings, prevodi |
| [[.:debugging|Razhroščevanje]] | Debug logging, analiza napak |
==== Gradnja in izdaja ====
^ Dokument ^ Vsebina ^
| [[.:build-pipeline|Cevovod gradnje]] | Prevajanje s pas2js, CLI orodja, artefakti |
| [[.:pack-struktur|Struktura paketov]] | Paketi tretjih oseb, manifesti, distribucija |
| [[.:testing|Testiranje]] | Enotski testi, integracijski testi |
| [[.:release|Postopek izdaje]] | Verzioniranje, ustvarjanje VSIX, objava |
==== Razvoj TUI ====
^ Dokument ^ Vsebina ^
| [[.:tui-entwicklung|Pregled TUI]] | Arhitektura, zahteve kakovosti, kdaj uporabiti TUI |
| [[.:tui-engine|TUI Engine]] | CellBuffer, DiffEngine, upodabljanje brez utripanja |
| [[.:tui-controls|TUI kontrolniki]] | Vzorec Model+Renderer, stanja, vnos, fokus |
| [[.:tui-layout|TUI postavitev]] | Sidranje, odzivnost, prelomne točke, vsebniki |
==== Zagotavljanje kakovosti ====
^ Dokument ^ Vsebina ^
| [[.:qualitaetssicherung|Pregled QA]] | Potek dela, matrika profilov, revizijski postopki |
| [[.:audit-core|Kontrolni seznam Core]] | Production-Ready, obravnava napak, beleženje |
| [[.:audit-sicherheit|Varnostni kontrolni seznam]] | KRITIS/NIS2, OWASP, Crypto |
| [[.:audit-codequalitaet|Kontrolni seznam kakovosti kode]] | Poimenovanje, funkcije, DRY, SSOT |
| [[.:kommentierung|Standardi komentiranja]] | PasDoc, Doc-Comments, pregled |
| [[.:audit-vscode|Kontrolni seznam VSCode]] | Specifično za razširitve, pas2js |
==== API referenca ====
^ Dokument ^ Vsebina ^
| [[.:core-api|Core API]] | Skupne storitve, dostop do orodij |
| [[.:meta-api|Meta API]] | Register komponent, IntelliSense ponudnik |
| [[.:vscode-wrapper|VSCode Wrapper]] | Enote WvdS.VSCode.* |
==== Knjižnica kontrolnikov ====
^ Dokument ^ Vsebina ^
| [[.:control-bibliothek|Katalog kontrolnikov]] | Vseh 108 kontrolnikov z DevExpress preslikavo |
| [[.:control-architektur|Arhitektura kontrolnikov]] | Vzorec Properties/ViewInfo/Control |
| [[.:control-vsix-erstellen|Ustvarjanje VSIX]] | Ročno ustvarjanje razširitve kontrolnika |
| [[.:control-generierung|Generiranje kontrolnikov]] | Serijsko generiranje s PowerShell |
==== API referenca kontrolnikov ====
^ Dokument ^ Vsebina ^
| [[.:api-controls-basic|Osnovni kontrolniki]] | Label, Button, CheckBox, itd. (12) |
| [[.:api-controls-editors|Urejevalniki]] | TextEdit, SpinEdit, DateEdit, itd. (18) |
| [[.:api-controls-navigation|Navigacija]] | TabControl, Wizard, NavBar, itd. (7) |
| [[.:api-controls-data|Podatkovni kontrolniki]] | DataGrid, TreeList, PivotGrid, itd. (10) |
| [[.:api-controls-charts|Grafikoni]] | LineSeries, PieSeries, Sparkline, itd. (16) |
| [[.:api-controls-gauges|Merilniki]] | CircularGauge, LED, Thermometer, itd. (10) |
| [[.:api-controls-layout|Postavitev]] | LayoutControl, DockingManager, itd. (10) |
| [[.:api-controls-bars|Vrstice/Trak]] | RibbonControl, StatusBar, itd. (10) |
| [[.:api-controls-specialized|Specializirani]] | Scheduler, Spreadsheet, Map, itd. (15) |
===== Hiter začetek za nove razvijalce =====
==== 1. Nastavitev razvojnega okolja ====
# Kloniraj repozitorij
git clone https://github.com/ArmandoFilho/WvdS.FPC.git
cd WvdS.FPC
# Odpri VS Code
code .
==== 2. Namestitev orodij ====
Zahtevano:
* Free Pascal Compiler 3.2.2+
* pas2js 2.2.0+
* Node.js 18+ (za vsce)
* VS Code 1.85.0+
Opcijsko:
* lazbuild (za LCL projekte)
* Inno Setup (za Windows namestitvene programe)
==== 3. Prvo prevajanje ====
cd sources/extensions/wvds.vscode.core
pas2js -Jc -Jirtl.js -Tbrowser -Fu../../common -FE./dist extension_main.pas
==== 4. Testiranje razširitve ====
- ''F5'' v VS Code za zagon Extension Development Host
- Odpre se novo okno VS Code z naloženimi razširitvami
- Ukazna paleta: ''WVDS: Hello'' za testiranje
===== Struktura repozitorija =====
WvdS.FPC/
├── sources/ # SSOT - Verzionirano
│ ├── common/ # Skupne enote
│ │ ├── core/ # Osnovne enote
│ │ ├── ui/ # UI ogrodje
│ │ └── web/ # Host Bridges (Node, VSCode)
│ ├── extensions/ # VSIX razširitve
│ │ ├── wvds.vscode.core/
│ │ ├── wvds.vscode.build/
│ │ ├── wvds.vscode.projects/
│ │ ├── wvds.vscode.packaging/
│ │ ├── wvds.vscode.ui.designer/
│ │ ├── wvds.vscode.ui.meta/
│ │ └── wvds.vscode.ui.preview/
│ ├── applications/ # Samostojne aplikacije
│ ├── tools/ # CLI orodja (wvds-build, itd.)
│ └── packages/ # IDE paketi
│
├── binaries/ # Izhod gradnje (ni verzionirano)
│ ├── out/ # Prevedeni artefakti
│ ├── cache/ # Predpomnilnik prevajalnika
│ ├── dist/ # Izdajni paketi
│ └── logs/ # Dnevniki gradnje
│
└── .claude/ # Konfiguracija Claude
└── CLAUDE.md # Pravila repozitorija
===== Pravila politike =====
Ta pravila so **neizpogajljiva** in jih preverja wvds-lint:
==== P0: Enoten vir resnice ====
DOVOLJENO: sources/common/WvdS.System.pas
PREPOVEDANO: sources/extensions/wvds.vscode.core/WvdS.System.pas (Dvojnik!)
==== P1: Brez TypeScript ====
DOVOLJENO: *.pas -> pas2js -> *.js
PREPOVEDANO: *.ts, ročno napisan *.js
==== P2: Wrapperji samo v common ====
DOVOLJENO: sources/common/web/vscode/VSCode.API.pas
PREPOVEDANO: sources/extensions/wvds.vscode.build/VSCode.API.pas
==== P3: Samostojen izhod ====
dist/extension_main.js mora vsebovati vse potrebne enote
===== Kontakti =====
* **Repozitorij:** [[https://github.com/ArmandoFilho/WvdS.FPC|github.com/ArmandoFilho/WvdS.FPC]]
* **Težave:** [[https://github.com/ArmandoFilho/WvdS.FPC/issues|Poročila o napakah in zahteve za funkcije]]
* **Pregled kode:** Pull Requests preko GitHub
===== Naslednji koraki =====
* [[.:architektur|Podrobno razumevanje arhitekture]]
* [[.:extension-entwicklung|Razvoj prve razširitve]]
* [[.:code-konventionen|Usvojitev konvencij kode]]