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