Inhaltsverzeichnis

Meta API

Riferimento API per la WvdS VSCode UI Meta Extension.

Panoramica

La Meta Extension gestisce il registry dei componenti e fornisce servizi IntelliSense.

uses
  WvdS.Meta.Registry,
  WvdS.Meta.IntelliSense;

Registry Componenti

RegisterComponent

procedure RegisterComponent(const AInfo: TWvdSComponentInfo);

Registra un nuovo componente nel registry.

type
  TWvdSComponentInfo = record
    Name: string;           // es. 'Button'
    Description: string;    // Breve descrizione
    Category: string;       // es. 'Input', 'Layout'
    Namespace: string;      // es. 'WvdS.UI.Controls'
    Properties: TWvdSPropertyInfoArray;
    Events: TWvdSEventInfoArray;
  end;

Esempio:

var
  Info: TWvdSComponentInfo;
begin
  Info.Name := 'MyButton';
  Info.Description := 'Custom button with icon';
  Info.Category := 'Input';
  Info.Namespace := 'MyApp.Controls';
 
  SetLength(Info.Properties, 2);
  Info.Properties[0].Name := 'Content';
  Info.Properties[0].PropType := 'string';
  Info.Properties[0].DefaultValue := '';
 
  Info.Properties[1].Name := 'IconPath';
  Info.Properties[1].PropType := 'string';
  Info.Properties[1].DefaultValue := '';
 
  RegisterComponent(Info);
end;

GetComponent

function GetComponent(const AName: string): TWvdSComponentInfo;

Restituisce informazioni su un componente.

GetAllComponents

function GetAllComponents: TWvdSComponentInfoArray;

Restituisce tutti i componenti registrati.

GetComponentsByCategory

function GetComponentsByCategory(const ACategory: string): TWvdSComponentInfoArray;

Restituisce tutti i componenti di una categoria.

Informazioni Property

TWvdSPropertyInfo

type
  TWvdSPropertyInfo = record
    Name: string;           // Nome property
    PropType: string;       // 'string', 'number', 'boolean', ...
    Description: string;    // Documentazione
    DefaultValue: string;   // Valore predefinito
    Required: Boolean;      // Campo obbligatorio?
    EnumValues: TStringArray; // Per tipo Enum
  end;

GetPropertyInfo

function GetPropertyInfo(
  const AComponentName: string;
  const APropertyName: string
): TWvdSPropertyInfo;

Informazioni Event

TWvdSEventInfo

type
  TWvdSEventInfo = record
    Name: string;           // Nome event (es. 'Click')
    Description: string;    // Documentazione
    HandlerSignature: string; // es. 'procedure(Sender: TObject)'
  end;

Provider IntelliSense

GetCompletions

function GetCompletions(AContext: TWvdSCompletionContext): TWvdSCompletionItemArray;

Restituisce suggerimenti di completamento per una posizione.

type
  TWvdSCompletionContext = record
    DocumentUri: string;
    Position: TPosition;
    TriggerCharacter: Char;
    CurrentElement: string;
    CurrentAttribute: string;
  end;
 
  TWvdSCompletionItem = record
    Label: string;
    Kind: TWvdSCompletionKind;
    Detail: string;
    Documentation: string;
    InsertText: string;
  end;

GetHoverInfo

function GetHoverInfo(
  const ADocumentUri: string;
  APosition: TPosition
): TWvdSHoverInfo;

Restituisce documentazione hover per una posizione.

type
  TWvdSHoverInfo = record
    Contents: string;       // Contenuto Markdown
    Range: TRange;          // Range nel documento
  end;

Gestione Cache

RefreshRegistry

procedure RefreshRegistry;

Ricarica il registry e aggiorna la cache.

ClearCache

procedure ClearCache;

Cancella la cache dei componenti.

GetCachePath

function GetCachePath: string;

Restituisce il percorso alla directory cache.

Annotations

I componenti possono essere registrati tramite Annotations:

type
  ComponentInfoAttribute = class(TCustomAttribute)
    FName: string;
    FDescription: string;
    FCategory: string;
  public
    constructor Create(const AName, ADescription, ACategory: string);
  end;
 
  PropertyInfoAttribute = class(TCustomAttribute)
    FDescription: string;
    FDefaultValue: string;
  public
    constructor Create(const ADescription: string; const ADefault: string = '');
  end;

Utilizzo:

type
  {$M+}
  [ComponentInfo('MyButton', 'Button with icon', 'Input')]
  TMyButton = class(TWvdSButton)
  published
    [PropertyInfo('Path to icon image', '')]
    property IconPath: string read FIconPath write SetIconPath;
 
    [PropertyInfo('Button text', 'Click')]
    property Content: string read FContent write SetContent;
  end;

Vedi anche