⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui.c

📁 一个linux下的二进制文件工具
💻 C
📖 第 1 页 / 共 2 页
字号:
		if (ch==KEY_DELETE && cursorpos+offset!=strlen(newtext)) {			tmp=malloc(strlen(newtext));			for (i=0;i<=strlen(newtext);i++)			{				if (i<=cursorpos+offset) tmp[i]=newtext[i];				else tmp[i-1]=newtext[i];			}			tmp[strlen(newtext)-1]=0;			free(newtext);			newtext=malloc(strlen(tmp)+1);			strncpy(newtext,tmp,strlen(tmp)+1);//			ch=KEY_LEFT;					}		if (printable(ch) && strlen(newtext)<max)		{				tmp=malloc(strlen(newtext)+2);			for (i=0;i<strlen(newtext);i++)			{				if (i<cursorpos+offset) tmp[i]=newtext[i];				else tmp[i+1]=newtext[i];			}			tmp[cursorpos+offset]=ch;			tmp[strlen(newtext)+1]=0;			free(newtext);			newtext=malloc(strlen(tmp)+1);			strncpy(newtext,tmp,strlen(tmp)+1);						free(tmp);				ch=KEY_RIGHT;		}		if (ch==KEY_LEFT) {			if (cursorpos) {				cursorpos--;			} else {				if (offset) {					offset--;				}			}		}		if (ch==KEY_RIGHT && cursorpos+offset<strlen(newtext)) {			cursorpos++;			if (cursorpos > len) {					cursorpos=len;				offset++;				if (offset > strlen(newtext)-len) {				  offset=strlen(newtext)-len;				}			}		}		if (ch!=KEY_ESC && ch!=KEY_RETURN) ch=0;	}	if (ch==KEY_ESC)	{		free(newtext);		newtext=malloc(strlen(text)+1);		strncpy(newtext,text,strlen(text)+1);	}			wattrset(parent_window,attrs[COLOR_TEXT]);	wmove(parent_window,0,0);	mvwaddch(parent_window,0,0,'=');#if 0		for (i=0;i<max;i++)	{		if (i>=0 && i<=len) mvwaddch(parent_window,y,x+i,' ');	}		wrefresh(parent_window);	mvwaddch(parent_window,0,0,' ');	wrefresh(parent_window);	mvwaddch(parent_window,1,1,'=');#endif			for (i=0;i<max;i++) {		if (i<=len) {		  mvwaddch(parent_window,y,x+i,textfield[i]);		}	}	wrefresh(parent_window);	mvwaddch(parent_window,0,0,' ');	wmove(parent_window,0,0);	wrefresh(parent_window);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	wmove(parent_window,y,x);	return newtext;}char *input(WINDOW *parent_window,int y,int x, unsigned int len,const char *text, unsigned int max){	return input2(parent_window,y,x,len,text,max,0,0);}void new_menu(int updown_nleftright){	MENU_num=0;	MENU_pos=0;	MENU_updown_nleftright=updown_nleftright;}void menu_item(unsigned int pos,int y,int x,char *text, char hotkey1,char hotkey2,char hotkey3){	if (pos >= MENU_num) MENU_num=pos+1;	MENU_xpos[pos]=x;	MENU_ypos[pos]=y;	free(MENU_text[pos]);	MENU_text[pos]=malloc(strlen(text)+1);	strncpy(MENU_text[pos],text,strlen(text)+1);	MENU_hotkey1[pos]=hotkey1;	MENU_hotkey2[pos]=hotkey2;	MENU_hotkey3[pos]=hotkey3;}int menu_show(WINDOW *parent_window){	unsigned int i;	unsigned int j;	int old_pos=0;		int ch=0;	for (i=0; i < MENU_num; i++) {		wattrset(parent_window,attrs[COLOR_MENU]);			wmove(parent_window,MENU_ypos[i],MENU_xpos[i]);		for (j=0; j < strlen(MENU_text[i]); j++)		{						if (j!=0) {			  if (MENU_text[i][j-1]=='%') {				wattrset(parent_window,attrs[COLOR_MENU_HOTKEY]); 			  }			}			if (MENU_text[i][j]!='%') {			  waddch(parent_window,MENU_text[i][j]);			}			if (j!=0) {			  if (MENU_text[i][j-1]=='%') {				wattrset(parent_window,attrs[COLOR_MENU]); 			  }			}		}			}	while (ch!=KEY_RETURN)	{		i=old_pos;		wattrset(parent_window,attrs[COLOR_MENU]);			wmove(parent_window,MENU_ypos[i],MENU_xpos[i]);		for (j=0;j<strlen(MENU_text[i]);j++)		{						if (j!=0) if (MENU_text[i][j-1]=='%') wattrset(parent_window,attrs[COLOR_MENU_HOTKEY]); 			if (MENU_text[i][j]!='%') waddch(parent_window,MENU_text[i][j]);			if (j!=0) if (MENU_text[i][j-1]=='%') wattrset(parent_window,attrs[COLOR_MENU]); 								}				i=MENU_pos;		wattrset(parent_window,attrs[COLOR_MENU_HI]);			wmove(parent_window,MENU_ypos[i],MENU_xpos[i]);		for (j=0;j<strlen(MENU_text[i]);j++)		{						if (j!=0) if (MENU_text[i][j-1]=='%') wattrset(parent_window,attrs[COLOR_MENU_HOTKEY_HI]); 			if (MENU_text[i][j]!='%') waddch(parent_window,MENU_text[i][j]);			if (j!=0) if (MENU_text[i][j-1]=='%') wattrset(parent_window,attrs[COLOR_MENU_HI]); 		}				old_pos=MENU_pos;		wrefresh(parent_window);		ch=getch2();		if ((ch==KEY_UP && MENU_updown_nleftright==1) || (ch==KEY_LEFT && MENU_updown_nleftright==0)) {			if (MENU_pos) {			  MENU_pos--;			} else {			  if (MENU_num) {				  MENU_pos=MENU_num-1;			  }			}		}		if ((ch==KEY_DOWN && MENU_updown_nleftright==1) || (ch==KEY_RIGHT && MENU_updown_nleftright==0)) {			MENU_pos++;			if (MENU_pos >= MENU_num) {			  MENU_pos=0;			}		}		for (i=0; i < MENU_num; i++)		{			if (ch==MENU_hotkey1[i] || ch==MENU_hotkey2[i] || MENU_hotkey3[i]) {			  ch=KEY_RETURN;			  MENU_pos=i;			}				}	}		i=old_pos;	wattrset(parent_window,attrs[COLOR_MENU]);		wmove(parent_window,MENU_ypos[i],MENU_xpos[i]);	for (j=0;j<strlen(MENU_text[i]);j++)	{				if (j!=0) if (MENU_text[i][j-1]=='%') wattrset(parent_window,attrs[COLOR_MENU_HOTKEY]); 		if (MENU_text[i][j]!='%') waddch(parent_window,MENU_text[i][j]);		if (j!=0) if (MENU_text[i][j-1]=='%') wattrset(parent_window,attrs[COLOR_MENU]); 					}			i=MENU_pos;	wattrset(parent_window,attrs[COLOR_MENU_HI]);		wmove(parent_window,MENU_ypos[i],MENU_xpos[i]);	for (j=0;j<strlen(MENU_text[i]);j++)	{				if (j!=0) if (MENU_text[i][j-1]=='%') wattrset(parent_window,attrs[COLOR_MENU_HOTKEY_HI]); 		if (MENU_text[i][j]!='%') waddch(parent_window,MENU_text[i][j]);		if (j!=0) if (MENU_text[i][j-1]=='%') wattrset(parent_window,attrs[COLOR_MENU_HI]); 	}			wrefresh(parent_window);	return MENU_pos;	}void draw_frame(WINDOW *parent_window,int y1,int x1,int y2,int x2,char fillcharacter){	int z;	int i;	if (x2<x1) { z=x1; x1=x2; x2=z; }	if (y2<y1) { z=y1; y1=y2; y2=z; }	wattrset(parent_window,attrs[COLOR_FRAME]);	mvwaddch(parent_window,y1,x1,ACS_ULCORNER);	mvwaddch(parent_window,y2,x1,ACS_LLCORNER);	mvwaddch(parent_window,y1,x2,ACS_URCORNER);	mvwaddch(parent_window,y2,x2,ACS_LRCORNER);	wmove(parent_window,y1,x1+1);	for (z=x1+1;z<x2;z++) waddch(parent_window,ACS_HLINE);		wmove(parent_window,y2,x1+1);	for (z=x1+1;z<x2;z++) waddch(parent_window,ACS_HLINE);		for (z=y1+1;z<y2;z++)	{		wmove(parent_window,z,x1);		waddch(parent_window,ACS_VLINE);		if (fillcharacter!=0) {			for (i=x1+1;i<x2;i++) waddch(parent_window,fillcharacter);			} else {			wmove(parent_window,z,x1);		}		waddch(parent_window,ACS_VLINE);		}	}void erase_frame(WINDOW *parent_window,int y1,int x1,int y2,int x2,char fillcharacter){	int z;	int i;	if (x2<x1) { z=x1; x1=x2; x2=z; }	if (y2<y1) { z=y1; y1=y2; y2=z; }	wattrset(parent_window,attrs[COLOR_FRAME]);	mvwaddch(parent_window,y1,x1,ACS_ULCORNER);	mvwaddch(parent_window,y2,x1,ACS_LLCORNER);	mvwaddch(parent_window,y1,x2,ACS_URCORNER);	mvwaddch(parent_window,y2,x2,ACS_LRCORNER);	wmove(parent_window,y1,x1+1);	for (z=y1;z<=y2;z++)	{		wmove(parent_window,z,x1);		if (fillcharacter!=0) {			for (i=x1;i<=x2;i++) waddch(parent_window,fillcharacter);			} else {			wmove(parent_window,z,x1);		}	}	}void headline(WINDOW *parent_window,int y,int x,const char* text){	wattrset(parent_window,attrs[COLOR_HEADLINE]);	mvwprintw(parent_window,y,x+2,"%s",text);	wattrset(parent_window,attrs[COLOR_BRACKETS]);	wmove(parent_window,y,x+1);	waddch(parent_window,'[');	wmove(parent_window,y,x+2+strlen(text));	waddch(parent_window,']');}void draw_mainheadline(WINDOW *parent_window,int y,char *text){	int z;	wmove(parent_window,y,0);	wattrset(parent_window,attrs[COLOR_FRAME]);	for (z=0;z<COLS;z++) waddch(parent_window,ACS_HLINE);		headline(parent_window,y,COLS-strlen(text)-4,text);	}void uimain(void){	(void) signal(SIGINT, finish);	(void) initscr();//	setupterm("xterm-color",1,(int *)0);	keypad (stdscr,TRUE);	(void) nonl();	(void) cbreak();	(void) noecho();	if (has_colors())	{		start_color();		}	init_colors();//	} else {//		endwin();//		fprintf(stderr,"sorry... i need colors... (try using export TERM=xterm-color)\n");	//		byebye(1);//	}	wclear(stdscr);		wrefresh(stdscr);}void finish(int sig){	endwin();	byebye(sig);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -