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

📄 edit.cc

📁 linux/unix下的txt浏览器
💻 CC
📖 第 1 页 / 共 3 页
字号:
					main = init_main(main);
					win = mainc(main);
					disp(win);
					ref_sub(sub);
					box(win,0,0);
					wrefresh(win);
						
					if(i == 0)	break;
					else if(i == 1)	i = open_file(main,1);
					else if(i == 2)	i = open_edit(main);
					else if(i == 3)	i = open_page(main);
					else if(i == 4)	i = help_menu(main,1);
				    }
				    break;
				    
				case 'h' :
				    i = help_menu(main,1);
				    while(1)
				    {
					main = init_main(main);
					win = mainc(main);
					disp(win);
					ref_sub(sub);
					box(win,0,0);
					wrefresh(win);
					
					if(i == 0)	break;
					else if(i == 1)	i = open_file(main,1);
					else if(i == 2)	i = open_edit(main);
					else if(i == 3)	i = open_page(main);
					else if(i == 4)	i = help_menu(main,1);
				    }
				    break;
				    
				case 'x' :
				    if(save == 0)	
					nsave(main);				    
				        
				    wrefresh(win);
				    system(cl);
				    endwin();
				    exit(0);
			    }
			    break;
			    
			case (KEY_UP) :
			    if (k == 1 && x1 < 78 - lm - rm) beep();
			    else
				arrow_up();		
			    break;
			    
			case (KEY_DOWN) :
			    i = checkc(k);
			    i = i - x1;
			    if (k == end -> row && (x + i <= 78 - rm)) beep();
			    else 
				arrow_down();
			    break;
			    
			case (KEY_LEFT) :
			    if (x1 == 1 && k == 1)	beep();
			    else 
				arrow_left();
			    break;
			           
			   
			case (KEY_RIGHT) :
			    arrow_right();
				break;
			   			
			case 10:
			case (KEY_ENTER):
			    save = 0;
			    enter();
			    
			    if (y == 21 - bm)
				z++;
			    else y++;

			    k++;			    
			    x = lm + 1;
			    x1 = 1;
			    break;
			    
			case (KEY_F(1)) :
			    open_help(main);
			    break;
			    
			case (KEY_F(2)) :
			    save = 1;
			    fsave(main);
			    break;

			case (KEY_F(3)) :
			    if(save == 0)
				nsave(main);
			    open_win(main);
			    break;
			    
			case (KEY_F(4)) :
			    if(save == 0)
				nsave(main);
				
			    strcpy(name,"noname");
			    main_win(main);
			    break;
			    
			case (KEY_F(5)) :
			    del_file(main);
			    break;
			    
			case (KEY_F(7)) :
			    forcolor(win);
			    break;

			case (KEY_F(8)) :
			    backcolor(win);
			    break;
			
						
			case (KEY_F(9)) :
			    leftm(main);
			    break;
			    

			case (KEY_F(10)) :
			    rightm(main);
			    break;
			    
			case (KEY_F(11)) :
			    topm(main);
			    break;

			case (KEY_F(12)) :
			    botm(main);
			    break;
	
			    
			case 2 :
			    begin();
			    break;

			case 5 :
			    endp();
			    break;
			    
			case (KEY_DC) :
			    save = 0;
			    d_char();
			    break;

			case (KEY_BACKSPACE) :
			    save = 0;
			    back();    
			    break;
			    			    
			case 25 :
			    d_lin();
			    break;

			case 23 :
			    save = 0;
			    d_word();
			    break;
			
			case (KEY_NPAGE) :
			    if (k == end -> row)	beep();
			    else
			    {
				for (i = 0;i < 21 - bm;i++)
				{
				    arrow_down();
				    if (k == end -> row)	
				    {
					int j = checkc(k);
					while(1)
					{
					    i = j - x1;
					    if (x + i <= 78 - rm ) break;
					    arrow_right();
					}
					break;
				    }
				}
			    }
			    break;

			case (KEY_PPAGE) :
			    if (k == 1)	beep();
			    else
			    {
				    for (i = 0;i < 21 - bm;i++)
				    {
					arrow_up();
					if (k == 1)	
					{
					    while(1)
					    {
						if (x1 <= 78 - rm - lm) break;
						arrow_left();
				    	    }
					    break;
					}
				    }
			    }
			    break;
			    
			case (KEY_IC):
			    ins = (ins ? 0 : 1);
			    if (ins == 1)	curs_set(1);
			    if (ins == 0)	curs_set(2);
			    break;

			case (KEY_HOME) :
			    home();
			    break;
			    
			case (KEY_END) :
			    enda();	
			    break;
			    
			case 14 :
			    if (save == 0)
				nsave(win);
			     
			    strcpy(name,"noname");
			    inwin(win);
			    break;
			    	
			case 1:
			    word_in(main);
			    break;
			
			case 12 :
			    line_in(main);
			    break;
			    			    
			case '\t':
				save = 0;
				alpha(c);
				x++;
				if (x > 78 - rm)
				{
				    y++;
				    if (y == 22 - bm)
				    {
					z++;
					y = 21 - bm;
				    }
				    x = lm + 1;
				}	    
				for (i = 0;i < tab - 1;i++)
				{
					alpha('\v');
					x++;
					if (x > 78 - rm)
					{
					    y++;
					    if (y == 22 - bm)
					    {
						z++;
						y = 21 - bm;
					    }
					    x = lm + 1;
					}	    
				}
				break;

			default :
			    save = 0;
			    
			    if(ins == 1)
				alpha(c);
			    else
			    {
				if (x1 <= checkc(k))
				    alins(c);		
				else alpha(c);
			    }	
				
			    x++;
			    if (x > 78 - rm)
			    {
				y++;
				if (y == 22 - bm)
				{
				    z++;
				    y = 21 - bm;
				}
				x = lm + 1;
			    }	    
		}
		ref_sub(sub);
		disp(win);
	}
}

