Main Page | Class Hierarchy | Class List | File List | Class Members

Flu_Tree_Browser Class Reference

This class provides a browser for hierarchical data representation (i.e. a "tree"). More...

#include <Flu_Tree_Browser.h>

Inheritance diagram for Flu_Tree_Browser:

Flu_DND List of all members.

Public Types

enum  { MOVE_BEFORE, MOVE_INSIDE, MOVE_AFTER }

Public Member Functions

 Flu_Tree_Browser (int x, int y, int w, int h, const char *label=0)
 Normal FLTK widget constructor.

virtual ~Flu_Tree_Browser ()
 Default destructor.

Nodeadd (const char *fullpath, Fl_Widget *w=0, bool showLabel=true)
 Add the entry specified by fullpath to the tree. If w is not NULL then that widget is the entry and its label is visible depending on the value of showLabel. Note that the widget is destroyed by the tree/node on clear() or the destructor.

Nodeadd (const char *path, const char *name, Fl_Widget *w=0, bool showLabel=true)
 Add entry name in path path to the tree. If w is not NULL then that widget is the entry and its label is visible depending on the value of showLabel. Note that the widget is destroyed by the tree/node on clear() or the destructor.

Nodeadd (Node *n, const char *name, Fl_Widget *w=0, bool showLabel=true)
 Add entry name to node n. If w is not NULL then that widget is the entry and its label is visible depending on the value of showLabel. Note that the widget is destroyed by the tree/node on clear() or the destructor.

Nodeadd_branch (const char *fullpath, Fl_Widget *w=0, bool showLabel=true)
 Convenience function that is the same as add() except it appends a '/' to fullpath if one does not exist.

Nodeadd_branch (const char *path, const char *name, Fl_Widget *w=0, bool showLabel=true)
 Convenience function that is the same as add() except it appends a '/' to name if one does not exist.

Nodeadd_branch (Node *n, const char *name, Fl_Widget *w=0, bool showLabel=true)
 Convenience function that is the same as add() except it appends a '/' to name if one does not exist.

Nodeadd_leaf (const char *fullpath, Fl_Widget *w=0, bool showLabel=true)
 Convenience function that is the same as add() except it removes any '/' at the end of fullpath.

Nodeadd_leaf (const char *path, const char *name, Fl_Widget *w=0, bool showLabel=true)
 Convenience function that is the same as add() except it removes any '/' at the end of name.

Nodeadd_leaf (Node *n, const char *name, Fl_Widget *w=0, bool showLabel=true)
 Convenience function that is the same as add() except it removes any '/' at the end of fullpath.

void all_branches_always_open (bool b)
 Set whether all branches are always open. Default value is false.

bool all_branches_always_open ()
 Get whether all branches are always open. Default value is false.

void allow_leaf_duplication (bool b)
 Set whether multiple leaves with the same path are allowed. Default value is true.

bool allow_leaf_duplication ()
 Get whether multiple leaves with the same path are allowed.

bool have_dnd ()
 true if drag and drop support has been compiled in, false otherwise

void allow_dnd (bool b)
 Set whether drag and drop processing is enabled for the browser. Default is false.

bool allow_dnd ()
 Get whether drag and drop processing is enabled for the browser.

void always_open (bool b)
 Set whether the root node is always open. Shortcut for get_root()->always_open(b). Default is false.

bool always_open ()
 Get whether the root node is always open.

void animate (bool b)
 Set whether animations of opening/closing branches are enabled. Default is false.

bool animate ()
 Get whether animations of opening/closing branches are enabled.

void auto_branches (bool b)
 Set whether the tree automatically determines whether a node is a branch or a leaf based on whether it has any children. Default is false.

bool auto_branches () const
 Get whether the tree automatically determines whether a node is a branch or a leaf based on whether it has any children.

Fl_Color branch_color () const
 Get the default branch text color.

Fl_Font branch_font () const
 Get the default branch text font.

int branch_size () const
 Get the default branch text size.

void branch_text (Fl_Color color, Fl_Font font, int size)
 Set the default color, font and size to use for the text of all subsequent branches added to the tree.

void branch_icons (Fl_Image *closed, Fl_Image *open)
 Set the default branch icons to use for all subsequent branches added to the tree.

Fl_Boxtype box () const
 Get the type of box to draw the browser in.

void box (Fl_Boxtype b)
 Set the type of box to draw the browser in. Default is FL_FLAT_BOX.

