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

📄 edit.cc

📁 linux/unix下的txt浏览器
💻 CC
📖 第 1 页 / 共 3 页
字号:
    mvwaddstr(ws,14,30,"ALT_E");
    mvwaddstr(ws,15,1,"PAGE");
    mvwaddstr(ws,15,30,"ALT_P");
    mvwaddstr(ws,16,1,"HELP");
    mvwaddstr(ws,16,30,"ALT_H");

    mvwaddstr(ws,4,45,"EDIT OPTIONS");
    mvwaddstr(ws,5,40,"INSERT WORD");
    mvwaddstr(ws,5,70,"CNTRL_A");
    mvwaddstr(ws,6,40,"INSERT LINE");
    mvwaddstr(ws,6,70,"CNTRL_L");
    mvwaddstr(ws,7,40,"DELETE WORD");
    mvwaddstr(ws,7,70,"CNTRL_W");
    mvwaddstr(ws,8,40,"DELETE LINE");
    mvwaddstr(ws,8,70,"CNTRL_Y");
    mvwaddstr(ws,9,40,"BEGIN");
    mvwaddstr(ws,9,70,"CNTRL_B");
    mvwaddstr(ws,10,40,"END");
    mvwaddstr(ws,10,70,"CNTRL_E");

    mvwaddstr(ws,12,45,"PAGE OPTIONS");
    mvwaddstr(ws,13,40,"FORE GROUND COLOR");
    mvwaddstr(ws,13,70,"F7");
    mvwaddstr(ws,14,40,"BACK GROUND COLOR");
    mvwaddstr(ws,14,70,"F8");
    mvwaddstr(ws,15,40,"SET LEFT MARGIN");
    mvwaddstr(ws,15,70,"F9");
    mvwaddstr(ws,16,40,"SET RIGHT MARGIN");
    mvwaddstr(ws,16,70,"F10");
    mvwaddstr(ws,17,40,"SET TOP MARGIN");
    mvwaddstr(ws,17,70,"F11");
    mvwaddstr(ws,18,40,"SET BOTTOM MARGIN");
    mvwaddstr(ws,18,70,"F12");

    wbkgd(ws,COLOR_PAIR(5));
    box(ws,0,0);
    mvwaddstr(ws,0,34,"HELP FILE");
    mvwchgat(ws,0,34,9,A_NORMAL|A_BOLD,11,NULL);
    mvwchgat(ws,4,1,20,A_NORMAL|A_BOLD,11,NULL);
    mvwchgat(ws,12,1,20,A_NORMAL|A_BOLD,11,NULL);
    mvwchgat(ws,4,40,20,A_NORMAL|A_BOLD,11,NULL);
    mvwchgat(ws,12,40,20,A_NORMAL|A_BOLD,11,NULL);
    wrefresh(ws);
    
    c = wgetch(ws);

    return;
}

