2 * This file is part of the GROMACS molecular simulation package.
4 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
5 * Copyright (c) 2001-2004, The GROMACS development team,
6 * check out http://www.gromacs.org for more information.
7 * Copyright (c) 2012, by the GROMACS development team, led by
8 * David van der Spoel, Berk Hess, Erik Lindahl, and including many
9 * others, as listed in the AUTHORS file in the top-level source
10 * directory and at http://www.gromacs.org.
12 * GROMACS is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Lesser General Public License
14 * as published by the Free Software Foundation; either version 2.1
15 * of the License, or (at your option) any later version.
17 * GROMACS is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Lesser General Public License for more details.
22 * You should have received a copy of the GNU Lesser General Public
23 * License along with GROMACS; if not, see
24 * http://www.gnu.org/licenses, or write to the Free Software Foundation,
25 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
27 * If you want to redistribute modifications to GROMACS, please
28 * consider that scientific software is very special. Version
29 * control is crucial - bugs must be traceable. We will be happy to
30 * consider code for inclusion in the official distribution, but
31 * derived work must not be called official GROMACS. Details are found
32 * in the README & COPYING files - if they are missing, get the
33 * official version at http://www.gromacs.org.
35 * To help us fund GROMACS development, we humbly ask that you cite
36 * the research papers on the package. Check out http://www.gromacs.org.
61 static void ApplCallback(t_x11 *x11,int dlg_mess,int item_id,
73 fprintf(stderr,"item_id: %d (%s)\n",item_id,set);
74 if (gmx_strcasecmp(set,"OK") == 0) {
77 "xterm -geometry +100+100 -n %s"
78 " -title \"GROMACS: %s\" -e nice %s ",
79 data->name[data->nAppl],
80 data->name[data->nAppl],
81 data->name[data->nAppl]);
82 for(i=0; (i<dlg->nitem); i++) {
86 strcat(doit,item->set);
90 if (item->u.checkbox.bChecked)
91 strcat(doit,item->set);
95 if (strlen(item->u.edittext.buf) > 0) {
96 strcat(doit,item->set);
98 strcat(doit,item->u.edittext.buf);
103 fprintf(stderr,"Type: %d\n",item->type);
107 fprintf(stderr,"Going to exec: '%s'\n",doit);
110 printf("Warning-- No calls to system(3) supported on this platform.");
111 printf("Warning-- Skipping execution of 'system(\"%s\")'.", buf);
118 else if (gmx_strcasecmp(set,"Cancel") == 0) {
124 static void Callback(t_x11 *x11,int dlg_mess,int item_id,
127 t_data *data=(t_data *)dta;
129 if (item_id == data->nopt) {
130 fprintf(stderr,"Doei...\n");
134 fprintf(stderr,"%d: %s\n",item_id,data->description[item_id]);
135 if (data->nAppl != -1)
138 data->appl=ReadDlg(x11,0,data->name[item_id],
139 BLACK,LIGHTGREY,data->dlgfile[item_id],
140 50,50,FALSE,FALSE,ApplCallback,data);
145 static void read_opts(t_data *data)
148 char fn[STRLEN],buf[STRLEN];
151 sprintf(fn,"xstat.dat");
155 snew(data->name,data->nopt);
156 snew(data->description,data->nopt);
157 snew(data->dlgfile,data->nopt);
159 for(i=0; (i<data->nopt); i++) {
160 ReadQuoteString(fn,in,buf);
161 data->name[i] = strdup(buf);
162 ReadQuoteString(fn,in,buf);
163 data->description[i] = strdup(buf);
164 ReadQuoteString(fn,in,buf);
165 data->dlgfile[i] = strdup(buf);
170 static void add_opts(t_x11 *x11,t_data *data)
176 for(i=0; (i<data->nopt); i++) {
177 but=CreateButton(x11,data->description[i],FALSE,
180 AddDlgItem(data->dlg,but);
181 y0+=but->win.height+OFFS_Y;
183 but=CreateButton(x11,"Quit",TRUE,(t_id)data->nopt,(t_id)0,
185 AddDlgItem(data->dlg,but);
186 y0+=but->win.height+OFFS_Y;
189 for(i=0; (i<=data->nopt); i++)
190 w=max(w,QueryDlgItemW(data->dlg,i));
192 for(i=0; (i<=data->nopt); i++)
193 SetDlgItemSize(data->dlg,i,w,0);
194 SetDlgSize(data->dlg,w+2*OFFS_X,y0,TRUE);
198 main(int argc,char *argv[])
203 /* Initiate X and data */
204 if ((x11=GetX11(&argc,argv))==NULL) {
205 fprintf(stderr,"Can't open DISPLAY\n");
209 data.dlg=CreateDlg(x11,0,argv[0],0,0,0,0,0,BLACK,LIGHTGREY,Callback,&data);