From 6871a6512ae600b98ddf7a45dc24aff1d7ff4275 Mon Sep 17 00:00:00 2001 From: Greg Ercolano Date: Wed, 4 May 2011 02:59:50 +0000 Subject: Fl_Tree mods for handling escaped item menu names. Docs clarified. Also, tree-simple example's callback handler brought up to date. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8632 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- examples/tree-simple.cxx | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'examples') diff --git a/examples/tree-simple.cxx b/examples/tree-simple.cxx index d7c13ab23..df6722b2d 100644 --- a/examples/tree-simple.cxx +++ b/examples/tree-simple.cxx @@ -31,12 +31,30 @@ #include // Tree's callback -// Invoked whenever someone clicks an item. +// Invoked whenever an item's state changes. // void TreeCallback(Fl_Widget *w, void *data) { - Fl_Tree *tree = (Fl_Tree*)w; - Fl_Tree_Item *item = (Fl_Tree_Item*)tree->item_clicked(); - fprintf(stderr, "TreeCallback: item clicked='%s'\n", (item)?item->label():"???"); + Fl_Tree *tree = (Fl_Tree*)w; + Fl_Tree_Item *item = (Fl_Tree_Item*)tree->callback_item(); + if ( ! item ) return; + switch ( tree->callback_reason() ) { + case FL_TREE_REASON_SELECTED: { + char pathname[256]; + tree->item_pathname(pathname, sizeof(pathname), item); + fprintf(stderr, "TreeCallback: Item selected='%s', Full pathname='%s'\n", item->label(), pathname); + break; + } + case FL_TREE_REASON_DESELECTED: + // fprintf(stderr, "TreeCallback: Item '%s' deselected\n", item->label()); + break; + case FL_TREE_REASON_OPENED: + // fprintf(stderr, "TreeCallback: Item '%s' opened\n", item->label()); + break; + case FL_TREE_REASON_CLOSED: + // fprintf(stderr, "TreeCallback: Item '%s' closed\n", item->label()); + default: + break; + } } int main(int argc, char *argv[]) { @@ -57,9 +75,15 @@ int main(int argc, char *argv[]) { tree->add("Simpsons/Marge"); tree->add("Simpsons/Bart"); tree->add("Simpsons/Lisa"); + tree->add("Holidays/01\\/01 New Years"); + tree->add("Holidays/02\\/15 Valentine's Day"); + tree->add("Holidays/05\\/05 Cinco de Mayo"); + tree->add("Holidays/07\\/04 Independence Day"); + tree->add("Holidays/12\\/25 Christmas"); - // Start with one of the items closed + // Start with some items closed tree->close("Simpsons"); + tree->close("Holidays"); } win->end(); win->resizable(win); -- cgit v1.2.3