prevents open multiple atomsGui
[scilab.git] / scilab / modules / atoms / macros / atoms_gui / atomsGui.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2009 - DIGITEO - Vincent COUVERT
3 // Copyright (C) 2010 - DIGITEO - Pierre MARECHAL
4 // Copyright (C) 2012 - DIGITEO - Allan CORNET
5 // Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
6 //
7 // This file must be used under the terms of the CeCILL.
8 // This source file is licensed as described in the file COPYING, which
9 // you should have received as part of this distribution. The terms
10 // are also available at
11 // http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
12
13 function atomsGui()
14     creation = %f;
15     if creation then
16         figwidth = 900;
17         figheight = 600;
18         defaultFontSize = 12;
19
20         f = figure( ...
21         "dockable", "off" , ...
22         "infobar_visible", "off", ...
23         "toolbar_visible", "off", ...
24         "toolbar", "none", ...
25         "menubar_visible", "on", ...
26         "menubar", "none", ...
27         "default_axes", "off", ...
28         "tag", "atomsFigure", ...
29         "visible", "off", ...
30         "icon", "software-update-notinstalled", ...
31         "position", [0 0 figwidth figheight], ...
32         "layout", "border");
33
34         h = uimenu( ...
35         "parent", f, ...
36         "tag", "home");
37
38         // Menu File:Installed Modules
39         uimenu( ...
40         "parent", h, ...
41         "callback", "cbAtomsGui", ...
42         "tag", "homeMenu");
43
44         // Menu File:Update List of Packages
45         uimenu( ...
46         "parent", h, ...
47         "callback", "xinfo(_(''Updating the list of packages. Please wait... until Done.''));" + ...
48         "atomsSystemUpdate();" + ...
49         "xinfo(_(''Update done.''));" , ...
50         "tag", "updatePackages");
51
52         // Menu File:Close
53         uimenu( ...
54         "parent", h, ...
55         "callback", "cbAtomsGui", ...
56         "tag", "closeMenu");
57
58         // Menu ?
59         h = uimenu( ...
60         "parent", f, ...
61         "tag", "help");
62
63         // Menu ?:Atoms Help...
64         uimenu( ...
65         "parent", h, ...
66         "callback", "cbAtomsGui", ...
67         "tag", "helpMenu");
68
69         MainFrame = uicontrol(f, ...
70         "Style", "frame", ...
71         "background", [1 1 1], ...
72         "Tag", "MainFrame");
73         MainFrame.layout_options = createLayoutOptions("border", [5, 5]);
74         MainFrame.layout = "border";
75
76         //Left frame + listbox
77         LeftFrame = uicontrol(MainFrame, ...
78         "Style", "frame", ...
79         "background", [1 1 1], ...
80         "border", createBorder("titled", createBorder("line", "black", 1), ""), ...
81         "constraints", createConstraints("border", "left", [300 0]), ...
82         "Tag", "LeftFrame");
83         LeftFrame.layout = "border";
84
85
86         LeftListbox = uicontrol(LeftFrame, ...
87         "Style" , "listbox", ...
88         "FontSize", defaultFontSize, ...
89         "String", "", ...
90         "Callback", "cbAtomsGui", ...
91         "Tag", "LeftListbox");
92
93         //layer right frame
94         LayerFrame = uicontrol(MainFrame, ...
95         "style", "layer", ...
96         "constraints", createConstraints("border", "center"), ...
97         "tag", "LayerFrame");
98
99         //1st layer, description module
100         DescFrame = uicontrol(LayerFrame, ...
101         "style", "frame", ...
102         "background", [1 1 1], ...
103         "border", createBorder("titled", createBorder("line", "black", 1), "", "", "", createBorderFont("", 14, "normal")), ...
104         "layout", "border", ...
105         "tag", "DescFrame");
106
107         Desc = uicontrol(DescFrame, ...
108         "Style", "text", ...
109         "background", [1 1 1], ...
110         "FontSize", defaultFontSize, ...
111         "string", [""], ...
112         "min", 0, ...
113         "max", 2, ...
114         "Tag", "Desc");
115
116         ButtonFrame = uicontrol(DescFrame, ...
117         "style", "frame", ...
118         "backgroundcolor", [1 1 1], ...
119         "constraints", createConstraints("border", "bottom"));
120         ButtonFrame.layout_options = createLayoutOptions("grid", [1 4], [20, 0]);
121         ButtonFrame.layout = "grid";
122
123         backButton = uicontrol(ButtonFrame, ...
124         "Style" , "pushbutton", ...
125         "Callback", "cbAtomsGui", ...
126         "Enable", "on", ...
127         "Tag", "backButton");
128
129         removeButton = uicontrol(ButtonFrame, ...
130         "Style" , "pushbutton", ...
131         "Callback", "cbAtomsGui", ...
132         "Enable", "off", ...
133         "Tag", "removeButton");
134
135         installButton = uicontrol(ButtonFrame, ...
136         "Style" , "pushbutton", ...
137         "Callback", "cbAtomsGui", ...
138         "Enable", "off", ...
139         "Tag", "installButton");
140
141         autoloadCheck = uicontrol(ButtonFrame, ...
142         "Style" , "checkbox", ...
143         "background", [1 1 1], ...
144         "Callback", "cbAtomsGui", ...
145         "Enable", "on", ...
146         "Tag", "autoloadCheck");
147
148         //2nd layer, installed modules
149         HomeFrame = uicontrol(LayerFrame, ...
150         "style", "frame", ...
151         "background", [1 1 1], ...
152         "border", createBorder("titled", createBorder("line", "black", 1), ""), ...
153         "layout", "border", ...
154         "tag", "HomeFrame");
155
156         HomeListbox = uicontrol(HomeFrame,..
157         "Style", "listbox",..
158         "Background", [1 1 1],..
159         "FontSize", defaultFontSize,..
160         "Callback", "cbAtomsGui", ..
161         "Tag", "HomeListbox");
162
163         //message frame
164         msgFrame = uicontrol(MainFrame, ...
165         "style", "frame", ...
166         "Background", [1 1 1], ...
167         "layout", "border", ...
168         "border", createBorder("titled", createBorder("line", "black", 1), ""), ...
169         "constraints", createConstraints("border", "bottom", [0, 40]), ...
170         "margins", [5 5 5 5], ...
171         "tag", "msgFrame");
172
173         msgText = uicontrol(msgFrame, ....
174         "Style", "text", ...
175         "HorizontalAlignment", "center", ...
176         "VerticalAlignment", "middle", ...
177         "FontSize", defaultFontSize, ...
178         "Background", [1 1 1], ...
179         "Tag", "msgText");
180
181         saveGui(f, SCI + "/modules/atoms/gui/atomsGui.xml");
182         delete(f);
183     end //creation
184
185     if ~isempty(get("atomsFigure")) then
186         return;
187     end
188
189     if ~ exists("atomsinternalslib") then
190         load("SCI/modules/atoms/macros/atoms_internals/lib");
191     end
192
193     // Test connection
194     allModules = [];
195     errStatus  = execstr("allModules = atomsDESCRIPTIONget();", "errcatch");
196
197     if errStatus<>0 | size(allModules, "*") == 0 then
198         if size(atomsRepositoryList(),"*") > 0 then
199             messagebox(gettext("No ATOMS module is available. Please, check your Internet connection or make sure that your OS is compatible with ATOMS."), gettext("ATOMS error"), "error");
200         else
201             messagebox(gettext("No ATOMS module is available: your repository list is empty."), gettext("ATOMS error"), "error");
202         end
203         return
204     end
205
206     atomsfig = loadGui(SCI + "/modules/atoms/gui/atomsGui.xml");
207     set("atomsFigure", "userdata", allModules);
208
209     // Build the module list (listbox on the left)
210     LeftElements = atomsGetLeftListboxElts("filter:main");
211
212     //localized title/menu
213
214     //menu
215     set("home", "label", _("File"));
216     set("homeMenu", "label", _("Installed modules"));
217     set("updatePackages", "label", _("Update List of Packages"));
218     set("closeMenu", "label", _("Close"));
219     set("help", "label", _("?"));
220     set("helpMenu", "label", _("Atoms Help..."));
221
222     set("LeftFrame", "UserData", "filter:main");
223
224     set("atomsFigure", "figure_name", LeftElements("title")+" - ATOMS");
225
226     set("LeftListbox", "string", LeftElements("items_str"));
227     set("LeftListbox", "userdata", LeftElements("items_mat"));
228
229     set("backButton", "String", _("Back"));
230     set("removeButton", "String", _("Remove"));
231     set("installButton", "String", _("Install"));
232     set("autoloadCheck", "String", _("Autoload"), "TooltipString", _("Autoload"));
233
234
235     homeFrame = get("HomeFrame");
236     homFrame.border.title = _("List of installed modules");
237
238     // Build the installed module list
239     HomeElements = atomsGetHomeListboxElts();
240
241     //Update Installed Toolbox Listbox
242     set("HomeListbox", "String", HomeElements("items_str"));
243     set("HomeListbox", "UserData", HomeElements("items_mat"));
244     set("atomsFigure", "visible", "on");
245     set("atomsFigure", "resizefcn", "atomsResize");
246
247     atomsResize();
248 endfunction
249