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

📄 editplus.c

📁 linux 下类似于TC功能的编译器,但还没有完成,希望大家共同研究
💻 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 + -