Kamis, 31 Januari 2008

Menginstalasi Sistem Operasi berbasis GUI

Membangun Aplikasi KDE dengan KDevelop

NURYANI

Linux adalah wahana pengembangan aplikasi yang memberikan banyak fasilitas. Selain tersedianya GCC sebagai salah satu compiler yang modern, lengkap, dan andal, Linux juga menawarkan ratusan pustaka (library) yang dapat dipergunakan untuk mempermudah sekaligus mempercepat pengembangan sebuah aplikasi. Karena itu, sudah selayaknya seorang programer dapat memanfaatkan pustaka-pustaka ini sembari memperluas cakrawala pengetahuannya.

KDE yang merupakan akronim dari K Desktop Environment lebih dikenal sebagai lingkungan kerja berbasis grafis. Selain menyediakan window manager, KDE juga beragam aplikasi dalam aneka bidang, mulai dari file-manager, browser, hingga program-program multimedia.

Yang tidak banyak disadari adalah bahwa KDE juga merupakan platform untuk pengembangan aplikasi. Mengapa demikian ? Tidak lain adalah karena bersama KDE terdapat juga pustaka-pustaka yang menjadi kerangka pembangun sebuah aplikasi (application framework). Setiap sistem Linux yang menginstalasi KDE dipastikan mempunyai pustaka-pustaka standar KDE, yang lumrahnya disebut sebagai kdelibs. Bilamana Anda ingin membuat aplikasi dengan cepat dan tidak mau dipusingkan dengan pengaturan antarmuka pemakai, akses berbagai fungsi sistem, pengolahan file, dan lain sebagainya, Anda bisa memanfaatkan pustaka standar KDE ini.

KDE sendiri sebetulnya mengandalkan diri pada pustaka Qt (dari Trolltech) sebagai fondasinya. Buat yang belum kenal, Qt dikenal sebagai toolkit untuk membangun aplikasi yang lintas platform di Unix/X11, Windows, Mac, dan sistem embedded. Akan tetapi, bagi sebagian besar developer KDE, bisa diklaim bahwa KDE bukanlah semata-mata pustaka toolkit sebagaimana Qt. Hal ini berarti bahwa KDE tidak melulu menyediakan setumpuk fungsi-fungsi yang bisa digunakan dalam beragam library-nya, tetapi juga menawarkan kerangka (framework) yang dapat dieksplorasi untuk menghasilkan aplikasi-aplikasi GUI yang modern. Lepas dari faktor kecakapan programmer yang menjadi salah satu penentu keberhasilan proses pengembangan sebuah aplikasi, kekayaan library yang dipunyai oleh KDE plus kelengkapan dokumentasi API-nya (yang bisa diakses dengan cuma-cuma) terbilang cukup menolong dan menjadikan penyusunan suatu aplikasi menjadi perangkaian balok-balok dasar yang memang sudah tersedia.

Tentu saja, kekayaan pustaka saja tidak akan cukup. Menyadari hal ini, tim KDE juga merilis sebuah Integrated Development Environment (IDE) bernama KDevelop yang bisa dipergunakan untuk membantu proses pengembangan aplikasi dengan lebih nyaman. Bagi yang telah familiar dengan Microsoft Visual Studio, KDevelop ini tidak akan terasa asing lagi. Fitur-fitur yang dimilikinya juga tidak kalah dengan Visual Studio, di antaranya adalah project management, editor canggih dengan syntax highlight dan code completion, debugger yang terintegrasi, class parser, akses ke dokumentasi Qt/KDE/C++ dengan cepat, penanganan configure/automake/autoconf, wizard, class generator, dan masih banyak lagi.

Jika sudah terinstal dengan baik, KDevelop bisa dijalankan dari KDE dengan memilih menu K, Development, KDevelop. Untuk pengguna Mandrake, menu ini bisa diakses dari K, Applications, Development, Development environments, KDevelop. Bila baru pertama kali ini Anda menjalankan KDevelop maka akan tampil aplikasi KDevelop Setup secara otomatis (Gambar 1). Program kecil ini sendiri mirip dengan sebuah wizard, jadi tinggal ikuti saja langkah demi langkahnya. Pada kebanyakan kasus, Anda hanya perlu mengklik tombol Next hingga langkah terakhir.

