📄 editor.c
字号:
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 + -