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