1 /*
2  *  This file is part of the XForms library package.
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 License
15  *  along with XForms.  If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 /********************** crop here for forms.h **********************/
19 
20 /*
21  * \file browser.h
22  *
23  *  Object class Browser
24  */
25 
26 #ifndef FL_BROWSER_H
27 #define FL_BROWSER_H
28 
29 
30 /***** Types    *****/
31 
32 typedef enum {
33     FL_NORMAL_BROWSER,
34     FL_SELECT_BROWSER,
35     FL_HOLD_BROWSER,
36     FL_MULTI_BROWSER,
37 	FL_DESELECTABLE_HOLD_BROWSER
38 } FL_BROWSER_TYPE;
39 
40 /***** Defaults *****/
41 
42 #define FL_BROWSER_BOXTYPE  FL_DOWN_BOX
43 #define FL_BROWSER_COL1     FL_COL1
44 #define FL_BROWSER_COL2     FL_YELLOW
45 #define FL_BROWSER_LCOL     FL_LCOL
46 #define FL_BROWSER_ALIGN    FL_ALIGN_BOTTOM
47 
48 
49 /***** Others   *****/
50 
51 #define FL_BROWSER_SLCOL        FL_COL1
52 #define FL_BROWSER_FONTSIZE     FL_SMALL_SIZE
53 
54 
55 /* This exists only for backward compatibility and isn't used anymore! */
56 
57 #define FL_BROWSER_LINELENGTH   2048
58 
59 
60 /***** Routines *****/
61 
62 FL_EXPORT FL_OBJECT * fl_create_browser( int          type,
63                                          FL_Coord     x,
64                                          FL_Coord     y,
65                                          FL_Coord     w,
66                                          FL_Coord     h,
67                                          const char * label );
68 
69 FL_EXPORT FL_OBJECT * fl_add_browser( int          type,
70                                       FL_Coord     x,
71                                       FL_Coord     y,
72                                       FL_Coord     w,
73                                       FL_Coord     h,
74                                       const char * label );
75 
76 FL_EXPORT void fl_clear_browser( FL_OBJECT * ob );
77 
78 FL_EXPORT void fl_add_browser_line( FL_OBJECT  * ob,
79                                     const char * newtext );
80 
81 FL_EXPORT void fl_add_browser_line_f( FL_OBJECT  * ob,
82 									  const char * fmt,
83 									  ... );
84 
85 
86 FL_EXPORT void fl_addto_browser( FL_OBJECT  * obj,
87                                  const char * text );
88 
89 FL_EXPORT void fl_addto_browser_f( FL_OBJECT  * obj,
90 								   const char * fmt,
91 								   ...);
92 
93 #define fl_append_browser  fl_addto_browser_chars
94 FL_EXPORT void fl_addto_browser_chars( FL_OBJECT  * ob,
95                                        const char * str );
96 
97 FL_EXPORT void fl_addto_browser_chars_f( FL_OBJECT  * ob,
98 										 const char * fmt,
99 										 ... );
100 
101 #define fl_append_browser_f  fl_addto_browser_chars_f
102 FL_EXPORT void fl_insert_browser_line( FL_OBJECT  * ob,
103                                        int          linenumb,
104                                        const char * newtext );
105 
106 FL_EXPORT void fl_insert_browser_line_f( FL_OBJECT  * ob,
107 										 int          linenumb,
108 										 const char * fmt,
109 										 ... );
110 
111 FL_EXPORT void fl_delete_browser_line( FL_OBJECT * ob,
112                                        int         linenumb );
113 
114 FL_EXPORT void fl_replace_browser_line( FL_OBJECT  * ob,
115                                         int          linenumb,
116                                         const char * newtext );
117 
118 FL_EXPORT void fl_replace_browser_line_f( FL_OBJECT  * ob,
119 										  int          linenumb,
120 										  const char * fmt,
121 										  ... );
122 
123 FL_EXPORT const char *fl_get_browser_line( FL_OBJECT * ob,
124                                            int         linenumb );
125 
126 FL_EXPORT int fl_load_browser( FL_OBJECT  * ob,
127                                const char * filename );
128 
129 FL_EXPORT void fl_select_browser_line( FL_OBJECT * ob,
130                                        int         line );
131 
132 FL_EXPORT void fl_deselect_browser_line( FL_OBJECT * ob,
133                                          int         line );
134 
135 FL_EXPORT void fl_deselect_browser( FL_OBJECT * ob );
136 
137 FL_EXPORT int fl_isselected_browser_line( FL_OBJECT * ob,
138                                           int         line );
139 
140 FL_EXPORT int fl_get_browser_topline( FL_OBJECT * ob );
141 
142 FL_EXPORT int fl_get_browser( FL_OBJECT * ob );
143 
144 FL_EXPORT int fl_get_browser_maxline( FL_OBJECT * ob );
145 
146 FL_EXPORT int fl_get_browser_screenlines( FL_OBJECT * ob );
147 
148 FL_EXPORT void fl_set_browser_topline( FL_OBJECT * ob,
149                                        int         line );
150 
151 FL_EXPORT void fl_set_browser_bottomline( FL_OBJECT * ob,
152 										  int         line );
153 
154 FL_EXPORT void fl_set_browser_fontsize( FL_OBJECT * ob,
155                                         int         size );
156 
157 FL_EXPORT void fl_set_browser_fontstyle( FL_OBJECT * ob,
158                                          int         style );
159 
160 FL_EXPORT void fl_set_browser_specialkey( FL_OBJECT * ob,
161                                           int         specialkey );
162 
163 FL_EXPORT void fl_set_browser_vscrollbar( FL_OBJECT * ob,
164                                           int         on );
165 
166 FL_EXPORT void fl_set_browser_hscrollbar( FL_OBJECT * ob,
167                                           int         on );
168 
169 FL_EXPORT void fl_set_browser_line_selectable( FL_OBJECT * ob,
170                                                int         line,
171                                                int         flag );
172 
173 FL_EXPORT void fl_get_browser_dimension( FL_OBJECT * ob,
174                                          FL_Coord  * x,
175                                          FL_Coord  * y,
176                                          FL_Coord  * w,
177                                          FL_Coord  * h );
178 
179 FL_EXPORT void fl_set_browser_dblclick_callback( FL_OBJECT      * ob,
180                                                  FL_CALLBACKPTR   cb,
181                                                  long             a );
182 
183 FL_EXPORT FL_Coord fl_get_browser_xoffset( FL_OBJECT * ob );
184 
185 FL_EXPORT double fl_get_browser_rel_xoffset( FL_OBJECT * ob );
186 
187 FL_EXPORT void fl_set_browser_xoffset( FL_OBJECT * ob,
188                                        FL_Coord    npixels );
189 
190 FL_EXPORT void fl_set_browser_rel_xoffset( FL_OBJECT * ob,
191                                            double      val );
192 
193 FL_EXPORT FL_Coord fl_get_browser_yoffset( FL_OBJECT * ob );
194 
195 FL_EXPORT double fl_get_browser_rel_yoffset( FL_OBJECT * ob );
196 
197 FL_EXPORT void fl_set_browser_yoffset( FL_OBJECT * ob,
198                                        FL_Coord    npixels );
199 
200 FL_EXPORT void fl_set_browser_rel_yoffset( FL_OBJECT * ob,
201                                            double      val );
202 
203 FL_EXPORT void fl_set_browser_scrollbarsize( FL_OBJECT * ob,
204                                              int         hh,
205                                              int         vw );
206 
207 FL_EXPORT void fl_show_browser_line( FL_OBJECT * ob,
208                                      int         j );
209 
210 FL_EXPORT int fl_set_default_browser_maxlinelength( int n );
211 
212 #ifndef FL_BROWSER_SCROLL_CALLBACKt
213 #define FL_BROWSER_SCROLL_CALLBACKt
214 typedef void ( * FL_BROWSER_SCROLL_CALLBACK )( FL_OBJECT *,
215                                                int,
216                                                void * );
217 #endif
218 
219 FL_EXPORT void
220     fl_set_browser_hscroll_callback( FL_OBJECT *,
221                                      FL_BROWSER_SCROLL_CALLBACK,
222                                      void * );
223 
224 FL_EXPORT void
225     fl_set_browser_vscroll_callback( FL_OBJECT *,
226                                      FL_BROWSER_SCROLL_CALLBACK,
227                                      void * );
228 
229 FL_EXPORT int fl_get_browser_line_yoffset( FL_OBJECT *,
230 										   int  );
231 
232 FL_EXPORT FL_BROWSER_SCROLL_CALLBACK
233     fl_get_browser_hscroll_callback( FL_OBJECT * );
234 
235 FL_EXPORT FL_BROWSER_SCROLL_CALLBACK
236     fl_get_browser_vscroll_callback( FL_OBJECT * );
237 
238 FL_EXPORT int fl_get_browser_scrollbar_repeat( FL_OBJECT * );
239 
240 FL_EXPORT void fl_set_browser_scrollbar_repeat( FL_OBJECT *,
241 												int  );
242 
243 #endif /* ! defined FL_BROWSER_H */
244