* Bug #12842 fixed - Scilab could not be launched on some platforms (ATOMS internal...
[scilab.git] / scilab / etc / scilab.start
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2007-2008 - INRIA
3 // Copyright (C) 2009-2011 - DIGITEO
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 // Main Scilab initialisation file
12
13 mode(-1);  // silent execution mode
14
15 // clean database when restarted ======================================
16 predef("clear"); //unprotect all variables
17 clear  // erase all variables
18 clearglobal();
19
20 // Set stack size   ===================================================
21 function setStackSize()
22   defaultstacksize = 10000000;
23   old = stacksize()
24   params = sciargs();
25   nparam = find(params == "-mem");
26   if (nparam) then
27     ierr = execstr("newstacksize=" + params(nparam + 1), "errcatch");
28     if (ierr == 0) then
29       if old(1) <> newstacksize then
30         stacksize(newstacksize);
31       end
32     else
33       if old(1) <> defaultstacksize then
34         stacksize(defaultstacksize);
35       end
36     end
37   else
38     if old(1) <> defaultstacksize then
39       stacksize(defaultstacksize);
40     end
41   end
42 endfunction
43 setStackSize();
44 clear setStackSize;
45
46 // Special variables definition =======================================
47 oldieee=ieee()
48 ieee(2);
49 %inf = 1/0;
50 ieee(0);
51 %nan = %inf-%inf;
52 // boolean variables
53 %T = %t;
54 %F = %f;
55 %tk = (with_module("tclsci") & getscilabmode() <> "NWNI");
56
57 ieee(oldieee);
58 clear oldieee
59
60 // Default Obsolete Warning policy  ===================================
61 global %modalWarning;
62 // False -> Scilab will only display a Warning message in the console
63 //          if warnings are enabled [warning("on"/"off")].
64 // True  -> Scilab will show a blocking popup.
65 %modalWarning = %F;
66 clear %modalWarning;
67
68 // Create some configuration variables ================================
69 PWD = pwd();
70
71 // Startup message  ===================================================
72 if (sciargs() <> "-nb") & ~fromjava() & ~fromc() & getscilabmode() == "STD" then
73   write(%io(2),[" ";gettext("Startup execution:")]);
74   write(%io(2),gettext("  loading initial environment"));
75 end
76
77 if ((getscilabmode() == "NWNI" | getscilabmode() == "NW") & ~fromjava() & ~fromc() & sciargs()<>"-nb")
78    [v, opts] = getversion()
79    write(%io(2), strsubst(v, "scilab-", "Scilab ") + " (" + opts($-1) + ", " + opts($) + ")");
80    clear v opts;
81 end
82
83 // loads modules ======================================================
84 modules    = getmodules();
85
86 // Map 'load' to 'old binary files load' called %_load to be able to load Scilab libraries
87 warning("off");
88 load = %_load;
89 warning("on");
90
91 for i=1:size(modules,"*")
92   startFile = "SCI/modules/" + modules(i) + "/etc/" + modules(i) + ".start";
93   ierr=exec(startFile, 'errcatch', -1);
94   if ierr <> 0 then
95      disp(msprintf(gettext("Failed to execute %s:"),startFile));
96      disp(lasterror());
97      exit(2);
98    end
99 end
100 // Fix for bug #12842: to be removed in Scilab 6
101 function bug_12842()
102   execstr("[%__variableList__, %__varB__, %__varC__, %__varD__] = listvarinfile(""SCI\modules\atoms\macros\atoms_internals\lib"")", "errcatch");
103 endfunction
104 bug_12842();
105 clear bug_12842
106 clear modules i load ierr startFile;
107
108 // Create some configuration variables ================================
109 home = getenv("HOME", SCI);
110 if getos() <> "Windows" then
111   if getenv("PRINTERS", "ndef") == "ndef" then
112     setenv("PRINTERS", "lp");
113   end
114 end
115 setenv("VERSION", getversion());
116
117 // ATOMS ===============================================================
118 if with_module("atoms") then
119   atomsSystemInit();
120   if sciargs() <> "-noatomsautoload" then
121     atomsAutoload();
122     clear atomsAutoload;
123   end
124   clear atomsSystemInit;
125 end
126
127
128 // Protect variable previously defined  ================================
129 predef("all");
130
131 // At startup, no interactive vertical paging by default. ==============
132 lines(0);
133
134 // load contrib menu if present ========================================
135 function loadContrib()
136   if isfile(SCI+"/contrib/loader.sce") then
137     global %toolboxes;
138     global %toolboxes_dir;
139     exec(SCI+"/contrib/loader.sce");
140   end
141 endfunction
142 loadContrib();
143 clear loadContrib;
144
145 // calling user initialization =========================================
146 if sciargs()<>"-nouserstartup" then
147
148   startupfiles = [ SCIHOME + filesep() + ".scilab"     ; .. // Home directory startup
149                    SCIHOME + filesep() + "scilab.ini" ];    //  ""      ""    startup
150
151   if SCIHOME <> pwd() then
152     startupfiles = [ startupfiles     ; ..
153                      ".scilab"        ; .. // Working directory startup
154                      "scilab.ini" ]   ;    //  ""         ""    startup
155   end
156
157   for i = 1:size(startupfiles, "*")
158     if isfile(startupfiles(i)) then
159       exec(startupfiles(i),-1);
160     end
161   end
162
163   clear i;
164   clear startupfiles;
165 end
166
167 // Menus/toolbar can now be enabled ====================================
168 if getscilabmode() == "STD" then
169   setmenu(gettext("&File"));
170   setmenu(gettext("&Edit"));
171   setmenu(gettext("&Preferences"));
172   setmenu(gettext("&Control"));
173   setmenu(gettext("&Applications"));
174   if ~with_module("scinotes") then // Desactivate Editor menu
175     unsetmenu(gettext("&Applications"), 1);
176   end
177   if ~with_module("xcos") then // Desactivate xcos menu
178     unsetmenu(gettext("&Applications"), 3);
179   end
180   if ~with_module("m2sci") then // Desactivate mfile2sci menu
181     unsetmenu(gettext("&Applications"), 5);
182   end
183   if ~with_module("atoms") then // Desactivate atoms menu
184     unsetmenu(gettext("&Applications"), 7);
185   end
186   setmenu(gettext("&?"));
187   setmenu(gettext("&Toolboxes"));
188   toolbar(-1, "on");
189 end
190 // ====================================================================
191 clear ans