add dialogs, part 1

This commit is contained in:
Vadim Lopatin 2014-05-22 09:03:26 +04:00
parent 901c5be5d7
commit 576dbda406
4 changed files with 136 additions and 2 deletions

View File

@ -66,7 +66,7 @@
<debuglevel>0</debuglevel>
<debugids />
<versionlevel>0</versionlevel>
<versionids>Unicode USE_SDL USE_OPENGL</versionids>
<versionids>Unicode</versionids>
<dump_source>0</dump_source>
<mapverbosity>0</mapverbosity>
<createImplib>1</createImplib>
@ -316,6 +316,10 @@
<File path="src\dlangui\core\signals.d" />
<File path="src\dlangui\core\types.d" />
</Folder>
<Folder name="dialogs">
<File path="src\dlangui\dialogs\dialog.d" />
<File path="src\dlangui\dialogs\filedlg.d" />
</Folder>
<Folder name="graphics">
<File path="src\dlangui\graphics\drawbuf.d" />
<File path="src\dlangui\graphics\fonts.d" />

View File

@ -66,7 +66,7 @@
<debuglevel>0</debuglevel>
<debugids />
<versionlevel>0</versionlevel>
<versionids>Unicode USE_SDL USE_OPENGL</versionids>
<versionids>Unicode</versionids>
<dump_source>0</dump_source>
<mapverbosity>3</mapverbosity>
<createImplib>0</createImplib>

View File

@ -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();
}
}

View File

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