module preferences plugged
[scilab.git] / scilab / modules / core / src / c / InitializePreferences.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Scilab Enterprises - Calixte DENIZET
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
13 #include <stdlib.h>
14
15 #include "getScilabPreference.h"
16 #include "api_scilab.h"
17 #include "configvariable_interface.h"
18 #include "setlines.h"
19 #include "setformat.h"
20 #include "os_string.h"
21 #include "TerminateHistoryManager.h"
22 #include "InitializeHistoryManager.h"
23 #include "HistoryManager.h"
24 #include "scicurdir.h"
25
26 void InitializePreferences(int useCWD)
27 {
28     const ScilabPreferences * prefs = getScilabPreferences();
29     int ieee = 0;
30     int lines = 0;
31     int cols = 0;
32     int formatWidth = 0;
33     int historyLines = 0;
34
35     // Set ieee
36     if (prefs->ieee)
37     {
38         ieee = atoi(prefs->ieee);
39         setieee(ieee);
40     }
41
42     // Set format
43     if (prefs->formatWidth && prefs->format)
44     {
45         formatWidth = (int)atof(prefs->formatWidth);
46         formatWidth = Max(0, formatWidth);
47         formatWidth = Min(25, formatWidth);
48         setformat(prefs->format, formatWidth);
49     }
50
51     // Set history
52     if (prefs->historyEnable)
53     {
54         if (!stricmp(prefs->historyEnable, "true"))
55         {
56             if (prefs->historyFile && prefs->historyLines)
57             {
58                 InitializeHistoryManager();
59                 setFilenameScilabHistory((char*)prefs->historyFile);
60                 historyLines = (int)atof(prefs->historyLines);
61                 if (historyLines > 0)
62                 {
63                     setSizeMaxScilabHistory(historyLines);
64                 }
65             }
66         }
67         else
68         {
69             TerminateHistoryManager();
70         }
71     }
72
73     // Set lines
74     if (prefs->adaptToDisplay && prefs->columnsToDisplay && prefs->linesToDisplay)
75     {
76         if (stricmp(prefs->adaptToDisplay, "true"))
77         {
78             // it is not true so ...
79             lines = (int)atof(prefs->linesToDisplay);
80             cols = (int)atof(prefs->columnsToDisplay);
81             setConsoleLines(lines);
82             setConsoleWidth(cols);
83         }
84     }
85
86     // Set current directory
87     if (!useCWD && prefs->startup_dir_use)
88     {
89         if (stricmp(prefs->startup_dir_use, "current"))
90         {
91             // Not in cwd
92             if (stricmp(prefs->startup_dir_use, "previous") == 0 && prefs->startup_dir_previous && *prefs->startup_dir_previous)
93             {
94                 scichdir((char*)prefs->startup_dir_previous);
95             }
96             else if (stricmp(prefs->startup_dir_use, "default") == 0 && prefs->startup_dir_default && *prefs->startup_dir_default)
97             {
98                 scichdir((char*)prefs->startup_dir_default);
99             }
100         }
101     }
102
103     clearScilabPreferences();
104 }