Gambar 1. KDevelop Setup

Selanjutnya Anda akan dihadapkan dengan KDevelop dalam keadaan awal (Gambar 2). Bisa Anda perhatikan bahwa penampilannya sangat serupa dengan Microsoft Visual Studio. Tepat di bawah titlebar adalah sederetan tombol-tombol toolbar. Sebagaimana umumnya toolbar, Anda cukup melewatkan pointer mouse di atas tombol-tombol ini untuk mengaktifkan tooltip. Bagian kiri terdiri atas sejumlah tab yang masing-masing ditandai dengan icon-icon tertentu, masing-masing untuk Classes, Groups, Files, dan Books.

Gambar 2. Tampilan awal KDevelop

Supaya lebih jelas, Anda dapat mencoba membuat sebuah aplikasi KDE yang sangat sederhana. Untuk ini, pilihlah menu Project, New yang digunakan untuk mengaktifkan wizard pembuatan aplikasi baru (Gambar 3). Bisa dilihat bahwa wizard tersebut dapat dipergunakan untuk membuat berbagai macam aplikasi, dari aplikasi KDE, Qt, GNOME, dan juga aplikasi console biasa. Untuk contoh kali ini, pilihlah KDE2 Mini dan selanjutnya klik tombol Next.

Gambar 3. Application Wizard

Selanjutnya Anda harus mengatur beberapa setting umum seperti nama aplikasi, direktori kerja, nama pembuat, dan lain sebagainya (Gambar 4). Anda bisa mengikuti Gambar 4 dengan mengisikan Hello sebagai nama aplikasi. Sementara itu direktori kerjanya dapat Anda tentukan sendiri, lantas klik tombol Next.

Gambar 4. Menentukan setting project

Dalam beberapa saat, wizard-nya KDevelop ini akan bekerja menyusun file-file yang diperlukan, termasuk juga file-file automake dan autoconf, script konfigurasi, struktur manual dan dokumentasi API, serta hal-hal kecil lainnya. Perbedaan KDevelop dengan Microsoft Visual Studio akan terlihat di sini, KDevelop menghasilkan dan mengolah file-file yang diperlukan berdasarkan standar pengembangan aplikasi Unix (seperti automake dan autoconf). Setelah pekerjaan kecil ini selesai, tinggal klik tombol Create dan wizard pun selesai.

Gambar 5. Menyusun file-file kerja

Sekarang KDevelop sudah mengaktifkan project baru yang bernama Hello tadi sehingga tampilannya berubah menjadi seperti pada Gambar 6. Pada panel bagian kiri bisa Anda cermati bahwa KDevelop sudah membuatkan dua file source-code yang diperlukan, yaitu main.cpp dan hello.cpp. Sementara itu panel sebelah kiri menunjukkan editor yang sedang memuat file hello.cpp.

Gambar 6. Mengedit Hello di KDevelop

Percaya atau tidak, dua file yang telah dengan baik hati dibuatkan oleh KDevelop ini sudah memenuhi syarat sebagai aplikasi KDE. Untuk membuktikannya, Anda bisa melakukan compile sekaligus menjalankannya dengan memilih menu Build, Execute (shortcutnya adalah F9). Atau bisa juga dengan tombol Run di toolbar, yakni yang iconnya bergambar roda gigi. Sementara proses compile dilakukan, perkembangan dan statusnya bisa Anda lihat di panel kanan bawah pada tab Messages.

Bila tidak ada yang salah, artinya belum ada yang Anda utak-atik, mestinya program Hello ini sudah tampak. Karena masih sederhana sekali, program Hello ini hanya menampilkan window kosong (Gambar 7).

Gambar 7. Program Hello

Untuk menghasilkan sebuah aplikasi yang betul-betul punya fungsi, tidak hanya sekedar menayangkan window kosong, Anda dapat memodifikasi file source code main.cpp dan hello.cpp. Karena KDE dan Qt dibangun dengan bahasa C++, maka mau tidak mau Anda harus terlebih dahulu menguasai bahasa C++ ini. Di samping itu, untuk merancang aplikasi yang menggunakan pustaka yang telah disediakan oleh Qt dan KDE, maka prasyarat lainnya adalah sudah mengenali pustaka-pustaka tersebut. Sebagai langkah awal, Anda bisa saja mempelajari Qt terlebih dahulu. Tutorial berseri tentang pengenalan pemrograman Qt sempat dimuat di InfoLINUX, yaitu dari no 7/2001.

Guna bereksperimen sambil berkenalan dengan kelas-kelas C++ di Qt dan KDE, Anda bisa memodifikasi program Hello sesuai panduan berikut ini. Mula-mula definisi kelas Hello yang ada di file header hello.h mesti diubah. Asalnya kelas Hello ini diturunkan dari kelas QWidget, yaitu kelas dasar untuk widget pada Qt. Sayangnya, kelas dasar QWidget ini tidak banyak berguna. Karenanya lebih baik menggantinya dengan kelas KMainWindow yang merupakan pembentuk window utama di sebuah aplikasi KDE.

Menyunting file hello.h bisa dilakukan dengan memilihnya dari daftar file (klik tab Files di panel kiri). Editlah file tersebut sehingga menjadi seperti di bawah ini. Perhatikan bahwa komentar pada bagian awal file (yang dihasilkan KDevelop) tidak dikutip di sini, Anda bisa membiarkan sebagaimana adanya.

#ifndef HELLO_H
#define HELLO_H

#ifdef HAVE_CONFIG_H
#include
#endif

#include
#include

#include
#include

/** Hello is the base class of the project */
class Hello : public KMainWindow
{
Q_OBJECT
public:
/** construtor */
Hello(QWidget* parent=0, const char *name=0);
/** destructor */
~Hello();

protected:
void initGUI();
void updateGUI();
void load( const char *fname );
void save( const char *fname );

private slots:

void fileOpen();
void fileSave();

private:

QString filename;
};

#endif

Dari kelas Hello yang baru ini dapat dicermati bahwa beberapa fungsi telah dibubuhkan, yaitu initGUI() untuk inisialisasi antarmuka, updateGUI() untuk melakukan update tampilan, serta dua fungsi load() dan save() yang mencontohkan cara memuat dan menyimpan file. Sebagai tambahan, fungsi fileOpen() dan fileSave() merupakan slot untuk menerima signal dari menu. Untuk lebih jelasnya mengenai signal dan slot, Anda bisa merujuk ke tutorial pemrograman Qt di InfoLINUX no 7/2001 atau bisa juga di dokumentasi Qt.

Selanjutnya, bagian utamanya yakni file hello.cpp juga diubah menjadi seperti di bawah ini:

#include "hello.h"

#include
#include
#include
#include
#include
#include
#include
#include
#include

QString filter = "*.*|All";

Hello::Hello(QWidget *parent, const char *name) :
KMainWindow( 0, "Hello", WDestructiveClose )
{
initGUI();
updateGUI();
show();
}

Hello::~Hello()
{
}

// initializes user-interface
void Hello::initGUI()
{
KStdAction::open(this, SLOT( fileOpen() ),actionCollection(), "open" );
KStdAction::save(this, SLOT( fileSave() ),actionCollection(), "save" );
KStdAction::close(this, SLOT( close() ),actionCollection(), "close" );

actionCollection()->action("open")->plug( toolBar() );
actionCollection()->action("save")->plug( toolBar() );

KPopupMenu * file = new KPopupMenu( this );
menuBar()->insertItem( "&File", file );
actionCollection()->action("open")->plug( file );
actionCollection()->action("save")->plug( file );
actionCollection()->action("close")->plug( file );

menuBar()->insertItem( "&Help", helpMenu() );
}

// updates user-interface
void Hello::updateGUI()
{
setCaption( filename );
}

// loads from file
void Hello::load( const char *fname )
{
// do file loading here

filename = fname;

// update caption and titlebar
statusBar()->message( filename + " loaded", 2000 );
updateGUI();
}

// saves to file
void Hello::save( const char *fname )
{
// do file saving here

filename = fname;

// update caption and titlebar
statusBar()->message( filename + " saved", 2000 );
updateGUI();
}

// opens and loads from file
void Hello::fileOpen()
{
KURL url;
url = KFileDialog::getOpenURL( QString::null, filter, this );

if( url.isEmpty() ) return;
if( !url.isLocalFile() ) return;

load( url.fileName() );
}

