diff --git a/dlanguilib.visualdproj b/dlanguilib.visualdproj
index 3363aac3..9cb01a76 100644
--- a/dlanguilib.visualdproj
+++ b/dlanguilib.visualdproj
@@ -66,7 +66,7 @@
0
0
- Unicode USE_SDL USE_OPENGL
+ Unicode
0
0
1
@@ -316,6 +316,10 @@
+
+
+
+
diff --git a/examples/example1/example1.visualdproj b/examples/example1/example1.visualdproj
index ab51d9aa..1f0e54dc 100644
--- a/examples/example1/example1.visualdproj
+++ b/examples/example1/example1.visualdproj
@@ -66,7 +66,7 @@
0
0
- Unicode USE_SDL USE_OPENGL
+ Unicode
0
3
0
diff --git a/src/dlangui/dialogs/dialog.d b/src/dlangui/dialogs/dialog.d
new file mode 100644
index 00000000..2a6fead8
--- /dev/null
+++ b/src/dlangui/dialogs/dialog.d
@@ -0,0 +1,77 @@
+// Written in the D programming language.
+
+/**
+DLANGUI library.
+
+This module contains common Dialog implementation.
+
+
+Synopsis:
+
+----
+import dlangui.platforms.common.platform;
+
+----
+
+Copyright: Vadim Lopatin, 2014
+License: Boost License 1.0
+Authors: Vadim Lopatin, coolreader.org@gmail.com
+*/
+module dlangui.dialogs.dialog;
+
+import dlangui.core.i18n;
+import dlangui.widgets.layouts;
+import dlangui.widgets.controls;
+import dlangui.platforms.common.platform;
+
+/// dialog flag bits
+enum DialogFlag : uint {
+ /// dialog is modal
+ Modal = 1,
+ /// dialog can be resized
+ Resizable = 2,
+}
+
+/// base for all dialogs
+class Dialog : VerticalLayout {
+ protected Window _window;
+ protected Window _parentWindow;
+ protected UIString _caption;
+ protected uint _flags;
+
+ this(UIString caption, Window parentWindow = null, uint flags = DialogFlag.Modal) {
+ super("dlg");
+ _caption = caption;
+ _parentWindow = parentWindow;
+ }
+
+ @property UIString windowCaption() {
+ return _caption;
+ }
+
+ @property Dialog windowCaption(dstring caption) {
+ _caption = caption;
+ if (_window)
+ _window.windowCaption = caption;
+ return this;
+ }
+
+ @property Dialog windowCaption(UIString caption) {
+ _caption = caption;
+ if (_window)
+ _window.windowCaption = caption;
+ return this;
+ }
+
+ /// shows dialog
+ void show() {
+ uint wflags = 0;
+ if (_flags & DialogFlag.Modal)
+ wflags |= WindowFlag.Modal;
+ if (_flags & DialogFlag.Resizable)
+ wflags |= WindowFlag.Resizable;
+ _window = Platform.instance.createWindow(_caption, _parentWindow, wflags);
+ _window.mainWidget = this;
+ _window.show();
+ }
+}
diff --git a/src/dlangui/dialogs/filedlg.d b/src/dlangui/dialogs/filedlg.d
new file mode 100644
index 00000000..1c1e36fb
--- /dev/null
+++ b/src/dlangui/dialogs/filedlg.d
@@ -0,0 +1,53 @@
+// Written in the D programming language.
+
+/**
+DLANGUI library.
+
+This module contains FileDialog implementation.
+
+Can show dialog for open / save.
+
+
+Synopsis:
+
+----
+import dlangui.dialogs.filedlg;
+
+UIString caption = "Open File"d;
+auto dlg = new FileDialog(caption, window, FileDialogFlag.Open);
+dlg.show();
+
+----
+
+Copyright: Vadim Lopatin, 2014
+License: Boost License 1.0
+Authors: Vadim Lopatin, coolreader.org@gmail.com
+*/
+module dlangui.dialogs.filedlg;
+
+import dlangui.core.events;
+import dlangui.core.i18n;
+import dlangui.widgets.controls;
+import dlangui.widgets.lists;
+import dlangui.widgets.popup;
+import dlangui.platforms.common.platform;
+import dlangui.dialogs.dialog;
+
+/// flags for file dialog options
+enum FileDialogFlag : uint {
+ /// file must exist (use this for open dialog)
+ FileMustExist = 0x100,
+ /// ask before saving to existing
+ ConfirmOverwrite = 0x200,
+ /// flags for Open dialog
+ Open = FileMustExist,
+ /// flags for Save dialog
+ Save = ConfirmOverwrite,
+}
+
+/// file open / save dialog
+class FileDialog : Dialog {
+ this(UIString caption, Window parent, uint fileDialogFlags = DialogFlag.Modal | FileDialogFlag.FileMustExist) {
+ super(caption, parent, fileDialogFlags);
+ }
+}