FLTK 1.4.0
Fl_Browser_ Class Referenceabstract

This is the base class for browsers. More...

#include <Fl_Browser_.H>

Inheritance diagram for Fl_Browser_:
Fl_Group Fl_Widget Fl_Browser Fl_Check_Browser Fl_File_Browser Fl_Hold_Browser Fl_Multi_Browser Fl_Select_Browser

Public Types

enum  {
  HORIZONTAL = 1 , VERTICAL = 2 , BOTH = 3 , ALWAYS_ON = 4 ,
  HORIZONTAL_ALWAYS = 5 , VERTICAL_ALWAYS = 6 , BOTH_ALWAYS = 7
}
 Values for has_scrollbar(). More...
 

Public Member Functions

int deselect (int docallbacks=0)
 Deselects all items in the list and returns 1 if the state changed or 0 if it did not. More...
 
void display (void *item)
 Displays the item, scrolling the list as necessary. More...
 
int handle (int event) FL_OVERRIDE
 Handles the event within the normal widget bounding box. More...
 
uchar has_scrollbar () const
 Returns the current scrollbar mode, see Fl_Browser_::has_scrollbar(uchar)
 
void has_scrollbar (uchar mode)
 Sets whether the widget should have scrollbars or not (default Fl_Browser_::BOTH). More...
 
int hposition () const
 Gets the horizontal scroll position of the list as a pixel position pos. More...
 
void hposition (int)
 Sets the horizontal scroll position of the list to pixel position pos. More...
 
int linespacing () const
 Return the height of additional spacing between browser lines. More...
 
void linespacing (int pixels)
 Add some space between browser lines. More...
 
int position () const
 
void position (int pos)
 
void position (int x, int y)
 
void resize (int X, int Y, int W, int H) FL_OVERRIDE
 Repositions and/or resizes the browser. More...
 
void scrollbar_left ()
 Moves the vertical scrollbar to the lefthand side of the list. More...
 
void scrollbar_right ()
 Moves the vertical scrollbar to the righthand side of the list. More...
 
int scrollbar_size () const
 Gets the current size of the scrollbars' troughs, in pixels. More...
 
void scrollbar_size (int newSize)
 Sets the pixel size of the scrollbars' troughs to newSize, in pixels. More...
 
int scrollbar_width () const
 Returns the global value Fl::scrollbar_size(). More...
 
void scrollbar_width (int width)
 Sets the global Fl::scrollbar_size(), and forces this instance of the widget to use it. More...
 
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. More...
 
int select_only (void *item, int docallbacks=0)
 Selects item and returns 1 if the state changed or 0 if it did not. More...
 
void sort (int flags=0)
 Sort the items in the browser based on flags. More...
 
Fl_Color textcolor () const
 Gets the default text color for the lines in the browser.
 
void textcolor (Fl_Color col)
 Sets the default text color for the lines in the browser to color col.
 
Fl_Font textfont () const
 Gets the default text font for the lines in the browser. More...
 
void textfont (Fl_Font font)
 Sets the default text font for the lines in the browser to font.
 
Fl_Fontsize textsize () const
 Gets the default text size (in pixels) for the lines in the browser.
 
void textsize (Fl_Fontsize newSize)
 Sets the default text size (in pixels) for the lines in the browser to size.
 
int vposition () const
 Gets the vertical scroll position of the list as a pixel position pos. More...
 
void vposition (int pos)
 Sets the vertical scroll position of the list to pixel position pos. More...
 
- Public Member Functions inherited from Fl_Group
Fl_Widget *& _ddfdesign_kludge ()
 This is for forms compatibility only.
 
void add (Fl_Widget &)
 The widget is removed from its current group (if any) and then added to the end of this group.
 
void add (Fl_Widget *o)
 See void Fl_Group::add(Fl_Widget &w)
 
void add_resizable (Fl_Widget &o)
 Adds a widget to the group and makes it the resizable widget.
 
Fl_Widget *const * array () const
 Returns a pointer to the array of children. More...
 
Fl_Group const * as_group () const FL_OVERRIDE
 
Fl_Groupas_group () FL_OVERRIDE
 Returns an Fl_Group pointer if this widget is an Fl_Group. More...
 
void begin ()
 Sets the current group so you can build the widget tree by just constructing the widgets. More...
 
Fl_Widgetchild (int n) const
 Returns array()[n]. More...
 
int children () const
 Returns how many child widgets the group has.
 
void clear ()
 Deletes all child widgets from memory recursively. More...
 
unsigned int clip_children ()
 Returns the current clipping mode. More...
 
void clip_children (int c)
 Controls whether the group widget clips the drawing of child widgets to its bounding box. More...
 
virtual int delete_child (int n)
 Removes the widget at index from the group and deletes it. More...
 
void end ()
 Exactly the same as current(this->parent()). More...
 
int find (const Fl_Widget &o) const
 See int Fl_Group::find(const Fl_Widget *w) const.
 
int find (const Fl_Widget *) const
 Searches the child array for the widget and returns the index. More...
 
 Fl_Group (int, int, int, int, const char *=0)
 Creates a new Fl_Group widget using the given position, size, and label string. More...
 
void focus (Fl_Widget *W)
 
void forms_end ()
 This is for forms compatibility only.
 
int handle (int) FL_OVERRIDE
 Handles the specified event. More...
 
void init_sizes ()
 Resets the internal array of widget sizes and positions. More...
 