int list :: open_file(WINDOW *main,int pl)
{
    WINDOW *ws;
    int c;
    char cl[] = "clear";
    char st[20][50] ={" NEW FILE       ^N"," OPEN FILE      F3"," SAVE FILE      F2"," SAVE AS"," CLOSE FILE     F4",
    " DELETE FILE    F5"," EXIT        ALT_X"};
    
    ws = subwin(main,15,20,1,0);
    werase(ws);
    box(ws,0,0);    
    init_pair(6,COLOR_BLACK,COLOR_CYAN);	
    wbkgd(ws,COLOR_PAIR(6));
    
    mvwaddstr(ws,1,2,"NEW FILE       ^N");
    mvwaddstr(ws,2,1,"------------------");

    mvwaddstr(ws,3,2,"OPEN FILE     F3");
    mvwaddstr(ws,4,1,"------------------");

    mvwaddstr(ws,5,2,"SAVE FILE      F2");
    mvwaddstr(ws,6,1,"------------------");
    
    mvwaddstr(ws,7,2,"SAVE AS");
    mvwaddstr(ws,8,1,"------------------");

    mvwaddstr(ws,9,2,"CLOSE FILE     F4");
    mvwaddstr(ws,10,1,"------------------");
    
    mvwaddstr(ws,11,2,"DELETE FILE    F5");
    mvwaddstr(ws,12,1,"------------------");
    
    mvwaddstr(ws,13,2,"EXIT        ALT_X");
    
    keypad(ws,TRUE);
    wmove(ws,1,1);
    wrefresh(ws);
    int a = 1,b = 1;
    curs_set(0);
    
    if(pl == 1)
    {
    while(1)
    {
	wmove(ws,a,b);
	blockwin(ws,st,a,13);
	c = wgetch(ws);
	wrefresh(ws);
		
	switch(c)
	{
	    case (KEY_RIGHT) :
		return 2;
	
	    case (KEY_LEFT) :
		return 4;
		
	    case (KEY_UP):
		if (a == 1)	a = 13;
		else 
	    	    a = a - 2;
		break;

	    case (KEY_DOWN):
		if (a == 13)	a = 1;
		else a = a + 2;
		break;
    
	    case 10 :
		curs_set(1);
		if (a == 1)   
		{
		    if (save == 0)
			nsave(main);

		    strcpy(name,"noname");
		    inwin(main);
		}
		else if (a == 3) 
		{
		    if(save == 0)
			nsave(main);
		    open_win(main);
		}
		else if (a == 5) fsave(main);
		else if (a == 7) 
		{
		    strcpy(name,"noname");
		    fsave(main);
		}
		else if (a == 9) 
		{
		    if(save == 0)
			nsave(main);
			
		    strcpy(name,"noname");
		    main_win(main);
		}
		else if(a == 11)
		    del_file(main);
		else if (a == 13) 
		{
		    if (save == 0)
			nsave(main);
			
		    system(cl);	
		    endwin();    
		    exit(0);
		}

		return 0;
				
	    case 27:	
		curs_set(1);
		wclear(ws);
		return 0;
	}
    }
    }
    else
    {
    while(1)
    {
	wmove(ws,a,b);
	blockwin(ws,st,a,13);
	c = wgetch(ws);
	wrefresh(ws);
		
	switch(c)
	{
	    case (KEY_RIGHT) :
	    case (KEY_LEFT) :
		return 4;
		
	    case (KEY_UP):
		if (a == 1)	a = 13;
		else if(a == 11) a = 3;
		else
	    	    a = a - 2;
		break;

	    case (KEY_DOWN):
		if (a == 13)	a = 1;
		else if (a == 3) a = 11;
		else a = a + 2;
		break;
    
	    case 10 :
		curs_set(1);
		if (a == 1)   
		{
		    strcpy(name,"noname");
		    inwin(main);
		}
		else if (a == 3) 
		    open_win(main);
		else if(a == 11)
		    del_file(main);
		else if (a == 13) 
		{			
		    system(cl);	
		    endwin();    
		    exit(0);
		}

		return 0;
				
	    case 27:	
		curs_set(1);
		wclear(ws);
		return 0;
	}
    }
    }
}

int list :: open_edit(WINDOW *main)
{
    WINDOW *ws;
    int c;
    char cl[] = "clear";
    char st[20][50] = {" INSERT WORD    ^A"," INSERT LINE    ^L"," DELETE WORD    ^W"," DELETE LINE    ^Y"};
        
    ws = subwin(main,9,20,1,20);
    werase(ws);
    box(ws,0,0);    
    init_pair(6,COLOR_BLACK,COLOR_CYAN);	
    wbkgd(ws,COLOR_PAIR(6));
    
    mvwaddstr(ws,1,2,"INSERT WORD    ^A");
    mvwaddstr(ws,2,1,"------------------");

    mvwaddstr(ws,3,2,"INSERT LINE    ^L");
    mvwaddstr(ws,4,1,"------------------");

    mvwaddstr(ws,5,2,"DELETE WORD    ^W");
    mvwaddstr(ws,6,1,"------------------");
    
    mvwaddstr(ws,7,2,"DELETE LINE    ^Y");

    keypad(ws,TRUE);
    wmove(ws,1,1);
    wrefresh(ws);
    int a = 1,b = 1;
    curs_set(0);
    
    while(1)
    {
	wmove(ws,a,b);
	blockwin(ws,st,a,7);
	c = wgetch(ws);
	wrefresh(ws);
		
	switch(c)
	{
	    case (KEY_RIGHT) :
		return 3;
	
	    case (KEY_LEFT) :
		return 1;
		
	    case (KEY_UP):
		if (a == 1)	a = 7;
		else
	    	    a = a - 2;
		break;

	    case (KEY_DOWN):
		if (a == 7)	a = 1;
		else a = a + 2;
		break;
    
	    case 10 :
		curs_set(1);
		if (a == 1)   word_in(main);
		else if (a == 3) line_in(main);
		else if (a == 5) 
		{
		    save = 0;
		    d_word();
		}
		else if (a == 7) 
		{
		    save = 0;
		    d_lin();
		}
		return 0;
				
	    case 27:	
		curs_set(1);
		return 0;
	}
    }
}

