FLTK logo

[Library] r10035 - /branches/branch-1.3/examples

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[Library] r10035 - /branches/branch-1.3/examples [greg.ercolano] Dec 16, 2013  
 
 ------------------------------------------------------------------------
 r10035 | greg.ercolano | 2013-12-16 05:26:44 -0500 (Mon, 16 Dec 2013) | 2 lines
 Changed paths:
    M /branches/branch-1.3/examples/Makefile
    A /branches/branch-1.3/examples/tree-custom-sort.cxx
 
 Added Fl_Tree sort example.
 
 ------------------------------------------------------------------------
Index: branches/branch-1.3/examples/tree-custom-sort.cxx
===================================================================
--- branches/branch-1.3/examples/tree-custom-sort.cxx	(revision 0)
+++ branches/branch-1.3/examples/tree-custom-sort.cxx	(revision 10035)
@@ -0,0 +1,82 @@
+//
+// "$Id$"
+//
+//	Simple Fl_Tree custom (numeric) sort example. - erco 12/16/2013
+//      Demonstrates custom sorting of Fl_Tree items.
+//
+// Copyright 2013 Greg Ercolano.
+// Copyright 1998-2010 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file.  If this
+// file is missing or damaged, see the license at:
+//
+//     http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+//     http://www.fltk.org/str.php
+//
+#include <stdio.h>
+#include <stdlib.h>	/* qsort(3), srand(3).. */
+#include <time.h>	/* time(2) */
+#include <FL/Fl.H>
+#include <FL/Fl_Double_Window.H>
+#include <FL/Fl_Tree.H>
+#include <FL/Fl_Button.H>
+
+Fl_Tree *G_tree = 0;
+
+// Resort the tree
+void MySortCallback(Fl_Widget*, void *data) {
+  int dir = int(long(data));		// forward or reverse
+  Fl_Tree_Item *i = G_tree->root();
+  // Bubble sort
+  for ( int ax=0; ax<i->children(); ax++ ) {
+    for ( int bx=ax+1; bx<i->children(); bx++ ) {
+      long a; sscanf(i->child(ax)->label(), "%ld", &a);
+      long b; sscanf(i->child(bx)->label(), "%ld", &b);
+      switch ( dir ) {
+        case  1: if ( a > b ) { i->swap_children(ax, bx); } break; // fwd
+        case -1: if ( a < b ) { i->swap_children(ax, bx); } break; // rev
+      }
+    }
+  }
+  G_tree->redraw();
+}
+
+int main(int argc, char *argv[]) {
+  // Randomize the random number generator
+  time_t tval; time(&tval);
+  srand((unsigned)tval);
+
+  // Create window with tree
+  Fl::scheme("gtk+");
+  Fl_Double_Window *win = new Fl_Double_Window(250, 600, "Numeric Sort Tree");
+  win->begin();
+  {
+    G_tree = new Fl_Tree(10, 10, win->w()-20, win->h()-60);
+    G_tree->showroot(0);
+
+    // Add 200 random numbers to the tree
+    Fl_Tree_Item *item;
+    char word[50];
+    for ( int t=0; t<200; t++ ) {
+      sprintf(word, "%ld", long((float(rand()) / RAND_MAX) * 1000000));
+      item = G_tree->add(word);
+    }
+
+    // Add some sort buttons
+    Fl_Button *but;
+    but = new Fl_Button(10,   win->h()-40,80,20,"Fwd"); but->callback(MySortCallback, (void*) 1);
+    but = new Fl_Button(20+80,win->h()-40,80,20,"Rev"); but->callback(MySortCallback, (void*)-1);
+  }
+  win->end();
+  win->resizable(win);
+  win->show(argc, argv);
+  return(Fl::run());
+}
+
+//
+// End of "$Id$".
+//

Property changes on: branches/branch-1.3/examples/tree-custom-sort.cxx
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+author date id revision
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Index: branches/branch-1.3/examples/Makefile
===================================================================
--- branches/branch-1.3/examples/Makefile	(revision 10034)
+++ branches/branch-1.3/examples/Makefile	(revision 10035)
@@ -25,6 +25,7 @@
       tree-simple$(EXEEXT) \
       tree-as-container$(EXEEXT) \
       tree-custom-draw-items$(EXEEXT) \
+      tree-custom-sort$(EXEEXT) \
       tree-of-tables$(EXEEXT) \
       wizard-simple$(EXEEXT)
 

Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.