fix textbox size in uicontrol2
[scilab.git] / scilab / modules / gui / demos / cb_uicontrol_plot3d.dem.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2008 - INRIA - Pierre MARECHAL
3 // Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
4 //
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at
9 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10 //
11
12 function uicontrol_plot3d()
13     demo_plot3d = figure( ...
14         "dockable", "off", ...
15         "infobar_visible", "off", ...
16         "toolbar_visible", "off", ...
17         "toolbar", "none", ...
18         "menubar_visible", "on", ...
19         "menubar", "none", ...
20         "default_axes", "off", ...
21         "layout", "border", ...
22         "visible", "off");
23
24     fakeframe_height = 10;
25     demo_plot3d.figure_id       = 100001;
26     demo_plot3d.background      = -2;
27     demo_plot3d.color_map       = jetcolormap(128);
28     demo_plot3d.figure_position = [0 0];
29     demo_plot3d.figure_name     = gettext("Control Plot3d");
30     demo_plot3d.axes_size       = [900 450];
31
32     // New menu
33     h = uimenu(demo_plot3d, ...
34         "label" , gettext("File"));
35
36     uimenu(h, ...
37         "label"     , gettext("Close"), ...
38         "callback"  , "demo_plot3d=get_figure_handle(100001);delete(demo_plot3d);", ...
39         "tag"       , "close_menu");
40
41     demo_viewCode(SCI+ "/modules/gui/demos/cb_uicontrol_plot3d.dem.sci");
42
43     frame_left = uicontrol(demo_plot3d, ...
44         "style", "frame", ...
45         "constraints", createConstraints("border", "left", [250, 0]), ...
46         "border", createBorder("titled", createBorder("line", "lightGray", 1), _("Control Panel"), "center", "below_top", createBorderFont("", 16, "normal"), "black"), ...
47         "backgroundcolor", [1 1 1], ...
48         "layout", "gridbag");
49
50     //angle
51     frame_angle = uicontrol(frame_left, ...
52         "style", "frame", ...
53         "backgroundcolor", [1 1 1], ...
54         "constraints", createConstraints("gridbag", [1, 2, 1, 1], [0, 0], "both", "center"), ...
55         "border", createBorder("titled", createBorder("line", "lightGray", 1), _("Rotation angle"), "center", "top", createBorderFont("", 11, "normal"), "black"), ...
56         "layout", "border");
57
58     uicontrol(frame_angle, ...
59         "style", "slider", ...
60         "backgroundcolor", [1 1 1], ...
61         "value", 70, ...
62         "min", 0, ...
63         "max", 360, ...
64         "sliderstep", [2, 30], ...
65         "callback", "update_plot3d_angle");
66
67     //colormap
68     frame_colormap = uicontrol(frame_left, ...
69         "style", "frame", ...
70         "backgroundcolor", [1 1 1], ...
71         "constraints", createConstraints("gridbag", [1, 3, 1, 1], [0, 0], "both", "center"), ...
72         "border", createBorder("titled", createBorder("line", "lightGray", 1), _("Colormap"), "center", "top", createBorderFont("", 11, "normal"), "black"), ...
73         "layout_options", createLayoutOptions("grid", [3, 1]));
74
75     frame_colormap.layout = "grid";
76
77     uicontrol(frame_colormap, ...
78         "style", "radiobutton", ...
79         "backgroundcolor", [1 1 1], ...
80         "tag", "graycolormap", ...
81         "string", "Graycolormap", ...
82         "groupname", "colormap", ...
83         "callback", "update_colormap");
84
85     uicontrol(frame_colormap, ...
86         "style", "radiobutton", ...
87         "backgroundcolor", [1 1 1], ...
88         "tag", "hotcolormap", ...
89         "string", "Hotcolormap", ...
90         "groupname", "colormap", ...
91         "callback", "update_colormap");
92
93     jet = uicontrol(frame_colormap, ...
94         "tag", "jetcolormap", ...
95         "backgroundcolor", [1 1 1], ...
96         "style", "radiobutton", ...
97         "string", "Jetcolormap", ...
98         "groupname", "colormap", ...
99         "callback", "update_colormap");
100
101     jet.value = 1;
102
103     //background
104     frame_background = uicontrol(frame_left, ...
105         "style", "frame", ...
106         "backgroundcolor", [1 1 1], ...
107         "constraints", createConstraints("gridbag", [1, 4, 1, 1], [0, 0], "both", "center"), ...
108         "border", createBorder("titled", createBorder("line", "lightGray", 1), _("Background Color"), "center", "top", createBorderFont("", 11, "normal"), "black"), ..
109         "layout", "border");
110
111     uicontrol(frame_background, ...
112         "tag", "button", ...
113         "style", "pushbutton", ...
114         "backgroundcolor", [1 1 1], ...
115         "relief", "raised", ...
116         "constraints", createConstraints("border", "center", [30 30]), ...
117         "string", "Color picker", ...
118         "callback", "update_background_color");
119
120     //Show/hide
121     frame_style = uicontrol(frame_left, ...
122         "style", "frame", ...
123         "backgroundcolor", [1 1 1], ...
124         "constraints", createConstraints("gridbag", [1, 5, 1, 1], [1, 0], "both", "center"), ...
125         "border", createBorder("titled", createBorder("line", "lightGray", 1), _("Show / Hide"), "center", "top", createBorderFont("", 11, "normal"), "black"), ...
126         "layout_options", createLayoutOptions("grid", [4, 1]));
127
128     frame_style.layout = "grid";
129
130     uicontrol(frame_style, ...
131         "style", "checkbox", ...
132         "backgroundcolor", [1 1 1], ...
133         "value", 1, ...
134         "string", "Edges", ...
135         "callback", "update_edges_visible");
136
137     uicontrol(frame_style, ...
138         "style", "checkbox", ...
139         "backgroundcolor", [1 1 1], ...
140         "value", 1, ...
141         "string", "Labels", ...
142         "callback", "update_labels_visible");
143
144     uicontrol(frame_style, ...
145         "style", "checkbox", ...
146         "backgroundcolor", [1 1 1], ...
147         "value", 1, ...
148         "string", "Title", ...
149         "callback", "update_title_visible");
150
151     uicontrol(frame_style, ...
152         "style", "checkbox", ...
153         "backgroundcolor", [1 1 1], ...
154         "value", 1, ...
155         "string", "Tics", ...
156         "callback", "update_tics_visible");
157
158     //Title
159     frame_style = uicontrol(frame_left, ...
160         "style", "frame", ...
161         "backgroundcolor", [1 1 1], ...
162         "constraints", createConstraints("gridbag", [1, 6, 1, 1], [1, 0.1], "both", "center"), ...
163         "border", createBorder("titled", createBorder("line", "lightGray", 1), _("Title"), "center", "top", createBorderFont("", 11, "normal"), "black"), ...
164         "layout", "border");
165
166     uicontrol(frame_style, ...
167         "style", "edit", ...
168         "backgroundcolor", [1 1 1], ...
169         "string", "My Beautiful Plot", ...
170         "callback", "update_title_string", ...
171         "tag", "title");
172
173     frame_style = uicontrol(frame_left, ...
174         "style", "frame", ...
175         "backgroundcolor", [1 1 1], ...
176         "constraints", createConstraints("gridbag", [1, 7, 1, 1], [1, 1], "both", "center"));
177
178     //Plot
179     frame_right = uicontrol(demo_plot3d, ...
180         "style", "frame", ...
181         "layout", "border", ...
182         "constraints", createConstraints("border", "center"));
183
184
185     newaxes(frame_right);
186     demo_plot3d.immediate_drawing = "off";
187     plot3d();
188
189     a = gca();
190     a.tag                   = "plot";
191     a.title.text            = "My Beautiful Plot";
192     a.title.font_size       = 5;
193     a.rotation_angles(1)    = 70;
194
195     a.x_label.text          = "X";
196     a.y_label.text          = "Y";
197     a.z_label.text          = "Z";
198
199     demo_plot3d.immediate_drawing     = "on";
200
201     demo_plot3d.visible     = "on";
202 endfunction
203
204
205
206
207
208 function update_plot3d_angle()
209
210     my_plot_axes = gca();
211     my_new_angle = get(gcbo,"value");
212
213     if( my_new_angle>0 & my_new_angle<360 ) then
214         my_plot_axes.rotation_angles(2) = my_new_angle;
215     end
216
217 endfunction
218
219 function update_colormap()
220
221     my_figure    = gcf();
222     my_plot_axes = gca();
223
224     my_cur_color_map    = my_figure.color_map;
225     my_cur_bg_color_id  = my_plot_axes.background;
226
227     if my_cur_bg_color_id > 32 then
228         my_cur_bg_color_r = my_cur_color_map(my_cur_bg_color_id,1);
229         my_cur_bg_color_g = my_cur_color_map(my_cur_bg_color_id,2);
230         my_cur_bg_color_b = my_cur_color_map(my_cur_bg_color_id,3);
231     end
232
233     if get(gcbo, "tag") == "jetcolormap" then
234         my_figure.color_map = jetcolormap(128);
235     elseif get(gcbo, "tag") == "hotcolormap" then
236         my_figure.color_map = hotcolormap(128);
237     elseif get(gcbo, "tag") == "graycolormap" then
238         my_figure.color_map = graycolormap(128);
239     end
240
241     if my_cur_bg_color_id > 32 then
242
243         color_id = color( ..
244         my_cur_bg_color_r*255, ..
245         my_cur_bg_color_g*255, ..
246         my_cur_bg_color_b*255  ..
247         );
248
249         my_plot_axes.background = color_id;
250     end
251
252 endfunction
253
254 function update_background_color()
255
256     // Lancement du colorchooser
257     [my_red, my_green, my_blue] = uigetcolor();
258
259     if( (my_red<>[]) & (my_green<>[]) & (my_blue<>[]) ) then
260
261         set(gcbo,"BackgroundColor",[ my_red/255 my_green/255 my_blue/255 ]);
262
263         my_plot_axes            = gca();
264         color_id                = color(my_red,my_green,my_blue);
265         my_plot_axes.background = color_id;
266
267     end
268
269 endfunction
270
271 function update_tics_visible()
272
273     my_plot_axes = gca();
274
275     if get(gcbo,"value") == 0 then
276         my_plot_axes.axes_visible = ["off" "off" "off" ];
277     else
278         my_plot_axes.axes_visible = ["on" "on" "on" ];
279     end
280
281 endfunction
282
283 function update_title_visible()
284
285     my_plot_axes = gca();
286
287     if get(gcbo,"value") == 0 then
288         my_plot_axes.title.visible = "off";
289     else
290         my_plot_axes.title.visible = "on";
291     end
292
293 endfunction
294
295 function update_labels_visible()
296
297     my_plot_axes = gca();
298
299     if get(gcbo,"value") == 0 then
300         my_plot_axes.x_label.visible = "off";
301         my_plot_axes.y_label.visible = "off";
302         my_plot_axes.z_label.visible = "off";
303     else
304         my_plot_axes.x_label.visible = "on";
305         my_plot_axes.y_label.visible = "on";
306         my_plot_axes.z_label.visible = "on";
307     end
308
309 endfunction
310
311 function update_edges_visible()
312
313     my_plot_axes = gca();
314     my_plot3d    = my_plot_axes.children($);
315
316     if get(gcbo,"value") == 0 then
317         my_plot3d.color_mode = -1;
318     else
319         my_plot3d.color_mode = +1;
320     end
321
322 endfunction
323
324 function update_title_string
325
326     my_plot_axes = gca();
327     my_plot_axes.title.text = get(gcbo,"string");
328
329 endfunction