diff --git a/dlangui.sln b/dlangui.sln index 398d18a2..c0b832ec 100644 --- a/dlangui.sln +++ b/dlangui.sln @@ -33,6 +33,8 @@ Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "dlanguisfml", "..\dsfml_pro EndProject Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "dsfml", "..\DSFML\dsfml\dsfml.visualdproj", "{DB490C05-D9F8-431C-91DD-CEE646A64FDA}" EndProject +Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "dmledit", "examples\dmledit\dmledit.visualdproj", "{06D73450-2919-48A8-B2C3-738B12505D74}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug COFF32|Any CPU = Debug COFF32|Any CPU @@ -349,6 +351,42 @@ Global {DB490C05-D9F8-431C-91DD-CEE646A64FDA}.TestDebug|Win32.ActiveCfg = Debug|Win32 {DB490C05-D9F8-431C-91DD-CEE646A64FDA}.TestDebug|Win32.Build.0 = Debug|Win32 {DB490C05-D9F8-431C-91DD-CEE646A64FDA}.TestDebug|x64.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug COFF32|Any CPU.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug COFF32|Mixed Platforms.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug COFF32|Mixed Platforms.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug COFF32|Win32.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug COFF32|Win32.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug COFF32|x64.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug GDC|Any CPU.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug GDC|Mixed Platforms.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug GDC|Mixed Platforms.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug GDC|Win32.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug GDC|Win32.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug GDC|x64.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug LDC|Any CPU.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug LDC|Mixed Platforms.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug LDC|Mixed Platforms.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug LDC|Win32.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug LDC|Win32.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug LDC|x64.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug|Mixed Platforms.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug|Win32.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug|Win32.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Debug|x64.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Release|Any CPU.ActiveCfg = Release|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Release|Mixed Platforms.ActiveCfg = Release|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Release|Mixed Platforms.Build.0 = Release|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Release|Win32.ActiveCfg = Release|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Release|Win32.Build.0 = Release|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.Release|x64.ActiveCfg = Release|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.TestDebug|Any CPU.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.TestDebug|Mixed Platforms.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.TestDebug|Mixed Platforms.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.TestDebug|Win32.ActiveCfg = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.TestDebug|Win32.Build.0 = Debug|Win32 + {06D73450-2919-48A8-B2C3-738B12505D74}.TestDebug|x64.ActiveCfg = Debug|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/dub.json b/dub.json index 0445bd7c..f9b4803b 100644 --- a/dub.json +++ b/dub.json @@ -35,6 +35,7 @@ "subPackages": [ "./examples/helloworld/", "./examples/example1/", + "./examples/dmledit/", "./examples/tetris/" ], diff --git a/examples/dmledit/dmledit.visualdproj b/examples/dmledit/dmledit.visualdproj new file mode 100644 index 00000000..3933df6e --- /dev/null +++ b/examples/dmledit/dmledit.visualdproj @@ -0,0 +1,210 @@ + + {06D73450-2919-48A8-B2C3-738B12505D74} + + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2.043 + 0 + 0 + 0 + 0 + 0 + $(CC) -c + 1 + $(DMDInstallDir)windows\bin\dmd.exe + $(SolutionDir)/src $(SolutionDir)/3rdparty $(SolutionDir)/3rdparty/libpng/source $(SolutionDir)/../DerelictGL3/source $(SolutionDir)/../DerelictUtil/source $(SolutionDir)/../DerelictFT/source $(SolutionDir)/../DerelictSDL2/source $(SolutionDir)/../de_image/source/interfaces $(SolutionDir)/../de_image/source/png $(SolutionDir)/../dlib + views views/res views/res/i18n views/res/mdpi + $(ConfigurationName) + $(OutDir) + + + 0 + + + + + 0 + + + 1 + $(IntDir)\$(TargetName).json + 0 + + 0 + Unicode USE_FREETYPE USE_OPENGL + 0 + 0 + 0 + + + + 0 + + 1 + $(VisualDInstallDir)cv2pdb\cv2pdb.exe + 0 + 0 + 0 + + + + ole32.lib kernel32.lib user32.lib comctl32.lib comdlg32.lib + + + + $(OutDir)\$(ProjectName).exe + 1 + 2 + + + + *.obj;*.cmd;*.build;*.json;*.dep + + + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 2.043 + 0 + 0 + 0 + 0 + 0 + $(CC) -c + 1 + $(DMDInstallDir)windows\bin\dmd.exe + + + $(ConfigurationName) + $(OutDir) + + + 0 + + + + + 0 + + + 1 + $(IntDir)\$(TargetName).json + 0 + + 0 + + 0 + 0 + 0 + + + + 0 + + 0 + $(VisualDInstallDir)cv2pdb\cv2pdb.exe + 0 + 0 + 0 + + + + ole32.lib kernel32.lib user32.lib comctl32.lib comdlg32.lib + + + + $(OutDir)\$(ProjectName).exe + 1 + 1 + + + + *.obj;*.cmd;*.build;*.json;*.dep + + + + + + + diff --git a/examples/dmledit/dub.json b/examples/dmledit/dub.json new file mode 100644 index 00000000..5913f583 --- /dev/null +++ b/examples/dmledit/dub.json @@ -0,0 +1,15 @@ +{ + "name": "dmledit", + "description": "dlangui library example DML Editor", + "homepage": "https://github.com/buggins/dlangui", + "license": "Boost", + "authors": ["Vadim Lopatin"], + + "targetPath": "bin", + "targetName": "dmledit", + "targetType": "executable", + + "dependencies": { + "dlangui": "*", + } +} diff --git a/examples/dmledit/src/dmledit.d b/examples/dmledit/src/dmledit.d new file mode 100644 index 00000000..d15abbf9 --- /dev/null +++ b/examples/dmledit/src/dmledit.d @@ -0,0 +1,20 @@ +module dmledit; + +import dlangui; + +mixin APP_ENTRY_POINT; + +/// entry point for dlangui based application +extern (C) int UIAppMain(string[] args) { + // create window + Window window = Platform.instance.createWindow("DlangUI example - HelloWorld", null); + + // create some widget to show in window + window.mainWidget = (new Button()).text("Hello, world!"d).margins(Rect(20,20,20,20)); + + // show window + window.show(); + + // run message loop + return Platform.instance.enterMessageLoop(); +} diff --git a/examples/dmledit/views/res/hdpi/document-close.png b/examples/dmledit/views/res/hdpi/document-close.png new file mode 100644 index 00000000..0bcfe981 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/document-close.png differ diff --git a/examples/dmledit/views/res/hdpi/document-open-recent.png b/examples/dmledit/views/res/hdpi/document-open-recent.png new file mode 100644 index 00000000..6a10e6ef Binary files /dev/null and b/examples/dmledit/views/res/hdpi/document-open-recent.png differ diff --git a/examples/dmledit/views/res/hdpi/document-open.png b/examples/dmledit/views/res/hdpi/document-open.png new file mode 100644 index 00000000..8ba54411 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/document-open.png differ diff --git a/examples/dmledit/views/res/hdpi/document-save-as.png b/examples/dmledit/views/res/hdpi/document-save-as.png new file mode 100644 index 00000000..9695a564 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/document-save-as.png differ diff --git a/examples/dmledit/views/res/hdpi/document-save.png b/examples/dmledit/views/res/hdpi/document-save.png new file mode 100644 index 00000000..7fa489c0 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/document-save.png differ diff --git a/examples/dmledit/views/res/hdpi/edit-clear.png b/examples/dmledit/views/res/hdpi/edit-clear.png new file mode 100644 index 00000000..631ed445 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/edit-clear.png differ diff --git a/examples/dmledit/views/res/hdpi/edit-copy.png b/examples/dmledit/views/res/hdpi/edit-copy.png new file mode 100644 index 00000000..477e83a6 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/edit-copy.png differ diff --git a/examples/dmledit/views/res/hdpi/edit-cut.png b/examples/dmledit/views/res/hdpi/edit-cut.png new file mode 100644 index 00000000..07323280 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/edit-cut.png differ diff --git a/examples/dmledit/views/res/hdpi/edit-delete.png b/examples/dmledit/views/res/hdpi/edit-delete.png new file mode 100644 index 00000000..cc6d2af8 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/edit-delete.png differ diff --git a/examples/dmledit/views/res/hdpi/edit-paste.png b/examples/dmledit/views/res/hdpi/edit-paste.png new file mode 100644 index 00000000..6788b022 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/edit-paste.png differ diff --git a/examples/dmledit/views/res/hdpi/edit-redo.png b/examples/dmledit/views/res/hdpi/edit-redo.png new file mode 100644 index 00000000..d759f136 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/edit-redo.png differ diff --git a/examples/dmledit/views/res/hdpi/edit-undo.png b/examples/dmledit/views/res/hdpi/edit-undo.png new file mode 100644 index 00000000..c893a1a6 Binary files /dev/null and b/examples/dmledit/views/res/hdpi/edit-undo.png differ diff --git a/examples/dmledit/views/res/i18n/en.ini b/examples/dmledit/views/res/i18n/en.ini new file mode 100644 index 00000000..f71127d3 --- /dev/null +++ b/examples/dmledit/views/res/i18n/en.ini @@ -0,0 +1,36 @@ +EXIT=Exit +MENU_FILE=&File +MENU_FILE_OPEN=&Open +MENU_FILE_OPEN_RECENT=Open recent +MENU_FILE_SAVE=&Save +MENU_FILE_EXIT=E&xit +MENU_EDIT=&Edit +MENU_EDIT_COPY=&Copy +MENU_EDIT_PASTE=&Paste +MENU_EDIT_CUT=Cu&t +MENU_EDIT_UNDO=&Undo +MENU_EDIT_REDO=&Redo +MENU_EDIT_INDENT=Indent block +MENU_EDIT_UNINDENT=Unindent block +MENU_EDIT_PREFERENCES=&Preferences +MENU_VIEW=&View +MENU_VIEW_LANGUAGE=Interface &Language +MENU_VIEW_LANGUAGE_EN=English +MENU_VIEW_LANGUAGE_RU=Русский +MENU_VIEW_THEME=&Theme +MENU_VIEW_THEME_DEFAULT=Default +MENU_VIEW_THEME_DARK=Dark +MENU_VIEW_THEME_CUSTOM1=Custom 1 +MENU_WINDOW=&Window +MENU_WINDOW_PREFERENCES=&Preferences +MENU_HELP=&Help +MENU_HELP_VIEW_HELP=&View help +MENU_HELP_ABOUT=&About + +TAB_LONG_LIST=Long list +TAB_BUTTONS=Buttons +TAB_ANIMATION=Animation +TAB_TABLE_LAYOUT=Table layout +TAB_EDITORS=Editors +TAB_CANVAS=Canvas + diff --git a/examples/dmledit/views/res/i18n/ru.ini b/examples/dmledit/views/res/i18n/ru.ini new file mode 100644 index 00000000..ab52d3d0 --- /dev/null +++ b/examples/dmledit/views/res/i18n/ru.ini @@ -0,0 +1,34 @@ +EXIT=Выход +MENU_FILE=&Файл +MENU_FILE_OPEN=&Открыть +MENU_FILE_OPEN_RECENT=Открыть из последних +MENU_FILE_SAVE=&Сохранить +MENU_FILE_EXIT=Вы&ход +MENU_EDIT=&Правка +MENU_EDIT_COPY=&Копировать +MENU_EDIT_PASTE=&Вставить +MENU_EDIT_CUT=Вырезать +MENU_EDIT_UNDO=&Отмена +MENU_EDIT_REDO=&Повторить +MENU_EDIT_PREFERENCES=&Настройки +MENU_VIEW=&Вид +MENU_VIEW_LANGUAGE=&Язык интерфейса +MENU_VIEW_LANGUAGE_EN=English +MENU_VIEW_LANGUAGE_RU=Русский +MENU_VIEW_THEME=&Тема +MENU_VIEW_THEME_DEFAULT=Стандартная +MENU_VIEW_THEME_DARK=Тёмная +MENU_VIEW_THEME_CUSTOM1=Пример 1 +MENU_WINDOW=&Окно +MENU_WINDOW_PREFERENCES=&Настройки +MENU_HELP=&Справка +MENU_HELP_VIEW_HELP=&Просмотр справки +MENU_HELP_ABOUT=&О программе + +TAB_LONG_LIST=Длинный список +TAB_BUTTONS=Кнопки +TAB_ANIMATION=Анимация +TAB_TABLE_LAYOUT=Табличный layout +TAB_EDITORS=Редакторы + + diff --git a/examples/dmledit/views/res/mdpi/cr3_logo.png b/examples/dmledit/views/res/mdpi/cr3_logo.png new file mode 100644 index 00000000..6e0d94ea Binary files /dev/null and b/examples/dmledit/views/res/mdpi/cr3_logo.png differ diff --git a/examples/dmledit/views/res/mdpi/document-close.png b/examples/dmledit/views/res/mdpi/document-close.png new file mode 100644 index 00000000..411031eb Binary files /dev/null and b/examples/dmledit/views/res/mdpi/document-close.png differ diff --git a/examples/dmledit/views/res/mdpi/document-open-recent.png b/examples/dmledit/views/res/mdpi/document-open-recent.png new file mode 100644 index 00000000..15847ce4 Binary files /dev/null and b/examples/dmledit/views/res/mdpi/document-open-recent.png differ diff --git a/examples/dmledit/views/res/mdpi/document-open.png b/examples/dmledit/views/res/mdpi/document-open.png new file mode 100644 index 00000000..17076a31 Binary files /dev/null and b/examples/dmledit/views/res/mdpi/document-open.png differ diff --git a/examples/dmledit/views/res/mdpi/document-properties.png b/examples/dmledit/views/res/mdpi/document-properties.png new file mode 100644 index 00000000..12c6b448 Binary files /dev/null and b/examples/dmledit/views/res/mdpi/document-properties.png differ diff --git a/examples/dmledit/views/res/mdpi/document-save-as.png b/examples/dmledit/views/res/mdpi/document-save-as.png new file mode 100644 index 00000000..41c52aaa Binary files /dev/null and b/examples/dmledit/views/res/mdpi/document-save-as.png differ diff --git a/examples/dmledit/views/res/mdpi/document-save.png b/examples/dmledit/views/res/mdpi/document-save.png new file mode 100644 index 00000000..3f7fd63c Binary files /dev/null and b/examples/dmledit/views/res/mdpi/document-save.png differ diff --git a/examples/dmledit/views/res/mdpi/edit-copy.png b/examples/dmledit/views/res/mdpi/edit-copy.png new file mode 100644 index 00000000..54eaf777 Binary files /dev/null and b/examples/dmledit/views/res/mdpi/edit-copy.png differ diff --git a/examples/dmledit/views/res/mdpi/edit-cut.png b/examples/dmledit/views/res/mdpi/edit-cut.png new file mode 100644 index 00000000..f4a55e3d Binary files /dev/null and b/examples/dmledit/views/res/mdpi/edit-cut.png differ diff --git a/examples/dmledit/views/res/mdpi/edit-indent.png b/examples/dmledit/views/res/mdpi/edit-indent.png new file mode 100644 index 00000000..ffd0730d Binary files /dev/null and b/examples/dmledit/views/res/mdpi/edit-indent.png differ diff --git a/examples/dmledit/views/res/mdpi/edit-paste.png b/examples/dmledit/views/res/mdpi/edit-paste.png new file mode 100644 index 00000000..3f71b1c7 Binary files /dev/null and b/examples/dmledit/views/res/mdpi/edit-paste.png differ diff --git a/examples/dmledit/views/res/mdpi/edit-redo.png b/examples/dmledit/views/res/mdpi/edit-redo.png new file mode 100644 index 00000000..c03bba0c Binary files /dev/null and b/examples/dmledit/views/res/mdpi/edit-redo.png differ diff --git a/examples/dmledit/views/res/mdpi/edit-undo.png b/examples/dmledit/views/res/mdpi/edit-undo.png new file mode 100644 index 00000000..f1239421 Binary files /dev/null and b/examples/dmledit/views/res/mdpi/edit-undo.png differ diff --git a/examples/dmledit/views/res/mdpi/edit-unindent.png b/examples/dmledit/views/res/mdpi/edit-unindent.png new file mode 100644 index 00000000..1e6f2cdb Binary files /dev/null and b/examples/dmledit/views/res/mdpi/edit-unindent.png differ diff --git a/examples/dmledit/views/resources.list b/examples/dmledit/views/resources.list new file mode 100644 index 00000000..5bdf3a30 --- /dev/null +++ b/examples/dmledit/views/resources.list @@ -0,0 +1,16 @@ +res/i18n/en.ini +res/i18n/ru.ini +res/mdpi/cr3_logo.png +res/mdpi/document-close.png +res/mdpi/document-open-recent.png +res/mdpi/document-open.png +res/mdpi/document-properties.png +res/mdpi/document-save-as.png +res/mdpi/document-save.png +res/mdpi/edit-copy.png +res/mdpi/edit-cut.png +res/mdpi/edit-indent.png +res/mdpi/edit-paste.png +res/mdpi/edit-redo.png +res/mdpi/edit-undo.png +res/mdpi/edit-unindent.png diff --git a/examples/example1/src/example1.d b/examples/example1/src/example1.d index 691a0b19..78a9a90d 100644 --- a/examples/example1/src/example1.d +++ b/examples/example1/src/example1.d @@ -446,7 +446,6 @@ extern (C) int UIAppMain(string[] args) { layout.addChild(new VSpacer()); // vertical spacer to fill extra space - import dlangui.core.parser; Widget w = parseML(q{ VerticalLayout { id: vlayout diff --git a/src/dlangui/package.d b/src/dlangui/package.d index 3af3c913..2a477cc2 100644 --- a/src/dlangui/package.d +++ b/src/dlangui/package.d @@ -72,7 +72,9 @@ public import dlangui.widgets.appframe; public import dlangui.widgets.statusline; public import dlangui.widgets.docks; public import dlangui.platforms.common.platform; +public import dlangui.core.parser; // some useful imports from Phobos +public import std.algorithm : equal; public import std.conv : to; public import std.utf : toUTF32, toUTF8;