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

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

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

Saved successfully!

Ooh no, something went wrong!