// saves to file
void Hello::fileSave()
{
KURL url;
url = KFileDialog::getSaveURL( QString::null, filter, this );

if( url.isEmpty() ) return;
if ( !url.isLocalFile() ) return;

save( url.fileName() );
}

Konstruktor kelas Hello cukup sederhana, yaitu hanya menginisialisasi tampilan dan mengupdatenya untuk pertama kali. Sementara itu yang dikerjakan fungsi initGUI() adalah membuat tiga action, masing-masing untuk fileOpen(), fileSave(), dan close(). Melalui kelas KStdAction, ketiga action dapat dipasangkan (plug) ke menu dan toolbar dengan mudah. Di sisi lain, fungsi updateGUI() hanya akan memperbaharui caption dari program jika filename berubah.

Baik fungsi load() dan save() pada program Hello di atas tidak melakukan operasi apapun karena hanya berfungsi sebagai contoh. Kedua slot fileOpen() dan fileSave() akan dipanggil dari action yang bersesuaian, lihat juga fungsi initGUI(). Pada badan fungsi masing-masing hanya ada pemanggilan terhadap KFileDialog yang akan menghasilkan kotak dialog untuk Load atau Save. Bisa dilihat, secara langkah demi langkah, memang inilah yang akan terjadi pada aplikasi yang sungguhan.

Hingga saat ini, kalau Anda langsung melakukan compile kemungkinan Anda akan menjumpai kesalahan karena pustaka yang bernama kfile belum di-link dengan program Hello. Untuk mengatasinya, Anda harus mengubah pilihan linker yang digunakan. Pilih menu Project, Options atau dengan shortcut F7 sehingga tampil kotak dialog Project Options. Klik pada item Linker Options di daftar sebelah kiri dan selanjutnya tandai checkbox yang bertuliskan kfile. Sekarang Anda bisa mengkompilasi program Hello ini tanpa masalah.

Gambar 8. Mengutak-atik Project Options

Kalau tidak terjadi salah ketik ketika menyunting source-code, mestinya program Hello sudah berubah menjadi seperti Gambar 9. Terlihat bahwa baik menu dan toolbar sudah ada pada window program, bahkan kotak dialog Open atau Save sudah bisa muncul jika tombol pada toolbar diklik.

Gambar 9. Program Hello yang baru

Mendistribusikan aplikasi yang Anda buat juga tidak kalah gampang, tinggal pilih menu Project, Make distribution. (yang sudah mengerti banyak tentang Makefile pastilah sudah hafal cara lainnya: make dist). Selang beberapa saat file hello-0.1.tar.gz akan terbentuk dan inilah tarbal dari source-code program Hello. Angka 0.1 di situ menunjukkan versi 0,1 (ingatlah langkah ke-2 dari Application Wizard). Anda sekarang bisa menyebarkan tarbal ini, misalnya ke teman-teman yang juga menggunakan Linux. Bila ada yang tertarik, mereka bisa mengambil tarbal tersebut, mengekstraknya dengan perintah tar zxvf hello-0.1.tar.gz, menjalankan ./configure yang diikuti dengan make. Tentu saja, kalau program Anda cuman sekedar menampilkan "Hello, world!" mungkin tidak banyak yang akan terpikat mencobanya.

Kadang-kadang, meskipun telah mengenal sebagian pustaka Qt dan KDE yang paling penting, keberadaan dokumentasi masih mutlak diperlukan. Tetapi jangan khawatir karena KDevelop menyediakan fasilitas untuk mengakses dokumentasi ini dengan cepat, bahkan tanpa berpindah dari KDevelop. Cukup aktifkan tab Dokumentasi (yang iconnya bergambar buku terbuka) pada panel kiri sehingga akan didaftar berbagai macam dokumentasi yang sudah diinstal di sistem Anda. Dari sini tinggal klik mana yang Anda perlukan dan dalam sekejap panel sebelah kanan akan menghadirkan versi HTML dari dokumentasi tersebut (Gambar 10), tinggal disimak dan dipahami baik-baik dan satu saat Anda telah siap menjadi developer KDE. Selamat belajar !

Gambar 10. Mengakses dokumentasi Qt/KDE

Referensi

Tidak ada komentar: