* Bug 12345: tree_show() moved [gui] => [data_structures]
[scilab.git] / scilab / modules / data_structures / macros / tree_show.sci
1 //  Scicos
2 //
3 //  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 //
19 // See the file ../license.txt
20 //
21
22 function tree_show(x,titletop)
23
24     if argn(2) < 1 then
25         error(sprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "tree_show", 1, 2));
26     end
27
28     if type(x)<>16 & type(x)<>17 & type(x)<>15 & type(x)<>128 then
29         error("Wrong type; input must be a list or an Xcos object.")
30     end
31
32     //-- tt = ["set BWpath [file dirname '"$env(SCIPATH)/modules/tclsci/tcl/BWidget-1.8.0'"] "
33     //--       "if {[lsearch $auto_path $BWpath]==-1} { set auto_path [linsert $auto_path 0 $BWpath] }"
34     //--       "package require BWidget 1.8.0"
35     //-- //      'proc ppx {label} {global xmind; set xmind $label;ScilabEval '"%tcl_par=''1'''"}'
36     //-- //      'proc qqx {label} {global xmind; set xmind $label;ScilabEval '"%tcl_par=''3'''"}'
37     //--       'catch {destroy .ss}'
38     //--       'toplevel .ss'
39     //--       'scrollbar .ss.ysb -command {.ss.t yview}'
40     //--       'scrollbar .ss.xsb -command {.ss.t xview} -orient horizontal'
41     //--       'Tree .ss.t -xscrollcommand '".ss.xsb set'" -yscrollcommand '".ss.ysb set'" "+...
42     //--       " -width 30'
43     //--       'grid .ss.t .ss.ysb -sticky nsew'
44     //--       ' grid .ss.xsb -sticky ew'
45     //--       ' grid rowconfig    .ss 0 -weight 1'
46     //--       ' grid columnconfig .ss 0 -weight 1'
47     //--      ];
48
49     //-- for i=1:size(tt,1)
50     //--   TCL_EvalStr(tt(i))
51     //-- end
52
53
54     //-- if argn(2)>1 then
55     //--    tt = 'wm title .ss {'+titletop+'}';
56     //-- elseif type(x)<>15 then
57     //--    v = getfield(1,x);
58     //--    tt = 'wm title .ss '+v(1);
59     //-- else
60     //--    tt = 'wm title .ss list';
61     //-- end
62
63     //-- TCL_EvalStr(tt)
64     Path = "root"
65     tree = uiCreateNode("Root");
66     tree = crlist3(x,Path, tree);
67     uiDisplayTree(tree);
68
69     //-- TCL_EvalStr(' .ss.t bindText <Double-1> {ppx}')
70     //-- TCL_EvalStr(' .ss.t bindText <3> {qqx}')
71 endfunction
72
73
74 function java = crlist3(x,Path, java)
75     if type(x)==15 then
76         II=1:size(x);v=string(II);
77     else
78         v=getfield(1,x);
79         if type(x)==17 & v(1)=="st" then
80             II=3:size(v,"*");
81         else
82             II=2:size(v,"*");
83         end
84     end
85     for i=II
86         path=Path+","+string(i)
87         titre=v(i);
88         o=getfield(i,x);
89         if type(o)==16 | type(o)==17 | type(o)==128 then
90             w=getfield(1,o);
91             titre2=titre+" ("+w(1)+")";
92             //--        TCL_EvalStr('.ss.t insert end '+Path+' '+path+' -image [Bitmap::get folder] -text {'+titre2+'}')
93             currentNode = uiCreateNode(titre2);
94             currentNode = crlist3(o,path,currentNode); //* recursive
95             java = uiConcatTree(java, currentNode);
96
97         elseif type(o)==15 then
98             titre2=titre;
99             //--        TCL_EvalStr('.ss.t insert end '+Path+' '+path+' -image [Bitmap::get folder] -text {'+titre2+'}')
100             currentNode = uiCreateNode(titre2);
101             currentNode = crlist3(o,path,currentNode); //* recursive
102             java = uiConcatTree(java, currentNode);
103         else
104             try
105                 if size(o, "*") > 40 then
106                     tts = typeof(o) + " of size " + sci2exp(size(o))
107                 else
108                     tts = sprintf("%s", sci2exp(o))
109                 end,
110             catch
111                 tts = typeof(o);
112             end
113             titre2=titre+": "+tts  ;
114             //--       TCL_EvalStr('set yy {'+titre2+'}')
115             //--       TCL_EvalStr('.ss.t insert end '+Path+' '+path+' -text $yy')
116             java = uiConcatTree(java, uiCreateNode(titre2));
117         end
118     end
119
120 endfunction
121