diff --git a/samples/Myra.Samples.AllWidgets/AllWidgets.Generated.cs b/samples/Myra.Samples.AllWidgets/AllWidgets.Generated.cs
index 924a1242..539fa3bb 100644
--- a/samples/Myra.Samples.AllWidgets/AllWidgets.Generated.cs
+++ b/samples/Myra.Samples.AllWidgets/AllWidgets.Generated.cs
@@ -1,4 +1,4 @@
-/* Generated by MyraPad at 11/8/2023 11:24:23 PM */
+/* Generated by MyraPad at 11/29/2023 6:30:40 PM */
using Myra;
using Myra.Graphics2D;
using Myra.Graphics2D.TextureAtlases;
@@ -251,30 +251,31 @@ private void BuildUI()
label11.Text = "List Box:";
Grid.SetRow(label11, 10);
- var listItem4 = new ListItem();
- listItem4.Text = "Red";
- listItem4.Color = Color.Red;
-
- var listItem5 = new ListItem();
- listItem5.Text = "Green";
- listItem5.Color = Color.Lime;
+ var label12 = new Label();
+ label12.Text = "Red";
+ label12.TextColor = Color.Red;
- var listItem6 = new ListItem();
- listItem6.Text = "Blue";
- listItem6.Color = Color.Blue;
+ var label13 = new Label();
+ label13.Text = "Green";
+ label13.TextColor = Color.Lime;
- var listBox1 = new ListBox();
- listBox1.Width = 200;
- Grid.SetColumn(listBox1, 1);
- Grid.SetRow(listBox1, 10);
- Grid.SetColumnSpan(listBox1, 2);
- listBox1.Items.Add(listItem4);
- listBox1.Items.Add(listItem5);
- listBox1.Items.Add(listItem6);
+ var label14 = new Label();
+ label14.Text = "Blue";
+ label14.TextColor = Color.Blue;
+
+ var listView1 = new ListView();
+ listView1.SelectedIndex = null;
+ listView1.Width = 200;
+ Grid.SetColumn(listView1, 1);
+ Grid.SetRow(listView1, 10);
+ Grid.SetColumnSpan(listView1, 2);
+ listView1.Widgets.Add(label12);
+ listView1.Widgets.Add(label13);
+ listView1.Widgets.Add(label14);
- var label12 = new Label();
- label12.Text = "Vertical Menu:";
- Grid.SetRow(label12, 11);
+ var label15 = new Label();
+ label15.Text = "Vertical Menu:";
+ Grid.SetRow(label15, 11);
var menuItem1 = new MenuItem();
menuItem1.Text = "Start New Game";
@@ -292,9 +293,9 @@ private void BuildUI()
verticalMenu1.Items.Add(menuItem2);
verticalMenu1.Items.Add(menuItem3);
- var label13 = new Label();
- label13.Text = "Tree";
- Grid.SetRow(label13, 12);
+ var label16 = new Label();
+ label16.Text = "Tree";
+ Grid.SetRow(label16, 12);
_gridRight = new Grid();
_gridRight.ColumnSpacing = 8;
@@ -339,17 +340,17 @@ private void BuildUI()
_gridRight.Widgets.Add(label10);
_gridRight.Widgets.Add(spinButton1);
_gridRight.Widgets.Add(label11);
- _gridRight.Widgets.Add(listBox1);
- _gridRight.Widgets.Add(label12);
+ _gridRight.Widgets.Add(listView1);
+ _gridRight.Widgets.Add(label15);
_gridRight.Widgets.Add(verticalMenu1);
- _gridRight.Widgets.Add(label13);
+ _gridRight.Widgets.Add(label16);
var scrollViewer1 = new ScrollViewer();
scrollViewer1.ShowHorizontalScrollBar = false;
scrollViewer1.Content = _gridRight;
- var label14 = new Label();
- label14.Text = "Vertical Slider:";
+ var label17 = new Label();
+ label17.Text = "Vertical Slider:";
var verticalSlider1 = new VerticalSlider();
verticalSlider1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center;
@@ -369,11 +370,11 @@ private void BuildUI()
{
Type = Myra.Graphics2D.UI.ProportionType.Fill,
});
- grid1.Widgets.Add(label14);
+ grid1.Widgets.Add(label17);
grid1.Widgets.Add(verticalSlider1);
- var label15 = new Label();
- label15.Text = "Progress Bars:";
+ var label18 = new Label();
+ label18.Text = "Progress Bars:";
_horizontalProgressBar = new HorizontalProgressBar();
_horizontalProgressBar.Id = "_horizontalProgressBar";
@@ -402,7 +403,7 @@ private void BuildUI()
{
Type = Myra.Graphics2D.UI.ProportionType.Fill,
});
- grid2.Widgets.Add(label15);
+ grid2.Widgets.Add(label18);
grid2.Widgets.Add(_horizontalProgressBar);
grid2.Widgets.Add(_verticalProgressBar);
diff --git a/samples/Myra.Samples.AllWidgets/allControls.xmmp b/samples/Myra.Samples.AllWidgets/allControls.xmmp
index d58be49c..a14fde86 100644
--- a/samples/Myra.Samples.AllWidgets/allControls.xmmp
+++ b/samples/Myra.Samples.AllWidgets/allControls.xmmp
@@ -64,11 +64,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/samples/Myra.Samples.CustomUIStylesheet/AllWidgets.Generated.cs b/samples/Myra.Samples.CustomUIStylesheet/AllWidgets.Generated.cs
index e315de69..955e844f 100644
--- a/samples/Myra.Samples.CustomUIStylesheet/AllWidgets.Generated.cs
+++ b/samples/Myra.Samples.CustomUIStylesheet/AllWidgets.Generated.cs
@@ -1,4 +1,4 @@
-/* Generated by MyraPad at 10/31/2023 1:24:24 PM */
+/* Generated by MyraPad at 11/29/2023 6:32:56 PM */
using Myra;
using Myra.Graphics2D;
using Myra.Graphics2D.TextureAtlases;
@@ -112,29 +112,30 @@ private void BuildUI()
label8.Text = "List Box:";
Grid.SetRow(label8, 7);
- var listItem4 = new ListItem();
- listItem4.Text = "Red";
- listItem4.Color = Color.Red;
-
- var listItem5 = new ListItem();
- listItem5.Text = "Green";
- listItem5.Color = Color.Lime;
-
- var listItem6 = new ListItem();
- listItem6.Text = "Blue";
- listItem6.Color = Color.Blue;
+ var label9 = new Label();
+ label9.Text = "Red";
+ label9.TextColor = Color.Red;
- var listBox1 = new ListBox();
- listBox1.Width = 200;
- Grid.SetColumn(listBox1, 1);
- Grid.SetRow(listBox1, 7);
- listBox1.Items.Add(listItem4);
- listBox1.Items.Add(listItem5);
- listBox1.Items.Add(listItem6);
+ var label10 = new Label();
+ label10.Text = "Green";
+ label10.TextColor = Color.Lime;
- var label9 = new Label();
- label9.Text = "Tree";
- Grid.SetRow(label9, 8);
+ var label11 = new Label();
+ label11.Text = "Blue";
+ label11.TextColor = Color.Blue;
+
+ var listView1 = new ListView();
+ listView1.SelectedIndex = 0;
+ listView1.Width = 200;
+ Grid.SetColumn(listView1, 1);
+ Grid.SetRow(listView1, 7);
+ listView1.Widgets.Add(label9);
+ listView1.Widgets.Add(label10);
+ listView1.Widgets.Add(label11);
+
+ var label12 = new Label();
+ label12.Text = "Tree";
+ Grid.SetRow(label12, 8);
_gridRight = new Grid();
_gridRight.ColumnSpacing = 8;
@@ -166,15 +167,15 @@ private void BuildUI()
_gridRight.Widgets.Add(label7);
_gridRight.Widgets.Add(textBox1);
_gridRight.Widgets.Add(label8);
- _gridRight.Widgets.Add(listBox1);
- _gridRight.Widgets.Add(label9);
+ _gridRight.Widgets.Add(listView1);
+ _gridRight.Widgets.Add(label12);
var scrollViewer1 = new ScrollViewer();
scrollViewer1.ShowHorizontalScrollBar = false;
scrollViewer1.Content = _gridRight;
- var label10 = new Label();
- label10.Text = "Vertical Slider:";
+ var label13 = new Label();
+ label13.Text = "Vertical Slider:";
var verticalSlider1 = new VerticalSlider();
verticalSlider1.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Center;
@@ -194,11 +195,11 @@ private void BuildUI()
{
Type = Myra.Graphics2D.UI.ProportionType.Fill,
});
- grid1.Widgets.Add(label10);
+ grid1.Widgets.Add(label13);
grid1.Widgets.Add(verticalSlider1);
- var label11 = new Label();
- label11.Text = "Progress Bars:";
+ var label14 = new Label();
+ label14.Text = "Progress Bars:";
_horizontalProgressBar = new HorizontalProgressBar();
_horizontalProgressBar.Id = "_horizontalProgressBar";
@@ -227,7 +228,7 @@ private void BuildUI()
{
Type = Myra.Graphics2D.UI.ProportionType.Fill,
});
- grid2.Widgets.Add(label11);
+ grid2.Widgets.Add(label14);
grid2.Widgets.Add(_horizontalProgressBar);
grid2.Widgets.Add(_verticalProgressBar);
diff --git a/samples/Myra.Samples.CustomUIStylesheet/allControls.xmmp b/samples/Myra.Samples.CustomUIStylesheet/allControls.xmmp
index 8695f853..9645a42f 100644
--- a/samples/Myra.Samples.CustomUIStylesheet/allControls.xmmp
+++ b/samples/Myra.Samples.CustomUIStylesheet/allControls.xmmp
@@ -32,11 +32,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/samples/Myra.Samples.GridContainer/GridGame.cs b/samples/Myra.Samples.GridContainer/GridGame.cs
index 552fd79e..fd69cfd9 100644
--- a/samples/Myra.Samples.GridContainer/GridGame.cs
+++ b/samples/Myra.Samples.GridContainer/GridGame.cs
@@ -245,13 +245,13 @@ protected override void LoadContent()
grid.Widgets.Add(_verticalProgressBar);
// List box
- var list = new ListBox();
+ var list = new ListView();
Grid.SetColumn(list, 5);
Grid.SetRow(list, 4);
- list.Items.Add(new ListItem("Red", Color.Red));
- list.Items.Add(new ListItem("Green", Color.Green));
- list.Items.Add(new ListItem("Blue", Color.Blue));
+ list.Widgets.Add(new Label { Text = "Red", TextColor = Color.Red });
+ list.Widgets.Add(new Label { Text = "Green", TextColor = Color.Green });
+ list.Widgets.Add(new Label { Text = "Blue", TextColor = Color.Blue });
grid.Widgets.Add(list);
// Vertical slider
diff --git a/samples/Myra.Samples.NonModalWindows/UI/Window3.Generated.cs b/samples/Myra.Samples.NonModalWindows/UI/Window3.Generated.cs
index 8d5b6657..dff5503c 100644
--- a/samples/Myra.Samples.NonModalWindows/UI/Window3.Generated.cs
+++ b/samples/Myra.Samples.NonModalWindows/UI/Window3.Generated.cs
@@ -1,4 +1,4 @@
-/* Generated by MyraPad at 9/8/2022 6:36:55 AM */
+/* Generated by MyraPad at 11/29/2023 6:40:28 PM */
using Myra;
using Myra.Graphics2D;
using Myra.Graphics2D.TextureAtlases;
@@ -6,8 +6,19 @@
using Myra.Graphics2D.Brushes;
using Myra.Graphics2D.UI.Properties;
using FontStashSharp.RichText;
+using AssetManagementBase;
+
+#if STRIDE
+using Stride.Core.Mathematics;
+#elif PLATFORM_AGNOSTIC
+using System.Drawing;
+using System.Numerics;
+using Color = FontStashSharp.FSColor;
+#else
+// MonoGame/FNA
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
+#endif
namespace Myra.Samples.NonModalWindows.UI
{
@@ -15,56 +26,56 @@ partial class Window3: Window
{
private void BuildUI()
{
- var listItem1 = new ListItem();
- listItem1.Text = "ItemItemItem0";
+ var label1 = new Label();
+ label1.Text = "ItemItemItem0";
- var listItem2 = new ListItem();
- listItem2.Text = "ItemItemItem1";
+ var label2 = new Label();
+ label2.Text = "ItemItemItem1";
- var listItem3 = new ListItem();
- listItem3.Text = "ItemItemItem2";
+ var label3 = new Label();
+ label3.Text = "ItemItemItem2";
- var listItem4 = new ListItem();
- listItem4.Text = "ItemItemItem3";
+ var label4 = new Label();
+ label4.Text = "ItemItemItem3";
- var listItem5 = new ListItem();
- listItem5.Text = "ItemItemItem4";
+ var label5 = new Label();
+ label5.Text = "ItemItemItem4";
- var listItem6 = new ListItem();
- listItem6.Text = "ItemItemItem5";
+ var label6 = new Label();
+ label6.Text = "ItemItemItem5";
- var listItem7 = new ListItem();
- listItem7.Text = "ItemItemItem6";
+ var label7 = new Label();
+ label7.Text = "ItemItemItem6";
- var listItem8 = new ListItem();
- listItem8.Text = "ItemItemItem7";
+ var label8 = new Label();
+ label8.Text = "ItemItemItem7";
- var listItem9 = new ListItem();
- listItem9.Text = "ItemItemItem8";
+ var label9 = new Label();
+ label9.Text = "ItemItemItem8";
- var listItem10 = new ListItem();
- listItem10.Text = "ItemItemItem9";
+ var label10 = new Label();
+ label10.Text = "ItemItemItem9";
- var listBox1 = new ListBox();
- listBox1.MaxHeight = 150;
- listBox1.Items.Add(listItem1);
- listBox1.Items.Add(listItem2);
- listBox1.Items.Add(listItem3);
- listBox1.Items.Add(listItem4);
- listBox1.Items.Add(listItem5);
- listBox1.Items.Add(listItem6);
- listBox1.Items.Add(listItem7);
- listBox1.Items.Add(listItem8);
- listBox1.Items.Add(listItem9);
- listBox1.Items.Add(listItem10);
+ var listView1 = new ListView();
+ listView1.MaxHeight = 150;
+ listView1.Widgets.Add(label1);
+ listView1.Widgets.Add(label2);
+ listView1.Widgets.Add(label3);
+ listView1.Widgets.Add(label4);
+ listView1.Widgets.Add(label5);
+ listView1.Widgets.Add(label6);
+ listView1.Widgets.Add(label7);
+ listView1.Widgets.Add(label8);
+ listView1.Widgets.Add(label9);
+ listView1.Widgets.Add(label10);
var panel1 = new Panel();
- panel1.Widgets.Add(listBox1);
+ panel1.Widgets.Add(listView1);
Title = "Window 3";
- Left = 466;
- Top = 241;
+ Left = 805;
+ Top = 288;
Content = panel1;
}
diff --git a/samples/Myra.Samples.NonModalWindows/UI/window3.xmmp b/samples/Myra.Samples.NonModalWindows/UI/window3.xmmp
index 467a6326..042597cf 100644
--- a/samples/Myra.Samples.NonModalWindows/UI/window3.xmmp
+++ b/samples/Myra.Samples.NonModalWindows/UI/window3.xmmp
@@ -1,19 +1,19 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Myra/Graphics2D/UI/File/FileDialog.Generated.cs b/src/Myra/Graphics2D/UI/File/FileDialog.Generated.cs
index 0648e1a4..d9eb4938 100644
--- a/src/Myra/Graphics2D/UI/File/FileDialog.Generated.cs
+++ b/src/Myra/Graphics2D/UI/File/FileDialog.Generated.cs
@@ -1,4 +1,4 @@
-/* Generated by MyraPad at 10/26/2023 9:26:08 AM */
+/* Generated by MyraPad at 11/29/2023 5:37:22 PM */
using Myra;
using Myra.Graphics2D;
using Myra.Graphics2D.TextureAtlases;
@@ -54,10 +54,11 @@ private void BuildUI()
horizontalStackPanel1.Widgets.Add(_textFieldPath);
horizontalStackPanel1.Widgets.Add(_buttonParent);
- _listBoxPlaces = new ListBox();
- _listBoxPlaces.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Stretch;
- _listBoxPlaces.ClipToBounds = true;
- _listBoxPlaces.Id = "_listBoxPlaces";
+ _listView = new ListView();
+ _listView.SelectedIndex = null;
+ _listView.HorizontalAlignment = Myra.Graphics2D.UI.HorizontalAlignment.Stretch;
+ _listView.ClipToBounds = true;
+ _listView.Id = "_listPlaces";
_gridFiles = new Grid();
_gridFiles.ColumnSpacing = 4;
@@ -81,7 +82,7 @@ private void BuildUI()
_splitPane = new HorizontalSplitPane();
_splitPane.Id = "_splitPane";
StackPanel.SetProportionType(_splitPane, Myra.Graphics2D.UI.ProportionType.Fill);
- _splitPane.Widgets.Add(_listBoxPlaces);
+ _splitPane.Widgets.Add(_listView);
_splitPane.Widgets.Add(_scrollPane);
_textBlockFileName = new Label();
@@ -106,7 +107,8 @@ private void BuildUI()
Title = "Open File...";
- Left = 199;
+ Left = 242;
+ Top = 6;
Width = 600;
Height = 400;
Content = verticalStackPanel1;
@@ -117,7 +119,7 @@ private void BuildUI()
public Button _buttonForward;
public TextBox _textFieldPath;
public Button _buttonParent;
- public ListBox _listBoxPlaces;
+ public ListView _listView;
public Grid _gridFiles;
public ScrollViewer _scrollPane;
public HorizontalSplitPane _splitPane;
diff --git a/src/Myra/Graphics2D/UI/File/FileDialog.cs b/src/Myra/Graphics2D/UI/File/FileDialog.cs
index 2c53d442..7e4c93ec 100644
--- a/src/Myra/Graphics2D/UI/File/FileDialog.cs
+++ b/src/Myra/Graphics2D/UI/File/FileDialog.cs
@@ -130,7 +130,7 @@ public FileDialog(FileDialogMode mode)
_buttonForward.Background = null;
_buttonParent.Background = null;
- _listBoxPlaces.Background = null;
+ _listView.Background = null;
_buttonBack.Content = new Image
{
@@ -171,22 +171,16 @@ public FileDialog(FileDialogMode mode)
continue;
}
- _listBoxPlaces.Items.Add(new ListItem(Path.GetFileName(p), null, p)
- {
- Image = iconFolder,
- ImageTextSpacing = ImageTextSpacing
- });
+ var item = CreateListItem(Path.GetFileName(p), p, iconFolder);
+ _listView.Widgets.Add(item);
}
- if (_listBoxPlaces.Items.Count > 0)
+ if (_listView.Widgets.Count > 0)
{
- SetFolder((string)_listBoxPlaces.Items[0].Tag, false);
+ SetFolder((string)_listView.Widgets[0].Tag, false);
}
- _listBoxPlaces.Items.Add(new ListItem
- {
- IsSeparator = true
- });
+ _listView.Widgets.Add(new HorizontalSeparator());
var drives = DriveInfo.GetDrives();
var iconDrive = DefaultAssets.UITextureRegionAtlas["icon-drive"];
@@ -206,18 +200,15 @@ public FileDialog(FileDialogMode mode)
s += " (" + d.VolumeLabel + ")";
}
- _listBoxPlaces.Items.Add(new ListItem(s, null, d.RootDirectory.FullName)
- {
- Image = iconDrive,
- ImageTextSpacing = ImageTextSpacing
- });
+ var item = CreateListItem(s, d.RootDirectory.FullName, iconDrive);
+ _listView.Widgets.Add(item);
}
catch (Exception)
{
}
}
- _listBoxPlaces.SelectedIndexChanged += OnPlacesSelectedIndexChanged;
+ _listView.SelectedIndexChanged += OnPlacesSelectedIndexChanged;
_gridFiles.SelectionBackground = DefaultAssets.UITextureRegionAtlas["tree-selection"];
_gridFiles.SelectionHoverBackground = DefaultAssets.UITextureRegionAtlas["button-over"];
@@ -236,6 +227,20 @@ public FileDialog(FileDialogMode mode)
UpdateEnabled();
}
+ private static Widget CreateListItem(string text, string path, IImage icon)
+ {
+ var item = new HorizontalStackPanel
+ {
+ Spacing = ImageTextSpacing,
+ Tag = path
+ };
+
+ item.Widgets.Add(new Image { Renderable = icon });
+ item.Widgets.Add(new Label { Text = text });
+
+ return item;
+ }
+
private void UpdateEnabled()
{
var enabled = false;
@@ -332,7 +337,7 @@ private void OnGridFilesDoubleClick(object sender, EventArgs args)
if (Directory.Exists(path))
{
- _listBoxPlaces.SelectedIndex = null;
+ _listView.SelectedIndex = null;
Folder = path;
} else
{
@@ -347,7 +352,7 @@ private void OnGridFilesSelectedIndexChanged(object sender, EventArgs args)
return;
}
- _listBoxPlaces.SelectedIndex = null;
+ _listView.SelectedIndex = null;
var path = _paths[_gridFiles.SelectedRowIndex.Value];
var fi = new FileInfo(path);
@@ -363,12 +368,12 @@ private void OnGridFilesSelectedIndexChanged(object sender, EventArgs args)
private void OnPlacesSelectedIndexChanged(object sender, EventArgs args)
{
- if (_listBoxPlaces.SelectedIndex == null)
+ if (_listView.SelectedIndex == null)
{
return;
}
- var path = (string)_listBoxPlaces.Items[_listBoxPlaces.SelectedIndex.Value].Tag;
+ var path = (string)_listView.Widgets[_listView.SelectedIndex.Value].Tag;
Folder = path;
}
diff --git a/src/Myra/Graphics2D/UI/File/FileDialog.xmmp b/src/Myra/Graphics2D/UI/File/FileDialog.xmmp
index c0478bb4..c1016eb8 100644
--- a/src/Myra/Graphics2D/UI/File/FileDialog.xmmp
+++ b/src/Myra/Graphics2D/UI/File/FileDialog.xmmp
@@ -1,6 +1,6 @@
-