diff --git a/FL/Fl_Browser.H b/FL/Fl_Browser.H index 4bd8cf617..8b144a039 100644 --- a/FL/Fl_Browser.H +++ b/FL/Fl_Browser.H @@ -115,11 +115,13 @@ protected: /** Swap the items \p a and \p b. You must call redraw() to make any changes visible. \param[in] a,b the items to be swapped. + \see swap(int,int), item_swap() */ void item_swap(void *a, void *b) { swap((FL_BLINE*)a, (FL_BLINE*)b); } /** Return the item at specified \p line. \param[in] line The line of the item to return. (1 based) \returns The item, or NULL if line out of range. + \see item_at(), find_line(), lineno() */ void *item_at(int line) const { return (void*)find_line(line); } @@ -155,18 +157,21 @@ public: Scrolls the browser so the top item in the browser is showing the specified \p line. \param[in] line The line to be displayed at the top. + \see topline(), middleline(), bottomline(), displayed(), lineposition() */ void topline(int line) { lineposition(line, TOP); } /** Scrolls the browser so the bottom item in the browser is showing the specified \p line. \param[in] line The line to be displayed at the bottom. + \see topline(), middleline(), bottomline(), displayed(), lineposition() */ void bottomline(int line) { lineposition(line, BOTTOM); } /** Scrolls the browser so the middle item in the browser is showing the specified \p line. \param[in] line The line to be displayed in the middle. + \see topline(), middleline(), bottomline(), displayed(), lineposition() */ void middleline(int line) { lineposition(line, MIDDLE); } @@ -181,8 +186,10 @@ public: int visible(int line) const ; int value() const ; - /** Sets the browser's value(), which selects the specified \p line. - This is the same as calling select(line). + /** + Sets the browser's value(), which selects the specified \p line. + This is the same as calling select(line). + \see select(), selected(), value(), item_select(), item_selected() */ void value(int line) { select(line); } const char* text(int line) const ; @@ -222,25 +229,27 @@ public: Notice that the '\@.' command can be used to reliably terminate the parsing. To print a random string in a random color, use - sprintf("\@C%d\@.%s", color, string) and it will work even if the + sprintf("@C%d@.%s", color, string) and it will work even if the string starts with a digit or has the format character in it. */ char format_char() const { return format_char_; } /** Sets the current format code prefix character to \p c. The default prefix is '\@'. Set the prefix to 0 to disable formatting. - \see uchar Fl_Browser::format_char() const + \see format_char() for list of '\@' codes */ void format_char(char c) { format_char_ = c; } /** Gets the current column separator character. The default is '\\t' (tab). + \see column_char(), column_widths() */ char column_char() const { return column_char_; } /** Sets the column separator to c. This will only have an effect if you also set column_widths(). The default is '\\t' (tab). + \see column_char(), column_widths() */ void column_char(char c) { column_char_ = c; } /** @@ -264,16 +273,23 @@ public: b->add("root\t13115\t0.0\t0.0\t1352\t0\ttty2\tSW\tAug30\t0:00\t@b@f/sbin/mingetty tty2"); [..] \endcode + \see column_char(), column_widths() */ const int* column_widths() const { return column_widths_; } /** Sets the current array to \p arr. Make sure the last entry is zero. - \see const int *Fl_Browser::column_widths() const + \see column_char(), column_widths() */ void column_widths(const int* arr) { column_widths_ = arr; } /** - Returns non-zero if \p line is visible. + Returns non-zero if \p line has been scrolled to a position where it is being displayed. + Checks to see if the item's vertical position is within the top and bottom + edges of the display window. This does NOT take into account the hide()/show() + status of the widget or item. + \param[in] line The line to be checked + \returns 1 if visible, 0 if not visible. + \see topline(), middleline(), bottomline(), displayed(), lineposition() */ int displayed(int line) const { return Fl_Browser_::displayed(find_line(line)); } @@ -282,7 +298,7 @@ public: Functionally similar to show(int line). If \p line is out of range, redisplay top or bottom of list as appropriate. \param[in] line The line to be made visible. - \see show(int) + \see show(int), hide(int), display(), visible(), make_visible() */ void make_visible(int line) { if (line < 1) Fl_Browser_::display(find_line(1)); diff --git a/FL/Fl_Browser_.H b/FL/Fl_Browser_.H index 0d150bdd9..ee977880b 100644 --- a/FL/Fl_Browser_.H +++ b/FL/Fl_Browser_.H @@ -89,25 +89,25 @@ protected: /** This method must be provided by the subclass to return the first item in the list. - \see Related methods: item_first(), item_next(), item_last(), item_prev() + \see item_first(), item_next(), item_last(), item_prev() */ virtual void *item_first() const = 0; /** This method must be provided by the subclass to return the item in the list after \p item. - \see Related methods: item_first(), item_next(), item_last(), item_prev() + \see item_first(), item_next(), item_last(), item_prev() */ virtual void *item_next(void *item) const = 0; /** This method must be provided by the subclass to return the item in the list before \p item. - \see Related methods: item_first(), item_next(), item_last(), item_prev() + \see item_first(), item_next(), item_last(), item_prev() */ virtual void *item_prev(void *item) const = 0; /** This method must be provided by the subclass to return the last item in the list. - \see Related methods: item_first(), item_next(), item_last(), item_prev() + \see item_first(), item_next(), item_last(), item_prev() */ virtual void *item_last() const { return 0L; } /** @@ -116,7 +116,7 @@ protected: Allow for two additional pixels for the list selection box. \param[in] item The item whose height is returned. \returns The height of the specified \p item in pixels. - \see Related methods: item_height(), item_width(), item_quick_height() + \see item_height(), item_width(), item_quick_height() */ virtual int item_height(void *item) const = 0; /** @@ -182,7 +182,7 @@ protected: void redraw_line(void *item); // minimal update, no change in size /** This method will cause the entire list to be redrawn. - \see Related methods: redraw_lines(), redraw_line() + \see redraw_lines(), redraw_line() */ void redraw_lines() { damage(FL_DAMAGE_SCROLL); } // redraw all of them void bbox(int &X,int &Y,int &W,int &H) const; @@ -214,7 +214,7 @@ public: The position returned is how many pixels of the list are scrolled off the top edge of the screen. Example: A position of '3' indicates the top 3 pixels of the list are scrolled off the top edge of the screen. - \see Related methods: position(), hposition() + \see position(), hposition() */ int position() const { return position_; } void position(int pos); // scroll to here @@ -223,7 +223,7 @@ public: The position returned is how many pixels of the list are scrolled off the left edge of the screen. Example: A position of '18' indicates the left 18 pixels of the list are scrolled off the left edge of the screen. - \see Related methods: position(), hposition() + \see position(), hposition() */ int hposition() const { return hposition_; } void hposition(int); // pan to here @@ -232,14 +232,20 @@ public: /** Values for has_scrollbar(). */ + /** Anonymous enum bit flags for has_scrollbar(). + - bit 0: horizontal + - bit 1: vertical + - bit 2: 'always' (to be combined with bits 0 and 1) + - bit 3-31: reserved for future use + */ enum { // values for has_scrollbar() - HORIZONTAL = 1, ///< Only show horizontal scrollbar - VERTICAL = 2, ///< Only show vertical scrollbar - BOTH = 3, ///< Show both scrollbars (default) - ALWAYS_ON = 4, ///< Both scrollbars always on - HORIZONTAL_ALWAYS = 5, ///< horizontal scrollbar always on - VERTICAL_ALWAYS = 6, ///< vertical scrollbar always on - BOTH_ALWAYS = 7 ///< both scrollbars always on + HORIZONTAL = 1, ///< Only show horizontal scrollbar. + VERTICAL = 2, ///< Only show vertical scrollbar. + BOTH = 3, ///< Show both scrollbars. (default) + ALWAYS_ON = 4, ///< Specified scrollbar(s) should 'always' be shown (to be used with HORIZONTAL/VERTICAL) + HORIZONTAL_ALWAYS = 5, ///< Horizontal scrollbar always on. + VERTICAL_ALWAYS = 6, ///< Vertical scrollbar always on. + BOTH_ALWAYS = 7 ///< Both scrollbars always on. }; /** Returns the current scrollbar mode, see Fl_Browser_::has_scrollbar(uchar) @@ -271,7 +277,7 @@ public: /** Gets the default text font for the lines in the browser. - \see Related methods: textfont(), textsize(), textcolor() + \see textfont(), textsize(), textcolor() */ Fl_Font textfont() const { return textfont_; } /** diff --git a/src/Fl_Browser.cxx b/src/Fl_Browser.cxx index d6934435b..454db71e9 100644 --- a/src/Fl_Browser.cxx +++ b/src/Fl_Browser.cxx @@ -63,6 +63,7 @@ struct FL_BLINE { // data is in a linked list of these } \endcode \returns The first item, or NULL if list is empty. + \see item_first(), item_last(), item_next(), item_prev() */ void* Fl_Browser::item_first() const {return first;} @@ -70,7 +71,7 @@ void* Fl_Browser::item_first() const {return first;} Returns the next item after \p item. \param[in] item The 'current' item \returns The next item after \p item, or NULL if there are none after this one. - \see item_first() + \see item_first(), item_last(), item_next(), item_prev() */ void* Fl_Browser::item_next(void* item) const {return ((FL_BLINE*)item)->next;} @@ -78,7 +79,7 @@ void* Fl_Browser::item_next(void* item) const {return ((FL_BLINE*)item)->next;} Returns the previous item before \p item. \param[in] item The 'current' item \returns The previous item before \p item, or NULL if there none before this one. - \see item_last() + \see item_first(), item_last(), item_next(), item_prev() */ void* Fl_Browser::item_prev(void* item) const {return ((FL_BLINE*)item)->prev;} @@ -92,6 +93,7 @@ void* Fl_Browser::item_prev(void* item) const {return ((FL_BLINE*)item)->prev;} } \endcode \returns The last item, or NULL if list is empty. + \see item_first(), item_last(), item_next(), item_prev() */ void* Fl_Browser::item_last() const {return last;} @@ -99,6 +101,7 @@ void* Fl_Browser::item_last() const {return last;} See if \p item is selected. \param[in] item The item whose selection state is to be checked. \returns 1 if selected, 0 if not. + \see select(), selected(), value(), item_select(), item_selected() */ int Fl_Browser::item_selected(void* item) const { return ((FL_BLINE*)item)->flags&SELECTED; @@ -107,6 +110,7 @@ int Fl_Browser::item_selected(void* item) const { Change the selection state of \p item to the value \p val. \param[in] item The item to be changed. \param[in] val The new selection state: 1 selects, 0 de-selects. + \see select(), selected(), value(), item_select(), item_selected() */ void Fl_Browser::item_select(void *item, int val) { if (val) ((FL_BLINE*)item)->flags |= SELECTED; @@ -135,6 +139,7 @@ const char *Fl_Browser::item_text(void *item) const { \param[in] line The line number of the item to return. (1 based) \returns The returned item. + \see item_at(), find_line(), lineno() */ FL_BLINE* Fl_Browser::find_line(int line) const { int n; FL_BLINE* l; @@ -158,6 +163,7 @@ FL_BLINE* Fl_Browser::find_line(int line) const { Caveat: See efficiency note in find_line(). \param[in] item The item to be found \returns The line number of the item, or 0 if not found. + \see item_at(), find_line(), lineno() */ int Fl_Browser::lineno(void *item) const { FL_BLINE* l = (FL_BLINE*)item; @@ -192,6 +198,7 @@ int Fl_Browser::lineno(void *item) const { You must call redraw() to make any changes visible. \param[in] line The line number to be removed. (1 based) Must be in range! \returns Pointer to browser item that was removed (and is no longer valid). + \see add(), insert(), remove(), swap(int,int), clear() */ FL_BLINE* Fl_Browser::_remove(int line) { FL_BLINE* ttt = find_line(line); @@ -214,6 +221,7 @@ FL_BLINE* Fl_Browser::_remove(int line) { You must call redraw() to make any changes visible. \param[in] line Line to be removed. (1 based) \n If \p line is out of range, no action is taken. + \see add(), insert(), remove(), swap(int,int), clear() */ void Fl_Browser::remove(int line) { if (line < 1 || line > lines) return; @@ -342,6 +350,8 @@ void Fl_Browser::data(int line, void* d) { This takes into account embedded \@ codes within the text() label. \param[in] item The item whose height is returned. \returns The height of the item in pixels. + \see item_height(), item_width(),\n + incr_height(), full_height() */ int Fl_Browser::item_height(void *item) const { FL_BLINE* l = (FL_BLINE*)item; @@ -398,6 +408,8 @@ int Fl_Browser::item_height(void *item) const { This takes into account embedded \@ codes within the text() label. \param[in] item The item whose width is returned. \returns The width of the item in pixels. + \see item_height(), item_width(),\n + incr_height(), full_height() */ int Fl_Browser::item_width(void *item) const { char* str = ((FL_BLINE*)item)->txt; @@ -454,6 +466,8 @@ int Fl_Browser::item_width(void *item) const { This returns the accumulated height of *all* the items in the browser that are not hidden with hide(), including items scrolled off screen. \returns The accumulated size of all the visible items in pixels. + \see item_height(), item_width(),\n + incr_height(), full_height() */ int Fl_Browser::full_height() const { return full_height_; @@ -463,6 +477,8 @@ int Fl_Browser::full_height() const { The default 'average' item height (including inter-item spacing) in pixels. This currently returns textsize() + 2. \returns The value in pixels. + \see item_height(), item_width(),\n + incr_height(), full_height() */ int Fl_Browser::incr_height() const { return textsize()+2; @@ -576,6 +592,8 @@ Fl_Browser::Fl_Browser(int X, int Y, int W, int H, const char *L) Updates the browser so that \p line is shown at position \p pos. \param[in] line line number. (1 based) \param[in] pos position. + \see topline(), middleline(), bottomline(), \n ++: Command not found. */ void Fl_Browser::lineposition(int line, Fl_Line_Position pos) { if (line<1) line = 1; @@ -612,6 +630,7 @@ int Fl_Browser::topline() const { /** Removes all the lines in the browser. + \see add(), insert(), remove(), swap(int,int), clear() */ void Fl_Browser::clear() { for (FL_BLINE* l = first; l;) { @@ -636,6 +655,7 @@ void Fl_Browser::clear() { \param[in] newtext The label text used for the added item \param[in] d Optional user data() for the item (0 if unspecified) + \see add(), insert(), remove(), swap(int,int), clear() */ void Fl_Browser::add(const char* newtext, void* d) { insert(lines+1, newtext, d); @@ -673,6 +693,7 @@ void* Fl_Browser::data(int line) const { \param[in] line The line number of the item to be changed. (1 based) \param[in] val The new selection state (1=select, 0=de-select). \returns 1 if the state changed, 0 if not. + \see select(), selected(), value(), item_select(), item_selected() */ int Fl_Browser::select(int line, int val) { if (line < 1 || line > lines) return 0; @@ -683,6 +704,7 @@ int Fl_Browser::select(int line, int val) { Returns 1 if specified \p line is selected, 0 if not. \param[in] line The line being checked (1 based) \returns 1 if item selected, 0 if not. + \see select(), selected(), value(), item_select(), item_selected() */ int Fl_Browser::selected(int line) const { if (line < 1 || line > lines) return 0; @@ -695,6 +717,7 @@ int Fl_Browser::selected(int line) const { This changes the full_height() if the state was changed. redraw() is called automatically if a change occurred. \param[in] line The line to be shown. (1 based) + \see show(int), hide(int), display(), visible(), make_visible() */ void Fl_Browser::show(int line) { FL_BLINE* t = find_line(line); @@ -712,6 +735,7 @@ void Fl_Browser::show(int line) { When a line is made invisible, lines below it are moved up in the display. redraw() is called automatically if a change occurred. \param[in] line The line to be hidden. (1 based) + \see show(int), hide(int), display(), visible(), make_visible() */ void Fl_Browser::hide(int line) { FL_BLINE* t = find_line(line); @@ -726,7 +750,7 @@ void Fl_Browser::hide(int line) { For back compatibility. This calls show(line) if \p val is true, and hide(line) otherwise. If \p val is not specified, the default is 1 (makes the line visible). - \see show(int line), hide(int line) + \see show(int), hide(int), display(), visible(), make_visible() */ void Fl_Browser::display(int line, int val) { if (line < 1 || line > lines) return; @@ -737,6 +761,7 @@ void Fl_Browser::display(int line, int val) { Returns non-zero if the specified \p line is visible, 0 if hidden. Use show(int), hide(int), or make_visible(int) to change an item's visible state. \param[in] line The line in the browser to be tested. (1 based) + \see show(int), hide(int), display(), visible(), make_visible() */ int Fl_Browser::visible(int line) const { if (line < 1 || line > lines) return 0; @@ -746,6 +771,7 @@ int Fl_Browser::visible(int line) const { /** Returns the line number of the currently selected line, or 0 if none. \returns The line number of current selection, or 0 if none selected. + \see select(), selected(), value(), item_select(), item_selected() */ int Fl_Browser::value() const { return lineno(selection()); @@ -755,6 +781,7 @@ int Fl_Browser::value() const { Swap the two items \p a and \p b. Uses swapping() to ensure list updates correctly. \param[in] a,b The two items to be swapped. + \see swap(int,int), item_swap() */ void Fl_Browser::swap(FL_BLINE *a, FL_BLINE *b) { @@ -799,6 +826,7 @@ void Fl_Browser::swap(FL_BLINE *a, FL_BLINE *b) { Swaps two browser lines \p a and \p b. You must call redraw() to make any changes visible. \param[in] a,b The two lines to be swapped. (both 1 based) + \see swap(int,int), item_swap() */ void Fl_Browser::swap(int a, int b) { if (a < 1 || a > lines || b < 1 || b > lines) return; diff --git a/src/Fl_Browser_.cxx b/src/Fl_Browser_.cxx index 1a150335c..91c8b4e1c 100644 --- a/src/Fl_Browser_.cxx +++ b/src/Fl_Browser_.cxx @@ -157,7 +157,7 @@ void Fl_Browser_::resize(int X, int Y, int W, int H) { This method should be called when the contents of \p item has changed, but not its height. \param[in] item The item that needs to be redrawn. - \see Related methods: redraw_lines(), redraw_line() + \see redraw_lines(), redraw_line() */ void Fl_Browser_::redraw_line(void* item) { if (!redraw1 || redraw1 == item) {redraw1 = item; damage(FL_DAMAGE_EXPOSE);} @@ -227,7 +227,7 @@ void Fl_Browser_::update_top() { of the screen. Example: A position of '3' scrolls the top three pixels of the list off the top edge of the screen. \param[in] pos The vertical position (in pixels) to scroll the browser to. - \see Related methods: position(), hposition() + \see position(), hposition() */ void Fl_Browser_::position(int pos) { if (pos < 0) pos = 0; @@ -242,7 +242,7 @@ void Fl_Browser_::position(int pos) { of the screen. Example: A position of '18' scrolls the left 18 pixels of the list off the left edge of the screen. \param[in] pos The horizontal position (in pixels) to scroll the browser to. - \see Related methods: position(), hposition() + \see position(), hposition() */ void Fl_Browser_::hposition(int pos) { if (pos < 0) pos = 0; @@ -259,6 +259,7 @@ void Fl_Browser_::hposition(int pos) { status of the widget or item. \param[in] item The item to check \returns 1 if visible, 0 if not visible. + \see display(), displayed() */ int Fl_Browser_::displayed(void* item) const { int X, Y, W, H; bbox(X, Y, W, H); @@ -275,6 +276,7 @@ int Fl_Browser_::displayed(void* item) const { /** Displays the \p item, scrolling the list as necessary. \param[in] item The item to be displayed. + \see display(), displayed() */ void Fl_Browser_::display(void* item) { diff --git a/src/Fl_Browser_load.cxx b/src/Fl_Browser_load.cxx index bd9118d33..892f6ed00 100644 --- a/src/Fl_Browser_load.cxx +++ b/src/Fl_Browser_load.cxx @@ -37,6 +37,9 @@ was any error in opening or reading the file, in which case errno is set to the system error. The data() of each line is set to NULL. + \param[in] filename The filename to load + \returns 1 if OK, 0 on error (errno has reason) + \see add() */ int Fl_Browser::load(const char *filename) { #define MAXFL_BLINE 1024 @@ -54,8 +57,9 @@ int Fl_Browser::load(const char *filename) { newtext[i] = 0; add(newtext); i = 0; - } else + } else { newtext[i++] = c; + } } while (c >= 0); fclose(fl); return 1;