| version 1.1, 2005/11/25 22:41:23 |
version 1.2, 2005/11/26 19:43:02 |
|
|
| // modified by Juraj Kolesár <koli@koli.sk> |
// modified by Juraj Kolesár <koli@koli.sk> |
| #include "cuchar.h" |
#include "cuchar.h" |
| |
|
| |
// ccc |
| |
|
| void settextparams(WIN *win,PUNION *params) |
void settextparams(WIN *win,PUNION *params) |
| { |
{ |
| TEXT *text=&win->extra->text; |
TEXT *text=&win->extra->text; |
| Line 410 void getdialogparams(WIN *win,PUNION *pa |
|
| Line 412 void getdialogparams(WIN *win,PUNION *pa |
|
| void checkwinlist(WIN *win) |
void checkwinlist(WIN *win) |
| { |
{ |
| LIST *list; |
LIST *list; |
| GList *lines;
|
GList *lines; |
| SCROLL *hscroll,*vscroll;
|
SCROLL *hscroll,*vscroll; |
| list=&win->extra->list;
|
list=&win->extra->list; |
| long poz,maxlen,i,len;
|
long poz,maxlen,i,len; |
| maxlen=0; |
maxlen=0; |
| lines=list->lines;
|
lines=list->lines; |
| while(lines!=NULL)
|
while(lines!=NULL) |
| {
|
{ |
| if(lines->data==NULL)continue; |
if(lines->data==NULL)continue; |
| poz=strlen(lines->data);
|
poz=strlen(lines->data); |
| if(poz>maxlen)maxlen=poz; |
if(poz>maxlen)maxlen=poz; |
| lines=g_list_next(lines);
|
lines=g_list_next(lines); |
| }
|
} |
| if(list->hfade!=NULL)
|
if(list->hfade!=NULL) |
| {
|
{ |
| list->hfade->x=2;
|
list->hfade->x=2; |
| list->hfade->y=win->vy;
|
list->hfade->y=win->vy; |
| list->hfade->vx=win->vx;
|
list->hfade->vx=win->vx; |
| list->hfade->vy=1;
|
list->hfade->vy=1; |
| }
|
} |
| if(list->vfade!=NULL)
|
if(list->vfade!=NULL) |
| {
|
{ |
| list->vfade->x=win->vx>1?win->vx:win->vx+1;
|
list->vfade->x=win->vx>1?win->vx:win->vx+1; |
| list->vfade->y=1;
|
list->vfade->y=1; |
| list->vfade->vx=win->vx>1?2:1;
|
list->vfade->vx=win->vx>1?2:1; |
| list->vfade->vy=win->vy-1;
|
list->vfade->vy=win->vy-1; |
| }
|
} |
| vscroll=&list->vscroll->extra->scroll;
|
vscroll=&list->vscroll->extra->scroll; |
| hscroll=&list->hscroll->extra->scroll;
|
hscroll=&list->hscroll->extra->scroll; |
| len=g_list_length(list->lines); |
len=g_list_length(list->lines); |
| if(len>win->vy-2)
|
if(len>win->vy-2) |
| {
|
{ |
| list->vscroll->x=win->vx-list->vscroll->vx;
|
list->vscroll->x=win->vx-list->vscroll->vx; |
| list->vscroll->vy=win->vy-2;
|
list->vscroll->vy=win->vy-2; |
| vscroll->minpos=0;
|
vscroll->minpos=0; |
| vscroll->maxpos=len-win->vy+2;
|
vscroll->maxpos=len-win->vy+2; |
| vscroll->pagecnt=win->vy-1-2;
|
vscroll->pagecnt=win->vy-1-2; |
| if(!list->vscroll->active)
|
if(!list->vscroll->active) |
| {
|
{ |
| list->vscroll->active=true;
|
list->vscroll->active=true; |
| }
|
} |
| }
|
} |
| else if(list->vscroll->active)
|
else if(list->vscroll->active) |
| {
|
{ |
| list->vscroll->active=false;
|
list->vscroll->active=false; |
| }
|
} |
| if(maxlen>win->vx-2)
|
if(maxlen>win->vx-2) |
| {
|
{ |
| list->hscroll->y=win->vy-list->hscroll->vy;
|
list->hscroll->y=win->vy-list->hscroll->vy; |
| list->hscroll->vx=win->vx-2;
|
list->hscroll->vx=win->vx-2; |
| hscroll->minpos=0;
|
hscroll->minpos=0; |
| hscroll->maxpos=maxlen-win->vx+2;
|
hscroll->maxpos=maxlen-win->vx+2; |
| hscroll->pagecnt=win->vx-1-2;
|
hscroll->pagecnt=win->vx-1-2; |
| if(!list->hscroll->active)
|
if(!list->hscroll->active) |
| {
|
{ |
| list->hscroll->active=true;
|
list->hscroll->active=true; |
| }
|
} |
| }
|
} |
| else if(list->hscroll->active)
|
else if(list->hscroll->active) |
| {
|
{ |
| list->hscroll->active=false;
|
list->hscroll->active=false; |
| }
|
} |
| } |
} |
| |
|
| void checkwinmenu(WIN *win) |
void checkwinmenu(WIN *win) |
| Line 479 void checkwinmenu(WIN *win) |
|
| Line 481 void checkwinmenu(WIN *win) |
|
| MENU *menu; |
MENU *menu; |
| WIN *submenu; |
WIN *submenu; |
| GList *lines; |
GList *lines; |
| long i;
|
long i; |
| menu=&win->extra->menu;
|
menu=&win->extra->menu; |
| if(menu->lines!=NULL) |
if(menu->lines!=NULL) |
| { |
{ |
| lines=g_list_nth(menu->lines,menu->activeline); |
lines=g_list_nth(menu->lines,menu->activeline); |
| Line 489 void checkwinmenu(WIN *win) |
|
| Line 491 void checkwinmenu(WIN *win) |
|
| } |
} |
| if(menu->vert) |
if(menu->vert) |
| { |
{ |
| long maxlen,maxshcut,i;
|
long maxlen,maxshcut,i; |
| maxlen=0; |
maxlen=0; |
| maxshcut=0; |
maxshcut=0; |
| lines=menu->lines;
|
lines=menu->lines; |
| while(lines!=NULL) |
while(lines!=NULL) |
| { |
{ |
| i=strlenmenu(((CMENU*)lines->data)->text); |
i=strlenmenu(((CMENU*)lines->data)->text); |
| Line 526 void checkwinmenu(WIN *win) |
|
| Line 528 void checkwinmenu(WIN *win) |
|
| } |
} |
| lines=g_list_next(lines); |
lines=g_list_next(lines); |
| } |
} |
| if(menu->hfade!=NULL)
|
if(menu->hfade!=NULL) |
| {
|
{ |
| menu->hfade->x=2;
|
menu->hfade->x=2; |
| menu->hfade->y=win->vy;
|
menu->hfade->y=win->vy; |
| menu->hfade->vx=win->vx;
|
menu->hfade->vx=win->vx; |
| menu->hfade->vy=1;
|
menu->hfade->vy=1; |
| }
|
} |
| if(menu->vfade!=NULL)
|
if(menu->vfade!=NULL) |
| {
|
{ |
| menu->vfade->x=win->vx>1?win->vx:win->vx+1;
|
menu->vfade->x=win->vx>1?win->vx:win->vx+1; |
| menu->vfade->y=1;
|
menu->vfade->y=1; |
| menu->vfade->vx=win->vx>1?2:1;
|
menu->vfade->vx=win->vx>1?2:1; |
| menu->vfade->vy=win->vy-1;
|
menu->vfade->vy=win->vy-1; |
| } |
} |
| if(!isfocused(win)) |
if(!isfocused(win)) |
| if(menu->vert)win->active=false; |
if(menu->vert)win->active=false; |
| else if(capturewin==win)capturewin=NULL;
|
else if(capturewin==win)capturewin=NULL; |
| } |
} |
| |
|
| void checkwindialog(WIN *win) |
void checkwindialog(WIN *win) |
| { |
{ |
| DIALOG *dialog=&win->extra->dialog;
|
DIALOG *dialog=&win->extra->dialog; |
| long n,olen;
|
long n,olen; |
| n=3;
|
n=3; |
| dialog->bclose->x=win->vx-n;
|
dialog->bclose->x=win->vx-n; |
| dialog->bclose->y=0;
|
dialog->bclose->y=0; |
| n++;
|
n++; |
| if((dialog->style&ST_DI_HASMAXIMIZE)==ST_DI_HASMAXIMIZE)
|
if((dialog->style&ST_DI_HASMAXIMIZE)==ST_DI_HASMAXIMIZE) |
| {
|
{ |
| dialog->bmaximize->x=win->vx-n;
|
dialog->bmaximize->x=win->vx-n; |
| dialog->bmaximize->y=0;
|
dialog->bmaximize->y=0; |
| n++;
|
n++; |
| }
|
} |
| if((dialog->style&ST_DI_HASMINIMIZE)==ST_DI_HASMINIMIZE)
|
if((dialog->style&ST_DI_HASMINIMIZE)==ST_DI_HASMINIMIZE) |
| {
|
{ |
| dialog->bminimize->x=win->vx-n;
|
dialog->bminimize->x=win->vx-n; |
| dialog->bminimize->y=0;
|
dialog->bminimize->y=0; |
| }
|
} |
| if(dialog->hfade!=NULL)
|
if(dialog->hfade!=NULL) |
| {
|
{ |
| dialog->hfade->x=2;
|
dialog->hfade->x=2; |
| dialog->hfade->y=win->vy;
|
dialog->hfade->y=win->vy; |
| dialog->hfade->vx=win->vx;
|
dialog->hfade->vx=win->vx; |
| dialog->hfade->vy=1;
|
dialog->hfade->vy=1; |
| }
|
} |
| if(dialog->vfade!=NULL)
|
if(dialog->vfade!=NULL) |
| {
|
{ |
| dialog->vfade->x=win->vx>1?win->vx:win->vx+1;
|
dialog->vfade->x=win->vx>1?win->vx:win->vx+1; |
| dialog->vfade->y=1;
|
dialog->vfade->y=1; |
| dialog->vfade->vx=win->vx>1?2:1;
|
dialog->vfade->vx=win->vx>1?2:1; |
| dialog->vfade->vy=win->vy-1;
|
dialog->vfade->vy=win->vy-1; |
| }
|
} |
| if((dialog->bclose!=NULL)&&(!dialog->bclose->active))dialog->bclose->active=true;
|
if((dialog->bclose!=NULL)&&(!dialog->bclose->active))dialog->bclose->active=true; |
| if((dialog->bmaximize!=NULL)&&(!dialog->bmaximize->active))dialog->bmaximize->active=true;
|
if((dialog->bmaximize!=NULL)&&(!dialog->bmaximize->active))dialog->bmaximize->active=true; |
| if((dialog->bminimize!=NULL)&&(!dialog->bminimize->active))dialog->bminimize->active=true; |
if((dialog->bminimize!=NULL)&&(!dialog->bminimize->active))dialog->bminimize->active=true; |
| if(dialog->menu!=NULL) |
if(dialog->menu!=NULL) |
| { |
{ |
| Line 589 void checkwindialog(WIN *win) |
|
| Line 591 void checkwindialog(WIN *win) |
|
| menu->y=1; |
menu->y=1; |
| menu->vx=win->vx-2; |
menu->vx=win->vx-2; |
| menu->vy=1; |
menu->vy=1; |
| }
|
} |
| } |
} |
| |
|
| void drawwintext(WIN *win) |
void drawwintext(WIN *win) |
| { |
{ |
| TEXT *text=(TEXT*)win->extra;
|
TEXT *text=(TEXT*)win->extra; |
| windowinitdraw(win,text->ctext,win->cback,true);
|
windowinitdraw(win,text->ctext,win->cback,true); |
| mprintw(win,0,0,"%s",text->text);
|
mprintw(win,0,0,"%s",text->text); |
| } |
} |
| |
|
| void drawwinedit(WIN *win) |
void drawwinedit(WIN *win) |
| { |
{ |
| EDIT *edit=(EDIT*)win->extra;
|
EDIT *edit=(EDIT*)win->extra; |
| long len,i;
|
long len,i; |
| len=strlen(edit->text);
|
len=strlen(edit->text); |
| if(edit->curpos>len)edit->curpos=len;
|
if(edit->curpos>len)edit->curpos=len; |
| if(edit->curpos<0)edit->curpos=0; |
if(edit->curpos<0)edit->curpos=0; |
| if(edit->curpos-edit->scroll<0)
|
if(edit->curpos-edit->scroll<0) |
| edit->scroll=edit->curpos;
|
edit->scroll=edit->curpos; |
| if(edit->curpos-edit->scroll>win->vx-1)
|
if(edit->curpos-edit->scroll>win->vx-1) |
| edit->scroll=edit->curpos-win->vx+1;
|
edit->scroll=edit->curpos-win->vx+1; |
| if(edit->scroll<0)edit->scroll=0;
|
if(edit->scroll<0)edit->scroll=0; |
| if(edit->scroll>len)edit->scroll=len;
|
if(edit->scroll>len)edit->scroll=len; |
| windowinitdraw(win,edit->ctext,win->cback,hascolors?true:2);
|
windowinitdraw(win,edit->ctext,win->cback,hascolors?true:2); |
| if(!hascolors)for(i=0;i<win->vx;i++)addchar(win,0,i,'_');
|
if(!hascolors)for(i=0;i<win->vx;i++)addchar(win,0,i,'_'); |
| mprintw(win,0,-edit->scroll,"%s",edit->text);
|
mprintw(win,0,-edit->scroll,"%s",edit->text); |
| } |
} |
| |
|
| void drawwinbutton(WIN *win,long wx) |
void drawwinbutton(WIN *win,long wx) |
| { |
{ |
| char s[MAXLEN_NUMBER_STRING];
|
char s[MAXLEN_NUMBER_STRING]; |
| BUTTON *button=(BUTTON*)win->extra;
|
BUTTON *button=(BUTTON*)win->extra; |
| long vx=win->vx,vy=win->vy,x,y;
|
long vx=win->vx,vy=win->vy,x,y; |
| char cf,cfu,cb,stav; |
char cf,cfu,cb,stav; |
| attr_t attrplus=0;
|
attr_t attrplus=0; |
| x=0;
|
x=0; |
| y=0;
|
y=0; |
| if((capturewin!=win)&&(button->status==TS_HIGH))button->status=TS_UP; |
if((capturewin!=win)&&(button->status==TS_HIGH))button->status=TS_UP; |
| stav=button->status;
|
stav=button->status; |
| if((stav==TS_PUSH)||(stav==TS_EXPUSH))set_timer(win,BUTTONCLICK,0,buttontimer);
|
if((stav==TS_PUSH)||(stav==TS_EXPUSH))set_timer(win,BUTTONCLICK,0,buttontimer); |
| if(stav==TS_PUSH){button->status=TS_UP;stav=TS_DOWN;}
|
if(stav==TS_PUSH){button->status=TS_UP;stav=TS_DOWN;} |
| if(stav==TS_EXPUSH){button->status=TS_HIGH;stav=TS_DOWN;}
|
if(stav==TS_EXPUSH){button->status=TS_HIGH;stav=TS_DOWN;} |
| cf=button->ctext[stav];
|
cf=button->ctext[stav]; |
| cfu=button->cutext[stav]; |
cfu=button->cutext[stav]; |
| if(stav==0)cb=win->cback;else cb=button->cback[stav-1];
|
if(stav==0)cb=win->cback;else cb=button->cback[stav-1]; |
| char mode=(!hascolors&&((button->hasfocus&&(stav!=TS_DOWN))||(!button->hasfocus&&(stav==TS_DOWN))))?3:true;
|
char mode=(!hascolors&&((button->hasfocus&&(stav!=TS_DOWN))||(!button->hasfocus&&(stav==TS_DOWN))))?3:true; |
| windowinitdraw(win,cf,cb,mode);
|
windowinitdraw(win,cf,cb,mode); |
| if(win->vy>=3)
|
if(win->vy>=3) |
| {
|
{ |
| mbox(win,0,0,win->vx,win->vy);
|
mbox(win,0,0,win->vx,win->vy); |
| x++;vx-=2;wx-=2;
|
x++;vx-=2;wx-=2; |
| y++;vy-=2;
|
y++;vy-=2; |
| }
|
} |
| y+=(vy-1)/2;
|
y+=(vy-1)/2; |
| if(win==focuswin)
|
if(win==focuswin) |
| {
|
{ |
| windowinitdraw(win,button->cfocus[stav],cb,false);
|
windowinitdraw(win,button->cfocus[stav],cb,false); |
| if(!hascolors&&((button->hasfocus&&(stav!=TS_DOWN))||(!button->hasfocus&&(stav==TS_DOWN))))
|
if(!hascolors&&((button->hasfocus&&(stav!=TS_DOWN))||(!button->hasfocus&&(stav==TS_DOWN)))) |
| attrplus|=A_REVERSE;
|
attrplus|=A_REVERSE; |
| addchar(win,y,x,'<');
|
addchar(win,y,x,'<'); |
| addchar(win,y,win->vx-1-x,'>');
|
addchar(win,y,win->vx-1-x,'>'); |
| x++;vx-=2;wx-=2;
|
x++;vx-=2;wx-=2; |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if(!hascolors&&((button->hasfocus&&(stav!=TS_DOWN))||(!button->hasfocus&&(stav==TS_DOWN))))
|
if(!hascolors&&((button->hasfocus&&(stav!=TS_DOWN))||(!button->hasfocus&&(stav==TS_DOWN)))) |
| attrplus|=A_REVERSE;
|
attrplus|=A_REVERSE; |
| }
|
} |
| x+=(vx-strlenmenu(button->text))/2;
|
x+=(vx-strlenmenu(button->text))/2; |
| sprintf(s,"%%.%lds\0",wx);
|
sprintf(s,"%%.%lds\0",wx); |
| if((!hascolors)&&((stav!=TS_UP)))attrplus|=A_UNDERLINE; |
if((!hascolors)&&((stav!=TS_UP)))attrplus|=A_UNDERLINE; |
| mprintwmenu(win,y,x,cb,cf,cfu,attrplus,s,button->text);
|
mprintwmenu(win,y,x,cb,cf,cfu,attrplus,s,button->text); |
| } |
} |
| |
|
| void drawwinscroll(WIN *win) |
void drawwinscroll(WIN *win) |
| { |
{ |
| SCROLL *scroll=(SCROLL*)win->extra;
|
SCROLL *scroll=(SCROLL*)win->extra; |
| char cf,cb;
|
char cf,cb; |
| long len,i;
|
long len,i; |
| if(scroll->pos<scroll->minpos)scroll->pos=scroll->minpos;
|
if(scroll->pos<scroll->minpos)scroll->pos=scroll->minpos; |
| if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos;
|
if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos; |
| if(scroll->smoothpos<0)scroll->smoothpos=0;
|
if(scroll->smoothpos<0)scroll->smoothpos=0; |
| if(scroll->vert)
|
if(scroll->vert) |
| {
|
{ |
| if(scroll->smoothpos>win->vy-3)scroll->smoothpos=win->vy-3;
|
if(scroll->smoothpos>win->vy-3)scroll->smoothpos=win->vy-3; |
| if(!scroll->smooth)len=(win->vy-3)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos);
|
if(!scroll->smooth)len=(win->vy-3)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos); |
| else len=scroll->smoothpos;
|
else len=scroll->smoothpos; |
| if(len>0)
|
if(len>0) |
| {
|
{ |
| if(scroll->spageup==SC_UP)
|
if(scroll->spageup==SC_UP) |
| {
|
{ |
| cf=scroll->carrowup;
|
cf=scroll->carrowup; |
| cb=win->cback;
|
cb=win->cback; |
| }
|
} |
| else
|
else |
| {
|
{ |
| cf=scroll->carrowdown;
|
cf=scroll->carrowdown; |
| cb=scroll->cmark;
|
cb=scroll->cmark; |
| }
|
} |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(scroll->spageup==SC_DOWN))win->attr|=A_REVERSE;
|
if((!hascolors)&&(scroll->spageup==SC_DOWN))win->attr|=A_REVERSE; |
| for(i=0;i<len;i++)addchar(win,i+1,0,hascolors?' ':'|');
|
for(i=0;i<len;i++)addchar(win,i+1,0,hascolors?' ':'|'); |
| }
|
} |
| if(win->vy-3-len>0)
|
if(win->vy-3-len>0) |
| {
|
{ |
| if(scroll->spagedown==SC_UP)
|
if(scroll->spagedown==SC_UP) |
| {
|
{ |
| cf=scroll->carrowup;
|
cf=scroll->carrowup; |
| cb=win->cback;
|
cb=win->cback; |
| }
|
} |
| else
|
else |
| {
|
{ |
| cf=scroll->carrowdown;
|
cf=scroll->carrowdown; |
| cb=scroll->cmark;
|
cb=scroll->cmark; |
| }
|
} |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(scroll->spagedown==SC_DOWN))win->attr|=A_REVERSE;
|
if((!hascolors)&&(scroll->spagedown==SC_DOWN))win->attr|=A_REVERSE; |
| for(i=0;i<win->vy-3-len;i++)addchar(win,i+2+len,0,hascolors?' ':'|');
|
for(i=0;i<win->vy-3-len;i++)addchar(win,i+2+len,0,hascolors?' ':'|'); |
| }
|
} |
| windowinitdraw(win,scroll->carrowup,scroll->cbar,false);
|
windowinitdraw(win,scroll->carrowup,scroll->cbar,false); |
| addchar(win,len+1,0,hascolors?' ':'o');
|
addchar(win,len+1,0,hascolors?' ':'o'); |
| if(scroll->sup==SC_UP)
|
if(scroll->sup==SC_UP) |
| {
|
{ |
| cf=scroll->carrowup;
|
cf=scroll->carrowup; |
| cb=scroll->cbar;
|
cb=scroll->cbar; |
| }
|
} |
| else
|
else |
| {
|
{ |
| cf=scroll->carrowdown;
|
cf=scroll->carrowdown; |
| cb=scroll->cmark;
|
cb=scroll->cmark; |
| }
|
} |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(scroll->sup==SC_DOWN))win->attr|=A_REVERSE;
|
if((!hascolors)&&(scroll->sup==SC_DOWN))win->attr|=A_REVERSE; |
| if(!uglycharset)win->attr|=A_ALTCHARSET;
|
if(!uglycharset)win->attr|=A_ALTCHARSET; |
| addchar(win,0,0,mapsymbol[UARROW]);
|
addchar(win,0,0,mapsymbol[UARROW]); |
| if(scroll->sdown==SC_UP)
|
if(scroll->sdown==SC_UP) |
| {
|
{ |
| cf=scroll->carrowup;
|
cf=scroll->carrowup; |
| cb=scroll->cbar;
|
cb=scroll->cbar; |
| }
|
} |
| else
|
else |
| {
|
{ |
| cf=scroll->carrowdown;
|
cf=scroll->carrowdown; |
| cb=scroll->cmark;
|
cb=scroll->cmark; |
| }
|
} |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(scroll->sdown==SC_DOWN))win->attr|=A_REVERSE;
|
if((!hascolors)&&(scroll->sdown==SC_DOWN))win->attr|=A_REVERSE; |
| if(!uglycharset)win->attr|=A_ALTCHARSET;
|
if(!uglycharset)win->attr|=A_ALTCHARSET; |
| addchar(win,win->vy-1,0,mapsymbol[DARROW]);
|
addchar(win,win->vy-1,0,mapsymbol[DARROW]); |
| }
|
} |
| else
|
else |
| {
|
{ |
| if(scroll->smoothpos>win->vx-3)scroll->smoothpos=win->vx-3;
|
if(scroll->smoothpos>win->vx-3)scroll->smoothpos=win->vx-3; |
| if(!scroll->smooth)len=(win->vx-3)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos);
|
if(!scroll->smooth)len=(win->vx-3)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos); |
| else len=scroll->smoothpos;
|
else len=scroll->smoothpos; |
| if(len>0)
|
if(len>0) |
| {
|
{ |
| if(scroll->spageup==SC_UP)
|
if(scroll->spageup==SC_UP) |
| {
|
{ |
| cf=scroll->carrowup;
|
cf=scroll->carrowup; |
| cb=win->cback;
|
cb=win->cback; |
| }
|
} |
| else
|
else |
| {
|
{ |
| cf=scroll->carrowdown;
|
cf=scroll->carrowdown; |
| cb=scroll->cmark;
|
cb=scroll->cmark; |
| }
|
} |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(scroll->spageup==SC_DOWN))win->attr|=A_REVERSE;
|
if((!hascolors)&&(scroll->spageup==SC_DOWN))win->attr|=A_REVERSE; |
| for(i=0;i<len;i++)addchar(win,0,i+1,hascolors?' ':'-');
|
for(i=0;i<len;i++)addchar(win,0,i+1,hascolors?' ':'-'); |
| }
|
} |
| if(win->vx-3-len>0)
|
if(win->vx-3-len>0) |
| {
|
{ |
| if(scroll->spagedown==SC_UP)
|
if(scroll->spagedown==SC_UP) |
| {
|
{ |
| cf=scroll->carrowup;
|
cf=scroll->carrowup; |
| cb=win->cback;
|
cb=win->cback; |
| }
|
} |
| else
|
else |
| {
|
{ |
| cf=scroll->carrowdown;
|
cf=scroll->carrowdown; |
| cb=scroll->cmark;
|
cb=scroll->cmark; |
| }
|
} |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(scroll->spagedown==SC_DOWN))win->attr|=A_REVERSE;
|
if((!hascolors)&&(scroll->spagedown==SC_DOWN))win->attr|=A_REVERSE; |
| for(i=0;i<win->vx-3-len;i++)addchar(win,0,i+2+len,hascolors?' ':'-');
|
for(i=0;i<win->vx-3-len;i++)addchar(win,0,i+2+len,hascolors?' ':'-'); |
| }
|
} |
| windowinitdraw(win,scroll->carrowup,scroll->cbar,false);
|
windowinitdraw(win,scroll->carrowup,scroll->cbar,false); |
| addchar(win,0,len+1,hascolors?' ':'o');
|
addchar(win,0,len+1,hascolors?' ':'o'); |
| if(scroll->sup==SC_UP)
|
if(scroll->sup==SC_UP) |
| {
|
{ |
| cf=scroll->carrowup;
|
cf=scroll->carrowup; |
| cb=scroll->cbar;
|
cb=scroll->cbar; |
| }
|
} |
| else
|
else |
| {
|
{ |
| cf=scroll->carrowdown;
|
cf=scroll->carrowdown; |
| cb=scroll->cmark;
|
cb=scroll->cmark; |
| }
|
} |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(scroll->sup==SC_DOWN))win->attr|=A_REVERSE;
|
if((!hascolors)&&(scroll->sup==SC_DOWN))win->attr|=A_REVERSE; |
| if(!uglycharset)win->attr|=A_ALTCHARSET;
|
if(!uglycharset)win->attr|=A_ALTCHARSET; |
| addchar(win,0,0,mapsymbol[LARROW]);
|
addchar(win,0,0,mapsymbol[LARROW]); |
| if(scroll->sdown==SC_UP)
|
if(scroll->sdown==SC_UP) |
| {
|
{ |
| cf=scroll->carrowup;
|
cf=scroll->carrowup; |
| cb=scroll->cbar;
|
cb=scroll->cbar; |
| }
|
} |
| else
|
else |
| {
|
{ |
| cf=scroll->carrowdown;
|
cf=scroll->carrowdown; |
| cb=scroll->cmark;
|
cb=scroll->cmark; |
| }
|
} |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(scroll->sdown==SC_DOWN))win->attr|=A_REVERSE;
|
if((!hascolors)&&(scroll->sdown==SC_DOWN))win->attr|=A_REVERSE; |
| if(!uglycharset)win->attr|=A_ALTCHARSET;
|
if(!uglycharset)win->attr|=A_ALTCHARSET; |
| addchar(win,0,win->vx-1,mapsymbol[RARROW]);
|
addchar(win,0,win->vx-1,mapsymbol[RARROW]); |
| }
|
} |
| if(scroll->sup==SC_PUSH)scroll->sup=SC_UP;
|
if(scroll->sup==SC_PUSH)scroll->sup=SC_UP; |
| if(scroll->spageup==SC_PUSH)scroll->spageup=SC_UP;
|
if(scroll->spageup==SC_PUSH)scroll->spageup=SC_UP; |
| if(scroll->sdown==SC_PUSH)scroll->sdown=SC_UP;
|
if(scroll->sdown==SC_PUSH)scroll->sdown=SC_UP; |
| if(scroll->spagedown==SC_PUSH)scroll->spagedown=SC_UP;
|
if(scroll->spagedown==SC_PUSH)scroll->spagedown=SC_UP; |
| } |
} |
| |
|
| void drawwinlist(WIN *win,long wx) |
void drawwinlist(WIN *win,long wx) |
| { |
{ |
| char s[MAXLEN_NUMBER_STRING];
|
char s[MAXLEN_NUMBER_STRING]; |
| LIST *list; |
LIST *list; |
| GList *lines;
|
GList *lines; |
| SCROLL *hscroll,*vscroll;
|
SCROLL *hscroll,*vscroll; |
| list=&win->extra->list;
|
list=&win->extra->list; |
| long poz,actline,scrpos,hpos,i,numlines;
|
long poz,actline,scrpos,hpos,i,numlines; |
| char cf,cb;
|
char cf,cb; |
| bool isfocus;
|
bool isfocus; |
| if(list->combotyp&&(capturewin==NULL)&&isactive(win))capturewin=win;
|
if(list->combotyp&&(capturewin==NULL)&&isactive(win))capturewin=win; |
| vscroll=&list->vscroll->extra->scroll;
|
vscroll=&list->vscroll->extra->scroll; |
| hscroll=&list->hscroll->extra->scroll; |
hscroll=&list->hscroll->extra->scroll; |
| if(vscroll->pos<vscroll->minpos)vscroll->pos=vscroll->minpos; |
if(vscroll->pos<vscroll->minpos)vscroll->pos=vscroll->minpos; |
| if(vscroll->pos>vscroll->maxpos)vscroll->pos=vscroll->maxpos; |
if(vscroll->pos>vscroll->maxpos)vscroll->pos=vscroll->maxpos; |
| isfocus=win==focuswin;
|
isfocus=win==focuswin; |
| if(list->activeline<0)list->activeline=0;
|
if(list->activeline<0)list->activeline=0; |
| numlines=g_list_length(list->lines); |
numlines=g_list_length(list->lines); |
| if(list->activeline>numlines-1)list->activeline=numlines-1;
|
if(list->activeline>numlines-1)list->activeline=numlines-1; |
| actline=list->activeline;
|
actline=list->activeline; |
| scrpos=vscroll->pos;
|
scrpos=vscroll->pos; |
| hpos=hscroll->pos;
|
hpos=hscroll->pos; |
| poz=actline-vscroll->pos;
|
poz=actline-vscroll->pos; |
| windowinitdraw(win,list->cborder,win->cback,true);
|
windowinitdraw(win,list->cborder,win->cback,true); |
| mbox(win,0,0,win->vx,win->vy);
|
mbox(win,0,0,win->vx,win->vy); |
| if((poz>=0)&&(poz<=win->vy-1-2))
|
if((poz>=0)&&(poz<=win->vy-1-2)) |
| {
|
{ |
| if((!hascolors)&&(!list->combotyp))addsymbol(win,0,poz+1,mapsymbol[LTEE]);
|
if((!hascolors)&&(!list->combotyp))addsymbol(win,0,poz+1,mapsymbol[LTEE]); |
| cf=isfocus?list->cactivetext:list->cseltext;
|
cf=isfocus?list->cactivetext:list->cseltext; |
| cb=isfocus?list->cactive:list->cselected;
|
cb=isfocus?list->cactive:list->cselected; |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if(!hascolors)if(isfocus)win->attr|=A_REVERSE;
|
if(!hascolors)if(isfocus)win->attr|=A_REVERSE; |
| for(i=0;i<win->vx-2;i++)addchar(win,poz+1,i+1,' ');
|
for(i=0;i<win->vx-2;i++)addchar(win,poz+1,i+1,' '); |
| }
|
} |
| if(wx<win->vx)wx++; |
if(wx<win->vx)wx++; |
| lines=g_list_nth(list->lines,scrpos);
|
lines=g_list_nth(list->lines,scrpos); |
| for(i=scrpos;i<numlines;i++) |
for(i=scrpos;i<numlines;i++) |
| {
|
{ |
| if(i-scrpos+1<=win->vy-2)
|
if(i-scrpos+1<=win->vy-2) |
| {
|
{ |
| cf=(i!=actline)?list->ctext:(isfocus?list->cactivetext:list->cseltext);
|
cf=(i!=actline)?list->ctext:(isfocus?list->cactivetext:list->cseltext); |
| cb=(i!=actline)?win->cback:(isfocus?list->cactive:list->cselected);
|
cb=(i!=actline)?win->cback:(isfocus?list->cactive:list->cselected); |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if(strlen(lines->data)>hpos)
|
if(strlen(lines->data)>hpos) |
| {
|
{ |
| sprintf(s,"%%.%lds\0",wx-2+hpos);
|
sprintf(s,"%%.%lds\0",wx-2+hpos); |
| if((!hascolors)&&(i==actline))if(isfocus)win->attr|=A_REVERSE;
|
if((!hascolors)&&(i==actline))if(isfocus)win->attr|=A_REVERSE; |
| mprintw(win,i-scrpos+1,1,s,(char*)lines->data+hpos);
|
mprintw(win,i-scrpos+1,1,s,(char*)lines->data+hpos); |
| } |
} |
| } |
} |
| lines=g_list_next(lines);
|
lines=g_list_next(lines); |
| }
|
} |
| if(list->exvscroll==EX_UP)if(vscroll->pos>vscroll->minpos){vscroll->pos--;list->activeline--;}
|
if(list->exvscroll==EX_UP)if(vscroll->pos>vscroll->minpos){vscroll->pos--;list->activeline--;} |
| if(list->exvscroll==EX_DOWN)if(vscroll->pos<vscroll->maxpos){vscroll->pos++;list->activeline++;}
|
if(list->exvscroll==EX_DOWN)if(vscroll->pos<vscroll->maxpos){vscroll->pos++;list->activeline++;} |
| if(list->exhscroll==EX_UP)if(hscroll->pos>hscroll->minpos){hscroll->pos--;}
|
if(list->exhscroll==EX_UP)if(hscroll->pos>hscroll->minpos){hscroll->pos--;} |
| if(list->exhscroll==EX_DOWN)if(hscroll->pos<hscroll->maxpos){hscroll->pos++;}
|
if(list->exhscroll==EX_DOWN)if(hscroll->pos<hscroll->maxpos){hscroll->pos++;} |
| } |
} |
| |
|
| void drawwincombo(WIN *win) |
void drawwincombo(WIN *win) |
| { |
{ |
| char s[MAXLEN_NUMBER_STRING];
|
char s[MAXLEN_NUMBER_STRING]; |
| long i,numlines; |
long i,numlines; |
| char *data; |
char *data; |
| char cf,cb;
|
char cf,cb; |
| COMBO *combo;
|
COMBO *combo; |
| LIST *list; |
LIST *list; |
| combo=&win->extra->combo;
|
combo=&win->extra->combo; |
| list=&combo->list->extra->list;
|
list=&combo->list->extra->list; |
| bool whatcol;
|
bool whatcol; |
| long pushed;
|
long pushed; |
| numlines=g_list_length(list->lines); |
numlines=g_list_length(list->lines); |
| if(combo->activeline<0)combo->activeline=0; |
if(combo->activeline<0)combo->activeline=0; |
| if(combo->activeline>numlines-1)combo->activeline=numlines-1; |
if(combo->activeline>numlines-1)combo->activeline=numlines-1; |
| data=g_list_nth_data(list->lines,combo->activeline); |
data=g_list_nth_data(list->lines,combo->activeline); |
| pushed=strlen(data)-win->vx+1;
|
pushed=strlen(data)-win->vx+1; |
| if(pushed<0)pushed=0;
|
if(pushed<0)pushed=0; |
| if(combo->scroll<0)combo->scroll=0;
|
if(combo->scroll<0)combo->scroll=0; |
| if(combo->scroll>pushed)combo->scroll=pushed;
|
if(combo->scroll>pushed)combo->scroll=pushed; |
| pushed=combo->pushed;
|
pushed=combo->pushed; |
| if(combo->pushed==SC_PUSH)combo->pushed=SC_UP;
|
if(combo->pushed==SC_PUSH)combo->pushed=SC_UP; |
| if(pushed>1)pushed=1;
|
if(pushed>1)pushed=1; |
| whatcol=!((win==focuswin)&&(!combo->list->active));
|
whatcol=!((win==focuswin)&&(!combo->list->active)); |
| cb=whatcol?win->cback:list->cactive;
|
cb=whatcol?win->cback:list->cactive; |
| cf=whatcol?list->ctext:list->cactivetext;
|
cf=whatcol?list->ctext:list->cactivetext; |
| windowinitdraw(win,cf,cb,true);
|
windowinitdraw(win,cf,cb,true); |
| sprintf(s,"%%.%lds\0",win->vx-1+combo->scroll);
|
sprintf(s,"%%.%lds\0",win->vx-1+combo->scroll); |
| if(!hascolors)
|
if(!hascolors) |
| {
|
{ |
| if(focuswin==win)win->attr|=A_REVERSE;
|
if(focuswin==win)win->attr|=A_REVERSE; |
| win->attr|=A_UNDERLINE;
|
win->attr|=A_UNDERLINE; |
| for(i=0;i<win->vx-1;i++)addchar(win,0,i,'_');
|
for(i=0;i<win->vx-1;i++)addchar(win,0,i,'_'); |
| }
|
} |
| else for(i=0;i<win->vx-1;i++)addchar(win,0,i,' ');
|
else for(i=0;i<win->vx-1;i++)addchar(win,0,i,' '); |
| mprintw(win,0,-combo->scroll,s,data);
|
mprintw(win,0,-combo->scroll,s,data); |
| cb=combo->cbutback[pushed];
|
cb=combo->cbutback[pushed]; |
| cf=combo->cbutfront[pushed];
|
cf=combo->cbutfront[pushed]; |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&(pushed==0))win->attr|=A_REVERSE;
|
if((!hascolors)&&(pushed==0))win->attr|=A_REVERSE; |
| if(!uglycharset)win->attr|=A_ALTCHARSET;
|
if(!uglycharset)win->attr|=A_ALTCHARSET; |
| addchar(win,0,win->vx-1,mapsymbol[DARROW]);
|
addchar(win,0,win->vx-1,mapsymbol[DARROW]); |
| } |
} |
| |
|
| void drawwinstatus(WIN *win) |
void drawwinstatus(WIN *win) |
| { |
{ |
| char s[MAXLEN_NUMBER_STRING];
|
char s[MAXLEN_NUMBER_STRING]; |
| long x,y,i; |
long x,y,i; |
| char c; |
char c; |
| STATUS *status=(STATUS*)win->extra;
|
STATUS *status=(STATUS*)win->extra; |
| long l;
|
long l; |
| if(status->pos<0)status->pos=0; |
if(status->pos<0)status->pos=0; |
| if(status->pos>status->maxpos)status->pos=status->maxpos; |
if(status->pos>status->maxpos)status->pos=status->maxpos; |
| if(status->vert)
|
if(status->vert) |
| {
|
{ |
| y=win->vy-status->pos*win->vy/status->maxpos;
|
y=win->vy-status->pos*win->vy/status->maxpos; |
| sprintf(s,"%ld%s\0",status->pos,status->text);
|
sprintf(s,"%ld%s\0",status->pos,status->text); |
| l=strlen(s);
|
l=strlen(s); |
| x=(win->vy-l)/2;
|
x=(win->vy-l)/2; |
| windowinitdraw(win,status->ctfull,status->cbfull,false);
|
windowinitdraw(win,status->ctfull,status->cbfull,false); |
| if(!hascolors)win->attr|=A_UNDERLINE|A_REVERSE;
|
if(!hascolors)win->attr|=A_UNDERLINE|A_REVERSE; |
| for(i=win->vy;i>=y;i--)
|
for(i=win->vy;i>=y;i--) |
| {
|
{ |
| if(((i<x)||(i>=x+l))||(!status->vtext)){if(hascolors)c=' ';else c='_';}else c=s[i-x];
|
if(((i<x)||(i>=x+l))||(!status->vtext)){if(hascolors)c=' ';else c='_';}else c=s[i-x]; |
| addchar(win,i,0,c);
|
addchar(win,i,0,c); |
| }
|
} |
| windowinitdraw(win,status->ctclear,win->cback,false);
|
windowinitdraw(win,status->ctclear,win->cback,false); |
| if(!hascolors)win->attr|=A_UNDERLINE;
|
if(!hascolors)win->attr|=A_UNDERLINE; |
| for(;i>=0;i--)
|
for(;i>=0;i--) |
| {
|
{ |
| if(((i<x)||(i>=x+l))||(!status->vtext)){if(hascolors)c=' ';else c='_';}else c=s[i-x];
|
if(((i<x)||(i>=x+l))||(!status->vtext)){if(hascolors)c=' ';else c='_';}else c=s[i-x]; |
| addchar(win,i,0,c);
|
addchar(win,i,0,c); |
| }
|
} |
| }
|
} |
| else
|
else |
| {
|
{ |
| x=status->pos*win->vx/status->maxpos;
|
x=status->pos*win->vx/status->maxpos; |
| sprintf(s,"%ld%s\0",status->pos,status->text);
|
sprintf(s,"%ld%s\0",status->pos,status->text); |
| l=strlen(s);
|
l=strlen(s); |
| y=(win->vx-l)/2;
|
y=(win->vx-l)/2; |
| windowinitdraw(win,status->ctfull,status->cbfull,false);
|
windowinitdraw(win,status->ctfull,status->cbfull,false); |
| if(!hascolors)win->attr|=A_UNDERLINE|A_REVERSE;
|
if(!hascolors)win->attr|=A_UNDERLINE|A_REVERSE; |
| for(i=0;i<x;i++)
|
for(i=0;i<x;i++) |
| {
|
{ |
| if(((i<y)||(i>=y+l))||(!status->vtext)){if(hascolors)c=' ';else c='_';}else c=s[i-y];
|
if(((i<y)||(i>=y+l))||(!status->vtext)){if(hascolors)c=' ';else c='_';}else c=s[i-y]; |
| addchar(win,0,i,c);
|
addchar(win,0,i,c); |
| }
|
} |
| windowinitdraw(win,status->ctclear,win->cback,false);
|
windowinitdraw(win,status->ctclear,win->cback,false); |
| if(!hascolors)win->attr|=A_UNDERLINE;
|
if(!hascolors)win->attr|=A_UNDERLINE; |
| for(;i<win->vx;i++)
|
for(;i<win->vx;i++) |
| {
|
{ |
| if(((i<y)||(i>=y+l))||(!status->vtext)){if(hascolors)c=' ';else c='_';}else c=s[i-y];
|
if(((i<y)||(i>=y+l))||(!status->vtext)){if(hascolors)c=' ';else c='_';}else c=s[i-y]; |
| addchar(win,0,i,c);
|
addchar(win,0,i,c); |
| }
|
} |
| } |
} |
| } |
} |
| |
|
| Line 977 void drawwintable(WIN *win) |
|
| Line 979 void drawwintable(WIN *win) |
|
| |
|
| void drawwinpaint(WIN *win) |
void drawwinpaint(WIN *win) |
| { |
{ |
| PAINT *paint=(PAINT*)win->extra;
|
PAINT *paint=(PAINT*)win->extra; |
| if(paint->style==PA_SOLID)
|
if(paint->style==PA_SOLID) |
| {
|
{ |
| windowinitdraw(win,paint->color,win->cback,true);
|
windowinitdraw(win,paint->color,win->cback,true); |
| }
|
} |
| else if(paint->style==PA_PATTERN)
|
else if(paint->style==PA_PATTERN) |
| {
|
{ |
| windowinitdraw(win,paint->color,win->cback,4);
|
windowinitdraw(win,paint->color,win->cback,4); |
| }
|
} |
| else if(paint->style==PA_BORDER)
|
else if(paint->style==PA_BORDER) |
| {
|
{ |
| windowinitdraw(win,paint->color,win->cback,true);
|
windowinitdraw(win,paint->color,win->cback,true); |
| if((win->vx==1)&&(win->vy>1))mvline(win,0,0,win->vy);
|
if((win->vx==1)&&(win->vy>1))mvline(win,0,0,win->vy); |
| else if((win->vx>1)&&(win->vy==1))mhline(win,0,0,win->vx);
|
else if((win->vx>1)&&(win->vy==1))mhline(win,0,0,win->vx); |
| else if((win->vx>1)&&(win->vy>1))mbox(win,0,0,win->vx,win->vy);
|
else if((win->vx>1)&&(win->vy>1))mbox(win,0,0,win->vx,win->vy); |
| } |
} |
| } |
} |
| |
|
| void drawwinmenu(WIN *win,long wx) |
void drawwinmenu(WIN *win,long wx) |
| { |
{ |
| char s[MAXLEN_NUMBER_STRING];
|
char s[MAXLEN_NUMBER_STRING]; |
| MENU *menu; |
MENU *menu; |
| GList *lines;
|
GList *lines; |
| menu=&win->extra->menu;
|
menu=&win->extra->menu; |
| long poz,actline,i,numlines,len,scoffs;
|
long poz,actline,i,numlines,len,scoffs; |
| char cfu,cf,cb;
|
char cfu,cf,cb; |
| bool isfocus; |
bool isfocus; |
| isfocus=isfocused(win);
|
isfocus=isfocused(win); |
| if(!isfocus) |
if(!isfocus) |
| { |
{ |
| menu->activeline=-1; |
menu->activeline=-1; |
| if(capturewin==win)capturewin=NULL; |
if(capturewin==win)capturewin=NULL; |
| } |
} |
| if(menu->activeline<-1)menu->activeline=-1;
|
if(menu->activeline<-1)menu->activeline=-1; |
| numlines=g_list_length(menu->lines); |
numlines=g_list_length(menu->lines); |
| if(menu->activeline>numlines-1)menu->activeline=numlines-1;
|
if(menu->activeline>numlines-1)menu->activeline=numlines-1; |
| actline=menu->activeline;
|
actline=menu->activeline; |
| windowinitdraw(win,menu->cborder,win->cback,true);
|
windowinitdraw(win,menu->cborder,win->cback,true); |
| if(menu->vert) |
if(menu->vert) |
| { |
{ |
| mbox(win,0,0,win->vx,win->vy); |
mbox(win,0,0,win->vx,win->vy); |
| if((actline>=0)&&(actline<=win->vy-1-2))
|
if((actline>=0)&&(actline<=win->vy-1-2)) |
| {
|
{ |
| cf=isfocus?menu->cactivetext:menu->cactivetext;
|
cf=isfocus?menu->cactivetext:menu->cactivetext; |
| cb=isfocus?menu->cactive:menu->cactive;
|
cb=isfocus?menu->cactive:menu->cactive; |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if(!hascolors)if(isfocus)win->attr|=A_REVERSE;
|
if(!hascolors)if(isfocus)win->attr|=A_REVERSE; |
| for(i=0;i<win->vx-2;i++)addchar(win,actline+1,i+1,' ');
|
for(i=0;i<win->vx-2;i++)addchar(win,actline+1,i+1,' '); |
| }
|
} |
| if(wx<win->vx)wx++; |
if(wx<win->vx)wx++; |
| lines=menu->lines;
|
lines=menu->lines; |
| scoffs=4; |
scoffs=4; |
| while(lines!=NULL) |
while(lines!=NULL) |
| { |
{ |
| Line 1037 void drawwinmenu(WIN *win,long wx) |
|
| Line 1039 void drawwinmenu(WIN *win,long wx) |
|
| } |
} |
| lines=menu->lines; |
lines=menu->lines; |
| for(i=0;i<numlines;i++) |
for(i=0;i<numlines;i++) |
| {
|
{ |
| if(i+1<=win->vy-2)
|
if(i+1<=win->vy-2) |
| {
|
{ |
| attr_t attrplus=0; |
attr_t attrplus=0; |
| cf=(i!=actline)?menu->ctext:menu->cactivetext;
|
cf=(i!=actline)?menu->ctext:menu->cactivetext; |
| cfu=(i!=actline)?menu->cutext:menu->cactiveutext; |
cfu=(i!=actline)?menu->cutext:menu->cactiveutext; |
| cb=(i!=actline)?win->cback:menu->cactive;
|
cb=(i!=actline)?win->cback:menu->cactive; |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if(((CMENU*)lines->data)->checked)addchar(win,i+1,1,'*'); |
if(((CMENU*)lines->data)->checked)addchar(win,i+1,1,'*'); |
| if(strlenmenu(((CMENU*)lines->data)->text)>0)
|
if(strlenmenu(((CMENU*)lines->data)->text)>0) |
| {
|
{ |
| sprintf(s,"%%.%lds\0",wx-2-1);
|
sprintf(s,"%%.%lds\0",wx-2-1); |
| if((!hascolors)&&(i==actline))if(isfocus) |
if((!hascolors)&&(i==actline))if(isfocus) |
| { |
{ |
| attrplus=A_REVERSE;
|
attrplus=A_REVERSE; |
| win->attr|=attrplus; |
win->attr|=attrplus; |
| } |
} |
| mprintwmenu(win,i+1,1+1,cb,cf,cfu,attrplus,s,((CMENU*)lines->data)->text);
|
mprintwmenu(win,i+1,1+1,cb,cf,cfu,attrplus,s,((CMENU*)lines->data)->text); |
| } |
} |
| else if(strcmp(((CMENU*)lines->data)->text,"-")==0) |
else if(strcmp(((CMENU*)lines->data)->text,"-")==0) |
| mhline(win,1+1,i+1,win->vx-4); |
mhline(win,1+1,i+1,win->vx-4); |
| Line 1062 void drawwinmenu(WIN *win,long wx) |
|
| Line 1064 void drawwinmenu(WIN *win,long wx) |
|
| ((CMENU*)lines->data)->text); |
((CMENU*)lines->data)->text); |
| if(((CMENU*)lines->data)->submenu!=NULL) |
if(((CMENU*)lines->data)->submenu!=NULL) |
| { |
{ |
| if(!uglycharset)win->attr|=A_ALTCHARSET;
|
if(!uglycharset)win->attr|=A_ALTCHARSET; |
| addchar(win,i+1,win->vx-2,mapsymbol[RARROW]);
|
addchar(win,i+1,win->vx-2,mapsymbol[RARROW]); |
| } |
} |
| } |
} |
| lines=g_list_next(lines);
|
lines=g_list_next(lines); |
| } |
} |
| } |
} |
| else |
else |
| { |
{ |
| lines=menu->lines; |
lines=menu->lines; |
| poz=1;
|
poz=1; |
| for(i=0;i<numlines;i++) |
for(i=0;i<numlines;i++) |
| {
|
{ |
| if(poz<=win->vx-1)
|
if(poz<=win->vx-1) |
| {
|
{ |
| attr_t attrplus=0; |
attr_t attrplus=0; |
| cf=(i!=actline)?menu->ctext:menu->cactivetext;
|
cf=(i!=actline)?menu->ctext:menu->cactivetext; |
| cfu=(i!=actline)?menu->cutext:menu->cactiveutext; |
cfu=(i!=actline)?menu->cutext:menu->cactiveutext; |
| cb=(i!=actline)?win->cback:menu->cactive;
|
cb=(i!=actline)?win->cback:menu->cactive; |
| windowinitdraw(win,cf,cb,false);
|
windowinitdraw(win,cf,cb,false); |
| if((!hascolors)&&!((i==actline)&&isfocus)) |
if((!hascolors)&&!((i==actline)&&isfocus)) |
| { |
{ |
| attrplus=A_REVERSE;
|
attrplus=A_REVERSE; |
| win->attr|=attrplus; |
win->attr|=attrplus; |
| } |
} |
| len=0; |
len=0; |
| Line 1092 void drawwinmenu(WIN *win,long wx) |
|
| Line 1094 void drawwinmenu(WIN *win,long wx) |
|
| if(lines->data!=NULL) |
if(lines->data!=NULL) |
| if(((CMENU*)lines->data)->text!=NULL) |
if(((CMENU*)lines->data)->text!=NULL) |
| len=strlenmenu(((CMENU*)lines->data)->text); |
len=strlenmenu(((CMENU*)lines->data)->text); |
| if(len>0)
|
if(len>0) |
| {
|
{ |
| sprintf(s,"%%.%lds\0",wx);
|
sprintf(s,"%%.%lds\0",wx); |
| mprintwmenu(win,0,poz,cb,cf,cfu,attrplus,s,((CMENU*)lines->data)->text); |
mprintwmenu(win,0,poz,cb,cf,cfu,attrplus,s,((CMENU*)lines->data)->text); |
| } |
} |
| if(i==actline) |
if(i==actline) |
| { |
{ |
| addchar(win,0,poz-1,' '); |
addchar(win,0,poz-1,' '); |
| addchar(win,0,poz+len,' '); |
addchar(win,0,poz+len,' '); |
| }
|
} |
| } |
} |
| poz+=len+2; |
poz+=len+2; |
| lines=g_list_next(lines);
|
lines=g_list_next(lines); |
| } |
} |
| }
|
} |
| } |
} |
| |
|
| void drawwindialog(WIN *win,long wx) |
void drawwindialog(WIN *win,long wx) |
| { |
{ |
| char s[MAXLEN_NUMBER_STRING];
|
char s[MAXLEN_NUMBER_STRING]; |
| DIALOG *dialog=&win->extra->dialog;
|
DIALOG *dialog=&win->extra->dialog; |
| char c; |
char c; |
| long n,olen;
|
long n,olen; |
| n=8;
|
n=8; |
| if((dialog->style&ST_DI_HASMAXIMIZE)==ST_DI_HASMAXIMIZE)n++;
|
if((dialog->style&ST_DI_HASMAXIMIZE)==ST_DI_HASMAXIMIZE)n++; |
| if((dialog->style&ST_DI_HASMINIMIZE)==ST_DI_HASMINIMIZE)n++;
|
if((dialog->style&ST_DI_HASMINIMIZE)==ST_DI_HASMINIMIZE)n++; |
| if(isfocused(win))c=dialog->cbactive;else c=dialog->cbinactive;
|
if(isfocused(win))c=dialog->cbactive;else c=dialog->cbinactive; |
| windowinitdraw(win,c,win->cback,true);
|
windowinitdraw(win,c,win->cback,true); |
| if(win->vy!=1)mbox(win,0,0,win->vx,win->vy);else mhline(win,0,0,win->vx);
|
if(win->vy!=1)mbox(win,0,0,win->vx,win->vy);else mhline(win,0,0,win->vx); |
| wx-=3;
|
wx-=3; |
| if(wx>win->vx-n)wx=win->vx-n;
|
if(wx>win->vx-n)wx=win->vx-n; |
| sprintf(s,"%%.%lds\0",wx);
|
sprintf(s,"%%.%lds\0",wx); |
| addchar(win,0,2,' ');
|
addchar(win,0,2,' '); |
| mprintw(win,0,3,s,dialog->caption);
|
mprintw(win,0,3,s,dialog->caption); |
| olen=strlen(dialog->caption);
|
olen=strlen(dialog->caption); |
| addchar(win,0,3+(olen<wx?olen:wx),' ');
|
addchar(win,0,3+(olen<wx?olen:wx),' '); |
| addchar(win,0,win->vx-n+4,'[');
|
addchar(win,0,win->vx-n+4,'['); |
| addchar(win,0,win->vx-2,']');
|
addchar(win,0,win->vx-2,']'); |
| } |
} |
| |
|
| void drawwinfade(WIN *win,long x,long y) |
void drawwinfade(WIN *win,long x,long y) |
| { |
{ |
| long i,j,chr;
|
long i,j,chr; |
| char cb,cf; |
char cb,cf; |
| short pair;
|
short pair; |
| for(j=y;j<y+win->vy;j++)
|
for(j=y;j<y+win->vy;j++) |
| for(i=x;i<x+win->vx;i++)
|
for(i=x;i<x+win->vx;i++) |
| {
|
{ |
| chr=minch(&mainwin,j,i);
|
chr=minch(&mainwin,j,i); |
| cb=C_BLACK;
|
cb=C_BLACK; |
| cf=C_WHITE;
|
cf=C_WHITE; |
| pair=cb&0x7;
|
pair=cb&0x7; |
| pair<<=3;
|
pair<<=3; |
| pair+=cf;
|
pair+=cf; |
| if(pair==7)pair=0;else if(pair==0)pair=7;
|
if(pair==7)pair=0;else if(pair==0)pair=7; |
| init_pair(pair,cf,cb);
|
init_pair(pair,cf,cb); |
| chr=chr&~A_BOLD&~A_REVERSE&~A_COLOR|COLOR_PAIR(pair);
|
chr=chr&~A_BOLD&~A_REVERSE&~A_COLOR|COLOR_PAIR(pair); |
| maddch(&mainwin,j,i,chr);
|
maddch(&mainwin,j,i,chr); |
| }
|
} |
| } |
} |