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
);