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