Update tutorial

This commit is contained in:
vczh
2015-10-04 21:45:04 -07:00
parent ee954f7ff0
commit 64638b30cf
13 changed files with 364 additions and 166 deletions
+167 -157
View File
@@ -33496,116 +33496,85 @@ GuiStackComposition
void GuiStackComposition::UpdateStackItemBounds() void GuiStackComposition::UpdateStackItemBounds()
{ {
if(stackItemBounds.Count()!=stackItems.Count()) if (stackItemBounds.Count() != stackItems.Count())
{ {
stackItemBounds.Resize(stackItems.Count()); stackItemBounds.Resize(stackItems.Count());
} }
stackItemTotalSize=Size(0, 0); stackItemTotalSize = Size(0, 0);
vint x=extraMargin.left?extraMargin.left:0; Point offset;
vint y=extraMargin.top?extraMargin.top:0; for (vint i = 0; i < stackItems.Count(); i++)
switch(direction)
{ {
case GuiStackComposition::Horizontal: vint offsetX = 0;
{ vint offsetY = 0;
for(vint i=0;i<stackItems.Count();i++) Size itemSize = stackItems[i]->GetMinSize();
{ stackItemBounds[i] = Rect(offset, itemSize);
Size itemSize=stackItems[i]->GetMinSize();
if(i>0) stackItemTotalSize.x+=padding;
if(stackItemTotalSize.y<itemSize.y) stackItemTotalSize.y=itemSize.y;
stackItemBounds[i]=Rect(Point(stackItemTotalSize.x+x, y), Size(itemSize.x, 0));
stackItemTotalSize.x+=itemSize.x;
}
}
break;
case GuiStackComposition::Vertical:
{
for(vint i=0;i<stackItems.Count();i++)
{
Size itemSize=stackItems[i]->GetMinSize();
if(i>0) stackItemTotalSize.y+=padding;
if(stackItemTotalSize.x<itemSize.x) stackItemTotalSize.x=itemSize.x;
stackItemBounds[i]=Rect(Point(x, stackItemTotalSize.y+y), Size(0, itemSize.y));
stackItemTotalSize.y+=itemSize.y;
}
}
break;
}
FixStackItemSizes(); #define ACCUMULATE(U, V) \
{ \
if (stackItemTotalSize.V < itemSize.V) \
{ \
stackItemTotalSize.V = itemSize.V; \
} \
if (i > 0) \
{ \
stackItemTotalSize.U += padding; \
} \
stackItemTotalSize.U += itemSize.U; \
} \
switch (direction)
{
case GuiStackComposition::Horizontal:
case GuiStackComposition::ReversedHorizontal:
ACCUMULATE(x, y)
break;
case GuiStackComposition::Vertical:
case GuiStackComposition::ReversedVertical:
ACCUMULATE(y, x)
break;
}
#undef ACCUMULATE
offset.x += itemSize.x + padding;
offset.y += itemSize.y + padding;
}
EnsureStackItemVisible();
} }
void GuiStackComposition::FixStackItemSizes() void GuiStackComposition::EnsureStackItemVisible()
{ {
switch(direction) #define ADJUSTMENT(U, V) \
if (itemBounds.U() <= 0) \
{ \
adjustment -= itemBounds.U(); \
} \
else \
{ \
vint overflow = itemBounds.V() - previousBounds.V(); \
if (overflow > 0) \
{ \
adjustment -= overflow; \
} \
} \
if (ensuringVisibleStackItem)
{ {
case Horizontal: Rect itemBounds = ensuringVisibleStackItem->GetBounds();
{ switch (direction)
vint y=0;
if(extraMargin.top>0) y+=extraMargin.top;
if(extraMargin.bottom>0) y+=extraMargin.bottom;
for(vint i=0;i<stackItemBounds.Count();i++)
{
stackItemBounds[i].y2=stackItemBounds[i].y1+previousBounds.Height()-y;
}
}
break;
case Vertical:
{
vint x=0;
if(extraMargin.left>0) x+=extraMargin.left;
if(extraMargin.right>0) x+=extraMargin.right;
for(vint i=0;i<stackItemBounds.Count();i++)
{
stackItemBounds[i].x2=stackItemBounds[i].x1+previousBounds.Width()-x;
}
}
break;
}
vint index=stackItems.IndexOf(ensuringVisibleStackItem);
if(index!=-1)
{
Rect itemBounds=stackItemBounds[index];
Size size=previousBounds.GetSize();
Size offset;
switch(direction)
{ {
case Horizontal: case Horizontal:
{ case ReversedHorizontal:
if(itemBounds.Left()<=0) ADJUSTMENT(Left, Right)
{
offset.x=-itemBounds.Left();
}
else if(itemBounds.Right()>=size.x)
{
offset.x=size.x-itemBounds.Right();
}
}
break; break;
case Vertical: case Vertical:
{ case ReversedVertical:
if(itemBounds.Top()<=0) ADJUSTMENT(Top, Bottom)
{
offset.y=-itemBounds.Top();
}
else if(itemBounds.Bottom()>=size.y)
{
offset.y=size.y-itemBounds.Bottom();
}
}
break; break;
} }
for(vint i=0;i<stackItemBounds.Count();i++)
{
stackItemBounds[i].x1+=offset.x;
stackItemBounds[i].y1+=offset.y;
stackItemBounds[i].x2+=offset.x;
stackItemBounds[i].y2+=offset.y;
}
} }
#undef ADJUSTMENT
} }
void GuiStackComposition::OnBoundsChanged(GuiGraphicsComposition* sender, GuiEventArgs& arguments) void GuiStackComposition::OnBoundsChanged(GuiGraphicsComposition* sender, GuiEventArgs& arguments)
@@ -33616,10 +33585,11 @@ GuiStackComposition
void GuiStackComposition::OnChildInserted(GuiGraphicsComposition* child) void GuiStackComposition::OnChildInserted(GuiGraphicsComposition* child)
{ {
GuiBoundsComposition::OnChildInserted(child); GuiBoundsComposition::OnChildInserted(child);
GuiStackItemComposition* item=dynamic_cast<GuiStackItemComposition*>(child); GuiStackItemComposition* item = dynamic_cast<GuiStackItemComposition*>(child);
if(item && !stackItems.Contains(item)) if (item && !stackItems.Contains(item))
{ {
stackItems.Add(item); stackItems.Add(item);
UpdateStackItemBounds();
} }
} }
@@ -33630,18 +33600,15 @@ GuiStackComposition
if(item) if(item)
{ {
stackItems.Remove(item); stackItems.Remove(item);
if(item==ensuringVisibleStackItem) if (item == ensuringVisibleStackItem)
{ {
ensuringVisibleStackItem=0; ensuringVisibleStackItem = 0;
UpdateStackItemBounds();
} }
UpdateStackItemBounds();
} }
} }
GuiStackComposition::GuiStackComposition() GuiStackComposition::GuiStackComposition()
:direction(Horizontal)
,padding(0)
,ensuringVisibleStackItem(0)
{ {
BoundsChanged.AttachMethod(this, &GuiStackComposition::OnBoundsChanged); BoundsChanged.AttachMethod(this, &GuiStackComposition::OnBoundsChanged);
} }
@@ -33676,7 +33643,8 @@ GuiStackComposition
void GuiStackComposition::SetDirection(Direction value) void GuiStackComposition::SetDirection(Direction value)
{ {
direction=value; direction = value;
EnsureStackItemVisible();
} }
vint GuiStackComposition::GetPadding() vint GuiStackComposition::GetPadding()
@@ -33686,38 +33654,45 @@ GuiStackComposition
void GuiStackComposition::SetPadding(vint value) void GuiStackComposition::SetPadding(vint value)
{ {
padding=value; padding = value;
} }
Size GuiStackComposition::GetMinPreferredClientSize() Size GuiStackComposition::GetMinPreferredClientSize()
{ {
Size minSize=GuiBoundsComposition::GetMinPreferredClientSize(); Size minSize = GuiBoundsComposition::GetMinPreferredClientSize();
UpdateStackItemBounds(); UpdateStackItemBounds();
if(GetMinSizeLimitation()==GuiGraphicsComposition::LimitToElementAndChildren) if (GetMinSizeLimitation() == GuiGraphicsComposition::LimitToElementAndChildren)
{ {
if (!ensuringVisibleStackItem || direction == Vertical) if (!ensuringVisibleStackItem || direction == Vertical || direction == ReversedVertical)
{ {
if(minSize.x<stackItemTotalSize.x) minSize.x=stackItemTotalSize.x; if (minSize.x < stackItemTotalSize.x)
{
minSize.x = stackItemTotalSize.x;
}
} }
if (!ensuringVisibleStackItem || direction == Horizontal) if (!ensuringVisibleStackItem || direction == Horizontal || direction == ReversedHorizontal)
{ {
if(minSize.y<stackItemTotalSize.y) minSize.y=stackItemTotalSize.y; if (minSize.y < stackItemTotalSize.y)
{
minSize.y = stackItemTotalSize.y;
}
} }
} }
vint x=0;
vint y=0; vint x = 0;
if(extraMargin.left>0) x+=extraMargin.left; vint y = 0;
if(extraMargin.right>0) x+=extraMargin.right; if (extraMargin.left > 0) x += extraMargin.left;
if(extraMargin.top>0) y+=extraMargin.top; if (extraMargin.right > 0) x += extraMargin.right;
if(extraMargin.bottom>0) y+=extraMargin.bottom; if (extraMargin.top > 0) y += extraMargin.top;
return minSize+Size(x, y); if (extraMargin.bottom > 0) y += extraMargin.bottom;
return minSize + Size(x, y);
} }
Rect GuiStackComposition::GetBounds() Rect GuiStackComposition::GetBounds()
{ {
Rect bounds=GuiBoundsComposition::GetBounds(); Rect bounds = GuiBoundsComposition::GetBounds();
previousBounds=bounds; previousBounds = bounds;
FixStackItemSizes(); EnsureStackItemVisible();
return bounds; return bounds;
} }
@@ -33733,36 +33708,36 @@ GuiStackComposition
bool GuiStackComposition::IsStackItemClipped() bool GuiStackComposition::IsStackItemClipped()
{ {
Rect clientArea=GetClientArea(); Rect clientArea = GetClientArea();
for(vint i=0;i<stackItems.Count();i++) switch(direction)
{ {
Rect stackItemBounds=stackItems[i]->GetBounds(); case Horizontal:
switch(direction) case ReversedHorizontal:
{ {
case Horizontal: vint width = stackItemTotalSize.x
{ + (extraMargin.left > 0 ? extraMargin.left : 0)
if(stackItemBounds.Left()<0 || stackItemBounds.Right()>=clientArea.Width()) + (extraMargin.right > 0 ? extraMargin.right : 0)
{ ;
return true; return width > clientArea.Width();
}
}
break;
case Vertical:
{
if(stackItemBounds.Top()<0 || stackItemBounds.Bottom()>=clientArea.Height())
{
return true;
}
}
break;
} }
break;
case Vertical:
case ReversedVertical:
{
vint height = stackItemTotalSize.y
+ (extraMargin.top > 0 ? extraMargin.top : 0)
+ (extraMargin.bottom > 0 ? extraMargin.bottom : 0)
;
return height > clientArea.Height();
}
break;
} }
return false; return false;
} }
bool GuiStackComposition::EnsureVisible(vint index) bool GuiStackComposition::EnsureVisible(vint index)
{ {
if(0<=index && index<stackItems.Count()) if (0 <= index && index < stackItems.Count())
{ {
ensuringVisibleStackItem = stackItems[index]; ensuringVisibleStackItem = stackItems[index];
} }
@@ -33770,7 +33745,7 @@ GuiStackComposition
{ {
ensuringVisibleStackItem = 0; ensuringVisibleStackItem = 0;
} }
UpdateStackItemBounds(); EnsureStackItemVisible();
return ensuringVisibleStackItem != 0; return ensuringVisibleStackItem != 0;
} }
@@ -33781,7 +33756,7 @@ GuiStackItemComposition
void GuiStackItemComposition::OnParentChanged(GuiGraphicsComposition* oldParent, GuiGraphicsComposition* newParent) void GuiStackItemComposition::OnParentChanged(GuiGraphicsComposition* oldParent, GuiGraphicsComposition* newParent)
{ {
GuiGraphicsSite::OnParentChanged(oldParent, newParent); GuiGraphicsSite::OnParentChanged(oldParent, newParent);
stackParent=newParent==0?0:dynamic_cast<GuiStackComposition*>(newParent); stackParent = newParent == 0 ? 0 : dynamic_cast<GuiStackComposition*>(newParent);
} }
Size GuiStackItemComposition::GetMinSize() Size GuiStackItemComposition::GetMinSize()
@@ -33806,30 +33781,65 @@ GuiStackItemComposition
Rect GuiStackItemComposition::GetBounds() Rect GuiStackItemComposition::GetBounds()
{ {
Rect result=bounds; Rect result = bounds;
if(stackParent) if(stackParent)
{ {
vint index=stackParent->stackItems.IndexOf(this); vint index = stackParent->stackItems.IndexOf(this);
if(index!=-1) if (index != -1)
{ {
if(stackParent->stackItemBounds.Count()!=stackParent->stackItems.Count()) result = stackParent->stackItemBounds[index];
{
stackParent->UpdateStackItemBounds();
}
result=stackParent->stackItemBounds[index];
} }
Rect parentBounds = stackParent->previousBounds;
Margin margin = stackParent->extraMargin;
if (margin.left <= 0) margin.left = 0;
if (margin.top <= 0) margin.top = 0;
if (margin.right <= 0) margin.right = 0;
if (margin.bottom <= 0) margin.bottom = 0;
auto x = result.Left();
auto y = result.Top();
auto w = result.Width();
auto h = result.Height();
switch (stackParent->direction)
{
case GuiStackComposition::Horizontal:
x += margin.left + stackParent->adjustment;
y = margin.top;
h = parentBounds.Height() - margin.top - margin.bottom;
break;
case GuiStackComposition::ReversedHorizontal:
x = parentBounds.Width() - margin.right - x - w + stackParent->adjustment;
y = margin.top;
h = parentBounds.Height() - margin.top - margin.bottom;
break;
case GuiStackComposition::Vertical:
x = margin.left;
y += margin.top + stackParent->adjustment;
w = parentBounds.Width() - margin.left - margin.right;
break;
case GuiStackComposition::ReversedVertical:
x = margin.left;
y = parentBounds.Height() - margin.bottom - y - h + stackParent->adjustment;
w = parentBounds.Width() - margin.left - margin.right;
break;
}
result = Rect(
x - extraMargin.left,
y - extraMargin.top,
x + w + extraMargin.right,
y + h + extraMargin.bottom
);
} }
result.x1-=extraMargin.left;
result.y1-=extraMargin.top;
result.x2+=extraMargin.right;
result.y2+=extraMargin.bottom;
UpdatePreviousBounds(result); UpdatePreviousBounds(result);
return result; return result;
} }
void GuiStackItemComposition::SetBounds(Rect value) void GuiStackItemComposition::SetBounds(Rect value)
{ {
bounds=value; bounds = value;
} }
Margin GuiStackItemComposition::GetExtraMargin() Margin GuiStackItemComposition::GetExtraMargin()
@@ -33839,7 +33849,7 @@ GuiStackItemComposition
void GuiStackItemComposition::SetExtraMargin(Margin value) void GuiStackItemComposition::SetExtraMargin(Margin value)
{ {
extraMargin=value; extraMargin = value;
} }
} }
} }
+14 -7
View File
@@ -6693,23 +6693,30 @@ Stack Compositions
/// <summary>Stack item layout direction.</summary> /// <summary>Stack item layout direction.</summary>
enum Direction enum Direction
{ {
/// <summary>Stack items is layouted horizontally.</summary> /// <summary>Stack items is layouted from left to right.</summary>
Horizontal, Horizontal,
/// <summary>Stack items is layouted vertically.</summary> /// <summary>Stack items is layouted from top to bottom.</summary>
Vertical, Vertical,
/// <summary>Stack items is layouted from right to left.</summary>
ReversedHorizontal,
/// <summary>Stack items is layouted from bottom to top.</summary>
ReversedVertical,
}; };
protected: protected:
Direction direction; Direction direction = Horizontal;
ItemCompositionList stackItems; ItemCompositionList stackItems;
GuiStackItemComposition* ensuringVisibleStackItem = nullptr;
vint padding = 0;
vint adjustment = 0;
Margin extraMargin;
collections::Array<Rect> stackItemBounds; collections::Array<Rect> stackItemBounds;
Size stackItemTotalSize; Size stackItemTotalSize;
vint padding;
Rect previousBounds; Rect previousBounds;
Margin extraMargin;
GuiStackItemComposition* ensuringVisibleStackItem;
void UpdateStackItemBounds(); void UpdateStackItemBounds();
void FixStackItemSizes(); void EnsureStackItemVisible();
void OnBoundsChanged(GuiGraphicsComposition* sender, GuiEventArgs& arguments); void OnBoundsChanged(GuiGraphicsComposition* sender, GuiEventArgs& arguments);
void OnChildInserted(GuiGraphicsComposition* child)override; void OnChildInserted(GuiGraphicsComposition* child)override;
void OnChildRemoved(GuiGraphicsComposition* child)override; void OnChildRemoved(GuiGraphicsComposition* child)override;
+5 -1
View File
@@ -6065,7 +6065,7 @@ Module
{ {
auto fragment = MakePtr<WfModuleUsingNameFragment>(); auto fragment = MakePtr<WfModuleUsingNameFragment>();
item->fragments.Add(fragment); item->fragments.Add(fragment);
fragment->name.value = WString(wildcard, vint(end - wildcard - 1)); fragment->name.value = WString(wildcard + 1, vint(end - wildcard - 1));
} }
} }
else if (begin < end) else if (begin < end)
@@ -6963,6 +6963,8 @@ Workflow_GetSharedManager
context->instance->Accept(&visitor); context->instance->Accept(&visitor);
rootTypeDescriptor = visitor.rootTypeDescriptor; rootTypeDescriptor = visitor.rootTypeDescriptor;
} }
if (errors.Count() == 0)
{ {
WorkflowCompileVisitor visitor(context, typeInfos, errors); WorkflowCompileVisitor visitor(context, typeInfos, errors);
context->instance->Accept(&visitor); context->instance->Accept(&visitor);
@@ -10278,6 +10280,8 @@ Type Declaration
ENUM_ITEM_NAMESPACE(GuiStackComposition) ENUM_ITEM_NAMESPACE(GuiStackComposition)
ENUM_NAMESPACE_ITEM(Horizontal) ENUM_NAMESPACE_ITEM(Horizontal)
ENUM_NAMESPACE_ITEM(Vertical) ENUM_NAMESPACE_ITEM(Vertical)
ENUM_NAMESPACE_ITEM(ReversedHorizontal)
ENUM_NAMESPACE_ITEM(ReversedVertical)
END_ENUM_ITEM(GuiStackComposition::Direction) END_ENUM_ITEM(GuiStackComposition::Direction)
BEGIN_CLASS_MEMBER(GuiStackItemComposition) BEGIN_CLASS_MEMBER(GuiStackItemComposition)
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -17,6 +17,16 @@
<Instance ref.CodeBehind="false" ref.Class="demo::MainWindow"> <Instance ref.CodeBehind="false" ref.Class="demo::MainWindow">
<Window Text="Alignment" ClientSize="x:480 y:320"> <Window Text="Alignment" ClientSize="x:480 y:320">
<att.BoundsComposition-set PreferredMinSize="x:480 y:320"/> <att.BoundsComposition-set PreferredMinSize="x:480 y:320"/>
<att.ContainerComposition-set InternalMargin="left:5 top:5 right:5 bottom:5"/>
<Button Text="Button">
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:-1 bottom:-1" PreferredMinSize="x:100 y:30"/>
</Button>
<Button Text="Button">
<att.BoundsComposition-set AlignmentToParent="left:-1 top:0 right:0 bottom:-1" PreferredMinSize="x:100 y:30"/>
</Button>
<Button Text="Button">
<att.BoundsComposition-set AlignmentToParent="left:0 top:-1 right:0 bottom:0" PreferredMinSize="x:100 y:30"/>
</Button>
</Window> </Window>
</Instance> </Instance>
</Instance> </Instance>
+85 -1
View File
@@ -13,10 +13,94 @@
</Folder> </Folder>
</Folder> </Folder>
<Folder name="MainWindow"> <Folder name="MainWindow">
<InstanceStyle name="MainWindowStyle">
<Styles>
<Style ref.Path="//RadioButton">
<ev.SelectedChanged-eval>
<![CDATA[
{
var radioButton = cast (SelectableButton*) sender.RelatedControl;
if (radioButton.Selected)
{
stackLayout.Direction = cast (Stack::Direction) radioButton.Text;
}
}
]]>
</ev.SelectedChanged-eval>
</Style>
<Style ref.Path="//StackItem/Button">
<ev.Clicked-eval>
<![CDATA[
{
for (item in stackLayout.StackItems)
{
item.ExtraMargin = cast Margin "";
}
var item = cast (StackItem*) sender.Parent;
item.ExtraMargin = cast Margin "left:10 top:10 right:10 bottom:10";
stackLayout.MoveChild(item, stackLayout.StackItems.Count - 1);
}
]]>
</ev.Clicked-eval>
</Style>
</Styles>
</InstanceStyle>
<Instance name="MainWindowResource"> <Instance name="MainWindowResource">
<Instance ref.CodeBehind="false" ref.Class="demo::MainWindow"> <Instance ref.CodeBehind="false" ref.Class="demo::MainWindow" xmlns:x="presentation::controls::GuiSelectableButton::*" ref.Styles="res://MainWindow/MainWindowStyle">
<Window Text="Stack" ClientSize="x:480 y:320"> <Window Text="Stack" ClientSize="x:480 y:320">
<x:MutexGroupController ref.Name="groupStackDirection"/>
<att.BoundsComposition-set PreferredMinSize="x:480 y:320"/> <att.BoundsComposition-set PreferredMinSize="x:480 y:320"/>
<Table AlignmentToParent="left:5 top:5 right:5 bottom:5" CellPadding="5">
<att.Rows>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:Percentage percentage:1.0</CellOption>
</att.Rows>
<att.Columns>
<CellOption>composeType:Percentage percentage:1.0</CellOption>
</att.Columns>
<Cell Site="row:0 column:0">
<RadioButton Text="Horizontal" GroupController-ref="groupStackDirection" Selected="true"/>
</Cell>
<Cell Site="row:1 column:0">
<RadioButton Text="Vertical" GroupController-ref="groupStackDirection"/>
</Cell>
<Cell Site="row:2 column:0">
<RadioButton Text="ReversedHorizontal" GroupController-ref="groupStackDirection"/>
</Cell>
<Cell Site="row:3 column:0">
<RadioButton Text="ReversedVertical" GroupController-ref="groupStackDirection"/>
</Cell>
<Cell Site="row:4 column:0">
<Label Text="Click any button in stack items to enlarge it."/>
</Cell>
<Cell Site="row:5 column:0">
<Stack ref.Name="stackLayout" AlignmentToParent="left:0 top:0 right:0 bottom:0" Padding="5" ExtraMargin="left:10 top:10 right:10 bottom:10">
<StackItem>
<Button Text="Large">
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0" PreferredMinSize="x:100 y:100"/>
</Button>
</StackItem>
<StackItem>
<Button Text="Medium">
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0" PreferredMinSize="x:75 y:75"/>
</Button>
</StackItem>
<StackItem>
<Button Text="Small">
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0" PreferredMinSize="x:50 y:50"/>
</Button>
</StackItem>
</Stack>
</Cell>
</Table>
</Window> </Window>
</Instance> </Instance>
</Instance> </Instance>
@@ -23,11 +23,15 @@ namespace demo
friend struct vl::reflection::description::CustomTypeDescriptorSelector<TImpl>; friend struct vl::reflection::description::CustomTypeDescriptorSelector<TImpl>;
private: private:
protected: protected:
vl::presentation::controls::GuiSelectableButton::MutexGroupController* groupStackDirection;
vl::presentation::compositions::GuiStackComposition* stackLayout;
void InitializeComponents() void InitializeComponents()
{ {
if (InitializeFromResource()) if (InitializeFromResource())
{ {
GUI_INSTANCE_REFERENCE(groupStackDirection);
GUI_INSTANCE_REFERENCE(stackLayout);
} }
else else
{ {
@@ -37,6 +41,8 @@ namespace demo
MainWindow_() MainWindow_()
:vl::presentation::GuiInstancePartialClass<vl::presentation::controls::GuiWindow>(L"demo::MainWindow") :vl::presentation::GuiInstancePartialClass<vl::presentation::controls::GuiWindow>(L"demo::MainWindow")
,vl::presentation::controls::GuiWindow(vl::presentation::theme::GetCurrentTheme()->CreateWindowStyle()) ,vl::presentation::controls::GuiWindow(vl::presentation::theme::GetCurrentTheme()->CreateWindowStyle())
,groupStackDirection(0)
,stackLayout(0)
{ {
} }
}; };
@@ -17,6 +17,83 @@
<Instance ref.CodeBehind="false" ref.Class="demo::MainWindow"> <Instance ref.CodeBehind="false" ref.Class="demo::MainWindow">
<Window Text="Table" ClientSize="x:480 y:320"> <Window Text="Table" ClientSize="x:480 y:320">
<att.BoundsComposition-set PreferredMinSize="x:480 y:320"/> <att.BoundsComposition-set PreferredMinSize="x:480 y:320"/>
<Table AlignmentToParent="left:5 top:5 right:5 bottom:5" CellPadding="5" MinSizeLimitation="LimitToElementAndChildren">
<att.Rows>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:Absolute absolute:20</CellOption>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:Percentage percentage:1.0</CellOption>
<CellOption>composeType:MinSize</CellOption>
</att.Rows>
<att.Columns>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:Percentage percentage:1.0</CellOption>
<CellOption>composeType:MinSize</CellOption>
</att.Columns>
<Cell Site="row:0 column:0 columnSpan:3">
<SolidLabel Font="fontFamily:{Lucida Calligraphy} size:96" HorizontalAlignment="Center" VerticalAlignment="Center" Text="GacUI"/>
</Cell>
<Cell Site="row:2 column:0">
<Label Text="User Name:"/>
</Cell>
<Cell Site="row:2 column:1">
<SinglelineTextBox>
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
</SinglelineTextBox>
</Cell>
<Cell Site="row:2 column:2">
<Button Text="Forget User Name ...">
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
</Button>
</Cell>
<Cell Site="row:3 column:0">
<Label Text="Password:"/>
</Cell>
<Cell Site="row:3 column:1">
<SinglelineTextBox PasswordChar="*">
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
</SinglelineTextBox>
</Cell>
<Cell Site="row:3 column:2">
<Button Text="Forget Password ...">
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
</Button>
</Cell>
<Cell Site="row:5 column:0 columnSpan:3">
<Table AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
<att.Rows>
<CellOption>composeType:MinSize</CellOption>
</att.Rows>
<att.Columns>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:MinSize</CellOption>
<CellOption>composeType:Percentage percentage:1.0</CellOption>
<CellOption>composeType:MinSize</CellOption>
</att.Columns>
<Cell Site="row:0 column:0" InternalMargin="right:10">
<Button Text="Sign Up ...">
<att.BoundsComposition-set PreferredMinSize="x:100 y:30"/>
</Button>
</Cell>
<Cell Site="row:0 column:1">
<Button Text="Log In">
<att.BoundsComposition-set PreferredMinSize="x:100 y:30"/>
</Button>
</Cell>
<Cell Site="row:0 column:3">
<Button Text="Close">
<att.BoundsComposition-set PreferredMinSize="x:100 y:30"/>
</Button>
</Cell>
</Table>
</Cell>
</Table>
</Window> </Window>
</Instance> </Instance>
</Instance> </Instance>
Binary file not shown.
Binary file not shown.
Binary file not shown.