Index: multi-dboard.scm
==================================================================
--- multi-dboard.scm
+++ multi-dboard.scm
@@ -269,11 +269,12 @@
(tabs (data-tabs window-dat))
(tab-ids (hash-table-keys tabs))
(current-tab (if (null? tab-ids)
#f
(hash-table-ref tabs (car tab-ids))))
- (current-tree (if (null? tab-ids) #f (tab-tree current-tab))))
+ (current-tree (if (null? tab-ids) #f (tab-tree current-tab)))
+ (seen-nodes (make-hash-table)))
;; now for each area in the window gather the data
(for-each
(lambda (area-name)
(print "Processing for area-name " area-name)
(let* ((area-dat (hash-table-ref areas area-name))
@@ -284,11 +285,17 @@
(lambda (run-id)
(let* ((run (hash-table-ref runs run-id))
(target (rundat-target run))
(runname (rundat-runname run)))
(if current-tree
- (tree:add-node current-tree area-name (append (string-split target "/")(list runname))))
+ (let* ((partial-path (append (string-split target "/")(list runname)))
+ (full-path (cons area-name partial-path)))
+ (if (not (hash-table-exists? seen-nodes full-path))
+ (begin
+ (print "INFO: Adding node " partial-path " to section " area-name)
+ (tree:add-node current-tree "Areas" full-path)
+ (hash-table-set! seen-nodes full-path #t)))))
))
(hash-table-keys runs))))
(hash-table-keys areas))))
(hash-table-keys *windows*)))
@@ -344,10 +351,14 @@
;; - - - -
(define (dashboard:tree-browser data adat window-id)
;; (iup:split
(let* ((tb (iup:treebox
+ #:value 0
+ #:title "Areas"
+ #:expand "YES"
+ #:addexpanded "NO"
#:selection-cb
(lambda (obj id state)
;; (print "obj: " obj ", id: " id ", state: " state)
(let* ((tree-path (tree:node->path obj id))
(area (car tree-path))
Index: tests/Makefile
==================================================================
--- tests/Makefile
+++ tests/Makefile
@@ -156,15 +156,15 @@
test11 :
cd fullrun;time (for a in 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 ;do (megatest -test-paths -target %/%/% > /dev/null ) & done; wait; )
build : ../*.scm
- if killall mtest -v ;then sleep 5;killall mtest -v -9;fi
cd ..;make -j && make install
touch build
cleanstart :
+ if killall mtest -v ;then sleep 5;killall mtest -v -9;fi;true
killall mtest -v;if [ ! $$? ];then sleep 5;killall mtest -v -9;fi
minsetup : build
mkdir -p mintest/runs mintest/links
cd mintest;$(MEGATEST) -stop-server 0
Index: tree.scm
==================================================================
--- tree.scm
+++ tree.scm
@@ -65,43 +65,45 @@
(loop hed tal depth (+ nodenum 1)))))
#f))))
;; top is the top node name zeroeth node VALUE=0
(define (tree:add-node obj top nodelst #!key (userdata #f))
- (if (or (not (string? (iup:attribute obj "TITLE0")))
- (string-null? (iup:attribute obj "TITLE0")))
- (iup:attribute-set! obj "ADDBRANCH0" top))
- (cond
- ((not (equal? top (iup:attribute obj "TITLE0")))
- (print "ERROR: top name " top " doesn't match " (iup:attribute obj "TITLE0")))
- ((null? nodelst))
- (else
- (let loop ((hed (car nodelst))
- (tal (cdr nodelst))
- (depth 1)
- (pathl (list top)))
- ;; Because the tree dialog changes node numbers when
- ;; nodes are added or removed we must look up nodes
- ;; each and every time. 0 is the top node so default
- ;; to that.
- (let* ((newpath (append pathl (list hed)))
- (parentnode (tree:find-node obj pathl))
- (nodenum (tree:find-node obj newpath)))
- ;; Add the branch under lastnode if not found
- (if (not nodenum)
- (begin
- (iup:attribute-set! obj (conc "ADDBRANCH" parentnode) hed)
+ (let ((curr-top (iup:attribute obj "TITLE0")))
+ (if (or (not (string? curr-top))
+ (string-null? curr-top)
+ (string-match "^\\s*$" curr-top))
+ (iup:attribute-set! obj "ADDBRANCH0" top))
+ (cond
+ ((not (equal? top (iup:attribute obj "TITLE0")))
+ (print "ERROR: top name " top " doesn't match " (iup:attribute obj "TITLE0")))
+ ((null? nodelst))
+ (else
+ (let loop ((hed (car nodelst))
+ (tal (cdr nodelst))
+ (depth 1)
+ (pathl (list top)))
+ ;; Because the tree dialog changes node numbers when
+ ;; nodes are added or removed we must look up nodes
+ ;; each and every time. 0 is the top node so default
+ ;; to that.
+ (let* ((newpath (append pathl (list hed)))
+ (parentnode (tree:find-node obj pathl))
+ (nodenum (tree:find-node obj newpath)))
+ ;; Add the branch under lastnode if not found
+ (if (not nodenum)
+ (begin
+ (iup:attribute-set! obj (conc "ADDBRANCH" parentnode) hed)
;; ERROR? ADDING DATA TO PARENT, DONT WE WANT IT ON CREATED NODE?
- (if userdata
- (iup:attribute-set! obj (conc "USERDATA" parentnode) userdata))
- (if (null? tal)
- #t
- ;; reset to top
- (loop (car nodelst)(cdr nodelst) 1 (list top))))
- (if (null? tal) ;; if null here then this path has already been added
- #t
- (loop (car tal)(cdr tal)(+ depth 1) newpath))))))))
+ (if userdata
+ (iup:attribute-set! obj (conc "USERDATA" parentnode) userdata))
+ (if (null? tal)
+ #t
+ ;; reset to top
+ (loop (car nodelst)(cdr nodelst) 1 (list top))))
+ (if (null? tal) ;; if null here then this path has already been added
+ #t
+ (loop (car tal)(cdr tal)(+ depth 1) newpath)))))))))
(define (tree:node->path obj nodenum)
(let loop ((currnode 0)
(path '()))
(let* ((node-depth (string->number (iup:attribute obj (conc "DEPTH" currnode))))