* Bug 15067 fixed: adds D&D of XMI files
[scilab.git] / scilab / modules / graphics / macros / datatips / datatipSetStyle.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2011 - INRIA - Serge Steer <serge.steer@inria.fr>
3 //
4 // Copyright (C) 2012 - 2016 - Scilab Enterprises
5 //
6 // This file is hereby licensed under the terms of the GNU GPL v2.0,
7 // pursuant to article 5.3.4 of the CeCILL v.2.1.
8 // This file was originally licensed under the terms of the CeCILL v2.1,
9 // and continues to be available under such terms.
10 // For more information, see the COPYING file which you should have received
11 // along with this program.
12
13 function datatipSetStyle(curve_handle,t,boxed,labeled)
14     //changes the tips interpolation modes for a given curve
15     // curve_handle : a handle on a polyline
16     // t            : 1 "square mark" or 2 "Directional arrow"
17     // boxed        : a boolean
18     // labeled      : a boolean
19     if argn(2)<1 then
20         error(msprintf(_("%s: Wrong number of input argument(s): At least %d expected.\n"),...
21         "datatipSetType",1))
22     end
23     if argn(2)<4 then labeled=%t,end
24     if argn(2)<3 then boxed=%t,end
25
26     if type(curve_handle)<>9|size(curve_handle,"*")<>1|or(curve_handle.type<>"Polyline") then
27         error(msprintf(_("%s: Wrong type for input argument #%d: A ''%s'' handle expected.\n"),...
28         "datatipSetType",1,"Polyline"))
29     end
30
31     if argn(2)==1 then
32         items=[_("Square mark, boxed label")
33         _("Square mark, simple label")
34         _("Square mark, no label")
35         _("Directional arrow, boxed label")
36         _("Directional arrow, simple label")
37         _("Directional arrow, no label")
38         ];
39         sel=x_choose(items,_("Select tip style"))
40         if sel==0 then return,end
41         t=floor(sel/3)+1
42         boxed=(modulo(sel,3)==1)
43         labeled=~(modulo(sel,3)==0)
44     else
45         if type(t)<>1|size(t,"*")<>1 then
46             error(msprintf(_("%s: Wrong type for input argument #%d: A scalar expected.\n"),...
47             "datatipSetType",2))
48         end
49         if and(t<>[1 2]) then
50             error(msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),...
51             "datatipSetType",2,"1,2"))
52         end
53         if type(boxed)<>4 |size(t,"*")<>1 then
54             error(msprintf(_("%s: Wrong type for input argument #%d: A boolean scalar expected.\n"),...
55             "datatipSetType",3))
56         end
57         if type(labeled)<>4 |size(labeled,"*")<>1 then
58             error(msprintf(_("%s: Wrong type for input argument #%d: A boolean scalar expected.\n"),...
59             "datatipSetType",4))
60         end
61
62     end
63     style=[t bool2s(boxed) bool2s(labeled)]
64
65     ud=datatipGetStruct(curve_handle)
66     if typeof(ud)<>"datatips" then;
67         ud=datatipGetStruct(curve_handle)
68     end
69     if or(ud.style<>style) then
70
71         fig=curve_handle.parent
72         while fig.type<>"Figure" then fig=fig.parent,end
73         id=fig.immediate_drawing;
74         fig.immediate_drawing="off"
75         tips=ud.tips.children
76         for i=1:size(tips,"*")
77             datatipSetTipStyle(tips(i),style)
78         end
79         fig.immediate_drawing=id
80         ud.style=style
81         datatipSetStruct(curve_handle,ud)
82     end
83
84 endfunction