Konten dihapus Konten ditambahkan
k Bot: Perubahan kosmetika
Reno-Sifana (bicara | kontrib)
k Perbaikan Tata Bahasa
 
(42 revisi perantara oleh 9 pengguna tidak ditampilkan)
Baris 1:
{{Infobox software
| name = GTK
| logo = [[Berkas:GTK+ logo.svg|180px|Logo GTK]]
| logo size = 64px
| author =Spencer Kimball, Peter Mattis, eXperimental Computing Facility (XCF)
| developer screenshot = GNOME FoundationAwf-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
| authordeveloper =Spencer Kimball,The PeterGNOME MattisProject, 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 version = {{release date|2017|01|17}}4.2.0
| latest release date = {{release date|20172021|03|2430}}<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]]
| genredate = 30 Maret = [[Widget toolkit]]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 releasepreview version = 34.901.80
| 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-like]], [[Microsoft Windows|Windows]], [[OS X]]
| genre = [[Peralatan gawit]]
| license = [[LGPL|GNU Lesser General Public License (GNU LGPL)LGPLv2.1+]]
| website = [http{{URL|https://www.gtk.org/ www.gtk.org]}}
}}
 
'''GTK''' atau '''GIMP Toolkit''' adalah sebuah [[widgetPeralatan gawit|toolkit gawit]] (''widget toolkit'') [[antar-lintas platform]] untuk menghasilkan [[GUI]]. GTK adalah salah satu toolkit terpopularterpopuler 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]].
Baris 24 ⟶ 41:
 
== 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]])
* [[PerlGJS (perangkat lunak)|GJS]] ([[Gtk2-perlJavaScript]])
* [[Rubygotk3]] ([[Ruby-gnome2Golang|Go]])
* [[PythonGtk-rs]] ([[Rust (bahasa pemrograman)|Python]] ([[PyGTKRust]])
* [[C++gtk2-perl]] ([[gtkmmPerl]])
* [[Java (bahasa pemrograman)|Java]] ([[Java-gnome]]) (tidak tersedia untuk [[Microsoft Windows]])
* [[CGtkD]] Sharp([[D (bahasa pemrograman)|C#]] ([[Gtk Sharp|Gtk#D]])
* [[PHPgtkmm]] ([[PHP-GTKC++]])
* [[PyGObject]] ([[Python (bahasa pemrograman)|Python]])
* Vala ([[Vala (bahasa pemrograman)|Vala]])
 
Yang lainnya telah menuliskan beberapa binding untuk banyak [[bahasa pemrograman]] lainnya (termasukseperti [[AdaC (bahasa pemrograman)|AdaSharp]], [[D (bahasa pemrograman)|D]]), [[Fortran]], [[Haskell (bahasa pemrograman)|Haskell]], [[Java]], [[Lua (bahasa pemrograman)|Lua]], [[Ocaml]], [[Pascal (bahasa pemrograman)|Pascal]], [[Pike (bahasa pemrograman)|Pike]], [[JavascriptPHP]] <ref>http://svn.gnome.org/viewvc/seed/</ref><ref>http://svn.gnome.org/viewvc/gjs/</ref><ref>http://svn.gnome.org/viewvc/gscript/</ref>, [[TclRuby (bahasa pemrograman)|TclRuby]], [[EuphoriaTcl (bahasa pemrograman)|EuphoriaTcl]], dan semua[[Euphoria (bahasa pemrograman [[.NET Framework)|.NETEuphoria]]). [[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]].
Baris 45 ⟶ 64:
 
=== 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 popularpopuler lainnya seperti [[Windows 95]], [[Motif (widget toolkit)|Motif]], [[Qt (toolkit)|Qt]] dan [[NEXTSTEP]].
 
== Sejarah ==
Baris 52 ⟶ 71:
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>
=== 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>
 
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>
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 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>
 
== 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 ==
Baris 94 ⟶ 143:
* [[Pidgin (software)|Pidgin]] - Pesan instan
* [[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 ==
* [[Daftar toolkit widget|Daftar toolkit gawit]]
* [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] {{Webarchive|url=https://web.archive.org/web/20230118211705/https://en.wikibooks.org/wiki/X_Window_Programming/GTK%2B |date=2023-01-18 }}
 
== Referensi ==
Baris 105 ⟶ 154:
 
== Pranala luar ==
* [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] {{Webarchive|url=https://web.archive.org/web/20080913233410/http://expander.gtk.org/ |date=2008-09-13 }}
* [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:Perangkat lunak projek GNU]]
[[Kategori:Toolkit widget]]
[[Kategori:Antarmuka pemrograman aplikasi]]
[[Kategori:Pustaka dan toolkit pengembangan bebas]]
[[Kategori:Pustaka berbasis-X]]
[[Kategori:Perangkat lunak bebas yang diprogram dengan C]]
[[Kategori:PerangkatPeralatan lunak antar-platformgawit]]
[[Kategori:Perangkat lunak lintas platform]]
[[Kategori:ToolkitPustaka widgetGNOME]]