d52853ef9998d1b135967bf805628ef79196e6d2
[scilab.git] / scilab / modules / scicos / macros / scicos_scicos / hilite_path.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 hilite_path(path,mess,with_intermediates)
23     //hilite a block included in a superblock hierarchy and displays a
24     //message.   If required all the intermediate superblocs are displayed
25     //first entry of the path must be a bloc of currently opened diagram
26
27     if argn(2)<2 then mess=" ",end
28
29     // retrieve the root diagram
30     if isdef("scs_m_s") then
31         diagram = scs_m_s;
32     elseif isdef("scs_m") then
33         diagram = scs_m;
34     else
35         error("scs_m variable does not exist");
36     end
37
38     uid = []; // empty uid path
39
40     // construct the uid path from the index path
41     for i = 1:length(path)
42         index = path(i);
43         if typeof(diagram.objs(index)) == "Block" then
44             o = diagram.objs(index);
45
46             // masked superblock case
47             if isempty(o.model.uid) then
48                 // we abort because blocks do not have uuid inside
49                 // masked superblocks
50                 break;
51             end
52
53             // normal case
54             uid($+1) = diagram.objs(index).model.uid + "";
55
56             if diagram.objs(index).model.sim == "super" then
57                 diagram = diagram.objs(index).model.rpar;
58             else
59                 break;
60             end
61         end
62     end
63
64     if uid <> [] then
65         warnBlockByUID(uid, strcat(mess, " "));
66     end
67 endfunction
68