Membuat Aplikasi di Linux dengan GTK+ dan Pascal

Beberapa waktu yang lalu, kami STEI 2010 mendapatkan tugas. Ya, sebuah project yang akan mengakhiri malam-malam Lailatul Qoding selama ini. Tugas ini disebut Tugas Besar PTI A, membuat suatu project yang  merepresentasikan apa yang telah kami pelajari selama kuliah.
Untuk Tugas Besar ini kami dibentuk dalam beberapa kelompok dengan masing-masing kelompok beranggotakan 3 orang. Saya pun membentu sebuah kelompok bernama Starlight.
Project yang diberikan adalah sebuah aplikasi mini dengan master desain ditentukan oleh pihak dosen. Saya pun memunyai sebuah inisiatif, bagaimana jika program yang kami, tim Starlight, buat berbentuk window. Tentu saja ini adalah hal yang luar biasa, terutama platform yang kami garap nggak main-main, linux. Ya, kami memang gila dengan membuat aplikasi untuk linux dan saat saya berkata demikian, saya belum tahu apa-apa tentang bagaimana cara membuat aplikasi GUI di linux, bahkan saya nggak tahu linux itu kayak gimana modelnya *nah lho*. Ini emang beneran, tapi saya nggak main-main dengan niat saya tersebut (cieee….)
Akhirnya saya melakukan sebuah riset sederhana dan mencari segala data yang diperlukan. Riset dibatasi 2 hari karena hari-hari selanjutnya digunakan untuk pengerjaan program.
Kok malah jadi curhat ya? Ok, langsung aja saya berbagi tutorial bagaimana cara bikin aplikasi GUI di linux dengan GTK+ dan Pascal (actually I didn’t really like Pascal @@~) 

#———————————————————————— CHAPTER 1 – Set up the Compiler

Yang saya pakai adalah compiler FreePascal. Dan untungnya FPC telah menyediakan wrapper untuk gtk, horee…!! Dalam pengerjaan aplikasi ini, saya menggunakan Ubuntu Linux 10.10 Maverick Meerkat (thanks buat Inov yang udah meminjamkan CD Ubuntu buat saya :D).
Jangan lupa untuk menginstall library untuk development GTK.. lakukan perintah berikut

sudo apt-get install libgtk2.0-dev

OK, jika sudah maka teman-teman sudah bisa membuat aplikasi sederhana dengan GTK

#———————————————————————— CHAPTER 2 – Simple Form

Apa itu GTK+? GTK adalah toolkit yang digunakan untuk pengembangan aplikasi GUI di linux berbasis GNOME. Dalam membuat aplikasi GTK sebenarnya kita seperti bermain lego. Kita meletakkan potongan-potongan bangunan untuk membentuk sebuah bangunan utuh. Potongan-potongan yang dimaksud di sini adalah komponen visual seperti button, menu, dkk. Komponen itu disebut sebagai widget. Nah kita menyusun potongan-potongan tersebut di atas sebuah form / window.
Hal pertama yang dilakukan untuk membuat aplikasi adalah membuat sebuah window terlebih dahulu. Coba teman-teman simak source code sederhana ini yang akan membuat sebuah form sederhana.

program sederhana;

uses gtk2, gdk2, glib2;
{ Library yang kita gunakan untuk membuat GUI }

var window : pGtkWidget;
{ Membuat sebuah variabel bertipe pGtkWidget untuk menampung widget / komponen }

begin
{ Sebelum kita memulai, kita harus beritahu bahwa kita akan menggunakan gtk. Maka kita harus inisialisasi gtk terlebih dahulu }
gtk_init(@argc, @argv);

{ Membuat window }
gtk_window_new(GTK_WINDOW_TOPLEVEL);
{ Membuat window yang top level atau window yang dikelola langsung oleh komputer (Window Manager) }

{ Sedikit pengaturan untuk window kita }
gtk_window_set_default_size(GTK_WINDOW(window), 800,600);
gtk_window_set_title(GTK_WINDOW(window), ‘Satria Ady Pradana’);
{ Dari nama udah kelihatan kan? }

{ Mengatur signal. Signal adalah semacam message atau pesan yang diberikan ketika sesuatu hal terjadi pada aplikasi, seperti saat sebuah button ditekan dkk. GTK adalah sebuah library yang event-driving. Jadi kita akan memprogram berdasarkan event-event }
gtk_signal_connect(GTK_OBJECT(window), ‘destroy,’ GTK_SIGNAL_FUNC(@gtk_main_quit), nil);
{
Penjelasan:
Parameter pertama adalah widget / komponen yang ingin dikelola
Parameter kedua adalah jenis event yang terjadi. Disini kita pakai ‘destroy’ artinya saat window di-destroy atau ditutup maka program akan mengeksekusi program berikut.
Parameter ketiga adalah fungsi yang dipanggil ketika event terjadi. Untuk sementara kita pakai fungsi ini dulu, gtk_main_quit() yang akan membersihkan dan mengakhiri proses program.
Parameter keempat adalah data yang diberikan jika fungsi dipanggil. kita isi nil dulu karena kita nggak perlu ngasih apa-apa ke sana.
}

{ Secara default, komponen yang baru terbentuk belum tertampil ke layar. Untuk menampilkannya kita harus “menampilkannya” }
gtk_widget_show(window);

{Memulai program utama gtk, di sini pekerjaan kita selesai}
gtk_main();

end.

Simple kan? Ya emang…. Untuk membuat aplikasi sederhana tidak terlalu susah😀
Lalu bagaimana kalau kita ingin bikin tombol dkk?
Tunggu  postingan selanjutnya😀

5 Comments

  1. NurElly

    kalau ingin nambahin eventnya di tombol gimana kak caranya ?? , misalkan kayak di java gtu kan event methodnya nanti outputnya “Hello World”

  2. Untuk event pada komponen kita mengenal adanya signal. Kalo di windows itu semacam message. Kita tinggal menyiapkan sebuah prosedur dengan format standard seperti ini:

    procedure nama_prosedur ( widget: pGtkWidget; Window : PMainWindow); cdecl;
    begin

    end;

    prosedur di atas adalah event handler atau istilahnya method yang menangani sebuah event. Untuk masing-masing komponen memiliki beberapa event berbeda. Contohnya pada button ada event click.

    Kemudian kita hubungkan antara komponen dengan event handlernya.
    gtk_signal_connect(GTK_OBJECT( komponen button ), ‘jenis_sinyal,’ GTK_SIGNAL_FUNC(@nama_prosedur), nil);

    Contoh kasus:
    Kita punya button, saat button di klik maka akan memanggil prosedur apaini. Maka akan nampak seperti ini
    gtk_signal_connect(GTK_OBJECT(button), ‘clicked’, GTK_SIGNAL_FUNC(@apaini), nil);

    ingat bahwa deklarasi prosedur apaini mengikuti format yang sudah saya berikan di awal🙂

  3. makasih, ini yang dari tadi gua cari cari dan baru dapat

  4. Wawan

    gan,tanya gan..kalo mau cross compiler untuk linux di arm seperti cubieboard dan raspberry, tool yang diperlukan apa aja ya gan??soalnya saya ingin membuat program GUI di board tersebut

    • Nama paket secara spesifik akan bergantung kepada OS yang menjadi tempat build toolchain tersebut. Kira-kira daftarnya seperti ini:
      – binutils
      – gcc
      – libc

      ada juga gdb namun opsional.
      Pastikan prosesor target di set ketika membuat toolchain-nya.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: