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

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

?? checklist.c

?? linux的常用系統工具:busybox源碼
?? 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, 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 */}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久影院亚瑟| 97精品久久久久中文字幕| 99热精品国产| 26uuu亚洲综合色欧美| 一区二区三区国产精华| 国产久卡久卡久卡久卡视频精品| 欧洲一区二区三区免费视频| 国产欧美日韩在线观看| 久久不见久久见免费视频1| 在线免费观看日韩欧美| 国产精品私人影院| 狠狠色丁香婷婷综合| 日韩午夜av一区| 亚洲午夜免费视频| 欧美亚洲另类激情小说| 国产精品久久久久aaaa樱花| 国产成人小视频| 久久亚洲二区三区| 美女一区二区在线观看| 欧美一区在线视频| 午夜久久久久久| 欧美色网站导航| 一区二区三区日韩欧美精品| 一本色道**综合亚洲精品蜜桃冫| 久久久国产精品午夜一区ai换脸| 免费的国产精品| 日韩欧美在线网站| 麻豆精品在线播放| 精品人在线二区三区| 韩国三级电影一区二区| 久久综合九色综合97婷婷| 久久99精品国产麻豆不卡| 日韩一区二区电影在线| 亚洲私人影院在线观看| 国产99精品国产| 久久久99精品久久| 国产精品88av| 中文字幕一区二区三区不卡| 99久久精品国产麻豆演员表| 亚洲同性gay激情无套| av电影在线观看不卡| 亚洲人123区| 欧美性猛交xxxxxxxx| 一区二区三区色| 欧洲精品在线观看| 日本va欧美va欧美va精品| 日韩精品一区二区三区视频在线观看| 九九精品视频在线看| 国产日韩一级二级三级| 91在线视频官网| 亚洲高清免费视频| 久久影院电视剧免费观看| 国产美女娇喘av呻吟久久| 国产精品三级av在线播放| 一本久久综合亚洲鲁鲁五月天| 午夜一区二区三区在线观看| 精品三级av在线| 99re亚洲国产精品| 日韩国产欧美在线观看| 欧美—级在线免费片| 欧美无砖砖区免费| 激情文学综合插| 一区二区三区四区不卡在线| 日韩一二在线观看| 99久久精品情趣| 日韩激情一二三区| 亚洲欧洲av另类| 精品国产91乱码一区二区三区| 成人动漫中文字幕| 日产欧产美韩系列久久99| 亚洲欧洲国产日韩| 日韩精品中文字幕一区二区三区| av电影在线观看一区| 久热成人在线视频| 一区二区在线观看视频在线观看| xnxx国产精品| 欧美综合天天夜夜久久| 国产999精品久久久久久绿帽| 日韩国产欧美一区二区三区| 国产精品免费aⅴ片在线观看| 欧美一区在线视频| 在线免费观看视频一区| 国产激情视频一区二区三区欧美| 日韩av午夜在线观看| 亚洲免费观看高清完整 | 国产日韩欧美精品在线| 欧美亚洲图片小说| 97久久久精品综合88久久| 激情深爱一区二区| 日韩av一区二| 亚洲一级在线观看| 1024亚洲合集| 欧美国产乱子伦| 精品少妇一区二区三区免费观看| 欧美日韩国产在线观看| 91热门视频在线观看| 成人精品免费看| 国产精品一二一区| 久久精品国产久精国产爱| 婷婷成人激情在线网| 一区二区三区四区不卡在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 欧美午夜影院一区| 国内精品国产成人国产三级粉色| 五月天久久比比资源色| 亚洲欧美韩国综合色| 国产欧美一区二区精品久导航| 精品国产不卡一区二区三区| 日韩欧美国产一区二区三区| 7777精品久久久大香线蕉| 精品视频全国免费看| 欧美午夜片在线看| 欧美日韩一区高清| 精品视频在线看| 777亚洲妇女| 欧美电视剧在线观看完整版| 91精品欧美福利在线观看| 欧美日韩国产片| 91麻豆精品91久久久久同性| 欧美剧在线免费观看网站| 91精品国产色综合久久不卡蜜臀| 欧美理论在线播放| 欧美剧情片在线观看| 欧美电影免费观看高清完整版在线观看| 欧美伦理影视网| 欧美r级在线观看| 国产拍揄自揄精品视频麻豆| 国产精品九色蝌蚪自拍| 亚洲综合视频网| 日韩精品一二区| 国产乱码精品1区2区3区| 不卡一二三区首页| 欧美日韩www| 2023国产精华国产精品| 国产精品乱码人人做人人爱| 亚洲丰满少妇videoshd| 精品一区二区三区久久| 成人av在线资源网站| 欧美在线视频不卡| 26uuu欧美日本| 国产精品久久久久桃色tv| 亚洲香蕉伊在人在线观| 激情久久久久久久久久久久久久久久| 国产成人精品一区二| 日本韩国视频一区二区| 欧美一级欧美三级| 中文字幕免费在线观看视频一区| 亚洲精品久久久久久国产精华液| 日本午夜一区二区| 成人精品视频一区二区三区 | 国产精品乱码妇女bbbb| 洋洋成人永久网站入口| 国产在线视频一区二区三区| 99re热这里只有精品视频| 日韩欧美专区在线| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲精选在线视频| 国产中文字幕精品| 在线观看一区二区视频| 国产亚洲综合在线| 婷婷开心激情综合| 99久久婷婷国产| 精品久久久久av影院| 日韩美女视频一区二区 | 色香蕉久久蜜桃| www国产成人| 日本大胆欧美人术艺术动态| 97超碰欧美中文字幕| 久久精品综合网| 美女被吸乳得到大胸91| 91国产丝袜在线播放| 国产人成一区二区三区影院| 麻豆精品视频在线观看免费| 一本一本大道香蕉久在线精品 | 久久精品一级爱片| 石原莉奈在线亚洲三区| 91在线视频播放| 欧美国产成人精品| 国产在线一区观看| 日韩免费在线观看| 日日摸夜夜添夜夜添精品视频| 一本一道波多野结衣一区二区| 欧美高清一级片在线观看| 国产一区二区三区四区在线观看| 欧美精品久久一区| 亚洲午夜视频在线观看| 色婷婷国产精品| 亚洲欧美乱综合| 91小视频在线观看| 国产精品成人在线观看| 国产精品538一区二区在线| 日韩午夜精品电影| 免费观看30秒视频久久| 欧美一区二区日韩| 爽好久久久欧美精品| 91精品欧美综合在线观看最新| 日韩精品久久理论片| 91精品在线观看入口| 麻豆国产一区二区| 精品国产乱码91久久久久久网站|