====== WvdS VSCode Projects ======
La Projects Extension gestisce i progetti Pascal in VS Code. Offre template di progetto, dialoghi di configurazione e gestione delle solution.
===== Funzione e scopo =====
La Projects Extension consente:
* **Template di progetto** - Creazione rapida di nuovi progetti
* **Gestione progetti** - Apertura, configurazione, amministrazione
* **Solution multi-progetto** - Più progetti in un unico workspace
* **Impostazioni progetto** - GUI per opzioni del compilatore
===== Comandi =====
^ Comando ^ Descrizione ^
| ''WvdS Projects: New Project (Quick)'' | Crea un progetto con impostazioni predefinite |
| ''WvdS Projects: New Project from Template...'' | Mostra il dialogo di selezione template |
| ''WvdS Projects: Open Project'' | Apre un progetto esistente |
| ''WvdS Projects: Project Settings...'' | Apre il dialogo delle impostazioni progetto |
===== Template di progetto =====
L'estensione include template predefiniti per vari tipi di progetto:
==== Desktop Console ====
Semplice applicazione console per strumenti da riga di comando e servizi.
**File generati:**
MyProject/
MyProject.lpr -- Programma principale
**Codice di esempio:**
program MyProject;
{$mode objfpc}{$H+}
uses
SysUtils;
begin
WriteLn('Hello, World!');
end.
**Casi d'uso:**
* Strumenti CLI e utility
* Elaborazione batch
* Servizi server
* Script di build
==== Desktop GUI ====
Applicazione desktop nativa con LCL (Lazarus Component Library).
**File generati:**
MyProject/
MyProject.lpr -- Programma principale
MainForm.pas -- Unit del form principale
MainForm.lfm -- Design del form
**Prerequisiti:**
* Lazarus installato (per LCL)
* lazbuild disponibile
**Casi d'uso:**
* Applicazioni desktop
* Frontend per database
* Programmi utility con GUI
==== Desktop Library ====
Shared Library (DLL/SO) per sistemi di plugin o integrazione esterna.
**File generati:**
MyProject/
MyProject.lpr -- Progetto libreria
**Codice di esempio:**
library MyProject;
{$mode objfpc}{$H+}
uses
SysUtils;
procedure HelloWorld; cdecl;
begin
WriteLn('Hello from library!');
end;
exports
HelloWorld;
begin
end.
**Casi d'uso:**
* Plugin per altre applicazioni
* Codice condiviso tra progetti
* Integrazione con altri linguaggi (C, Python, ecc.)
==== TUI App ====
Terminal User Interface - interfaccia utente basata su testo.
**File generati:**
MyProject/
MyProject.lpr -- Programma principale
TuiMain.pas -- Unit TUI principale
**Casi d'uso:**
* Amministrazione server
* Strumenti compatibili con SSH
* Applicazioni a basso consumo di risorse
* Cross-platform senza dipendenze GUI
==== Web PWA ====
Progressive Web App con pas2js - eseguita nel browser.
**File generati:**
MyProject/
MyProject.lpr -- Programma principale (diventa JS)
index.html.tmpl -- Template HTML
manifest.json.tmpl-- Manifest PWA
sw.js -- Service Worker
**Prerequisiti:**
* pas2js installato
**Casi d'uso:**
* Applicazioni web
* App cross-platform
* Applicazioni offline-capable
==== VSCode Extension ====
Estensione VS Code in Pascal, transpilata con pas2js.
**File generati:**
MyExtension/
extension_main.pas -- Entry Point
package.json.tmpl -- Manifest dell'estensione
**Prerequisiti:**
* pas2js installato
* Node.js per vsce (Packaging)
**Casi d'uso:**
* Estensioni VS Code personalizzate
* Strumenti IDE e automazione
* Integrazione con la suite WvdS
==== Installer (Inno Setup) ====
Installer Windows per applicazioni desktop.
**File generati:**
MyInstaller/
MyInstaller.iss -- Script Inno Setup
**Prerequisiti:**
* Inno Setup installato
**Casi d'uso:**
* Pacchetti di installazione Windows
* Aggiornamenti automatici
* Deployment aziendale
===== Impostazioni progetto =====
Il dialogo ''WvdS Projects: Project Settings...'' offre un'interfaccia grafica per:
==== Impostazioni generali ====
* **Nome progetto** - Nome del progetto
* **Directory di output** - Dove vengono scritti i file compilati
* **Percorsi unit** - Percorsi di ricerca aggiuntivi per le unit
==== Opzioni del compilatore ====
* **Target Platform** - windows-x86, windows-x64, linux-x64, ...
* **Ottimizzazioni** - Livello 0-3
* **Simboli di debug** - Attivare per il debugging
* **Assertion** - Controlli a runtime
==== Dipendenze ====
* **Clausole Uses** - Unit gestite automaticamente
* **Percorsi librerie** - Percorsi a librerie esterne
===== Workspace multi-progetto =====
I workspace di VS Code possono contenere più progetti:
MyWorkspace.code-workspace
MyApp/ -- Applicazione desktop
MyLib/ -- Libreria condivisa
MyTests/ -- Unit test
==== Creare un workspace ====
- ''File'' -> ''Add Folder to Workspace...''
- Aggiungete tutte le cartelle dei progetti
- ''File'' -> ''Save Workspace As...''
==== Selezionare un progetto ====
Con più progetti:
- Aprite un file del progetto desiderato
- Oppure: selezionate il progetto nel Project Explorer
===== Menu contestuale =====
Clic destro sui file .lpi/.lpr nell'Explorer mostra:
* ''WvdS Projects: Project Settings...''
===== Risoluzione dei problemi =====
==== Il dialogo template non si apre ====
**Causa:** Estensione non attivata o errore.
**Soluzione:**
- Verificate se l'estensione è installata
- Controllate la Developer Console per errori
- Riavviate VS Code
==== Il progetto non viene riconosciuto ====
**Causa:** Nessun file .lpr, .dpr o .pas nella cartella.
**Soluzione:**
- Assicuratevi che esista un file principale
- Aprite la cartella con ''File'' -> ''Open Folder...''
==== Le impostazioni del progetto non vengono salvate ====
**Causa:** Permessi di scrittura mancanti o configurazione errata.
**Soluzione:**
- Controllate i permessi di scrittura nella cartella del progetto
- Verificate settings.json per errori di sintassi
===== Dettagli tecnici =====
^ Proprietà ^ Valore ^
| Extension ID | wvds.wvds-vscode-projects |
| Attivazione | workspaceContains:/*.lpr, onLanguage:pascal |
| Dipendenze | wvds-vscode-core |
| Min. VS Code | 1.85.0 |
===== Vedere anche =====
* [[.:core|Core Extension - Configurazione toolchain]]
* [[.:build|Build Extension - Compilazione]]
* [[.:designer|UI Designer - Sviluppo PXAML]]