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 />

Pencereler curses kütüphanesinde en önemli konuyu olu¸sturmaktadır. Tüm i¸slevlerin gizli ¸sekilde üzerinde<br />

çalı¸stıkları standart stdscr penceresini bu ana kadar gördünüz. Basit bir kullanıcı arayüzü tasarlamak için b<strong>ile</strong>,<br />

pencereler kullanmalısınız. Pencere kullanmanızın temel sebebi, daha iyi bir tasarım için güncellenmesi gereken<br />

pencereleri de˘gi¸stirerek, daha verimli bir çalı¸sma için ekranın belli kısımlarını ba˘gımsız olarak de˘gi¸stirmektir.<br />

Son söyledi˘gim pencereler <strong>ile</strong> ilgili en önemli noktadır. Her zaman programınızda kolay yönet<strong>ile</strong>bilir ve daha iyi<br />

tasarımlara yönelmelisiniz. E˘ger büyük ve karma¸sık kullanıcı arayüzleri yazıyorsanız, bu yakla¸sım, herhangi bir<br />

i¸s yapmadan önce hayati öneme sahip bir noktadır.<br />

9.1. Temel bilg<strong>ile</strong>r<br />

Bir pencere newwin() i¸slevini ça˘gırarak olu¸sturulabilir. Ekran üzerinde aslında bir¸sey olu¸sturmaz. Pencereyi<br />

de˘gi¸stirecek yapılar için bellekten yer ayırır ve pencerenin boyutu, ba¸sladı˘gı y koordinatı, ba¸sladı˘gı x koordinatı,<br />

v.b bilg<strong>ile</strong>rle ilgili yapıları günceller. Böylece curses kullanımında pencere kavramı, ekranın di˘ger kısımlarından<br />

ba˘gımsız olarak de˘gi¸stir<strong>ile</strong>b<strong>ile</strong>n hayali bir soyutlamadır. newwin() i¸slevi, wprintw() ve v.b. pencere ili¸skili<br />

i¸slevlerde kullanılab<strong>ile</strong>cek WINDOW veri yapısı türünden bir gösterici döndürür. Son olarak pencere delwin()<br />

i¸slevi <strong>ile</strong> yok ed<strong>ile</strong>bilir. Bu i¸slev pencere yapısıyla bellekte ayrılmı¸s alanı geri verecektir.<br />

9.2. Bana bir Pencere göster !!!<br />

E˘ger bir pencere olu¸sturuldu ve biz de göremiyorsak bu komik bir durumdur. E˘glenceli kısım pencereyi göstermekle<br />

ba¸slar. box() i¸slevi pencere etrafına bir çerçeve çizmek için kullanılır. Bu i¸slevleri a¸sa˘gıdaki örnekte<br />

daha ayrıntılı inceleyelim.<br />

Örnek 7. Pencere Çerçevesi örne ˘gi<br />

#include <br />

WINDOW *create_newwin(int height, int width, int starty, int startx);<br />

void destroy_win(WINDOW *local_win);<br />

int main(int argc, char *argv[])<br />

{ WINDOW *my_win;<br />

int startx, starty, width, height;<br />

int ch;<br />

initscr(); /* Curses kipini ilklendirme */<br />

cbreak(); /* Satır önbelle˘gi etkisiz, *<br />

* her¸seyi bana gönder */<br />

keypad(stdscr, TRUE); /* ¸Su ¸seker F1’e ihtiyacım var */<br />

height = 3;<br />

width = 10;<br />

starty = (LINES – height) / 2; /* Pencerenin ortasına yazmak için */<br />

startx = (COLS – width) / 2; /* hesaplama yapılıyor */<br />

printw("Press F1 to exit");<br />

refresh();<br />

my_win = create_newwin(height, width, starty, startx);<br />

wh<strong>ile</strong>((ch = getch()) != KEY_F(1))<br />

{ switch(ch)<br />

{ case KEY_LEFT:<br />

destroy_win(my_win);<br />

my_win = create_newwin(height, width, starty,––startx);<br />

break;<br />

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

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

Saved successfully!

Ooh no, something went wrong!