void insert (Fl_Widget &, int i)
 The widget is removed from its current group (if any) and then inserted into this group. More...
 
void insert (Fl_Widget &o, Fl_Widget *before)
 This does insert(w, find(before)). More...
 
void remove (Fl_Widget &)
 Removes a widget from the group but does not delete it. More...
 
void remove (Fl_Widget *o)
 Removes the widget o from the group. More...
 
void remove (int index)
 Removes the widget at index from the group but does not delete it. More...
 
Fl_Widgetresizable () const
 Returns the group's resizable widget. More...
 
void resizable (Fl_Widget &o)
 Sets the group's resizable widget. More...
 
void resizable (Fl_Widget *o)
 The resizable widget defines both the resizing box and the resizing behavior of the group and its children. More...
 
void resize (int, int, int, int) FL_OVERRIDE
 Resizes the Fl_Group widget and all of its children. More...
 
virtual ~Fl_Group ()
 The destructor also deletes all the children. More...
 
- Public Member Functions inherited from Fl_Widget
void _clear_fullscreen ()
 
void _set_fullscreen ()
 
void activate ()
 Activates the widget. More...
 
unsigned int active () const
 Returns whether the widget is active. More...
 
int active_r () const
 Returns whether the widget and all of its parents are active. More...
 
Fl_Align align () const
 Gets the label alignment. More...
 
void align (Fl_Align alignment)
 Sets the label alignment. More...
 
long argument () const
 Gets the current user data (long) argument that is passed to the callback function. More...
 
void argument (long v)
 Sets the current user data (long) argument that is passed to the callback function. More...
 
virtual class Fl_Gl_Windowas_gl_window ()
 Returns an Fl_Gl_Window pointer if this widget is an Fl_Gl_Window. More...
 
virtual class Fl_Gl_Window const * as_gl_window () const
 
virtual Fl_Groupas_group ()
 Returns an Fl_Group pointer if this widget is an Fl_Group. More...
 
virtual Fl_Group const * as_group () const
 
virtual Fl_Windowas_window ()
 Returns an Fl_Window pointer if this widget is an Fl_Window. More...
 
virtual Fl_Window const * as_window () const
 
void bind_deimage (Fl_Image *img)
 Sets the image to use as part of the widget label when in the inactive state. More...
 
void bind_deimage (int f)
 Bind the inactive image to the widget, so the widget will delete the image when it is no longer needed. More...
 
void bind_image (Fl_Image *img)
 Sets the image to use as part of the widget label when in the active state. More...
 
void bind_image (int f)
 Bind the image to the widget, so the widget will delete the image when it is no longer needed. More...
 
Fl_Boxtype box () const
 Gets the box type of the widget. More...
 
void box (Fl_Boxtype new_box)
 Sets the box type for the widget. More...
 
Fl_Callback_p callback () const
 Gets the current callback function for the widget. More...
 
void callback (Fl_Callback *cb)
 Sets the current callback function for the widget. More...
 
void callback (Fl_Callback *cb, Fl_Callback_User_Data *p, bool auto_free)
 Sets the current callback function and managed user data for the widget. More...
 
void callback (Fl_Callback *cb, void *p)
 Sets the current callback function and data for the widget. More...
 
void callback (Fl_Callback0 *cb)
 Sets the current callback function for the widget. More...
 
void callback (Fl_Callback1 *cb, long p=0)
 Sets the current callback function for the widget. More...
 
unsigned int changed () const
 Checks if the widget value changed since the last callback. More...
 
void clear_active ()
 Marks the widget as inactive without sending events or changing focus. More...
 
void clear_changed ()
 Marks the value of the widget as unchanged. More...
 
void clear_damage (uchar c=0)
 Clears or sets the damage flags. More...
 
void clear_output ()
 Sets a widget to accept input. More...
 
void clear_visible ()
 Hides the widget. More...
 
void clear_visible_focus ()
 Disables keyboard focus navigation with this widget. More...
 
Fl_Color color () const
 Gets the background color of the widget. More...
 
void color (Fl_Color bg)
 Sets the background color of the widget. More...
 
void color (Fl_Color bg, Fl_Color sel)
 Sets the background and selection color of the widget. More...
 
Fl_Color color2 () const
 For back compatibility only. More...
 
void color2 (unsigned a)
 For back compatibility only. More...
 
int contains (const Fl_Widget *w) const
 Checks if w is a child of this widget. More...
 
void copy_label (const char *new_label)
 Sets the current label. More...
 
void copy_tooltip (const char *text)
 Sets the current tooltip text. More...
 
uchar damage () const
 Returns non-zero if draw() needs to be called. More...
 
void damage (uchar c)
 Sets the damage bits for the widget. More...
 
void damage (uchar c, int x, int y, int w, int h)
 Sets the damage bits for an area inside the widget. More...
 
int damage_resize (int, int, int, int)
 Internal use only.
 
void deactivate ()
 Deactivates the widget. More...
 
Fl_Imagedeimage ()
 Gets the image that is used as part of the widget label when in the inactive state. More...
 
const Fl_Imagedeimage () const
 Gets the image that is used as part of the widget label when in the inactive state. More...
 
void deimage (Fl_Image &img)
 Sets the image to use as part of the widget label when in the inactive state. More...
 
void deimage (Fl_Image *img)
 Sets the image to use as part of the widget label when in the inactive state. More...
 
int deimage_bound () const
 Returns whether the inactive image is managed by the widget. More...
 
void do_callback (Fl_Callback_Reason reason=FL_REASON_UNKNOWN)
 Calls the widget callback function with default arguments. More...
 
void do_callback (Fl_Widget *widget, long arg, Fl_Callback_Reason reason=FL_REASON_UNKNOWN)
 Calls the widget callback function with arbitrary arguments. More...
 
void do_callback (Fl_Widget *widget, void *arg=0, Fl_Callback_Reason reason=FL_REASON_UNKNOWN)
 Calls the widget callback function with arbitrary arguments. More...
 
virtual void draw ()=0
 Draws the widget. More...
 
void draw_label (int, int, int, int, Fl_Align) const
 Draws the label in an arbitrary bounding box with an arbitrary alignment. More...
 
int h () const
 Gets the widget height. More...
 
virtual int handle (int event)
 Handles the specified event. More...
 
virtual void hide ()
 Makes a widget invisible. More...
 
int horizontal_label_margin ()
 Get the spacing between the label and the horizontal edge of the widget. More...
 
void horizontal_label_margin (int px)
 Set the spacing between the label and the horizontal edge of the widget. More...
 
Fl_Imageimage ()
 Gets the image that is used as part of the widget label when in the active state. More...
 
const Fl_Imageimage () const
 Gets the image that is used as part of the widget label when in the active state. More...
 
void image (Fl_Image &img)
 Sets the image to use as part of the widget label when in the active state. More...
 
void image (Fl_Image *img)
 Sets the image to use as part of the widget label when in the active state. More...
 
int image_bound () const
 Returns whether the image is managed by the widget. More...
 
int inside (const Fl_Widget *wgt) const
 Checks if this widget is a child of wgt. More...
 
int is_label_copied () const
 Returns whether the current label was assigned with copy_label(). More...
 
const char * label () const
 Gets the current label text. More...
 
void label (const char *text)
 Sets the current label pointer. More...
 
void label (Fl_Labeltype a, const char *b)
 Shortcut to set the label text and type in one call. More...
 
int label_image_spacing ()
 Return the gap size between the label and the image. More...
 
void label_image_spacing (int gap)
 Set the gap between the label and the image in pixels. More...
 
Fl_Color labelcolor () const
 Gets the label color. More...
 
void labelcolor (Fl_Color c)
 Sets the label color. More...
 
Fl_Font labelfont () const
 Gets the font to use. More...
 
void labelfont (Fl_Font f)
 Sets the font to use. More...
 
Fl_Fontsize labelsize () const
 Gets the font size in pixels. More...
 
void labelsize (Fl_Fontsize pix)
 Sets the font size in pixels. More...
 
Fl_Labeltype labeltype () const
 Gets the label type. More...
 
void labeltype (Fl_Labeltype a)
 Sets the label type. More...
 
void measure_label (int &ww, int &hh) const
 Sets width ww and height hh accordingly with the label size. More...
 
bool needs_keyboard () const
 Returns whether this widget needs a keyboard. More...
 
void needs_keyboard (bool needs)
 Sets whether this widget needs a keyboard. More...
 
unsigned int output () const
 Returns if a widget is used for output only. More...
 
Fl_Groupparent () const
 Returns a pointer to the parent widget. More...
 
void parent (Fl_Group *p)
 Internal use only - "for hacks only". More...
 
void position (int X, int Y)
 Repositions the window or widget. More...
 
void redraw ()
 Schedules the drawing of the widget. More...
 
void redraw_label ()
 Schedules the drawing of the label. More...
 
virtual void resize (int x, int y, int w, int h)
 Changes the size or position of the widget. More...
 
Fl_Color selection_color () const
 Gets the selection color. More...
 
void selection_color (Fl_Color a)
 Sets the selection color. More...
 
void set_active ()
 Marks the widget as active without sending events or changing focus. More...
 
void set_changed ()
 Marks the value of the widget as changed. More...
 
void set_output ()
 Sets a widget to output only. More...
 
void set_visible ()
 Makes the widget visible. More...
 
void set_visible_focus ()
 Enables keyboard focus navigation with this widget. More...
 
int shortcut_label () const
 Returns whether the widget's label uses '&' to indicate shortcuts. More...
 
void shortcut_label (int value)
 Sets whether the widget's label uses '&' to indicate shortcuts. More...
 
virtual void show ()
 Makes a widget visible. More...
 
void size (int W, int H)
 Changes the size of the widget. More...
 
int take_focus ()
 Gives the widget the keyboard focus. More...
 
unsigned int takesevents () const
 Returns if the widget is able to take events. More...
 
int test_shortcut ()
 Returns true if the widget's label contains the entered '&x' shortcut. More...
 
const char * tooltip () const
 Gets the current tooltip text. More...
 
void tooltip (const char *text)
 Sets the current tooltip text. More...
 
Fl_Windowtop_window () const
 Returns a pointer to the top-level window for the widget. More...
 
Fl_Windowtop_window_offset (int &xoff, int &yoff) const
 Finds the x/y offset of the current widget relative to the top-level window. More...
 
uchar type () const
 Gets the widget type. More...
 
void type (uchar t)
 Sets the widget type. More...
 
int use_accents_menu ()
 Returns non zero if MAC_USE_ACCENTS_MENU flag is set, 0 otherwise.
 
void * user_data () const
 Gets the user data for this widget. More...
 
void user_data (Fl_Callback_User_Data *v, bool auto_free)
 Sets the user data for this widget.
 
