diff --git a/dlanguilib.sln b/dlanguilib.sln
index 7c749ed0..020af80f 100644
--- a/dlanguilib.sln
+++ b/dlanguilib.sln
@@ -4,6 +4,9 @@ Microsoft Visual Studio Solution File, Format Version 11.00
Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "dlangui", "dlanguilib.visualdproj", "{5FF17402-9997-4D0E-8068-6D84B8769D98}"
EndProject
Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "example1", "examples\example1\example1.visualdproj", "{68C78CC1-6176-4C60-B4B6-520475C26D23}"
+ ProjectSection(ProjectDependencies) = postProject
+ {5FF17402-9997-4D0E-8068-6D84B8769D98} = {5FF17402-9997-4D0E-8068-6D84B8769D98}
+ EndProjectSection
EndProject
Project("{002A2DE9-8BB6-484D-9802-7E4AD4084715}") = "test", "examples\test\test.visualdproj", "{3AA2FFC7-A7A5-4BAC-BED9-2F30E1A893FE}"
EndProject
diff --git a/examples/example1/winmain.d b/examples/example1/winmain.d
index d1262957..a83e2575 100644
--- a/examples/example1/winmain.d
+++ b/examples/example1/winmain.d
@@ -56,7 +56,7 @@ extern (C) int UIAppMain(string[] args) {
Log.e("Sample error #", 22);
Window window = Platform.instance().createWindow("My Window", null);
- Widget myWidget = new TextWidget();
+ Widget myWidget = (new TextWidget()).textColor(0x40FF4000);
myWidget.text = "Some strange text string. 1234567890";
myWidget.alignment = Align.Center;
window.mainWidget = myWidget;
diff --git a/examples/test/Debug/test.build b/examples/test/Debug/test.build
deleted file mode 100644
index e2fb84fe..00000000
--- a/examples/test/Debug/test.build
+++ /dev/null
@@ -1,23 +0,0 @@
-set PATH=C:\D\dmd2\windows\bin;C:\Program Files\Microsoft SDKs\Windows\v7.1\\bin;%PATH%
-dmd -g -debug -X -Xf"Debug\test.json" -deps="Debug\test.dep" -c -of"Debug\test.obj" main.d
-if errorlevel 1 goto reportError
-
-set LIB="C:\D\dmd2\windows\bin\\..\lib"
-echo. > Debug\test.build.lnkarg
-echo "Debug\test.obj","Debug\test.exe_cv","Debug\test.map",user32.lib+ >> Debug\test.build.lnkarg
-echo kernel32.lib/NOMAP/CO/NOI >> Debug\test.build.lnkarg
-
-"C:\Tools\VisualDAddon\pipedmd.exe" -deps Debug\test.lnkdep link.exe @Debug\test.build.lnkarg
-if errorlevel 1 goto reportError
-if not exist "Debug\test.exe_cv" (echo "Debug\test.exe_cv" not created! && goto reportError)
-echo Converting debug information...
-"C:\Tools\VisualDAddon\cv2pdb\cv2pdb.exe" "Debug\test.exe_cv" "Debug\test.exe"
-if errorlevel 1 goto reportError
-if not exist "Debug\test.exe" (echo "Debug\test.exe" not created! && goto reportError)
-
-goto noError
-
-:reportError
-echo Building Debug\test.exe failed!
-
-:noError
diff --git a/examples/test/Debug/test.build.cmd b/examples/test/Debug/test.build.cmd
deleted file mode 100644
index 7cafab41..00000000
--- a/examples/test/Debug/test.build.cmd
+++ /dev/null
@@ -1,23 +0,0 @@
-set PATH=C:\D\dmd2\windows\bin;C:\Program Files\Microsoft SDKs\Windows\v7.1\\bin;%PATH%
-dmd -g -debug -X -Xf"Debug\test.json" -deps="Debug\test.dep" -c -of"Debug\test.obj" main.d
-if errorlevel 1 goto reportError
-
-set LIB="C:\D\dmd2\windows\bin\\..\lib"
-echo. > Debug\test.build.lnkarg
-echo "Debug\test.obj","Debug\test.exe_cv","Debug\test.map",user32.lib+ >> Debug\test.build.lnkarg
-echo kernel32.lib/NOMAP/CO/NOI >> Debug\test.build.lnkarg
-
-"C:\Tools\VisualDAddon\pipedmd.exe" -deps Debug\test.lnkdep link.exe @Debug\test.build.lnkarg
-if errorlevel 1 goto reportError
-if not exist "Debug\test.exe_cv" (echo "Debug\test.exe_cv" not created! && goto reportError)
-echo Converting debug information...
-"C:\Tools\VisualDAddon\cv2pdb\cv2pdb.exe" "Debug\test.exe_cv" "Debug\test.exe"
-if errorlevel 1 goto reportError
-if not exist "Debug\test.exe" (echo "Debug\test.exe" not created! && goto reportError)
-
-goto noError
-
-:reportError
-echo Building Debug\test.exe failed!
-
-:noError
diff --git a/examples/test/Debug/test.build.lnkarg b/examples/test/Debug/test.build.lnkarg
deleted file mode 100644
index 2a00fb29..00000000
--- a/examples/test/Debug/test.build.lnkarg
+++ /dev/null
@@ -1,3 +0,0 @@
-
-"Debug\test.obj","Debug\test.exe_cv","Debug\test.map",user32.lib+
-kernel32.lib/NOMAP/CO/NOI
diff --git a/examples/test/Debug/test.buildlog.html b/examples/test/Debug/test.buildlog.html
deleted file mode 100644
index 8b09870d..00000000
--- a/examples/test/Debug/test.buildlog.html
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-Building Debug\test.exe
- |
-
-set PATH=C:\D\dmd2\windows\bin;C:\Program Files\Microsoft SDKs\Windows\v7.1\\bin;%PATH%
-dmd -g -debug -X -Xf"Debug\test.json" -deps="Debug\test.dep" -c -of"Debug\test.obj" main.d
-if errorlevel 1 goto reportError
-
-set LIB="C:\D\dmd2\windows\bin\\..\lib"
-echo. > Debug\test.build.lnkarg
-echo "Debug\test.obj","Debug\test.exe_cv","Debug\test.map",user32.lib+ >> Debug\test.build.lnkarg
-echo kernel32.lib/NOMAP/CO/NOI >> Debug\test.build.lnkarg
-
-"C:\Tools\VisualDAddon\pipedmd.exe" -deps Debug\test.lnkdep link.exe @Debug\test.build.lnkarg
-if errorlevel 1 goto reportError
-if not exist "Debug\test.exe_cv" (echo "Debug\test.exe_cv" not created! && goto reportError)
-echo Converting debug information...
-"C:\Tools\VisualDAddon\cv2pdb\cv2pdb.exe" "Debug\test.exe_cv" "Debug\test.exe"
-if errorlevel 1 goto reportError
-if not exist "Debug\test.exe" (echo "Debug\test.exe" not created! && goto reportError)
-
-goto noError
-
-:reportError
-echo Building Debug\test.exe failed!
-
-:noError
-
-main.d(26): Error: cannot modify const expression cfoo2
-Building Debug\test.exe failed!
-
\ No newline at end of file
diff --git a/examples/test/Debug/test.dep b/examples/test/Debug/test.dep
deleted file mode 100644
index 8c0d5794..00000000
--- a/examples/test/Debug/test.dep
+++ /dev/null
@@ -1,222 +0,0 @@
-main (main.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.config (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\config.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d) : private : core.stdc.config (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\config.d)
-core.stdc.stddef (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stddef.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d) : private : core.stdc.stddef (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stddef.d)
-core.stdc.stdarg (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdarg.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d) : private : core.stdc.stdarg (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdarg.d)
-core.stdc.stdint (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdint.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.stdint (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdint.d) : private : core.stdc.stddef (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stddef.d)
-core.stdc.signal (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\signal.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.stdint (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdint.d) : private : core.stdc.signal (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\signal.d)
-core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d) : private : core.stdc.config (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\config.d)
-core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d) : private : core.stdc.stdarg (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdarg.d)
-core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d) : private : core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d)
-core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d) : public : core.stdc.stddef (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stddef.d)
-core.stdc.time (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\time.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.time (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\time.d) : private : core.stdc.config (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\config.d)
-core.stdc.time (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\time.d) : private : core.stdc.stddef (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stddef.d)
-core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d) : public : core.stdc.time (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\time.d)
-core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d) : public : core.stdc.stdint (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdint.d)
-core.stdc.stdint (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdint.d) : private : core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d)
-core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d) : private : core.stdc.stdint (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdint.d):intptr_t
-core.sys.windows.windows (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\sys\\windows\\windows.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d) : private : core.sys.windows.windows (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\sys\\windows\\windows.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : public : core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\exception.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\exception.d) : private : core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : core.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\exception.d):RangeError,onRangeError
-core.vararg (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\vararg.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : core.vararg (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\vararg.d)
-core.stdc.stdlib (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdlib.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.stdlib (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdlib.d) : private : core.stdc.config (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\config.d)
-core.stdc.stdlib (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdlib.d) : public : core.stdc.stddef (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stddef.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : core.stdc.stdlib (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdlib.d)
-core.stdc.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\string.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\string.d) : private : core.stdc.stddef (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stddef.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : core.stdc.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\string.d)
-std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : core.stdc.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\string.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.memory (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\memory.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : core.memory (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\memory.d)
-core.bitop (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\bitop.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : core.bitop (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\bitop.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d)
-std.ascii (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\ascii.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.ascii (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\ascii.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d)
-std.c.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\string.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.c.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\string.d) : public : core.stdc.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\string.d)
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : std.c.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\string.d)
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d) : public : std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d)
-std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d) : private : std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d):copy,count,equal,filter,filterBidirectional,findSplitBefore,group,isSorted,joiner,move,map,max,min,sort,swap,until
-std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d):TypeTuple,allSatisfy
-std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d) : private : std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d):Tuple,tuple
-std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d):allSatisfy,staticMap,TypeTuple
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d)
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : core.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\exception.d)
-core.stdc.errno (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\errno.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d) : private : core.stdc.errno (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\errno.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private static : std.ascii (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\ascii.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : core.stdc.stdlib (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdlib.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : core.bitop (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\bitop.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d)
-std.internal.unicode_tables (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\internal\\unicode_tables.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.internal.unicode_tables (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\internal\\unicode_tables.d)
-std.math (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\math.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.math (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\math.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-core.stdc.math (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\math.d) : private : core.stdc.config (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\config.d)
-std.math (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\math.d) : private : core.stdc.math (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\math.d)
-std.math (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\math.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d) : private : std.math (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\math.d):pow
-std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d):TypeTuple,staticMap,allSatisfy
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d)
-std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d)
-std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d)
-std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d) : private : std.c.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\string.d):memcpy
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.ascii (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\ascii.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : core.stdc.stdlib (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdlib.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : core.stdc.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\string.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : core.vararg (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\vararg.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.ascii (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\ascii.d)
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : core.bitop (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\bitop.d)
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d)
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d)
-std.system (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\system.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.system (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\system.d)
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.system (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\system.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d)
-std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d) : private : std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d)
-std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d) : private : std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d)
-std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.math (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\math.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d) : private : std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d)
-std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d) : private : std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d):unaryFun,binaryFun
-std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d) : private : std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d):tuple,Tuple
-std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d):TypeTuple,staticMap,allSatisfy
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.ascii (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\ascii.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.functional (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\functional.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.typecons (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typecons.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.typetuple (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\typetuple.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.uni (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\uni.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d)
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.algorithm (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\algorithm.d):startsWith,endsWith,cmp,count
-std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d) : private : std.array (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\array.d):join,split
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d):KeepTerminator
-std.c.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\stdio.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.c.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\stdio.d) : public : core.stdc.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdio.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private static : std.c.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\stdio.d)
-std.stdiobase (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdiobase.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : std.stdiobase (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdiobase.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : core.stdc.errno (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\errno.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : core.stdc.stddef (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stddef.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : core.stdc.stdlib (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\stdlib.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : core.memory (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\memory.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : core.stdc.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\string.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : core.stdc.wchar_ (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\stdc\\wchar_.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : core.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\exception.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : std.range (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\range.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d):Unqual,isSomeChar,isAggregateType,isSomeString,isIntegral,isBoolean,ParameterTypeTuple
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : std.c.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\stdio.d):__fhnd_info,FHND_WCHAR,FHND_TEXT
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : std.traits (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\traits.d):isScalarType,isArray
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : core.sys.windows.windows (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\sys\\windows\\windows.d)
-std.windows.syserror (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\syserror.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.windows.charset (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\charset.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.windows.charset (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\charset.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d)
-std.c.windows.windows (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\windows\\windows.d) : private : object (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\object.di)
-std.c.windows.windows (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\windows\\windows.d) : public : core.sys.windows.windows (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\sys\\windows\\windows.d)
-std.windows.charset (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\charset.d) : private : std.c.windows.windows (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\c\\windows\\windows.d)
-std.windows.charset (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\charset.d) : private : std.windows.syserror (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\syserror.d)
-std.windows.charset (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\charset.d) : private : std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d)
-std.windows.charset (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\charset.d) : private : std.string (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\string.d)
-std.windows.syserror (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\syserror.d) : private : std.windows.charset (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\charset.d)
-std.windows.syserror (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\syserror.d) : private : core.sys.windows.windows (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\sys\\windows\\windows.d)
-std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d) : private : std.windows.syserror (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\windows\\syserror.d)
-main (main.d) : private : std.stdio (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\stdio.d)
-main (main.d) : private : core.bitop (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\bitop.d)
-main (main.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d):errnoEnforce
-main (main.d) : private : std.utf (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\utf.d):isValidDchar
-main (main.d) : private : std.conv (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\conv.d):toTextRange
-main (main.d) : private : core.bitop (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\bitop.d)
-main (main.d) : private : std.exception (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\exception.d):errnoEnforce
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : core.bitop (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\druntime\\import\\core\\bitop.d)
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d):FormatSpec,formatValue
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d):FormatSpec,formatValue
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d):FormatSpec,formatValue
-std.bitmanip (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\bitmanip.d) : private : std.format (C:\\D\\dmd2\\windows\\bin\\..\\..\\src\\phobos\\std\\format.d):FormatSpec,formatValue
diff --git a/examples/test/Debug/test.exe b/examples/test/Debug/test.exe
deleted file mode 100644
index e80cb5f7..00000000
Binary files a/examples/test/Debug/test.exe and /dev/null differ
diff --git a/examples/test/Debug/test.exe_cv b/examples/test/Debug/test.exe_cv
deleted file mode 100644
index 30364413..00000000
Binary files a/examples/test/Debug/test.exe_cv and /dev/null differ
diff --git a/examples/test/Debug/test.json b/examples/test/Debug/test.json
deleted file mode 100644
index c287658f..00000000
--- a/examples/test/Debug/test.json
+++ /dev/null
@@ -1,98 +0,0 @@
-[
- {
- "name" : "main",
- "kind" : "module",
- "file" : "main.d",
- "members" : [
- {
- "name" : "std.stdio",
- "kind" : "import",
- "line" : 3,
- "protection" : "private"
- },
- {
- "name" : "Foo",
- "kind" : "class",
- "line" : 5,
- "members" : [
- {
- "name" : "_data",
- "kind" : "variable",
- "line" : 6,
- "deco" : "i",
- "offset" : 8
- },
- {
- "name" : "this",
- "kind" : "constructor",
- "line" : 7,
- "deco" : "FiZC4main3Foo",
- "originalType" : "(int v)",
- "parameters" : [
- {
- "name" : "v",
- "deco" : "i"
- }
- ],
- "endline" : 9
- },
- {
- "name" : "data",
- "kind" : "function",
- "line" : 10,
- "storageClass" : [
- "@property"
- ],
- "deco" : "xFNdZi",
- "originalType" : "const int()",
- "endline" : 10
- }
- ]
- },
- {
- "name" : "Bar",
- "kind" : "struct",
- "line" : 13,
- "members" : [
- {
- "name" : "_data",
- "kind" : "variable",
- "line" : 14,
- "deco" : "i",
- "offset" : 0
- },
- {
- "name" : "data",
- "kind" : "function",
- "line" : 15,
- "storageClass" : [
- "@property"
- ],
- "deco" : "xFNdZi",
- "originalType" : "const int()",
- "endline" : 15
- }
- ]
- },
- {
- "name" : "Foo2",
- "kind" : "class",
- "line" : 18,
- "members" : []
- },
- {
- "name" : "main",
- "kind" : "function",
- "line" : 21,
- "deco" : "FAAyaZi",
- "parameters" : [
- {
- "name" : "argv",
- "deco" : "AAya"
- }
- ],
- "endline" : 36
- }
- ]
- }
-]
\ No newline at end of file
diff --git a/examples/test/Debug/test.map b/examples/test/Debug/test.map
deleted file mode 100644
index b962537a..00000000
--- a/examples/test/Debug/test.map
+++ /dev/null
@@ -1,44 +0,0 @@
-
- Start Length Name Class
- 0002:00000000 00023E28H _TEXT CODE 32-bit
- 0002:00023E28 000001B6H ICODE ICODE 32-bit
- 0003:00000000 00000004H .tls tls 32-bit
- 0003:00000010 00000034H .tls$ tls 32-bit
- 0003:00000050 00000004H .tls$ZZZ tls 32-bit
- 0004:00000000 00000004H .CRT$XIA DATA 32-bit
- 0004:00000010 00000004H .CRT$XIZ DATA 32-bit
- 0004:00000020 00000004H .CRT$XCA DATA 32-bit
- 0004:00000030 00000004H .CRT$XCZ DATA 32-bit
- 0004:00000040 00000004H .CRT$XPA DATA 32-bit
- 0004:00000050 00000004H .CRT$XPZ DATA 32-bit
- 0004:00000060 00000004H .CRT$XTA DATA 32-bit
- 0004:00000070 00000004H .CRT$XTZ DATA 32-bit
- 0004:00000074 00000000H IMP__DATA IMP__DATA 32-bit
- 0004:00000080 0000A898H _DATA DATA 32-bit
- 0004:0000A918 00000000H FMB DATA 32-bit
- 0004:0000A918 00000074H FM DATA 32-bit
- 0004:0000A98C 00000000H FME DATA 32-bit
- 0004:0000A98C 00000000H XCB DATA 32-bit
- 0004:0000A98C 0000000CH XC DATA 32-bit
- 0004:0000A998 00000000H XCE DATA 32-bit
- 0004:0000A998 00000000H XIB DATA 32-bit
- 0004:0000A998 00000014H XI DATA 32-bit
- 0004:0000A9AC 00000000H XIE DATA 32-bit
- 0004:0000A9AC 00000000H XIFCB DATA 32-bit
- 0004:0000A9AC 00000000H XIFU DATA 32-bit
- 0004:0000A9AC 00000000H XIFL DATA 32-bit
- 0004:0000A9AC 00000004H XIFM DATA 32-bit
- 0004:0000A9B0 00000000H XIFCE DATA 32-bit
- 0004:0000A9B0 00000000H CONST CONST 32-bit
- 0004:0000A9B0 00000000H EEND ENDBSS 32-bit
- 0004:0000A9B0 000018C0H _BSS BSS 32-bit
- 0004:0000C270 00000000H XOB BSS 32-bit
- 0004:0000C270 00000004H XO BSS 32-bit
- 0004:0000C274 00000000H XOE BSS 32-bit
- 0004:0000C274 00000000H XOFB BSS 32-bit
- 0004:0000C274 00000104H XOF BSS 32-bit
- 0004:0000C378 00000000H XOFE BSS 32-bit
- 0004:0000C380 00000411H c_common BSS 32-bit
- 0004:0000C7A0 00000000H STACK STACK 32-bit
-
-Program entry point at 0001F858
diff --git a/examples/test/Debug/test.pdb b/examples/test/Debug/test.pdb
deleted file mode 100644
index a211a18d..00000000
Binary files a/examples/test/Debug/test.pdb and /dev/null differ
diff --git a/src/dlangui/widgets/styles.d b/src/dlangui/widgets/styles.d
index a51cdea9..55aa68e9 100644
--- a/src/dlangui/widgets/styles.d
+++ b/src/dlangui/widgets/styles.d
@@ -92,35 +92,35 @@ class Style {
/// font size
@property FontFamily fontFamily() const {
- if (_fontFamily != FontFamily.Unspecified)
+ if (_fontFamily != FontFamily.Unspecified || _parentStyle is null)
return _fontFamily;
else
return parentStyle.fontFamily;
}
/// font size
@property string fontFace() const {
- if (_fontFace !is null)
+ if (_fontFace !is null || _parentStyle is null)
return _fontFace;
else
return parentStyle.fontFace;
}
/// font style - italic
@property bool fontItalic() const {
- if (_fontStyle != FONT_STYLE_UNSPECIFIED)
+ if (_fontStyle != FONT_STYLE_UNSPECIFIED || _parentStyle is null)
return _fontStyle == FONT_STYLE_ITALIC;
else
return parentStyle.fontItalic;
}
/// font weight
@property ushort fontWeight() const {
- if (_fontWeight != FONT_WEIGHT_UNSPECIFIED)
+ if (_fontWeight != FONT_WEIGHT_UNSPECIFIED || _parentStyle is null)
return _fontWeight;
else
return parentStyle.fontWeight;
}
/// font size
@property ushort fontSize() const {
- if (_fontSize != FONT_SIZE_UNSPECIFIED)
+ if (_fontSize != FONT_SIZE_UNSPECIFIED || _parentStyle is null)
return _fontSize;
else
return parentStyle.fontSize;
@@ -140,7 +140,7 @@ class Style {
/// text color
@property uint textColor() const {
- if (_textColor != COLOR_UNSPECIFIED)
+ if (_textColor != COLOR_UNSPECIFIED || _parentStyle is null)
return _textColor;
else
return parentStyle.textColor;
@@ -148,23 +148,42 @@ class Style {
/// background color
@property uint backgroundColor() const {
- if (_backgroundColor != COLOR_UNSPECIFIED)
+ if (_backgroundColor != COLOR_UNSPECIFIED || _parentStyle is null)
return _backgroundColor;
else
return parentStyle.backgroundColor;
}
+ /// get full alignment (both vertical and horizontal)
+ @property ubyte alignment() const {
+ if (_align != Align.Unspecified || _parentStyle is null)
+ return _align;
+ else
+ return parentStyle.alignment;
+ }
/// vertical alignment: Top / VCenter / Bottom
@property ubyte valign() const { return _align & Align.VCenter; }
/// horizontal alignment: Left / HCenter / Right
@property ubyte halign() const { return _align & Align.HCenter; }
+ /// set alignment
+ @property Style alignment(ubyte value) {
+ _align = value;
+ return this;
+ }
+
@property Style fontFace(string face) {
_fontFace = face;
_font.clear();
return this;
}
+ @property Style fontFamily(FontFamily family) {
+ _fontFamily = family;
+ _font.clear();
+ return this;
+ }
+
@property Style fontStyle(ubyte style) {
_fontStyle = style;
_font.clear();
@@ -241,6 +260,7 @@ class Style {
}
}
+/// Theme - root for style hierarhy.
class Theme : Style {
protected Style[string] _byId;
@@ -268,6 +288,7 @@ class Theme : Style {
Style style = new Style(this, id);
if (id !is null)
_byId[id] = style;
+ style._parentStyle = this; // as initial value, use theme as parent
return style;
}
@@ -279,8 +300,10 @@ class Theme : Style {
}
}
-__gshared Theme currentTheme;
+/// to access current theme
+private __gshared Theme _currentTheme;
+@property Theme currentTheme() { return _currentTheme; }
static this() {
- currentTheme = new Theme("default");
+ _currentTheme = new Theme("default");
}
diff --git a/src/dlangui/widgets/widget.d b/src/dlangui/widgets/widget.d
index cffeec71..2c622cb6 100644
--- a/src/dlangui/widgets/widget.d
+++ b/src/dlangui/widgets/widget.d
@@ -7,14 +7,23 @@ public import dlangui.graphics.fonts;
import dlangui.platforms.common.platform;
class Widget {
+ /// current widget position, set by layout()
protected Rect _pos;
+ /// style id to lookup style in theme
protected string _styleId;
+ /// own copy of style - to override some of style properties, null of no properties overriden
protected Style _ownStyle;
+ /// width measured by measure()
protected int _measuredWidth;
+ /// height measured by measure()
protected int _measuredHeight;
+ /// true to force layout
protected bool _needLayout;
+ /// true to force redraw
protected bool _needDraw;
+ /// parent widget
protected Widget _parent;
+ /// window (to be used for top level widgets only!)
protected Window _window;
this() {
@@ -22,46 +31,103 @@ class Widget {
_needDraw = true;
}
- //@property
- const (Style) style() const {
+ /// accessor to style - by lookup in theme by styleId (if style id is not set, theme base style will be used).
+ protected @property const (Style) style() const {
if (_ownStyle !is null)
return _ownStyle;
return currentTheme.get(_styleId);
}
- //@property
- Style ownStyle() {
+ /// enforces widget's own style - allows override some of style properties
+ protected @property Style ownStyle() {
if (_ownStyle is null)
_ownStyle = currentTheme.modifyStyle(_styleId);
return _ownStyle;
}
+
+ //======================================================
+ // Style related properties
+
+ /// returns widget style id, null if not set
@property void styleId(string id) { _styleId = id; }
- @property string styleId() { return _styleId; }
- @property Rect margins() { return style.margins; }
- @property void margins(Rect rc) { ownStyle.margins = rc; }
- @property Rect padding() { return style.padding; }
- @property void padding(Rect rc) { ownStyle.padding = rc; }
- @property uint backgroundColor() { return style.backgroundColor; }
- @property void backgroundColor(uint color) { ownStyle.backgroundColor = color; }
+ /// set widget style id
+ @property string styleId() const { return _styleId; }
+ /// get margins (between widget bounds and its background)
+ @property Rect margins() const { return style.margins; }
+ /// set margins for widget - override one from style
+ @property Widget margins(Rect rc) { ownStyle.margins = rc; return this; }
+ /// get padding (between background bounds and content of widget)
+ @property Rect padding() const { return style.padding; }
+ /// set padding for widget - override one from style
+ @property Widget padding(Rect rc) { ownStyle.padding = rc; return this; }
+ /// returns background color
+ @property uint backgroundColor() const { return style.backgroundColor; }
+ /// set background color for widget - override one from style
+ @property Widget backgroundColor(uint color) { ownStyle.backgroundColor = color; return this; }
+ /// get text color (ARGB 32 bit value)
+ @property uint textColor() const { return style.textColor; }
+ /// set text color (ARGB 32 bit value)
+ @property Widget textColor(uint value) { ownStyle.textColor = value; return this; }
+ /// returns font face
+ @property string fontFace() const { return style.fontFace; }
+ /// set font face for widget - override one from style
+ @property Widget fontFace(string face) { ownStyle.fontFace = face; return this; }
+ /// returns font style (italic/normal)
+ @property bool fontItalic() const { return style.fontItalic; }
+ /// set font style (italic/normal) for widget - override one from style
+ @property Widget fontItalic(bool italic) { ownStyle.fontStyle = italic ? FONT_STYLE_ITALIC : FONT_STYLE_NORMAL; return this; }
+ /// returns font weight
+ @property ushort fontWeight() const { return style.fontWeight; }
+ /// set font weight for widget - override one from style
+ @property Widget fontWeight(ushort weight) { ownStyle.fontWeight = weight; return this; }
+ /// returns font size in pixels
+ @property ushort fontSize() const { return style.fontSize; }
+ /// set font size for widget - override one from style
+ @property Widget fontSize(ushort size) { ownStyle.fontSize = size; return this; }
+ /// returns font family
+ @property FontFamily fontFamily() const { return style.fontFamily; }
+ /// set font family for widget - override one from style
+ @property Widget fontFamily(FontFamily family) { ownStyle.fontFamily = family; return this; }
+ /// returns alignment (combined vertical and horizontal)
+ @property ubyte alignment() const { return style.alignment; }
+ /// sets alignment (combined vertical and horizontal)
+ @property Widget alignment(ubyte value) { ownStyle.alignment = value; return this; }
+ /// returns horizontal alignment
+ @property Align valign() { return cast(Align)(alignment & Align.VCenter); }
+ /// returns vertical alignment
+ @property Align halign() { return cast(Align)(alignment & Align.HCenter); }
+ /// returns font set for widget using style or set manually
+ @property FontRef font() const { return style.font; }
+
+ /// returns widget content text (override to support this)
+ @property dstring text() { return ""; }
+ /// sets widget content text (override to support this)
+ @property void text(dstring s) { }
+
+ //==================================================================
+ // Layout and drawing related methods
+
+ /// returns true if layout is required for widget and its children
@property bool needLayout() { return _needLayout; }
+ /// returns true if redraw is required for widget and its children
@property bool needDraw() { return _needDraw; }
- @property int childCount() { return 0; }
- Widget child(int index) { return null; }
- @property Widget parent() { return _parent; }
- @property void parent(Widget parent) { _parent = parent; }
- @property Window window() {
- Widget p = this;
- while (p !is null) {
- if (p._window !is null)
- return p._window;
- p = p.parent;
- }
- return null;
- }
- @property void window(Window window) { _window = window; }
+ /// returns measured width (calculated during measure() call)
@property measuredWidth() { return _measuredWidth; }
+ /// returns measured height (calculated during measure() call)
@property measuredHeight() { return _measuredHeight; }
+ /// returns current width of widget in pixels
@property int width() { return _pos.width; }
+ /// returns current height of widget in pixels
@property int height() { return _pos.height; }
+ /// Measure widget according to desired width and height constraints. (Step 1 of two phase layout).
+ void measure(int width, int height) {
+ _measuredWidth = _measuredHeight = 0;
+ }
+ /// Set widget rectangle to specified value and layout widget contents. (Step 2 of two phase layout).
+ void layout(Rect rc) {
+ _pos = rc;
+ _needLayout = false;
+ }
+ /// applies margins to rectangle
void applyMargins(ref Rect rc) {
Rect m = margins;
rc.left += m.left;
@@ -69,6 +135,7 @@ class Widget {
rc.bottom -= m.bottom;
rc.right -= m.right;
}
+ /// applies padding to rectangle
void applyPadding(ref Rect rc) {
Rect m = padding;
rc.left += m.left;
@@ -76,13 +143,7 @@ class Widget {
rc.bottom -= m.bottom;
rc.right -= m.right;
}
- void measure(int width, int height) {
- _measuredWidth = _measuredHeight = 0;
- }
- void layout(Rect rc) {
- _pos = rc;
- _needLayout = false;
- }
+ /// Draw widget at its position to buffer
void onDraw(DrawBuf buf) {
Rect rc = _pos;
applyMargins(rc);
@@ -92,19 +153,7 @@ class Widget {
buf.fillRect(rc.left, rc.top + rc.height / 2, rc.right, rc.top + rc.height / 2 + 2, 0xFF80FF);
_needDraw = false;
}
- ref FontRef getFont() {
- return FontManager.instance.getFont(24, FontWeight.Normal, false, FontFamily.SansSerif, "Arial");
- }
- @property dstring text() { return ""; }
- @property void text(dstring s) { }
- protected uint _textColor = 0x000000;
- @property uint textColor() { return _textColor; }
- @property void textColor(uint value) { _textColor = value; }
- protected ubyte _alignment = Align.Left | Align.Top;
- @property ubyte alignment() { return _alignment; }
- @property Align valign() { return cast(Align)(_alignment & Align.VCenter); }
- @property Align halign() { return cast(Align)(_alignment & Align.HCenter); }
- @property void alignment(ubyte value) { _alignment = value; }
+ /// Applies alignment for content of size sz - set rectangle rc to aligned value of content inside of initial value of rc.
void applyAlign(ref Rect rc, Point sz) {
if (valign == Align.Bottom) {
rc.top = rc.bottom - sz.y;
@@ -125,6 +174,33 @@ class Widget {
rc.right = rc.left + sz.x;
}
}
+
+ // ===========================================================
+ // Widget hierarhy methods
+
+ /// returns number of children of this widget
+ @property int childCount() { return 0; }
+ /// returns child by index
+ Widget child(int index) { return null; }
+ /// returns parent widget, null for top level widget
+ @property Widget parent() { return _parent; }
+ /// sets parent for widget
+ @property void parent(Widget parent) { _parent = parent; }
+ /// returns window (if widget or its parent is attached to window)
+ @property Window window() {
+ Widget p = this;
+ while (p !is null) {
+ if (p._window !is null)
+ return p._window;
+ p = p.parent;
+ }
+ return null;
+ }
+ /// sets window (to be used for top level widget from Window implementation). TODO: hide it from API?
+ @property void window(Window window) { _window = window; }
+
+
+
}
class TextWidget : Widget {
@@ -145,7 +221,7 @@ class TextWidget : Widget {
buf.fillRect(_pos, backgroundColor);
applyPadding(rc);
ClipRectSaver(buf, rc);
- FontRef font = getFont();
+ FontRef font = font();
Point sz = font.textSize(text);
applyAlign(rc, sz);
font.drawText(buf, rc.left, rc.top, text, textColor);