bbf470081b29d5ac4b4e579b60df13a24a639d0f
[scilab.git] / scilab / modules / demo_tools / macros / demo_gui.sci
1 //
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2008 - INRIA - Pierre MARECHAL
4 // Copyright (C) 2012 - DIGITEO - Vincent COUVERT
5 // Copyright (C) 2014 - Scilab Enterprises - Anais AUBERT
6 //
7 // Copyright (C) 2012 - 2016 - Scilab Enterprises
8 //
9 // This file is hereby licensed under the terms of the GNU GPL v2.0,
10 // pursuant to article 5.3.4 of the CeCILL v.2.1.
11 // This file was originally licensed under the terms of the CeCILL v2.1,
12 // and continues to be available under such terms.
13 // For more information, see the COPYING file which you should have received
14 // along with this program.
15 //
16
17 function demo_gui()
18
19     global demolist; // Demos list is defined in scilab.start
20     global demolistlock;
21     if isempty(demolist) then
22         if isempty(demolistlock) then
23             demolistlock = %t;
24             // we load scilab demos only when it is required
25             modules = getmodules();
26             for i=1:size(modules,"*")
27                 if isfile("SCI/modules/"+modules(i)+"/demos/" + modules(i) + ".dem.gateway.sce") then
28                     exec("SCI/modules/"+modules(i)+"/demos/" + modules(i) + ".dem.gateway.sce",-1);
29                 end
30             end
31             clear demolistlock;
32             clearglobal demolistlock;
33         end
34     end
35
36     // define a local demolist variable
37     tmp = demolist;
38     clear demolist   // The global one must stay in en_US
39     demolist = gettext(tmp);
40
41     if get("scilab_demo_fig") <> [] then
42         set("scilab_demo_fig", "visible", "on");
43         return;
44     end
45
46
47     // Figure creation
48     // =========================================================================
49     // We get the user Preferences for the GUI: dockable / not dockable
50     File = SCIHOME + "/XConfiguration.xml";
51     r = getPreferencesValue("//general/demonstrations/body/demos","demoGUIisDockable", File);
52
53     // We tune accordingly the predefined demo GUI
54     File = SCI + "/modules/demo_tools/gui/demo_gui.xml";
55     File2 = TMPDIR + "/demo_gui_dockable.xml";
56     if r=="checked" then
57         if ~isfile(File2) then
58             r = copyfile(File, File2);
59             doc = xmlRead(File2);
60             setPreferencesValue("/scilabgui/figure", ..
61                                 ["dockable" "on"
62                                  "infobar_visible" "on"
63                                  "menubar" "figure"
64                                  "menubar_visible" "on"]', doc);
65             xmlWrite(doc);
66             xmlDelete(doc);
67         end
68         File = File2;
69     end
70
71     // We load the preset GUI
72     demo_fig = loadGui(File);
73     demo_fig.figure_name = _("Demonstrations");
74
75
76     // Parameters
77     // =========================================================================
78     demo_fig.userdata = struct();
79     demo_fig.userdata.frame_number = 1;      // Frame number
80     demo_fig.userdata.subdemolist = [];
81
82     lst_vars_locals = ["%h_delete";
83     "demo_fig";
84     "get_figure_handle";
85     "subdemolist";
86     "demolistlock";
87     "resize_demo_gui";
88     "demo_gui_update";
89     "demo_gui"];
90
91     clear_vars_str = strcat("clear " + lst_vars_locals, ";") + ";";
92
93     callback_close_str = "delete(get(""scilab_demo_fig""));";
94     callback_close_str = callback_close_str + clear_vars_str + "clearglobal demolistlock;";
95
96     b = get("frame_1", "border");
97     b.title = _("Demonstrations");
98     set("frame_1", "border", b);
99     set("listbox_1", "string", "<html>"+demolist(:, 1)+" &#x2023; </html>");
100     set("listbox_1", "userdata", demolist);
101
102     demo_fig.closerequestfcn = callback_close_str;
103
104     demo_fig.visible = "on"; // Display now
105
106 endfunction
107