void user_data (void *v)
 Sets the user data for this widget.
 
int vertical_label_margin ()
 Get the spacing between the label and the vertical edge of the widget. More...
 
void vertical_label_margin (int px)
 Set the spacing between the label and the vertical edge of the widget. More...
 
unsigned int visible () const
 Returns whether a widget is visible. More...
 
unsigned int visible_focus () const
 Checks whether this widget has a visible focus. More...
 
void visible_focus (int v)
 Modifies keyboard focus navigation. More...
 
int visible_r () const
 Returns whether a widget and all its parents are visible. More...
 
int w () const
 Gets the widget width. More...
 
Fl_When when () const
 Returns the conditions under which the callback is called. More...
 
void when (uchar i)
 Sets the flags used to decide when a callback is called. More...
 
Fl_Windowwindow () const
 Returns a pointer to the nearest parent window up the widget hierarchy. More...
 
int x () const
 Gets the widget position in its window. More...
 
int y () const
 Gets the widget position in its window. More...
 
virtual ~Fl_Widget ()
 Destroys the widget. More...
 

Public Attributes

Fl_Scrollbar hscrollbar
 Horizontal scrollbar. More...
 
Fl_Scrollbar scrollbar
 Vertical scrollbar. More...
 

Protected Member Functions

void bbox (int &X, int &Y, int &W, int &H) const
 Returns the bounding box for the interior of the list's display window, inside the scrollbars. More...
 
void deleting (void *item)
 This method should be used when item is being deleted from the list. More...
 
int displayed (void *item) const
 Returns non-zero if item has been scrolled to a position where it is being displayed. More...
 
void draw () FL_OVERRIDE
 Draws the list within the normal widget bounding box. More...
 
void * find_item (int ypos)
 This method returns the item under mouse y position ypos. More...
 
 Fl_Browser_ (int X, int Y, int W, int H, const char *L=0)
 The constructor makes an empty browser. More...
 
virtual int full_height () const
 This method may be provided by the subclass to indicate the full height of the item list, in pixels. More...
 
virtual int full_width () const
 This method may be provided by the subclass to indicate the full width of the item list, in pixels. More...
 
virtual int incr_height () const
 This method may be provided to return the average height of all items to be used for scrolling. More...
 
void inserting (void *a, void *b)
 This method should be used when an item is in the process of being inserted into the list. More...
 
virtual void * item_at (int index) const
 This method must be provided by the subclass to return the item for the specified index. More...
 
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, Y, W, H. More...
 
virtual void * item_first () const =0
 This method must be provided by the subclass to return the first item in the list. More...
 
virtual int item_height (void *item) const =0
 This method must be provided by the subclass to return the height of item in pixels. More...
 
virtual void * item_last () const
 This method must be provided by the subclass to return the last item in the list. More...
 
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. More...
 
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. More...
 
virtual int item_quick_height (void *item) const
 This method may be provided by the subclass to return the height of the item, in pixels. More...
 
virtual void item_select (void *item, int val=1)
 This method must be implemented by the subclass if it supports multiple selections; sets the selection state to val for the item. More...
 
virtual int item_selected (void *item) const
 This method must be implemented by the subclass if it supports multiple selections; returns the selection state for item. More...
 
virtual void item_swap (void *a, void *b)
 This optional method should be provided by the subclass to efficiently swap browser items a and b, such as for sorting. More...
 
virtual const char * item_text (void *item) const
 This optional method returns a string (label) that may be used for sorting. More...
 
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. More...
 
int leftedge () const
 This method returns the X position of the left edge of the list area after adjusting for the scrollbar and border, if any. More...
 
void new_list ()
 This method should be called when the list data is completely replaced or cleared. More...
 
void redraw_line (void *item)
 This method should be called when the contents of item has changed, but not its height. More...
 
void redraw_lines ()
 This method will cause the entire list to be redrawn. More...
 
void replacing (void *a, void *b)
 This method should be used when item a is being replaced by item b. More...
 
void * selection () const
 Returns the item currently selected, or NULL if there is no selection. More...
 
void swapping (void *a, void *b)
 This method should be used when two items a and b are being swapped. More...
 
void * top () const
 Returns the item that appears at the top of the list.
 
- Protected Member Functions inherited from Fl_Group
Fl_Rectbounds ()
 Returns the internal array of widget sizes and positions. More...
 
void draw () FL_OVERRIDE
 Draws the widget. More...
 
void draw_child (Fl_Widget &widget) const
 Forces a child to redraw. More...
 
void draw_children ()
 Draws all children of the group. More...
 
void draw_outside_label (const Fl_Widget &widget) const
 Parents normally call this to draw outside labels of child widgets.
 
virtual int on_insert (Fl_Widget *, int)
 Allow derived groups to act when a widget is added as a child. More...
 
virtual int on_move (int, int)
 Allow derived groups to act when a widget is moved within the group. More...
 
virtual void on_remove (int)
 Allow derived groups to act when a child widget is removed from the group. More...
 
int * sizes ()
 Returns the internal array of widget sizes and positions. More...
 
void update_child (Fl_Widget &widget) const
 Draws a child only if it needs it. More...
 
- Protected Member Functions inherited from Fl_Widget
void clear_flag (unsigned int c)
 Clears a flag in the flags mask.
 
void draw_backdrop () const
 If FL_ALIGN_IMAGE_BACKDROP is set, the image or deimage will be drawn.
 
void draw_box () const
 Draws the widget box according its box style.
 
