Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
}<br />
mvwprintw(win, y, x, "%s", string);<br />
wattroff(win, color);<br />
refresh();<br />
<strong>NCURSES</strong> <strong>ile</strong> Yazılım Geli¸stirme <strong>NASIL</strong><br />
Bu program kendisini açıklar niteliktedir. Bu örnekte seçenek sayısı, alt menümüzün 6 tane gösterebilme kapasitesi<br />
olan ö˘ge sayısından 10’a çıkarılmı¸stır. Bu mesaj menü sistemine açık bir ¸sekilde set_menu_format()<br />
<strong>ile</strong> haber verilmelidir. Burada, tek bir sayfa için gösterilmesini istedi˘gimiz satır ve sütun sayısını belirttik.<br />
Satır de˘gi¸skenlerinde, e˘ger alt menü yüksekli˘ginden küçükse, herhangi bir sayıdaki ö˘geyi gösterilmesi için<br />
tanımlayabiliriz. E˘ger kullanıcı tarafından basılan tu¸s PAGE UP veya PAGE DOWN ise, menu_driver()<br />
tarafından ver<strong>ile</strong>n isteklerden dolayı (REQ_SCR_DPAGE ve REQ_SCR_UPAGE) menü bir sayfa kayar.<br />
17.6. Çok Sütunlu Menüler<br />
Yukarıdaki örnekte set_menu_format() i¸slevini nasıl kullanaca˘gınızı gördünüz. Sütun de˘gi¸skeninin (3.<br />
de˘gi¸sken) ne yaptı˘gından bahsetmedim. Aslında, e˘ger alt menünüz yeterince geni¸sse bir satırda birden fazla<br />
ö˘ge gösterimini seçebilirsiniz. Bu, sütun de˘gi¸skenlerinde tanımlanabilir. ˙I¸sleri daha basit hale getirmek için,<br />
a¸sa˘gıdaki örnek ö˘geler için açıklamaları göstermemektedir.<br />
Örnek 21. Çok Sütunlu Menü Örne ˘gi<br />
#include <br />
#include <br />
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))<br />
#define CTRLD 4<br />
char *choices[] = {<br />
"Choice 1", "Choice 2", "Choice 3", "Choice 4", "Choice 5",<br />
"Choice 6", "Choice 7", "Choice 8", "Choice 9", "Choice 10",<br />
"Choice 11", "Choice 12", "Choice 13", "Choice 14", "Choice 15",<br />
"Choice 16", "Choice 17", "Choice 18", "Choice 19", "Choice 20",<br />
"Exit",<br />
(char *)NULL,<br />
};<br />
int main()<br />
{ ITEM **my_items;<br />
int c;<br />
MENU *my_menu;<br />
WINDOW *my_menu_win;<br />
int n_choices, i;<br />
/* Curses kipini ilklendir */<br />
initscr();<br />
start_color();<br />
cbreak();<br />
noecho();<br />
keypad(stdscr, TRUE);<br />
init_pair(1, COLOR_RED, COLOR_BLACK);<br />
init_pair(2, COLOR_CYAN, COLOR_BLACK);<br />
/* Ö˘geleri olu¸stur */<br />
n_choices = ARRAY_SIZE(choices);<br />
my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));<br />
http://belgeler.org Linux Kitaplı˘gı 59 / 90