Lompat ke isi

GTK: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
HsfBot (bicara | kontrib)
k Bot: Perubahan kosmetika
Reno-Sifana (bicara | kontrib)
k Perbaikan Tata Bahasa
 
(46 revisi perantara oleh 10 pengguna tidak ditampilkan)
Baris 1: Baris 1:
{{Infobox software
{{Infobox software
| name = GTK+
| name = GTK
| logo = [[Berkas:GTK+ logo.svg|180px|Logo GTK+]]
| logo = GTK logo.svg
| logo size = 64px
| author =Spencer Kimball, Peter Mattis, eXperimental Computing Facility (XCF)
| developer = GNOME Foundation
| screenshot = Awf-2020-2.png
| caption = Contoh kumpulan widget GTK 3
| released = {{start date and age|1998|04|14}}
| author = Spencer Kimball, Peter Mattis
| latest release version = 3.90.8
| developer = The GNOME Project, eXperimental Computing Facility (XCF)
| latest release date = {{release date|2017|03|24}}
| released = {{start date and age|1998|04|14}}
| latest preview version = 3.89.3
| latest preview date = {{release date|2017|01|17}}
| latest release version = 4.2.0
| latest release date = {{release date|2021|03|30}}<ref name="latest stable">{{cite mailing list
| status = Aktif
| url = https://mail.gnome.org/archives/ftp-release-list/2021-March/msg00201.html
| programming language = [[C (bahasa pemrograman)|C]]
| title = gtk 4.2.0
| operating system = [[Linux]], [[Unix-like]], [[Microsoft Windows|Windows]], [[OS X]]
| genre = [[Widget toolkit]]
| date = 30 Maret 2021
| accessdate = 1 April 2021
| license = [[LGPL|GNU Lesser General Public License (GNU LGPL)]]
| last = Clasen
| website = [http://www.gtk.org/ www.gtk.org]
| first = Matthias
| mailinglist = GNOME Mail Services}}</ref>
| latest preview version = 4.1.0
| latest preview date = {{release date|2021|01|31}}<ref name="latest preview">{{cite mailing list
| url = https://mail.gnome.org/archives/ftp-release-list/2021-January/msg00100.html
| title = gtk 4.1.0
| date = 31 Januari 2021
| accessdate = 22 Februari 2021
| last = Clasen
| first = Matthias
| mailinglist = GNOME Mail Services}}</ref>
| status = Aktif
| programming language = [[C (bahasa pemrograman)|C]], [[CSS]]
| operating system = [[Linux]], [[Mirip Unix]], [[Microsoft Windows|Windows]], [[OS X]]
| genre = [[Peralatan gawit]]
| license = [[LGPL|LGPLv2.1+]]
| website = {{URL|https://www.gtk.org/}}
}}
}}


'''GTK+''' atau '''GIMP Toolkit''' adalah sebuah [[widget toolkit]] [[antar-platform]] untuk menghasilkan [[GUI]]. GTK+ adalah salah satu toolkit terpopular untuk [[Sistem X Window]], bersama-sama dengan [[Qt]].
'''GTK''' atau '''GIMP Toolkit''' adalah sebuah [[Peralatan gawit|toolkit gawit]] (''widget toolkit'') [[lintas platform]] untuk menghasilkan [[GUI]]. GTK adalah salah satu toolkit terpopuler untuk [[X Window System|Sistem X Window]] dan [[Wayland]], bersama-sama dengan [[Qt]].


GTK+ mulanya dibuat untuk [[GIMP|GNU Image Manipulation Program]], sebuah penyunting grafik raster, pada 1997 oleh [[Spencer Kimball]] dan [[Peter Mattis]], anggota [[XCF|eXperimental Computing Facility]] di [[University of California, Berkeley]].
GTK mulanya dibuat untuk [[GIMP|GNU Image Manipulation Program]], sebuah penyunting grafik raster, pada 1997 oleh [[Spencer Kimball]] dan [[Peter Mattis]], anggota [[XCF|eXperimental Computing Facility]] di [[University of California, Berkeley]].


Dilisensikan di bawah [[LGPL|GNU Lesser General Public License]], GTK+ adalah [[perangkat lunak bebas]] dan bagian dari [[Proyek GNU]].
Dilisensikan di bawah [[LGPL|GNU Lesser General Public License]], GTK adalah [[perangkat lunak bebas]] dan bagian dari [[Proyek GNU]].


== Desain ==
== Desain ==
{{main|Daftar ikatan bahasa untuk GTK}}{{Pemutakhiran|date=Maret 2021|reason=Untuk bagian "platform" dan "tampilan dan citarasa" perlu dimutakhirkan agar sesuai dengan perkembangan terbaru}}
GTK+ ditulis di dalam [[bahasa pemrograman C]], dan desainnya menggunakan [[sistem objek]] [[GObject]]. [[Platform]] [[GNOME]] menyediakan [[language binding]] untuk:
GTK ditulis di dalam [[bahasa pemrograman C]], dan desainnya menggunakan [[sistem objek]] [[GObject]]. Berikut adalah beberapa ''[[language binding]]'' (ikatan bahasa) untuk GTK:<ref>{{Cite web|url=https://www.gtk.org/docs/language-bindings/index|title=Language Bindings|website=The GTK Project|access-date=23 Februari 2021|archive-date=2023-06-25|archive-url=https://web.archive.org/web/20230625053241/https://www.gtk.org/docs/language-bindings/index|dead-url=no}}</ref>
* [[C++]] ([[gtkmm]])
* [[Perl]] ([[Gtk2-perl]])
* [[GJS (perangkat lunak)|GJS]] ([[JavaScript]])
* [[Ruby]] ([[Ruby-gnome2]])
* [[gotk3]] ([[Golang|Go]])
* [[Python (bahasa pemrograman)|Python]] ([[PyGTK]])
* [[Gtk-rs]] ([[Rust (bahasa pemrograman)|Rust]])
* [[gtk2-perl]] ([[Perl]])
* [[Java (bahasa pemrograman)|Java]] ([[Java-gnome]]) (tidak tersedia untuk [[Microsoft Windows]])
* [[C Sharp (bahasa pemrograman)|C#]] ([[Gtk Sharp|Gtk#]])
* [[GtkD]] ([[D (bahasa pemrograman)|D]])
* [[PHP]] ([[PHP-GTK]])
* [[gtkmm]] ([[C++]])
* [[PyGObject]] ([[Python (bahasa pemrograman)|Python]])
* Vala ([[Vala (bahasa pemrograman)|Vala]])


Yang lainnya telah menuliskan beberapa binding untuk banyak [[bahasa pemrograman]] lainnya (termasuk [[Ada (bahasa pemrograman)|Ada]], [[D (bahasa pemrograman)|D]]), [[Fortran]], [[Haskell (bahasa pemrograman)|Haskell]], [[Lua (bahasa pemrograman)|Lua]], [[Ocaml]], [[Pascal (bahasa pemrograman)|Pascal]], [[Pike (bahasa pemrograman)|Pike]], [[Javascript]] <ref>http://svn.gnome.org/viewvc/seed/</ref><ref>http://svn.gnome.org/viewvc/gjs/</ref><ref>http://svn.gnome.org/viewvc/gscript/</ref> [[Tcl (bahasa pemrograman)|Tcl]], [[Euphoria (bahasa pemrograman)|Euphoria]], dan semua bahasa pemrograman [[.NET Framework|.NET]]). [[GTK-server]] menyediakan antarmuka [[komunikasi antar-proses|IPC]] bagi GTK+ yang memungkinkannya digunakan dari beraneka bahasa dengan kapabilitas [[Input/output|I/O]], termasuk [[shell script]].<ref>http://www.gtk.org/language-bindings.html</ref> Binding untuk banyak bahasa dapat dibangkitkan secara automatik melalui GObject-introspection.
Yang lainnya telah menuliskan beberapa binding untuk banyak [[bahasa pemrograman]] lainnya (seperti [[C Sharp]], [[Fortran]], [[Haskell (bahasa pemrograman)|Haskell]], [[Java]], [[Lua (bahasa pemrograman)|Lua]], [[Ocaml]], [[Pascal (bahasa pemrograman)|Pascal]], [[Pike (bahasa pemrograman)|Pike]], [[PHP]], [[Ruby (bahasa pemrograman)|Ruby]], [[Tcl (bahasa pemrograman)|Tcl]], dan [[Euphoria (bahasa pemrograman)|Euphoria]]). [[GTK-server]] menyediakan antarmuka [[komunikasi antar-proses|IPC]] bagi GTK yang memungkinkannya digunakan dari beraneka bahasa dengan kapabilitas [[Input/output|I/O]], termasuk [[shell script]].<ref>{{Cite web |url=http://www.gtk.org/language-bindings.html |title=Salinan arsip |access-date=2009-04-21 |archive-date=2011-04-02 |archive-url=https://web.archive.org/web/20110402012219/http://www.gtk.org/language-bindings.html |dead-url=yes }}</ref> Binding untuk banyak bahasa dapat dibangkitkan secara automatik melalui GObject-introspection.


Salah satu languange binding untuk GTK yang menggunakan GObject-introspection diantaranya PyGObject, Vala, GJS dan seed.
Bahasa-bahasa purpose-written untuk GObject dan oleh karenanya juga, GTK+ menyertakan [[Vala (bahasa pemrograman)|Vala]] dan GOB.


Seperti [[Qt]], tetapi tidak sama dengan beberapa toolkit widget lainnya, GTK+ tidak didasarkan pada [[Intrinsics|Xt]]. Ini memungkinkan fleksibilitas dan memungkinkan GTK+ dapat digunakan pada semua platform yang tidak memiliki [[Sistem X Window]]. Tetapi, tanpa kebergantungan ini, GTK+ memiliki kelemahan akses terhadap basis data [[X resources]], cara tradisional untuk mengkustomisasi aplikasi-aplikasi [[X11]].
Seperti [[Qt]], tetapi tidak sama dengan beberapa toolkit widget lainnya, GTK tidak didasarkan pada [[Intrinsics|Xt]]. Ini memungkinkan fleksibilitas dan memungkinkan GTK dapat digunakan pada semua platform yang tidak memiliki [[Sistem X Window]]. Tetapi, tanpa kebergantungan ini, GTK memiliki kelemahan akses terhadap basis data [[X resources]], cara tradisional untuk mengkustomisasi aplikasi-aplikasi [[X11]].


GTK+ mulanya menyertakan beberapa rutin utilitas yang tidak secara tegas berhubungan dengan grafik, misalnya menyediakan beberapa [[struktur data]] sebagai daftar-daftar yang saling terpaut dan beberapa [[pohon biner]]. Utilitas-utilitas umum sedemikian, bersama-sama dengan sistem objek disebut [[GObject]], kini telah bermigrasi menjadi pustaka terpisah, [[GLib]], yang dapat digunakan para programer untuk mengembangkan kode yang tidak memerlukan antarmuka grafis.
GTK mulanya menyertakan beberapa rutin utilitas yang tidak secara tegas berhubungan dengan grafik, misalnya menyediakan beberapa [[struktur data]] sebagai daftar-daftar yang saling terpaut dan beberapa [[pohon biner]]. Utilitas-utilitas umum sedemikian, bersama-sama dengan sistem objek disebut [[GObject]], kini telah bermigrasi menjadi pustaka terpisah, [[GLib]], yang dapat digunakan para programer untuk mengembangkan kode yang tidak memerlukan antarmuka grafis.


=== Platform ===
=== Platform ===
GTK+ mulanya ditargetkan pada [[Sistem X Window]], dan masih menyisakan platform target utamanya. Platform lain yang ditargetkan adalah [[Microsoft Windows]] ([[Windows 2000]] dan yang lebih baru, hampir didukung sepenuhnya), [[DirectFB]], dan [[Quartz]] ([[Mac OS X v10.4]] dan yang lebih baru, masih dikembangkan).
GTK mulanya ditargetkan pada [[Sistem X Window]], dan masih menyisakan platform target utamanya. Platform lain yang ditargetkan adalah [[Microsoft Windows]] ([[Windows 2000]] dan yang lebih baru, hampir didukung sepenuhnya), [[DirectFB]], dan [[Quartz]] ([[Mac OS X v10.4]] dan yang lebih baru, masih dikembangkan).


=== Tampilan dan citarasa ===
=== Tampilan dan citarasa ===
Pengguna-akhir dapat mengonfigurasi tampilan toolkit-nya, hingga kepada pemberian sejumlah ''mesin'' tampilan yang berbeda. Mesin-mesin yang ada yang berupaya mengemulasi tampilan toolkit atau platform popular lainnya seperti [[Windows 95]], [[Motif (widget toolkit)|Motif]], [[Qt (toolkit)|Qt]] dan [[NEXTSTEP]].
Pengguna-akhir dapat mengonfigurasi tampilan toolkit-nya, hingga kepada pemberian sejumlah ''mesin'' tampilan yang berbeda. Mesin-mesin yang ada yang berupaya mengemulasi tampilan toolkit atau platform populer lainnya seperti [[Windows 95]], [[Motif (widget toolkit)|Motif]], [[Qt (toolkit)|Qt]] dan [[NEXTSTEP]].


== Sejarah ==
== Sejarah ==
Baris 52: Baris 71:
Mulai versi 2.8, GTK+ 2 bergantung kepada pustaka [[Cairo (graphics)|Cairo]] untuk merender grafik vektor pada GTK+ 2.
Mulai versi 2.8, GTK+ 2 bergantung kepada pustaka [[Cairo (graphics)|Cairo]] untuk merender grafik vektor pada GTK+ 2.


GTK+ 3.0 merupakan pembaruan besar yang dirilis pada bulan Februari 2011 sebagai pengganti dari GTK+ 2. Fitur-fitur utama barunya mencakup pembaruan penanganan perangkat input, API tema baru menggunakan [[Cascading Style Sheets|CSS]] untuk membuat tema, dukungan untuk memilih beberapa backend untuk GDK saat runtime, beberapa widget baru, dan masih banyak lagi.<ref>{{Cite web|title=February 2011 – GTK Development Blog|url=https://blog.gtk.org/2011/02/|language=en-US|access-date=2021-02-23|archive-date=2023-05-18|archive-url=https://web.archive.org/web/20230518234813/https://blog.gtk.org/2011/02/|dead-url=no}}</ref>
=== Rilis ===
<!--{{tabel}}-->


Huruf '+' pada GTK+ dihilangkan menjadi GTK saja pada saat [[Hackathon|Hackaton]].<ref>{{Cite web|title=Rename some references to GTK+ (d080be3e) · Commits · GNOME / gtk|url=https://gitlab.gnome.org/GNOME/gtk/commit/d080be3e5091c98d5171063a95d55c01170881f3|website=GitLab|language=en|access-date=2021-02-23|archive-date=2021-02-25|archive-url=https://web.archive.org/web/20210225124433/https://gitlab.gnome.org/GNOME/gtk/commit/d080be3e5091c98d5171063a95d55c01170881f3|dead-url=no}}</ref>
=== Pengembangan masa depan ===
''Projek Ridley'' adalah upaya untuk mengonsolidasi beberapa pustaka yang saat ini masih di luar GTK+, misalnya libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel, dan gtkglext.<ref>http://live.gnome.org/ProjectRidley</ref>


GTK 4 yang merupakan versi terbaru dari GTK, dirilis pada Desember 2020. GTK 4 menghadirkan fitur-fitur baru seperti perenderan menggunakan [[Vulkan (API)|Vulkan]], pembaruan untuk API [[Drag and Drop|drag-and-drop]], dukungan untuk shaders, dan masih banyak lagi.<ref>{{Cite web|title=GTK 4.0 – GTK Development Blog|url=https://blog.gtk.org/2020/12/16/gtk-4-0/|language=en-US|access-date=2021-02-23|archive-date=2023-05-28|archive-url=https://web.archive.org/web/20230528122452/https://blog.gtk.org/2020/12/16/gtk-4-0/|dead-url=no}}</ref>
Para pengembanga juga memperhatikan arah-arah baru pustaka, termasuk penghentian [[Application binary interface|ABI]], penghilangan komponen-komponen [[API]] yang diperselisihkan, dan menambahkan sistem [[scene graph]] yang utuh, sama dengan pustaka grafis [[Clutter (computing)|Clutter]], mengintegrasikan GTK+ secara utuh dengan [[OpenGL]].<ref>http://aruiz.typepad.com/siliconisland/2008/03/gtk-hackfest-20.html</ref><ref>http://mail.gnome.org/archives/gtk-devel-list/2008-March/msg00017.html</ref>


== GTK hello world ==
== GTK hello world ==
=== Sampel 1 ===
GTK [[Hello world program|hello world]] di [[Linux]]
<syntaxhighlight lang="c">
#include <gtk/gtk.h>

int main (int argc, char argv[])
{
gtk_init (&argc, &argv);
GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 400 , 400);
gtk_window_set_tile (GTK_WINDOW (window), "Hello World! ");
g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_main ();
return 0;
}
</syntaxhighlight>
=== Sampel 2 ===
<syntaxhighlight lang="c">
#include <gtk/gtk.h>

int main (int argc, char argv[])
{
gtk_init (&argc, &argv);
GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (window), 400 , 400);
gtk_window_set_tile (GTK_WINDOW (window), "Hello GTK!\nHello World GTK Sample");
g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_main ();
return 0;
}
</syntaxhighlight>


== Penggunaan ==
== Penggunaan ==
=== Lingkungan yang menggunakan GTK+ ===
=== Lingkungan yang menggunakan GTK ===
<!--{{GAMBAR - [[Layar cuplik]] [[GIMP]] 2.0. GTK+ bertanggung jawab untuk mengelola komponen antarmuka program ini, termasuk menu, tombol, medan input, dan lain-lain}}-->
<!--{{GAMBAR - [[Layar cuplik]] [[GIMP]] 2.0. GTK bertanggung jawab untuk mengelola komponen antarmuka program ini, termasuk menu, tombol, medan input, dan lain-lain}}-->
* [[GNOME]] didasarkan pada GTK+, artinya program-program GNOME menggunakan GTK+
* [[GNOME]] didasarkan pada GTK, artinya program-program GNOME menggunakan GTK
* [[Xfce]] didasarkan pada GTK+, meskipun aplikasi-aplikasinya biasanya tidak bergantung kepada banyak pustaka (inilah perbedaan antara sesuatu yang dicap sebagai "program GNOME" atau sebagai "program GTK+")
* [[Xfce]] didasarkan pada GTK, meskipun aplikasi-aplikasinya biasanya tidak bergantung kepada banyak pustaka (inilah perbedaan antara sesuatu yang dicap sebagai "program GNOME" atau sebagai "program GTK")
* [[LXDE]] didasarkan pada GTK+, singkatan untuk "Lightweight X11 Desktop Environment"
* [[LXDE]] didasarkan pada GTK, singkatan untuk "Lightweight X11 Desktop Environment"
* [[ROX Desktop]] adalah desktop yang ringan, dengan fitur-fitur dari [[GUI]]-nya [[RISC OS]]
* [[ROX Desktop]] adalah desktop yang ringan, dengan fitur-fitur dari [[GUI]]-nya [[RISC OS]]
* [[GPE Palmtop Environment]]
* [[GPE Palmtop Environment]]
* [[Maemo Platform|Maemo]] (framework tablet-internet [[Nokia]])
* [[Maemo Platform|Maemo]] (framework tablet-internet [[Nokia]])
* [[Access Linux Platform]] (pengganti platform [[Personal digital assistant|PDA]] [[Palm OS]])
* [[Access Linux Platform]] (pengganti platform [[Personal digital assistant|PDA]] [[Palm OS]])
* Projek [[XO-1 (laptop)|Satu Laptop Per Anak]] menggunakan GTK+ dan [[PyGTK]]
* Projek [[XO-1 (laptop)|Satu Laptop Per Anak]] menggunakan GTK dan [[PyGTK]]
* Projek [[Broncho]] (sebuah projek linux mobile)
* Projek [[Broncho]] (sebuah projek linux mobile)


Baris 80: Baris 126:


=== Aplikasi ===
=== Aplikasi ===
Beberapa aplikasi terkenal yang menggunakan GTK+ sebagai toolkit widget-nya adalah:
Beberapa aplikasi terkenal yang menggunakan GTK sebagai toolkit widget-nya adalah:
* [[AbiWord]] - Pengolah kata
* [[AbiWord]] - Pengolah kata
* [[CinePaint]] (bekas FilmGimp) - Penyunting grafik beranimasi [[High dynamic range imaging|HDR]] Raster
* [[CinePaint]] (bekas FilmGimp) - Penyunting grafik beranimasi [[High dynamic range imaging|HDR]] Raster
Baris 97: Baris 143:
* [[Pidgin (software)|Pidgin]] - Pesan instan
* [[Pidgin (software)|Pidgin]] - Pesan instan
* [[VMware Player]] - Mesin virtual
* [[VMware Player]] - Mesin virtual
* [[Wireshark]] - Analis, dekode, dan capture paket (diganti dengan [[Qt]] sejak versi 1.11.0<ref>{{Cite web|title=We’re switching to Qt. {{!}} Sniff free or die|url=https://blog.wireshark.org/2013/10/switching-to-qt/|language=en-US|access-date=2021-02-23|archive-date=2013-10-19|archive-url=https://web.archive.org/web/20131019164809/https://blog.wireshark.org/2013/10/switching-to-qt/|dead-url=no}}</ref>)
* [[Wireshark]] - Analis, dekode, dan capture paket


== Lihat pula ==
== Lihat pula ==
* [[Daftar toolkit widget]]
* [[Daftar toolkit widget|Daftar toolkit gawit]]
* [http://en.wiki-indonesia.club/wiki/Portal:Free_software Portal perangkat lunak bebas]
* [http://en.wiki-indonesia.club/wiki/Portal:Free_software Portal perangkat lunak bebas] {{Webarchive|url=https://web.archive.org/web/20230625000052/https://en.wiki-indonesia.club/wiki/Portal:Free_software |date=2023-06-25 }}
* [http://en.wikibooks.org/wiki/X_Window_Programming/GTK+ Buku wiki tentang GTK+]
* [http://en.wikibooks.org/wiki/X_Window_Programming/GTK+ Buku wiki tentang GTK] {{Webarchive|url=https://web.archive.org/web/20230118211705/https://en.wikibooks.org/wiki/X_Window_Programming/GTK%2B |date=2023-01-18 }}


== Referensi ==
== Referensi ==
Baris 108: Baris 154:


== Pranala luar ==
== Pranala luar ==
* [http://www.gtk.org/ Situs web GTK+]
* [http://www.gtk.org/ Situs web GTK] {{Webarchive|url=https://web.archive.org/web/20110222211023/http://www.gtk.org/ |date=2011-02-22 }}
* [http://expander.gtk.org/ Planet GTK+]
* [http://expander.gtk.org/ Planet GTK] {{Webarchive|url=https://web.archive.org/web/20080913233410/http://expander.gtk.org/ |date=2008-09-13 }}
* [http://www.gtk-apps.org/ Daftar aplikasi GTK+]
* [http://www.gtk-apps.org/ Daftar aplikasi GTK] {{Webarchive|url=https://web.archive.org/web/20160624083231/http://gtk-apps.org/ |date=2016-06-24 }}


[[Kategori:GTK| ]]
[[Kategori:Projek GNU]]
[[Kategori:Projek GNU]]
[[Kategori:GTK]]
[[Kategori:Perangkat lunak projek GNU]]
[[Kategori:Perangkat lunak projek GNU]]
[[Kategori:Toolkit widget]]
[[Kategori:Antarmuka pemrograman aplikasi]]
[[Kategori:Antarmuka pemrograman aplikasi]]
[[Kategori:Pustaka dan toolkit pengembangan bebas]]
[[Kategori:Pustaka dan toolkit pengembangan bebas]]
[[Kategori:Pustaka berbasis-X]]
[[Kategori:Pustaka berbasis-X]]
[[Kategori:Perangkat lunak bebas yang diprogram dengan C]]
[[Kategori:Perangkat lunak bebas yang diprogram dengan C]]
[[Kategori:Perangkat lunak antar-platform]]
[[Kategori:Peralatan gawit]]
[[Kategori:Perangkat lunak lintas platform]]
[[Kategori:Pustaka GNOME]]

Revisi terkini sejak 6 Maret 2024 02.59

GTK
Contoh kumpulan widget GTK 3
TipeKerangka kerja aplikasi dan Peralatan gawit Edit nilai pada Wikidata
Versi pertama14 April 1998; 26 tahun lalu (1998-04-14)
Versi stabil
4.16.2 (24 September 2024) Edit nilai pada Wikidata
GenrePeralatan gawit
LisensiLGPLv2.1+
Bahasa
EponimGIMP Edit nilai pada Wikidata
Karakteristik teknis
Sistem operasiLinux, Mirip Unix, Windows, OS X
PlatformLintas platform Edit nilai pada Wikidata
Bahasa pemrogramanC (mul) Terjemahkan Edit nilai pada Wikidata
Informasi pengembang
PembuatSpencer Kimball, Peter Mattis
PengembangThe GNOME Project, eXperimental Computing Facility (XCF)
Informasi tambahan
Situs webwww.gtk.org
Stack ExchangeEtiqueta Edit nilai pada Wikidata
SourceForgegtk-mingw Edit nilai pada Wikidata
Free Software DirectoryGtk+ Edit nilai pada Wikidata
Panduan penggunaLaman panduan Edit nilai pada Wikidata
Sunting di Wikidata Sunting di Wikidata • Sunting kotak info • L • B
Info templat
Bantuan penggunaan templat ini

GTK atau GIMP Toolkit adalah sebuah toolkit gawit (widget toolkit) lintas platform untuk menghasilkan GUI. GTK adalah salah satu toolkit terpopuler untuk Sistem X Window dan Wayland, bersama-sama dengan Qt.

GTK mulanya dibuat untuk GNU Image Manipulation Program, sebuah penyunting grafik raster, pada 1997 oleh Spencer Kimball dan Peter Mattis, anggota eXperimental Computing Facility di University of California, Berkeley.

Dilisensikan di bawah GNU Lesser General Public License, GTK adalah perangkat lunak bebas dan bagian dari Proyek GNU.

GTK ditulis di dalam bahasa pemrograman C, dan desainnya menggunakan sistem objek GObject. Berikut adalah beberapa language binding (ikatan bahasa) untuk GTK:[3]

Yang lainnya telah menuliskan beberapa binding untuk banyak bahasa pemrograman lainnya (seperti C Sharp, Fortran, Haskell, Java, Lua, Ocaml, Pascal, Pike, PHP, Ruby, Tcl, dan Euphoria). GTK-server menyediakan antarmuka IPC bagi GTK yang memungkinkannya digunakan dari beraneka bahasa dengan kapabilitas I/O, termasuk shell script.[4] Binding untuk banyak bahasa dapat dibangkitkan secara automatik melalui GObject-introspection.

Salah satu languange binding untuk GTK yang menggunakan GObject-introspection diantaranya PyGObject, Vala, GJS dan seed.

Seperti Qt, tetapi tidak sama dengan beberapa toolkit widget lainnya, GTK tidak didasarkan pada Xt. Ini memungkinkan fleksibilitas dan memungkinkan GTK dapat digunakan pada semua platform yang tidak memiliki Sistem X Window. Tetapi, tanpa kebergantungan ini, GTK memiliki kelemahan akses terhadap basis data X resources, cara tradisional untuk mengkustomisasi aplikasi-aplikasi X11.

GTK mulanya menyertakan beberapa rutin utilitas yang tidak secara tegas berhubungan dengan grafik, misalnya menyediakan beberapa struktur data sebagai daftar-daftar yang saling terpaut dan beberapa pohon biner. Utilitas-utilitas umum sedemikian, bersama-sama dengan sistem objek disebut GObject, kini telah bermigrasi menjadi pustaka terpisah, GLib, yang dapat digunakan para programer untuk mengembangkan kode yang tidak memerlukan antarmuka grafis.

GTK mulanya ditargetkan pada Sistem X Window, dan masih menyisakan platform target utamanya. Platform lain yang ditargetkan adalah Microsoft Windows (Windows 2000 dan yang lebih baru, hampir didukung sepenuhnya), DirectFB, dan Quartz (Mac OS X v10.4 dan yang lebih baru, masih dikembangkan).

Tampilan dan citarasa

[sunting | sunting sumber]

Pengguna-akhir dapat mengonfigurasi tampilan toolkit-nya, hingga kepada pemberian sejumlah mesin tampilan yang berbeda. Mesin-mesin yang ada yang berupaya mengemulasi tampilan toolkit atau platform populer lainnya seperti Windows 95, Motif, Qt dan NEXTSTEP.

GTK+ 2 adalah pengganti GTK+ 1. Fitur-fitur barunya antara lain render teks yang diperbaiki menggunakan Pango, mesin tema baru, aksesibilitas yang diperbaiki menggunakan Accessibility Toolkit, peralihan sepenuhnya ke Unicode menggunakan string-string UTF-8 dan API yang lebih fleksibel. Tetapi, GTK+ 2 kurang kompatibel dengan GTK+ 1, dan para programer harus menge-port aplikasi ke GTK+ 2.

Mulai versi 2.8, GTK+ 2 bergantung kepada pustaka Cairo untuk merender grafik vektor pada GTK+ 2.

GTK+ 3.0 merupakan pembaruan besar yang dirilis pada bulan Februari 2011 sebagai pengganti dari GTK+ 2. Fitur-fitur utama barunya mencakup pembaruan penanganan perangkat input, API tema baru menggunakan CSS untuk membuat tema, dukungan untuk memilih beberapa backend untuk GDK saat runtime, beberapa widget baru, dan masih banyak lagi.[5]

Huruf '+' pada GTK+ dihilangkan menjadi GTK saja pada saat Hackaton.[6]

GTK 4 yang merupakan versi terbaru dari GTK, dirilis pada Desember 2020. GTK 4 menghadirkan fitur-fitur baru seperti perenderan menggunakan Vulkan, pembaruan untuk API drag-and-drop, dukungan untuk shaders, dan masih banyak lagi.[7]

GTK hello world

[sunting | sunting sumber]
#include <gtk/gtk.h>

int main (int argc, char argv[])
{
    gtk_init (&argc,  &argv);
    GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size (GTK_WINDOW (window), 400 , 400);
    gtk_window_set_tile (GTK_WINDOW (window), "Hello World! ");
    g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_main (); 
    return 0;
}
#include <gtk/gtk.h>

int main (int argc, char argv[])
{
    gtk_init (&argc,  &argv);
    GtkWidget * window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size (GTK_WINDOW (window), 400 , 400);
    gtk_window_set_tile (GTK_WINDOW (window), "Hello GTK!\nHello World GTK Sample");
    g_signal_connect (G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_main (); 
    return 0;
}

Penggunaan

[sunting | sunting sumber]

Lingkungan yang menggunakan GTK

[sunting | sunting sumber]

Pengelola jendela

[sunting | sunting sumber]

Beberapa aplikasi terkenal yang menggunakan GTK sebagai toolkit widget-nya adalah:

  • AbiWord - Pengolah kata
  • CinePaint (bekas FilmGimp) - Penyunting grafik beranimasi HDR Raster
  • Ekiga (bekas GnomeMeeting) - Perangkat lunak telepon VoIP H.323/SIP
  • Evolution - Alat kirim-terima surat elektronik
  • Firefox - alat selancar web
  • GIMP - Penyunting grafik raster
  • Gnumeric - Perangkat lunak lembar hampar
  • Chromium - Alat selancar web yang didasarkan pada Webkit dan sebagian besar dikembangkan oleh Google
  • GRAMPS - Perangkat lunak genealogi
  • Inkscape - Penyunting grafik vektor SVG
  • K-3D - Program animasi dan pemodelan 3-dimensi yang bebas
  • Marionnet - Simulator jejaring interaktif
  • Midori - Alat selancar web portabel
  • Nero Linux - Program autorisasi media cakram
  • Pidgin - Pesan instan
  • VMware Player - Mesin virtual
  • Wireshark - Analis, dekode, dan capture paket (diganti dengan Qt sejak versi 1.11.0[8])

Lihat pula

[sunting | sunting sumber]

Referensi

[sunting | sunting sumber]
  1. ^ Clasen, Matthias (30 Maret 2021). "gtk 4.2.0". GNOME Mail Services mailing list. https://mail.gnome.org/archives/ftp-release-list/2021-March/msg00201.html. Diakses pada 1 April 2021. 
  2. ^ Clasen, Matthias (31 Januari 2021). "gtk 4.1.0". GNOME Mail Services mailing list. https://mail.gnome.org/archives/ftp-release-list/2021-January/msg00100.html. Diakses pada 22 Februari 2021. 
  3. ^ "Language Bindings". The GTK Project. Diarsipkan dari versi asli tanggal 2023-06-25. Diakses tanggal 23 Februari 2021. 
  4. ^ "Salinan arsip". Diarsipkan dari versi asli tanggal 2011-04-02. Diakses tanggal 2009-04-21. 
  5. ^ "February 2011 – GTK Development Blog" (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 2023-05-18. Diakses tanggal 2021-02-23. 
  6. ^ "Rename some references to GTK+ (d080be3e) · Commits · GNOME / gtk". GitLab (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 2021-02-25. Diakses tanggal 2021-02-23. 
  7. ^ "GTK 4.0 – GTK Development Blog" (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 2023-05-28. Diakses tanggal 2021-02-23. 
  8. ^ "We're switching to Qt. | Sniff free or die" (dalam bahasa Inggris). Diarsipkan dari versi asli tanggal 2013-10-19. Diakses tanggal 2021-02-23. 

Pranala luar

[sunting | sunting sumber]