예제 #1
0
파일: misc.c 프로젝트: 8l/ted
void box(int x,int y,int width,int len,int frame,int back,char *msg)
{
int i,j;
int ex=x+width-1;
int ey=y+len-1;
set_att(back);
for(j=y+1;j<ey;j++) {
	gotoxy(x+1,j);
	for(i=x+1;i<ex;i++) xprintf(" ");
}
set_att(frame);
for(i=x;i<=ex;i++) {
	gotoxy(i,y); xprintf(" ");
	gotoxy(i,ey); xprintf(" ");
}
for(j=y+1;j<ey;j++) {
	gotoxy(x,j); xprintf(" ");
	gotoxy(ex,j); xprintf(" ");
}
i=x+(width-strlen(msg))/2;
gotoxy(i,y);
xprintf(msg);
bx=x; by=y; bwidth=width; blen=len; bframe=frame; bback=back;
boxtitle=msg;
}
예제 #2
0
파일: e.c 프로젝트: 8l/ted
static void mxputch(char ch)
{
u_char ttt;
if ((inmark || inlmark) && cur_att!=3) {
	ttt=cur_att;
	set_att(3);
	xputch(ch);
	set_att(ttt);
} else xputch(ch);
}
예제 #3
0
파일: filebrowse.c 프로젝트: 8l/ted
void refresh_filebrowser()
{
	extern int cursor_x,cursor_y;
	if(input_handler==4)
	{
		cursor_x=cur_x+win_x;
		cursor_y=cur_y+win_y;
		inactive_cursor();
		cury=fy+1;
		gotoxy(fx+8,fy+1);
		set_att(14);
		dispcad("Files",0);
		gotoxy(fx+27,fy+1);
		dispcad("Directories",0);
		gotoxy(fx+20,fy+1);
		dispcad("/\\",0);
		gotoxy(fx+41,fy+1);
		dispcad("/\\",0);
		cury=ly-2;
		gotoxy(fx+20,ly-2);
		dispcad("\\/",0);
		gotoxy(fx+41,ly-2);
		dispcad("\\/",0);
		Showfiles();
		Showdir();
		Drawitem(1);
	}
}
예제 #4
0
파일: filebrowse.c 프로젝트: 8l/ted
void Drawitem(int clr)
{
	void dispcad(char *,int);
	if(!clr) set_att(6);
	else set_att(1);
	if(!postab)
	{
		gotoxy(fx+2,fy+2+positem);
		dispcad(files[positem+fromf],WIDTH_FILE);
	}
	else
	{
		gotoxy(fx+23,fy+2+positem);
		dispcad(dir[positem+fromd],WIDTH_FILE);
	}
	draw_line(positem+fy+2);
}
예제 #5
0
파일: misc.c 프로젝트: 8l/ted
void xystr(XYstr *xx,int nn)
{
int i;
set_att(8);
for(i=0;i<nn;i++) {
	gotoxy(xx[i].x,xx[i].y);
	xprintf("%s",xx[i].str);
}
xystrn=nn;
lxystr=xx;
}
예제 #6
0
void
edit_typeset_rep::set_data (new_data data) {
  set_style (data->style);
  set_init  (data->init);
  set_fin   (data->fin);
  set_att   (data->att);
  notify_page_change ();
  add_init (data->init);
  notify_change (THE_DECORATIONS);
  typeset_invalidate_env ();
}
예제 #7
0
파일: filebrowse.c 프로젝트: 8l/ted
void Showdir()
{
	int i;
	curx=fx+23;
	cury=fy+2;
	set_att(6);
	for(i=fromd;i<fromd+ly-4 && dir[i][0]!='\0';i++)
	{
		gotoxy(curx,cury);
		dispcad(dir[i],WIDTH_FILE);
		cury++;
	}
}
예제 #8
0
파일: filebrowse.c 프로젝트: 8l/ted
void Showfiles()
{
	int i;
	curx=fx+2;
	cury=fy+2;
	set_att(6);
	for(i=fromf;i<fromf+ly-4 && files[i][0]!='\0';i++)
	{
		gotoxy(curx,cury);
		dispcad(files[i],WIDTH_FILE);
		cury++;
	}
}
예제 #9
0
파일: e.c 프로젝트: 8l/ted
void disp_page()
{
int row;
if (batch) return;
clrscr_w();
if (c_comment) {
/* if there are more than 300 lines in a comment, this will fail */
	scan_comment(cursor_row-300,cursor_row+page_len);
}
for(row=page_row;row<page_row+page_len && row < Lines; row++) {
	if (LangType>=0)
		disp_row(row);
	else
		disp_row_raw(row);
}
if (row-page_row < page_len) {
	set_att(0);
	disp_eof(row-page_row);
}
flush_buffer();
draw_scr();
set_att(0);
}
예제 #10
0
파일: filebrowse.c 프로젝트: 8l/ted
void Draw_file_browser()
{
	int i;
	cnt_busca=0;
	busca_cad[0]='\0';
	if(direct[0]=='\0') strcpy(direct,cur_dir);
	postab=0;
	positem=0;
	fromf=0;
	fromd=0;
	cntd=0;
	cntf=0;
	fx=(page_width-45)/2;
	if(fx<2) fx=13;
	fy=0;
	lx=45;
	if(XW_ROW-1<6) ly=5;
	else ly=XW_ROW-2;
	box(fx,fy,lx,ly,7,8,"File browser");
	cury=fy+1;
	gotoxy(fx+8,fy+1);
	set_att(14);
	dispcad("Files",0);
	gotoxy(fx+27,fy+1);
	dispcad("Directories",0);
	gotoxy(fx+20,fy+1);
	dispcad("/\\",0);
	gotoxy(fx+41,fy+1);
	dispcad("/\\",0);
	cury=ly-2;
	gotoxy(fx+20,ly-2);
	dispcad("\\/",0);
	gotoxy(fx+41,ly-2);
	dispcad("\\/",0);
	leer_dir();
	Showfiles();
	Showdir();
	if(!cntf) postab=1;
	Drawitem(1);
	return;
}
예제 #11
0
파일: e.c 프로젝트: 8l/ted
void disp_row(int row)
{
int wc,len,i,j,dd,inquote,basl,incmt,match;
char *lin;
int tatt, cmt_line;

#if	0
printf("row:%d  %d %d %d %d\n",
row, mblk_row0, mblk_col0, mblk_row1, mblk_col1 );
#endif

incmt=inquote=basl=0;
gotoxy_w(0,row-page_row);
cmt_line=inlmark=inmark=0;
if (in_mlines(row)) {
	set_att(tatt=3);
	inlmark=1;
} else set_att(tatt=0);

len=edbf[row].len;
lin=edbf[row].cstr;
if (c_comment)
	cmt_line=edbf[row].flag;

if (cmt_line) {
		incmt=1;
		set_att(kwp[2].coloridx);
} else
if (len && lin[0]==DirectCommentChar) tatt=kwp[0].coloridx;

wc=0;
#if	1
if (in_mblock(row,wc)) {
	set_att(3);
	inmark=1;
} else
#endif
if (inquote) set_att(kwp[1].coloridx);
else
if (!incmt) set_att(tatt);

if (inlmark) set_att(3);

for(wc=i=0;wc-page_col<page_width && i<len;) {
	if (in_mblock(row,i)) {
		inmark=1;
		set_att(3);
	} else
	if (inmark) {
		set_att(tatt);
		inmark=0;
	}

	switch (lin[i]) {
	 case 9:
	   dd=tab_width-(wc%tab_width);
	   if (inlmark||inmark) set_att(3);
	   if (DispTab)  {
	     if (wc++>=page_col)
			   xputch_w(TabChar);
	     for(j=1;j<dd;j++)
	       if (wc++>=page_col)
	         xputch_w(' ');
	   } else
	     for(j=0;j<dd;j++)
	       if (wc++>=page_col)
	         xputch_w(' ');
	   i++;
	   continue;
	 default:
	if (!inquote && c_comment && i<len-1
		&& (lin[i]=='/' && (lin[i+1]=='*' || lin[i+1]=='/') ||
		lin[i]=='*' && lin[i+1]=='/') ) {
		set_att(kwp[2].coloridx);
		if (wc++>=page_col)
		  mxputch(lin[i]);
		if (lin[i]=='/' && lin[i+1]=='/') {
			incmt=2;
		} else
		if (incmt!=2) incmt=1;
	}
	else
	if (!inquote && c_comment && incmt==1 && i &&
				lin[i-1]=='*' && lin[i]=='/') {
		if (wc++>=page_col)
		  mxputch(lin[i]);
		incmt=0;
		set_att(0);
	}
	else
	if (incmt) {
		if (wc++>=page_col)
		  mxputch(lin[i]);
	} else
	/* for the # char in perl and shell */
	if (!c_comment && lin[0]==DirectCommentChar && !inquote) {
		set_att(kwp[0].coloridx);
		if (wc++>=page_col)
		  mxputch(lin[i]);
		incmt=2;
	} else
	if (lin[i]=='"' || lin[i]=='\'') {
		if (!inquote) {
			inquote=lin[i];
			set_att(kwp[1].coloridx);
		  if (wc++>=page_col)
			  mxputch(lin[i]);
		}
		else {
			if (!basl) {
		    if (wc++>=page_col)
				  mxputch(lin[i]);
				if (lin[i]==inquote) {
					inquote=0;
					set_att(0);
				}
			} else {
		    if (wc++>=page_col)
				  mxputch(lin[i]);
				basl=0;
			}
		}
	}
	else {
		if (inquote && lin[i]=='\\') basl^=1;
		else basl=0;
		if (!inquote) {
if ((!i || !isvarchr(lin[i-1])) && isvarchr(lin[i]) && lin[0]!=
				DirectCommentChar) {
			int k,vl=0;
			char tstr[4096],*p;
			j=i;
			while (j<len && (isvarchr(lin[j])|| (j && isdigit(lin[j]))))
				tstr[vl++]=lin[j++];
			tstr[vl]=0;
			match=0;
			if (vl<=MaxKeywordLen) {
				int rr;
				for(k=3;k<KwN;k++) {
				  rr=strcmp(kwp[k].keyword,tstr);
				  if (rr > 0) break;
				  else
				  if (rr==0) {
						set_att(tatt=kwp[k].coloridx);
						match=1;
						goto lll6;
					}
				}
			}
			if (!match) goto lll1;
lll6:
			for(p=tstr; *p && wc-page_col<page_width;p++) {
				if (in_mblock(row,i)) {
					inmark=1;
					set_att(3);
				} else {
					inmark=0;
					set_att(tatt);
				}
		    if (wc++>=page_col)
				  mxputch(*p);
				/* wc++; */
				i++;
			}
			set_att(0);
			if (*p) goto lll4;
			goto lll5;
} else if (!isvarchr(lin[i]) && lin[0]!=DirectCommentChar)
			set_att(0);
		}
lll1:
		if (wc++>=page_col)
		  mxputch(lin[i]);
	}
	}
	i++;
lll5:
	0;
}
lll4:
if (inlmark) {
	set_att(3);
	for(;wc-page_col<page_width;wc++) xputch(' ');
}
else
if (row>=mblk_row0 && row<=mblk_row1 && cur_file==mark_holder) {
	set_att(3);
	for(;wc-page_col<page_width;wc++)
	if (wc>=mblk_col0 && wc<=mblk_col1) {
		gotoxy_w(wc-page_col,row-page_row);
		xputch(' ');
	}
}
}
예제 #12
0
파일: e.c 프로젝트: 8l/ted
void disp_row_raw(int row)
{
int wc,len,i,j,dd;
char *lin;
int inmark,inlmark;

gotoxy_w(0,row-page_row);
inlmark=inmark=0;
if (in_mlines(row)) {
	set_att(3);
	inlmark=1;
} else set_att(0);

len=edbf[row].len;
lin=edbf[row].cstr;

for(wc=i=0;i<len;) {
	if (wc >= page_col) break;
	if (lin[i]==9)
	 wc+=tab_width-(wc%tab_width);
	else wc++;
	i++;
}
for(j=0;j<wc-page_col;j++)
	xputch(' ');
for(;wc-page_col<page_width && i<len;i++) {
	if (in_mblock(row,i)) {
		if (!inmark) {
			set_att(3);
			inmark=1;
		}
	} else
	if (inmark) {
		set_att(0);
		inmark=0;
	}
	switch (lin[i]) {
	 case 9:
	   dd=tab_width-(wc%tab_width);
	   wc+=dd;
	   if (DispTab)  {
			 xputch_w(TabChar);
	     for(j=1;j<dd;j++)xputch_w(' ');
	   } else
	     for(j=0;j<dd;j++)xputch_w(' ');
	   break;
	 default:
	   xputch(lin[i]);
	   wc++;
	}
}
if (inlmark)
	for(;wc-page_col<page_width;wc++) xputch(' ');
else
if (row>=mblk_row0 && row<=mblk_row1 && cur_file==mark_holder) {
	set_att(3);
	for(;wc-page_col<page_width;wc++)
	if (wc>=mblk_col0 && wc<=mblk_col1) {
		gotoxy_w(wc-page_col,row-page_row);
		xputch(' ');
	}
}
}