void list :: arrow_up()
{
    int j;
    upa();
    if (x1 > 78 - rm - lm)
	x1 -= 78 - lm - rm;
    else
    {
	k--;
	int i = checkc(k);
	j = i;
	while (i > 78 - lm - rm)
	    i = i - (78 - lm - rm);
	x = x > i + lm ? i + lm : x;
	if (x <= lm)	x = lm + 1;
	if (j > 78 - lm - rm)	
	{
	    x1 = j;
	    i = i + lm - x;
	    x1 = x1 - i;
	}
	else x1 = x - lm;
    }
    
    node*   p = find(k,x1);
    while(p -> data == '\v' )
    {
	p = p -> prev;
	x--;
	if (x <= lm)	
	{
	    x = 78 - rm;
	    y--;
	    if (y <= tm)
	    {
		y = tm + 1;
		z--;
	    }
	}
	x1--;
    }
}	    

void list :: arrow_down()
{
    
}	    

void list :: arrow_left()
{
    
}

void list :: arrow_right()
{
    
}

void list :: upa()
{
}

void list :: dwna()
{
    
}

void list :: delc(int x,int y)
{
    
    
}

void list :: dell()
{
    
}

void list :: ad_delc(int k,int x1,int y)
{
    
}

void list :: home()
{
    
}

void list :: begin()
{
    
}	    

void list :: enda()
{
    
}

void list :: endp()
{
    while(k < end -> row)
	arrow_down();
    while(x1 < checkc(k))	arrow_right();
}

void list :: d_lin()
{
    if (head -> next == NULL)	beep();
    else
    {
	save = 0;
	dell();
    }
}

void list :: fsave(WINDOW *main)
{
    FILE *fp;
    WINDOW *ws;
    node *p,*q;
    int c;
    save = 1;
    ws = subwin(main,1,80,24,0);
    werase(ws);    
    init_pair(1,COLOR_WHITE,COLOR_BLACK);	
    wbkgd(ws,COLOR_PAIR(1) | A_BOLD);
    
    if (!strcmp(name,"noname"))
    {
	mvwaddstr(ws,0,10,"Enter the file name : ");
	wrefresh(ws);
	echo();
	wgetstr(ws,name);	
	noecho();
    }
    
    fp = fopen(name,"w+");
    
    for (p = head;p != NULL;p = p -> down)
	for (q = p -> next;q != NULL;q = q -> next)
	{
	    putc(q -> data,fp);
	    if (q -> data == '\t')	
		for (int i = 0;i < 4;i++)	q = q -> next;
	}
    fclose(fp);
}

void list :: nsave(WINDOW *main)
{
    WINDOW *ws;
    node *p,*q;
    int c;
    
    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,"File ");
    waddstr(ws,name);
    waddstr (ws," not saved. Save (y or n) ?  : ");
    wrefresh(ws);
    
    c = wgetch(ws);
    
    if (c == 'y')	fsave(main);
}

WINDOW* list :: mainc(WINDOW *main)
{
    WINDOW *win;
    win = subwin(main,23,80,1,0);
    init_pair(2,COLOR_WHITE,COLOR_BLUE);	
    wbkgd(win,COLOR_PAIR(2));
    keypad(win,TRUE);
    box(win,0,0);
    return win;
}

WINDOW * list :: init_main(WINDOW *main)
{
    WINDOW *menu,*bmen;
    
    main = newwin(0,0,0,0);
    werase(main);
    init_pair(3,COLOR_WHITE,COLOR_BLUE);	
    wbkgd(main,COLOR_PAIR(3) | ACS_BOARD);
    keypad(main,TRUE);
    keypad(stdscr,TRUE);

    
    menu = subwin(main,1,0,0,0);
    init_pair(4,COLOR_BLACK,COLOR_CYAN);
    init_pair(10,COLOR_BLACK,COLOR_YELLOW);
    wbkgd(menu,COLOR_PAIR(4));
    mvwaddstr(menu,0,8,"FILE");
    mvwchgat(menu,0,8,1,A_REVERSE|A_BOLD,10,0);
    mvwaddstr(menu,0,28,"EDIT");
    mvwchgat(menu,0,28,1,A_REVERSE|A_BOLD,10,0);
    mvwaddstr(menu,0,48,"PAGE");
    mvwchgat(menu,0,48,1,A_REVERSE|A_BOLD,10,0);
    mvwaddstr(menu,0,68,"HELP");
    mvwchgat(menu,0,68,1,A_REVERSE|A_BOLD,10,0);
    wrefresh(menu);

    bmen = subwin(main,1,80,24,0);
    init_pair(4,COLOR_BLACK,COLOR_CYAN);
    wbkgd(bmen,COLOR_PAIR(4));
    mvwaddstr(bmen,0,5,"HELP-----");
    mvwaddstr(bmen,0,15,"F1");
    mvwchgat(bmen,0,15,2,A_REVERSE|A_BOLD,10,0);

    mvwaddstr(bmen,0,30,"MENU-----");
    mvwaddstr(bmen,0,40,"ALT_F");
    mvwchgat(bmen,0,40,5,A_REVERSE|A_BOLD,10,0);

    return main;
}

void list :: ref_sub(WINDOW *sub)
{
    char a,b;
    werase(sub);
    
    init_pair(1,COLOR_BLACK,COLOR_CYAN);
    wbkgd(sub,COLOR_PAIR(1));
    
    if (!(!(strcmp(name,"noname"))))
	mvwprintw(sub,0,1,"File name : %s",name);
    
    a = save ? 'Y' : 'N';
    b = ins ? 'Y' : 'N';
    mvwprintw(sub,0,31,"SAVE = %c , INS = %c ",a,b);	
    mvwprintw(sub,0,51,"ROW = %d,COL = %d  x1 : %d",y + z - tm,x - lm,x1);
    
    wrefresh(sub);
}    	

