Fixing copyright issues and code contributors
[alexxy/gromacs.git] / src / ngmx / xdlgitem.h
1 /*
2  * This file is part of the GROMACS molecular simulation package.
3  *
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,2013, 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.
11  *
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.
16  *
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.
21  *
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.
26  *
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.
34  *
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.
37  */
38
39 #ifndef _xdlgitem_h
40 #define _xdlgitem_h
41
42 #include <typedefs.h>
43 #include <Xstuff.h>
44 #include <xutil.h>
45 #include <x11.h>
46
47 #define XCARET  2
48
49 enum { 
50   ITEMOK, RBPRESSED, BNPRESSED, CBPRESSED, ETCHANGED, HELPPRESSED, ENTERPRESSED
51 };
52
53 typedef int t_id;
54
55 typedef struct {
56   gmx_bool bDefault;    /* This is the default button */
57 } t_button;
58
59 typedef struct {
60   gmx_bool bSelect;     /* Is this rb selected ? */
61 } t_radiobutton;
62
63 typedef struct {
64   gmx_bool bChecked;    /* Is this cb checked ? */
65 } t_checkbox;
66
67 typedef struct {
68   Pixmap pm;            /* The pixmap bits */
69 } t_pixmap;
70
71 typedef struct {
72   int  nlines;
73   char **lines;
74 } t_statictext;
75
76 typedef struct {
77   int  buflen,strbegin; /* Length of the screen buf and begin of string  */
78   int  pos/*,len*/;     /* Current length of the string and pos of caret */
79                         /* Pos is relative to strbegin, and is the pos   */
80                         /* in the window.                                */
81   gmx_bool bChanged;
82   char *buf;
83 } t_edittext;
84
85 typedef struct {
86   int  nitems;
87   t_id *item;
88 } t_groupbox;
89
90 typedef enum {
91   edlgBN, edlgRB, edlgGB, edlgCB, edlgPM, edlgST, edlgET, edlgNR
92 } edlgitem;
93
94 typedef struct t_dlgitem {
95   t_windata     win;
96   t_id          ID,GroupID;
97   gmx_bool          bUseMon;
98   char          *set,*get,*help;
99   edlgitem      type;
100   int           (*WndProc)(t_x11 *x11,struct t_dlgitem *dlgitem,XEvent *event);
101   union {
102     t_button      button;
103     t_radiobutton radiobutton;
104     t_groupbox    groupbox;
105     t_checkbox    checkbox;
106     t_pixmap      pixmap;
107     t_statictext  statictext;
108     t_edittext    edittext;
109   } u;
110 } t_dlgitem;
111
112 /*****************************
113  *
114  * Routines to create dialog items, all items have an id
115  * which you can use to extract info. It is possible to have
116  * multiple items with the same id but it may then not be possible
117  * to extract information.
118  * All routines take the position relative to the parent dlg
119  * and the size and border width.
120  * If the width and height are set to zero initially, they will
121  * be calculated and set by the routine. With the dlgitem manipulation
122  * routines listed below, the application can then move the items around
123  * on the dlg box, and if wished resize them.
124  *
125  ****************************/
126 extern t_dlgitem *CreateButton(t_x11 *x11, const char *szLab,gmx_bool bDef,
127                                t_id id,t_id groupid,
128                                int x0,int y0,int w,int h,int bw);
129
130 extern t_dlgitem *CreateRadioButton(t_x11 *x11,
131                                     const char *szLab,gmx_bool bSet,t_id id,
132                                     t_id groupid,
133                                     int x0,int y0,int w,int h,int bw);
134
135 extern t_dlgitem *CreateGroupBox(t_x11 *x11,const char *szLab,t_id id,
136                                  int nitems, t_id items[],
137                                  int x0,int y0,int w,int h,int bw);
138
139 extern t_dlgitem *CreateCheckBox(t_x11 *x11,const char *szLab,
140                                  gmx_bool bCheckedInitial,
141                                  t_id id,t_id groupid,
142                                  int x0,int y0,int w,int h,int bw);
143
144 extern t_dlgitem *CreatePixmap(t_x11 *x11,Pixmap pm,t_id id,t_id groupid,
145                                int x0,int y0,int w,int h,int bw);
146
147 extern t_dlgitem *CreateStaticText(t_x11 *x11,
148                                    int nlines,char * const * lines,t_id id,
149                                    t_id groupid,
150                                    int x0,int y0,int w,int h,int bw);
151
152 extern t_dlgitem *CreateEditText(t_x11 *x11,const char *title, 
153                                  int screenbuf,char *buf, t_id id,t_id groupid,
154                                  int x0,int y0,int w,int h,int bw);
155
156 extern void SetDlgitemOpts(t_dlgitem *dlgitem,gmx_bool bUseMon,
157                            char *set, char *get, char *help);
158
159 #endif  /* _xdlgitem_h */