GRAPHICAL USER
INTERFACE
(GUI)
Praktikum
14
A. T U J U A N
1. Membuat aplikasi GUI untuk kotak dialog menggunakan script zenity. 2. Membuat beberapa kotak dialog seperti question, calendar, entry, error, file
selection, list, notification, progress, warning, scale, info dan text info dialog.
B. DASAR TEORI
ZenityZenity mempunyai peran sebagai pembuat GUI pada shell programing atau yang disebut Grafik User Interface dimana mempunyai fungsi mempermudah user untuk mengoperasikan programnya melalui grafis secara interaktif. Zenity mempunyai banyak opsi seperti:
--entry : meminta input dari keyboard
--info : menampilkan text yang dimana berfungsi sebagai sebuah info --list : membuat list berdasarkan column dan row secara tertabel dan lain-
lain.
Dengan opsi seperti diatas zenity dapat digunakan untuk membuat sebuah question dialog box. Disamping itu zenity juga dapat digunakan untuk aplikasi yang lain seperti calendar, entry, error, info, file selection, list, notification, progress, warning, scale dan text info. Pada bab ini akan di ilustrasikan bagaimana membuat aplikasi zenity dialog.
Kalender Dialog
Dengan menggunakan option –-calendar dapat dibuat sebuah kalender dialog. Pada kalender dialog ini user diijinkan untuk memilih inisial yang khusus pada perintah date yaitu dengan menggunakan option :
--text=text
Spesikasi “text” digunakan untuk menampilkan teks pada kalender dialog.
--day=day
Spesifikasi “day” digunakan untuk memilih tanggal di dalam kalender dialog. Day harus diberi nilai angka untuk tanggal dari 1 sampai 31.
--month=month
Spesifikasi “month” digunakan untuk memilih bulan di dalam kalender dialog. Month harus diberi nilai untuk bulan dari 1 sampai 12.
--year=year
Spesifikasi “year” digunakan untuk memilih tahun di dalam kalender dialog.
--date-format=format
Menentukan kembali format dari dialog kalender setelah seleksi tanggal (date). Format standar tergantung pada system lokal dan format yang dapat diterima oleh fungsi strftime misalnya %A %d/%m/%y.
File Selection Dialog
Untuk membuat file selection dialog digunakan opsi --file-selection. Zenity akan melakukan seleksi file atau direktori ke output standard. Mode default file selection dialog adalah buka file. File selection dialog memiliki beberapa opsi:
--filename=filename
--multiple
Menentukan pemilihan beberapa nama file dalam dialog pemilihan file.
--directory
Menentukan pilihan direktori pada dialog pemilihan file.
--save
Set dialog pemilihan file ke mode save. --separator=separator
Menentukan string yang digunakan untuk membagi kembali daftar nama file.
List Dialog
Menggunakan opsi --list Untuk membuat list dialog. Zenity akan mengembalikan entry dalam kolom pertama baris teks yang dipilih ke output standar. Data untuk dialog kolom harus ditentukan menurut kolom, baris demi baris. Data dapat disediakan untuk dialog melalui input standar. Setiap entri harus dipisahkan oleh karakter baris baru. Jika menggunakan opsi --checklist atau --radiolist, setiap baris harus dimulai dengan ’TRUE’ atau ’FALSE’. List dialog memiliki opsi berikut:
--column=column
Menentukan header kolom yang ditampilkan dalam list dialog. Harus ditentukan opsi –colomn untuk setiap kolom yang ingin ditampilkan dalam dialog.
--checklist
Menentukan bahwa kolom pertama pada list dialog berisi kotak cek.
--radiolist
Menentukan bahwa kolom pertama pada list dialog berisi kotak radio.
--editable
Memungkinkan ditampilkan item yang akan diedit.
--separator=separator
Menentukan string apa yang digunakan ketika dialog mengembalikan daftar entry yang dipilih.
--print-column=column
Menentukan apakah kolom harus dicetak pada seleksi. Default kolom adalah '1 '. ‘ALL’ yang dapat digunakan untuk encetak semua kolom dalam list.
Untuk melihat penjelasan lebih detail tentang penggunaan zenity, dapat dilihat di terminal dengan mengetik man zenity, maka akan muncul petunjuk penggunaan zenity.
C. PROSEDUR
1. Masuk ke sistem operasi Linux.
2. Login sebagai user yang telah ditentukan.
3. Gunakan gedit/text editor untuk editor penulisan program, perintah eog, dan zenity pada pemrograman shell.
4. Catatlah hasil dari setiap program pada prosedur no.3 sebagai laporan sementara.
D. PERCOBAAN
Percobaan 1 : Kalender Dialog
1. Membuat kalender dialog melalui baris perintah pada prompt.
$ szDate=$(zenity calendar text "Pick a day" --title "Medical Leave" --day 23 --month 5 --year 2008); echo $szDate
2. Membuat kalender dialog dengan program shell.
#!/bin/bash
szDate=$(zenity calendar text "Pick a day" --title "Medical Leave" --day 23 --month 5 --year 2008); echo $szDate
3. Menggunakan perintah if pada program kalender dialog.
#!/bin/bash
if zenity --calendar \ --title="Select a Date" \
--text="Click on a date to select that date." \ --day=20 --month=8 --year=2010
then echo $?
else echo "No date selected" fi
Percobaan 2 : File Selection Dialog
$ szSavePath=$(zenity file-selection save
--confirm-overwrite);echo $szSavePath
2. Membuat file selection dialog untuk memilih file.
#!/bin/bash
FILE=$(zenity --file-selection --confirm-overwrite);echo $FILE
3. Membuat file selection dialog untuk memilih dan menyimpan file.
#!/bin/bash
FILE=$(zenity --file-selection –-save --confirm-overwrite);echo $FILE
4. Membuat file selection dialog untuk memilih file dengan statement case.
#!/bin/bash
FILE=`zenity --file-selection --title="Select a File" case $? in
0)
echo "\"$FILE\" selected.";; 1)
echo "No file selected.";; -1)
echo "No file selected.";; esac
Percobaan 3 : Entry Dialog
1. Memasukan teks jawaban pada entry dialog dan menampilkan pada terminal.
$ jawab=$(zenity entry text "di mana kamu?" --entry-text "di rumah"); echo $jawab
2. Memasukan password/teks tersembunyi pada entry dialog dan menampilkan pada terminal.
#!/bin/sh
if zenity --entry \
--title="Add an Entry" \
--text="Enter your _password:" \ --entry-text "password" \
--hide-text then echo $?
else echo "No password entered" fi
Percobaan 4 : Information Dialog
a. $ zenity --info --text "Join us at http//:www.eepis-its.edu. Shell programming #2Telkom."
b. $ gksudo lsof | zenity --text-info --width 530
2. Memilih file dan menampilkan sebagai informasi kemudian perubahan isinya disimpan pada file baru (tmp.txt)
#!/bin/bash FILE=`zenity --file-selection \ --title="Select a File"` case $? in 0) zenity --text-info \ --title=$FILE \ --filename=$FILE \ --editable >/home/student/tmp.txt;; 1)
echo "No file selected.";; -1)
echo "No file selected.";; esac
Jalankan program, pilih satu file untuk ditampilkan isinya pada info dialog, edit isi file tersebut kemudian close info dialognya. Bandingkan isi file yang telah diedit dengan file tmp.txt.
Percobaan 5 : Error Dialog
1. Menampilkan pesan error pada proses instalasi.
$ zenity --error --text "Installation failed!"
2. Menampilkan pesan error penulisan program.
#!/bin/bash
zenity --error \
--text="bash: ./zenity3.sh: /bin/hash: bad interpreter: No such file or directory."
Percobaan 6 : Question Dialog
1. Menampilkan pertanyaan pada proses shutdown.
$ zenity --question --text "Are you sure you want to shutdown?"; echo $?
2. Menampilkan pertanyaan suatu proses.
#!/bin/bash
zenity --question \
Percobaan 7 : Warning Dialog
1. Menampilkan peringatan untuk menghentikan proses.
$ zenity --warning --text "This will kill, are you sure?";echo $?
2. Menampilkan peringatan untuk koneksi kabel.
#!/bin/bash
zenity --warning \
--text="Disconnect the power cable to avoid electrical shock."
Percobaan 8 : Progress Dialog
1. Menampilkan progres hasil perintah gksudo lsof pada file lsof.txt.
$ gksudo lsof | tee >(zenity --progress --pulsate) >lsof.txt
2. Menampilkan progres update sistem log.
#!/bin/sh (
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1 echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1 echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1 echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1 echo "100" ; sleep 1
) | zenity --progress \
--title="Update System Logs" \ --text="Scanning mail logs..." \ --percentage=0
if [ "$?" = -1 ] ; then zenity --error \
--text="Update canceled." fi
Percobaan 9 : Notification Icon Dialog
1. Menampilkan file gambar sebagai notification icon. a. dari prompt
$ zenity --notification --window-icon="bich6.gif" --text "Please update your system."
b. dari program .sh
#!/bin/bash
zenity notification window-icon="bich6.gif" --text "Please update your system."
2. Menampilkan info sebagai notification icon.
#!/bin/bash
zenity --notification\
--window-icon="info" \
--text "There are system updates necessary!"
Percobaan 10 : Scale dan List Dialog
1. Menampilkan dialog untuk pengaturan nilai skala.
#!/bin/bash
ans=$(zenity --scale --text "pick a number" --min-value=2 --max-value=100 ----min-value=2 --step 2);echo $ans
2. Menampilkan list dialog dalam bentuk radio (radiolist).
#!/bin/bash
ans=$(zenity --list --text "Is linux.byexamples.com helpful?" --radiolist --column "Pick" --column
"Opinion" TRUE Amazing FALSE Average FALSE "Difficult to follow" FALSE "Not helpful"); echo $ans
3. Menampilkan list dialog dalam bentuk check list.
#!/bin/sh
ans=$(zenity --list --text "How linux.byexamples can be improved?" checklist column "Pick" --column "options" TRUE "More pictures" TRUE "More complete post" FALSE "Includes Installation
guidelines" FALSE "Create a forum for question queries" --separator=":"); echo $ans
4. Menampilkan list dialog dalam bentuk daftar tabel (kolom).
#!/bin/sh
zenity --list \
--title="Choose the Bugs You Wish to View" \
--column="Bug Number" --column="Severity" --column="Description" \
992383 Normal "GtkTreeView crashes on multiple selections" \
293823 High "GNOME Dictionary does not handle proxy" \
393823 Critical "Menu editing does not work in GNOME 2.0"
E. Latihan
1. Buatlah GUI kotak dialog dengan program shell untuk recovery file dengan ketentuan sebagai berikut:
step1: ketika program dijalankan akan muncul kotak dialog info yang memberitahukan proses recovery file dengan cara harus memilih tanggal, bulan dan tahun recovery.
Step2: jika waktu pada step1 yang dipilih tidak sesuai akan muncul pesan error.
Step3: jika pemilihan pada step1 benar proses recovery file dilaksanakan hingga recovery file lengkap.
2. Buatlah program untuk mencari file gambar jpg atau png dan hasilnya ditampilkan pada list dialog.
3. Dari entry dialog terdapat permintaan untuk memasukan nama, jika diisikan nama maka muncul info dialog yang manyapa pemilik nama tersebut dengan teks hello yang dikuti nama yang dimasukan.
4. Pada kalender dialog terdapat teks pertanyaan “Kapan anda ulang tahun?”, apabila user manjawab dengan memilih tanggal yang tepat akan muncul progres dialog kemudian info dialog ucapan “selamat ulang tahun” dan gambar sebagai icon pesta ulang tahun.