亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? checklist.c

?? 這個vivi的功能很豐富
?? C
字號:
/* *  checklist.c -- implements the checklist box * *  ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk) *     Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension *     Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two *  MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com) * *  This program is free software; you can redistribute it and/or *  modify it under the terms of the GNU General Public License *  as published by the Free Software Foundation; either version 2 *  of the License, or (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#include "dialog.h"static int list_width, check_x, item_x, checkflag;/* * Print list item */static voidprint_item (WINDOW * win, const char *item, int status,	    int choice, int selected){    int i;    /* Clear 'residue' of last item */    wattrset (win, menubox_attr);    wmove (win, choice, 0);    for (i = 0; i < list_width; i++)	waddch (win, ' ');    wmove (win, choice, check_x);    wattrset (win, selected ? check_selected_attr : check_attr);    if (checkflag == FLAG_CHECK)	wprintw (win, "[%c]", status ? 'X' : ' ');    else	wprintw (win, "(%c)", status ? 'X' : ' ');    wattrset (win, selected ? tag_selected_attr : tag_attr);    mvwaddch(win, choice, item_x, item[0]);    wattrset (win, selected ? item_selected_attr : item_attr);    waddstr (win, (char *)item+1);    if (selected) {    	wmove (win, choice, check_x+1);    	wrefresh (win);    }}/* * Print the scroll indicators. */static voidprint_arrows (WINDOW * win, int choice, int item_no, int scroll,		int y, int x, int height){    wmove(win, y, x);    if (scroll > 0) {	wattrset (win, uarrow_attr);	waddch (win, ACS_UARROW);	waddstr (win, "(-)");    }    else {	wattrset (win, menubox_attr);	waddch (win, ACS_HLINE);	waddch (win, ACS_HLINE);	waddch (win, ACS_HLINE);	waddch (win, ACS_HLINE);    }   y = y + height + 1;   wmove(win, y, x);   if ((height < item_no) && (scroll + choice < item_no - 1)) {	wattrset (win, darrow_attr);	waddch (win, ACS_DARROW);	waddstr (win, "(+)");    }    else {	wattrset (win, menubox_border_attr);	waddch (win, ACS_HLINE);	waddch (win, ACS_HLINE);	waddch (win, ACS_HLINE);	waddch (win, ACS_HLINE);   }}/* *  Display the termination buttons */static voidprint_buttons( WINDOW *dialog, int height, int width, int selected){    int x = width / 2 - 11;    int y = height - 2;    print_button (dialog, "Select", y, x, selected == 0);    print_button (dialog, " Help ", y, x + 14, selected == 1);    wmove(dialog, y, x+1 + 14*selected);    wrefresh (dialog);}/* * Display a dialog box with a list of options that can be turned on or off * The `flag' parameter is used to select between radiolist and checklist. */intdialog_checklist (const char *title, const char *prompt, int height, int width,	int list_height, int item_no, const char * const * items, int flag)	{    int i, x, y, box_x, box_y;    int key = 0, button = 0, choice = 0, scroll = 0, max_choice, *status;    WINDOW *dialog, *list;    checkflag = flag;    /* Allocate space for storing item on/off status */    if ((status = malloc (sizeof (int) * item_no)) == NULL) {	endwin ();	fprintf (stderr,		 "\nCan't allocate memory in dialog_checklist().\n");	exit (-1);    }    /* Initializes status */    for (i = 0; i < item_no; i++) {	status[i] = !strcasecmp (items[i * 3 + 2], "on");	if (!choice && status[i])            choice = i;    }    max_choice = MIN (list_height, item_no);    /* center dialog box on screen */    x = (COLS - width) / 2;    y = (LINES - height) / 2;    draw_shadow (stdscr, y, x, height, width);    dialog = newwin (height, width, y, x);    keypad (dialog, TRUE);    draw_box (dialog, 0, 0, height, width, dialog_attr, border_attr);    wattrset (dialog, border_attr);    mvwaddch (dialog, height-3, 0, ACS_LTEE);    for (i = 0; i < width - 2; i++)	waddch (dialog, ACS_HLINE);    wattrset (dialog, dialog_attr);    waddch (dialog, ACS_RTEE);    if (title != NULL && strlen(title) >= width-2 ) {	/* truncate long title -- mec */	char * title2 = malloc(width-2+1);	memcpy( title2, title, width-2 );	title2[width-2] = '\0';	title = title2;    }    if (title != NULL) {	wattrset (dialog, title_attr);	mvwaddch (dialog, 0, (width - strlen(title))/2 - 1, ' ');	waddstr (dialog, (char *)title);	waddch (dialog, ' ');    }    wattrset (dialog, dialog_attr);    print_autowrap (dialog, prompt, width - 2, 1, 3);    list_width = width - 6;    box_y = height - list_height - 5;    box_x = (width - list_width) / 2 - 1;    /* create new window for the list */    list = subwin (dialog, list_height, list_width, y+box_y+1, x+box_x+1);    keypad (list, TRUE);    /* draw a box around the list items */    draw_box (dialog, box_y, box_x, list_height + 2, list_width + 2,	      menubox_border_attr, menubox_attr);    /* Find length of longest item in order to center checklist */    check_x = 0;    for (i = 0; i < item_no; i++) 	check_x = MAX (check_x, + strlen (items[i * 3 + 1]) + 4);    check_x = (list_width - check_x) / 2;    item_x = check_x + 4;    if (choice >= list_height) {	scroll = choice - list_height + 1;	choice -= scroll;    }    /* Print the list */    for (i = 0; i < max_choice; i++) {	print_item (list, items[(scroll+i) * 3 + 1],		    status[i+scroll], i, i == choice);    }    print_arrows(dialog, choice, item_no, scroll,			box_y, box_x + check_x + 5, list_height);    print_buttons(dialog, height, width, 0);    wnoutrefresh (list);    wnoutrefresh (dialog);    doupdate ();    while (key != ESC) {	key = wgetch (dialog);    	for (i = 0; i < max_choice; i++)            if (toupper(key) == toupper(items[(scroll+i)*3+1][0]))                break;	if ( i < max_choice || key == KEY_UP || key == KEY_DOWN || 	    key == '+' || key == '-' ) {	    if (key == KEY_UP || key == '-') {		if (!choice) {		    if (!scroll)			continue;		    /* Scroll list down */		    if (list_height > 1) {			/* De-highlight current first item */			print_item (list, items[scroll * 3 + 1],					status[scroll], 0, FALSE);			scrollok (list, TRUE);			wscrl (list, -1);			scrollok (list, FALSE);		    }		    scroll--;		    print_item (list, items[scroll * 3 + 1],				status[scroll], 0, TRUE);		    wnoutrefresh (list);    		    print_arrows(dialog, choice, item_no, scroll,				box_y, box_x + check_x + 5, list_height);		    wrefresh (dialog);		    continue;	/* wait for another key press */		} else		    i = choice - 1;	    } else if (key == KEY_DOWN || key == '+') {		if (choice == max_choice - 1) {		    if (scroll + choice >= item_no - 1)			continue;		    /* Scroll list up */		    if (list_height > 1) {			/* De-highlight current last item before scrolling up */			print_item (list, items[(scroll + max_choice - 1) * 3 + 1],				    status[scroll + max_choice - 1],				    max_choice - 1, FALSE);			scrollok (list, TRUE);			scroll (list);			scrollok (list, FALSE);		    }		    scroll++;		    print_item (list, items[(scroll + max_choice - 1) * 3 + 1],				status[scroll + max_choice - 1],				max_choice - 1, TRUE);		    wnoutrefresh (list);    		    print_arrows(dialog, choice, item_no, scroll,				box_y, box_x + check_x + 5, list_height);		    wrefresh (dialog);		    continue;	/* wait for another key press */		} else		    i = choice + 1;	    }	    if (i != choice) {		/* De-highlight current item */		print_item (list, items[(scroll + choice) * 3 + 1],			    status[scroll + choice], choice, FALSE);		/* Highlight new item */		choice = i;		print_item (list, items[(scroll + choice) * 3 + 1],			    status[scroll + choice], choice, TRUE);		wnoutrefresh (list);		wrefresh (dialog);	    }	    continue;		/* wait for another key press */	}	switch (key) {	case 'H':	case 'h':	case '?':	    delwin (dialog);	    free (status);	    return 1;	case TAB:	case KEY_LEFT:	case KEY_RIGHT:	    button = ((key == KEY_LEFT ? --button : ++button) < 0)			? 1 : (button > 1 ? 0 : button);	    print_buttons(dialog, height, width, button);	    wrefresh (dialog);	    break;	case 'S':	case 's':	case ' ':	case '\n':	    if (!button) {		if (flag == FLAG_CHECK) {		    status[scroll + choice] = !status[scroll + choice];		    wmove (list, choice, check_x);		    wattrset (list, check_selected_attr);		    wprintw (list, "[%c]", status[scroll + choice] ? 'X' : ' ');		} else {		    if (!status[scroll + choice]) {			for (i = 0; i < item_no; i++)			    status[i] = 0;			status[scroll + choice] = 1;			for (i = 0; i < max_choice; i++)			    print_item (list, items[(scroll + i) * 3 + 1],					status[scroll + i], i, i == choice);		    }		}		wnoutrefresh (list);		wrefresh (dialog);            		for (i = 0; i < item_no; i++) {		    if (status[i]) {			if (flag == FLAG_CHECK) {			    fprintf (stderr, "\"%s\" ", items[i * 3]);			} else {			    fprintf (stderr, "%s", items[i * 3]);			}		    }		}            }	    delwin (dialog);	    free (status);	    return button;	case 'X':	case 'x':	    key = ESC;	case ESC:	    break;	}	/* Now, update everything... */	doupdate ();    }        delwin (dialog);    free (status);    return -1;			/* ESC pressed */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级中文字幕| 亚洲综合免费观看高清在线观看| 在线观看日韩av先锋影音电影院| 99精品视频在线观看| 欧美一区二区三区婷婷月色| 国产精品国产精品国产专区不片| 亚洲第四色夜色| 成人av动漫在线| 欧美精品一区二区精品网| 亚洲免费观看高清完整版在线| 免费一级欧美片在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美日本乱大交xxxxx| 亚洲精品在线三区| 日韩精品久久久久久| 色综合久久综合网欧美综合网 | 懂色av一区二区三区蜜臀| 欧美一区日本一区韩国一区| 成人免费小视频| 国产成人鲁色资源国产91色综| 欧美美女直播网站| 亚洲第一成年网| 欧美三级视频在线观看| 亚洲精品免费在线观看| 99久久久免费精品国产一区二区| 日韩情涩欧美日韩视频| 午夜精品成人在线视频| 在线观看精品一区| 亚洲最新视频在线播放| 91一区二区在线观看| 国产精品福利一区二区| 99久久国产综合精品色伊| 国产精品对白交换视频| 91亚洲精品乱码久久久久久蜜桃 | 成人av在线资源| 国产精品三级在线观看| 波多野结衣在线一区| 中文字幕亚洲在| 色呦呦日韩精品| 一级女性全黄久久生活片免费| 99视频有精品| 又紧又大又爽精品一区二区| 91视频国产观看| 亚洲一区二区在线免费看| 欧美日韩一区二区欧美激情| 日韩国产欧美一区二区三区| 欧美一级二级三级乱码| 韩国成人在线视频| 国产精品美女久久久久aⅴ| av不卡免费在线观看| 一区二区三区蜜桃| 宅男在线国产精品| 激情久久五月天| 自拍视频在线观看一区二区| 91福利视频网站| 奇米影视一区二区三区| 国产亚洲视频系列| 欧洲精品一区二区| 麻豆精品国产传媒mv男同| 国产三级精品三级在线专区| 色偷偷88欧美精品久久久| 五月婷婷综合激情| 久久久激情视频| 欧美亚洲一区二区在线| 狠狠网亚洲精品| 亚洲精品你懂的| 亚洲精品一区二区三区99| 成人av电影在线观看| 丝袜亚洲另类丝袜在线| 久久久精品影视| 欧美日韩国产高清一区二区| 国内成+人亚洲+欧美+综合在线| 国产欧美日韩另类一区| 欧日韩精品视频| 国产精品一区一区三区| 亚洲超碰97人人做人人爱| 久久久久久久综合色一本| 欧美在线制服丝袜| 国模无码大尺度一区二区三区| 亚洲欧洲日产国码二区| 欧美成人女星排名| 色综合天天做天天爱| 国产一区二区三区精品视频| 亚洲va欧美va天堂v国产综合| 精品免费日韩av| 欧美日韩美少妇| 91在线视频观看| 国产麻豆精品95视频| 亚洲国产欧美另类丝袜| 亚洲天堂精品视频| 国产欧美视频一区二区| 欧美电影免费观看完整版| 欧美午夜精品一区| 99麻豆久久久国产精品免费| 国产露脸91国语对白| 日韩av电影免费观看高清完整版在线观看| 久久久亚洲精华液精华液精华液| 91官网在线观看| 99精品视频在线免费观看| 国产精品一区二区久久不卡 | 日韩精品一区二区三区swag| 在线精品观看国产| 一本到不卡免费一区二区| 国产iv一区二区三区| 美女视频免费一区| 丝瓜av网站精品一区二区| 亚洲伊人色欲综合网| 亚洲免费av高清| 亚洲男人的天堂一区二区| 国产精品卡一卡二卡三| 国产精品乱子久久久久| 中文字幕乱码久久午夜不卡 | 中文字幕一区不卡| 中文字幕一区二区三中文字幕| 日韩一区二区在线看片| 日韩一区二区三区视频在线观看| 欧美日韩国产综合久久| 欧美精选在线播放| 欧美一区二区三区视频在线| 欧美一区二区日韩一区二区| 欧美视频在线不卡| 91精品国产综合久久久久| 欧美一区二区三区婷婷月色| 日韩一区二区三区电影| 欧美一级一区二区| 精品国产91九色蝌蚪| 久久亚洲私人国产精品va媚药| 日韩午夜精品电影| 久久婷婷久久一区二区三区| 亚洲国产精品成人久久综合一区| 国产亚洲综合性久久久影院| 国产精品毛片久久久久久| 国产精品私房写真福利视频| 亚洲欧洲日韩综合一区二区| 一区二区三区日韩精品| 日韩精品一二三区| 国产精品一区不卡| 色呦呦一区二区三区| 欧美一区二区在线视频| 精品国产网站在线观看| 国产精品免费网站在线观看| 一区二区三区国产精华| 日韩精品久久久久久| 国产成人精品免费在线| 色av成人天堂桃色av| 91精品麻豆日日躁夜夜躁| 国产三级三级三级精品8ⅰ区| 国产精品久久久久毛片软件| 婷婷亚洲久悠悠色悠在线播放| 日本不卡视频一二三区| 成人午夜精品在线| 欧美二区在线观看| 国产精品亲子乱子伦xxxx裸| 亚洲sss视频在线视频| 国产精品羞羞答答xxdd| 欧美三级电影在线看| 久久综合久色欧美综合狠狠| 亚洲免费观看高清完整版在线| 日韩国产欧美在线播放| 99久久免费视频.com| 日韩欧美精品在线视频| 亚洲卡通动漫在线| 国产一区二区女| 欧美精品一卡二卡| 亚洲视频小说图片| 精品一区二区在线观看| 欧美亚洲国产一区二区三区 | 日韩一级大片在线| 中文字幕制服丝袜成人av | 国产精品免费视频观看| 日本亚洲视频在线| 在线一区二区三区四区五区| 久久亚洲精精品中文字幕早川悠里| 国产精品久久久久四虎| 国产一区二区中文字幕| 欧美一区二区三区在线视频| 曰韩精品一区二区| 成人在线视频一区二区| 精品少妇一区二区三区日产乱码| 亚洲理论在线观看| 99久久久免费精品国产一区二区 | 亚洲图片自拍偷拍| 99国产精品久| 日本一区二区三区免费乱视频 | 91福利视频在线| 国产精品麻豆久久久| 国产精品一二三在| 精品久久久久久久久久久久久久久 | 国产喷白浆一区二区三区| 亚洲一区在线观看网站| 97久久久精品综合88久久| 国产色综合久久| 国产一区二区三区蝌蚪| 精品国产凹凸成av人网站| 日本vs亚洲vs韩国一区三区二区| 91麻豆文化传媒在线观看| 欧美国产成人在线| 国产成人在线电影| 国产欧美日韩久久| 成人av免费在线播放|