From 9b414beb3513d3e81acde5627e655608f421e545 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Tue, 20 Jan 2015 12:31:05 +0300 Subject: [PATCH] update readme; update logo for tetris; improve example1 layouts; update docs --- README.md | 25 +++++++++++++++--------- examples/example1/src/main.d | 20 ++++++++++++------- examples/tetris/res/tetris_logo_big.png | Bin 3205 -> 3509 bytes src/dlangui/widgets/srcedit.d | 2 +- 4 files changed, 30 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 56ebbf35..c24ff46d 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,13 @@ Dlang UI Cross platform GUI for D. Layouts, styles, themes, unicode, i18n, OpenGL based acceleration, widget set. -Project page: https://github.com/buggins/dlangui +Project page: [https://github.com/buggins/dlangui](https://github.com/buggins/dlangui) -Documentation: http://buggins.github.io/dlangui +API Documentation: [http://buggins.github.io/dlangui/ddox](http://buggins.github.io/dlangui/ddox) -Wiki: https://github.com/buggins/dlangui/wiki/Home +Wiki: [https://github.com/buggins/dlangui/wiki/Home](https://github.com/buggins/dlangui/wiki/Home) -Some screenshots: http://buggins.github.io/dlangui/screenshots.html +Some screenshots: [http://buggins.github.io/dlangui/screenshots.html](http://buggins.github.io/dlangui/screenshots.html) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/buggins/dlangui?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -54,6 +54,9 @@ Currently implemented widgets: * StringGrid - grid view with strings content * TreeWidget - tree view * ComboBox - combo box with text items +* ToolBar - tool bar with buttons +* StatusLine - control to show misc application statuses +* AppFrame - base class for easy implementation of apps with main menu, toolbars, status bar Layouts ------- @@ -66,7 +69,9 @@ Similar to layouts in Android * FrameLayout - all children occupy the same place; usually onle one of them is visible * TableLayout - children are aligned into rows and columns of table * ResizerWidget - put into LinearLayout between two other widgets to resize them using mouse - +* ScrollWidget - allow to scroll its child if its dimensions are bigger than possible +* DockHost - layout with main widget and additional dockable panels around it +* DockWindow - dockable window with caption, usually to be used with DockHost List Views ---------- @@ -100,7 +105,7 @@ Styles and themes are a bit similar to ones in Android API. * Widgets use style attributes directly from assigned style. When some attribute is being changed in widget, it creates its own copy of base style, which allows to modify some of attributes, while getting base style attributes if they are not changed in widget. This trick can minimize memory usage for widget attributes when standard values are used. - +* Current default theme is similar to one in MS Visual Studio 2013 Win32 builds @@ -268,12 +273,14 @@ Sample dub.json: } -Sample project +DlangIDE project ------------------------------------------------------------ -There is sample project which is using DLangUI. +It is a project to build D language IDE using DlangUI library. -https://github.com/buggins/dlangide +Now it's in early alpha stage, and could be used as a demo for DlangUI. + +Project page: [https://github.com/buggins/dlangide](https://github.com/buggins/dlangide) How to build and run using DUB: diff --git a/examples/example1/src/main.d b/examples/example1/src/main.d index 2cb6b3a8..38f62ada 100644 --- a/examples/example1/src/main.d +++ b/examples/example1/src/main.d @@ -464,23 +464,29 @@ extern (C) int UIAppMain(string[] args) { buttons1.addChild(new ImageButton("btn3", "text-plain")); buttons1.addChild(new TextWidget(null, "disabled: "d)); buttons1.addChild((new ImageButton("btn4", "folder")).enabled(false)); - buttons1.addChild(new TextWidget(null, "ImageTextButton widgets: "d)); - buttons1.addChild(new ImageTextButton("btn5", "text-plain", "Enabled"d)); - buttons1.addChild((new ImageTextButton("btn6", "folder", "Disabled"d)).enabled(false)); layout3.addChild(buttons1); + WidgetGroup buttons10 = new HorizontalLayout(); + buttons10.addChild(new TextWidget(null, "ImageTextButton widgets: "d)); + buttons10.addChild(new ImageTextButton("btn5", "text-plain", "Enabled"d)); + buttons10.addChild((new ImageTextButton("btn6", "folder", "Disabled"d)).enabled(false)); + layout3.addChild(buttons10); + WidgetGroup buttons11 = new HorizontalLayout(); buttons11.addChild(new TextWidget(null, "Construct buttons by action (Button, ImageButton, ImageTextButton): "d)); Action FILE_OPEN_ACTION = new Action(ACTION_FILE_OPEN, "MENU_FILE_OPEN"c, "document-open", KeyCode.KEY_O, KeyFlag.Control); buttons11.addChild(new Button(FILE_OPEN_ACTION)); buttons11.addChild(new ImageButton(FILE_OPEN_ACTION)); buttons11.addChild(new ImageTextButton(FILE_OPEN_ACTION)); - buttons11.addChild(new TextWidget(null, "The same in disabled state: "d)); - buttons11.addChild((new Button(FILE_OPEN_ACTION)).enabled(false)); - buttons11.addChild((new ImageButton(FILE_OPEN_ACTION)).enabled(false)); - buttons11.addChild((new ImageTextButton(FILE_OPEN_ACTION)).enabled(false)); layout3.addChild(buttons11); + WidgetGroup buttons12 = new HorizontalLayout(); + buttons12.addChild(new TextWidget(null, "The same in disabled state: "d)); + buttons12.addChild((new Button(FILE_OPEN_ACTION)).enabled(false)); + buttons12.addChild((new ImageButton(FILE_OPEN_ACTION)).enabled(false)); + buttons12.addChild((new ImageTextButton(FILE_OPEN_ACTION)).enabled(false)); + layout3.addChild(buttons12); + layout3.addChild(new VSpacer()); layout3.addChild(new TextWidget(null, "CheckBoxes in HorizontalLayout"d)); WidgetGroup buttons2 = new HorizontalLayout(); diff --git a/examples/tetris/res/tetris_logo_big.png b/examples/tetris/res/tetris_logo_big.png index 896901e329224c5999f765401869de64a3613d50..54175c091df245d7e216b36a33725181230d2860 100644 GIT binary patch delta 3461 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