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 different fonts in different sizes.
23  * M. Overmars and T.C. Zhao
24  */
25 
26 #ifdef HAVE_CONFIG_H
27 #include "config.h"
28 #endif
29 
30 #include <stdlib.h>
31 #include "include/forms.h"
32 
33 typedef struct {
34     FL_FORM   * fontsform;
35     void      * vdata;
36     char      * cdata;
37     long        ldata;
38     FL_OBJECT * fontobj;
39     FL_OBJECT * sizeobj;
40     FL_OBJECT * textobj;
41 } FD_fontsform;
42 
43 extern FD_fontsform *create_form_fontsform( void );
44 
45 FD_fontsform *ui;
46 
47 
48 /***************************************
49  ***************************************/
50 
51 void
done_cb(FL_OBJECT * obj FL_UNUSED_ARG,long arg FL_UNUSED_ARG)52 done_cb( FL_OBJECT * obj  FL_UNUSED_ARG,
53          long        arg  FL_UNUSED_ARG )
54 {
55     fl_finish( );
56     exit( 0 );
57 }
58 
59 
60 /***************************************
61  ***************************************/
62 
63 void
style_cb(FL_OBJECT * obj,long arg FL_UNUSED_ARG)64 style_cb( FL_OBJECT * obj,
65           long        arg  FL_UNUSED_ARG )
66 {
67     fl_set_object_lstyle( ui->textobj, fl_get_browser( obj ) - 1 );
68 }
69 
70 
71 /***************************************
72  ***************************************/
73 
74 void
size_cb(FL_OBJECT * obj,long arg FL_UNUSED_ARG)75 size_cb( FL_OBJECT * obj,
76          long        arg  FL_UNUSED_ARG )
77 {
78     int sizes[ ] = { 8, 10, 11, 12, 13, 14, 18, 24, 30 };
79 
80     fl_set_object_lsize( ui->textobj, sizes[ fl_get_browser( obj ) - 1 ] );
81 }
82 
83 
84 /***************************************
85  ***************************************/
86 
87 void
addit(const char * str)88 addit( const char * str )
89 {
90     fl_add_browser_line( ui->fontobj, str );
91 }
92 
93 
94 /***************************************
95  ***************************************/
96 
97 int
main(int argc,char * argv[])98 main( int    argc,
99       char * argv[ ] )
100 {
101     fl_set_border_width( -3 );
102 
103     fl_initialize( &argc, argv, "FormDemo", 0, 0 );
104     ui = create_form_fontsform( );
105     fl_scale_form( ui->fontsform, 1.1, 1.2 );
106     fl_set_object_dblbuffer( ui->textobj, 1 );
107     fl_set_object_bw( ui->textobj, 5 );
108 
109     fl_enumerate_fonts( addit, 1 );
110     fl_select_browser_line( ui->fontobj, 1 );
111     fl_addto_browser( ui->sizeobj, "8  (tiny)" );
112     fl_addto_browser( ui->sizeobj, "10 (small)" );
113     fl_addto_browser( ui->sizeobj, "11 (scaled)" );
114     fl_addto_browser( ui->sizeobj, "12 (normal)" );
115     fl_addto_browser( ui->sizeobj, "13 (scaled)" );
116     fl_addto_browser( ui->sizeobj, "14 (medium)" );
117     fl_addto_browser( ui->sizeobj, "18 (large)" );
118     fl_addto_browser( ui->sizeobj, "24 (Huge)" );
119     fl_addto_browser( ui->sizeobj, "30 (scaled)" );
120     fl_select_browser_line( ui->sizeobj, 2 );
121     fl_set_object_lstyle( ui->textobj, FL_NORMAL_STYLE );
122     fl_call_object_callback( ui->fontobj );
123     fl_call_object_callback( ui->sizeobj );
124     fl_show_form( ui->fontsform, FL_PLACE_CENTER, FL_TRANSIENT, "Fonts" );
125 
126     fl_do_forms( );
127 
128     return 0;
129 }
130 
131 
132 /***************************************
133  ***************************************/
134 
135 FD_fontsform *
create_form_fontsform(void)136 create_form_fontsform( void )
137 {
138     FL_OBJECT *obj;
139     FD_fontsform *fdui = fl_calloc( 1, sizeof *fdui );
140 
141     fdui->fontsform = fl_bgn_form( FL_NO_BOX, 371, 296 );
142 
143     obj = fl_add_box( FL_FLAT_BOX, 0, 0, 371, 296, "" );
144     fl_set_object_color( obj, FL_SLATEBLUE, FL_COL1 );
145 
146     fdui->fontobj = obj = fl_add_browser( FL_HOLD_BROWSER, 10, 145, 195, 135,
147                                           "" );
148     fl_set_object_lalign( obj, fl_to_inside_lalign( FL_ALIGN_BOTTOM ) );
149     fl_set_object_callback( obj, style_cb, 0 );
150 
151     fdui->sizeobj = obj = fl_add_browser( FL_HOLD_BROWSER, 215, 145, 145, 135,
152                                           "" );
153     fl_set_object_lalign( obj, fl_to_inside_lalign( FL_ALIGN_BOTTOM ) );
154     fl_set_object_callback( obj, size_cb, 0 );
155 
156     fdui->textobj = obj = fl_add_text( FL_NORMAL_TEXT, 10, 5, 351, 125,
157                                        "The quick brown\nfox jumps over\n"
158                                        "the lazy dog." );
159     fl_set_object_boxtype( obj, FL_FRAME_BOX );
160     fl_set_object_lalign( obj, FL_ALIGN_CENTER );
161 
162     obj = fl_add_button( FL_HIDDEN_BUTTON, 0, 0, 370, 140, "Button" );
163     fl_set_button_shortcut( obj, "^[qQ", 1 );
164     fl_set_object_callback( obj, done_cb, 0 );
165 
166     fl_end_form( );
167 
168     return fdui;
169 }
170 
171 
172 /*
173  * Local variables:
174  * tab-width: 4
175  * indent-tabs-mode: nil
176  * End:
177  */
178