You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>NCURSES</strong> <strong>ile</strong> Yazılım Geli¸stirme <strong>NASIL</strong><br />
void print_in_middle(WINDOW *win, int starty, int startx, int width,<br />
char *string, chtype color)<br />
{ int length, x, y;<br />
float temp;<br />
}<br />
if(win == NULL)<br />
win = stdscr;<br />
getyx(win, y, x);<br />
if(startx != 0)<br />
x = startx;<br />
if(starty != 0)<br />
y = starty;<br />
if(width == 0)<br />
width = 80;<br />
length = strlen(string);<br />
temp = (width – length)/ 2;<br />
x = startx + (int)temp;<br />
wattron(win, color);<br />
mvwprintw(win, y, x, "%s", string);<br />
wattroff(win, color);<br />
refresh();<br />
Ana programdaki wh<strong>ile</strong> döngüsüne dikkatinizi verin. Bir kere basılan tu¸sun türünü buldu mu uygun davranı¸sı<br />
göstermektedir. E˘ger ’r’ basıldıysa yeniden boyutlandırma ba¸slamaktadır. Bundan sonra kullanıcı ok tu¸slarına<br />
bastıkça yeni boyutları güncellenmektedir. Kullanıcı ’a bastı˘gı anda o anki seçim sona erer ve panel<br />
açıklanan mantıkla yeniden boyutlandırılır. Yeniden boyutlandırma kipinde program pencerenin nasıl yeniden<br />
boyutlandırıldı˘gını göstermez. Okuyucuya yeniden boyutlandırma sırasında noktalı bir çerçeve <strong>ile</strong> yeni boyutu<br />
gösterme i¸si bir alı¸stırma olarak bırakılmı¸stır.<br />
Kullanıcı ’m”e bastı˘gında ta¸sıma kipi ba¸slar. Bu, yeniden boyutlandırmaktan daha kolaydır. Ok tu¸slarına bastıkça<br />
yeni konum güncellenir ve <strong>ile</strong> move_panel() ça˘grılarak panel ta¸sıma i¸slemi sonlandırılır.<br />
Bu programda PANEL_DATA olarak ifade ed<strong>ile</strong>n kullanıcı bilgisi önemli bir rol oynamaktadır. Açıklama<br />
satırlarında da yazdı˘gı gibi PANEL_DATA panel boyutu, ismi, isim rengi ve sıralamadaki sonraki panele i¸saretçi<br />
bilg<strong>ile</strong>rini tutmaktadır.<br />
16.6. Panelleri Gizlemek ve Göstermek<br />
Bir panel hide_panel() i¸slevi kullanılarak gizlenebilir. Bu i¸slev sadece onu panel yı˘gınından kaldırır, böylece<br />
update_panels() ve doupdate() i¸slevleri kullanıldı˘gında ekrandan saklanmı¸s olur. Gizlenmi¸s panel <strong>ile</strong><br />
ilintili PANEL yapısını bozmaz. Tekrar gösterilmek istenirse show_panel() i¸slevi kullanılmalıdır.<br />
A¸sa˘gıdaki program panellerin gizlenmesini göstermektedir. ’a’ veya ’b’ veya ’c’ ye sırasıyla birinci, ikinci ve üçüncü<br />
pencereleri gizlemek veya göstermek için basın. Pencerenin gizlenip gizlenmedi˘gi bilgisini saklayan küçük bir<br />
hide isimli de˘gi¸sken <strong>ile</strong> kullanıcı verisini kullanmaktadır. Bir nedenden ötürü panelin gizlenip gizlenmedi˘gini<br />
söyleyen panel_hidden() i¸slevi çalı¸smamaktadır. Michael Andres tarafından gönder<strong>ile</strong>n bir hata raposu<br />
buradadır (B23) .<br />
Örnek 17. Panel Gizleme ve Gösterme Örne ˘gi<br />
#include <br />
typedef struct _PANEL_DATA {<br />
http://belgeler.org Linux Kitaplı˘gı 47 / 90