diff --git a/src/dlangui/core/settings.d b/src/dlangui/core/settings.d index 7b2391cc..14279a40 100644 --- a/src/dlangui/core/settings.d +++ b/src/dlangui/core/settings.d @@ -80,6 +80,23 @@ class SettingsFile { } } + static int limitInt(long value, int minvalue, int maxvalue) { + if (value < minvalue) + return minvalue; + else if (value > maxvalue) + return maxvalue; + return cast(int)value; + } + + static string limitString(string value, const string[] values) { + assert(values.length > 0); + foreach(v; values) + if (v.equal(value)) + return value; + return values[0]; + } + + @property bool loaded() { return _loaded; } @@ -223,7 +240,6 @@ final class Setting { _changed = changed; } - /// array private static struct SettingArray { Setting[] list; diff --git a/src/dlangui/dialogs/settingsdialog.d b/src/dlangui/dialogs/settingsdialog.d index 90befb7a..f3e02fce 100644 --- a/src/dlangui/dialogs/settingsdialog.d +++ b/src/dlangui/dialogs/settingsdialog.d @@ -270,6 +270,31 @@ class ExecutableFileNameEditItem : SettingsItem { } } +class PathNameEditItem : SettingsItem { + string _defaultValue; + this(string id, UIString label, string defaultValue) { + super(id, label); + _defaultValue = defaultValue; + } + /// create setting widget + override Widget[] createWidgets(Setting settings) { + import dlangui.dialogs.filedlg; + TextWidget lbl = new TextWidget(_id ~ "-label", _label); + DirEditLine ed = new DirEditLine(_id ~ "-path-edit"); + ed.addFilter(FileFilterEntry(UIString("All files"d), "*.*")); + ed.minWidth = 200; + Setting setting = settings.settingByPath(_id, SettingType.STRING); + string value = setting.strDef(_defaultValue); + setting.str = value; + ed.text = toUTF32(value); + ed.contentChange = delegate(EditableContent content) { + string value = toUTF8(content.text); + setting.str = value; + }; + return [lbl, ed]; + } +} + /// settings page - item of settings tree, can edit several settings class SettingsPage { protected SettingsPage _parent; @@ -348,6 +373,13 @@ class SettingsPage { return res; } + /// add EditLine to edit filename + PathNameEditItem addDirNameEdit(string id, UIString label, string defaultValue = "") { + PathNameEditItem res = new PathNameEditItem(id, label, defaultValue); + addItem(res); + return res; + } + /// add EditLine to edit executable file name ExecutableFileNameEditItem addExecutableFileNameEdit(string id, UIString label, string defaultValue = "") { ExecutableFileNameEditItem res = new ExecutableFileNameEditItem(id, label, defaultValue);