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