4 * This source code is part of
8 * GROningen MAchine for Chemical Simulations
12 * Copyright (c) 1991-1999
13 * BIOSON Research Institute, Dept. of Biophysical Chemistry
14 * University of Groningen, The Netherlands
17 * GROMACS: A message-passing parallel molecular dynamics implementation
18 * H.J.C. Berendsen, D. van der Spoel and R. van Drunen
19 * Comp. Phys. Comm. 91, 43-56 (1995)
21 * Also check out our WWW page:
22 * http://md.chem.rug.nl/~gmx
27 * Great Red Oystrich Makes All Chemists Sane
29 static char *SRCID_filter_c
= "$Id$";
41 t_filter
*init_filter(t_atoms
*atoms
, char *fn
)
47 f
->grps
=init_index(fn
,&f
->grpnames
);
50 snew(f
->grps
->index
,1);
51 analyse(atoms
,f
->grps
,&f
->grpnames
,FALSE
,FALSE
);
53 snew(f
->bShow
,f
->grps
->nr
);
58 static void FilterCB(t_x11
*x11
,int dlg_mess
,int item_id
,
67 dlg
=gmx
->dlgs
[edFilter
];
71 printf("item_id: %d, set: %s\n",item_id
,set
);
76 if (sscanf(set
,"%d",&nset
)==1)
77 f
->bShow
[nset
]=!f
->bShow
[nset
];
81 write_gmx(x11
,gmx
,IDDOFILTER
);
86 t_dlg
*select_filter(t_x11
*x11
,t_gmx
*gmx
)
88 static char *title
="Group";
89 static char *dummy
="\"FALSE\"";
90 static char *ok
="\"Ok\"";
93 char tmpfile
[L_tmpnam
];
94 int i
,j
,k
,len
,tlen
,ht
,ncol
,nrow
,x0
;
97 for(i
=0; (i
<(int)gmx
->filter
->grps
->nr
); i
++)
98 len
=max(len
,(int)strlen(gmx
->filter
->grpnames
[i
]));
101 ncol
=1+(gmx
->filter
->grps
->nr
/ 15);
102 nrow
=gmx
->filter
->grps
->nr
/ncol
;
103 if (nrow
*ncol
< gmx
->filter
->grps
->nr
)
109 ht
=1+(gmx
->filter
->grps
->nr
+1)*2+3;
113 fprintf(stderr
,"file: %s\n",tmpfile
);
115 tmp
=fopen(tmpfile
,"w");
117 fprintf(tmp
,"grid %d %d {\n\n",tlen
,ht
);
119 for(k
=j
=0,x0
=1; (j
<ncol
); j
++,x0
+=len
+1) {
120 fprintf(tmp
,"group \"%s-%d\" %d 1 %d %d {\n",title
,j
+1,x0
,len
,ht
-5);
121 for(i
=0; (i
<nrow
) && (k
<gmx
->filter
->grps
->nr
); i
++,k
++)
122 fprintf(tmp
,"checkbox \"%s\" \"%d\" %s %s %s\n",
123 gmx
->filter
->grpnames
[k
],k
,dummy
,dummy
,dummy
);
124 fprintf(tmp
,"}\n\n");
126 fprintf(tmp
,"simple 1 %d %d 2 {\n",ht
-3,tlen
-2);
127 fprintf(tmp
,"defbutton %s %s %s %s %s\n",ok
,ok
,dummy
,dummy
,dummy
);
128 fprintf(tmp
,"}\n\n}\n");
131 dlg
=ReadDlg(x11
,gmx
->wd
->self
,title
,x11
->fg
,x11
->bg
,tmpfile
,
132 0,0,TRUE
,FALSE
,FilterCB
,gmx
);