The following commit has been merged in the master branch: commit c49aec380adb025f218f89366b775ef6166e7318 Author: Guillem Jover <guil...@debian.org> Date: Tue Mar 20 10:07:53 2012 +0100
dselect: Use a new attribute array instead of separate attribute variables diff --git a/dselect/basecmds.cc b/dselect/basecmds.cc index 3804475..ebcdef7 100644 --- a/dselect/basecmds.cc +++ b/dselect/basecmds.cc @@ -162,7 +162,7 @@ void baselist::displayhelp(const struct helpmenuentry *helpmenu, int key) { int maxx, maxy, i, nextkey; getmaxyx(stdscr,maxy,maxx); - wbkgdset(stdscr, ' ' | helpscreen_attr); + wbkgdset(stdscr, ' ' | part_attr[helpscreen]); clearok(stdscr,TRUE); for (;;) { werase(stdscr); @@ -172,14 +172,14 @@ void baselist::displayhelp(const struct helpmenuentry *helpmenu, int key) { if (hme->key) { int x, y DPKG_ATTR_UNUSED; - attrset(helpscreen_attr); + attrset(part_attr[helpscreen]); mvaddstr(1,0, gettext(hme->msg->text)); - attrset(title_attr); + attrset(part_attr[title]); mvaddstr(0,0, _("Help: ")); addstr(gettext(hme->msg->title)); getyx(stdscr,y,x); while (++x<maxx) addch(' '); - attrset(thisstate_attr); + attrset(part_attr[thisstate]); mvaddstr(maxy-1,0, _("Press ? for help menu, . for next topic, <space> to exit help.")); getyx(stdscr,y,x); diff --git a/dselect/baselist.cc b/dselect/baselist.cc index 0729dbe..ee49696 100644 --- a/dselect/baselist.cc +++ b/dselect/baselist.cc @@ -124,34 +124,22 @@ void baselist::startdisplay() { for (i = 1; i < numscreenparts; i++) { if (init_pair(i, color[i].fore, color[i].back) != OK) ohshite(_("failed to allocate colour pair")); + part_attr[i] = COLOR_PAIR(i) | color[i].attr; } - /* TODO: should use an array of attr's, indexed by attr name. Oh well. */ - list_attr= COLOR_PAIR(list) | color[list].attr; - listsel_attr= COLOR_PAIR(listsel) | color[listsel].attr; - title_attr= COLOR_PAIR(title) | color[title].attr; - thisstate_attr= COLOR_PAIR(thisstate) | color[thisstate].attr; - selstate_attr= COLOR_PAIR(selstate) | color[selstate].attr; - selstatesel_attr= COLOR_PAIR(selstatesel) | color[selstatesel].attr; - colheads_attr= COLOR_PAIR(colheads) | color[colheads].attr; - query_attr= COLOR_PAIR(query) | color[query].attr; - info_attr= COLOR_PAIR(info) | color[info].attr; - info_headattr= COLOR_PAIR(info_head) | color[info_head].attr; - whatinfo_attr= COLOR_PAIR(whatinfo) | color[whatinfo].attr; - helpscreen_attr= COLOR_PAIR(helpscreen) | color[helpscreen].attr; } else { /* User defined attributes for B&W mode are not currently supported. */ - title_attr= A_REVERSE; - thisstate_attr= A_STANDOUT; - list_attr= 0; - listsel_attr= A_STANDOUT; - selstate_attr= A_BOLD; - selstatesel_attr= A_STANDOUT; - colheads_attr= A_BOLD; - query_attr= title_attr; - info_attr= list_attr; - info_headattr= A_BOLD; - whatinfo_attr= thisstate_attr; - helpscreen_attr= A_NORMAL; + part_attr[title] = A_REVERSE; + part_attr[thisstate] = A_STANDOUT; + part_attr[list] = 0; + part_attr[listsel] = A_STANDOUT; + part_attr[selstate] = A_BOLD; + part_attr[selstatesel] = A_STANDOUT; + part_attr[colheads]= A_BOLD; + part_attr[query] = part_attr[title]; + part_attr[info] = part_attr[list]; + part_attr[info_head] = A_BOLD; + part_attr[whatinfo] = part_attr[thisstate]; + part_attr[helpscreen] = A_NORMAL; } // set up windows and pads, based on screen size @@ -165,31 +153,31 @@ void baselist::startdisplay() { titlewin= newwin(1,xmax, 0,0); if (!titlewin) ohshite(_("failed to create title window")); - wattrset(titlewin,title_attr); + wattrset(titlewin, part_attr[title]); whatinfowin= newwin(1,xmax, whatinfo_row,0); if (!whatinfowin) ohshite(_("failed to create whatinfo window")); - wattrset(whatinfowin,whatinfo_attr); + wattrset(whatinfowin, part_attr[whatinfo]); listpad = newpad(ymax, total_width); if (!listpad) ohshite(_("failed to create baselist pad")); colheadspad= newpad(1, total_width); if (!colheadspad) ohshite(_("failed to create heading pad")); - wattrset(colheadspad,colheads_attr); + wattrset(colheadspad, part_attr[colheads]); thisstatepad= newpad(1, total_width); if (!thisstatepad) ohshite(_("failed to create thisstate pad")); - wattrset(thisstatepad,thisstate_attr); + wattrset(thisstatepad, part_attr[thisstate]); infopad= newpad(MAX_DISPLAY_INFO, total_width); if (!infopad) ohshite(_("failed to create info pad")); - wattrset(infopad,info_attr); - wbkgdset(infopad, ' ' | info_attr); + wattrset(infopad, part_attr[info]); + wbkgdset(infopad, ' ' | part_attr[info]); querywin= newwin(1,xmax,ymax-1,0); if (!querywin) ohshite(_("failed to create query window")); - wbkgdset(querywin, ' ' | query_attr); + wbkgdset(querywin, ' ' | part_attr[query]); if (cursorline >= topofscreen + list_height) topofscreen= cursorline; if (topofscreen > nitems - list_height) topofscreen= nitems - list_height; @@ -225,7 +213,8 @@ void baselist::enddisplay() { void baselist::redrawall() { redrawtitle(); redrawcolheads(); - wattrset(listpad,list_attr); mywerase(listpad); + wattrset(listpad, part_attr[list]); + mywerase(listpad); ldrawnstart= ldrawnend= -1; // start is first drawn; end is first undrawn; -1=none refreshlist(); redrawthisstate(); diff --git a/dselect/dselect.h b/dselect/dselect.h index c25e1e5..bb34146 100644 --- a/dselect/dselect.h +++ b/dselect/dselect.h @@ -45,6 +45,23 @@ struct helpmenuentry { struct keybindings; +enum screenparts { + background, + list, + listsel, + title, + thisstate, + selstate, + selstatesel, + colheads, + query, + info, + info_head, + whatinfo, + helpscreen, + numscreenparts, +}; + class baselist { protected: // Screen dimensions &c. @@ -52,11 +69,8 @@ protected: int title_height, colheads_height, list_height; int thisstate_height, info_height, whatinfo_height; int colheads_row, thisstate_row, info_row, whatinfo_row, list_row; - int list_attr, listsel_attr, title_attr, colheads_attr, info_attr; - int info_headattr, whatinfo_attr; - int thisstate_attr, query_attr; - int selstate_attr, selstatesel_attr; - int helpscreen_attr; + + int part_attr[numscreenparts]; int gap_width; int total_width; @@ -151,23 +165,6 @@ void cursesoff(); extern int expertmode; -enum screenparts { - background, - list, - listsel, - title, - thisstate, - selstate, - selstatesel, - colheads, - query, - info, - info_head, - whatinfo, - helpscreen, - numscreenparts, -}; - struct colordata { int fore; int back; diff --git a/dselect/methlist.cc b/dselect/methlist.cc index e6c1054..5b92836 100644 --- a/dselect/methlist.cc +++ b/dselect/methlist.cc @@ -88,10 +88,10 @@ void methodlist::redraw1itemsel(int index, int selected) { int i; const char *p; - wattrset(listpad, selected ? listsel_attr : list_attr); + wattrset(listpad, part_attr[selected ? listsel : list]); mvwaddch(listpad,index,0, table[index] == coption ? '*' : ' '); - wattrset(listpad, selected ? listsel_attr : list_attr); + wattrset(listpad, part_attr[selected ? listsel : list]); mvwprintw(listpad,index,name_column-1, " %-*.*s ", name_width, name_width, table[index]->name); @@ -109,7 +109,7 @@ void methodlist::redraw1itemsel(int index, int selected) { void methodlist::redrawcolheads() { if (colheads_height) { - wattrset(colheadspad,colheads_attr); + wattrset(colheadspad, part_attr[colheads]); mywerase(colheadspad); mvwaddstr(colheadspad,0,0, " "); mvwaddnstr(colheadspad,0,name_column, _("Abbrev."), name_width); @@ -182,11 +182,11 @@ quitaction methodlist::display() { void methodlist::itd_description() { whatinfovb(_("Explanation")); - wattrset(infopad,info_headattr); + wattrset(infopad, part_attr[info_head]); waddstr(infopad, table[cursorline]->name); waddstr(infopad," - "); waddstr(infopad, table[cursorline]->summary); - wattrset(infopad,info_attr); + wattrset(infopad, part_attr[info]); const char *m= table[cursorline]->description; if (!m || !*m) m= _("No explanation available."); diff --git a/dselect/pkginfo.cc b/dselect/pkginfo.cc index 2d3840b..1ab79f5 100644 --- a/dselect/pkginfo.cc +++ b/dselect/pkginfo.cc @@ -112,11 +112,11 @@ void packagelist::itd_description() { m = _("No description available."); const char *p= strchr(m,'\n'); int l= p ? (int)(p-m) : strlen(m); - wattrset(infopad,info_headattr); + wattrset(infopad, part_attr[info_head]); waddstr(infopad, table[cursorline]->pkg->set->name); waddstr(infopad," - "); waddnstr(infopad,m,l); - wattrset(infopad,info_attr); + wattrset(infopad, part_attr[info]); if (p) { waddstr(infopad,"\n\n"); wordwrapinfo(1,++p); diff --git a/dselect/pkgtop.cc b/dselect/pkgtop.cc index 9007638..6a74004 100644 --- a/dselect/pkgtop.cc +++ b/dselect/pkgtop.cc @@ -142,7 +142,7 @@ void packagelist::redraw1itemsel(int index, int selected) { const struct pkgbin *info = &pkg->available; int screenline = index - topofscreen; - wattrset(listpad, selected ? listsel_attr : list_attr); + wattrset(listpad, part_attr[selected ? listsel : list]); if (pkg->set->name) { if (verbose) { @@ -157,11 +157,11 @@ void packagelist::redraw1itemsel(int index, int selected) { /* FIXME: keep this? */ /*table[index]->original == table[index]->selected ? "(same)" : */gettext(wantstrings[table[index]->original])); - wattrset(listpad, selected ? selstatesel_attr : selstate_attr); + wattrset(listpad, part_attr[selected ? selstatesel : selstate]); wprintw(listpad, "%-*.*s", status_want_width, status_want_width, gettext(wantstrings[table[index]->selected])); - wattrset(listpad, selected ? listsel_attr : list_attr); + wattrset(listpad, part_attr[selected ? listsel : list]); waddch(listpad, ' '); mvwprintw(listpad, screenline, priority_column - 1, " %-*.*s", @@ -176,9 +176,9 @@ void packagelist::redraw1itemsel(int index, int selected) { /*table[index]->original == table[index]->selected ? ' ' : */wantchars[table[index]->original]); - wattrset(listpad, selected ? selstatesel_attr : selstate_attr); + wattrset(listpad, part_attr[selected ? selstatesel : selstate]); waddch(listpad, wantchars[table[index]->selected]); - wattrset(listpad, selected ? listsel_attr : list_attr); + wattrset(listpad, part_attr[selected ? listsel : list]); wmove(listpad, screenline, priority_column - 1); waddch(listpad, ' '); @@ -208,11 +208,11 @@ void packagelist::redraw1itemsel(int index, int selected) { if (versionavailable_width) { if (informativeversion(&pkg->available.version) && versioncompare(&pkg->available.version,&pkg->installed.version) > 0) - wattrset(listpad, selected ? selstatesel_attr : selstate_attr); + wattrset(listpad, part_attr[selected ? selstatesel : selstate]); mvwprintw(listpad, screenline, versionavailable_column, "%-*.*s", versionavailable_width, versionavailable_width, versiondescribe(&pkg->available.version, vdew_nonambig)); - wattrset(listpad, selected ? listsel_attr : list_attr); + wattrset(listpad, part_attr[selected ? listsel : list]); waddch(listpad,' '); } @@ -236,10 +236,10 @@ void packagelist::redraw1itemsel(int index, int selected) { while (j-- >0) { waddch(listpad,ACS_HLINE); i--; } waddch(listpad,' '); - wattrset(listpad, selected ? selstatesel_attr : selstate_attr); + wattrset(listpad, part_attr[selected ? selstatesel : selstate]); p= buf; while (i>0 && *p) { waddnstr(listpad, p,1); p++; i--; } - wattrset(listpad, selected ? listsel_attr : list_attr); + wattrset(listpad, part_attr[selected ? listsel : list]); waddch(listpad,' '); j= (indent<<1) + 1; @@ -253,7 +253,7 @@ void packagelist::redraw1itemsel(int index, int selected) { void packagelist::redrawcolheads() { if (colheads_height) { - wattrset(colheadspad,colheads_attr); + wattrset(colheadspad, part_attr[colheads]); mywerase(colheadspad); if (verbose) { wmove(colheadspad,0,0); -- dpkg's main repository -- To UNSUBSCRIBE, email to debian-dpkg-cvs-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org