int list :: open_page(WINDOW *main)
{
    WINDOW *ws;
    int c;
    char cl[] = "clear";
    char st[20][50] = {" TOP MARGIN    F11"," BOTTOM MARGIN F12"," LEFT MARGIN    F9"," RIGHT MARGIN  F10"};
        
    ws = subwin(main,9,20,1,40);
    werase(ws);
    box(ws,0,0);    
    init_pair(6,COLOR_BLACK,COLOR_CYAN);	
    wbkgd(ws,COLOR_PAIR(6));
    
    mvwaddstr(ws,1,2,"TOP MARGIN    F11");
    mvwaddstr(ws,2,1,"------------------");

    mvwaddstr(ws,3,2,"BOTTOM MARGIN F12");
    mvwaddstr(ws,4,1,"------------------");

    mvwaddstr(ws,5,2,"LEFT MARGIN    F9");
    mvwaddstr(ws,6,1,"------------------");
    
    mvwaddstr(ws,7,2,"RIGHT MARGIN  F10");

    keypad(ws,TRUE);
    wmove(ws,1,1);
    wrefresh(ws);
    int a = 1,b = 1;
    curs_set(0);
    
    while(1)
    {
	wmove(ws,a,b);
	blockwin(ws,st,a,7);
	c = wgetch(ws);
	wrefresh(ws);
		
	switch(c)
	{
	    case (KEY_RIGHT) :
		return 4;
	
	    case (KEY_LEFT) :
		return 2;
		
	    case (KEY_UP):
		if (a == 1)	a = 7;
		else
	    	    a = a - 2;
		break;

	    case (KEY_DOWN):
		if (a == 7)	a = 1;
		else a = a + 2;
		break;
    
	    case 10 :
		curs_set(1);
		if (a == 1)   
		    topm(main);
		else if (a == 3) botm(main);
		else if (a == 5) 
		    leftm(main);
		else if (a == 7) 
		    rightm(main);
		return 0;
				
	    case 27:	
		curs_set(1);
		return 0;
	}
    }
}

int list :: help_menu(WINDOW *main,int pl)
{
    WINDOW *ws;
    int c;
    char cl[] = "clear";
    char st[20][50] = {" HELP           F1"," ABOUT"};
        
    ws = subwin(main,5,20,1,60);
    werase(ws);
    box(ws,0,0);    
    init_pair(6,COLOR_BLACK,COLOR_CYAN);	
    wbkgd(ws,COLOR_PAIR(6));
    
    mvwaddstr(ws,1,2,"HELP           F1");
    mvwaddstr(ws,2,1,"------------------");

    mvwaddstr(ws,3,2,"ABOUT");

    keypad(ws,TRUE);
    wmove(ws,1,1);
    wrefresh(ws);
    int a = 1,b = 1;
    curs_set(0);
    
    while(1)
    {
	wmove(ws,a,b);
	blockwin(ws,st,a,3);
	c = wgetch(ws);
	wrefresh(ws);
		
	switch(c)
	{
	    case (KEY_RIGHT) :
		return 1;
	
	    case (KEY_LEFT) :
		if (pl == 1)	return 3;
		else return 1;
		
	    case (KEY_UP):
		if (a == 1)	a = 3;
		else
	    	    a = a - 2;
		break;

	    case (KEY_DOWN):
		if (a == 3)	a = 1;
		else a = a + 2;
		break;
    
	    case 10 :
		curs_set(1);
		if (a == 1)   open_help(main);
		else if (a == 3) open_about(main);
		return 0;
				
	    case 27:	
		curs_set(1);
		return 0;
	}
    }
}

void list :: forcolor(WINDOW *win)
{
    fore++;
    init_pair(7,colour[fore],colour[bac]);
    wbkgd(win,COLOR_PAIR(7));

    if (fore == 8)
	fore = 0;
}

void list :: backcolor(WINDOW *win)
{
    bac++;
    init_pair(8,colour[fore],colour[bac]);
    wbkgd(win,COLOR_PAIR(8));

    if (bac == 8)
	bac = 0;
}

void list :: leftm(WINDOW *main)
{
    WINDOW *ws;
    node *p,*q;
    int c;
    char *f;
    
    begin();
    ws = subwin(main,1,80,24,0);
    werase(ws);
    init_pair(1,COLOR_YELLOW,COLOR_YELLOW);	
    wbkgd(ws,COLOR_PAIR(1) | A_BOLD);

    mvwprintw(ws,0,0,"The present value of left margin is %d.",lm);
    wprintw(ws," Enter the new value (MAX : %d) : ",78 - rm - 1);
    wrefresh(ws);
    wmove(ws,0,74);
    
    while(1)
    {
	echo();
	wscanw(ws,"%d",&c);
	noecho();
	if (c + 1 <= 78 - rm) break;
	wmove(ws,0,75);
	beep();
    }
    lm = c;
    x = lm + 1;
}

