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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? checklist.c

?? 嵌入式LINUX中瑞士軍刀BusyBox源碼
?? C
字號(hào):
/* *  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, struct dialog_list_item ** 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] = (items[i]->selected == 1); /* ON */	if ((!choice && status[i]) || items[i]->selected == 2) /* SELECTED */            choice = i + 1;    }    if (choice)	    choice--;    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]->name) + 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]->name,		    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]->name[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]->name,					status[scroll], 0, FALSE);			scrollok (list, TRUE);			wscrl (list, -1);			scrollok (list, FALSE);		    }		    scroll--;		    print_item (list, items[scroll]->name,				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]->name,				    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]->name,				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]->name,			    status[scroll + choice], choice, FALSE);		/* Highlight new item */		choice = i;		print_item (list, items[scroll + choice]->name,			    status[scroll + choice], choice, TRUE);		wnoutrefresh (list);		wrefresh (dialog);	    }	    continue;		/* wait for another key press */	}	switch (key) {	case 'H':	case 'h':	case '?':	    for (i = 0; i < item_no; i++)		items[i]->selected = 0;	    items[scroll + choice]->selected = 1;	    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]->name,					status[scroll + i], i, i == choice);		    }		}		wnoutrefresh (list);		wrefresh (dialog);            		for (i = 0; i < item_no; i++) {			items[i]->selected = status[i];		}            } else {		    for (i = 0; i < item_no; i++)			    items[i]->selected = 0;		    items[scroll + choice]->selected = 1;	    }	    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 */}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美另类久久久品| 精品成a人在线观看| 狠狠色丁香婷婷综合| 国产精品久久久久精k8 | 国产综合久久久久久鬼色| 亚洲欧洲日韩女同| 欧美成人综合网站| 日本韩国欧美一区| 国产成人aaa| 美女网站色91| 亚洲激情校园春色| 国产无一区二区| 日韩欧美的一区二区| 欧美日韩亚洲丝袜制服| av不卡一区二区三区| 国产一区二区三区在线观看免费| 无吗不卡中文字幕| 一区二区三区电影在线播| 国产欧美精品区一区二区三区| 制服视频三区第一页精品| 91香蕉视频在线| 国产电影一区在线| 精品一区二区久久久| 日韩国产精品久久| 性做久久久久久免费观看欧美| 国产精品久久久久久亚洲毛片| 精品国产123| 日韩精品一区二区三区中文精品 | 国产精品色一区二区三区| 26uuu精品一区二区在线观看| 欧美一区二区三区视频免费播放| 欧美午夜视频网站| 欧美日韩一区中文字幕| 欧美三级日本三级少妇99| 在线观看不卡一区| 欧美亚州韩日在线看免费版国语版| 99精品1区2区| 色综合天天做天天爱| 91原创在线视频| 91香蕉视频黄| 色呦呦网站一区| 色综合久久久久| 91精品福利在线| 欧美日韩午夜影院| 欧美精品 日韩| 7878成人国产在线观看| 欧美精品v国产精品v日韩精品 | ww亚洲ww在线观看国产| 精品日韩av一区二区| 精品美女一区二区三区| www国产亚洲精品久久麻豆| 国产亚洲精品aa午夜观看| 国产日韩欧美激情| 中文字幕在线观看一区| 亚洲欧美日韩国产手机在线| 亚洲亚洲精品在线观看| 日韩不卡在线观看日韩不卡视频| 蜜桃视频第一区免费观看| 国产精品综合久久| 粉嫩高潮美女一区二区三区 | 欧美日韩在线不卡| 91精品国产91久久久久久一区二区 | 中文字幕精品一区二区三区精品 | 国产三级欧美三级日产三级99| 中文字幕精品—区二区四季| 亚洲欧美日韩系列| 午夜精品一区二区三区三上悠亚| 奇米影视一区二区三区小说| 国产一区二区三区蝌蚪| 99久久国产综合精品色伊| 欧美体内she精高潮| 日韩欧美一级精品久久| 国产午夜亚洲精品理论片色戒| 综合婷婷亚洲小说| 蜜芽一区二区三区| 成人免费毛片嘿嘿连载视频| 在线观看亚洲a| 精品美女在线播放| 日韩三级高清在线| 精品剧情v国产在线观看在线| 国产亚洲精品中文字幕| 一区二区三区免费观看| 美女国产一区二区三区| 成人短视频下载| 91精品国产一区二区三区蜜臀| 久久精品日产第一区二区三区高清版 | 99久久精品国产观看| 欧美乱妇20p| 国产欧美精品日韩区二区麻豆天美| 夜夜精品浪潮av一区二区三区| 韩国av一区二区三区在线观看| 色噜噜狠狠成人网p站| 精品国产一二三区| 亚洲自拍偷拍欧美| 国产伦精品一区二区三区免费迷| 在线观看免费亚洲| 国产视频一区在线观看| 日韩精品亚洲专区| 91丨九色丨蝌蚪富婆spa| www国产亚洲精品久久麻豆| 亚洲一区二区在线观看视频| 国产在线一区二区综合免费视频| 在线看国产日韩| 国产精品传媒在线| 久久国产综合精品| 欧美日韩在线电影| 亚洲美女少妇撒尿| 国产成人综合精品三级| 欧美精品tushy高清| 一区二区三区在线不卡| 盗摄精品av一区二区三区| 精品国产伦一区二区三区观看体验| 亚洲一区二区精品3399| av亚洲精华国产精华精| 久久久不卡网国产精品一区| 蜜桃久久久久久| 欧美日韩一级黄| 一区二区三区在线视频观看58 | 99re热视频精品| 久久丝袜美腿综合| 麻豆精品一区二区三区| 欧美精品一二三| 亚洲高清免费一级二级三级| 色综合久久久久久久| 亚洲欧洲三级电影| 99久久免费精品| 国产精品萝li| 成人午夜视频网站| 国产精品美女一区二区在线观看| 国产在线播放一区二区三区| 欧美精品一区二区三区视频 | 青青草原综合久久大伊人精品优势| 91蝌蚪porny成人天涯| 中文字幕一区二区在线观看| 国产另类ts人妖一区二区| 久久久亚洲国产美女国产盗摄 | 波多野结衣欧美| 国产精品私房写真福利视频| 成人综合在线网站| 国产精品美女久久福利网站| 成人黄动漫网站免费app| 中文字幕不卡三区| 99久久精品国产导航| 亚洲欧美日韩国产综合在线| 色综合一区二区三区| 亚洲影院理伦片| 欧美男同性恋视频网站| 奇米精品一区二区三区在线观看一| 日韩一区二区精品葵司在线| 麻豆国产91在线播放| 亚洲精品在线电影| www.一区二区| 一区二区三区鲁丝不卡| 欧美日韩国产大片| 麻豆91免费看| 久久亚洲捆绑美女| 成人免费视频网站在线观看| 亚洲精品美腿丝袜| 欧美一级艳片视频免费观看| 精品亚洲国产成人av制服丝袜 | 午夜国产精品影院在线观看| 欧美一三区三区四区免费在线看| 美脚の诱脚舐め脚责91 | 亚洲v日本v欧美v久久精品| 欧美日韩精品系列| 老司机精品视频在线| 国产三级精品视频| 欧美制服丝袜第一页| 免费欧美在线视频| 中文字幕乱码一区二区免费| 欧美性视频一区二区三区| 蜜臀av亚洲一区中文字幕| 日本一区二区三区国色天香| 欧美色网一区二区| 国产永久精品大片wwwapp| 亚洲欧美偷拍三级| 日韩欧美国产三级| 99久久精品久久久久久清纯| 日本在线观看不卡视频| 中文字幕第一区第二区| 在线播放91灌醉迷j高跟美女| 国产一区二区三区免费看| 亚洲综合视频在线观看| 久久免费看少妇高潮| 日本韩国一区二区| 国产在线精品一区在线观看麻豆| 亚洲三级免费观看| 精品国产一区二区三区久久久蜜月| 91在线观看高清| 国产露脸91国语对白| 五月激情丁香一区二区三区| 国产精品久久久久久户外露出 | 国产精品自拍av| 一区二区三区四区精品在线视频| 精品日韩在线观看| 欧美日韩国产成人在线91| av电影天堂一区二区在线| 欧美96一区二区免费视频| 一区二区三区小说| 亚洲国产激情av|