diff --git a/examples/d3d/src/d3d.d b/examples/d3d/src/d3d.d
index ccbd78ac..6f2297ec 100644
--- a/examples/d3d/src/d3d.d
+++ b/examples/d3d/src/d3d.d
@@ -22,6 +22,17 @@ extern (C) int UIAppMain(string[] args) {
backgroundColor: "#C0E0E070" // semitransparent yellow background
// red bold text with size = 150% of base style size and font face Arial
TextWidget { text: "Hello World example for DlangUI"; textColor: "red"; fontSize: 150%; fontWeight: 800; fontFace: "Arial" }
+ HorizontalLayout {
+ layoutWidth: fill
+ TextWidget { text: "Text 20%"; backgroundColor:"#80FF0000"; layoutWidth: 20% }
+ VerticalLayout {
+ layoutWidth: 30%
+ TextWidget { text: "Text 30%"; backgroundColor:"#80FF00FF" }
+ TextWidget { text: "Text 30%"; backgroundColor:"#8000FFFF" }
+ TextWidget { text: "Text 30%"; backgroundColor:"#8000FFFF" }
+ }
+ TextWidget { text: "Text 50%"; backgroundColor:"#80FFFF00"; layoutWidth: 50% }
+ }
// arrange controls as form - table with two columns
TableLayout {
colCount: 2
diff --git a/src/dlangui/widgets/styles.d b/src/dlangui/widgets/styles.d
index 129a8b52..17975529 100644
--- a/src/dlangui/widgets/styles.d
+++ b/src/dlangui/widgets/styles.d
@@ -1217,6 +1217,16 @@ FontFamily decodeFontFamily(string s) {
return FontFamily.SansSerif;
}
+/// decode FontWeight item name to value
+FontWeight decodeFontWeight(string s) {
+ if (s.equal("bold"))
+ return FontWeight.Bold;
+ if (s.equal("normal"))
+ return FontWeight.Normal;
+ Log.e("unknown font weight ", s);
+ return FontWeight.Normal;
+}
+
/// decode layout dimension (FILL_PARENT, WRAP_CONTENT, or just size)
int decodeLayoutDimension(string s) {
if (s.equal("FILL_PARENT") || s.equal("fill"))
@@ -1262,6 +1272,8 @@ bool loadStyleAttributes(Style style, Element elem, bool allowStates) {
style.fontFamily = decodeFontFamily(elem.tag.attr["fontFamily"]);
if ("fontSize" in elem.tag.attr)
style.fontSize = cast(int)decodeDimension(elem.tag.attr["fontSize"]);
+ if ("fontWeight" in elem.tag.attr)
+ style.fontWeight = cast(ushort)decodeFontWeight(elem.tag.attr["fontWeight"]);
if ("layoutWidth" in elem.tag.attr)
style.layoutWidth = decodeLayoutDimension(elem.tag.attr["layoutWidth"]);
if ("layoutHeight" in elem.tag.attr)
diff --git a/src/dlangui/widgets/tree.d b/src/dlangui/widgets/tree.d
index 950f92e4..1b0eb0e1 100644
--- a/src/dlangui/widgets/tree.d
+++ b/src/dlangui/widgets/tree.d
@@ -184,10 +184,18 @@ class TreeItem {
return root.selectedItem();
}
- bool isSelected() {
+ @property TreeItem defaultItem() {
+ return root.defaultItem();
+ }
+
+ @property bool isSelected() {
return (selectedItem is this);
}
+ @property bool isDefault() {
+ return (defaultItem is this);
+ }
+
/// get widget text
@property dstring text() { return _text; }
/// set text to show
@@ -344,6 +352,7 @@ class TreeItems : TreeItem {
@property TreeItems noCollapseForSingleTopLevelItem(bool flg) { _noCollapseForSingleTopLevelItem = flg; return this; }
protected TreeItem _selectedItem;
+ protected TreeItem _defaultItem;
this() {
super("tree");
@@ -400,6 +409,12 @@ class TreeItems : TreeItem {
selectionListener(this, _selectedItem, false);
}
+ void setDefaultItem(TreeItem item) {
+ _defaultItem = item;
+ if (stateListener.assigned)
+ stateListener(this);
+ }
+
override void activateItem(TreeItem item) {
if (!(_selectedItem is item)) {
_selectedItem = item;
@@ -414,6 +429,10 @@ class TreeItems : TreeItem {
return _selectedItem;
}
+ @property override TreeItem defaultItem() {
+ return _defaultItem;
+ }
+
void selectNext() {
if (!hasChildren)
return;
@@ -647,6 +666,10 @@ class TreeItemWidget : HorizontalLayout {
setState(State.Selected);
else
resetState(State.Selected);
+ if (_item.isDefault)
+ setState(State.Default);
+ else
+ resetState(State.Default);
}
}
diff --git a/views/res/theme_default.xml b/views/res/theme_default.xml
index a07ad124..c03c1fce 100644
--- a/views/res/theme_default.xml
+++ b/views/res/theme_default.xml
@@ -422,8 +422,9 @@
layoutWidth="FILL_PARENT"
layoutHeight="WRAP_CONTENT"
align="Left|VCenter"
- textFlags="Parent"
- />
+ textFlags="Parent">
+
+