Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, October 16, 2026

Diff for tucniak/cuchar/cc_extra.c between version 1.1 and 1.2

version 1.1, 2005/11/25 22:41:23 version 1.2, 2005/11/26 19:43:02
Line 2 
Line 2 
 // 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);
     }      }
 }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top