3 * This source code is part of
7 * GROningen MAchine for Chemical Simulations
10 * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
11 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
12 * Copyright (c) 2001-2004, The GROMACS development team,
13 * check out http://www.gromacs.org for more information.
15 * This program is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU General Public License
17 * as published by the Free Software Foundation; either version 2
18 * of the License, or (at your option) any later version.
20 * If you want to redistribute modifications, please consider that
21 * scientific software is very special. Version control is crucial -
22 * bugs must be traceable. We will be happy to consider code for
23 * inclusion in the official distribution, but derived work must not
24 * be called official GROMACS. Details are found in the README & COPYING
25 * files - if they are missing, get the official version at www.gromacs.org.
27 * To help us fund GROMACS development, we humbly ask that you cite
28 * the papers on the package - you can find them in the top README file.
30 * For more info, check our website at http://www.gromacs.org
33 * Gyas ROwers Mature At Cryogenic Speed
41 #define DLG_SHOW (1<<0)
42 #define DLG_HIDE (1<<1)
43 #define DLG_SHOWANDHIDE (DLG_SHOW | DLG_HIDE)
44 #define DLG_SYSTEMMODAL (1<<2)
45 #define DLG_APPLMODAL (1<<3)
46 #define DLG_HIDEONBUTTON (1<<4)
47 #define DLG_FREEONBUTTON (1<<5)
49 enum { DLG_SET
, DLG_EXIT
};
51 typedef void DlgCallback(t_x11
*x11
,int dlg_mess
,int item_id
,
52 char *set
,void *data
);
53 /* User function that can be called by the dialog box. All setting of
54 * check-boxes and radio-buttons etc., is done by the dialog manager,
55 * the user can let himself be informed about mouse activity also.
59 t_x11
*x11
; /* All about X */
60 t_windata win
; /* The position and size of the window */
61 char *title
; /* Window name */
62 Window wDad
; /* The parent window */
63 unsigned int xmax
,ymax
; /* Dimensions of parent window */
64 unsigned long flags
; /* Flags for display */
65 unsigned long fg
,bg
; /* The colours */
66 bool bPop
; /* Should we pop the mouse back */
67 bool bGrab
; /* Have we grabbed the mouse ? */
68 int nitem
; /* The number of items */
69 t_dlgitem
**dlgitem
; /* The array of item pointers */
70 DlgCallback
*cb
; /* User call back function */
71 void *data
; /* User data */
74 /*****************************
76 * Routine to create the DLG structure, returns NULL on failure
77 * cb and data may be NULL.
79 ****************************/
80 t_dlg
*CreateDlg(t_x11
*x11
,Window Parent
,const char *title
,
81 int x0
,int y0
,int w
,int h
,int bw
,unsigned long fg
,unsigned long bg
,
82 DlgCallback
*cb
,void *data
);
84 /*****************************
86 * Routine to add an item to the dialog box
87 * The pointer to the item is copied to the dlg struct,
88 * the item itself may not be freed until the dlg is done with
90 ****************************/
91 void AddDlgItem(t_dlg
*dlg
,t_dlgitem
*item
);
93 void AddDlgItems(t_dlg
*dlg
,int nitem
,t_dlgitem
*item
[]);
95 /*****************************
97 * Routines to manipulate items on a dialog box
98 * They return TRUE on succes, FALSE otherwise
99 * FALSE will mean most of the time, that item id was not found
101 ****************************/
102 bool QueryDlgItemSize(t_dlg
*dlg
,t_id id
,int *w
,int *h
);
104 bool QueryDlgItemPos(t_dlg
*dlg
,t_id id
,int *x0
,int *y0
);
106 int QueryDlgItemX(t_dlg
*dlg
, t_id id
);
108 int QueryDlgItemY(t_dlg
*dlg
, t_id id
);
110 int QueryDlgItemW(t_dlg
*dlg
, t_id id
);
112 int QueryDlgItemH(t_dlg
*dlg
, t_id id
);
114 bool SetDlgItemSize(t_dlg
*dlg
,t_id id
,int w
,int h
);
116 bool SetDlgItemPos(t_dlg
*dlg
,t_id id
,int x0
,int y0
);
118 void SetDlgSize(t_dlg
*dlg
,int w
,int h
, bool bAutoPosition
);
120 /*****************************
122 * Routines to extract information from the dlg proc
123 * after dlg is exec'ed
125 ****************************/
126 bool IsCBChecked(t_dlg
*dlg
,t_id id
);
128 t_id
RBSelected(t_dlg
*dlg
,int gid
);
130 int EditTextLen(t_dlg
*dlg
,t_id id
);
132 char *EditText(t_dlg
*dlg
,t_id id
);
134 /*****************************
136 * Routines to do internal things
138 ****************************/
139 t_dlgitem
*FindWin(t_dlg
*dlg
, Window win
);
141 t_dlgitem
*FindItem(t_dlg
*dlg
, t_id id
);
143 void HelpDlg(t_dlg
*dlg
);
145 void HelpNow(t_dlg
*dlg
, t_dlgitem
*dlgitem
);
147 void NoHelp(t_dlg
*dlg
);
149 /*****************************
151 * Exececute the dialog box procedure
152 * Returns when a button is pushed.
153 * return value is the ID of the button
155 ****************************/
156 void ShowDlg(t_dlg
*dlg
);
158 void HideDlg(t_dlg
*dlg
);
160 void FreeDlgItem(t_dlg
*dlg
, t_id id
);
162 void FreeDlg(t_dlg
*dlg
);