afc7ab450b
* Fixed marshaling for reading child properties. * Enabled child properties for Box, Grid, Stack in api xml. * Added sample/test for using child properties (ChildPropertiesSection).
147 lines
No EOL
5.7 KiB
C#
147 lines
No EOL
5.7 KiB
C#
using System;
|
|
using Gtk;
|
|
|
|
namespace Samples
|
|
{
|
|
[Section(ContentType = typeof(ContainerChildProperties), Category = Category.Miscellaneous)]
|
|
class ContainerChildPropertiesSection : Box
|
|
{
|
|
public ContainerChildPropertiesSection() : base(Orientation.Vertical, 3)
|
|
{
|
|
ContainerChildProperties.CreateBoxProperties(this);
|
|
ContainerChildProperties.CreateGridProperties(this);
|
|
ContainerChildProperties.CreateStackProperties(this);
|
|
}
|
|
}
|
|
|
|
static class ContainerChildProperties
|
|
{
|
|
public static void CreateBoxProperties(Box parent)
|
|
{
|
|
var title = new Label { Text = "Box child properties" };
|
|
parent.PackStart(title, false, true, 0);
|
|
|
|
var box1 = new Box(Orientation.Horizontal, 3);
|
|
var btn1 = new Button() { Label = "Expand" };
|
|
btn1.Clicked += delegate
|
|
{
|
|
var child = (Box.BoxChild)box1[btn1];
|
|
child.Expand = !child.Expand;
|
|
ApplicationOutput.WriteLine(child, "Expand changed to " + child.Expand);
|
|
};
|
|
box1.PackStart(btn1, true, true, 0);
|
|
parent.PackStart(box1, false, true, 0);
|
|
|
|
var box2 = new Box(Orientation.Horizontal, 3);
|
|
var btn2 = new Button() { Label = "PackType" };
|
|
btn2.Clicked += delegate
|
|
{
|
|
var child = (Box.BoxChild)box2[btn2];
|
|
child.PackType = child.PackType == PackType.Start ? PackType.End : PackType.Start;
|
|
ApplicationOutput.WriteLine(child, "PackType changed to " + child.PackType);
|
|
};
|
|
box2.PackStart(btn2, false, false, 0);
|
|
parent.PackStart(box2, false, true, 0);
|
|
|
|
var box3 = new Box(Orientation.Horizontal, 3);
|
|
var btn3 = new Button() { Label = "Position" };
|
|
btn3.Clicked += delegate
|
|
{
|
|
var child = (Box.BoxChild)box3[btn3];
|
|
child.Position = child.Position == 0 ? 1 : 0;
|
|
ApplicationOutput.WriteLine(child, "Position changed to " + child.Position);
|
|
};
|
|
box3.PackStart(btn3, false, false, 0);
|
|
box3.PackStart(new Label { Text = "Neighbor" }, false, false, 0);
|
|
parent.PackStart(box3, false, true, 0);
|
|
}
|
|
|
|
public static void CreateGridProperties(Box parent)
|
|
{
|
|
var title = new Label { Text = "Grid child properties" };
|
|
parent.PackStart(title, false, true, 0);
|
|
|
|
var grid = new Grid { ColumnSpacing = 3, RowSpacing = 3 };
|
|
var btn1 = new Button { Label = "LeftAttach" };
|
|
var lbl = new Label { Text = "Neighbor" };
|
|
btn1.Clicked += delegate
|
|
{
|
|
var child1 = (Grid.GridChild)grid[btn1];
|
|
var child2 = (Grid.GridChild)grid[lbl];
|
|
if (child1.LeftAttach == 0)
|
|
{
|
|
child1.LeftAttach = 1;
|
|
child2.LeftAttach = 0;
|
|
}
|
|
else
|
|
{
|
|
child1.LeftAttach = 0;
|
|
child2.LeftAttach = 1;
|
|
}
|
|
ApplicationOutput.WriteLine(child1, "Child 1 LeftAttach changed to " + child1.LeftAttach);
|
|
ApplicationOutput.WriteLine(child1, "Child 2 LeftAttach changed to " + child2.LeftAttach);
|
|
};
|
|
|
|
var btn2 = new Button { Label = "Width (column span)", Hexpand = true };
|
|
btn2.Clicked += delegate
|
|
{
|
|
var child = (Grid.GridChild)grid[btn2];
|
|
child.Width = child.Width == 1 ? 2 : 1;
|
|
ApplicationOutput.WriteLine(child, "Width changed to " + child.Width);
|
|
};
|
|
|
|
grid.Attach(btn1, 0, 0, 1, 1);
|
|
grid.Attach(lbl, 1, 0, 1, 1);
|
|
grid.Attach(btn2, 0, 1, 1, 1);
|
|
parent.PackStart(grid, false, true, 0);
|
|
}
|
|
|
|
public static void CreateStackProperties(Box parent)
|
|
{
|
|
var title = new Label { Text = "Stack child properties" };
|
|
parent.PackStart(title, false, true, 0);
|
|
|
|
var stack = new Stack();
|
|
|
|
var box = new Box(Orientation.Horizontal, 3);
|
|
var btn1 = new Button { Label = "Title" };
|
|
btn1.Clicked += delegate
|
|
{
|
|
var child = (Stack.StackChild)stack[box];
|
|
child.Title = child.Title == "Page 1" ? "Page 1 abc" : "Page 1";
|
|
ApplicationOutput.WriteLine(child, "Title changed to " + child.Title);
|
|
};
|
|
box.PackStart(btn1, false, false, 0);
|
|
|
|
var btn2 = new Button { Label = "Position" };
|
|
var lbl = new Label { Text = "Page 2 label", Halign = Align.Start };
|
|
btn2.Clicked += delegate
|
|
{
|
|
var child1 = (Stack.StackChild)stack[box];
|
|
var child2 = (Stack.StackChild)stack[lbl];
|
|
if (child1.Position == 0)
|
|
{
|
|
child1.Position = 1;
|
|
child2.Position = 0;
|
|
}
|
|
else
|
|
{
|
|
child1.Position = 0;
|
|
child2.Position = 1;
|
|
}
|
|
ApplicationOutput.WriteLine(child1, "Child 1 Position changed to " + child1.Position);
|
|
ApplicationOutput.WriteLine(child1, "Child 2 Position changed to " + child2.Position);
|
|
};
|
|
box.PackStart(btn2, false, false, 0);
|
|
|
|
stack.AddTitled(box, "1", "Page 1");
|
|
stack.AddTitled(lbl, "2", "Page 2");
|
|
|
|
var switcher = new StackSwitcher();
|
|
switcher.Stack = stack;
|
|
|
|
parent.PackStart(switcher, false, true, 0);
|
|
parent.PackStart(stack, false, true, 0);
|
|
}
|
|
}
|
|
} |