/* Name: cc_extra.c Author: Michal Sudolsky Date: 22.09.2005 14:26 */ // modified by Juraj Kolesar #include "cc.h" void _cc_settextparams(Cc_Win *win,Cc_Union_P *params) { TEXT *text=&win->extra->text; Cc_Text_P *ptext=¶ms->text; win->cback=ptext->cback!=CC_C_DEFAULT?ptext->cback: (!(win->style&CC_ST_TE_DOWNTEXT_COLORS)?CC_C_BLUE:CC_C_WHITE); text->text=ptext->text; text->ctext=ptext->ctext!=CC_C_DEFAULT?ptext->ctext: (!(win->style&CC_ST_TE_DOWNTEXT_COLORS)?CC_C_WHITE:CC_C_BLACK); } void _cc_seteditparams(Cc_Win *win,Cc_Union_P *params) { EDIT *edit=&win->extra->edit; Cc_Edit_P *pedit=¶ms->edit; win->cback=pedit->cback!=CC_C_DEFAULT?pedit->cback:CC_C_BLACK; edit->style=pedit->style; edit->cbmask=pedit->cbmask!=CC_C_DEFAULT?pedit->cbmask:CC_C_CYAN; edit->cfmask=pedit->cfmask!=CC_C_DEFAULT?pedit->cfmask:CC_C_BLACK; edit->ctext=pedit->ctext!=CC_C_DEFAULT?pedit->ctext:CC_C_WHITE; edit->change=pedit->change; } void _cc_setbuttonparams(Cc_Win *win,Cc_Union_P *params) { BUTTON *button=&win->extra->button; Cc_Button_P *pbutton=¶ms->button; if(pbutton->style==CC_BT_NORMAL) { win->cback=pbutton->cback[0]!=CC_C_DEFAULT?pbutton->cback[0]:CC_C_GREEN; } else { win->cback=pbutton->cback[0]!=CC_C_DEFAULT?pbutton->cback[0]:CC_C_BLUE; } button->text=pbutton->text; button->style=pbutton->style; button->checked=pbutton->checked; if(pbutton->style==CC_BT_NORMAL) { button->cback[0]=pbutton->cback[1]!=CC_C_DEFAULT?pbutton->cback[1]: CC_C_BLACK; button->cback[1]=pbutton->cback[2]!=CC_C_DEFAULT?pbutton->cback[2]: CC_C_GREEN; button->ctext[0]=pbutton->ctext[0]!=CC_C_DEFAULT?pbutton->ctext[0]: CC_C_LWHITE; button->ctext[1]=pbutton->ctext[1]!=CC_C_DEFAULT?pbutton->ctext[1]: CC_C_YELLOW; button->ctext[2]=pbutton->ctext[2]!=CC_C_DEFAULT?pbutton->ctext[2]: CC_C_LYELLOW; button->cutext[0]=pbutton->cutext[0]!=CC_C_DEFAULT?pbutton->cutext[0]: CC_C_LCYAN; button->cutext[1]=pbutton->cutext[1]!=CC_C_DEFAULT?pbutton->cutext[1]: CC_C_CYAN; button->cutext[2]=pbutton->cutext[2]!=CC_C_DEFAULT?pbutton->cutext[2]: CC_C_LCYAN; button->cfocus[0]=pbutton->cfocus[0]!=CC_C_DEFAULT?pbutton->cfocus[0]: CC_C_LRED; button->cfocus[1]=pbutton->cfocus[1]!=CC_C_DEFAULT?pbutton->cfocus[1]: CC_C_RED; button->cfocus[2]=pbutton->cfocus[2]!=CC_C_DEFAULT?pbutton->cfocus[2]: CC_C_LRED; } else { button->cback[0]=pbutton->cback[1]!=CC_C_DEFAULT?pbutton->cback[1]: CC_C_BLUE; button->cback[1]=pbutton->cback[2]!=CC_C_DEFAULT?pbutton->cback[2]: CC_C_BLUE; button->ctext[0]=pbutton->ctext[0]!=CC_C_DEFAULT?pbutton->ctext[0]: CC_C_LWHITE; button->ctext[1]=pbutton->ctext[1]!=CC_C_DEFAULT?pbutton->ctext[1]: CC_C_LWHITE; button->ctext[2]=pbutton->ctext[2]!=CC_C_DEFAULT?pbutton->ctext[2]: CC_C_LWHITE; button->cutext[0]=pbutton->cutext[0]!=CC_C_DEFAULT?pbutton->cutext[0]: CC_C_LCYAN; button->cutext[1]=pbutton->cutext[1]!=CC_C_DEFAULT?pbutton->cutext[1]: CC_C_LCYAN; button->cutext[2]=pbutton->cutext[2]!=CC_C_DEFAULT?pbutton->cutext[2]: CC_C_LCYAN; button->cfocus[0]=pbutton->cfocus[0]!=CC_C_DEFAULT?pbutton->cfocus[0]: CC_C_LGREEN; button->cfocus[1]=pbutton->cfocus[1]!=CC_C_DEFAULT?pbutton->cfocus[1]: CC_C_LGREEN; button->cfocus[2]=pbutton->cfocus[2]!=CC_C_DEFAULT?pbutton->cfocus[2]: CC_C_LGREEN; } button->hasfocus=pbutton->hasfocus; button->push=pbutton->push; } void _cc_setscrollparams(Cc_Win *win,Cc_Union_P *params) { SCROLL *scroll=&win->extra->scroll; Cc_Scroll_P *pscroll=¶ms->scroll; win->cback=pscroll->cback!=CC_C_DEFAULT?pscroll->cback:CC_C_CYAN; scroll->pos=pscroll->pos; scroll->minpos=pscroll->minpos; scroll->maxpos=pscroll->maxpos; scroll->pagecnt=pscroll->pagecnt; scroll->cnt=pscroll->cnt; scroll->cmark=pscroll->cmark!=CC_C_DEFAULT?pscroll->cmark:CC_C_YELLOW; scroll->cbar=pscroll->cbar!=CC_C_DEFAULT?pscroll->cbar:CC_C_WHITE; scroll->carrowup=pscroll->carrowup!=CC_C_DEFAULT?pscroll->carrowup: CC_C_LBLACK; scroll->carrowdown=pscroll->carrowdown!=CC_C_DEFAULT?pscroll->carrowdown: CC_C_LGREEN; scroll->vert=pscroll->vert; scroll->change=pscroll->change; } void _cc_setcomboparams(Cc_Win *win,Cc_Union_P *params) { COMBO *combo=&win->extra->combo; LIST *list=&combo->list->extra->list; SCROLL *scroll1,*scroll2; scroll1=&list->vscroll->extra->scroll; scroll2=&list->hscroll->extra->scroll; Cc_Combo_P *pcombo=¶ms->combo; win->cback=pcombo->cback!=CC_C_DEFAULT?pcombo->cback:CC_C_BLACK; combo->activeline=pcombo->activeline; combo->cbutback[0]=pcombo->cbutback[0]!=CC_C_DEFAULT?pcombo->cbutback[0]: CC_C_CYAN; combo->cbutback[1]=pcombo->cbutback[1]!=CC_C_DEFAULT?pcombo->cbutback[1]: CC_C_YELLOW; combo->cbutfront[0]=pcombo->cbutfront[0]!=CC_C_DEFAULT?pcombo->cbutfront[0]: CC_C_LWHITE; combo->cbutfront[1]=pcombo->cbutfront[1]!=CC_C_DEFAULT?pcombo->cbutfront[1]: CC_C_LGREEN; combo->change=pcombo->change; combo->maxvisitems=pcombo->maxvisitems; combo->lstvy=pcombo->lstvy;cc_move_win(combo->list,CC_NOCHANGE, CC_NOCHANGE,CC_NOCHANGE, pcombo->lstvy,CC_NOCHANGE); combo->list->cback=pcombo->lstcback!=CC_C_DEFAULT?pcombo->lstcback:CC_C_GREEN; list->cborder=pcombo->lstcborder!=CC_C_DEFAULT?pcombo->lstcborder:CC_C_LWHITE; list->ctext=pcombo->lstctext!=CC_C_DEFAULT?pcombo->lstctext:CC_C_LWHITE; list->cselected=pcombo->lstcselected!=CC_C_DEFAULT?pcombo->lstcselected: CC_C_WHITE; list->cseltext=pcombo->lstcseltext!=CC_C_DEFAULT?pcombo->lstcseltext: CC_C_LBLACK; list->cactive=pcombo->lstcactive!=CC_C_DEFAULT?pcombo->lstcactive:CC_C_YELLOW; list->cactivetext=pcombo->lstcactivetext!=CC_C_DEFAULT?pcombo->lstcactivetext: CC_C_LBLACK; list->lines=pcombo->lstlines; list->vscroll->cback=list->hscroll->cback=pcombo->lstscrcback!=CC_C_DEFAULT? pcombo->lstscrcback:CC_C_CYAN; _cc_setcomboactiveitem(combo,-1,combo->activeline); _cc_setuplistparams(combo->list); scroll1->cmark=scroll2->cmark=pcombo->lstscrcmark!=CC_C_DEFAULT? pcombo->lstscrcmark:CC_C_YELLOW; scroll1->cbar=scroll2->cbar=pcombo->lstscrcbar!=CC_C_DEFAULT? pcombo->lstscrcbar:CC_C_WHITE; scroll1->carrowup=scroll2->carrowup=pcombo->lstscrcarrowup!=CC_C_DEFAULT? pcombo->lstscrcarrowup:CC_C_LBLACK; scroll1->carrowdown=scroll2->carrowdown= pcombo->lstscrcarrowdown!=CC_C_DEFAULT?pcombo->lstscrcarrowdown:CC_C_LGREEN; if(combo->edit!=NULL) { EDIT *edit=&combo->edit->extra->edit; edit->style=pcombo->edistyle; combo->edit->cback=win->cback; edit->cbmask=pcombo->edicbmask!=CC_C_DEFAULT?pcombo->edicbmask:CC_C_CYAN; edit->cfmask=pcombo->edicfmask!=CC_C_DEFAULT?pcombo->edicfmask:CC_C_BLACK; edit->ctext=list->ctext; edit->change=pcombo->change; } } void _cc_setlistparams(Cc_Win *win,Cc_Union_P *params) { LIST *list=&win->extra->list; SCROLL *scroll1=&list->vscroll->extra->scroll; SCROLL *scroll2=&list->hscroll->extra->scroll; Cc_List_P *plist=¶ms->list; win->cback=plist->cback!=CC_C_DEFAULT?plist->cback:CC_C_BLACK; long actline=list->activeline; list->activeline=plist->activeline; list->cborder=plist->cborder!=CC_C_DEFAULT?plist->cborder:CC_C_LWHITE; list->ccells=plist->ccells!=CC_C_DEFAULT?plist->ccells:CC_C_WHITE; list->ctext=plist->ctext!=CC_C_DEFAULT?plist->ctext:CC_C_WHITE; list->cselected=plist->cselected!=CC_C_DEFAULT?plist->cselected:CC_C_WHITE; list->cseltext=plist->cseltext!=CC_C_DEFAULT?plist->cseltext:CC_C_LBLACK; list->cactive=plist->cactive!=CC_C_DEFAULT?plist->cactive:CC_C_YELLOW; list->cactivetext=plist->cactivetext!=CC_C_DEFAULT?plist->cactivetext: CC_C_LBLACK; list->combotyp=plist->combotyp; list->lines=plist->lines; list->change=plist->change; list->dblclk=plist->dblclk; list->vscroll->cback=list->hscroll->cback=plist->scrcback!=CC_C_DEFAULT? plist->scrcback:CC_C_CYAN; scroll1->cmark=scroll2->cmark=plist->scrcmark!=CC_C_DEFAULT?plist->scrcmark: CC_C_YELLOW; scroll1->cbar=scroll2->cbar=plist->scrcbar!=CC_C_DEFAULT?plist->scrcbar: CC_C_WHITE; scroll1->carrowup=scroll2->carrowup=plist->scrcarrowup!=CC_C_DEFAULT? plist->scrcarrowup:CC_C_LBLACK; scroll1->carrowdown=scroll2->carrowdown=plist->scrcarrowup!=CC_C_DEFAULT? plist->scrcarrowup:CC_C_LGREEN; _cc_setuplistparams(win); _cc_setlistactiveitem(list,actline,list->activeline); } void _cc_setstatusparams(Cc_Win *win,Cc_Union_P *params) { STATUS *status=&win->extra->status; Cc_Status_P *pstatus=¶ms->status; win->cback=pstatus->cbclear!=CC_C_DEFAULT?pstatus->cbclear:CC_C_WHITE; status->pos=pstatus->pos; status->maxpos=pstatus->maxpos; status->cbfull=pstatus->cbfull!=CC_C_DEFAULT?pstatus->cbfull:CC_C_RED; status->ctclear=pstatus->ctclear!=CC_C_DEFAULT?pstatus->ctclear:CC_C_BLACK; status->ctfull=pstatus->ctfull!=CC_C_DEFAULT?pstatus->ctfull:CC_C_BLACK; status->vert=pstatus->vert; status->vtext=pstatus->vtext; status->text=pstatus->text; } void _cc_setpaintparams(Cc_Win *win,Cc_Union_P *params) { PAINT *paint=&win->extra->paint; Cc_Paint_P *ppaint=¶ms->paint; win->cback=ppaint->cback!=CC_C_DEFAULT?ppaint->cback:CC_C_BLACK; paint->style=ppaint->style; paint->color=ppaint->color!=CC_C_DEFAULT?ppaint->color:CC_C_WHITE; } void _cc_setmenuparams(Cc_Win *win,Cc_Union_P *params) { MENU *menu=&win->extra->menu; Cc_Menu_P *pmenu=¶ms->menu; win->cback=pmenu->cback!=CC_C_DEFAULT?pmenu->cback:CC_C_WHITE; menu->cborder=pmenu->cborder!=CC_C_DEFAULT?pmenu->cborder:CC_C_BLACK; menu->ctext=pmenu->ctext!=CC_C_DEFAULT?pmenu->ctext:CC_C_BLACK; menu->cutext=pmenu->cutext!=CC_C_DEFAULT?pmenu->cutext:CC_C_BLUE; menu->cactive=pmenu->cactive!=CC_C_DEFAULT?pmenu->cactive:CC_C_BLACK; menu->cactivetext=pmenu->cactivetext!=CC_C_DEFAULT?pmenu->cactivetext: CC_C_WHITE; menu->cactiveutext=pmenu->cactiveutext!=CC_C_DEFAULT?pmenu->cactiveutext: CC_C_CYAN; menu->lines=pmenu->lines; menu->change=pmenu->change; menu->select=pmenu->select; menu->vert=pmenu->vert; } void _cc_setdialogparams(Cc_Win *win,Cc_Union_P *params) { DIALOG *dialog=&win->extra->dialog; BUTTON *button1,*button2,*button3; long color; if(dialog->bclose!=NULL)button1=&dialog->bclose->extra->button; else button1=NULL; if(dialog->bminimize!=NULL)button2=&dialog->bminimize->extra->button; else button2=NULL; if(dialog->bmaximize!=NULL)button3=&dialog->bmaximize->extra->button; else button3=NULL; Cc_Dialog_P *pdialog=¶ms->dialog; win->cback=pdialog->cback!=CC_C_DEFAULT?pdialog->cback:CC_C_BLUE; if(dialog->bclose!=NULL)dialog->bclose->cback=win->cback; if(dialog->bminimize!=NULL)dialog->bminimize->cback=win->cback; if(dialog->bmaximize!=NULL)dialog->bmaximize->cback=win->cback; if(button1!=NULL) { button1->cback[0]=win->cback; button1->cback[1]=win->cback; } if(button2!=NULL) { button2->cback[0]=win->cback; button2->cback[1]=win->cback; } if(button3!=NULL) { button3->cback[0]=win->cback; button3->cback[1]=win->cback; } dialog->caption=pdialog->caption; dialog->style=pdialog->style; dialog->cbactive=pdialog->cbactive!=CC_C_DEFAULT?pdialog->cbactive: CC_C_LWHITE; dialog->cbinactive=pdialog->cbinactive!=CC_C_DEFAULT?pdialog->cbinactive: CC_C_WHITE; color=pdialog->cbuttext[0]!=CC_C_DEFAULT?pdialog->cbuttext[0]:CC_C_LYELLOW; if(button1!=NULL)button1->ctext[0]=color; if(button2!=NULL)button2->ctext[0]=color; if(button3!=NULL)button3->ctext[0]=color; color=pdialog->cbuttext[1]!=CC_C_DEFAULT?pdialog->cbuttext[1]:CC_C_LCYAN; if(button1!=NULL)button1->ctext[1]=color; if(button2!=NULL)button2->ctext[1]=color; if(button3!=NULL)button3->ctext[1]=color; color=pdialog->cbuttext[2]!=CC_C_DEFAULT?pdialog->cbuttext[2]:CC_C_LYELLOW; if(button1!=NULL)button1->ctext[2]=color; if(button2!=NULL)button2->ctext[2]=color; if(button3!=NULL)button3->ctext[2]=color; dialog->modal=pdialog->modal; dialog->menu=pdialog->menu; dialog->resize=pdialog->resize; dialog->sizeok=pdialog->sizeok; dialog->close=pdialog->close; } void _cc_gettextparams(Cc_Win *win,Cc_Union_P *params) { TEXT *text=&win->extra->text; Cc_Text_P *ptext=¶ms->text; ptext->cback=win->cback; ptext->text=text->text; ptext->ctext=text->ctext; } void _cc_geteditparams(Cc_Win *win,Cc_Union_P *params) { EDIT *edit=&win->extra->edit; Cc_Edit_P *pedit=¶ms->edit; pedit->cback=win->cback; pedit->style=edit->style; pedit->cbmask=edit->cbmask; pedit->cfmask=edit->cfmask; pedit->ctext=edit->ctext; pedit->change=edit->change; } void _cc_getbuttonparams(Cc_Win *win,Cc_Union_P *params) { BUTTON *button=&win->extra->button; Cc_Button_P *pbutton=¶ms->button; pbutton->cback[0]=win->cback; pbutton->text=button->text; pbutton->style=button->style; pbutton->checked=button->checked; pbutton->cback[1]=button->cback[0]; pbutton->cback[2]=button->cback[1]; pbutton->ctext[0]=button->ctext[0]; pbutton->ctext[1]=button->ctext[1]; pbutton->ctext[2]=button->ctext[2]; pbutton->cutext[0]=button->cutext[0]; pbutton->cutext[1]=button->cutext[1]; pbutton->cutext[2]=button->cutext[2]; pbutton->cfocus[0]=button->cfocus[0]; pbutton->cfocus[1]=button->cfocus[1]; pbutton->cfocus[2]=button->cfocus[2]; pbutton->hasfocus=button->hasfocus; pbutton->push=button->push; } void _cc_getscrollparams(Cc_Win *win,Cc_Union_P *params) { SCROLL *scroll=&win->extra->scroll; Cc_Scroll_P *pscroll=¶ms->scroll; pscroll->cback=win->cback; pscroll->pos=scroll->pos; pscroll->minpos=scroll->minpos; pscroll->maxpos=scroll->maxpos; pscroll->pagecnt=scroll->pagecnt; pscroll->cnt=scroll->cnt; pscroll->cmark=scroll->cmark; pscroll->cbar=scroll->cbar; pscroll->carrowup=scroll->carrowup; pscroll->carrowdown=scroll->carrowdown; pscroll->vert=scroll->vert; pscroll->change=scroll->change; } void _cc_getcomboparams(Cc_Win *win,Cc_Union_P *params) { COMBO *combo=&win->extra->combo; LIST *list=&combo->list->extra->list; SCROLL *scroll1,*scroll2; scroll1=&list->hscroll->extra->scroll; scroll2=&list->vscroll->extra->scroll; Cc_Combo_P *pcombo=¶ms->combo; pcombo->cback=win->cback; pcombo->activeline=combo->activeline; pcombo->cbutback[0]=combo->cbutback[0]; pcombo->cbutback[1]=combo->cbutback[1]; pcombo->cbutfront[0]=combo->cbutfront[0]; pcombo->cbutfront[1]=combo->cbutfront[1]; pcombo->change=combo->change; pcombo->maxvisitems=combo->maxvisitems; pcombo->lstvy=combo->lstvy; pcombo->lstcback=combo->list->cback; pcombo->lstcborder=list->cborder; pcombo->lstctext=list->ctext; pcombo->lstcselected=list->cselected; pcombo->lstcseltext=list->cseltext; pcombo->lstcactive=list->cactive; pcombo->lstcactivetext=list->cactivetext; pcombo->lstlines=list->lines; pcombo->lstscrcback=list->hscroll->cback; pcombo->lstscrcmark=scroll1->cmark; pcombo->lstscrcbar=scroll1->cbar; pcombo->lstscrcarrowup=scroll1->carrowup; pcombo->lstscrcarrowdown=scroll1->carrowdown; if(combo->edit!=NULL) { EDIT *edit=&combo->edit->extra->edit; pcombo->edistyle=edit->style; pcombo->edicbmask=edit->cbmask; pcombo->edicfmask=edit->cfmask; } } void _cc_getlistparams(Cc_Win *win,Cc_Union_P *params) { LIST *list=&win->extra->list; SCROLL *scroll1=&list->vscroll->extra->scroll; SCROLL *scroll2=&list->hscroll->extra->scroll; Cc_List_P *plist=¶ms->list; plist->cback=win->cback; plist->activeline=list->activeline; plist->cborder=list->cborder; plist->ccells=list->ccells; plist->ctext=list->ctext; plist->cselected=list->cselected; plist->cseltext=list->cseltext; plist->cactive=list->cactive; plist->cactivetext=list->cactivetext; plist->combotyp=list->combotyp; plist->lines=list->lines; plist->change=list->change; plist->dblclk=list->dblclk; plist->scrcback=list->hscroll->cback; plist->scrcmark=scroll1->cmark; plist->scrcbar=scroll1->cbar; plist->scrcarrowup=scroll1->carrowup; plist->scrcarrowup=scroll1->carrowdown; } void _cc_getstatusparams(Cc_Win *win,Cc_Union_P *params) { STATUS *status=&win->extra->status; Cc_Status_P *pstatus=¶ms->status; pstatus->cbclear=win->cback; pstatus->pos=status->pos; pstatus->maxpos=status->maxpos; pstatus->cbfull=status->cbfull; pstatus->ctclear=status->ctclear; pstatus->ctfull=status->ctfull; pstatus->vert=status->vert; pstatus->vtext=status->vtext; pstatus->text=status->text; } void _cc_getpaintparams(Cc_Win *win,Cc_Union_P *params) { PAINT *paint=&win->extra->paint; Cc_Paint_P *ppaint=¶ms->paint; ppaint->cback=win->cback; ppaint->style=paint->style; ppaint->color=paint->color; } void _cc_getmenuparams(Cc_Win *win,Cc_Union_P *params) { MENU *menu=&win->extra->menu; Cc_Menu_P *pmenu=¶ms->menu; pmenu->cback=win->cback; pmenu->cborder=menu->cborder; pmenu->ctext=menu->ctext; pmenu->cutext=menu->cutext; pmenu->cactive=menu->cactive; pmenu->cactivetext=menu->cactivetext; pmenu->cactiveutext=menu->cactiveutext; pmenu->lines=menu->lines; pmenu->change=menu->change; pmenu->select=menu->select; pmenu->vert=menu->vert; } void _cc_getdialogparams(Cc_Win *win,Cc_Union_P *params) { DIALOG *dialog=&win->extra->dialog; BUTTON *button; if(dialog->bclose!=NULL)button=&dialog->bclose->extra->button; else button=NULL; Cc_Dialog_P *pdialog=¶ms->dialog; pdialog->cback=win->cback; pdialog->caption=dialog->caption; pdialog->style=dialog->style; pdialog->cbactive=dialog->cbactive; pdialog->cbinactive=dialog->cbinactive; if(button!=NULL) { pdialog->cbuttext[0]=button->ctext[0]; pdialog->cbuttext[1]=button->ctext[1]; pdialog->cbuttext[2]=button->ctext[2]; } pdialog->modal=dialog->modal; pdialog->menu=dialog->menu; pdialog->resize=dialog->resize; pdialog->sizeok=dialog->sizeok; pdialog->close=dialog->close; } void _cc_checkwincombo(Cc_Win *win) { COMBO *combo=&win->extra->combo; if(combo->maxvisitems) { LIST *list=&combo->list->extra->list; long len=list->numlines; if(len<=combo->maxvisitems) combo->list->style|=CC_ST_AUTOYSIZE; else { combo->list->style&=~CC_ST_AUTOYSIZE; combo->lstvy=combo->maxvisitems+2; } } if(combo->edit!=NULL) { combo->edit->vx=win->vx-1; if(_cc_focuswin==win)_cc_focuswin=combo->edit; } } void _cc_checkwinlist(Cc_Win *win) { LIST *list; GList *lines; SCROLL *hscroll,*vscroll; list=&win->extra->list; long poz,maxlen,i,len; maxlen=list->maxitemlen; lines=list->lines; if(list->hfade!=NULL) { list->hfade->x=2; list->hfade->y=win->vy; list->hfade->vx=win->vx; list->hfade->vy=1; } if(list->vfade!=NULL) { list->vfade->x=win->vx>1?win->vx:win->vx+1; list->vfade->y=1; list->vfade->vx=win->vx>1?2:1; list->vfade->vy=win->vy-1; } vscroll=&list->vscroll->extra->scroll; hscroll=&list->hscroll->extra->scroll; len=list->numlines; if(len>win->vy-2) { list->vscroll->x=win->vx-list->vscroll->vx; list->vscroll->vy=win->vy-2; vscroll->minpos=0; vscroll->maxpos=len-win->vy+2; vscroll->pagecnt=win->vy-1-2; list->vscroll->active=true; } else { vscroll->pos=0; vscroll->minpos=0; vscroll->maxpos=0; vscroll->pagecnt=win->vy-1-2; list->vscroll->active=false; } if(maxlen>win->vx-2) { list->hscroll->y=win->vy-list->hscroll->vy; list->hscroll->vx=win->vx-2; hscroll->minpos=0; hscroll->maxpos=maxlen-win->vx+2; hscroll->pagecnt=win->vx-1-2; list->hscroll->active=true; } else { hscroll->pos=0; hscroll->minpos=0; hscroll->maxpos=0; hscroll->pagecnt=win->vx-1-2; list->hscroll->active=false; } if(!_cc_isfocused(win))if(win->extra->list.combotyp==CC_LI_COMBO) { if(win==_cc_capturewin)_cc_capturewin=NULL; win->stat=0; win->active=false; } } void _cc_checkwinmenu(Cc_Win *win) { MENU *menu; Cc_Win *submenu; GList *lines; long i; menu=&win->extra->menu; if(menu->lines!=NULL) { lines=g_list_nth(menu->lines,menu->activeline); if(lines!=NULL) if(strcmp(((Cc_Menu_I*)lines->data)->text,"-")==0)menu->activeline=-1; } if(menu->vert) { long maxlen,maxshcut,i; maxlen=0; maxshcut=0; lines=menu->lines; while(lines!=NULL) { i=_cc_strlenmenu(((Cc_Menu_I*)lines->data)->text); if(i>maxlen)maxlen=i; i=strlen(_cc_getshortcuttext(((Cc_Menu_I*)lines->data)->shortcut)); if(i>maxshcut)maxshcut=i; lines=g_list_next(lines); } win->vx=maxlen+maxshcut+7; win->vy=g_list_length(menu->lines)+2; } lines=menu->lines; i=0; while(lines!=NULL) { submenu=((Cc_Menu_I*)lines->data)->submenu; if(submenu!=NULL) { if(menu->vert) { submenu->x=win->vx-1; submenu->y=i; i++; } else { submenu->x=i; submenu->y=win->vy; i+=_cc_strlenmenu(((Cc_Menu_I*)lines->data)->text)+2; } } lines=g_list_next(lines); } if(menu->hfade!=NULL) { menu->hfade->x=2; menu->hfade->y=win->vy; menu->hfade->vx=win->vx; menu->hfade->vy=1; } if(menu->vfade!=NULL) { menu->vfade->x=win->vx>1?win->vx:win->vx+1; menu->vfade->y=1; menu->vfade->vx=win->vx>1?2:1; menu->vfade->vy=win->vy-1; } if(!_cc_isfocused(win)) { if(menu->vert)win->active=false; if(_cc_capturewin==win)_cc_capturewin=NULL; win->stat=0; } } void _cc_checkwindialog(Cc_Win *win) { DIALOG *dialog=&win->extra->dialog; long n,olen; n=3; dialog->bclose->x=win->vx-n; dialog->bclose->y=0; n++; if((dialog->style&CC_ST_DI_HASMAXIMIZE)==CC_ST_DI_HASMAXIMIZE) { dialog->bmaximize->x=win->vx-n; dialog->bmaximize->y=0; n++; } if((dialog->style&CC_ST_DI_HASMINIMIZE)==CC_ST_DI_HASMINIMIZE) { dialog->bminimize->x=win->vx-n; dialog->bminimize->y=0; } if(dialog->hfade!=NULL) { dialog->hfade->x=2; dialog->hfade->y=win->vy; dialog->hfade->vx=win->vx; dialog->hfade->vy=1; } if(dialog->vfade!=NULL) { dialog->vfade->x=win->vx>1?win->vx:win->vx+1; dialog->vfade->y=1; dialog->vfade->vx=win->vx>1?2:1; dialog->vfade->vy=win->vy-1; } if((dialog->bclose!=NULL)&&(!dialog->bclose->active)) dialog->bclose->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->menu!=NULL) { Cc_Win *menu=dialog->menu; if(menu->parent!=win)_cc_setparent(menu,win); menu->x=1; menu->y=1; menu->vx=win->vx-2; menu->vy=1; } if(win->extra->dialog.modal) { if(win->parent!=NULL)win->parent->hasmodal=_cc_isvisible(win); else _cc_hasmodal=_cc_isvisible(win); } } void _cc_drawwintext(Cc_Win *win) { TEXT *text=(TEXT*)win->extra; _cc_windowinitdraw(win,text->ctext,win->cback,true); _cc_mprintw(win,0,0,"%s",text->text); } void _cc_drawwinedit(Cc_Win *win) { EDIT *edit=(EDIT*)win->extra; long len,i,a,b; len=strlen(edit->text); if(edit->curpos>len)edit->curpos=len; if(edit->curpos<0)edit->curpos=0; if(edit->curpos-edit->scroll<0) edit->scroll=edit->curpos; if(edit->curpos-edit->scroll>win->vx-1) edit->scroll=edit->curpos-win->vx+1; if(edit->scroll<0)edit->scroll=0; if(edit->scroll>len)edit->scroll=len; _cc_windowinitdraw(win,edit->ctext,win->cback,_cc_hascolors?true:2); if(!_cc_hascolors)for(i=0;ivx;i++)_cc_addchar(win,0,i,'_'); if(edit->style!=CC_ED_PASSWORD) { _cc_mprintw(win,0,-edit->scroll,"%s",edit->text); } else { for(i=0;iscroll;i++)_cc_addchar(win,0,i,'*'); } if((edit->maskpos!=-1)&&_cc_isfocused(win)) { a=edit->curpos; b=edit->maskpos; if(blen-1)b=len-1; _cc_windowinitdraw(win,edit->cfmask,edit->cbmask,false); if(!_cc_hascolors)win->attr|=A_REVERSE; for(i=a;i<=b;i++) _cc_addchar(win,0,i-edit->scroll,_cc_minch(win,0,i-edit->scroll)); } } void _cc_drawwinbutton(Cc_Win *win,long wx) { char s[MAXLEN_NUMBER_STRING]; BUTTON *button=(BUTTON*)win->extra; long vx=win->vx,vy=win->vy,x,y,i; char cf,cfu,cb,stav; attr_t attrplus=0; x=0; y=0; if((_cc_capturewin!=win)&&(button->status==TS_HIGH))button->status=TS_UP; stav=button->status; if((stav==TS_PUSH)||(stav==TS_EXPUSH)) cc_set_timer(win,BUTTONCLICK,0,_cc_buttontimer); if(stav==TS_PUSH){button->status=TS_UP;stav=TS_DOWN;} if(stav==TS_EXPUSH){button->status=TS_HIGH;stav=TS_DOWN;} if((button->style==CC_BT_NORMAL)&&button->checked)stav=TS_DOWN; cf=button->ctext[stav]; cfu=button->cutext[stav]; if(stav==0)cb=win->cback;else cb=button->cback[stav-1]; char mode=(!_cc_hascolors&& ((button->style==CC_BT_NORMAL)|| ((button->style!=CC_BT_NORMAL)&&(win==_cc_focuswin)))&& ((button->style!=CC_BT_NORMAL)|| ((button->hasfocus&&(stav!=TS_DOWN))|| (!button->hasfocus&&(stav==TS_DOWN)))))?3:true; if(mode==3)attrplus|=A_REVERSE; _cc_windowinitdraw(win,cf,cb,mode); if(button->style==CC_BT_NORMAL) { if(win->vy>=3) { _cc_mbox(win,0,0,win->vx,win->vy); x++;vx-=2;wx-=2; y++;vy-=2; } } y+=(vy-1)/2; if(win==_cc_focuswin) { _cc_windowinitdraw(win,button->cfocus[stav],cb,false); if(mode==3) { attrplus|=A_REVERSE; win->attr|=attrplus; } if(button->style==CC_BT_NORMAL) { _cc_addchar(win,y,x,'<'); _cc_addchar(win,y,win->vx-1-x,'>'); x++;vx-=2;wx-=2; } } if(button->style==CC_BT_CHECK1) { _cc_addchar(win,y,x,'['); _cc_addchar(win,y,x+2,']'); } else if(button->style==CC_BT_CHECK2) { _cc_addchar(win,y,x,'('); _cc_addchar(win,y,x+2,')'); } if(win==_cc_focuswin) { _cc_windowinitdraw(win,cf,cb,false); if(mode==3) { attrplus|=A_REVERSE; win->attr|=attrplus; } } if((button->style==CC_BT_CHECK1)&&(button->checked)) _cc_addchar(win,y,x+1,'x'); if((button->style==CC_BT_CHECK2)&&(button->checked)) _cc_addchar(win,y,x+1,'*'); if(button->style==CC_BT_NORMAL)x+=(vx-_cc_strlenmenu(button->text))/2; else { x+=4; wx-=4; } if(button->text!=NULL) for(i=0;itext);i++)if(button->text[i]=='&'){wx++;i++;}; sprintf(s,"%%.%lds\0",wx); if((!_cc_hascolors)&&((stav!=TS_UP)))attrplus|=A_UNDERLINE; _cc_mprintwmenu(win,y,x,cb,cf,cfu,attrplus,s,button->text); } void _cc_drawwinscroll(Cc_Win *win) { SCROLL *scroll=(SCROLL*)win->extra; char cf,cb; long len,i; if(scroll->posminpos)scroll->pos=scroll->minpos; if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos; if(scroll->smoothpos<0)scroll->smoothpos=0; if(scroll->vert) { 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); else len=scroll->smoothpos; if(len>0) { if(scroll->spageup==SC_UP) { cf=scroll->carrowup; cb=win->cback; } else { cf=scroll->carrowdown; cb=scroll->cmark; } _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(scroll->spageup==SC_DOWN))win->attr|=A_REVERSE; for(i=0;ivy-3-len>0) { if(scroll->spagedown==SC_UP) { cf=scroll->carrowup; cb=win->cback; } else { cf=scroll->carrowdown; cb=scroll->cmark; } _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(scroll->spagedown==SC_DOWN))win->attr|=A_REVERSE; for(i=0;ivy-3-len;i++) _cc_addchar(win,i+2+len,0,_cc_hascolors?' ':'|'); } _cc_windowinitdraw(win,scroll->carrowup,scroll->cbar,false); _cc_addchar(win,len+1,0,_cc_hascolors?' ':'o'); if(scroll->sup==SC_UP) { cf=scroll->carrowup; cb=scroll->cbar; } else { cf=scroll->carrowdown; cb=scroll->cmark; } _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(scroll->sup==SC_DOWN))win->attr|=A_REVERSE; if(!_cc_uglycharset)win->attr|=A_ALTCHARSET; _cc_addchar(win,0,0,_cc_mapsymbol[UARROW]); if(scroll->sdown==SC_UP) { cf=scroll->carrowup; cb=scroll->cbar; } else { cf=scroll->carrowdown; cb=scroll->cmark; } _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(scroll->sdown==SC_DOWN))win->attr|=A_REVERSE; if(!_cc_uglycharset)win->attr|=A_ALTCHARSET; _cc_addchar(win,win->vy-1,0,_cc_mapsymbol[DARROW]); } else { 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); else len=scroll->smoothpos; if(len>0) { if(scroll->spageup==SC_UP) { cf=scroll->carrowup; cb=win->cback; } else { cf=scroll->carrowdown; cb=scroll->cmark; } _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(scroll->spageup==SC_DOWN))win->attr|=A_REVERSE; for(i=0;ivx-3-len>0) { if(scroll->spagedown==SC_UP) { cf=scroll->carrowup; cb=win->cback; } else { cf=scroll->carrowdown; cb=scroll->cmark; } _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(scroll->spagedown==SC_DOWN))win->attr|=A_REVERSE; for(i=0;ivx-3-len;i++) _cc_addchar(win,0,i+2+len,_cc_hascolors?' ':'-'); } _cc_windowinitdraw(win,scroll->carrowup,scroll->cbar,false); _cc_addchar(win,0,len+1,_cc_hascolors?' ':'o'); if(scroll->sup==SC_UP) { cf=scroll->carrowup; cb=scroll->cbar; } else { cf=scroll->carrowdown; cb=scroll->cmark; } _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(scroll->sup==SC_DOWN))win->attr|=A_REVERSE; if(!_cc_uglycharset)win->attr|=A_ALTCHARSET; _cc_addchar(win,0,0,_cc_mapsymbol[LARROW]); if(scroll->sdown==SC_UP) { cf=scroll->carrowup; cb=scroll->cbar; } else { cf=scroll->carrowdown; cb=scroll->cmark; } _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(scroll->sdown==SC_DOWN))win->attr|=A_REVERSE; if(!_cc_uglycharset)win->attr|=A_ALTCHARSET; _cc_addchar(win,0,win->vx-1,_cc_mapsymbol[RARROW]); } if(scroll->sup==SC_PUSH)scroll->sup=SC_UP; if(scroll->spageup==SC_PUSH)scroll->spageup=SC_UP; if(scroll->sdown==SC_PUSH)scroll->sdown=SC_UP; if(scroll->spagedown==SC_PUSH)scroll->spagedown=SC_UP; } void _cc_drawwinlist(Cc_Win *win,long wx) { char s[MAXLEN_NUMBER_STRING]; LIST *list; GList *lines; GSList *sl,*sc; SCROLL *hscroll,*vscroll; list=&win->extra->list; long poz,actline,scrpos,hpos,i,numlines,x,bx; char cf,cb; bool isfocus; if((list->combotyp==CC_LI_COMBO)&&(_cc_capturewin==NULL)&&_cc_isactive(win)) _cc_capturewin=win; vscroll=&list->vscroll->extra->scroll; hscroll=&list->hscroll->extra->scroll; if(vscroll->posminpos)vscroll->pos=vscroll->minpos; if(vscroll->pos>vscroll->maxpos)vscroll->pos=vscroll->maxpos; isfocus=win==_cc_focuswin; actline=list->activeline; if(list->activeline<0)list->activeline=0; numlines=list->numlines; if(list->activeline>numlines-1)list->activeline=numlines-1; _cc_setlistactiveitem(list,actline,list->activeline); actline=list->activeline; scrpos=vscroll->pos; _cc_setlistscrollupitem(list,list->oldscrollpos,scrpos); list->oldscrollpos=scrpos; hpos=hscroll->pos; poz=actline-vscroll->pos; _cc_windowinitdraw(win,list->cborder,win->cback,true); _cc_mbox(win,0,0,win->vx,win->vy); if((poz>=0)&&(poz<=win->vy-1-2)) { if((!_cc_hascolors)&&(list->combotyp!=CC_LI_COMBO)) _cc_addsymbol(win,0,poz+1,_cc_mapsymbol[LTEE]); cf=isfocus?list->cactivetext:list->cseltext; cb=isfocus?list->cactive:list->cselected; _cc_windowinitdraw(win,cf,cb,false); if(!_cc_hascolors)if(isfocus)win->attr|=A_REVERSE; for(i=0;ivx-2;i++)_cc_addchar(win,poz+1,i+1,' '); } if(wxvx)wx++; if(list->combotyp==CC_LI_TABLE) { _cc_windowinitdraw(win,list->ccells,win->cback,false); sc=list->lencells; poz=-hpos; cf=isfocus?list->cactivetext:list->cseltext; cb=isfocus?list->cactive:list->cselected; while(sc!=NULL) { if((poz>0)&&(pozvy-2); i=actline-scrpos+1; if((i>0)&&(ivy-1)) { _cc_windowinitdraw(win,cf,cb,false); if(!_cc_hascolors)if(isfocus)win->attr|=A_REVERSE; _cc_mvline(win,poz,i,1); _cc_windowinitdraw(win,list->ccells,win->cback,false); } } poz+=(long)sc->data+1; if(poz>=wx-1)break; sc=g_slist_next(sc); } } lines=list->scrollupitem; for(i=scrpos;ivy-2) { cf=(i!=actline)?list->ctext:(isfocus?list->cactivetext:list->cseltext); cb=(i!=actline)?win->cback:(isfocus?list->cactive:list->cselected); _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(i==actline))if(isfocus)win->attr|=A_REVERSE; if(list->combotyp!=CC_LI_TABLE) { if(strlen(lines->data)>hpos) { sprintf(s,"%%.%lds\0",wx-2); _cc_mprintw(win,i-scrpos+1,1,s,(char*)lines->data+hpos); } } else { sl=(GSList*)lines->data; sc=list->lencells; poz=1; while((sl!=NULL)&&(sc!=NULL)&&(poz-hposdata)>bx) { sprintf(s,"%%.%lds\0",wx-1-x); _cc_mprintw(win,i-scrpos+1,x,s,(char*)sl->data+bx); } poz+=(long)sc->data+1; sc=g_slist_next(sc); sl=g_slist_next(sl); } } } else break; lines=g_list_next(lines); } actline=list->activeline; if(list->exvscroll==EX_UP) if(vscroll->pos>vscroll->minpos) { vscroll->pos--;list->activeline--; _cc_redrawclientwin(list->vscroll); } if(list->exvscroll==EX_DOWN) if(vscroll->posmaxpos) { vscroll->pos++;list->activeline++; _cc_redrawclientwin(list->vscroll); } _cc_setlistactiveitem(list,actline,list->activeline); if(list->exhscroll==EX_UP)if(hscroll->pos>hscroll->minpos) { hscroll->pos--; _cc_redrawclientwin(list->hscroll); } if(list->exhscroll==EX_DOWN)if(hscroll->posmaxpos) { hscroll->pos++; _cc_redrawclientwin(list->hscroll); } } void _cc_drawwincombo(Cc_Win *win) { char s[MAXLEN_NUMBER_STRING]; long i,numlines; char *data=NULL; char cf,cb; COMBO *combo; LIST *list; combo=&win->extra->combo; list=&combo->list->extra->list; bool whatcol; long pushed; numlines=list->numlines; long actline=combo->activeline; if(combo->activeline<0)combo->activeline=0; if(combo->activeline>numlines-1)combo->activeline=numlines-1; _cc_setcomboactiveitem(combo,actline,combo->activeline); if(combo->activeitem!=NULL)data=combo->activeitem->data; if(data!=NULL)pushed=strlen(data)-win->vx+1; if(pushed<0)pushed=0; if(combo->scroll<0)combo->scroll=0; if(combo->scroll>pushed)combo->scroll=pushed; pushed=combo->pushed; if(combo->pushed==SC_PUSH)combo->pushed=SC_UP; if(pushed>1)pushed=1; if(combo->edit==NULL) { whatcol=!((win==_cc_focuswin)&&(!combo->list->active)); cb=whatcol?win->cback:list->cactive; cf=whatcol?list->ctext:list->cactivetext; _cc_windowinitdraw(win,cf,cb,true); sprintf(s,"%%.%lds\0",win->vx-1+combo->scroll); if(!_cc_hascolors) { if(_cc_focuswin==win)win->attr|=A_REVERSE; win->attr|=A_UNDERLINE; for(i=0;ivx-1;i++)_cc_addchar(win,0,i,'_'); } else for(i=0;ivx-1;i++)_cc_addchar(win,0,i,' '); if(data!=NULL)_cc_mprintw(win,0,-combo->scroll,s,data); } cb=combo->cbutback[pushed]; cf=combo->cbutfront[pushed]; _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&(pushed==0))win->attr|=A_REVERSE; if(!_cc_uglycharset)win->attr|=A_ALTCHARSET; _cc_addchar(win,0,win->vx-1,_cc_mapsymbol[DARROW]); } void _cc_drawwinstatus(Cc_Win *win) { char s[MAXLEN_NUMBER_STRING]; long x,y,i; char c; STATUS *status=(STATUS*)win->extra; long l; if(status->pos<0)status->pos=0; if(status->pos>status->maxpos)status->pos=status->maxpos; if(status->vert) { y=win->vy-status->pos*win->vy/status->maxpos; sprintf(s,"%ld%s\0",status->pos,status->text); l=strlen(s); x=(win->vy-l)/2; _cc_windowinitdraw(win,status->ctfull,status->cbfull,false); if(!_cc_hascolors)win->attr|=A_UNDERLINE|A_REVERSE; for(i=win->vy;i>=y;i--) { if(((i=x+l))||(!status->vtext)) {if(_cc_hascolors)c=' ';else c='_';}else c=s[i-x]; _cc_addchar(win,i,0,c); } _cc_windowinitdraw(win,status->ctclear,win->cback,false); if(!_cc_hascolors)win->attr|=A_UNDERLINE; for(;i>=0;i--) { if(((i=x+l))||(!status->vtext)) {if(_cc_hascolors)c=' ';else c='_';}else c=s[i-x]; _cc_addchar(win,i,0,c); } } else { x=status->pos*win->vx/status->maxpos; sprintf(s,"%ld%s\0",status->pos,status->text); l=strlen(s); y=(win->vx-l)/2; _cc_windowinitdraw(win,status->ctfull,status->cbfull,false); if(!_cc_hascolors)win->attr|=A_UNDERLINE|A_REVERSE; for(i=0;i=y+l))||(!status->vtext)) {if(_cc_hascolors)c=' ';else c='_';}else c=s[i-y]; _cc_addchar(win,0,i,c); } _cc_windowinitdraw(win,status->ctclear,win->cback,false); if(!_cc_hascolors)win->attr|=A_UNDERLINE; for(;ivx;i++) { if(((i=y+l))||(!status->vtext)) {if(_cc_hascolors)c=' ';else c='_';}else c=s[i-y]; _cc_addchar(win,0,i,c); } } } void _cc_drawwinpaint(Cc_Win *win) { PAINT *paint=(PAINT*)win->extra; if(paint->style==CC_PA_SOLID) { _cc_windowinitdraw(win,paint->color,win->cback,true); } else if(paint->style==CC_PA_PATTERN) { _cc_windowinitdraw(win,paint->color,win->cback,4); } else if(paint->style==CC_PA_BORDER) { _cc_windowinitdraw(win,paint->color,win->cback,true); if((win->vx==1)&&(win->vy>1))_cc_mvline(win,0,0,win->vy); else if((win->vx>1)&&(win->vy==1))_cc_mhline(win,0,0,win->vx); else if((win->vx>1)&&(win->vy>1))_cc_mbox(win,0,0,win->vx,win->vy); } } void _cc_drawwinmenu(Cc_Win *win,long wx) { char s[MAXLEN_NUMBER_STRING]; MENU *menu; GList *lines; menu=&win->extra->menu; long poz,actline,i,j,numlines,len,scoffs; char cfu,cf,cb; bool isfocus; isfocus=_cc_isfocused(win); if(!isfocus) { menu->activeline=-1; if(_cc_capturewin==win)_cc_capturewin=NULL; } if(menu->activeline<-1)menu->activeline=-1; numlines=g_list_length(menu->lines); if(menu->activeline>numlines-1)menu->activeline=numlines-1; actline=menu->activeline; _cc_windowinitdraw(win,menu->cborder,win->cback,_cc_hascolors?true:3); if(menu->vert) { _cc_mbox(win,0,0,win->vx,win->vy); if((actline>=0)&&(actline<=win->vy-1-2)) { cf=isfocus?menu->cactivetext:menu->cactivetext; cb=isfocus?menu->cactive:menu->cactive; _cc_windowinitdraw(win,cf,cb,false); if(!_cc_hascolors)if(isfocus)win->attr|=A_REVERSE; for(i=0;ivx-2;i++)_cc_addchar(win,actline+1,i+1,' '); } if(wxvx)wx++; lines=menu->lines; scoffs=4; while(lines!=NULL) { i=_cc_strlenmenu(((Cc_Menu_I*)lines->data)->text)+4; if(scoffslines; for(i=0;ivy-2) { attr_t attrplus=0; cf=(i!=actline)?menu->ctext:menu->cactivetext; cfu=(i!=actline)?menu->cutext:menu->cactiveutext; cb=(i!=actline)?win->cback:menu->cactive; _cc_windowinitdraw(win,cf,cb,false); if(!_cc_hascolors) if(!((i==actline)&&(isfocus))) { attrplus=A_REVERSE; win->attr|=attrplus; } else { for(j=1;jdata)->checked)_cc_addchar(win,i+1,1,'*'); if(_cc_strlenmenu(((Cc_Menu_I*)lines->data)->text)>0) { sprintf(s,"%%.%lds\0",wx-2-1); _cc_mprintwmenu(win,i+1,1+1,cb,cf,cfu,attrplus,s, ((Cc_Menu_I*)lines->data)->text); } else if(strcmp(((Cc_Menu_I*)lines->data)->text,"-")==0) _cc_mhline(win,1+1,i+1,win->vx-4); _cc_mprintw(win,i+1,scoffs, _cc_getshortcuttext(((Cc_Menu_I*)lines->data)->shortcut), ((Cc_Menu_I*)lines->data)->text); if(((Cc_Menu_I*)lines->data)->submenu!=NULL) { if(!_cc_uglycharset)win->attr|=A_ALTCHARSET; _cc_addchar(win,i+1,win->vx-2,_cc_mapsymbol[RARROW]); } } lines=g_list_next(lines); } } else { lines=menu->lines; poz=1; for(i=0;ivx-1) { attr_t attrplus=0; cf=(i!=actline)?menu->ctext:menu->cactivetext; cfu=(i!=actline)?menu->cutext:menu->cactiveutext; cb=(i!=actline)?win->cback:menu->cactive; _cc_windowinitdraw(win,cf,cb,false); if((!_cc_hascolors)&&!((i==actline)&&isfocus)) { attrplus=A_REVERSE; win->attr|=attrplus; } len=0; if(lines!=NULL) if(lines->data!=NULL) if(((Cc_Menu_I*)lines->data)->text!=NULL) len=_cc_strlenmenu(((Cc_Menu_I*)lines->data)->text); if(len>0) { sprintf(s,"%%.%lds\0",wx); _cc_mprintwmenu(win,0,poz,cb,cf,cfu,attrplus,s, ((Cc_Menu_I*)lines->data)->text); } if(i==actline) { _cc_addchar(win,0,poz-1,' '); _cc_addchar(win,0,poz+len,' '); } } poz+=len+2; lines=g_list_next(lines); } } } void _cc_drawwindialog(Cc_Win *win,long wx) { char s[MAXLEN_NUMBER_STRING]; DIALOG *dialog=&win->extra->dialog; char c; long n,olen; n=8; if((dialog->style&CC_ST_DI_HASMAXIMIZE)==CC_ST_DI_HASMAXIMIZE)n++; if((dialog->style&CC_ST_DI_HASMINIMIZE)==CC_ST_DI_HASMINIMIZE)n++; if(_cc_isfocused(win))c=dialog->cbactive;else c=dialog->cbinactive; _cc_windowinitdraw(win,c,win->cback,true); if(win->vy!=1)_cc_mbox(win,0,0,win->vx,win->vy); else _cc_mhline(win,0,0,win->vx); wx-=3; if(wx>win->vx-n)wx=win->vx-n; sprintf(s,"%%.%lds\0",wx); _cc_addchar(win,0,2,' '); _cc_mprintw(win,0,3,s,dialog->caption); olen=strlen(dialog->caption); _cc_addchar(win,0,3+(olenvx-n+4,'['); _cc_addchar(win,0,win->vx-2,']'); } void _cc_drawwinfade(Cc_Win *win,long x,long y) { long i,j; for(j=y;jvy;j++) for(i=x;ivx;i++) _cc_maddch(&_cc_mainwin,j,i,_cc_fadecolor(_cc_minch(&_cc_mainwin,j,i))); }