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); + } +}