00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef Fl_Browser_H
00036 #define Fl_Browser_H
00037
00038 #include "Fl_Browser_.H"
00039 #include "Fl_Image.H"
00040
00041 struct FL_BLINE;
00042
00089 class FL_EXPORT Fl_Browser : public Fl_Browser_ {
00090
00091 FL_BLINE *first;
00092 FL_BLINE *last;
00093 FL_BLINE *cache;
00094 int cacheline;
00095 int lines;
00096 int full_height_;
00097 const int* column_widths_;
00098 char format_char_;
00099 char column_char_;
00100
00101 protected:
00102
00103
00104 void* item_first() const ;
00105 void* item_next(void* item) const ;
00106 void* item_prev(void* item) const ;
00107 void* item_last()const ;
00108 int item_selected(void* item) const ;
00109 void item_select(void* item, int val);
00110 int item_height(void* item) const ;
00111 int item_width(void* item) const ;
00112 void item_draw(void* item, int X, int Y, int W, int H) const ;
00113 int full_height() const ;
00114 int incr_height() const ;
00115 const char *item_text(void *item) const;
00121 void item_swap(void *a, void *b) { swap((FL_BLINE*)a, (FL_BLINE*)b); }
00127 void *item_at(int line) const { return (void*)find_line(line); }
00128
00129 FL_BLINE* find_line(int line) const ;
00130 FL_BLINE* _remove(int line) ;
00131 void insert(int line, FL_BLINE* item);
00132 int lineno(void *item) const ;
00133 void swap(FL_BLINE *a, FL_BLINE *b);
00134
00135 public:
00136
00137 void remove(int line);
00138 void add(const char* newtext, void* d = 0);
00139 void insert(int line, const char* newtext, void* d = 0);
00140 void move(int to, int from);
00141 int load(const char* filename);
00142 void swap(int a, int b);
00143 void clear();
00144
00150 int size() const { return lines; }
00151 void size(int W, int H) { Fl_Widget::size(W, H); }
00152
00153 int topline() const ;
00155 enum Fl_Line_Position { TOP, BOTTOM, MIDDLE };
00156 void lineposition(int line, Fl_Line_Position pos);
00163 void topline(int line) { lineposition(line, TOP); }
00170 void bottomline(int line) { lineposition(line, BOTTOM); }
00177 void middleline(int line) { lineposition(line, MIDDLE); }
00178
00179 int select(int line, int val=1);
00180 int selected(int line) const ;
00181 void show(int line);
00183 void show() { Fl_Widget::show(); }
00184 void hide(int line);
00186 void hide() { Fl_Widget::hide(); }
00187 int visible(int line) const ;
00188
00189 int value() const ;
00195 void value(int line) { select(line); }
00196 const char* text(int line) const ;
00197 void text(int line, const char* newtext);
00198 void* data(int line) const ;
00199 void data(int line, void* d);
00200
00201 Fl_Browser(int X, int Y, int W, int H, const char *L = 0);
00205 ~Fl_Browser() { clear(); }
00206
00236 char format_char() const { return format_char_; }
00242 void format_char(char c) { format_char_ = c; }
00248 char column_char() const { return column_char_; }
00255 void column_char(char c) { column_char_ = c; }
00279 const int* column_widths() const { return column_widths_; }
00284 void column_widths(const int* arr) { column_widths_ = arr; }
00285
00295 int displayed(int line) const { return Fl_Browser_::displayed(find_line(line)); }
00296
00304 void make_visible(int line) {
00305 if (line < 1) Fl_Browser_::display(find_line(1));
00306 else if (line > lines) Fl_Browser_::display(find_line(lines));
00307 else Fl_Browser_::display(find_line(line));
00308 }
00309
00310
00311 void icon(int line, Fl_Image* icon);
00312 Fl_Image* icon(int line) const;
00313 void remove_icon(int line);
00314
00316 void replace(int a, const char* b) { text(a, b); }
00317 void display(int line, int val=1);
00318 };
00319
00320 #endif
00321
00322
00323
00324