static void buttonDrawIt(newtComponent co, int active, int pushed) { struct button * bu = co->data; if (!co->isMapped) return; SLsmg_set_color(NEWT_COLORSET_BUTTON); if (bu->compact) { if (!active) SLsmg_set_color(NEWT_COLORSET_COMPACTBUTTON); else if (SLtt_Use_Ansi_Colors) SLsmg_set_color(NEWT_COLORSET_BUTTON); else SLsmg_set_color(NEWT_COLORSET_ACTBUTTON); newtGotorc(co->top+ pushed, co->left + 1 + pushed); SLsmg_write_char('<'); SLsmg_write_string(bu->text); SLsmg_write_char('>'); } else { if (pushed) { SLsmg_set_color(NEWT_COLORSET_BUTTON); newtDrawBox(co->left + 1, co->top + 1, co->width - 1, 3, 0); SLsmg_set_color(NEWT_COLORSET_WINDOW); newtClearBox(co->left, co->top, co->width, 1); newtClearBox(co->left, co->top, 1, co->height); } else { newtDrawBox(co->left, co->top, co->width - 1, 3, 1); } buttonDrawText(co, active, pushed); } /* put cursor at beginning of text for better accessibility */ newtGotorc(co->top + (bu->compact ? 0 : 1) + pushed, co->left + 1 + pushed + 1); }
static void listboxDraw(newtComponent co) { struct listbox * li = co->data; struct items *item; int i, j; if (!co->isMapped) return ; newtTrashScreen(); if(li->flags & NEWT_FLAG_BORDER) { if(li->isActive) SLsmg_set_color(NEWT_COLORSET_ACTLISTBOX); else SLsmg_set_color(NEWT_COLORSET_LISTBOX); newtDrawBox(co->left, co->top, co->width, co->height, 0); } if(li->sb) li->sb->ops->draw(li->sb); SLsmg_set_color(NEWT_COLORSET_LISTBOX); for(i = 0, item = li->boxItems; item != NULL && i < li->startShowItem; i++, item = item->next); j = i; for (i = 0; item != NULL && i < li->curHeight; i++, item = item->next) { if (!item->text) continue; newtGotorc(co->top + i + li->bdyAdjust, co->left + li->bdxAdjust); if(j + i == li->currItem) { if(item->isSelected) SLsmg_set_color(NEWT_COLORSET_ACTSELLISTBOX); else SLsmg_set_color(NEWT_COLORSET_ACTLISTBOX); } else if(item->isSelected) SLsmg_set_color(NEWT_COLORSET_SELLISTBOX); else SLsmg_set_color(NEWT_COLORSET_LISTBOX); SLsmg_write_nstring(item->text, li->curWidth); } newtGotorc(co->top + (li->currItem - li->startShowItem) + 1, co->left + 1); }