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