void draw_box (Fl_Boxtype t, Fl_Color c) const
 Draws a box of type t, of color c at the widget's position and size.
 
void draw_box (Fl_Boxtype t, int x, int y, int w, int h, Fl_Color c) const
 Draws a box of type t, of color c at the position X,Y and size W,H.
 
void draw_focus () const
 Draws a focus rectangle around the widget. More...
 
void draw_focus (Fl_Boxtype t, int X, int Y, int W, int H) const
 Draws a focus rectangle around the widget. More...
 
void draw_focus (Fl_Boxtype t, int x, int y, int w, int h, Fl_Color bg) const
 Draws a focus box for the widget at the given position and size. More...
 
void draw_label () const
 Draws the widget's label at the defined label position. More...
 
void draw_label (int, int, int, int) const
 Draws the label in an arbitrary bounding box. More...
 
 Fl_Widget (int x, int y, int w, int h, const char *label=0L)
 Creates a widget at the given position and size. More...
 
unsigned int flags () const
 Gets the widget flags mask.
 
void h (int v)
 Internal use only. More...
 
void set_flag (unsigned int c)
 Sets a flag in the flags mask.
 
void w (int v)
 Internal use only. More...
 
void x (int v)
 Internal use only. More...
 
void y (int v)
 Internal use only. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from Fl_Group
static Fl_Groupcurrent ()
 Returns the currently active group. More...
 
static void current (Fl_Group *g)
 Sets the current group. More...
 
- Static Public Member Functions inherited from Fl_Widget
static void default_callback (Fl_Widget *widget, void *data)
 The default callback for all widgets that don't set a callback. More...
 
static unsigned int label_shortcut (const char *t)
 Returns the Unicode value of the '&x' shortcut in a given text. More...
 
static int test_shortcut (const char *, const bool require_alt=false)
 Returns true if the given text t contains the entered '&x' shortcut. More...
 
- Protected Types inherited from Fl_Widget
enum  {
  INACTIVE = 1<<0 , INVISIBLE = 1<<1 , OUTPUT = 1<<2 , NOBORDER = 1<<3 ,
  FORCE_POSITION = 1<<4 , NON_MODAL = 1<<5 , SHORTCUT_LABEL = 1<<6 , CHANGED = 1<<7 ,
  OVERRIDE = 1<<8 , VISIBLE_FOCUS = 1<<9 , COPIED_LABEL = 1<<10 , CLIP_CHILDREN = 1<<11 ,
  MENU_WINDOW = 1<<12 , TOOLTIP_WINDOW = 1<<13 , MODAL = 1<<14 , NO_OVERLAY = 1<<15 ,
  GROUP_RELATIVE = 1<<16 , COPIED_TOOLTIP = 1<<17 , FULLSCREEN = 1<<18 , MAC_USE_ACCENTS_MENU = 1<<19 ,
  NEEDS_KEYBOARD = 1<<20 , IMAGE_BOUND = 1<<21 , DEIMAGE_BOUND = 1<<22 , AUTO_DELETE_USER_DATA = 1<<23 ,
  MAXIMIZED = 1<<24 , POPUP = 1<<25 , USERFLAG3 = 1<<29 , USERFLAG2 = 1<<30 ,
  USERFLAG1 = 1<<31
}
 flags possible values enumeration. More...
 

Detailed Description

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.

This has been designed so that the subclass has complete control over the storage of the data, although because next() and prev() 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.

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 stat() on a file or doing some other slow operation.

Callbacks are called when the value changes with FL_REASON_CHANGED. If FL_WHEN_RELEASE is set, callbacks are called when the mouse button is released with FL_REASON_CHANGED or FL_REASON_RESELECTED if the selection did not change. If FL_WHEN_ENTER_KEY is set, callbacks are also called when key presses or double clicks change the selection.

Keyboard navigation of browser items

The keyboard navigation of browser items is only possible if visible_focus() is enabled. If disabled, the widget rejects keyboard focus; Tab and Shift-Tab focus navigation will skip the widget.

In 'Select' and 'Normal' mode, the widget rejects keyboard focus; no navigation keys are supported (other than scrollbar positioning).

In 'Hold' mode, the widget accepts keyboard focus, and Up/Down arrow keys can navigate the selected item.

In 'Multi' mode, the widget accepts keyboard focus, and Up/Down arrow keys navigate the focus box; Space toggles the current item's selection, Enter selects only the current item (deselects all others). If Shift (or Ctrl) is combined with Up/Down arrow keys, the current item's selection state is extended to the next item. In this way one can extend a selection or de-selection.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

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
Enumerator
HORIZONTAL 

Only show horizontal scrollbar.

VERTICAL 

Only show vertical scrollbar.

BOTH 

Show both scrollbars. (default)

ALWAYS_ON 

Specified scrollbar(s) should 'always' be shown (to be used with HORIZONTAL/VERTICAL)

HORIZONTAL_ALWAYS 

Horizontal scrollbar always on.

VERTICAL_ALWAYS 

Vertical scrollbar always on.

BOTH_ALWAYS 

Both scrollbars always on.

Constructor & Destructor Documentation

◆ Fl_Browser_()

Fl_Browser_::Fl_Browser_ ( int  X,
int  Y,
int  W,
int  H,
const char *  L = 0 
)
protected

The constructor makes an empty browser.

Parameters
[in]X,Y,W,Hposition and size.
[in]LThe label string, may be NULL.

Member Function Documentation

◆ bbox()

