mirror of https://github.com/buggins/dlangui.git
79 lines
2.6 KiB
Markdown
79 lines
2.6 KiB
Markdown
Dlang UI
|
|
========
|
|
|
|
GUI for D programming language, written in D.
|
|
|
|
* Crossplatform (Win32 and Linux are supported in current version)
|
|
* Mostly inspired by Android UI API (layouts, styles, two phase layout, ...)
|
|
* Supports highly customizable UI themes and styles
|
|
* Supports internationalization
|
|
* Hardware acceleration using OpenGL (when built with USE_OPENGL)
|
|
* Fallback to Win32 API / XCB when OpenGL is not available
|
|
* Actually it's a port (with major refactoring) of GUI library for cross platform OpenGL based implementation of Cool Reader app prokeject from C++.
|
|
* Almost ready for 2D games development
|
|
* Goal: provide set of widgets suitable for building of IDE.
|
|
|
|
|
|
Win32 builds
|
|
------------
|
|
|
|
* Under windows, uses Win32 API as backend.
|
|
* Optionally, may use OpenGL acceleration via DerelictGL3/WGL.
|
|
* Uses Win32 API for font rendering.
|
|
* Optinally can use FreeType for font rendering.
|
|
|
|
Linux builds
|
|
------------
|
|
|
|
* Uses XCB (X C binding) as backend.
|
|
* Uses shared memory images for faster drawing.
|
|
* Uses FreeType for font rendering.
|
|
* TODO: Use FontConfig to get font list.
|
|
* TODO: OpenGL initializes ok, but images not visible on screen. Disabled temporary.
|
|
|
|
Other platforms
|
|
---------------
|
|
|
|
* Other platforms support may be added easy
|
|
|
|
|
|
Third party components used
|
|
---------------------------
|
|
|
|
* DerelictGL3 - for OpenGL support
|
|
* DerelictFT + FreeType library support under linux and optionally under Windows.
|
|
* DerelictFI + FreeImage library support for decoding of images
|
|
* WindowsAPI bindings from http://www.dsource.org/projects/bindings/wiki/WindowsApi (patched)
|
|
* XCB and X11 bindings (patched) TODO: provide links
|
|
|
|
|
|
Hello World
|
|
--------------------------------------------------------------
|
|
|
|
// main.d
|
|
import dlangui.all;
|
|
mixin DLANGUI_ENTRY_POINT;
|
|
|
|
/// entry point for dlangui based application
|
|
extern (C) int UIAppMain(string[] args) {
|
|
// resource directory search paths
|
|
string[] resourceDirs = [
|
|
appendPath(exePath, "../res/"), // for Visual D and DUB builds
|
|
appendPath(exePath, "../../res/") // for Mono-D builds
|
|
];
|
|
|
|
// setup resource directories - will use only existing directories
|
|
drawableCache.setResourcePaths(resourceDirs);
|
|
|
|
// setup i18n - look for i18n directory inside one of passed directories
|
|
i18n.findTranslationsDir(resourceDirs);
|
|
// select translation file - for english language
|
|
i18n.load("en.ini"); //"ru.ini", "en.ini"
|
|
|
|
// create window
|
|
Window window = Platform.instance.createWindow("My Window", null);
|
|
window.mainWidget = (new Button()).text("Hello world"d);
|
|
// run message loop
|
|
return Platform.instance.enterMessageLoop();
|
|
}
|