<HTML><BODY> <!-- NEW PAGE --> <H2><A name="Fl_Browser_">class Fl_Browser_</A></H2> <HR> <H3>Class Hierarchy</H3> <UL> <PRE> <A href="Fl_Group.html#Fl_Group">Fl_Group</A> | +----<B>Fl_Browser_</B> | +----<A href=Fl_Browser.html#Fl_Browser>Fl_Browser</A>, <A href=Fl_Check_Browser.html#Fl_Check_Browser>Fl_Check_Browser</A> </PRE> </UL> <H3>Include Files</H3> <UL> <PRE> #include <FL/Fl_Browser_.H> </PRE> </UL> <H3>Description</H3> This is the base class for browsers. To be useful it must be subclassed and several virtual functions defined. The Forms-compatible browser and the file chooser's browser are subclassed off of this. <P>This has been designed so that the subclass has complete control over the storage of the data, although because <TT>next()</TT> and <TT> prev()</TT> functions are used to index, it works best as a linked list or as a large block of characters in which the line breaks must be searched for. </P> <P>A great deal of work has been done so that the "height" of a data object does not need to be determined until it is drawn. This is useful if actually figuring out the size of an object requires accessing image data or doing <TT>stat()</TT> on a file or doing some other slow operation. </P> <H3>Methods</H3> <CENTER> <TABLE width=90% summary="Fl_Browser_ methods"> <TR><TD align=left valign=top> <UL> <LI><A href="#Fl_Browser_.Fl_Browser_">Fl_Browser_</A></LI> <LI><A href="#Fl_Browser_.~Fl_Browser_">~Fl_Browser_</A></LI> <LI><A href="#Fl_Browser_.bbox">bbox</A></LI> <LI><A href="#Fl_Browser_.deleting">deleting</A></LI> <LI><A href="#Fl_Browser_.deselect">deselect</A></LI> <LI><A href="#Fl_Browser_.display">display</A></LI> <LI><A href="#Fl_Browser_.displayed">displayed</A></LI> <LI><A href="#Fl_Browser_.draw">draw</A></LI> <LI><A href="#Fl_Browser_.find_item">find_item</A></LI> </UL> </TD><TD align=left valign=top> <UL> <LI><A href="#Fl_Browser_.full_height">full_height</A></LI> <LI><A href="#Fl_Browser_.full_width">full_width</A></LI> <LI><A href="#Fl_Browser_.handle">handle</A></LI> <LI><A href="#Fl_Browser_.has_scrollbar">has_scrollbar</A></LI> <LI><A href="#Fl_Browser_.hposition">hposition</A></LI> <LI><A href="#Fl_Browser_.incr_height">incr_height</A></LI> <LI><A href="#Fl_Browser_.inserting">inserting</A></LI> <LI><A href="#Fl_Browser_.item_draw">item_draw</A></LI> </UL> </TD><TD align=left valign=top> <UL> <LI><A href="#Fl_Browser_.item_first">item_first</A></LI> <LI><A href="#Fl_Browser_.item_height">item_height</A></LI> <LI><A href="#Fl_Browser_.item_next">item_next</A></LI> <LI><A href="#Fl_Browser_.item_prev">item_prev</A></LI> <LI><A href="#Fl_Browser_.item_quick_height">item_quick_height</A></LI> <LI><A href="#Fl_Browser_.item_select">item_select</A></LI> <LI><A href="#Fl_Browser_.item_selected">item_selected</A></LI> <LI><A href="#Fl_Browser_.item_width">item_width</A></LI> </UL> </TD><TD align=left valign=top> <UL> <LI><A href="#Fl_Browser_.leftedge">leftedge</A></LI> <LI><A href="#Fl_Browser_.new_list">new_list</A></LI> <LI><A href="#Fl_Browser_.position">position</A></LI> <LI><A href="#Fl_Browser_.redraw_line">redraw_line</A></LI> <LI><A href="#Fl_Browser_.redraw_lines">redraw_lines</A></LI> <LI><A href="#Fl_Browser_.replacing">replacing</A></LI> <LI><A href="#Fl_Browser_.resize">resize</A></LI> <LI><A href="#Fl_Browser_.scrollbar_left">scrollbar_left</A></LI> </UL> </TD><TD align=left valign=top> <UL> <LI><A href="#Fl_Browser_.scrollbar_right">scrollbar_right</A></LI> <LI><A href="#Fl_Browser_.select">select</A></LI> <LI><A href="#Fl_Browser_.select_only">select_only</A></LI> <LI><A href="#Fl_Browser_.selection">selection</A></LI> <LI><A href="#Fl_Browser_.textcolor">textcolor</A></LI> <LI><A href="#Fl_Browser_.textfont">textfont</A></LI> <LI><A href="#Fl_Browser_.textsize">textsize</A></LI> <LI><A href="#Fl_Browser_.top">top</A></LI> </UL> </TD></TR> </TABLE> </CENTER> <H4><A name="Fl_Browser_.Fl_Browser_">Fl_Browser::Fl_Browser(int, int, int, int, const char * = 0)</A></H4> <P>The constructor makes an empty browser. <H4><A name="Fl_Browser_.~Fl_Browser_">Fl_Browser::~Fl_Browser(void)</A></H4> <P>The destructor deletes all list items and destroys the browser. <H4><A NAME="Fl_Browser_.bbox">Fl_Browser_::bbox(int &x, int &y, int &w, int &h) const</A></H4> <P>This method returns the bounding box for the interior of the list, inside the scrollbars. <H4><A NAME="Fl_Browser_.deleting">Fl_Browser_::deleting(void *a)</A></H4> <P>This method should be used when an item is deleted from the list. It allows the <TT>Fl_Browser_</TT> to discard any cached data it has on the item. <H4><A NAME="Fl_Browser_.deselect">int Fl_Browser_::deselect(int docb=0)</A></H4> <P>Deselects all items in the list and returns 1 if the state changed or 0 if it did not. <P>If <TT>docb</TT> is non-zero, <TT>deselect</TT> tries to call the callback function for the widget. <H4><A NAME="Fl_Browser_.display">Fl_Browser_::display(void *p)</A></H4> <P>Displays item <TT>p</TT>, scrolling the list as necessary. <H4><A NAME="Fl_Browser_.displayed">int Fl_Browser_::displayed(void *p) const</A></H4> <P>This method returns non-zero if item <TT>p</TT> is currently visible in the list. <H4><A NAME="Fl_Browser_.draw">Fl_Browser_::draw() <BR>Fl_Browser_::draw(int x, int y, int w, int h)</A></H4> <P>The first form draws the list within the normal widget bounding box. <P>The second form draws the contents of the browser within the specified bounding box. <H4><A NAME="Fl_Browser_.find_item">void *Fl_Browser_::find_item(int my)</A></H4> <P>This method returns the item under mouse at <TT>my</TT>. If no item is displayed at that position then <TT>NULL</TT> is returned. <H4><A NAME="Fl_Browser_.full_height">virtual int Fl_Browser_::full_height() const</A></H4> <P>This method may be provided by the subclass to indicate the full height of the item list in pixels. The default implementation computes the full height from the item heights. <H4><A NAME="Fl_Browser_.full_width">Fl_Browser_::full_width() const</A></H4> <P>This method may be provided by the subclass to indicate the full width of the item list in pixels. The default implementation computes the full width from the item widths. <H4><A NAME="Fl_Browser_.handle">Fl_Browser_::handle(int event) <BR>Fl_Browser_::handle(int event, int x, int y, int w, int h)</A></H4> <P>The first form handles an event within the normal widget bounding box. <P>The second form handles an event within the specified bounding box. <H4><A name="Fl_Browser_.has_scrollbar">void Fl_Browser_::has_scrollbar(int h)</A></H4> <P>By default you can scroll in both directions, and the scrollbars disappear if the data will fit in the widget. has_scrollbar() changes this based on the value of <TT>h</TT>: <UL> <LI><CODE>0</CODE> - No scrollbars. <LI><CODE>Fl_Browser_::HORIZONTAL</CODE> - Only a horizontal scrollbar. <LI><CODE>Fl_Browser_::VERTICAL</CODE> - Only a vertical scrollbar. <LI><CODE>Fl_Browser_::BOTH</CODE> - The default is both scrollbars. <LI><CODE>Fl_Browser_::HORIZONTAL_ALWAYS</CODE> - Horizontal scrollbar always on, vertical always off. <LI><CODE>Fl_Browser_::VERTICAL_ALWAYS</CODE> - Vertical scrollbar always on, horizontal always off. <LI><CODE>Fl_Browser_::BOTH_ALWAYS</CODE> - Both always on. </UL> <H4><A NAME="Fl_Browser_.hposition">int Fl_Browser_::hposition() const <BR>Fl_Browser_::hposition(int h)</A></H4> <P>Gets or sets the horizontal scrolling position of the list, which is the pixel offset of the list items within the list area. <H4><A NAME="Fl_Browser_.incr_height">virtual int Fl_Browser_::incr_height() const</A></H4> <P>This method may be provided to return the average height of all items, to be used for scrolling. The default implementation uses the height of the first item. <H4><A NAME="Fl_Browser_.inserting">Fl_Browser_::inserting(void *a, void *b)</A></H4> <P>This method should be used when an item is added to the list. It allows the <TT>Fl_Browser_</TT> to update its cache data as needed. <H4><A NAME="Fl_Browser_.item_draw">virtual void Fl_Browser_::item_draw(void *p, int x, int y, int w, int h)</A></H4> <P>This method must be provided by the subclass to draw the item <TT>p</TT> in the area indicated by <TT>x</TT>, <TT>y</TT>, <TT>w</TT>, and <TT>h</TT>. <H4><A NAME="Fl_Browser_.item_first">virtual void *Fl_Browser_::item_first() const</A></H4> <P>This method must be provided by the subclass to return the first item in the list. <H4><A NAME="Fl_Browser_.item_height">virtual int Fl_Browser_::item_height(void *p) const</A></H4> <P>This method must be provided by the subclass to return the height of the item <TT>p</TT> in pixels. Allow for two additional pixels for the list selection box. <H4><A NAME="Fl_Browser_.item_next">virtual void *Fl_Browser_::item_next(void *p) const</A></H4> <P>This method must be provided by the subclass to return the item in the list after <TT>p</TT>. <H4><A NAME="Fl_Browser_.item_prev">virtual void *Fl_Browser_::item_prev(void *p) const</A></H4> <P>This method must be provided by the subclass to return the item in the list before <TT>p</TT>. <H4><A NAME="Fl_Browser_.item_quick_height">virtual int Fl_Browser_::item_quick_height(void *p) const</A></H4> <P>This method may be provided by the subclass to return the height of the item <TT>p</TT> in pixels. Allow for two additional pixels for the list selection box. This method differs from <A HREF="#Fl_Browser_.item_height"><TT>item_height</TT></A> in that it is only called for selection and scrolling operations. The default implementation calls <TT>item_height</TT>. <H4><A NAME="Fl_Browser_.item_select">virtual void Fl_Browser_::item_select(void *p, int s=1)</A></H4> <P>This method must be implemented by the subclass if it supports multiple selections in the browser. The <TT>s</TT> argument specifies the selection state for item <TT>p</TT>: 0 = off, 1 = on. <H4><A NAME="Fl_Browser_.item_selected">virtual int Fl_Browser_::item_selected(void *p) const</A></H4> <P>This method must be implemented by the subclass if it supports multiple selections in the browser. The method should return 1 if <TT>p</TT> is selected and 0 otherwise. <H4><A NAME="Fl_Browser_.item_width">virtual int Fl_Browser_::item_width(void *p) const</A></H4> <P>This method must be provided by the subclass to return the width of the item <TT>p</TT> in pixels. Allow for two additional pixels for the list selection box. <H4><A NAME="Fl_Browser_.leftedge">int Fl_Browser_::leftedge() const</A></H4> <P>This method returns the X position of the left edge of the list area after adjusting for the scrollbar and border, if any. <H4><A NAME="Fl_Browser_.new_list">Fl_Browser_::new_list()</A></H4> <P>This method should be called when the list data is completely replaced or cleared. It informs the <TT>Fl_Browser_</TT> widget that any cached information it has concerning the items is invalid. <H4><A NAME="Fl_Browser_.position">int Fl_Browser_::position() const <BR>Fl_Browser_::position(int v) const</A></H4> <P>Gets or sets the vertical scrolling position of the list, which is the pixel offset of the list items within the list area. <H4><A NAME="Fl_Browser_.redraw_line">Fl_Browser_::redraw_line(void *p)</A></H4> <P>This method should be called when the contents of an item have changed but not changed the height of the item. <H4><A NAME="Fl_Browser_.redraw_lines">Fl_Browser_::redraw_lines()</A></H4> <P>This method will cause the entire list to be redrawn. <H4><A NAME="Fl_Browser_.replacing">Fl_Browser_::replacing(void *a, void *b)</A></H4> <P>This method should be used when an item is replaced in the list. It allows the <TT>Fl_Browser_</TT> to update its cache data as needed. <H4><A NAME="Fl_Browser_.resize">Fl_Browser_::resize(int x, int y, int w, int h)</A></H4> <P>Repositions and/or resizes the browser. <H4><A NAME="Fl_Browser_.scrollbar_left">Fl_Browser_::scrollbar_left()</A></H4> <P>This method moves the vertical scrollbar to the lefthand side of the list. <H4><A NAME="Fl_Browser_.scrollbar_right">Fl_Browser_::scrollbar_right()</A></H4> <P>This method moves the vertical scrollbar to the righthand side of the list. <H4><A NAME="Fl_Browser_.select">int Fl_Browser_::select(void *p, int s=1, int docb=0)</A></H4> <P>Sets the selection state of item <TT>p</TT> to <TT>s</TT> and returns 1 if the state changed or 0 if it did not. <P>If <TT>docb</TT> is non-zero, <TT>select</TT> tries to call the callback function for the widget. <H4><A NAME="Fl_Browser_.select_only">Fl_Browser_::select_only(void *p, int docb=0)</A></H4> <P>Selects item <TT>p</TT> and returns 1 if the state changed or 0 if it did not. Any other items in the list are deselected. <P>If <TT>docb</TT> is non-zero, <TT>select_only</TT> tries to call the callback function for the widget. <H4><A NAME="Fl_Browser_.selection">void *Fl_Browser_::selection() const</A></H4> <P>Returns the item currently selected, or NULL if there is no selection. For multiple selection browsers this call returns the last item that was selected. <H4><A name="Fl_Browser_.textcolor">Fl_Color Fl_Browser_::textcolor() const <BR>void Fl_Browser_::textcolor(Fl_Color color)</A></H4> <P>The first form gets the default text color for the lines in the browser. <P>The second form sets the default text color to <TT>color</TT></P> <H4><A name="Fl_Browser_.textfont">Fl_Font Fl_Browser_::textfont() const <BR>void Fl_Browser_::textfont(Fl_Font font)</A></H4> <P>The first form gets the default text font for the lines in the browser. <P>The second form sets the default text font to <TT>font</TT></P> <H4><A name="Fl_Browser_.textsize">uchar Fl_Browser_::textsize() const <BR>void Fl_Browser_::textsize(uchar size)</A></H4> <P>The first form gets the default text size for the lines in the browser. <P>The second form sets the default text size to <TT>size</TT></P> <H4><A NAME="Fl_Browser_.top">void *Fl_Browser_::top() const</A></H4> <P>Returns the item the appears at the top of the list. </BODY> </HTML>