void Fl_Browser_::bbox ( int &  X,
int &  Y,
int &  W,
int &  H 
) const
protected

Returns the bounding box for the interior of the list's display window, inside the scrollbars.

Parameters
[out]X,Y,W,HThe returned bounding box.
(The original contents of these parameters are overwritten)

◆ deleting()

void Fl_Browser_::deleting ( void *  item)
protected

This method should be used when item is being deleted from the list.

It allows the Fl_Browser_ to discard any cached data it has on the item. This method does not actually delete the item, but handles the follow up bookkeeping after the item has just been deleted.

Parameters
[in]itemThe item being deleted.

◆ deselect()

int Fl_Browser_::deselect ( int  docallbacks = 0)

Deselects all items in the list and returns 1 if the state changed or 0 if it did not.

If the optional docallbacks parameter is non-zero, deselect tries to call the callback function for the widget.

Parameters
[in]docallbacksIf non-zero, invokes widget callback if item changed.
If 0, doesn't do callback (default).

◆ display()

void Fl_Browser_::display ( void *  item)

Displays the item, scrolling the list as necessary.

Parameters
[in]itemThe item to be displayed.
See also
display(), displayed()

◆ displayed()

int Fl_Browser_::displayed ( void *  item) const
protected

Returns non-zero if item 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.

Parameters
[in]itemThe item to check
Returns
1 if visible, 0 if not visible.
See also
display(), displayed()

◆ draw()

void Fl_Browser_::draw ( void  )
protectedvirtual

Draws the list within the normal widget bounding box.

Implements Fl_Widget.

◆ find_item()

void * Fl_Browser_::find_item ( int  ypos)
protected

This method returns the item under mouse y position ypos.

NULL is returned if no item is displayed at that position.

Parameters
[in]yposThe y position (eg. Fl::event_y()) to find an item under.
Returns
The item, or NULL if not found

◆ full_height()

int Fl_Browser_::full_height ( ) const
protectedvirtual

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. Includes the items that are scrolled off screen.

Returns
The height of the entire list, in pixels.

Reimplemented in Fl_Browser.

◆ full_width()

int Fl_Browser_::full_width ( ) const
protectedvirtual

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.

Returns
The maximum width of all the items, in pixels.

◆ handle()

int Fl_Browser_::handle ( int  event)
virtual

Handles the event within the normal widget bounding box.

Parameters
[in]eventThe event to process.
Returns
1 if event was processed, 0 if not.

Reimplemented from Fl_Widget.

Reimplemented in Fl_Check_Browser.

◆ has_scrollbar()

void Fl_Browser_::has_scrollbar ( uchar  mode)
inline

Sets whether the widget should have scrollbars or not (default Fl_Browser_::BOTH).

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 mode:

◆ hposition() [1/2]

int Fl_Browser_::hposition ( ) const
inline

Gets the horizontal scroll position of the list as a pixel position pos.

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 also
position(), hposition()

◆ hposition() [2/2]

void Fl_Browser_::hposition ( int  pos)

Sets the horizontal scroll position of the list to pixel position pos.

The position is how many pixels of the list are scrolled off the left edge of the screen. Example: A position of '18' scrolls the left 18 pixels of the list off the left edge of the screen.

Parameters
[in]posThe horizontal position (in pixels) to scroll the browser to.
See also
vposition(), hposition()

◆ incr_height()

int Fl_Browser_::incr_height ( ) const
protectedvirtual

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.

Returns
The average height of items, in pixels.

Reimplemented in Fl_Browser.

◆ inserting()

void Fl_Browser_::inserting ( void *  a,
void *  b 
)
protected

This method should be used when an item is in the process of being inserted into the list.

It allows the Fl_Browser_ to update its cache data as needed, scheduling a redraw for the affected lines. This method does not actually insert items, but handles the follow up bookkeeping after items have been inserted.

Parameters
[in]aThe starting item position
[in]bThe new item being inserted

◆ item_at()

virtual void * Fl_Browser_::item_at ( int  index) const
inlineprotectedvirtual

This method must be provided by the subclass to return the item for the specified index.

Parameters
[in]indexThe index of the item to be returned
Returns
The item at the specified index.

Reimplemented in Fl_Check_Browser, and Fl_Browser.

◆ item_draw()

virtual void Fl_Browser_::item_draw ( void *  item,
int  X,
int  Y,
int  W,
int  H 
) const
protectedpure virtual

This method must be provided by the subclass to draw the item in the area indicated by X, Y, W, H.

Implemented in Fl_Check_Browser, and Fl_Browser.

◆ item_first()

virtual void * Fl_Browser_::item_first ( ) const
protectedpure virtual

This method must be provided by the subclass to return the first item in the list.

See also
item_first(), item_next(), item_last(), item_prev()

Implemented in Fl_Browser, and Fl_Check_Browser.

◆ item_height()

virtual int Fl_Browser_::item_height ( void *  item) const
protectedpure virtual

This method must be provided by the subclass to return the height of item in pixels.

Allow for two additional pixels for the list selection box.

Parameters
[in]itemThe item whose height is returned.
Returns
The height of the specified item in pixels.
See also
item_height(), item_width(), item_quick_height()

Implemented in Fl_Check_Browser, and Fl_Browser.

◆ item_last()

virtual void * Fl_Browser_::item_last ( ) const
inlineprotectedvirtual

This method must be provided by the subclass to return the last item in the list.

See also
item_first(), item_next(), item_last(), item_prev()

Reimplemented in Fl_Browser.

◆ item_next()

virtual void * Fl_Browser_::item_next ( void *  item) const
protectedpure virtual

This method must be provided by the subclass to return the item in the list after item.

See also
item_first(), item_next(), item_last(), item_prev()

Implemented in Fl_Check_Browser, and Fl_Browser.

◆ item_prev()

virtual void * Fl_Browser_::item_prev ( void *  item) const
protectedpure virtual

This method must be provided by the subclass to return the item in the list before item.

See also
item_first(), item_next(), item_last(), item_prev()

Implemented in Fl_Check_Browser, and Fl_Browser.

◆ item_quick_height()

int Fl_Browser_::item_quick_height ( void *  item) const
protectedvirtual

This method may be provided by the subclass to return the height of the item, in pixels.

Allow for two additional pixels for the list selection box. This method differs from item_height in that it is only called for selection and scrolling operations. The default implementation calls item_height.

Parameters
[in]itemThe item whose height to return.
Returns
The height, in pixels.

◆ item_select()

void Fl_Browser_::item_select ( void *  item,
int  val = 1 
)
protectedvirtual

This method must be implemented by the subclass if it supports multiple selections; sets the selection state to val for the item.

Sets the selection state for item, where optional val is 1 (select, the default) or 0 (de-select).

Parameters
[in]itemThe item to be selected
[in]valThe optional selection state; 1=select, 0=de-select.
The default is to select the item (1).

Reimplemented in Fl_Check_Browser, and Fl_Browser.

◆ item_selected()

int Fl_Browser_::item_selected ( void *  item) const
protectedvirtual

This method must be implemented by the subclass if it supports multiple selections; returns the selection state for item.

The method should return 1 if item is selected, or 0 otherwise.

Parameters
[in]itemThe item to test.

Reimplemented in Fl_Check_Browser, and Fl_Browser.

◆ item_swap()

virtual void Fl_Browser_::item_swap ( void *  a,
void *  b 
)
inlineprotectedvirtual

This optional method should be provided by the subclass to efficiently swap browser items a and b, such as for sorting.

Parameters
[in]a,bThe two items to be swapped.

Reimplemented in Fl_Browser, and Fl_Check_Browser.

◆ item_text()

virtual const char * Fl_Browser_::item_text ( void *  item) const
inlineprotectedvirtual

This optional method returns a string (label) that may be used for sorting.

Parameters
[in]itemThe item whose label text is returned.
Returns
The item's text label. (Can be NULL if blank)

Reimplemented in Fl_Browser, and Fl_Check_Browser.

◆ item_width()

virtual int Fl_Browser_::item_width ( void *  item) const
protectedpure virtual

This method must be provided by the subclass to return the width of the item in pixels.

Allow for two additional pixels for the list selection box.

Parameters
[in]itemThe item whose width is returned.
Returns
The width of the item in pixels.

Implemented in Fl_Check_Browser, and Fl_Browser.

◆ leftedge()

int Fl_Browser_::leftedge ( ) const
protected

This method returns the X position of the left edge of the list area after adjusting for the scrollbar and border, if any.

Returns
The X position of the left edge of the list, in pixels.
See also
Fl_Browser_::bbox()

◆ linespacing() [1/2]

int Fl_Browser_::linespacing ( ) const
inline

Return the height of additional spacing between browser lines.

Returns
spacing height in pixel units.

◆ linespacing() [2/2]

void Fl_Browser_::linespacing ( int  pixels)
inline

Add some space between browser lines.

Parameters
[in]pixelsnumber of additional pixels between lines.

◆ new_list()

void Fl_Browser_::new_list ( )
protected

This method should be called when the list data is completely replaced or cleared.

It informs the Fl_Browser_ widget that any cached information it has concerning the items is invalid. This method does not clear the list, it just handles the follow up bookkeeping after the list has been cleared.

◆ position() [1/2]

int Fl_Browser_::position ( ) const
inline
Deprecated:
"in 1.4.0 - use vposition() instead"

◆ position() [2/2]

void Fl_Browser_::position ( int  pos)
inline
Deprecated:
"in 1.4.0 - use vposition(pos) instead"

◆ redraw_line()

void Fl_Browser_::redraw_line ( void *  item)
protected

This method should be called when the contents of item has changed, but not its height.

Parameters
[in]itemThe item that needs to be redrawn.
See also
redraw_lines(), redraw_line()

◆ redraw_lines()

void Fl_Browser_::redraw_lines ( )
inlineprotected

This method will cause the entire list to be redrawn.

See also
redraw_lines(), redraw_line()

◆ replacing()

void Fl_Browser_::replacing ( void *  a,
void *  b 
)
protected

This method should be used when item a is being replaced by item b.

It allows the Fl_Browser_ to update its cache data as needed, schedules a redraw for the item being changed, and tries to maintain the selection. This method does not actually replace the item, but handles the follow up bookkeeping after the item has just been replaced.

Parameters
[in]aItem being replaced
[in]bItem to replace 'a'

◆ resize()

void Fl_Browser_::resize ( int  X,
int  Y,
int  W,
int  H 
)
virtual

Repositions and/or resizes the browser.

Parameters
[in]X,Y,W,HThe new position and size for the browser, in pixels.

Reimplemented from Fl_Widget.

◆ scrollbar_left()

void Fl_Browser_::scrollbar_left ( )
inline

Moves the vertical scrollbar to the lefthand side of the list.

