situsali gtkplus

Membuat Form Sederhana Dengan C dan GTK+

Kemarin kita telah membahas tentang perkenalan dengan GTK+ ini. Untuk memahami lebih jauh mengenai GTK+ ada kiranya kita langsung saja praktek menerapkan GTK+ ke dalam sumber kode di mulai dari yang paling sederhana yakni membuat form terlebih dahulu, berikut beserta penjelasannya.

Sebelum memulai pastikan perlengakapannya sudah Anda dipersiapkan, mulai dari pemasangan GTK+ itu sendiri, sampai IDE atau Text Editor yang Anda pergunakan. Untuk IDE saya sarankan gunakan Gnome Builder. Sedangkan Text Editor saya sarankan gunakan Geany.

Praktek Membuat Form

Langsung saja praktek, pertama-tama Anda buat berkas dengan nama misalnya form.c, lalu copy-paste kan kode di bawah ini:

#include <gtk/gtk.h>

static void
activate (GtkApplication* app,
          gpointer        user_data)
{
  GtkWidget *window;

  window = gtk_application_window_new (app);
  gtk_window_set_title (GTK_WINDOW (window), "Window");
  gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);
  gtk_widget_show_all (window);
}

int
main (int    argc,
      char **argv)
{
  GtkApplication *app;
  int status;

  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  status = g_application_run (G_APPLICATION (app), argc, argv);
  g_object_unref (app);

  return status;
}

Compile

setelah itu simpan dan buka terminal lalu compile kode di atas dengan perintah berikut:

gcc `pkg-config --cflags gtk+-3.0` -o form_sederhana form.c `pkg-config --libs gtk+-3.0`

Perhatian! Awas, jangan sampai salah! Perintah di atas menggunakan backtick bukan petik satu.

Screenshot

Berikut ini hasilnya ketika kode sumber telah dikompilasi dengan gcc:

situsali form sederhana

Penjelasan Kode

Pada baris awal, jika kita ingin menggunakan GTK+ maka wajib diawali dengan #include <gtk/gtk.h>. Kemudian untuk memanggil class application diperlukan sebuah variabel yang mengambil nilai dari GtkApplication. Contoh di atas saya menggunakan variable app yakni GtkApplication *app;

Kemudian untuk kode app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); sintak dari gtk_application_new adalah sebagai berikut:

gtk_application_new (const gchar *application_id,
                     GApplicationFlags flags);

gchar sebenaranya char standar dari bahasa C, GApplicationFlags memiliki banyak nilai Anda bisa lihat sendiri semua nilainya di sini. Pada contoh di atas saya menulis nilai dari application_id dengan org.gtk.example. Sebernarnya ini bebas mau diisi dengan apapun asalkan penulisanya mengikuti format DNS, dengan tanda titik di antara kata, contohnya seperti aplikasi.saya. Meskipun dapat ditulis dengan sembarang, akan tetapi para pengembang Gnome menyarankan guna untuk menjadikan aplikasi yang baik ialah seperti berikut. (baca: https://developer.gnome.org/ChooseApplicationID/)

Lalu kode g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);. g_signal_connect bermaksud memberikan sinyal kepada aplikasi, ketika activate maka akan memanggil function activate kita bisa lihat dikode atasnya yakni pada ini:

static void
activate (GtkApplication* app,
          gpointer        user_data)
{
  ...
  ...
}

Kemudian kode status = g_application_run (G_APPLICATION (app), argc, argv); atau g_application_run yakni untuk menjalankan aplikasi gtk tersebut, diambil dari hasil variabel class app.

Langsung kebagian atas yakni isi dari function activate yakni:

GtkWidget *window;
window = gtk_application_window_new (app);

Kode tersebut berfungsi untuk membuat window atau yang kita kenal sebagai form. Kemudian kode gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); mengidentifikasikan bahwa secara asali (default) window dibuat berkuran 200 width dan 200 hight pixel. Lalu yang terakhir kode gtk_widget_show_all (window); yakni untuk menampilakn seluruh widget yang berada dalam form tersebut.

Oke sekian dulu tulisan kali ini, nanti kita akan lanjutkan kembali mengenai pembahasan pemrograman C dengan GTK+ ini. Semoga bermanfaat. 😁

Artikel Terkait

Leave a Reply

Your email address will not be published. Required fields are marked *