NTK 1.3.0
Fl_Browser.H
1//
2// "$Id: Fl_Browser.H 8623 2011-04-24 17:09:41Z AlbrechtS $"
3//
4// Browser header file for the Fast Light Tool Kit (FLTK).
5//
6// Copyright 1998-2011 by Bill Spitzak and others.
7//
8// This library is free software; you can redistribute it and/or
9// modify it under the terms of the GNU Library General Public
10// License as published by the Free Software Foundation; either
11// version 2 of the License, or (at your option) any later version.
12//
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16// Library General Public License for more details.
17//
18// You should have received a copy of the GNU Library General Public
19// License along with this library; if not, write to the Free Software
20// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
21// USA.
22//
23// Please report all bugs and problems on the following page:
24//
25// http://www.fltk.org/str.php
26//
27
28/* \file
29 Fl_Browser widget . */
30
31// Forms-compatible browser. Probably useful for other
32// lists of textual data. Notice that the line numbers
33// start from 1, and 0 means "no line".
34
35#ifndef Fl_Browser_H
36#define Fl_Browser_H
37
38#include "Fl_Browser_.H"
39#include "Fl_Image.H"
40
41struct FL_BLINE;
42
89class FL_EXPORT Fl_Browser : public Fl_Browser_ {
90
91 FL_BLINE *first; // the array of lines
92 FL_BLINE *last;
93 FL_BLINE *cache;
94 int cacheline; // line number of cache
95 int lines; // Number of lines
96 int full_height_;
97 const int* column_widths_;
98 char format_char_; // alternative to @-sign
99 char column_char_; // alternative to tab
100
101protected:
102
103 // required routines for Fl_Browser_ subclass:
104 void* item_first() const ;
105 void* item_next(void* item) const ;
106 void* item_prev(void* item) const ;
107 void* item_last()const ;
108 int item_selected(void* item) const ;
109 void item_select(void* item, int val);
110 int item_height(void* item) const ;
111 int item_width(void* item) const ;
112 void item_draw(void* item, int X, int Y, int W, int H) const ;
113 const char *item_text(void *item) const;
119 void item_swap(void *a, void *b) { swap((FL_BLINE*)a, (FL_BLINE*)b); }
125 void *item_at(int line) const { return (void*)find_line(line); }
126
127 FL_BLINE* find_line(int line) const ;
128 FL_BLINE* _remove(int line) ;
129 void insert(int line, FL_BLINE* item);
130 int lineno(void *item) const ;
131 void swap(FL_BLINE *a, FL_BLINE *b);
132
133public:
134
135 int full_height() const ;
136 int incr_height() const ;
137
138 void remove(int line);
139 void add(const char* newtext, void* d = 0);
140 void insert(int line, const char* newtext, void* d = 0);
141 void move(int to, int from);
142 int load(const char* filename);
143 void swap(int a, int b);
144 void clear();
145
151 int size() const { return lines; }
152 void size(int W, int H) { Fl_Widget::size(W, H); }
153
154 int topline() const ;
156 enum Fl_Line_Position { TOP, BOTTOM, MIDDLE };
157 void lineposition(int line, Fl_Line_Position pos);
164 void topline(int line) { lineposition(line, TOP); }
171 void bottomline(int line) { lineposition(line, BOTTOM); }
178 void middleline(int line) { lineposition(line, MIDDLE); }
179
180 int select(int line, int val=1);
181 int selected(int line) const ;
182 void show(int line);
184 void show() { Fl_Widget::show(); }
185 void hide(int line);
187 void hide() { Fl_Widget::hide(); }
188 int visible(int line) const ;
189
190 int value() const ;
196 void value(int line) { select(line); }
197 const char* text(int line) const ;
198 void text(int line, const char* newtext);
199 void* data(int line) const ;
200 void data(int line, void* d);
201
202 Fl_Browser(int X, int Y, int W, int H, const char *L = 0);
207
237 char format_char() const { return format_char_; }
243 void format_char(char c) { format_char_ = c; }
249 char column_char() const { return column_char_; }
256 void column_char(char c) { column_char_ = c; }
280 const int* column_widths() const { return column_widths_; }
285 void column_widths(const int* arr) { column_widths_ = arr; }
286
296 int displayed(int line) const { return Fl_Browser_::displayed(find_line(line)); }
297
305 void make_visible(int line) {
306 if (line < 1) Fl_Browser_::display(find_line(1));
307 else if (line > lines) Fl_Browser_::display(find_line(lines));
308 else Fl_Browser_::display(find_line(line));
309 }
310
311 // icon support
312 void icon(int line, Fl_Image* icon);
313 Fl_Image* icon(int line) const;
314 void remove_icon(int line);
315
317 void replace(int a, const char* b) { text(a, b); }
318 void display(int line, int val=1);
319};
320
321#endif
322
323//
324// End of "$Id: Fl_Browser.H 8623 2011-04-24 17:09:41Z AlbrechtS $".
325//
This is the base class for browsers.
Definition: Fl_Browser_.H:67
virtual int item_selected(void *item) const
This method must be implemented by the subclass if it supports multiple selections; returns the selec...
Definition: Fl_Browser_.cxx:1103
virtual void * item_next(void *item) const =0
This method must be provided by the subclass to return the item in the list after item.
virtual void * item_last() const
This method must be provided by the subclass to return the last item in the list.
Definition: Fl_Browser_.H:112
virtual int incr_height() const
This method may be provided to return the average height of all items to be used for scrolling.
Definition: Fl_Browser_.cxx:1058
virtual int item_width(void *item) const =0
This method must be provided by the subclass to return the width of the item in pixels.
void display(void *item)
Displays the item, scrolling the list as necessary.
Definition: Fl_Browser_.cxx:253
virtual int item_height(void *item) const =0
This method must be provided by the subclass to return the height of item in pixels.
virtual void * item_prev(void *item) const =0
This method must be provided by the subclass to return the item in the list before item.
virtual void * item_first() const =0
This method must be provided by the subclass to return the first item in the list.
virtual void item_select(void *item, int val=1)
This method must be implemented by the subclass if it supports multiple selections; sets the selectio...
Definition: Fl_Browser_.cxx:1095
virtual int full_height() const
This method may be provided by the subclass to indicate the full height of the item list,...
Definition: Fl_Browser_.cxx:1069
virtual void item_draw(void *item, int X, int Y, int W, int H) const =0
This method must be provided by the subclass to draw the item in the area indicated by X,...
int select(void *item, int val=1, int docallbacks=0)
Sets the selection state of item to val, and returns 1 if the state changed or 0 if it did not.
Definition: Fl_Browser_.cxx:614
virtual const char * item_text(void *item) const
This optional method returns a string (label) that may be used for sorting.
Definition: Fl_Browser_.H:141
int displayed(void *item) const
Returns non-zero if item has been scrolled to a position where it is being displayed.
Definition: Fl_Browser_.cxx:236
The Fl_Browser widget displays a scrolling list of text lines, and manages all the storage for the te...
Definition: Fl_Browser.H:89
char format_char() const
Gets the current format code prefix character, which by default is '@'.
Definition: Fl_Browser.H:237
Fl_Line_Position
For internal use only?
Definition: Fl_Browser.H:156
void hide()
Hides the entire Fl_Browser widget – opposite of show().
Definition: Fl_Browser.H:187
void format_char(char c)
Sets the current format code prefix character to c.
Definition: Fl_Browser.H:243
void show()
Shows the entire Fl_Browser widget – opposite of hide().
Definition: Fl_Browser.H:184
void column_widths(const int *arr)
Sets the current array to arr.
Definition: Fl_Browser.H:285
void column_char(char c)
Sets the column separator to c.
Definition: Fl_Browser.H:256
int size() const
Returns how many lines are in the browser.
Definition: Fl_Browser.H:151
void value(int line)
Sets the browser's value(), which selects the specified line.
Definition: Fl_Browser.H:196
int displayed(int line) const
Returns non-zero if line has been scrolled to a position where it is being displayed.
Definition: Fl_Browser.H:296
void make_visible(int line)
Make the item at the specified line visible().
Definition: Fl_Browser.H:305
char column_char() const
Gets the current column separator character.
Definition: Fl_Browser.H:249
~Fl_Browser()
The destructor deletes all list items and destroys the browser.
Definition: Fl_Browser.H:206
const int * column_widths() const
Gets the current column width array.
Definition: Fl_Browser.H:280
void topline(int line)
Scrolls the browser so the top item in the browser is showing the specified line.
Definition: Fl_Browser.H:164
void item_swap(void *a, void *b)
Swap the items a and b.
Definition: Fl_Browser.H:119
void bottomline(int line)
Scrolls the browser so the bottom item in the browser is showing the specified line.
Definition: Fl_Browser.H:171
void replace(int a, const char *b)
For back compatibility only.
Definition: Fl_Browser.H:317
void middleline(int line)
Scrolls the browser so the middle item in the browser is showing the specified line.
Definition: Fl_Browser.H:178
void * item_at(int line) const
Return the item at specified line.
Definition: Fl_Browser.H:125
void add(Fl_Widget &)
The widget is removed from its current group (if any) and then added to the end of this group.
Definition: Fl_Group.cxx:494
void insert(Fl_Widget &, int i)
The widget is removed from its current group (if any) and then inserted into this group.
Definition: Fl_Group.cxx:461
void clear()
Deletes all child widgets from memory recursively.
Definition: Fl_Group.cxx:386
void remove(int index)
Removes the widget at index from the group but does not delete it.
Definition: Fl_Group.cxx:506
Fl_Image is the base class used for caching and drawing all kinds of images in FLTK.
Definition: Fl_Image.H:51
virtual void hide()
Makes a widget invisible.
Definition: Fl_Widget.cxx:242
virtual void show()
Makes a widget visible.
Definition: Fl_Widget.cxx:230
unsigned int visible() const
Returns whether a widget is visible.
Definition: Fl_Widget.H:656
void size(int W, int H)
Changes the size of the widget.
Definition: Fl_Widget.H:339