GTK 4 menyediakan komponen dasar yang berguna bagi pengembang untuk software-nya. Salah satunya komponen GtkDropDown yang berfungsi sebagai input-an user.
GtkDropDown memungkinkan beberapa nilai bisa dipilih untuk satu masukan. Komponen ini juga disebut combo box yang perannya mirip dengan pilihan ganda di lembaran tes.
Penerapan GtkDropDown di aplikasi terbilang sederhana, programmer cukup menyediakan string array dan memasukkannya ke fungsi constructor.
char *strings[] = {
"Salad",
"Ice Cream",
"Nasi Goreng",
NULL
};
GtkWidget *dropdownString = gtk_drop_down_new_from_strings(strings);
Jumlah elemen array menentukan jumlah pilihan di GtkDropDown
tapi tidak termasuk NULL di akhir.
Di banyak kasus, GTK sering melibatkan GListModel sebagai argumen fungsi-fungsinya. Dengan standar itu, kita bisa memanfaatkan fungsi constructor lain yang menerima GListModel.
Contoh kali ini, akan dipakai fungsi yang mendapatkan daftar file di folder tertentu (drive C).
GtkDirectoryList* dir = gtk_directory_list_new(NULL, g_file_new_for_path("C:\"));
GtkDirectoryList bisa dianggap GListModel karena mengimplementasikan fungsi-fungsi GListModel.
GtkWidget *dropdownObject = gtk_drop_down_new(G_LIST_MODEL(dir), exp);
Dibutuhkan fungsi tambahan yang akan dijalankan ketika satu item dievaluasi. Item-nya berupa GFileInfo yang nama file-nya diekstrak kemudian diduplikat dan dikembalikan (return) sebagai label pilihan GtkDropDown.
static gchar* dropdownClosureCB(gpointer item)
{
return g_strdup( g_file_info_get_name(G_FILE_INFO(item)) );
}
Duplikasi data (g_strdup) perlu dilakukan mengingat ada proses destruction dari objek GtkDropDown.


Leave a Reply