1 module dlangide.workspace.projectsettings;
2 
3 import dlangui.core.settings;
4 import dlangui.core.i18n;
5 
6 import dlangide.workspace.idesettings;
7 
8 const AVAILABLE_TOOLCHAINS = ["default", "dmd", "ldc", "gdc"];
9 const AVAILABLE_ARCH = ["default", "x86", "x86_64"];
10 
11 class ProjectSettings : SettingsFile {
12 
13     this(string filename) {
14         super(filename);
15     }
16 
17     /// override to do something after loading - e.g. set defaults
18     override void afterLoad() {
19     }
20 
21     override void updateDefaults() {
22         Setting build = buildSettings();
23         build.setStringDef("toolchain", "default");
24         build.setStringDef("arch", "default");
25         build.setBooleanDef("verbose", false);
26         Setting dbg = debugSettings();
27         dbg.setBooleanDef("external_console", true);
28     }
29 
30     @property Setting buildSettings() {
31         Setting res = _setting.objectByPath("build", true);
32         return res;
33     }
34 
35     @property Setting debugSettings() {
36         Setting res = _setting.objectByPath("debug", true);
37         return res;
38     }
39 
40     @property bool buildVerbose() {
41         return buildSettings.getBoolean("verbose", false);
42     }
43 
44     string getToolchain(IDESettings idesettings) {
45         string cfg = buildSettings.getString("toolchain");
46         return idesettings.getToolchainSettings(cfg);
47     }
48 
49     string getArch(IDESettings idesettings) {
50         string cfg = buildSettings.getString("arch");
51         if (cfg.equal("default"))
52             return null;
53         return cfg;
54     }
55 }
56