GTK (toolkit)
GTK+ (acronimo che sta per GIMP ToolKit) è un toolkit (insieme di strumenti, di cui il principale è la libreria libgtk) per la creazione di interfacce grafiche. Sviluppato in C, supporta nativamente l'ambiente grafico X Window System e Microsoft Windows ed è software libero (parte del progetto GNU) secondo la licenza LGPL.
GTK+ software | |
---|---|
![]() | |
![]() | |
Genere | Libreria grafica (non in lista) |
Sviluppatore | GNOME Foundation e progetto GNU |
Data prima versione | 14 aprile 1998 |
Ultima versione | 3.22.15 (11 maggio 2017 | )
Sistema operativo | Linux Microsoft Windows macOS |
Linguaggio | C |
Licenza | LGPL 2.1 (licenza libera) |
Lingua | Multilingue |
Sito web | gtk.org/ |
Il toolkit, progettato inizialmente come ausilio alla programmazione per il noto programma di grafica GIMP, ha acquisito popolarità scavalcando Motif e divenendo parte fondamentale dell'ambiente desktop GNOME.
Linguaggio
GTK+ usa il linguaggio di programmazione C esteso, grazie a GLib e GObject, al paradigma della programmazione orientata agli oggetti. GTK+ fornisce binding per linguaggi come il C++, il Perl, il Ruby, il Java e Python (PyGTK). Altri hanno aggiunto anche il supporto ad altri linguaggi come Ada, Fortran, D, Haskell, Pascal, PHP, Pike e C# grazie a Mono (Gtk#).
Codice non collegato alla grafica
GTK+ inizialmente conteneva alcune funzioni di utilità che non riguardavano strettamente la grafica, per esempio la fornitura di strutture dati come liste concatenate e alberi binari. Tali utilità generali, insieme con il sistema a oggetti chiamato GObject, ora sono stati migrati in una libreria (GLib) separata, che i programmatori possono utilizzare per sviluppare codice che non necessita di una interfaccia grafica. Un tipico esempio di questo approccio è il progetto GStreamer. GLib è comunque mantenuta dagli sviluppatori di GTK+.
Per la sua estendibilità, portabilità e bontà tecnica è stata scelta come componente per altri widget toolkit, come wxWidgets.
Piattaforme
In origine la GTK+ era destinata solo all'X Window System, che comunque rimane la piattaforma di riferimento. Attualmente può essere installata su Microsoft Windows (dalla versione 2.8 è richiesto Windows 2000 o superiore), DirectFB, e Quartz (Mac OS X Tiger o superiore, ancora in sviluppo).
Aspetto
L'utente finale può configurare l'aspetto dell'interfaccia a suo piacimento grazie alla possibilità di cambiare il tema utilizzato. Si possono così emulare le sembianze di altre librerie o di altri ambienti, tra i quali Windows 95, Motif, Qt o NEXTSTEP.
Storia GTK+ 2
GTK+ 2 si è sviluppata con l'intenzione di sostituire e migliorare la GTK+. Tra le nuove caratteristiche[1], inserite gradualmente già dalla GTK+ originale, si segnalano:
- un gestore dei temi (introdotto già dalla versione 1.2.0 ma rielaborato successivamente per consentire la personalizzazione di ogni singolo elemento grafico)
- una gestione migliorata del rendering del testo internazionale con Pango (introdotto nella versione 1.3.1)
- una API più flessibile a seguito dello spostamento della logica ad oggetti nella libreria GObject (dalla versione 1.3.1)
- la completa transizione a Unicode con l'adozione di stringhe UTF-8 (dalla versione 1.3.2)
- accessibilità ai disabili migliorata con l'uso della libreria ATK (a partire dalla versione 1.3.5)
Tuttavia, GTK+ 2 non è compatibile con GTK+ 1, ed i programmatori devono migrare il loro vecchio codice.
A partire dalla versione 2.8, GTK+ 2 dipende dalla libreria Cairo per il rendering dell'interfaccia mediante grafica vettoriale 2D.
Rilasci
Versione Famiglia | Data iniziale rilascio | Principale miglioramento | Ultima versione minore |
---|---|---|---|
1.0 | 14 aprile 1998 | Prima versione stabile | 1.0.6 |
1.2 | 27 febbraio 1999 | Nuovi widget (GtkFontSelector, GtkPacker, GtkItemFactory, GtkCTree, GtkInvisible, GtkCalendar, GtkLayout, GtkPlug, GtkSocket) | 1.2.10 |
2.0 | 11 marzo 2002 | Spostato gestione ad oggetti in GLib (GObject) e supporto unicode con codifica UTF-8 | 2.0.9 |
2.2 | 22 dicembre 2002 | Supporto multihead | 2.2.4 |
2.4 | 16 marzo 2004 | Nuovi widget (GtkFileChooser, GtkComboBox, GtkComboBoxEntry, GtkExpander, GtkFontButton, GtkColorButton) | 2.4.14 |
2.6 | 16 dicembre 2004 | Nuovi widget (GtkIconView, GtkAboutDialog e GtkCellView) | 2.6.10 |
2.8 | 13 agosto 2005 | Integrazione con cairo | 2.8.20 |
2.10 | 3 luglio 2006 | Nuovi widget (GtkStatusIcon, GtkAssistant, GtkLinkButton, GtkRecentChooser) e supporto per la stampa (GtkPrintOperation) | 2.10.14 |
2.12 | 14 settembre 2007 | Nuovo sistema per la generazione dell'interfaccia da un file XML (GtkBuilder) | 2.12.12 |
2.14 | 4 settembre 2008 | Supporto caricamento JPEG2000 e sealing opzionale delle proprietà (non sono più pubbliche) | 2.14.7 |
2.16 | 13 marzo 2009 | Novità GtkOrientable, Caps Lock warning nell'inserimento di password. Miglioramenti in GtkScale, GtkStatusIcon, GtkFileChooser. | 2.16.6 |
2.18 | 25 settembre 2009 | Novità GtkInfoBar, GtkLabel con URL incorporati, client-side windows. Miglioramenti in GtkEntry, GtkBuilder, GtkFileChooser e nell'interfaccia di stampa. |
2.18.8 |
2.20 | 23 marzo 2010 | Novità GtkSpinner, GtkCellRendererSpinner, GtkOffscreenWindow. Miglioramenti in GtkFileChooser,nella gestione della tastiera e i dati di introspezione di GDK son ora inclusi in GTK+. |
2.20.1 |
2.22 | 23 settembre 2010 | gdk-pixbuf spostato in un modulo a parte, le operazioni di disegno di GDK sono ora completamente effettuate da Cairo, molti dati interni sono stati resi privati e possono essere nascosti in preparazione di GTK+3. | 2.22.0 |
2.24 | 30 gennaio 2011 | Aggiunto un nuovo widget per le ComboBox (GtkComboBoxText), il backend della stampa delle tazze può inviare i processi di stampa in PDF, GtkBuilder ha ottenuto il supporto ai tag di testo e ai menu dei toolbuttons e molte correzioni delle annotazioni di introspezione sono state aggiunte. | 2.24.12 |
3.0 | 10 febbraio 2011 | Cairo, meno dipendenza da X11, XInput2, API dei temi CSS-based | 3.0.12 |
3.2 | 25 settembre 2011 | Nuovi backend sperimentali di Wayland e HTML5, nuovo dialogo di scelta del font, nuovi widgets: GtkLockButton e GtkOverlay | 3.2.4 |
3.4 | 26 marzo 2012 | Menu di supporto in GtkApplication, Un nuovo selettore del colore, aggiunto supporto ai dispositivi touch, aggiunto supporto allo scorrimento continuo, GtkScrolledWindow farà lo scrolling cinetico con dispositivi touch, supporto a OS X migliorato, questa è la prima versione di GTK+ 3 che funziona bene su Windows, Il backend di Wayland è stato aggiornato alla versione corrente delle API Wayland ed è molto più completo ora, i pulsanti di rotazione hanno ricevuto un nuovo look, Accessibilità: Il supporto all'accesso alla visualizzazione a struttura è stato riscritto e funziona molto meglio ora, supporto più completo ai temi CSS. | 3.4.4 |
3.6 | 24 settembre 2012 | GtkSearchEntry, GtkMenuButton, GtkLevelBar. Pulsanti di rotazione verticale. animazioni CSS, ombre sfocate. Support alla dissolvenza incrociata e alle transizioni nei temi. | 3.6.3 |
Usi
Ambienti che usano GTK+
Le librerie GTK+ sono parte integrante del progetto GNOME e sono perciò le fondamenta dell'interfaccia utente di ogni programma sviluppato per GNOME. La versatilità e la relativa leggerezza hanno consentito alle GTK+ di essere alla base di altri desktop environment considerati più leggeri. Infatti esiste una versione di GNOME dedicata agli ambienti embedded GNOME Mobile. Ad oggi sono usate per i seguenti ambienti:
- GNOME è basato su GTK+, quindi le applicazioni GNOME usano GTK+
- Xfce è basato su GTK+, anche se le sue applicazioni tipicamente non dipendono da molte librerie (questa è la differenza tra quello che è marcato “applicazione GNOME” e quello che è semplicemente “applicazione GTK+”).
- LXDE è basato su GTK+, l'acronimo significa "Lightweight X11 Desktop Environment"
- ROX Desktop è un desktop leggero, con funzioni che provengono dalla GUI del RISC OS
- GPE Palmtop Environment Linux sui palmari e Familiar Linux
- Maemo (Ambiente TabletPC-Internet Nokia)
- Access Linux Platform (successore della piattaforma Palm OS PDA)
- One Laptop per Child il progetto caritatevole "Un laptop per ogni bambino" usa GTK+ e PyGTK
- Openmoko telefono, GPS e palmare Linux, utilizza GTK+ per l'interfaccia fin dalla prima versione anche se nelle ultime distribuzioni supporta anche QT ed Enlightenment.
Non è necessario usare questi ambienti grafici per eseguire programmi GTK+. Se un programma richiede le librerie e queste sono installate, può funzionare anche su altri ambienti basati su X11, come KDE; Questo comprende Mac OS X se X11.app è installato. GTK+ può funzionare anche su Microsoft Windows, ed è utilizzato da alcune popolari applicazioni cross-platform come GIMP e Pidgin. wxWidgets, un cross-platform GUI toolkit, usa GTK+ su tutti i sistemi Unix. Alcuni port tra i più insoliti sono DirectFB e ncurses.
Window managers
Applicazioni scritte usando GTK+
Alcune significative applicazioni multipiattaforma con codice aperto che usano GTK+ come widgets toolkit:
- CinePaint (ex FilmGimp) - Editor di immagini Raster HDR
- Ekiga (ex GnomeMeeting) - H.323/SIP VoIP softphone
- Evolution - Mailer
- GIMP - Editor di immagini Raster
- gMplayer - Player Video multiformato
- GStreamer - server per applicazioni multimediali (usa solo GLib/GObject)
- Inkscape - Editor di immagini vettoriali SVG
- K-3D - Modellatore 3D con animazione
- Mozilla Seamonkey - Internet suite (Browser, Mailer, HTML Editor, Chat)
- Mozilla Firefox - Browser
- Mozilla Thunderbird - Mailer
- Netscape - Internet suite (Browser, Mailer, HTML Editor, Chat)
- Pidgin (ex GAIM) - Programma di Chat multiprotocollo
- VMware Server 1.x - Macchina Virtuale
- Wireshark (ex Ethereal) - Sniffer, decodifica e analizzatore di pacchetti
Note
- ^ (EN) Novità introdotte nella Gtk+ 2, su codice sorgente della Gtk. URL consultato il 14 maggio 2008.
Altri progetti
- Wikimedia Commons contiene immagini o altri file su GTK
Collegamenti esterni
- (EN) Sito ufficiale, su gtk.org.
- Template:Collegamenti software
Controllo di autorità | VIAF (EN) 179958458 · LCCN (EN) n2001062971 · GND (DE) 4618256-1 |
---|