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

📄 editor.c

📁 文本编辑器
💻 C
📖 第 1 页 / 共 2 页
字号:
     textcolor(WHITE);
	 printf("%s",filename);
     gotoxy(CurX,CurY);
  
getkey(key);
  if(*key==0x2100)  goto Menu1;   /* ALT+F goto menu FILE */
  if(*key==0x1200) goto Menu2;    /* ALT+E goto menu FUNC */
  if(*key==0x1800) goto Menu3;    /* ALT+S goto menu Optn */ 
  if(*key==0x1f00) goto Menu4;    /* ALT+H goto menu HELP */
  if(*key==0x2d00) exit(0);       /*ALT X quit*/
 switch(*key)
	{case F1: /*menu File*/

           {Menu1:
            PosMenu=1;  
            PosOption=1; 
            gettext(1,1,80,25,textSave);
            DisplayMenu(PosMenu,PosOption);
            gotoxy(2,4);
            while(1) 
            {
             getkey(key);
             switch(*key)
             {case DOWN:{if(PosOption==4) break;
                           else
                               {
                                PosOption++;gotoxy(CurX,CurY);
                                 DisplayMenu(PosMenu,PosOption);break;
                                }
                        }
               case UP:
                     {if(PosOption==1) break;
                         else
                             {
                              PosOption--;gotoxy(CurX,CurY);
                               DisplayMenu(PosMenu,PosOption);break;
                              }
                      }
               case ENTER:  
                        { puttext(1,1,80,25,textSave);
                          switch(PosOption)
                          {case 1:
                                  {
                                   break;
                                   }
                           case 2:
                                  {in=OpenNewFile(filename);
                                     textbackground(BLUE);
									 for(VarY=4;VarY<=6;VarY++) 
                                          {
                                           for(VarX=29;VarX<=51;VarX++)
                                              {
                                             gotoxy(VarX,VarY);
                                             cprintf("%c",0);
                                              }
                                            }
						            if(!in) {puttext(1,1,80,25,textSave);break;}
						            rewind(in);
	                                 while(!feof(in))
	                                 {
                                      s=(struct chain *)malloc(sizeof(struct chain));
                
                                      s->data=fgetc(in);
                                      s->next=NULL;
                                     if(h==NULL)
                                      {h=s;
                                       p=s;
                                       h->prior=NULL;
                                      }
                                      else
                                      {p->next=s;
                                       s->prior=p;
                                       p=p->next;
                                       }
	                                 }

	                             p=h;
			                     gotoxy(2,4);
                                 textcolor(YELLOW);
			                     textbackground(BLUE);
			                  for(CurX=2,CurY=4;(p->next)!=NULL;CurX++)
                                     {   
								         if(CurX==78) {CurX=2;CurY++;}
										 if(p->data==10) {CurX=1;CurY++;}
										 gotoxy(CurX,CurY);
				                         cprintf("%c",*p);
                                          p=p->next;
                                      }
                                       break;
                                  }
                            case 3:
                                  {out=save(filename);
							       gotoxy(30,5);
                                 if((out=fopen(filename,"w"))==NULL)
                                     cprintf ("Something Wrong when saving!");
							     else{	
									 cprintf (" Saving successfully.");
								     p=h;
							        while((p->next)!=NULL)
                                    {       
									  fputc(p->data,out);
                                    p=p->next;
                                    }
									fputc(p->data,out); 
                                    fclose(out);
									getch();
                               puttext(1,1,80,25,textSave);gotoxy(CurX,CurY);
                            goto Start;
							}   
                                  }

                           case 4:{
                                   exit(0);
                                  }
                          }gotoxy(CurX,CurY);
                        goto Start;
                       }
             case ESC:         
                      {
                       puttext(1,1,80,25,textSave);gotoxy(CurX,CurY);
                       goto Start;
                       }
             case RIGHT: {puttext(1,1,80,25,textSave);
     goto Menu2;
                         }
             case LEFT: {puttext(1,1,80,25,textSave);
    goto Menu4;
                        }
             default: break;
             }/*end menu File switch() */
            } /*end menu File while(1)*/
      break;     }/*end case F1 */

	 

case F2:
           {Menu2:
            PosMenu=2;PosOption=1;
            gettext(1,1,80,25,textSave);
            DisplayMenu(PosMenu,PosOption);
            gotoxy(2,4);
            while(1) 
            {
             getkey(key);
             switch(*key)
             {
              
              case ENTER:
                         { puttext(1,1,80,25,textSave);
                           switch(PosOption)
                           {case 1:
                                 {gotoxy(CurX,CurY);
                                  goto Start;
                                  }
                            
                           }gotoxy(CurX,CurY);
                          goto Start;
                         }
               case ESC: /*按ESC键退出菜单并恢复原貌*/
                        {
                         puttext(1,1,80,25,textSave);gotoxy(CurX,CurY);
                         goto Start;
                        }
               case LEFT:{puttext(1,1,80,25,textSave);
                          goto Menu1;
                         }
               case RIGHT:{puttext(1,1,80,25,textSave);
                           goto Menu3;
                          }
               default: break;
              }/*end menu2 switch*/
            }/*end while(1)*/
      break;     }/*end case F2 */

   case F3:
           {Menu3:
            PosMenu=3;PosOption=1;
            gettext(1,1,80,25,textSave);
            DisplayMenu(PosMenu,PosOption);
            gotoxy(2,4);
            while(1)
            {
             getkey(key);
             switch(*key)
             {
              
              case ENTER:
                         {puttext(1,1,80,25,textSave);
                          switch(PosOption)
                          {case 1:
                                  {middlebox();
                                  textcolor(WHITE);
	                               cprintf("Function undeveloped!");
								   getch();
								   puttext(1,1,80,25,textSave);gotoxy(CurX,CurY);
                                   goto Start;
                                  }
                            
                             }gotoxy(CurX,CurY);
                           goto Start;
                          }
              case ESC:
                       {
                        puttext(1,1,80,25,textSave);gotoxy(CurX,CurY);
                        goto Start;
                        }
              case LEFT:{puttext(1,1,80,25,textSave);
                         goto Menu2;
                        }
              case RIGHT:{puttext(1,1,80,25,textSave);
                          goto Menu4;
                         }
       default: break;;
      }/*end menu3 switch()*/
            }/*end while(1) */
    break; }  /*end case F3 */
   
   case F4:
       {Menu4:
        PosMenu=4;PosOption=1;
        gettext(1,1,80,25,textSave);
        DisplayMenu(PosMenu,PosOption);
        gotoxy(2,4);
        while(1)
        {getkey(key);
         switch(*key)
         {
         case DOWN:{if(PosOption==2) break;
                           else
                               {
                                PosOption++;gotoxy(CurX,CurY);
                                 DisplayMenu(PosMenu,PosOption);break;
                                }
                     }
          case UP:
                     {if(PosOption==1) break;
                         else
                             {
                              PosOption--;gotoxy(CurX,CurY);
                               DisplayMenu(PosMenu,PosOption);break;
                              }
                      }
          case ENTER:{puttext(1,1,80,25,textSave);
                      switch(PosOption)
                      {
                       case 1:{    bigbox();
                                  textcolor(WHITE);
	                               gotoxy(20,5);cprintf("                 Commands                ");
								   gotoxy(20,6);cprintf("          Alt+E   ------   Edit          ");
								   gotoxy(20,7);cprintf("          Alt+F   ------   File          ");  
								   gotoxy(20,8);cprintf("          Alt+S   ------   Search        ");
								   gotoxy(20,9);cprintf("          Alt+H   ------   Help          ");
								  gotoxy(20,10);cprintf("          Alt+X   ------   Quit          ");
                                  gotoxy(20,11);cprintf("          ESC     ------   Quit          ");
								   getch();
								   puttext(1,1,80,25,textSave);gotoxy(CurX,CurY);
                                   goto Start;
                              }
                       case 2:{    bigbox();
                                  textcolor(WHITE);
	                               gotoxy(20,5);cprintf("                  About                  ");
								   gotoxy(20,6);cprintf("  Author:JinglE                          ");
								   gotoxy(20,7);cprintf("  Date:Sept.15 2005                      ");  
								   gotoxy(20,8);cprintf("  Email:jingle8848@sohu.com              ");
								   gotoxy(20,9);cprintf("  Attention:there are some bugs.         ");
								  gotoxy(20,10);cprintf("  Soft Name:Text Editor v1.0             ");
                                  gotoxy(20,11);cprintf("  GNU Lesser General Public License(LGPL)");
								   getch();
								   puttext(1,1,80,25,textSave);gotoxy(CurX,CurY);
                                   goto Start;
                              }
                       
		      
                      }
                     gotoxy(CurX,CurY);
                      goto Start;
                     }
          case LEFT:{ puttext(1,1,80,25,textSave);
                     goto Menu3;
                    }
          case RIGHT:{puttext(1,1,80,25,textSave);
                      goto Menu1;
                     }
          case ESC:{puttext(1,1,80,25,textSave);gotoxy(CurX,CurY);
                    goto Start;
                   }
          default: break;
          }/*end menu4 switch*/
         }/*end while */
     break; }/*end case F4 */


/*define some special key funtcion*/



case LEFT:
             {
              if(CurX==2)   break;
              CurX--;
              gotoxy(CurX,CurY);break;
             }

case RIGHT:
              {
               if(CurX==78) break;
               CurX++;
               gotoxy(CurX,CurY);break;}
case DOWN:
              {
	           if(CurY==23) break;
               CurY++;
               gotoxy(CurX,CurY);break;
           
              }
                      
case UP:
                   
             {
               if(CurY==4) break;
               CurY--;
               gotoxy(CurX,CurY);break;
              }
                      
case SPACE:
              {
               if(CurX==78) break;
               else
                   {textcolor(YELLOW);
                    gotoxy(CurX,CurY); /*空格的细节操作*/
                    printf(" ");
                    s=(struct chain *)malloc(sizeof(struct chain));
                
                     s->data=32;
                     s->next=NULL;
                      if(h==NULL)
                        {h=s;
                          p=s;
                        h->prior=NULL;
                       }
                      else
                      {p->next=s;
                       s->prior=p;
                       p=p->next;
                      }
                      CurX++;
                      gotoxy(CurX,CurY);break;
                   }
                }
case ENTER:
              {
                if(CurY==23) break;
                s=(struct chain *)malloc(sizeof(struct chain));
                
                     s->data=10;
                     s->next=NULL;
                      if(h==NULL)
                        {h=s;
                          p=s;
                        h->prior=NULL;
                       }
                      else
                         {p->next=s;
                          s->prior=p;
                          p=p->next;
                         }
                  CurY++;
                  CurX=2;
                  gotoxy(CurX,CurY);break;
                 }
				 
case BACKSPACE:{
	          if(CurX==2)   break;
              CurX--;
              gotoxy(CurX,CurY);
			  textbackground(BLUE);
			  cprintf("%c",0); 
              gotoxy(CurX,CurY);break;
               }
case 0x4700: /* Home key */
              {
               CurX=2;
               CurY=4;
               gotoxy(CurX,CurY);break;
              }
case 0x4f00: /* End key*/
               {
                CurX=78;
                CurY=23;
                gotoxy(CurX,CurY);break;
               }
case 0x3f00: break;;
case 0x4000: break;;
case 0x4100: break;;
case 0x4200: break;;
case 0x4300: break;;
case ESC:  exit(0);
case 0x4400: /*F10*/        break;;
case 0xf09:  /*Tab*/        break;;
case 0x5200: /*insert*/     break;;
case 0x4900: /*pageup*/     break;;
case 0x5300: /*delete*/     break;;
case 0x5100: /*page down*/  break;;              


default:
          {
           if(CurX==78&&CurY==21)   break;
             else if(CurX==78) 
                    {
                     CurY++;
                     CurX=2;
                    }
           gotoxy(CurX,CurY);
           textcolor(YELLOW);
		   textbackground(BLUE);
	       
		   s=(struct chain *)malloc(sizeof(struct chain));
                
            s->data=*key;
            s->next=NULL;
            if(h==NULL)
               {h=s;
                 p=s;
                 h->prior=NULL;
                }
            else
               {p->next=s;
               s->prior=p;
               p=p->next;
               }
           cprintf("%c",*key);
           if(CurX==78)   break;
           else  {CurX++;break;}
          }
	}
}
fclose(in);

}

⌨️ 快捷键说明

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