void init_dlgs(t_x11 *x11, t_gmx *gmx) { static t_dlginit di[] = { { edExport, "export.dlg", ExportCB }, { edBonds, "bonds.dlg", BondsCB } }; static t_mbinit mi[emNR] = { { emQuit, quit_mb, QuitCB }, { emHelp, help_mb, MBCallback }, { emAbout, about_mb, MBCallback }, { emNotImplemented, ni_mb, MBCallback } }; int i; snew(gmx->dlgs, edNR); for (i = 0; (i < asize(di)); i++) { gmx->dlgs[i] = ReadDlg(x11, gmx->wd->self, di[i].dlgfile, x11->fg, x11->bg, di[i].dlgfile, 0, 0, TRUE, FALSE, di[i].cb, gmx); } gmx->dlgs[edFilter] = select_filter(x11, gmx); snew(gmx->mboxes, emNR); for (i = 0; (i < emNR); i++) { gmx->mboxes[i] = mi[i].mmb(x11, gmx); } gmx->which_mb = -1; }
void init_dlgs(t_x11 *x11, t_gmx *gmx) { static t_dlginit di[] = { { "export.dlg", ExportCB }, { "bonds.dlg", BondsCB } }; static t_mmb *mi[emNR] = { quit_mb, help_mb, about_mb, ni_mb }; unsigned int i; snew(gmx->dlgs, edNR); for (i = 0; (i < asize(di)); i++) { gmx->dlgs[i] = ReadDlg(x11, gmx->wd->self, di[i].dlgfile, di[i].dlgfile, 0, 0, true, false, di[i].cb, gmx); } gmx->dlgs[edFilter] = select_filter(x11, gmx); snew(gmx->mboxes, emNR); for (i = 0; (i < emNR); i++) { gmx->mboxes[i] = mi[i](x11, gmx); } gmx->which_mb = -1; }
int main(int argc, char *argv[]) { t_x11 *x11; t_dlg *dlg; if ((x11=GetX11(&argc,argv))==NULL) { fprintf(stderr,"No X!\n"); exit(1); } if (argc > 1) { dlg=ReadDlg(x11,0,x11->title,x11->fg,x11->bg,argv[1],100,100,TRUE, TRUE,NULL,NULL); ShowDlg(dlg); x11->MainLoop(x11); } else fprintf(stderr,"Usage: %s [ X options ] infile\n",argv[0]); x11->CleanUp(x11); return 0; }
t_dlg *select_filter(t_x11 *x11, t_gmx *gmx) { static const char *title = "Group"; static const char *dummy = "\"FALSE\""; static const char *ok = "\"Ok\""; FILE *tmp; t_dlg *dlg; char tmpfile[STRLEN]; int i, j, k, len, tlen, ht, ncol, nrow, x0; len = strlen(title); for (i = 0; (i < (int)gmx->filter->grps->nr); i++) { len = std::max(len, (int)strlen(gmx->filter->grpnames[i])); } len += 2; ncol = 1+(gmx->filter->grps->nr / 15); nrow = gmx->filter->grps->nr/ncol; if (nrow*ncol < gmx->filter->grps->nr) { nrow++; } if (ncol > 1) { ht = 1+(nrow+1)*2+3; } else { ht = 1+(gmx->filter->grps->nr+1)*2+3; } strcpy(tmpfile, "filterXXXXXX"); gmx_tmpnam(tmpfile); #ifdef DEBUG fprintf(stderr, "file: %s\n", tmpfile); #endif if ((tmp = fopen(tmpfile, "w")) == NULL) { sprintf(tmpfile, "%ctmp%cfilterXXXXXX", DIR_SEPARATOR, DIR_SEPARATOR); gmx_tmpnam(tmpfile); if ((tmp = fopen(tmpfile, "w")) == NULL) { gmx_fatal(FARGS, "Can not open tmp file %s", tmpfile); } } tlen = 1+ncol*(1+len); fprintf(tmp, "grid %d %d {\n\n", tlen, ht); for (k = j = 0, x0 = 1; (j < ncol); j++, x0 += len+1) { fprintf(tmp, "group \"%s-%d\" %d 1 %d %d {\n", title, j+1, x0, len, ht-5); for (i = 0; (i < nrow) && (k < gmx->filter->grps->nr); i++, k++) { if (!gmx->filter->bDisable[k]) { fprintf(tmp, "checkbox \"%s\" \"%d\" %s %s %s\n", gmx->filter->grpnames[k], k, dummy, dummy, dummy); } else { fprintf(tmp, "statictext { \" %s\" } \"%d\" %s %s %s\n", gmx->filter->grpnames[k], k, dummy, dummy, dummy); } } fprintf(tmp, "}\n\n"); } fprintf(tmp, "simple 1 %d %d 2 {\n", ht-3, tlen-2); fprintf(tmp, "defbutton %s %s %s %s %s\n", ok, ok, dummy, dummy, dummy); fprintf(tmp, "}\n\n}\n"); fclose(tmp); dlg = ReadDlg(x11, gmx->wd->self, title, tmpfile, 0, 0, true, false, FilterCB, gmx); remove(tmpfile); return dlg; }