18.02.2013 Views

NCURSES ile Yazılım Geli¸stirme NASIL

NCURSES ile Yazılım Geli¸stirme NASIL

NCURSES ile Yazılım Geli¸stirme NASIL

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>NCURSES</strong> <strong>ile</strong> Yazılım Geli¸stirme <strong>NASIL</strong><br />

bası¸sında pencereyi yıkıp yeniden olu¸sturur. Ekran sınırlarının ötesine gitmeyin. Bu sınırların kontrol edilmesi<br />

okuyucuya bir örnek olarak bırakılmı¸stır. ¸Simdi satır satır inceleyelim.<br />

create_newwin() i¸slevi newwin() <strong>ile</strong> yeni bir pencere olu¸sturur ve etrafına box() i¸slevi <strong>ile</strong> bir çerçeve<br />

çizer. destroy_win() i¸slevi ilk önce ’ ’ karakteri <strong>ile</strong> bir çerçeve olu¸sturarak pencereyi ekrandan s<strong>ile</strong>r ve daha<br />

sonra delwin()’i ça˘gırarak onunla ili¸skili belle˘gi geri verir. Kullanıcının bastı˘gı tu¸sa ba˘glı olarak, starty ve<br />

startx de˘gi¸sir ve yeni bir pencere olu¸sturulur.<br />

destroy_win içerisinde gördü˘günüz gibi, wborder yerine box i¸slevini kullandım. Nedeni açıklama<br />

satırlarında yazılı (Atladınız. Biliyorum. Kodu okuyun :–)). wborder, belirt<strong>ile</strong>n 4 kö¸se ve 4 çizgi parametresiyle<br />

pencere etrafına bir çerçeve çizer. Daha açık hale getirmek için, e˘ger wborder’ı a¸sa˘gıdaki ¸sekilde<br />

ça˘gırırsanız:<br />

wborder(win, ’|’, ’|’, ’–’, ’–’, ’+’, ’+’, ’+’, ’+’);<br />

¸söyle bir ¸sey üretir:<br />

+––––––––––––+<br />

| |<br />

| |<br />

| |<br />

| |<br />

| |<br />

| |<br />

+––––––––––––+<br />

9.4. Örnekteki di ˘ger kısımlar<br />

Yukarıdaki örnekte aynı zamanda initscr() kullanımından sonra ekran boyutlarına ilklendir<strong>ile</strong>n COLS ve<br />

LINES de˘gi¸skenlerini kullandı˘gım gözükmektedir. Ekran boyutlarının bulunmasında ve yukarıdaki gibi ekranın<br />

ortasının koordinatlarının bulunmasında faydalı olabilir. getch() bilindi˘gi gibi klavyeden bir tu¸s bilgisi alır ve<br />

basılan tu¸sa kar¸sılık gelen i¸si yapar. Bu ¸sekildeki switch– case kullanımı kullanıcı grafik arayüzü programlamada<br />

çok yaygındır.<br />

9.5. Di ˘ger Çerçeve i¸slevleri<br />

Yukarıdaki program, her tu¸sa basımda bir pencerenin yıkılıp yenisinin olu¸sturulmasından dolayı oldukça verimsizdir.<br />

Bunun için di˘ger çerçeve çizimi <strong>ile</strong> ilgili i¸slevleri kullanarak daha verimli bir program yazalım.<br />

A¸sa˘gıdaki programda mvhline() ve mvvline() kullanarak benzer etki sa˘glanmı¸stır. Bu iki i¸slev basittir.<br />

Belirt<strong>ile</strong>n boyda ve belirt<strong>ile</strong>n konumda yatay ve dü¸sey çizg<strong>ile</strong>r olu¸stururlar.<br />

Örnek 8. Daha çok çerçeve i¸slevi<br />

#include <br />

typedef struct _win_border_struct {<br />

chtype ls, rs, ts, bs,<br />

tl, tr, bl, br;<br />

}WIN_BORDER;<br />

typedef struct _WIN_struct {<br />

int startx, starty;<br />

int height, width;<br />

WIN_BORDER border;<br />

http://belgeler.org Linux Kitaplı˘gı 25 / 90

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!