int callback_reason () const
 Get the reason why the last callback happened. This can be one of FLU_UNHILIGHTED, FLU_HILIGHTED, FLU_SELECTED, FLU_UNSELECTED, FLU_OPENED, FLU_CLOSED, FLU_DOUBLE_CLICK, FLU_WIDGET_CALLBACK, FLU_MOVED_CALLBACK, FLU_NEW_NODE_CALLBACK.

Nodecallback_node () const
 Get the node on which the last callback happened.

void clear ()
 Clear all entries from the tree.

void collapse_icons (Fl_Image *closed, Fl_Image *open)
 Set the default collapse icons to use for all subsequent branches added to the tree.

float collapse_time () const
 Get the amount of time to take when animating an open/close. Use in conjunction with frame_rate().

void collapse_time (float t)
 Set the amount of time to take when animating an open/close. Use in conjunction with frame_rate(). Default is 0.1 seconds.

Fl_Color color () const
 Get the background color of the browser.

void color (Fl_Color c)
 Set the background color of the browser. Default is FL_WHITE.

void color (unsigned c)
 Set the background color of the browser. Default is FL_WHITE.

void connector_style (Fl_Color color, int style, int width=1)
 Set the color, style, and width of the connector lines. Default is FL_DARK2, FL_DOT, 1.

Fl_Color connector_color () const
 Get the color of the connector lines.

int connector_style () const
 Get the style of the connector lines.

int connector_width () const
 Get the width of the connector lines.

void double_click_opens (bool b)
 Set whether double-clicking a branch opens/closes it.

bool double_click_opens ()
 Get whether double-clicking a branch opens/closes it.

Fl_Color even_shaded_entry_color () const
 Get the color to use for shading even entries.

Nodefind (const char *fullpath)
 Find the entry identified by fullpath.

Nodefind (const char *path, const char *name)
 Find entry name in path path.

Nodefind (unsigned int id)
 Find the entry identified by unique id id.

Nodefind (Node *n)
 Search for Node n in the tree.

Nodefind (Fl_Widget *w)
 Find the entry containing the widget w.

Nodefind_next (const char *fullpath, Node *startNode=NULL)
 Find the next entry identified by fullpath after startNode.

Nodefind_next (const char *path, const char *name)
 Find the next entry name in path path after startNode.

int find_number (const char *fullpath)
 the number of discovered nodes matching path fullpath

int find_number (const char *path, const char *name)
 the number of discovered nodes with name name in path path

const char * find_path (unsigned int id)
 the full path of the entry identified by unique id id, or the empty string if no matching entry was found

const char * find_path (Fl_Widget *w)
 the full path of the entry containing the widget w, or the empty string if no matching entry was found

const char * find_path (Node *n)
 the full path of Node n, or the empty string if n is not in the tree

Nodefirst ()
 the first node in the tree (i.e. the root)

Nodefirst_branch ()
 the first branch encountered in a depth-first traversal of the tree. NULL means there are no branches

Nodefirst_leaf ()
 the first leaf encountered in a depth-first traversal of the tree. NULL means there are no leaves

float frame_rate () const
 Get the frame rate to use during the open/close animation. Use in conjunction with collapse_time().

void frame_rate (float f)
 Set the frame rate to use during the open/close animation. Use in conjunction with collapse_time(). Default is 100 frames per second.

Nodeget_root ()
 a pointer to the root node of the tree

Nodeget_selected (int index)
 the selected Node that is at index among all selected nodes, or NULL if no Node is selected

int handle (int event)
 Override of Fl_Widget::handle.

void horizontal_gap (int g)
 Set the horizontal icon gap for each entry. Default is 2.

int horizontal_gap () const
 Get the horizontal icon gap for each entry.

void insertion_mode (int m)
 Set how entries are inserted into the tree. This can be one of FLU_INSERT_FRONT, FLU_INSERT_BACK, FLU_INSERT_SORTED, FLU_INSERT_SORTED_REVERSE. Default is FLU_INSERT_SORTED.

int insertion_mode ()
 Get how entries are inserted into the tree.

bool inside_entry_area (int x, int y)
 whether the point (x,y) is inside the entry area (not on the scrollbars)

void label (const char *l)
 Set the title of the Tree (also the label for the root entry).

const char * label () const
 Get the title of the Tree (also the label for the root entry).

Nodelast ()
 the last node in the tree

Nodelast_branch ()
 the last branch encountered in a depth-first traversal of the tree. NULL means there are no branches

Nodelast_leaf ()
 the last leaf encountered in a depth-first traversal of the tree. NULL means there are no leaves

Fl_Color leaf_color () const
 Get the default leaf text color.

Fl_Font leaf_font () const
 Get the default leaf text font.

int leaf_size () const
 Get the default leaf text size.

void leaf_icon (Fl_Image *icon)
 Set the default leaf icon to use for all subsequent leaves added to the tree.

void leaf_text (Fl_Color color, Fl_Font font, int size)
 Set the default color, font and size to use for the text of all subsequent leaves added to the tree, Default is FL_BLACK, FL_HELVETICA, 12.

void move_only_same_group (bool b)
 Set whether items can be moved only within their group ( true ) or can be moved anywhere in the tree ( false ). Default is false. Used only when selection_drag_mode() is FLU_DRAG_TO_MOVE.

bool move_only_same_group ()
 Get whether items can be moved only within their group ( true ) or can be moved anywhere in the tree ( false ). Used only when selection_drag_mode() is FLU_DRAG_TO_MOVE.

int num_selected ()
 the number of selected entries

Fl_Color odd_shaded_entry_color () const
 Get the color to use for shading odd entries.

void only_one_open_branch (bool b)
 Set whether only a single branch (except the root branch) is allowed open at a time. Default is false.

bool only_one_open_branch ()
 Get whether only a single branch (except the root branch) is allowed open at a time.

void open (bool b)
 Open or close the root node.

bool open () const
 Is the root node open or closed?

void open_without_children (bool b)
 Set whether you can open/close a branch even if it has no children. Default is false.

bool open_without_children () const
 Get whether you can open/close a branch even if it has no children.

void open_on_select (bool b)
 Set whether selecting a branch also opens it. Default is false.

bool open_on_select () const
 Get whether selecting a branch also opens it.

void print ()
 Print the tree to stdout.

unsigned int remove (const char *fullpath)
 Remove the entry identified by path fullpath from the tree.

unsigned int remove (const char *path, const char *name)
 Remove entry name in path path from the tree.

unsigned int remove (unsigned int id)
 Remove the entry identified by unique id id from the tree.

unsigned int remove (Fl_Widget *w)
 Remove the entry containing the widget w from the tree. Note that the widget is automatically destroyed.

unsigned int remove (Node *n)
 Remove Node n from the tree.

void resize (int X, int Y, int W, int H)
 Override of Fl_Widget::resize.

void root_color (Fl_Color c)
 Convenience routine to set the root label color. See Flu_Tree_Browser::Node::label_color().

Fl_Color root_color ()
 Convenience routine to set the root label color. See Flu_Tree_Browser::Node::label_color().

void root_font (Fl_Font f)
 Convenience routine to set the root label font. See Flu_Tree_Browser::Node::label_font().

Fl_Font root_font ()
 Convenience routine to set the root label font. See Flu_Tree_Browser::Node::label_font().

void root_size (unsigned char s)
 Convenience routine to set the root label size. See Flu_Tree_Browser::Node::label_size().

unsigned char root_size ()
 Convenience routine to set the root label size. See Flu_Tree_Browser::Node::label_size().

void select_all ()
 Select all entries in the tree.

Fl_Color selection_color () const
 Get the color to use when hilighting selected entries.

void selection_color (Fl_Color c)
 Set the color to use when hilighting selected entries. Default is FL_SELECTION_COLOR.

void selection_color (unsigned c)
 Set the color to use when hilighting selected entries. Default is FL_SELECTION_COLOR.

void selection_drag_mode (int m)
 Set how selection is affected when the mouse is dragged. This can be one of FLU_DRAG_IGNORE, FLU_DRAG_TO_SELECT, FLU_DRAG_TO_MOVE. Default is FLU_DRAG_TO_SELECT.

int selection_drag_mode () const
 Get how selection is affected when the mouse is dragged.

void selection_mode (int m)
 Set how individual entries are selected using the mouse. This can be one of FLU_NO_SELECT, FLU_SINGLE_SELECT, FLU_MULTI_SELECT. Default is FLU_MULTI_SELECT.

int selection_mode () const
 Get how individual entries are selected using the mouse.

void select_under_mouse (bool b)
bool select_under_mouse () const
void set_hilighted (Node *n)
 Set which node is hilighted and ready to be selected or unselected. This also scrolls the browser so n is visible.

Nodeset_root (const char *label, Fl_Widget *w=0, bool showLabel=true)
 Set the title of the root of the tree to label. If w is not NULL then that widget is the entry and its label is visible depending on the value of showLabel. Note that the widget is destroyed by the tree/node on clear() or the destructor.

void shaded_entry_colors (Fl_Color even, Fl_Color odd)
 Set the colors to use for shading every other entry. Default is FL_WHITE, FL_WHITE.

void show_branches (bool b)
 Set whether branch entries are visible. Default is true.

bool show_branches () const
 Get whether branch entries are visible.

void show_connectors (bool b)
 Set whether the connectors between entries are visible. Default is true.

bool show_connectors () const
 Get whether the connectors between entries are visible.

void show_root (bool b)
 Set whether the root branch (i.e. the name of the tree) is visible. Default is true.

bool show_root () const
 Get whether the root branch (i.e. the name of the tree) is visible.

void show_leaves (bool b)
 Set whether leaf entries are visible. Default is true.

bool show_leaves () const
 Get whether leaf entries are visible.

void sort ()
 Sort the tree according to insertion_mode().

void unselect_all ()
 Unselect all entries in the tree.

void vertical_gap (int g)
 Set the vertical gap between tree entries. Default is 0.

int vertical_gap () const
 Get the vertical gap between tree entries.

void widget_gap (int g)
 Set the gap between the widget and the icon that precedes it. Default is 2.

int widget_gap () const
 Get the gap between the widget and the icon that precedes it.


Static Public Member Functions

void use_FLU_WIDGET_CALLBACK (bool b)

Protected Member Functions

void timerRedrawCB ()
void timerScrollCB ()
void on_dnd_leave ()
 Descendents can override this to respond to when the mouse has left you during a drag-n-drop.

void on_dnd_release ()
 Descendents can override this to respond to when the mouse is let go during a drag-n-drop (regardless of whether the item was dropped on you).

bool on_dnd_drag (int X, int Y)
 Descendents should override this to indicate whether the currently dragged item is allowed to be dropped on you (for example, if the item can only be dropped at certain locations).

void on_dnd_drop (const Flu_DND_Event *e)
 Descendents should override this to respond to when the dragged object has been dropped on you.

void draw ()

Static Protected Member Functions

void _scrollCB (Fl_Widget *w, void *arg)
void _timerRedrawCB (void *arg)
void _timerScrollCB (void *arg)

Protected Attributes

Fl_Group * scrollBox
Fl_Scrollbar * scrollH
Fl_Scrollbar * scrollV
Fl_Group * _box
Node root
RData rdata
int lastEvent
float autoScrollX
float autoScrollY
bool scrolledTimerOn

Friends

class Node

Detailed Description

This class provides a browser for hierarchical data representation (i.e. a "tree").


Member Function Documentation

Node* Flu_Tree_Browser::add Node n,
const char *  name,
Fl_Widget *  w = 0,
bool  showLabel = true
[inline]
 

Add entry name to node n. If w is not NULL then that widget is the entry and its label is visible depending on the value of showLabel. Note that the widget is destroyed by the tree/node on clear() or the destructor.

If name ends in a slash ("/"), then the entry is added as a branch, else it is added as a leaf

Returns:
a pointer to the Node of the added entry or NULL if the add failed

Node* Flu_Tree_Browser::add const char *  path,
const char *  name,
Fl_Widget *  w = 0,
bool  showLabel = true
 

Add entry name in path path to the tree. If w is not NULL then that widget is the entry and its label is visible depending on the value of showLabel. Note that the widget is destroyed by the tree/node on clear() or the destructor.

If name ends in a slash ("/"), then the entry is added as a branch, else it is added as a leaf

Returns:
a pointer to the Node of the added entry or NULL if the add failed

Node* Flu_Tree_Browser::add const char *  fullpath,
Fl_Widget *  w = 0,
bool  showLabel = true
 

Add the entry specified by fullpath to the tree. If w is not NULL then that widget is the entry and its label is visible depending on the value of showLabel. Note that the widget is destroyed by the tree/node on clear() or the destructor.

If fullpath ends in a slash ("/"), then the entry is added as a branch, else it is added as a leaf

Returns:
a pointer to the Node of the added entry or NULL if the add failed

void Flu_Tree_Browser::allow_dnd bool  b  )  [inline]
 

Set whether drag and drop processing is enabled for the browser. Default is false.

If DND is enabled, either text or instances of Flu_Tree_Browser::DND_Object from outside the tree can be dragged and dropped onto the tree to create a new node. Nodes within the tree can be dragged and dropped (only within the same tree) according to the value of selection_drag_mode().

Node* Flu_Tree_Browser::callback_node  )  const [inline]
 

Get the node on which the last callback happened.

Note:
this node is only guaranteed to be in the tree during the callback. If the callback adds/removes nodes, then this node may have changed

Node* Flu_Tree_Browser::find Fl_Widget *  w  ) 
 

Find the entry containing the widget w.

Returns:
a pointer to the Node of the found entry, or NULL if no matching entry was found

Node* Flu_Tree_Browser::find Node n  )  [inline]
 

Search for Node n in the tree.

Returns:
a pointer to n if it is found, or NULL if it is not in the tree

Node* Flu_Tree_Browser::find unsigned int  id  ) 
 

Find the entry identified by unique id id.

Returns:
a pointer to the Node of the found entry, or NULL if no matching entry was found

Node* Flu_Tree_Browser::find const char *  path,
const char *  name
 

Find entry name in path path.

Returns:
a pointer to the Node of the found entry, or NULL if no matching entry was found

Node* Flu_Tree_Browser::find const char *  fullpath  )  [inline]
 

Find the entry identified by fullpath.

Returns:
a pointer to the Node of the found entry, or NULL if no matching entry was found

Node* Flu_Tree_Browser::find_next const char *  path,
const char *  name
 

Find the next entry name in path path after startNode.

Returns:
a pointer to the Node of the found entry, or NULL if no matching entry was found

Node* Flu_Tree_Browser::find_next const char *  fullpath,
Node startNode = NULL
 

Find the next entry identified by fullpath after startNode.

Returns:
a pointer to the Node of the found entry, or NULL if no matching entry was found

const char* Flu_Tree_Browser::find_path Node n  )  [inline]
 

the full path of Node n, or the empty string if n is not in the tree

Note:
the returned value is only valid until the next time find_path() is called

const char* Flu_Tree_Browser::find_path Fl_Widget *  w  ) 
 

the full path of the entry containing the widget w, or the empty string if no matching entry was found

Note:
the returned value is only valid until the next time find_path() is called

const char* Flu_Tree_Browser::find_path unsigned int  id  ) 
 

the full path of the entry identified by unique id id, or the empty string if no matching entry was found

Note:
the returned value is only valid until the next time find_path() is called

Node* Flu_Tree_Browser::get_selected int  index  ) 
 

the selected Node that is at index among all selected nodes, or NULL if no Node is selected

For example, get_selected(1) will return the first selected node.

unsigned int Flu_Tree_Browser::remove Node n  )  [inline]
 

Remove Node n from the tree.

Returns:
the id of n on successful removal, or 0 if n is not in the tree

unsigned int Flu_Tree_Browser::remove Fl_Widget *  w  ) 
 

Remove the entry containing the widget w from the tree. Note that the widget is automatically destroyed.

Returns:
the unique id of the removed entry, or 0 if no matching entry was found

unsigned int Flu_Tree_Browser::remove unsigned int  id  ) 
 

Remove the entry identified by unique id id from the tree.

Returns:
the unique id of the removed entry, or 0 if no matching entry was found

unsigned int Flu_Tree_Browser::remove const char *  path,
const char *  name
 

Remove entry name in path path from the tree.

Returns:
the unique id of the removed entry, or 0 if no matching entry was found

unsigned int Flu_Tree_Browser::remove const char *  fullpath  ) 
 

Remove the entry identified by path fullpath from the tree.

Returns:
the unique id of the removed entry, or 0 if no matching entry was found

Node* Flu_Tree_Browser::set_root const char *  label,
Fl_Widget *  w = 0,
bool  showLabel = true
 

Set the title of the root of the tree to label. If w is not NULL then that widget is the entry and its label is visible depending on the value of showLabel. Note that the widget is destroyed by the tree/node on clear() or the destructor.

The root icons, color, font and size are set to the current branch icons and text color, font and size

void Flu_Tree_Browser::widget_gap int  g  )  [inline]
 

Set the gap between the widget and the icon that precedes it. Default is 2.

When the callback occurs, you can use callback_reason() to determine exactly what cause the callback and callback_node() to get the node that was affected.


The documentation for this class was generated from the following file:
Generated on Mon Aug 2 10:27:46 2004 for FLTK Utility Library and Widget Collection (FLU) by doxygen 1.3.5