summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2010-01-10 22:37:56 +0000
committerMatthias Melcher <fltk@matthiasm.com>2010-01-10 22:37:56 +0000
commit3d5d2b54f23901ccd11641f4df95b5c6a4c10664 (patch)
tree1e6a7cfd363d39733e9d50776e9c42c829c08959 /src
parenta0eb792209e5d597ce350ef16d430352b6fdcfc1 (diff)
Added a function to copy an entire Fl_Preferences database into an Fl_Tree view. This will break IDEs that do not have Fl_Tree and Fl_Table added yet!
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6992 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Preferences.cxx29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx
index 2a58adf40..c7588d96d 100644
--- a/src/Fl_Preferences.cxx
+++ b/src/Fl_Preferences.cxx
@@ -28,6 +28,7 @@
#include <FL/Fl.H>
#include <FL/Fl_Preferences.H>
+#include <FL/Fl_Tree.H>
#include <FL/filename.H>
#include <stdio.h>
@@ -334,6 +335,15 @@ Fl_Preferences::~Fl_Preferences()
/**
+ Copy the databse hierarchy to an Fl_Tree browser from this node down.
+ */
+char Fl_Preferences::copyTo(Fl_Tree *tree)
+{
+ return node->copyTo(tree, tree->root());
+}
+
+
+/**
Returns the number of groups that are contained within a group.
\return 0 for no groups at all
@@ -1601,6 +1611,25 @@ char Fl_Preferences::Node::remove()
return ( nd != 0 );
}
+char Fl_Preferences::Node::copyTo(Fl_Tree *tree, Fl_Tree_Item *ti)
+{
+ ti->label(name());
+ ti->user_data(this);
+ Node *nd = child_;
+ for ( ; nd; nd = nd->next_) {
+ Fl_Tree_Item *tic = tree->insert(ti, 0, 0);
+ nd->copyTo(tree, tic);
+ tic->close();
+ }
+ int i, n = nEntry;
+ for (i=0; i<n; i++) {
+ char buf[80];
+ const char *name = entry[i].name;
+ const char *value = entry[i].value;
+ fl_snprintf(buf, 80, "%s: %s", name, value);
+ Fl_Tree_Item *tic = tree->add(ti, buf);
+ }
+}
//
// End of "$Id$".