void list :: main_win(WINDOW *main)
{
    int c,i;
    char cl[] = "clear";

    werase(main);
    main = init_main(main);
    wrefresh(main);
    curs_set(0);
    save = 1;
    
    while(1)
    {
	main = init_main(main);
	curs_set(0);
	c = wgetch(main);
	wrefresh(main);
	
	switch(c)
	{
	    case (KEY_F(3)) :
		open_win(main);
		break;

	    case (KEY_F(1)) :
		open_help(main);
		werase(main);
		main = init_main(main);
		break;
	
	    case (KEY_F(5)) :
	        del_file(main);
	        break;
    	
	    case CNTRL_N :
		strcpy(name,"noname");
		inwin(main);
		break;

	    case 27:
		c = wgetch(main);
		switch(c)
		{
		    case 'f' :
			i = open_file(main,0);
			while(1)
			{
			    main = init_main(main);
			    wrefresh(main);
			    if(i == 0)	break;
			    else if(i == 1)	i = open_file(main,0);
			    else if(i == 4)	i = help_menu(main,0);
			}
			break;
			
				    
		    case 'h' :
			i = help_menu(main,0);
			while(1)
			{
			    main = init_main(main);
			    wrefresh(main);
			    if(i == 0)	break;
			    else if(i == 1)	i = open_file(main,0);
			    else if(i == 4)	i = help_menu(main,0);
			}

			break;
				    			
		    case 'x' :
			endwin();
			system(cl);
			exit(0);
			break;
		}
		break;
	}

    }
}

void list :: open_win(WINDOW *main)
{
    WINDOW *ws;
    FILE *fp;
    char nam[20];
    
    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 opened : ");
    wrefresh(ws);
    echo();
    wgetstr(ws,nam);
    noecho();
        
    fp = fopen(nam,"r");
    if (fp != NULL)	
    {
        fclose(fp);
	strcpy(name,nam);
        inwin(main);	
    }
    else
    {
	werase(ws);
	mvwprintw(ws,0,10,"The file %s not found : ",nam);
	wrefresh(ws);
	wgetch(ws);
    }
}

void list :: open_help(WINDOW *main)
{
    WINDOW *ws;
    int c;
    
    curs_set(0);
    ws = subwin(main,23,80,1,0);
    werase(ws);    
    box(ws,0,0);
    init_pair(5,COLOR_RED,COLOR_WHITE);	
    init_pair(11,COLOR_WHITE,COLOR_BLUE);	
    wbkgd(ws,COLOR_PAIR(5));
    

    mvwaddstr(ws,1,5,"FUNCTIONS");
    mvwaddstr(ws,1,27,"HOT KEYS");
    mvwaddstr(ws,1,42,"FUNCTIONS");
    mvwaddstr(ws,1,68,"HOT KEYS");
    mvwchgat(ws,1,0,80,A_NORMAL|A_BOLD,4,NULL);
    for (int i = 1;i < 79;i++) mvwaddch(ws,2,i,'-');
    for (int i = 1;i < 22;i++)	mvwchgat(ws,i,38,1,ACS_VLINE,5,NULL);
    mvwaddstr(ws,3,1,"HELP");
    mvwaddstr(ws,3,30,"F1");
    
    mvwaddstr(ws,4,4,"FILE OPTIONS");
    mvwaddstr(ws,5,1,"SAVE FILE");
    mvwaddstr(ws,5,30,"F2");
    mvwaddstr(ws,6,1,"OPEN FILE");
    mvwaddstr(ws,6,30,"F3");
    mvwaddstr(ws,7,1,"CLOSE FILE");
    mvwaddstr(ws,7,30,"F4");
    mvwaddstr(ws,8,1,"DELETE FILE");
    mvwaddstr(ws,8,30,"F5");
    mvwaddstr(ws,9,1,"NEW FILE");
    mvwaddstr(ws,9,30,"CNTRL_N");
    mvwaddstr(ws,10,1,"EXIT EDITOR");
    mvwaddstr(ws,10,30,"ALT_X");
    
    mvwaddstr(ws,12,4,"MENU OPTIONS");
    mvwaddstr(ws,13,1,"FILE");
    mvwaddstr(ws,13,30,"ALT_F");
    mvwaddstr(ws,14,1,"EDIT");

⌨️ 快捷键说明

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