Il termine toolkit (letteralmente «cassetta degli attrezzi») in informatica è utilizzato per riferirsi ad un insieme di strumenti software di base, in genere librerie, usati per facilitare e uniformare lo sviluppo di applicazioni derivate più complesse.

La maggior parte dei toolkit widget include inoltre il proprio motore di rendering. Questo motore può essere specifico per un determinato sistema operativo o sistema a finestre o contenere back-end per interfacciarsi con più sistemi multipli e anche con API di rendering come OpenGL, OpenVG o EGL. L'aspetto degli elementi di controllo grafici può essere codificato o disaccoppiato, consentendo agli elementi di controllo grafici di essere a tema/skin.

Panoramica modifica

 
Una finestra che utilizza lo Standard Widget Toolkit

Alcuni toolkit possono essere utilizzati da altre lingue impiegando associazioni linguistiche. I costruttori di interfacce grafiche come ad esempio Glade Interface Designer facilitano la creazione di GUI in maniera WYSIWYG utilizzando un linguaggio di markup dell'interfaccia utente come in questo caso GtkBuilder.

La GUI di un programma è comunemente costruita in modo a cascata, con elementi di controllo grafici aggiunti direttamente uno sopra l'altro.

La maggior parte dei toolkit dei widget utilizza la programmazione guidata dagli eventi come modello di interazione[1]. Il toolkit gestisce gli eventi dell'utente, ad esempio quando l'utente fa clic su un pulsante. Quando viene rilevato un evento, viene trasmesso all'applicazione dove viene gestito. La progettazione di questi toolkit è stata criticata per aver promosso un modello di azione evento troppo semplificato, portando i programmatori a creare codice applicativo soggetto a errori, difficile da estendere ed eccessivamente complesso[2]. Le macchine a stati finiti e le macchine a stati gerarchiche sono state proposte come modelli di alto livello per rappresentare i cambiamenti di stato interattivi per programmi reattivi.

Sistemi di finestre modifica

Una finestra è considerata un elemento di controllo grafico. In alcuni sistemi a finestre, le finestre vengono aggiunte direttamente al grafico della scena (Canvas) dal gestore delle finestre e possono essere impilate e sovrapposte l'una sull'altra in vari modi. Ogni finestra è associata a una particolare applicazione che controlla i widget aggiunti alla sua tela, che possono essere guardati e modificati dalle applicazioni associate.

Layout manager modifica

I gestori di layout (layout manager) sono componenti software utilizzati nei toolkit widget che hanno la capacità di disporre gli elementi grafici di controllo in base alle loro posizioni relative senza utilizzare unità di distanza[3]. I toolkit di widget che forniscono questa funzione possono generalmente essere classificati in due gruppi:

  • Quelle in cui il comportamento del layout è codificato in appositi contenitori grafici. Questo è il caso di XUL e del toolkit widget di .NET Framework (sia in Windows Form che in XAML).
  • Quelli in cui il comportamento del layout è codificato nei gestori di layout, che possono essere applicati a qualsiasi contenitore grafico. Questo è il caso del toolkit del widget Swing che fa parte dell'API Java.

Esempio in XAML modifica

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      WindowTitle="myDock Panel">
  <DockPanel>
      <TextBlock DockPanel.Dock="Top">Top 1</TextBlock>
      <TextBlock DockPanel.Dock="Top">Top 2</TextBlock>
      <TextBlock DockPanel.Dock="Top">Top 3</TextBlock>
      <TextBlock DockPanel.Dock="Top">Top 4</TextBlock>
  </DockPanel>
</Page>

Toolkit usati da applicazioni famose modifica

Alcuni toolkit specifici sono:

Note modifica

  1. ^ Past, Present and Future of User Interface Software Tools. Brad Myers, Scott E. Hudson, Randy Pausch, Y Pausch. ACM Transactions on Computer-Human Interaction, 2000. [1]
  2. ^ Samek, Miro, Who Moved My State?, su ddj.com, C/C++ Users Journal, The Embedded Angle column, April 2003.
  3. ^ A Visual Guide to Layout Managers (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container), su docs.oracle.com. URL consultato il 4 marzo 2021.

Voci correlate modifica

Altri progetti modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica