static void GroupWExpose(struct groupdlg *grp,GWindow pixmap,GRect *rect) { int depth, y, len; Group *group; GRect r; Color fg; GDrawFillRect(pixmap,rect,GDrawGetDefaultBackground(NULL)); GDrawSetLineWidth(pixmap,0); r.height = r.width = grp->as; y = (rect->y/grp->fh) * grp->fh + grp->as; depth=0; group = GroupFindLPos(grp->root,rect->y/grp->fh+grp->off_top,&depth); GDrawSetFont(pixmap,grp->font); while ( group!=NULL ) { r.y = y-grp->as+1; r.x = 5+8*depth - grp->off_left; fg = group->selected ? 0xff0000 : 0x000000; if ( group->glyphs==NULL ) { GDrawDrawRect(pixmap,&r,fg); GDrawDrawLine(pixmap,r.x+2,r.y+grp->as/2,r.x+grp->as-2,r.y+grp->as/2, fg); if ( !group->open ) GDrawDrawLine(pixmap,r.x+grp->as/2,r.y+2,r.x+grp->as/2,r.y+grp->as-2, fg); } len = GDrawDrawText8(pixmap,r.x+r.width+5,y,group->name,-1,fg); if ( group->glyphs ) GDrawDrawText8(pixmap,r.x+r.width+5+len+5,y,group->glyphs,-1,fg); group = GroupNext(group,&depth); y += grp->fh; if ( y-grp->fh>rect->y+rect->height ) break; } }
static void QGDrawWindow(GWindow pixmap, QGData *qg, GEvent *e) { int l, y, depth; char buffer[200]; GRect old, r; struct navigate where; struct qgnode *parent; GDrawPushClip(pixmap,&e->u.expose.rect,&old); r.width = r.height = qg->as; y = qg->as; memset(&where,0,sizeof(where)); QG_FindLine(&qg->list,qg->loff_top,&where); for ( l=0; l<qg->vlcnt && where.parent!=NULL; ++l ) { for ( parent=where.parent, depth= -2; parent!=NULL; parent=parent->parent, ++depth ); if ( where.offset==-1 ) { r.x = 2+depth*qg->fh; r.y = y-qg->as+1; GDrawDrawRect(pixmap,&r,0x000000); GDrawDrawLine(pixmap,r.x+2,r.y+qg->as/2,r.x+qg->as-2,r.y+qg->as/2, 0x000000); if ( !where.parent->open ) GDrawDrawLine(pixmap,r.x+qg->as/2,r.y+2,r.x+qg->as/2,r.y+qg->as-2, 0x000000); GDrawDrawText8(pixmap,r.x+qg->fh,y,where.parent->name,-1, 0x000000); } else { QuestionableGrid *q = &where.parent->first[where.offset]; sprintf( buffer, _("\"%.40s\" size=%d point=%d (%d,%d) distance=%g"), q->sc->name, q->size, q->nearestpt, q->x, q->y, q->distance ); GDrawDrawText8(pixmap,2+(depth+1)*qg->fh,y,buffer,-1, 0x000000); } y += qg->fh; QG_NextLine(&where); } GDrawPopClip(pixmap,&old); }
static void BdfP_Expose(struct bdf_dlg *bd, GWindow pixmap) { struct bdf_dlg_font *cur = bd->cur; BDFFont *bdf = cur->bdf; int i; int page = bd->vheight/(bd->fh+1); GRect clip, old, r; char buffer[40]; extern GBox _ggadget_Default_Box; GDrawSetFont(pixmap,bd->font); clip.x = 4; clip.width = bd->value_x-4-2; clip.height = bd->fh; for ( i=0; i<page && i+cur->top_prop<bdf->prop_cnt; ++i ) { int sel = i+cur->top_prop==cur->sel_prop; clip.y = i*(bd->fh+1); if ( sel ) { r.x = 0; r.width = bd->width; r.y = clip.y; r.height = clip.height; GDrawFillRect(pixmap,&r,ACTIVE_BORDER); } GDrawPushClip(pixmap,&clip,&old); GDrawDrawText8(pixmap,4,i*(bd->fh+1)+bd->as,bdf->props[i+cur->top_prop].name,-1,MAIN_FOREGROUND); GDrawPopClip(pixmap,&old); switch ( bdf->props[i+cur->top_prop].type&~prt_property ) { case prt_string: case prt_atom: GDrawDrawText8(pixmap,bd->value_x+2,i*(bd->fh+1)+bd->as,bdf->props[i+cur->top_prop].u.str,-1,MAIN_FOREGROUND); break; case prt_int: sprintf( buffer, "%d", bdf->props[i+cur->top_prop].u.val ); GDrawDrawText8(pixmap,bd->value_x+2,i*(bd->fh+1)+bd->as,buffer,-1,MAIN_FOREGROUND); break; case prt_uint: sprintf( buffer, "%u", (unsigned) bdf->props[i+cur->top_prop].u.val ); GDrawDrawText8(pixmap,bd->value_x+2,i*(bd->fh+1)+bd->as,buffer,-1,MAIN_FOREGROUND); break; } GDrawDrawLine(pixmap,0,i*(bd->fh+1)+bd->fh,bd->vwidth,i*(bd->fh+1)+bd->fh,0x808080); } if ( i<page ) { /* GT: I am told that the use of "|" to provide contextual information in a */ /* GT: gettext string is non-standard. However it is documented in section */ /* GT: 10.2.6 of http://www.gnu.org/software/gettext/manual/html_mono/gettext.html */ /* GT: */ /* GT: Anyway here the word "Property" is used to provide context for "New..." and */ /* GT: the translator should only translate "New...". This is necessary because in */ /* GT: French (or any language where adjectives agree in gender/number with their */ /* GT: nouns) there are several different forms of "New" and the one chose depends */ /* GT: on the noun in question. */ /* GT: A french translation might be either msgstr "Nouveau..." or msgstr "Nouvelle..." */ /* GT: */ /* GT: I expect there are more cases where one english word needs to be translated */ /* GT: by several different words in different languages (in Japanese a different */ /* GT: word is used for the latin script and the latin language) and that you, as */ /* GT: a translator may need to ask me to disambiguate more strings. Please do so: */ /* GT: <*****@*****.**> */ GDrawDrawText8(pixmap,4,i*(bd->fh+1)+bd->as,S_("Property|New..."),-1,0xff0000); GDrawDrawLine(pixmap,0,i*(bd->fh+1)+bd->fh,bd->vwidth,i*(bd->fh+1)+bd->fh, _ggadget_Default_Box.border_darker); } GDrawDrawLine(pixmap,bd->value_x,0,bd->value_x,bd->vheight, _ggadget_Default_Box.border_darker); }
static void SVDraw(SearchView *sv, GWindow pixmap, GEvent *event) { GRect r; GDrawSetLineWidth(pixmap,0); if ( sv->cv_srch.inactive ) GDrawSetFont(pixmap,sv->plain); else GDrawSetFont(pixmap,sv->bold); GDrawDrawText8(pixmap,10,sv->mbh+5+sv->as, _("Search Pattern:"),-1,0); if ( sv->cv_rpl.inactive ) GDrawSetFont(pixmap,sv->plain); else GDrawSetFont(pixmap,sv->bold); GDrawDrawText8(pixmap,sv->rpl_x,sv->mbh+5+sv->as, _("Replace Pattern:"),-1,0); r.x = 10-1; r.y=sv->cv_y-1; r.width = sv->cv_width+1; r.height = sv->cv_height+1; GDrawDrawRect(pixmap,&r,0); r.x = sv->rpl_x-1; GDrawDrawRect(pixmap,&r,0); }