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

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

?? checklist.c

?? fsmlabs的real time linux的內核
?? 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);}/* * 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);    }    wnoutrefresh (list);    print_arrows(dialog, choice, item_no, scroll,			box_y, box_x + check_x + 5, list_height);    print_buttons(dialog, height, width, 0);    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;	}    }    delwin (dialog);    free (status);    return -1;			/* ESC pressed */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产伦一区二区三区观看体验| 久久九九久精品国产免费直播| 一区二区三区免费观看| 91精品一区二区三区久久久久久 | 欧美va日韩va| 丰满少妇在线播放bd日韩电影| 亚洲精选免费视频| 在线电影院国产精品| 国产一区二区三区免费观看| 日韩毛片一二三区| 日韩女优视频免费观看| 色综合欧美在线| 精品一区二区精品| 亚洲国产三级在线| 国产精品无圣光一区二区| 欧美日本国产一区| 成人开心网精品视频| 亚洲嫩草精品久久| 久久婷婷国产综合国色天香| 成人一级视频在线观看| 奇米影视一区二区三区| 综合自拍亚洲综合图不卡区| 日韩视频不卡中文| 欧美亚洲国产一区二区三区va| 国产一区二区三区在线观看免费视频| 一区二区三区在线视频观看58| 26uuu精品一区二区三区四区在线| 99在线精品一区二区三区| 捆绑紧缚一区二区三区视频| 亚洲宅男天堂在线观看无病毒| 国产欧美一区二区精品久导航| 在线成人av网站| 日本电影亚洲天堂一区| 高清视频一区二区| 久久国产麻豆精品| 夜夜揉揉日日人人青青一国产精品| 亚洲精品一区二区在线观看| 欧美精品乱人伦久久久久久| 色偷偷久久人人79超碰人人澡| 国产乱妇无码大片在线观看| 免费在线观看精品| 亚洲成人免费电影| 亚洲尤物在线视频观看| 亚洲天堂网中文字| 国产精品不卡视频| 国产女人18毛片水真多成人如厕 | 久久久久免费观看| 欧美一区二区三区啪啪| 欧美日韩色一区| 99久久久久久| 成人午夜免费视频| 国产风韵犹存在线视精品| 日韩av电影一区| 免费成人在线网站| 久久99精品国产麻豆婷婷| 日韩国产高清影视| 久久成人精品无人区| 久久精品72免费观看| 久久精品99久久久| 久久精品噜噜噜成人88aⅴ| 秋霞午夜鲁丝一区二区老狼| 五月婷婷综合激情| 一区二区三区欧美久久| 一区二区三区四区高清精品免费观看| 亚洲女同ⅹxx女同tv| 亚洲精品综合在线| 午夜精品福利一区二区三区蜜桃| 一区二区三区久久| 午夜一区二区三区在线观看| 亚洲五月六月丁香激情| 日韩电影一区二区三区四区| 美女诱惑一区二区| 日韩国产在线观看| 一区二区三区产品免费精品久久75| 亚洲精品免费播放| 五月婷婷激情综合网| 久久激情五月婷婷| 东方aⅴ免费观看久久av| 久久久久久**毛片大全| 中文字幕精品三区| 亚洲免费视频中文字幕| 午夜在线电影亚洲一区| 久久成人麻豆午夜电影| 韩国av一区二区三区在线观看| 五月天视频一区| 国内精品写真在线观看| 成人国产亚洲欧美成人综合网| 欧美午夜精品一区二区蜜桃| 欧美丝袜自拍制服另类| 欧美人妇做爰xxxⅹ性高电影| 日韩欧美国产高清| 国产精品高潮呻吟| 亚洲午夜一区二区| 国产永久精品大片wwwapp| 99久久免费视频.com| 欧美午夜免费电影| 精品少妇一区二区三区免费观看 | 一区二区三区四区激情| 秋霞午夜鲁丝一区二区老狼| 免费成人深夜小野草| 成人午夜又粗又硬又大| 欧美日韩一区视频| 久久一留热品黄| 亚洲综合成人网| 蜜桃av噜噜一区| 成人激情免费视频| 日韩天堂在线观看| 一区二区三区在线播放| 久热成人在线视频| 91网站在线播放| 欧美电影免费观看高清完整版在线 | 日韩精品专区在线影院观看| 中文字幕一区在线观看| 亚洲二区在线视频| 精品国产乱码91久久久久久网站| 国产精品家庭影院| 日韩av电影天堂| 91极品视觉盛宴| 国产亚洲精品7777| 日本韩国精品在线| 日韩理论片中文av| 国产成人在线免费观看| 色综合天天在线| 国产精品欧美一区二区三区| 日韩在线一区二区三区| 99麻豆久久久国产精品免费| 国产婷婷一区二区| 韩国欧美一区二区| 日韩精品中文字幕一区二区三区| 亚洲国产成人精品视频| 色www精品视频在线观看| 国产午夜精品久久久久久免费视| 亚洲一区二区三区不卡国产欧美| 色综合久久久久| 中文字幕av不卡| 亚洲欧美韩国综合色| 色菇凉天天综合网| 亚洲人一二三区| 在线一区二区观看| 亚洲激情男女视频| 91丨porny丨国产入口| 亚洲日本电影在线| 色综合久久88色综合天天| 自拍偷在线精品自拍偷无码专区| 91浏览器在线视频| 成人欧美一区二区三区视频网页| 狠狠色丁香婷婷综合| 欧美成人vps| 国产一本一道久久香蕉| 精品久久一区二区| 黑人巨大精品欧美一区| 精品对白一区国产伦| 国产一区二区调教| 国产欧美日韩精品在线| 国产成人精品一区二区三区四区| 777亚洲妇女| 美女视频黄频大全不卡视频在线播放| 91精品国产欧美一区二区18| 日韩在线一区二区三区| 日韩欧美一区二区三区在线| 麻豆国产91在线播放| 337p粉嫩大胆色噜噜噜噜亚洲| 精品中文av资源站在线观看| 久久久国产午夜精品| 国产一区二区电影| 精品黑人一区二区三区久久| 狠狠狠色丁香婷婷综合激情| 日本一区二区三区高清不卡| 午夜伊人狠狠久久| 久久久久国产精品厨房| 99久久免费国产| 日本中文字幕不卡| 久久精品视频一区| 欧美性猛交xxxx乱大交退制版| 麻豆精品一区二区综合av| 中文天堂在线一区| 欧美性高清videossexo| 国产精品一区二区三区网站| 亚洲欧洲综合另类在线| 精品免费视频一区二区| 91丨porny丨国产入口| 青青青爽久久午夜综合久久午夜| 亚洲国产成人午夜在线一区| 欧美三级日本三级少妇99| 国产在线麻豆精品观看| 亚洲一区二区三区中文字幕| 久久综合视频网| 欧美色窝79yyyycom| 夫妻av一区二区| 日韩经典中文字幕一区| 成人免费小视频| 亚洲va中文字幕| 中文字幕亚洲一区二区va在线| 日韩一二三四区| 欧美自拍偷拍午夜视频| 国产**成人网毛片九色 | 亚洲成人777| 国产精品精品国产色婷婷| 欧美大片顶级少妇| 色综合久久综合网97色综合 |