GTK (toolkit): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Domenique43 (discussione | contributi)
Sezioni
Riga 19:
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]].
 
== LinguaggioEvoluzione storica ==
GTK usa il linguaggio di programmazione [[C (linguaggio)|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 (linguaggio di programmazione)|Ruby]], il [[Java (linguaggio di programmazione)|Java]] e [[Python]] ([[PyGTK]]). Altri hanno aggiunto anche il supporto ad altri linguaggi come [[Ada (linguaggio)|Ada]], [[Fortran]], [[D (linguaggio di programmazione)|D]], [[Haskell (linguaggio)|Haskell]], [[Pascal (linguaggio)|Pascal]], [[PHP]], [[Pike(linguaggio)|Pike]] e [[C sharp|C#]] grazie a [[Mono (progetto)|Mono]] (Gtk#). È anche possibile usare l'[[HTML5]] come output, visualizzando l'interfaccia su browser.<ref>{{Cita web|url=https://developer.gnome.org/gtk3/stable/gtk-broadway.html|titolo=Using GTK+ with Broadway: GTK+ 3 Reference Manual|sito=developer.gnome.org|accesso=2021-04-03}}</ref>
 
== Codice non collegato alla grafica ==
GTK inizialmente conteneva alcune funzioni di utilità che non riguardavano strettamente la grafica, come la fornitura di [[strutture dati]], [[lista concatenata|liste concatenate]] ed [[albero binario|alberi binari]]. Tali utilità generali, insieme al sistema a oggetti chiamato GObject, ora sono migrati in una libreria separata, [[GLib]], che i programmatori possono comunque utilizzare per sviluppare codici che non necessitano di una interfaccia grafica. Un tipico esempio di questo approccio è il progetto [[GStreamer]]. La libreria GLib è mantenuta dagli stessi sviluppatori di GTK.
 
Per la sua estendibilità, [[portabilità]] e bontà tecnica è stata scelta come componente per altri widget toolkit, come [[wxWidgets]].
 
== Piattaforme ==
In origine il toolkit GTK era destinato solo all'[[X Window System]], che comunque rimane la piattaforma di riferimento. Attualmente può essere installato su [[Microsoft Windows]] (dalla versione 2.8 è richiesto [[Windows 2000]] o superiore), [[DirectFB]], e [[Quartz (Mac OS X)|Quartz]] ([[Mac OS X Tiger]] o superiore, ancora in sviluppo) e anche col nuovo protocollo grafico di riferimento su GNU/Linux [[Wayland (protocollo)|Wayland]].
 
== Aspetto ==
[[File:Gedit-italiano.png|thumb|upright=1.3|L'[[editor di testo]] «''[[gedit]]''», realizzato con GTK+ 2]]
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 (toolkit)|Qt]] o [[NEXTSTEP|NeXTSTEP]]. I temi possono essere configurati dalla versione 3 tramite [[CSS]]<ref>{{Cita web|url=https://developer.gnome.org/gtk3/stable/chap-css-overview.html|titolo=GTK+ CSS Overview: GTK+ 3 Reference Manual|sito=developer.gnome.org|accesso=2021-04-03}}</ref> e possono gestire bordi arrotondati, animazioni e trasparenze.
 
GtkBuilder è il sistema per realizzare il layout delle interfacce grafiche senza scrivere codice. L'interfaccia grafica dell'applicazione è descritta in [[XML]], il file viene caricato all'avvio dell'applicazione e crea tutti gli oggetti grafici. L'editor [[Glade]] permette di costruire l'interfaccia grafica in modo [[WYSIWYG]]. I file di interfaccia XML sono indipendenti dal linguaggio usato dall'applicazione.
 
== Storia ==
 
=== GTK+ 2 ===
GTK+ 2 si è sviluppata con l'intenzione di sostituire e migliorare la GTK+. Tra le nuove caratteristiche<ref>{{cita web | titolo=Novità introdotte nella Gtk+ 2 | url=http://svn.gnome.org/viewvc/gtk%2B/trunk/NEWS?revision=6251&view=markup | sito=codice sorgente della Gtk | lingua=en |accesso=11 ottobre 2020 |urlarchivio=https://archive.is/T1eC |dataarchivio = 16 luglio 2012 | urlmorto=sì }}</ref>, inserite gradualmente già dalla GTK+ originale, si segnalano:
Riga 64 ⟶ 46:
Rilasciato nel settembre del 2020, rappresenta l'ultimo sviluppo di GTK.<ref>{{Cita web|url=https://blog.gtk.org/2020/12/16/gtk-4-0/|titolo=GTK 4.0 – GTK Development Blog|lingua=en-US|accesso=2021-04-03}}</ref> La nuova versione include un nuovo motore di rendering [[Vulkan (API)|Vulkan]] e [[OpenGL]], migliora il supporto per Wayland e migliori performance.<ref>{{Cita web|url=https://www.phoronix.com/scan.php?page=news_item&px=GTK-4.0-Released|titolo=GTK 4.0 Toolkit Officially Released|sito=www.phoronix.com|data=16 dicembre 2020|accesso=2021-04-03}}</ref>
 
=== RilasciCaratteristiche ===
=== Aspetto ===
[[File:Gedit-italiano.png|thumb|upright=1.3|L'[[editor di testo]] «''[[gedit]]''», realizzato con GTK+ 2]]
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 (toolkit)|Qt]] o [[NEXTSTEP|NeXTSTEP]]. I temi possono essere configurati dalla versione 3 tramite [[CSS]]<ref>{{Cita web|url=https://developer.gnome.org/gtk3/stable/chap-css-overview.html|titolo=GTK+ CSS Overview: GTK+ 3 Reference Manual|sito=developer.gnome.org|accesso=2021-04-03}}</ref> e possono gestire bordi arrotondati, animazioni e trasparenze.
 
GtkBuilder è il sistema per realizzare il layout delle interfacce grafiche senza scrivere codice. L'interfaccia grafica dell'applicazione è descritta in [[XML]], il file viene caricato all'avvio dell'applicazione e crea tutti gli oggetti grafici. L'editor [[Glade]] permette di costruire l'interfaccia grafica in modo [[WYSIWYG]]. I file di interfaccia XML sono indipendenti dal linguaggio usato dall'applicazione.
 
== Codice non collegato alla grafica ==
GTK inizialmente conteneva alcune funzioni di utilità che non riguardavano strettamente la grafica, come la fornitura di [[strutture dati]], [[lista concatenata|liste concatenate]] ed [[albero binario|alberi binari]]. Tali utilità generali, insieme al sistema a oggetti chiamato GObject, ora sono migrati in una libreria separata, [[GLib]], che i programmatori possono comunque utilizzare per sviluppare codici che non necessitano di una interfaccia grafica. Un tipico esempio di questo approccio è il progetto [[GStreamer]]. La libreria GLib è mantenuta dagli stessi sviluppatori di GTK.
 
Per la sua estendibilità, [[portabilità]] e bontà tecnica è stata scelta come componente per altri widget toolkit, come [[wxWidgets]].
 
=== Linguaggio ===
GTK usa il linguaggio di programmazione [[C (linguaggio)|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 (linguaggio di programmazione)|Ruby]], il [[Java (linguaggio di programmazione)|Java]] e [[Python]] ([[PyGTK]]). Altri hanno aggiunto anche il supporto ad altri linguaggi come [[Ada (linguaggio)|Ada]], [[Fortran]], [[D (linguaggio di programmazione)|D]], [[Haskell (linguaggio)|Haskell]], [[Pascal (linguaggio)|Pascal]], [[PHP]], [[Pike(linguaggio)|Pike]] e [[C sharp|C#]] grazie a [[Mono (progetto)|Mono]] (Gtk#). È anche possibile usare l'[[HTML5]] come output, visualizzando l'interfaccia su browser.<ref>{{Cita web|url=https://developer.gnome.org/gtk3/stable/gtk-broadway.html|titolo=Using GTK+ with Broadway: GTK+ 3 Reference Manual|sito=developer.gnome.org|accesso=2021-04-03}}</ref>
 
=== Piattaforme supportate ===
In origine il toolkit GTK era destinato solo all'[[X Window System]], che comunque rimane la piattaforma di riferimento. Attualmente può essere installato su [[Microsoft Windows]] (dalla versione 2.8 è richiesto [[Windows 2000]] o superiore), [[DirectFB]], e [[Quartz (Mac OS X)|Quartz]] ([[Mac OS X Tiger]] o superiore, ancora in sviluppo) e anche col nuovo protocollo grafico di riferimento su GNU/Linux [[Wayland (protocollo)|Wayland]].
 
== Utilizzo ==
{{Vedi categoria|Software in GTK+}}
=== 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 [https://web.archive.org/web/20110125101453/http://www.gnome.org/mobile/ 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]] [[Personal digital assistant|PDA]])
* [[One Laptop Per Child]] il progetto caritatevole "Un laptop per ogni bambino" usa GTK+ e [[PyGTK]]
* [[Openmoko (sistema operativo)|Openmoko]] telefono, GPS e palmare Linux, utilizza GTK per l'interfaccia fin dalla prima versione anche se nelle ultime distribuzioni supporta anche [[Qt (toolkit)|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]].
 
=== Gestori di finestre ===
* [[Metacity]] e [[Xfwm4]] usano GTK+ 2.
 
=== Applicazioni scritte con l'uso di GTK ===
[[File:Inkscape 1.1 screenshot.png|miniatura|Inkscape 1.1 con il logo di GTK vettoriale]]
Alcune significative applicazioni multipiattaforma con codice aperto che usano GTK come toolkit per widget:
* [[CinePaint]] (ex FilmGimp) - Editor di immagini Raster [[High dynamic range imaging|HDR]]
* [[Ekiga]] (ex GnomeMeeting) - H.323/SIP VoIP softphone
* [[Evolution (software)|Evolution]] - Client di posta elettronica
* [[GIMP]] - Editor di immagini Raster
* g[[Mplayer]] - Riproduttore video multiformato
* [[GStreamer]] - Server per applicazioni multimediali (usa solo GLib/GObject)
* [[Inkscape]] - Editor di immagini vettoriali SVG
* [http://www.k-3d.org/ K-3D] - Modellatore 3D con animazione
* [[SeaMonkey|Mozilla Seamonkey]] - Suite Internet (browser, client di posta, editor HTML, chat)
* [[Mozilla Firefox]] - Browser
* [[Mozilla Thunderbird]] - Client di posta elettronica
* [[Netscape]] - Internet suite (browser, client di posta, editor HTML, chat)
* [[Pidgin (software)|Pidgin]] (ex GAIM) - Programma di chat multiprotocollo
* [[VMware]] Server 1.x - Macchina virtuale
* [[Wireshark]] (ex Ethereal) - Sniffer, decodifica e analizzatore di pacchetti
 
== Cronologia delle versioni ==
{| class="wikitable"
! Versione Famiglia
Riga 177 ⟶ 216:
|-
|}
 
== Usi ==
{{Vedi categoria|Software in GTK+}}
=== 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 [https://web.archive.org/web/20110125101453/http://www.gnome.org/mobile/ 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]] [[Personal digital assistant|PDA]])
* [[One Laptop Per Child]] il progetto caritatevole "Un laptop per ogni bambino" usa GTK+ e [[PyGTK]]
* [[Openmoko (sistema operativo)|Openmoko]] telefono, GPS e palmare Linux, utilizza GTK per l'interfaccia fin dalla prima versione anche se nelle ultime distribuzioni supporta anche [[Qt (toolkit)|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]].
 
=== Gestori di finestre ===
* [[Metacity]] e [[Xfwm4]] usano GTK+ 2.
 
=== Applicazioni scritte con l'uso di GTK ===
[[File:Inkscape 1.1 screenshot.png|miniatura|Inkscape 1.1 con il logo di GTK vettoriale]]
Alcune significative applicazioni multipiattaforma con codice aperto che usano GTK come toolkit per widget:
* [[CinePaint]] (ex FilmGimp) - Editor di immagini Raster [[High dynamic range imaging|HDR]]
* [[Ekiga]] (ex GnomeMeeting) - H.323/SIP VoIP softphone
* [[Evolution (software)|Evolution]] - Client di posta elettronica
* [[GIMP]] - Editor di immagini Raster
* g[[Mplayer]] - Riproduttore video multiformato
* [[GStreamer]] - Server per applicazioni multimediali (usa solo GLib/GObject)
* [[Inkscape]] - Editor di immagini vettoriali SVG
* [http://www.k-3d.org/ K-3D] - Modellatore 3D con animazione
* [[SeaMonkey|Mozilla Seamonkey]] - Suite Internet (browser, client di posta, editor HTML, chat)
* [[Mozilla Firefox]] - Browser
* [[Mozilla Thunderbird]] - Client di posta elettronica
* [[Netscape]] - Internet suite (browser, client di posta, editor HTML, chat)
* [[Pidgin (software)|Pidgin]] (ex GAIM) - Programma di chat multiprotocollo
* [[VMware]] Server 1.x - Macchina virtuale
* [[Wireshark]] (ex Ethereal) - Sniffer, decodifica e analizzatore di pacchetti
 
== Note ==