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.

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

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

Saved successfully!

Ooh no, something went wrong!