For back compatibility.

◆ scrollbar_right()

void Fl_Browser_::scrollbar_right ( )
inline

Moves the vertical scrollbar to the righthand side of the list.

For back compatibility.

◆ scrollbar_size() [1/2]

int Fl_Browser_::scrollbar_size ( ) const
inline

Gets the current size of the scrollbars' troughs, in pixels.

If this value is zero (default), this widget will use the Fl::scrollbar_size() value as the scrollbar's width.

Returns
Scrollbar size in pixels, or 0 if the global Fl::scrollbar_size() is being used.
See also
Fl::scrollbar_size(int)

◆ scrollbar_size() [2/2]

void Fl_Browser_::scrollbar_size ( int  newSize)
inline

Sets the pixel size of the scrollbars' troughs to newSize, in pixels.

Normally you should not need this method, and should use Fl::scrollbar_size(int) instead to manage the size of ALL your widgets' scrollbars. This ensures your application has a consistent UI, is the default behavior, and is normally what you want.

Only use THIS method if you really need to override the global scrollbar size. The need for this should be rare.

Setting newSize to the special value of 0 causes the widget to track the global Fl::scrollbar_size(), which is the default.

Parameters
[in]newSizeSets the scrollbar size in pixels.
If 0 (default), scrollbar size tracks the global Fl::scrollbar_size()
See also
Fl::scrollbar_size()

◆ scrollbar_width() [1/2]

int Fl_Browser_::scrollbar_width ( ) const
inline

Returns the global value Fl::scrollbar_size().

Deprecated:
Use scrollbar_size() instead.
Todo:
This method should eventually be removed in 1.4+

◆ scrollbar_width() [2/2]

void Fl_Browser_::scrollbar_width ( int  width)
inline

Sets the global Fl::scrollbar_size(), and forces this instance of the widget to use it.

Deprecated:
Use scrollbar_size() instead.
Todo:
This method should eventually be removed in 1.4+

◆ select()

int Fl_Browser_::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.

If docallbacks is non-zero, select tries to call the callback function for the widget.

Parameters
[in]itemThe item whose selection state is to be changed
[in]valThe new selection state (1=select, 0=de-select)
[in]docallbacksIf non-zero, invokes widget callback if item changed.
If 0, doesn't do callback (default).
Returns
1 if state was changed, 0 if not.

◆ select_only()

int Fl_Browser_::select_only ( void *  item,
int  docallbacks = 0 
)

Selects item and returns 1 if the state changed or 0 if it did not.

Any other items in the list are deselected.

Parameters
[in]itemThe item to select.
[in]docallbacksIf non-zero, invokes widget callback if item changed.
If 0, doesn't do callback (default).

◆ selection()

void * Fl_Browser_::selection ( ) const
inlineprotected

Returns the item currently selected, or NULL if there is no selection.

For multiple selection browsers this call returns the currently focused item, even if it is not selected. To find all selected items, call Fl_Multi_Browser::selected() for every item in question.

◆ sort()

void Fl_Browser_::sort ( int  flags = 0)

Sort the items in the browser based on flags.

item_swap(void*, void*) and item_text(void*) must be implemented for this call.

Parameters
[in]flagsFL_SORT_ASCENDING – sort in ascending order
FL_SORT_DESCENDING – sort in descending order
FL_SORT_CASEINSENSITIVE – add this to sort case-insensitively
Values other than the above will cause undefined behavior
Other flags may appear in the future.

◆ swapping()

void Fl_Browser_::swapping ( void *  a,
void *  b 
)
protected

This method should be used when two items a and b are being swapped.

It allows the Fl_Browser_ to update its cache data as needed, schedules a redraw for the two items, and tries to maintain the current selection. This method does not actually swap items, but handles the follow up bookkeeping after items have been swapped.

Parameters
[in]a,bItems being swapped.

◆ textfont()

Fl_Font Fl_Browser_::textfont ( ) const
inline

Gets the default text font for the lines in the browser.

See also
textfont(), textsize(), textcolor()

◆ vposition() [1/2]

int Fl_Browser_::vposition ( ) const
inline

Gets the vertical scroll position of the list as a pixel position pos.

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 also
position(), hposition()

◆ vposition() [2/2]

void Fl_Browser_::vposition ( int  pos)

Sets the vertical scroll position of the list to pixel position pos.

The position is how many pixels of the list are scrolled off the top edge of the screen. Example: A position of '3' scrolls the top three pixels of the list off the top edge of the screen.

Parameters
[in]posThe vertical position (in pixels) to scroll the browser to.
See also
vposition(), hposition()

Member Data Documentation

◆ hscrollbar

Fl_Scrollbar Fl_Browser_::hscrollbar

Horizontal scrollbar.

Public, so that it can be accessed directly.

◆ scrollbar

Fl_Scrollbar Fl_Browser_::scrollbar

Vertical scrollbar.

Public, so that it can be accessed directly.

Use scrollbar_left() or scrollbar_right() to change what side the vertical scrollbar is drawn on.

Use scrollbar.align(int) (see Fl_Widget::align(Fl_Align)) to change what side either of the scrollbars is drawn on.

If the FL_ALIGN_LEFT bit is on, the vertical scrollbar is on the left. If the FL_ALIGN_TOP bit is on, the horizontal scrollbar is on the top. Note that only the alignment flags in scrollbar are considered. The flags in hscrollbar however are ignored.


The documentation for this class was generated from the following files: