📄 editplus.c
字号:
#include "basehead.h"#include "basefunc.h"#include "auxfunc.h"int main(int argc,char *argv[]){ int ret; int exits=FALSE; int i=0; if(init_interface()) { cout<<"The current monitor does not support colors.Sorry to exit.\n"; exit(1); } activewin=NULL; menu.InitTopMenu(0,0,1,COLS,COLOR_BLACK_YELLOW,FALSE,A_BOLD,TOP_MENU,"abc"); rscroll.InitVScroll(1,COLS-1,LINES-3,1,COLOR_BLUE_YELLOW,A_BOLD,VSCROLL_BORDER); lscroll.InitVScroll(1,0,LINES-3,1,COLOR_BLUE_YELLOW,A_BOLD,VSCROLL_BORDER); hscroll.InitHScroll(LINES-2,0,1,COLS,COLOR_BLUE_YELLOW,A_BOLD,HSCROLL_BORDER); status.InitStatus(LINES-1,0,1,COLS,COLOR_BLACK_CYAN,A_BOLD,HSCROLL_NOBORDER); if(code.InitCodeArea(1,1,LINES-3,COLS-2,COLOR_WHITE_BLUE,A_BOLD,TEXT_CENTEREDITOR)==FALSE) goto fail_codearea; if (argc>1)//with filename { char p[MAXFIELDLEN]; strcpy(p,argv[1]); getpath(p); if(strlen(p)<=0)//relative path { getcwd(p,MAXFIELDLEN); strcat(p,"/"); strcat(p,argv[1]); } else//absolute path strcpy(p,argv[1]); status.UpdateFileName(p); if((code.ReadFile(p))==FALSE) goto file_no_exist; } else { char p[MAXFIELDLEN]; getcwd(p,MAXFIELDLEN); strcat(p,"/noname"); status.UpdateFileName(p); } hscroll.ChangePos(); rscroll.ChangePos(); code.Active(); activewin=&code; while(!exits) { ret=processkey(); i=0; while(i<TRANSPORT_WIDTH) { int which=ret&(1<<i); switch(which) { case REFRESH_ALLWINDOWS: code.Refresh(); break; case UPDATE_CODEAREA: code.ShowPage(); code.Refresh(); break; case FILE_DIALOG: { if(msg.fileobj.type==DIALOG_FILENEW) { gNewFile(); } else if(msg.fileobj.type==DIALOG_FILEOPEN) { if(gOpenFile()==FALSE) QuitWithErr("Open file error!\n"); } else if(msg.fileobj.type==DIALOG_FILESAVE) { if(gSaveFile()==FALSE) ErrMsg(OKONLYDLG,ERR_WRITEFILE); } else if(msg.fileobj.type==DIALOG_FILESAVEAS) { if(gSaveFileAs()==FALSE) ErrMsg(OKONLYDLG,ERR_WRITEFILE); } code.Active(); activewin=&code; break; } case EDIT_DIALOG: { if(msg.fileobj.type==DIALOG_EDITFIND) { if(gFind()==FALSE) QuitWithErr("Find error!"); } else if(msg.fileobj.type==DIALOG_EDITREPLACE) { if(gReplace()==FALSE) QuitWithErr("Replace error!"); } else if(msg.fileobj.type==DIALOG_EDITSELECT || msg.fileobj.type==DIALOG_EDITSELECTALL) { if(gSelect()==FALSE) QuitWithErr("Select error!"); } code.Active(); activewin=&code; break; } case ACTIVE_CODEAREA: code.Active(); activewin=&code; break; case ACTIVE_TOPMENU: menu.Active(); activewin=&menu; break; case UPDATE_STATUS: { status.UpdateFileName(code.GetFileName()); status.UpdateCol(code.GetCurCol()); status.UpdateLine(code.GetCurRow()); hscroll.ChangePos(code.GetMaxCol(),code.GetCurCol()); rscroll.ChangePos(code.GetTotalRow(),code.GetCurRow()); if(msg.statusobj.type==STATUS_INSERT) { status.UpdateInsert(TRUE); } else if(msg.statusobj.type==STATUS_REPLACE) { status.UpdateInsert(FALSE); } code.Active(); activewin=&code; break; } case CODE_TOOLS: { if(msg.toolobj.type==TOOLS_INDENT) { code.CodeIndent(); } else if(msg.toolobj.type==TOOLS_AUTOMAKE) { code.AutoMake(); } else if(msg.toolobj.type==TOOLS_AUTOCONF) {} break; } case BLOCK_OPERATE: { gBlockOp(); code.Active(); activewin=&code; break; } case SHOW_ABOUT_DIALOG: { MsgDialog aboutdlg; code.ShowPage(); code.Refresh(); aboutdlg.InitMsgDialog(6,40,COLOR_BLACK_CYAN,0,A_BOLD,DIALOG_FILEMESSAGE,OKONLYDLG,"[About me]"); aboutdlg.SetModule(TRUE); aboutdlg.DrawMsgDialog("Version: 0.0.1 Mailto:goodlcp@163.com Welcome bug reports.Thanks!"); aboutdlg.MsgDialogDriver(); code.Active(); activewin=&code; break; } case SHOW_HELP_DIALOG: { MsgDialog helpdlg; code.ShowPage(); code.Refresh(); helpdlg.InitMsgDialog(16,40,COLOR_BLACK_CYAN,0,A_BOLD,DIALOG_FILEMESSAGE,OKONLYDLG,"[Help]"); helpdlg.SetModule(TRUE); helpdlg.DrawMsgDialog("F2:Menu F3:Open F4:Save F5:Copy F6:Paste F7:Find F8:Replace F9:Run F10:Debug F11:Watch F12:Setting"); helpdlg.MsgDialogDriver(); code.Active(); activewin=&code; break; } case EXIT_APPLICATION: if(code.Modified()) { MsgDialog msgdlg; int deci; code.ShowPage(); code.Refresh(); curs_set(0); msgdlg.InitMsgDialog(6,40,COLOR_BLACK_CYAN,0,A_BOLD,DIALOG_FILEOPEN,YESNOCANCELDLG,"[Message]"); msgdlg.SetModule(TRUE); msgdlg.DrawMsgDialog("The current file has been modified! Save it?"); deci=msgdlg.MsgDialogDriver(); if(deci==BUTYES) { gSaveFile(); exits = TRUE; } else if(deci==BUTNO) { exits = TRUE; } code.Active(); activewin=&code; } else { exits = TRUE; } break; } i++; } } goto exit_success;file_no_exist: fprintf (stdout, "Problems opening %s\n", argv[1]);fail_codearea:exit_success: code.DestroyCodeArea(); menu.DestroyTopMenu(); rscroll.DestroyBaseWindow(); hscroll.DestroyBaseWindow(); lscroll.DestroyBaseWindow(); status.DestroyBaseWindow(); clearup_interface();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -