DlangUI
Vadim Lopatin via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Mon Apr 13 11:35:58 PDT 2015
On Monday, 13 April 2015 at 17:51:54 UTC, John Colvin wrote:
> On Tuesday, 20 May 2014 at 18:13:36 UTC, Vadim Lopatin wrote:
>> Hello!
>>
>> I would like to announce my project, DlangUI library -
>> cross-platform GUI for D.
>> https://github.com/buggins/dlangui
>> License: Boost License 1.0
>>
>> Native library written in D (not a wrapper to other GUI
>> library) - easy to extend.
>> As a backend, uses SDL2 on any platform, Win32 API on Windows,
>> XCB on Linux. Other backends can be added easy.
>> Tested on Windows and Linux.
>> Supports hardware acceleration - drawing using OpenGL when
>> built with version=USE_OPENGL.
>> Unicode support.
>> Internationalization support.
>> Uses Win32 API fonts on Windows, and FreeType on other
>> platforms.
>> Same look and feel can be achieved on all platforms.
>> Flexible look and feel - themes and styles.
>> API is a bit similar to Android UI.
>> Flexible layout, support of different screen DPI, scaling.
>> Uses two phase layout like in Android.
>> Supports drawable resources in .png and .jpeg, nine-patch pngs
>> and state drawables like in Android.
>> Single threaded. Use other threads for performing slow tasks.
>> Mouse oriented.
>>
>> Actually, it's a port (with major redesign) of my library used
>> for cross-platform version of my application CoolReader from
>> C++.
>>
>>
>> State of project: alpha. But, already can be used for simple
>> 2D games and simple GUI apps.
>> I'm keeping in mind a goal to write D language IDE based on
>> dlangui. :)
>> Adding support of 3D graphics is planned.
>>
>>
>> Currently implemented widgets:
>>
>> TextWidget - simple static text (TODO: implement multiline
>> formatting)
>> ImageWidget - static image
>> Button - simple button with text label
>> ImageButton - image only button
>> TextImageButton - button with icon and label
>> CheckBox - check button with label
>> RadioButton - radio button with label
>> EditLine - single line edit
>> EditBox - multiline editor
>> VSpacer - vertical spacer - just an empty widget with
>> layoutHeight == FILL_PARENT, to fill vertical space in layouts
>> HSpacer - horizontal spacer - just an empty widget with
>> layoutWidth == FILL_PARENT, to fill horizontal space in layouts
>> ScrollBar - scroll bar
>> TabControl - tabs widget, allows to select one of tabs
>> TabHost - container for pages controlled by TabControl
>> TabWidget - combination of TabControl and TabHost
>>
>> Layouts - Similar to layouts in Android
>>
>> LinearLayout - layout children horizontally or vertically
>> depending on orientation
>> VerticalLayout - just a LinearLayout with vertical orientation
>> HorizontalLayout - just a LinearLayout with vertical
>> orientation
>> FrameLayout - all children occupy the same place; usually onle
>> one of them is visible
>> TableLayout - children are aligned into rows and columns of
>> table
>>
>> List Views - similar to lists in Android UI API.
>> ListWidget - layout dynamic items horizontally or vertically
>> (one in row/column) with automatic scrollbar; can reuse
>> widgets for similar items
>> ListAdapter - interface to provide data and widgets for
>> ListWidget
>> WidgetListAdapter - simple implementation of ListAdapter
>> interface - just a list of widgets (one per list item) to show
>>
>>
>> Sample project, example1 contains demo code for most of
>> dlangui API.
>>
>> Try it using DUB:
>>
>> git clone https://github.com/buggins/dlangui.git
>> cd dlangui
>> dub run dlangui:example1
>>
>> Fonts note: on Linux, several .TTFs are loaded from hardcoded
>> paths (suitable for Ubuntu).
>> TODO: add fontconfig support to access all available system
>> fonts.
>>
>> Helloworld:
>>
>> // 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
>> Platform.instance.resourceDirs = resourceDirs;
>> // select translation file - for english language
>> Platform.instance.uiLanguage = "en";
>> // load theme from file "theme_default.xml"
>> Platform.instance.uiTheme = "theme_default";
>>
>> // create window
>> Window window = Platform.instance.createWindow("My Window",
>> null);
>> // create some widget to show in window
>> window.mainWidget = (new Button()).text("Hello
>> world"d).textColor(0xFF0000); // red text
>> // show window
>> window.show();
>> // run message loop
>> return Platform.instance.enterMessageLoop();
>> }
>>
>> DDOC generated documentation can be found there:
>> https://github.com/buggins/dlangui/tree/master/docs
>> For more info see readme and example1 code.
>>
>> I would be glad to see any feedback.
>> Can this project be useful for someone? What features/widgets
>> are must have for you?
>>
>>
>> Best regards,
>> Vadim <coolreader.org at gmail.com>
>>
>
> Is there any way I can debug a unittest build? "Start
> Debugging" seems bound to the debug build.
Are asking about DlangIDE?
There is no debugging here at all.
Start Debugging currently just exdecutes `dub run`
More information about the Digitalmars-d-announce
mailing list