1 module dlangide.ui.settings;
2 
3 import dlangui.core.settings;
4 import dlangui.core.i18n;
5 import dlangui.graphics.fonts;
6 import dlangui.widgets.lists;
7 import dlangui.dialogs.settingsdialog;
8 
9 public import dlangide.workspace.projectsettings;
10 public import dlangide.workspace.idesettings;
11 public import dlangide.workspace.workspacesettings;
12 
13 /// create DlangIDE settings pages tree
14 SettingsPage createSettingsPages() {
15     SettingsPage res = new SettingsPage("", UIString(""d));
16 
17     SettingsPage ed = res.addChild("editors", UIString("Editors"d));
18     SettingsPage texted = ed.addChild("editors/textEditor", UIString("Text Editors"d));
19     texted.addNumberEdit("editors/textEditor/tabSize", UIString("Tab size"d), 1, 16, 4);
20     texted.addCheckbox("editors/textEditor/useSpacesForTabs", UIString("Use spaces for tabs"d));
21     texted.addCheckbox("editors/textEditor/smartIndents", UIString("Smart indents"d));
22     texted.addCheckbox("editors/textEditor/smartIndentsAfterPaste", UIString("Smart indent after paste"d));
23 
24 	SettingsPage dlang = res.addChild("dlang", UIString("D"d));
25 	SettingsPage dub = dlang.addChild("dlang/dub", UIString("DUB"d));
26 	dub.addExecutableFileNameEdit("dlang/dub/executable", UIString("DUB executable"d), "dub");
27 	dub.addStringEdit("dlang/dub/additional_params", UIString("DUB additional params"d), "");
28 	SettingsPage ddebug = dlang.addChild("dlang/debugger", UIString("Debugger"d));
29 	ddebug.addExecutableFileNameEdit("dlang/debugger/executable", UIString("Debugger executable"d), "gdb");
30 	SettingsPage terminal = dlang.addChild("dlang/terminal", UIString("Terminal"d));
31 	terminal.addExecutableFileNameEdit("dlang/terminal/executable", UIString("Terminal executable"d), "xterm");
32 
33 	SettingsPage toolchains = dlang.addChild("dlang/toolchains", UIString("Toolchains"d));
34 	SettingsPage dmdtoolchain = toolchains.addChild("dlang/toolchains/dmd", UIString("DMD"d));
35 	dmdtoolchain.addExecutableFileNameEdit("dlang/toolchains/dmd/executable", UIString("DMD executable"d), "dmd");
36 	SettingsPage ldctoolchain = toolchains.addChild("dlang/toolchains/ldc", UIString("LDC"d));
37 	ldctoolchain.addExecutableFileNameEdit("dlang/toolchains/ldc/executable", UIString("LDC2 executable"d), "ldc2");
38 	SettingsPage gdctoolchain = toolchains.addChild("dlang/toolchains/gdc", UIString("GDC"d));
39 	gdctoolchain.addExecutableFileNameEdit("dlang/toolchains/gdc/executable", UIString("GDC executable"d), "gdc");
40 
41 	SettingsPage ui = res.addChild("interface", UIString("Interface"d));
42     ui.addStringComboBox("interface/theme", UIString("Theme"d), [
43             StringListValue("ide_theme_default", "Default"d), 
44             StringListValue("ide_theme_dark", "Dark"d)]);
45 	ui.addStringComboBox("interface/language", UIString("Language"d), [
46 			StringListValue("en", "English"d), 
47 			StringListValue("ru", "Russian"d), 
48 			StringListValue("es", "Spanish"d)]);
49     ui.addIntComboBox("interface/hintingMode", UIString("Font hinting mode"d), [StringListValue(0, "Normal"d), StringListValue(1, "Force Auto Hint"d), 
50                 StringListValue(2, "Disabled"d), StringListValue(3, "Light"d)]);
51     ui.addIntComboBox("interface/minAntialiasedFontSize", UIString("Minimum font size for antialiasing"d), 
52                       [StringListValue(0, "Always ON"d), 
53                       StringListValue(12, "12"d), 
54                       StringListValue(14, "14"d), 
55                       StringListValue(16, "16"d), 
56                       StringListValue(20, "20"d), 
57                       StringListValue(24, "24"d), 
58                       StringListValue(32, "32"d), 
59                       StringListValue(48, "48"d), 
60                       StringListValue(255, "Always OFF"d)]);
61     ui.addFloatComboBox("interface/fontGamma", UIString("Font gamma"d), 
62                    [
63                     StringListValue(500,  "0.5   "d),
64                     StringListValue(600,  "0.6   "d),
65                     StringListValue(700,  "0.7   "d),
66                     StringListValue(800,  "0.8   "d),
67                     StringListValue(850,  "0.85  "d),
68                     StringListValue(900,  "0.9   "d),
69                     StringListValue(950,  "0.95  "d),
70                     StringListValue(1000, "1.0   "d),
71                     StringListValue(1050, "1.05  "d),
72                     StringListValue(1100, "1.1   "d), 
73                     StringListValue(1150, "1.15  "d), 
74                     StringListValue(1200, "1.2   "d), 
75                     StringListValue(1250, "1.25  "d), 
76                     StringListValue(1300, "1.3   "d), 
77                     StringListValue(1400, "1.4   "d), 
78                     StringListValue(1500, "1.5   "d), 
79                     StringListValue(1700, "1.7   "d), 
80                     StringListValue(2000, "2.0   "d)]);
81     return res;
82 }
83 
84 /// create DlangIDE settings pages tree
85 SettingsPage createProjectSettingsPages() {
86     SettingsPage res = new SettingsPage("", UIString(""d));
87 
88     SettingsPage build = res.addChild("build", UIString("Build"d));
89 	build.addStringComboBox("build/toolchain", UIString("Toolchain"d), [
90 			StringListValue("default", "Default"d), 
91 			StringListValue("dmd", "DMD"d), 
92 			StringListValue("ldc", "LDC"d), 
93 			StringListValue("gdc", "GDC"d)]);
94 	build.addStringComboBox("build/arch", UIString("Architecture"d), [
95 			StringListValue("default", "Default"d), 
96 			StringListValue("x86", "x86"d), 
97 			StringListValue("x86_64", "x86_64"d)]);
98     build.addCheckbox("build/verbose", UIString("Verbose"d), true);
99 
100     SettingsPage dbg = res.addChild("debug", UIString("Run and Debug"d));
101 	dbg.addStringEdit("debug/run_args", UIString("Command line args"d), "");
102 	dbg.addDirNameEdit("debug/working_dir", UIString("Working directory"d), "");
103     dbg.addCheckbox("debug/external_console", UIString("Run in external console"d), true);
104 
105     return res;
106 }