1 /*
2 * This file is part of XForms.
3 *
4 * XForms is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License as
6 * published by the Free Software Foundation; either version 2.1, or
7 * (at your option) any later version.
8 *
9 * XForms is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with XForms; see the file COPYING. If not, write to
16 * the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
17 * MA 02111-1307, USA.
18 */
19
20
21 /*
22 * Demo showing the use of groups
23 *
24 * T.C. Zhao and M. Overmars
25 */
26
27 #ifdef HAVE_CONFIG_H
28 #include "config.h"
29 #endif
30
31 #include "include/forms.h"
32 #include "porsche.xpm"
33 #include "nomail.xbm"
34 #include "bm1.xbm"
35
36 extern void show_group( FL_OBJECT *,
37 long );
38
39 /**** Forms and Objects ****/
40
41 #define NGROUP 4
42
43 typedef struct {
44 FL_FORM * objsform;
45 void * vdata;
46 char * cdata;
47 long ldata;
48 FL_OBJECT * bitbutton;
49 FL_OBJECT * pixbutton;
50 FL_OBJECT * bit;
51 FL_OBJECT * pix;
52 FL_OBJECT * chart;
53 FL_OBJECT * quit;
54 FL_OBJECT * menu;
55 FL_OBJECT * choice;
56 FL_OBJECT * browser;
57 FL_OBJECT * xyplot;
58 FL_OBJECT * button[ 5 ];
59 FL_OBJECT * group[ 5 ];
60 } FD_objsform;
61
62
63 extern FD_objsform *create_form_objsform( void );
64
65 FD_objsform *fd_objsform;
66
67 /* callbacks for form objsform */
68
69 /***************************************
70 ***************************************/
71
72 void
show_group(FL_OBJECT * ob FL_UNUSED_ARG,long data)73 show_group( FL_OBJECT * ob FL_UNUSED_ARG,
74 long data )
75 {
76 int i;
77
78 for ( i = 0; i <= NGROUP;i++)
79 ( i == data ?
80 fl_show_object : fl_hide_object )( fd_objsform->group[ i ] );
81 }
82
83
84 /***************************************
85 ***************************************/
86
87 void
init_gui(FD_objsform * fd)88 init_gui( FD_objsform *fd )
89 {
90 float x[ ] = { 0, 1, 2, 3, 4, 5 };
91 float y[ ] = { 5.5, 4, 4.5, 3.8, 4, 5};
92 char *label[ ] = { "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" };
93 size_t i;
94
95 fl_addto_menu( fd->menu, "One\tF1|Two\tF2|Three\tF3|Four\tF4" );
96 fl_addto_choice( fd->choice, "Option1|Option2|Option3" );
97
98 fl_set_pixmapbutton_data( fd->pixbutton, porsche );
99 fl_set_pixmap_data( fd->pix, porsche );
100 fl_set_bitmapbutton_data( fd->bitbutton, bm1_width, bm1_height, bm1_bits );
101 fl_set_bitmap_data( fd->bit, nomail_width, nomail_height, nomail_bits );
102
103 fl_set_browser_fontsize( fd->browser, FL_NORMAL_SIZE );
104 fl_addto_browser( fd->browser, "browser line 1\nbrowser line 2" );
105 fl_addto_browser( fd->browser, "browser line 3\nbrowser line 4" );
106 fl_addto_browser( fd->browser, "browser line 5\nbrowser line 6" );
107 fl_addto_browser( fd->browser, "browser line 7\nbrowser line 8" );
108 fl_addto_browser( fd->browser, "browser line 9\nbrowser line 10" );
109 fl_addto_browser( fd->browser, "browser line 11\nbrowser line 12" );
110 fl_addto_browser( fd->browser, "browser line 13\nbrowser line 14" );
111 fl_addto_browser( fd->browser, "browser line 15\nbrowser line 16" );
112 fl_addto_browser( fd->browser, "browser line 17\nbrowser line 18" );
113
114 for ( i = 0; i < sizeof y / sizeof *y; i++ )
115 fl_add_chart_value( fd->chart, y[ i ], label[ i ], i + 1 );
116
117 fl_set_xyplot_data( fd->xyplot, x, y, 6, "", "","" );
118 fl_add_xyplot_overlay( fd->xyplot, 1, x, y, 6, FL_RED );
119 fl_add_xyplot_text( fd->xyplot, 2.5, 5.2, "Weekly Summary",
120 FL_ALIGN_CENTER, FL_BLUE );
121 fl_add_xyplot_text( fd->xyplot, 3, 3.85, "@-22->", FL_ALIGN_TOP, FL_RED );
122
123 fl_set_xyplot_overlay_type( fd->xyplot, 1, FL_NORMAL_XYPLOT );
124 fl_set_xyplot_alphaxtics( fd->xyplot, "Mon|Tue|Wed|Thu|Fri|Sat", 0 );
125 fl_set_xyplot_ytics( fd->xyplot, -1, -1 );
126 fl_set_xyplot_linewidth( fd->xyplot, 0, 3 );
127 }
128
129
130 /***************************************
131 ***************************************/
132
133 int
main(int argc,char * argv[])134 main( int argc,
135 char * argv[ ] )
136 {
137 fl_initialize( &argc, argv, 0, 0, 0 );
138 fd_objsform = create_form_objsform( );
139 init_gui( fd_objsform );
140
141 /* fill-in form initialization code */
142
143 fl_set_button( fd_objsform->button[ 0 ], 1 );
144 show_group( 0, 0 );
145
146 /* show the first form */
147
148 fl_show_form( fd_objsform->objsform, FL_PLACE_CENTER,
149 FL_FULLBORDER, "objsform" );
150
151 while ( fl_do_forms( ) != fd_objsform->quit )
152 /* empty */ ;
153
154 fl_finish( );
155 return 0;
156 }
157
158
159 /* Form definition file generated with fdesign. */
160
161 #include <stdlib.h>
162
163 /***************************************
164 ***************************************/
165
166 FD_objsform *
create_form_objsform(void)167 create_form_objsform( void )
168 {
169 FL_OBJECT *obj;
170 FD_objsform *fdui = fl_calloc( 1, sizeof *fdui );
171
172 fdui->objsform = fl_bgn_form( FL_NO_BOX, 456, 361 );
173
174 fl_add_box( FL_FLAT_BOX, 0, 0, 456, 361, "" );
175
176 fl_add_box( FL_UP_BOX, 0, 0, 455, 360, "" );
177
178 fl_add_box( FL_UP_BOX, 0, 0, 456, 70, "" );
179
180 fdui->button[ 0 ] = obj = fl_add_button( FL_RADIO_BUTTON, 15, 20, 75, 30,
181 "Static" );
182 fl_set_object_lsize( obj, FL_NORMAL_SIZE);
183 fl_set_object_lstyle( obj, FL_TIMESBOLD_STYLE );
184 fl_set_object_callback( obj, show_group, 0 );
185
186 fdui->button[ 1 ] = obj = fl_add_button( FL_RADIO_BUTTON, 90, 20, 75, 30,
187 "Button" );
188 fl_set_object_lsize( obj, FL_NORMAL_SIZE );
189 fl_set_object_lstyle( obj, FL_TIMESBOLD_STYLE );
190 fl_set_object_callback( obj, show_group, 1 );
191
192 fdui->button[ 2 ] = obj = fl_add_button( FL_RADIO_BUTTON, 165, 20, 70, 30,
193 "Valuator" );
194 fl_set_object_lsize( obj, FL_NORMAL_SIZE );
195 fl_set_object_lstyle( obj, FL_TIMESBOLD_STYLE );
196 fl_set_object_callback( obj, show_group, 2 );
197
198 fdui->button[ 3 ] = obj = fl_add_button( FL_RADIO_BUTTON, 235, 20, 70, 30,
199 "Input" );
200 fl_set_object_lsize( obj, FL_NORMAL_SIZE );
201 fl_set_object_lstyle( obj, FL_TIMESBOLD_STYLE );
202 fl_set_object_callback( obj, show_group, 3 );
203
204 fdui->button[ 4 ] = obj = fl_add_button( FL_RADIO_BUTTON, 305, 20, 70, 30,
205 "Other" );
206 fl_set_object_lsize( obj, FL_NORMAL_SIZE );
207 fl_set_object_lstyle( obj, FL_TIMESBOLD_STYLE );
208 fl_set_object_callback( obj, show_group, 4 );
209
210 fl_add_box( FL_UP_BOX, 0, 70, 456, 291, "" );
211
212 fl_add_box( FL_DOWN_BOX, 9, 90, 435, 260, "" );
213
214 fdui->group[ 2 ] = fl_bgn_group( );
215
216 obj = fl_add_text( FL_NORMAL_TEXT, 260, 140, 80, 30, "Text" );
217 fl_set_object_lalign( obj, fl_to_inside_lalign( FL_ALIGN_LEFT ) );
218
219 fl_add_slider( FL_HOR_BROWSER_SLIDER, 60, 120, 170, 25, "" );
220
221 obj = fl_add_slider( FL_HOR_FILL_SLIDER, 60, 160, 170, 30, "" );
222 fl_set_slider_value( obj, 0.54 );
223
224 obj = fl_add_slider( FL_VERT_SLIDER, 390, 110, 30, 170, "" );
225 fl_set_slider_value( obj, 0.48 );
226
227 fl_add_valslider( FL_VERT_SLIDER, 350, 110, 30, 170, "" );
228
229 obj = fl_add_dial( FL_FILL_DIAL, 50, 220, 90, 70, "" );
230 fl_set_object_color( obj, FL_COL1, FL_BLUE );
231
232 fl_add_positioner( FL_NORMAL_POSITIONER, 150, 210,120, 100, "" );
233
234 fl_add_counter( FL_NORMAL_COUNTER, 300, 300, 130, 30, "" );
235
236 fl_end_group( );
237
238 fdui->group[ 1 ] = fl_bgn_group( );
239
240 fdui->bitbutton = fl_add_bitmapbutton( FL_NORMAL_BUTTON, 60, 250, 50, 40,
241 "" );
242
243 fdui->pixbutton = fl_add_pixmapbutton( FL_NORMAL_BUTTON, 85, 120, 80, 80,
244 "" );
245
246 fl_add_button( FL_NORMAL_BUTTON, 290, 270, 90, 35, "Button" );
247
248 obj = fl_add_round3dbutton( FL_PUSH_BUTTON, 260, 95, 60, 40,
249 "Round3DButton" );
250 fl_set_object_color( obj, FL_COL1, FL_MAGENTA );
251
252 fl_add_roundbutton( FL_PUSH_BUTTON, 220, 140, 60, 40, "RoundButton" );
253
254 obj = fl_add_checkbutton( FL_PUSH_BUTTON, 190, 230, 50, 40, "CheckButton" );
255 fl_set_object_color( obj, FL_COL1, FL_BLUE );
256
257 fl_add_lightbutton( FL_PUSH_BUTTON, 290, 200, 100, 30, "LightButton" );
258
259 obj = fl_add_button( FL_PUSH_BUTTON, 120, 290, 100, 35 ,"Button");
260 fl_set_object_boxtype( obj, FL_ROUNDED3D_UPBOX );
261
262 fl_end_group( );
263
264 fdui->group[ 0 ] = fl_bgn_group( );
265
266 obj = fl_add_box( FL_UP_BOX, 40, 120, 70, 70, "A Box" );
267 fl_set_object_lsize( obj,FL_NORMAL_SIZE );
268 fl_set_object_lstyle( obj, FL_TIMESBOLD_STYLE );
269
270 fdui->bit = fl_add_bitmap( FL_NORMAL_BITMAP, 30, 220, 80, 70, "bitmap" );
271
272 fl_add_clock( FL_ANALOG_CLOCK, 330, 240, 90, 80, "" );
273
274 obj = fl_add_frame( FL_ENGRAVED_FRAME, 130, 120, 80, 70, "A Frame" );
275 fl_set_object_lsize( obj, FL_NORMAL_SIZE );
276 fl_set_object_lstyle( obj, FL_TIMESBOLD_STYLE );
277
278 fdui->pix = fl_add_pixmap( FL_NORMAL_PIXMAP, 340, 110, 90, 70, "pixmap" );
279
280 fdui->chart = fl_add_chart( FL_PIE_CHART, 160, 210, 130, 110, "chart" );
281
282 obj = fl_add_text( FL_NORMAL_TEXT, 240, 130, 100, 30,
283 "Text stuff\nand more stuff" );
284 fl_set_object_lalign( obj,FL_ALIGN_CENTER );
285
286 fl_end_group( );
287
288 fdui->group[ 3 ] = fl_bgn_group( );
289
290 fl_add_input( FL_NORMAL_INPUT, 140, 120, 150, 30, "Input" );
291
292 fl_add_input( FL_MULTILINE_INPUT, 60, 170, 320, 130, "" );
293
294 fl_end_group( );
295
296 fdui->quit = fl_add_button( FL_NORMAL_BUTTON, 385, 20, 60, 30, "Quit" );
297
298 fdui->group[ 4 ] = fl_bgn_group( );
299
300 fdui->menu = obj = fl_add_menu( FL_PULLDOWN_MENU, 190, 110, 40, 19,
301 "Menu" );
302 fl_set_object_boxtype( obj, FL_FLAT_BOX );
303
304 fdui->choice = fl_add_choice( FL_NORMAL_CHOICE, 290, 110, 120, 30, "" );
305
306 fdui->browser = fl_add_browser( FL_NORMAL_BROWSER, 30, 140, 140, 150, "" );
307
308 fdui->xyplot = obj = fl_add_xyplot( FL_IMPULSE_XYPLOT, 190, 150, 240, 180,
309 "" );
310 fl_set_object_lsize( obj, FL_DEFAULT_SIZE );
311
312 fl_end_group( );
313
314 fl_end_form( );
315
316 fdui->objsform->fdui = fdui;
317
318 return fdui;
319 }
320
321
322 /*
323 * Local variables:
324 * tab-width: 4
325 * indent-tabs-mode: nil
326 * End:
327 */
328