1 /*
2  * This file is part of the Code::Blocks IDE and licensed under the GNU Lesser General Public License, version 3
3  * http://www.gnu.org/licenses/lgpl-3.0.html
4  *
5  * $Revision: 11887 $
6  * $Id: sc_consts.cpp 11887 2019-10-26 09:12:28Z fuscated $
7  * $HeadURL: svn://svn.code.sf.net/p/codeblocks/code/branches/release-20.xx/src/sdk/scripting/bindings/sc_consts.cpp $
8  */
9 
10 #include <sdk_precomp.h>
11 #ifndef CB_PRECOMP
12     #include <wx/string.h>
13     #include <globals.h>
14     #include <settings.h>
15 #endif
16 
17 #include <filefilters.h>
18 #include "sc_base_types.h"
19 
20 // helper macros to bind constants
21 #define BIND_INT_CONSTANT(a) SqPlus::BindConstant<SQInteger>(a, #a);
22 #define BIND_INT_CONSTANT_NAMED(a,n) SqPlus::BindConstant<SQInteger>(a, n);
23 #define BIND_WXSTR_CONSTANT_NAMED(a,n) BindVariable(const_cast<wxString*>(&a), n, SqPlus::VAR_ACCESS_CONSTANT);
24 
25 namespace ScriptBindings
26 {
27     wxString s_PathSep = wxFILE_SEP_PATH;
28 
Register_Constants()29     void Register_Constants()
30     {
31         // platform constants
32         BIND_INT_CONSTANT_NAMED(0,  "PLATFORM_MSW");
33         BIND_INT_CONSTANT_NAMED(1,  "PLATFORM_GTK");
34         BIND_INT_CONSTANT_NAMED(2,  "PLATFORM_MAC");
35         BIND_INT_CONSTANT_NAMED(3,  "PLATFORM_OS2");
36         BIND_INT_CONSTANT_NAMED(4,  "PLATFORM_X11");
37         BIND_INT_CONSTANT_NAMED(99, "PLATFORM_UNKNOWN");
38 
39         #if   defined(__WXMSW__)
40             BIND_INT_CONSTANT_NAMED(0, "PLATFORM");
41         #elif defined(__WXGTK__)
42             BIND_INT_CONSTANT_NAMED(1, "PLATFORM");
43         #elif defined(__WXMAC__)
44             BIND_INT_CONSTANT_NAMED(2, "PLATFORM");
45         #elif defined(__WXOS2__)
46             BIND_INT_CONSTANT_NAMED(3, "PLATFORM");
47         #elif defined(__WXX11__)
48             BIND_INT_CONSTANT_NAMED(4, "PLATFORM");
49         #else
50             BIND_INT_CONSTANT_NAMED(99, "PLATFORM");
51         #endif
52 
53         BIND_INT_CONSTANT_NAMED(PLUGIN_SDK_VERSION_MAJOR, "PLUGIN_SDK_VERSION_MAJOR");
54         BIND_INT_CONSTANT_NAMED(PLUGIN_SDK_VERSION_MINOR, "PLUGIN_SDK_VERSION_MINOR");
55         BIND_INT_CONSTANT_NAMED(PLUGIN_SDK_VERSION_RELEASE, "PLUGIN_SDK_VERSION_RELEASE");
56 
57         // path separator for filenames
58         BIND_WXSTR_CONSTANT_NAMED(s_PathSep, "wxFILE_SEP_PATH");
59 
60         // dialog buttons
61         BIND_INT_CONSTANT(wxOK);
62         BIND_INT_CONSTANT(wxYES_NO);
63         BIND_INT_CONSTANT(wxCANCEL);
64         BIND_INT_CONSTANT(wxID_OK);
65         BIND_INT_CONSTANT(wxID_YES);
66         BIND_INT_CONSTANT(wxID_NO);
67         BIND_INT_CONSTANT(wxID_CANCEL);
68         BIND_INT_CONSTANT(wxICON_QUESTION);
69         BIND_INT_CONSTANT(wxICON_INFORMATION);
70         BIND_INT_CONSTANT(wxICON_WARNING);
71         BIND_INT_CONSTANT(wxICON_ERROR);
72 
73         // wxPathFormat
74         BIND_INT_CONSTANT(wxPATH_NATIVE);
75         BIND_INT_CONSTANT(wxPATH_UNIX);
76         BIND_INT_CONSTANT(wxPATH_BEOS);
77         BIND_INT_CONSTANT(wxPATH_MAC);
78         BIND_INT_CONSTANT(wxPATH_DOS);
79         BIND_INT_CONSTANT(wxPATH_WIN);
80         BIND_INT_CONSTANT(wxPATH_OS2);
81         BIND_INT_CONSTANT(wxPATH_VMS);
82 
83         // for wxFileName::GetPath()
84         BIND_INT_CONSTANT(wxPATH_GET_VOLUME);
85         BIND_INT_CONSTANT(wxPATH_GET_SEPARATOR);
86 
87         // wxPathNormalize
88         BIND_INT_CONSTANT(wxPATH_NORM_ENV_VARS);
89         BIND_INT_CONSTANT(wxPATH_NORM_DOTS);
90         BIND_INT_CONSTANT(wxPATH_NORM_TILDE);
91         BIND_INT_CONSTANT(wxPATH_NORM_CASE);
92         BIND_INT_CONSTANT(wxPATH_NORM_ABSOLUTE);
93         BIND_INT_CONSTANT(wxPATH_NORM_LONG);
94         BIND_INT_CONSTANT(wxPATH_NORM_SHORTCUT);
95         BIND_INT_CONSTANT(wxPATH_NORM_ALL);
96 
97         // OptionsRelationType
98         BIND_INT_CONSTANT(ortCompilerOptions);
99         BIND_INT_CONSTANT(ortLinkerOptions);
100         BIND_INT_CONSTANT(ortIncludeDirs);
101         BIND_INT_CONSTANT(ortLibDirs);
102         BIND_INT_CONSTANT(ortResDirs);
103 
104         // OptionsRelation
105         BIND_INT_CONSTANT(orUseParentOptionsOnly);
106         BIND_INT_CONSTANT(orUseTargetOptionsOnly);
107         BIND_INT_CONSTANT(orPrependToParentOptions);
108         BIND_INT_CONSTANT(orAppendToParentOptions);
109 
110         // TargetType
111         BIND_INT_CONSTANT(ttExecutable);
112         BIND_INT_CONSTANT(ttConsoleOnly);
113         BIND_INT_CONSTANT(ttStaticLib);
114         BIND_INT_CONSTANT(ttDynamicLib);
115         BIND_INT_CONSTANT(ttCommandsOnly);
116         BIND_INT_CONSTANT(ttNative);
117 
118         // MakeCommand
119         BIND_INT_CONSTANT(mcClean);
120         BIND_INT_CONSTANT(mcDistClean);
121         BIND_INT_CONSTANT(mcBuild);
122         BIND_INT_CONSTANT(mcCompileFile);
123         BIND_INT_CONSTANT(mcAskRebuildNeeded);
124         BIND_INT_CONSTANT(mcSilentBuild);
125 
126         // PCHMode
127         BIND_INT_CONSTANT(pchSourceDir);
128         BIND_INT_CONSTANT(pchObjectDir);
129         BIND_INT_CONSTANT(pchSourceFile);
130 
131         // printing scope for print dialog
132         BIND_INT_CONSTANT(psSelection);
133         BIND_INT_CONSTANT(psActiveEditor);
134         BIND_INT_CONSTANT(psAllOpenEditors);
135 
136         // printing colour mode
137         BIND_INT_CONSTANT(pcmBlackAndWhite);
138         BIND_INT_CONSTANT(pcmColourOnWhite);
139         BIND_INT_CONSTANT(pcmInvertColours);
140         BIND_INT_CONSTANT(pcmAsIs);
141 
142         // TemplateOutputType
143         BIND_INT_CONSTANT_NAMED(totProject, "wizProject");
144         BIND_INT_CONSTANT_NAMED(totTarget, "wizTarget");
145         BIND_INT_CONSTANT_NAMED(totFiles, "wizFiles");
146         BIND_INT_CONSTANT_NAMED(totCustom, "wizCustom");
147 
148         // SearchDirs
149         BIND_INT_CONSTANT(sdHome);
150         BIND_INT_CONSTANT(sdBase);
151         BIND_INT_CONSTANT(sdTemp);
152         BIND_INT_CONSTANT(sdPath);
153         BIND_INT_CONSTANT(sdConfig);
154         BIND_INT_CONSTANT(sdCurrent);
155         BIND_INT_CONSTANT(sdPluginsUser);
156         BIND_INT_CONSTANT(sdScriptsUser);
157         BIND_INT_CONSTANT(sdDataUser);
158         BIND_INT_CONSTANT(sdAllUser);
159         BIND_INT_CONSTANT(sdPluginsGlobal);
160         BIND_INT_CONSTANT(sdScriptsGlobal);
161         BIND_INT_CONSTANT(sdDataGlobal);
162         BIND_INT_CONSTANT(sdAllGlobal);
163         BIND_INT_CONSTANT(sdAllKnown);
164 
165         // SupportedPlatforms
166         BIND_INT_CONSTANT(spWindows);
167         BIND_INT_CONSTANT(spUnix);
168         BIND_INT_CONSTANT(spMac);
169         BIND_INT_CONSTANT(spAll);
170 
171         // TargetFilenameGenerationPolicy
172         BIND_INT_CONSTANT(tgfpPlatformDefault);
173         BIND_INT_CONSTANT(tgfpNone);
174 
175         // ModuleType
176         BIND_INT_CONSTANT(mtProjectManager);
177         BIND_INT_CONSTANT(mtEditorManager);
178         BIND_INT_CONSTANT(mtLogManager);
179         BIND_INT_CONSTANT(mtOpenFilesList);
180         BIND_INT_CONSTANT(mtUnknown);
181 
182         // FileTreeDataKind
183         BIND_INT_CONSTANT_NAMED(FileTreeData::ftdkUndefined, "ftdkUndefined");
184         BIND_INT_CONSTANT_NAMED(FileTreeData::ftdkProject, "ftdkProject");
185         BIND_INT_CONSTANT_NAMED(FileTreeData::ftdkFolder, "ftdkFolder");
186         BIND_INT_CONSTANT_NAMED(FileTreeData::ftdkFile, "ftdkFile");
187         BIND_INT_CONSTANT_NAMED(FileTreeData::ftdkVirtualGroup, "ftdkVirtualGroup");
188         BIND_INT_CONSTANT_NAMED(FileTreeData::ftdkVirtualFolder, "ftdkVirtualFolder");
189 
190         // file extensions
191         BIND_WXSTR_CONSTANT_NAMED(FileFilters::WORKSPACE_EXT, "EXT_WORKSPACE");
192         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CODEBLOCKS_EXT, "EXT_CODEBLOCKS");
193         BIND_WXSTR_CONSTANT_NAMED(FileFilters::DEVCPP_EXT, "EXT_DEVCPP");
194         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC6_EXT, "EXT_MSVC6");
195         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC6_WORKSPACE_EXT, "EXT_MSVC6_WORKSPACE");
196         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC7_EXT, "EXT_MSVC7");
197         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC7_WORKSPACE_EXT, "EXT_MSVC7_WORKSPACE");
198         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC10_EXT, "EXT_MSVC10");
199         BIND_WXSTR_CONSTANT_NAMED(FileFilters::ASM_EXT, "EXT_ASM");
200         BIND_WXSTR_CONSTANT_NAMED(FileFilters::D_EXT, "EXT_D");
201         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F_EXT, "EXT_F");
202         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F77_EXT, "EXT_F77");
203         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F90_EXT, "EXT_F90");
204         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F95_EXT, "EXT_F95");
205         BIND_WXSTR_CONSTANT_NAMED(FileFilters::FOR_EXT, "EXT_FOR");
206         BIND_WXSTR_CONSTANT_NAMED(FileFilters::FPP_EXT, "EXT_FPP");
207         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F03_EXT, "EXT_F03");
208         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F08_EXT, "EXT_F08");
209         BIND_WXSTR_CONSTANT_NAMED(FileFilters::JAVA_EXT, "EXT_JAVA");
210         BIND_WXSTR_CONSTANT_NAMED(FileFilters::C_EXT, "EXT_C");
211         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CC_EXT, "EXT_CC");
212         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CPP_EXT, "EXT_CPP");
213         BIND_WXSTR_CONSTANT_NAMED(FileFilters::TPP_EXT, "EXT_TPP");
214         BIND_WXSTR_CONSTANT_NAMED(FileFilters::TCC_EXT, "EXT_TCC");
215         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CXX_EXT, "EXT_CXX");
216         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CPLPL_EXT, "EXT_CPLPL");
217         BIND_WXSTR_CONSTANT_NAMED(FileFilters::INL_EXT, "EXT_INL");
218         BIND_WXSTR_CONSTANT_NAMED(FileFilters::H_EXT, "EXT_H");
219         BIND_WXSTR_CONSTANT_NAMED(FileFilters::HH_EXT, "EXT_HH");
220         BIND_WXSTR_CONSTANT_NAMED(FileFilters::HPP_EXT, "EXT_HPP");
221         BIND_WXSTR_CONSTANT_NAMED(FileFilters::HXX_EXT, "EXT_HXX");
222         BIND_WXSTR_CONSTANT_NAMED(FileFilters::HPLPL_EXT, "EXT_HPLPL");
223         BIND_WXSTR_CONSTANT_NAMED(FileFilters::S_EXT, "EXT_S");
224         BIND_WXSTR_CONSTANT_NAMED(FileFilters::SS_EXT, "EXT_SS");
225         BIND_WXSTR_CONSTANT_NAMED(FileFilters::S62_EXT, "EXT_S62");
226         BIND_WXSTR_CONSTANT_NAMED(FileFilters::OBJECT_EXT, "EXT_OBJECT");
227         BIND_WXSTR_CONSTANT_NAMED(FileFilters::XRCRESOURCE_EXT, "EXT_XRCRESOURCE");
228         BIND_WXSTR_CONSTANT_NAMED(FileFilters::STATICLIB_EXT, "EXT_STATICLIB");
229         BIND_WXSTR_CONSTANT_NAMED(FileFilters::DYNAMICLIB_EXT, "EXT_DYNAMICLIB");
230         BIND_WXSTR_CONSTANT_NAMED(FileFilters::EXECUTABLE_EXT, "EXT_EXECUTABLE");
231         BIND_WXSTR_CONSTANT_NAMED(FileFilters::EXECUTABLE_EXT, "EXT_NATIVE");
232         BIND_WXSTR_CONSTANT_NAMED(FileFilters::RESOURCE_EXT, "EXT_RESOURCE");
233         BIND_WXSTR_CONSTANT_NAMED(FileFilters::RESOURCEBIN_EXT, "EXT_RESOURCEBIN");
234         BIND_WXSTR_CONSTANT_NAMED(FileFilters::XML_EXT, "EXT_XML");
235         BIND_WXSTR_CONSTANT_NAMED(FileFilters::SCRIPT_EXT, "EXT_SCRIPT");
236         BIND_WXSTR_CONSTANT_NAMED(FileFilters::WORKSPACE_DOT_EXT, "DOT_EXT_WORKSPACE");
237         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CODEBLOCKS_DOT_EXT, "DOT_EXT_CODEBLOCKS");
238         BIND_WXSTR_CONSTANT_NAMED(FileFilters::DEVCPP_DOT_EXT, "DOT_EXT_DEVCPP");
239         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC6_DOT_EXT, "DOT_EXT_MSVC6");
240         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC6_WORKSPACE_DOT_EXT, "DOT_EXT_MSVC6_WORKSPACE");
241         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC7_DOT_EXT, "DOT_EXT_MSVC7");
242         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC7_WORKSPACE_DOT_EXT, "DOT_EXT_MSVC7_WORKSPACE");
243         BIND_WXSTR_CONSTANT_NAMED(FileFilters::MSVC10_DOT_EXT, "DOT_EXT_MSVC10");
244         BIND_WXSTR_CONSTANT_NAMED(FileFilters::ASM_DOT_EXT, "DOT_EXT_ASM");
245         BIND_WXSTR_CONSTANT_NAMED(FileFilters::D_DOT_EXT, "DOT_EXT_D");
246         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F_DOT_EXT, "DOT_EXT_F");
247         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F77_DOT_EXT, "DOT_EXT_F77");
248         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F90_DOT_EXT, "DOT_EXT_F90");
249         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F95_DOT_EXT, "DOT_EXT_F95");
250         BIND_WXSTR_CONSTANT_NAMED(FileFilters::FOR_DOT_EXT, "DOT_EXT_FOR");
251         BIND_WXSTR_CONSTANT_NAMED(FileFilters::FPP_DOT_EXT, "DOT_EXT_FPP");
252         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F03_DOT_EXT, "DOT_EXT_F03");
253         BIND_WXSTR_CONSTANT_NAMED(FileFilters::F08_DOT_EXT, "DOT_EXT_F08");
254         BIND_WXSTR_CONSTANT_NAMED(FileFilters::JAVA_DOT_EXT, "DOT_EXT_JAVA");
255         BIND_WXSTR_CONSTANT_NAMED(FileFilters::C_DOT_EXT, "DOT_EXT_C");
256         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CC_DOT_EXT, "DOT_EXT_CC");
257         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CPP_DOT_EXT, "DOT_EXT_CPP");
258         BIND_WXSTR_CONSTANT_NAMED(FileFilters::TPP_DOT_EXT, "DOT_EXT_TPP");
259         BIND_WXSTR_CONSTANT_NAMED(FileFilters::TCC_DOT_EXT, "DOT_EXT_TCC");
260         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CXX_DOT_EXT, "DOT_EXT_CXX");
261         BIND_WXSTR_CONSTANT_NAMED(FileFilters::CPLPL_DOT_EXT, "DOT_EXT_CPLPL");
262         BIND_WXSTR_CONSTANT_NAMED(FileFilters::H_DOT_EXT, "DOT_EXT_H");
263         BIND_WXSTR_CONSTANT_NAMED(FileFilters::HH_DOT_EXT, "DOT_EXT_HH");
264         BIND_WXSTR_CONSTANT_NAMED(FileFilters::HPP_DOT_EXT, "DOT_EXT_HPP");
265         BIND_WXSTR_CONSTANT_NAMED(FileFilters::HXX_DOT_EXT, "DOT_EXT_HXX");
266         BIND_WXSTR_CONSTANT_NAMED(FileFilters::HPLPL_DOT_EXT, "DOT_EXT_HPLPL");
267         BIND_WXSTR_CONSTANT_NAMED(FileFilters::S_DOT_EXT, "DOT_EXT_S");
268         BIND_WXSTR_CONSTANT_NAMED(FileFilters::SS_DOT_EXT, "DOT_EXT_SS");
269         BIND_WXSTR_CONSTANT_NAMED(FileFilters::S62_DOT_EXT, "DOT_EXT_S62");
270         BIND_WXSTR_CONSTANT_NAMED(FileFilters::OBJECT_DOT_EXT, "DOT_EXT_OBJECT");
271         BIND_WXSTR_CONSTANT_NAMED(FileFilters::XRCRESOURCE_DOT_EXT, "DOT_EXT_XRCRESOURCE");
272         BIND_WXSTR_CONSTANT_NAMED(FileFilters::STATICLIB_DOT_EXT, "DOT_EXT_STATICLIB");
273         BIND_WXSTR_CONSTANT_NAMED(FileFilters::DYNAMICLIB_DOT_EXT, "DOT_EXT_DYNAMICLIB");
274         BIND_WXSTR_CONSTANT_NAMED(FileFilters::EXECUTABLE_DOT_EXT, "DOT_EXT_EXECUTABLE");
275         BIND_WXSTR_CONSTANT_NAMED(FileFilters::NATIVE_DOT_EXT, "DOT_EXT_NATIVE");
276         BIND_WXSTR_CONSTANT_NAMED(FileFilters::RESOURCE_DOT_EXT, "DOT_EXT_RESOURCE");
277         BIND_WXSTR_CONSTANT_NAMED(FileFilters::RESOURCEBIN_DOT_EXT, "DOT_EXT_RESOURCEBIN");
278         BIND_WXSTR_CONSTANT_NAMED(FileFilters::XML_DOT_EXT, "DOT_EXT_XML");
279         BIND_WXSTR_CONSTANT_NAMED(FileFilters::SCRIPT_DOT_EXT, "DOT_EXT_SCRIPT");
280 
281         // LinkerExecutableOption
282         BIND_INT_CONSTANT_NAMED(int32_t(LinkerExecutableOption::AutoDetect), "leoAutoDetect");
283         BIND_INT_CONSTANT_NAMED(int32_t(LinkerExecutableOption::CCompiler), "leoCCompiler");
284         BIND_INT_CONSTANT_NAMED(int32_t(LinkerExecutableOption::CppCompiler), "leoCppCompiler");
285         BIND_INT_CONSTANT_NAMED(int32_t(LinkerExecutableOption::Linker), "leoLinker");
286     }
287 };
288