void list :: rightm(WINDOW *main)
{
    WINDOW *ws;
    node *p,*q;
    int c;
    char *f;
    
    begin();
    ws = subwin(main,1,80,24,0);
    werase(ws);
    init_pair(1,COLOR_YELLOW,COLOR_YELLOW);	
    wbkgd(ws,COLOR_PAIR(1) | A_BOLD);

    mvwprintw(ws,0,0,"The present value of right margin is %d.",rm);
    wprintw(ws," Enter the new value (MAX : %d) : ",78 - lm - 1);
    wrefresh(ws);
    wmove(ws,0,75);
    
    while(1)
    {
	echo();
	wscanw(ws,"%d",&c);
	noecho();
	if (78 - c >= lm + 1) break;
	wmove(ws,0,75);
	beep();
    }
    rm = c;
}

void list :: topm(WINDOW *main)
{
    WINDOW *ws;
    node *p,*q;
    int c;
    char *f;
    
    begin();
    ws = subwin(main,1,80,24,0);
    werase(ws);
    init_pair(1,COLOR_YELLOW,COLOR_YELLOW);	
    wbkgd(ws,COLOR_PAIR(1) | A_BOLD);

    mvwprintw(ws,0,0,"The present value of top margin is %d.",tm);
    wprintw(ws," Enter the new value (MAX : %d) : ",21 - bm);
    wrefresh(ws);
    wmove(ws,0,75);
    
    while(1)
    {
	echo();
	wscanw(ws,"%d",&c);
	noecho();
	if (c + 1 <= 21 - bm) break;
	wmove(ws,0,75);
	beep();
    }
    tm = c;
    y = tm + 1;
}

void list :: botm(WINDOW *main)
{
    WINDOW *ws;
    node *p,*q;
    int c;
    char *f;
    
    begin();
    ws = subwin(main,1,80,24,0);
    werase(ws);
    init_pair(1,COLOR_YELLOW,COLOR_YELLOW);	
    wbkgd(ws,COLOR_PAIR(1) | A_BOLD);

    mvwprintw(ws,0,0,"The present value of bottom margin is %d.",bm);
    wprintw(ws," Enter the new value (MAX : %d) : ",21 - tm - 1);
    wrefresh(ws);
    wmove(ws,0,75);
    
    while(1)
    {
	echo();
	wscanw(ws,"%d",&c);
	noecho();
	if (21 - c >= tm + 1) break;
	wmove(ws,0,75);
	beep();
    }
    bm = c;
}

void list :: blockwin(WINDOW *ws,char st[20][50],int a,int n)
{
    int i;
    
    for(i = 1;i <= n;i += 2)
    {
	if (i == a)
	{
	    wattron(ws,A_REVERSE | A_BOLD);
	    waddstr(ws,st[a/2]);
	    wattroff(ws,A_REVERSE | A_BOLD);
	}
	else 
	{
	    wattroff(ws,A_REVERSE | A_BOLD);
	    wmove(ws,i,1);
	    waddstr(ws,st[i/2]);
	    wmove(ws,a,1);
	}
    }
    wrefresh(ws);
}

void list :: del_file(WINDOW *main)
{
    WINDOW *ws;
    FILE *fp;
    char nam[20],del[20] = "rm -f ";
    
    ws = subwin(main,1,80,24,0);
    werase(ws);    
    init_pair(1,COLOR_WHITE,COLOR_BLACK);	
    wbkgd(ws,COLOR_PAIR(1) | A_BOLD);
    
    mvwaddstr(ws,0,10,"Enter the file to be deleted : ");
    wrefresh(ws);
    echo();
    wgetstr(ws,nam);
    noecho();
        
    strcat(del,nam);
    
    fp = fopen(nam,"r");
    if (fp != NULL)	
    {
        fclose(fp);
	system(del);
	if (!(strcmp(nam,name)))
	{
	    strcpy(name,"noname");
	    main_win(main);
	}
    }
    else
    {
	werase(ws);
	mvwprintw(ws,0,10,"The file %s not found : ",nam);
	wrefresh(ws);
	wgetch(ws);
    }
}

void list :: open_about(WINDOW *main)
{
    WINDOW *ws;
    
    ws = subwin(main,10,30,4,20);
    werase(ws);
    init_pair(9,COLOR_RED,COLOR_WHITE);	
    init_pair(10,COLOR_WHITE,COLOR_BLACK);
            
    box(ws,0,0);
    wbkgd(ws,COLOR_PAIR(9));
    mvwaddstr(ws,0,12,"About");
    mvwchgat(ws,0,12,5,A_REVERSE,10,NULL);
    curs_set(0);
    wrefresh(ws);
    
    int c = wgetch(ws);
}

main(int argc,char *argv[])
{
    WINDOW *main;
    list scr;
    
    initscr();
    noecho();
    cbreak();
    start_color();
    raw();
    curs_set(0);
    
    main = scr.init_main(main);
    
    if (argc <= 1)	scr.main_win(main);
    else
    {
	strcpy(name,argv[1]);
        scr.inwin(main);
    }
    
    endwin();
        
    return 0;
}

⌨️ 快捷键说明

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