From cf40ef9fb8064aa4e06452eecc57bdeea5209cf8 Mon Sep 17 00:00:00 2001 From: vczh Date: Sun, 10 Dec 2023 17:58:57 -0800 Subject: [PATCH] Update release --- Import/GacUI.cpp | 4205 +++++++++------ Import/GacUI.h | 935 ++-- Import/GacUICompiler.cpp | 99 +- Import/GacUICompiler.h | 14 +- Import/GacUIReflection.cpp | 86 +- Import/GacUIReflection.h | 21 +- Import/VlppGlrParserCompiler.cpp | 471 +- Import/VlppGlrParserCompiler.h | 3 +- Import/VlppOS.Linux.cpp | 2 +- Import/VlppOS.Windows.cpp | 2 +- Import/VlppOS.h | 2 +- Tools/Reflection32.bin | Bin 936261 -> 945410 bytes Tools/Reflection64.bin | Bin 936261 -> 945410 bytes .../FullControlTest/RefreshListTabPages.xml | 1039 ++++ .../BlackSkin/UI/FullControlTest/Resource.xml | 15 + .../Source/DemoPartialClasses.cpp | 4621 +++++++++++++++-- .../Source/DemoPartialClasses.h | 1911 +++++-- .../FullControlTest/Source/DemoReflection.cpp | 357 ++ .../FullControlTest/Source/DemoReflection.h | 17 + .../GacUI_ControlTemplate/UIRes/BlackSkin.bin | Bin 93300 -> 93695 bytes Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 | Bin 25176 -> 25176 bytes Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 | Bin 25176 -> 25176 bytes 22 files changed, 10614 insertions(+), 3186 deletions(-) create mode 100644 Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/RefreshListTabPages.xml diff --git a/Import/GacUI.cpp b/Import/GacUI.cpp index ae4a127c..40827184 100644 --- a/Import/GacUI.cpp +++ b/Import/GacUI.cpp @@ -3629,6 +3629,7 @@ GuiGraphicsComposition if(!child) return false; vint index=children.IndexOf(child); if(index==-1) return false; + if(index==newIndex) return true; children.RemoveAt(index); children.Insert(newIndex, child); InvokeOnCompositionStateChanged(); @@ -6801,6 +6802,7 @@ GuiScrollView void GuiScrollView::SetViewPosition(Point value) { + if (GetViewPosition() == value) return; auto ct = TypedControlTemplateObject(true); if (auto hScroll = ct->GetHorizontalScroll()) { @@ -8188,14 +8190,26 @@ DataReverseSorter DataColumn ***********************************************************************/ - void DataColumn::NotifyAllColumnsUpdate(bool affectItem) + void DataColumn::NotifyRebuilt() { if (dataProvider) { vint index = dataProvider->columns.IndexOf(this); if (index != -1) { - dataProvider->columns.NotifyColumnUpdated(index, affectItem); + dataProvider->columns.NotifyColumnRebuilt(index); + } + } + } + + void DataColumn::NotifyChanged(bool needToRefreshItems) + { + if (dataProvider) + { + vint index = dataProvider->columns.IndexOf(this); + if (index != -1) + { + dataProvider->columns.NotifyColumnChanged(index, needToRefreshItems); } } } @@ -8222,7 +8236,7 @@ DataColumn if (text != value) { text = value; - NotifyAllColumnsUpdate(false); + NotifyChanged(false); } } @@ -8236,7 +8250,7 @@ DataColumn if (size != value) { size = value; - NotifyAllColumnsUpdate(false); + NotifyChanged(true); } } @@ -8260,7 +8274,7 @@ DataColumn if (popup != value) { popup = value; - NotifyAllColumnsUpdate(false); + NotifyChanged(false); } } @@ -8274,7 +8288,7 @@ DataColumn if (associatedFilter) associatedFilter->SetCallback(nullptr); associatedFilter = value; if (associatedFilter) associatedFilter->SetCallback(dataProvider); - NotifyAllColumnsUpdate(false); + NotifyChanged(false); } Ptr DataColumn::GetSorter() @@ -8287,7 +8301,7 @@ DataColumn if (associatedSorter) associatedSorter->SetCallback(nullptr); associatedSorter = value; if (associatedSorter) associatedSorter->SetCallback(dataProvider); - NotifyAllColumnsUpdate(false); + NotifyChanged(false); } Ptr DataColumn::GetVisualizerFactory() @@ -8298,7 +8312,7 @@ DataColumn void DataColumn::SetVisualizerFactory(Ptr value) { visualizerFactory = value; - NotifyAllColumnsUpdate(true); + NotifyRebuilt(); } Ptr DataColumn::GetEditorFactory() @@ -8309,7 +8323,7 @@ DataColumn void DataColumn::SetEditorFactory(Ptr value) { editorFactory = value; - NotifyAllColumnsUpdate(true); + NotifyRebuilt(); } WString DataColumn::GetCellText(vint row) @@ -8336,7 +8350,7 @@ DataColumn { auto rowValue = dataProvider->GetBindingValue(row); WriteProperty(rowValue, valueProperty, value); - dataProvider->InvokeOnItemModified(row, 1, 1); + dataProvider->InvokeOnItemModified(row, 1, 1, false); } } @@ -8350,7 +8364,7 @@ DataColumn if (textProperty != value) { textProperty = value; - NotifyAllColumnsUpdate(true); + NotifyRebuilt(); compositions::GuiEventArgs arguments; TextPropertyChanged.Execute(arguments); } @@ -8366,7 +8380,7 @@ DataColumn if (valueProperty != value) { valueProperty = value; - NotifyAllColumnsUpdate(true); + NotifyRebuilt(); compositions::GuiEventArgs arguments; ValuePropertyChanged.Execute(arguments); } @@ -8376,20 +8390,19 @@ DataColumn DataColumns ***********************************************************************/ - void DataColumns::NotifyColumnUpdated(vint index, bool affectItem) + void DataColumns::NotifyColumnRebuilt(vint column) { - affectItemFlag = affectItem; - NotifyUpdateInternal(index, 1, 1); - affectItemFlag = true; + NotifyUpdate(column, 1); + } + + void DataColumns::NotifyColumnChanged(vint column, bool needToRefreshItems) + { + dataProvider->NotifyColumnChanged(); } void DataColumns::NotifyUpdateInternal(vint start, vint count, vint newCount) { - dataProvider->NotifyAllColumnsUpdate(); - if (affectItemFlag) - { - dataProvider->NotifyAllItemsUpdate(); - } + dataProvider->NotifyColumnRebuilt(); } bool DataColumns::QueryInsert(vint index, const Ptr& value) @@ -8420,17 +8433,46 @@ DataColumns DataProvider ***********************************************************************/ - void DataProvider::NotifyAllItemsUpdate() + bool DataProvider::NotifyUpdate(vint start, vint count, bool itemReferenceUpdated) { - InvokeOnItemModified(0, Count(), Count()); + if (!itemSource) return false; + if (start<0 || start >= itemSource->GetCount() || count <= 0 || start + count > itemSource->GetCount()) + { + return false; + } + else + { + InvokeOnItemModified(start, count, count, itemReferenceUpdated); + return true; + } } - void DataProvider::NotifyAllColumnsUpdate() + void DataProvider::RebuildAllItems() { - if (columnItemViewCallback) + NotifyUpdate(0, Count(), true); + } + + void DataProvider::RefreshAllItems() + { + NotifyUpdate(0, Count(), false); + } + + void DataProvider::NotifyColumnRebuilt() + { + for (auto callback : columnItemViewCallbacks) { - columnItemViewCallback->OnColumnChanged(); + callback->OnColumnRebuilt(); } + RefreshAllItems(); + } + + void DataProvider::NotifyColumnChanged() + { + for (auto callback : columnItemViewCallbacks) + { + callback->OnColumnChanged(true); + } + RefreshAllItems(); } GuiListControl::IItemProvider* DataProvider::GetItemProvider() @@ -8448,7 +8490,7 @@ DataProvider { if (!currentSorter && !currentFilter && count == newCount) { - InvokeOnItemModified(start, count, newCount); + InvokeOnItemModified(start, count, newCount, true); } else { @@ -8583,7 +8625,7 @@ DataProvider if (invokeCallback) { - NotifyAllItemsUpdate(); + RefreshAllItems(); } } @@ -8708,16 +8750,29 @@ DataProvider bool DataProvider::AttachCallback(ListViewColumnItemArranger::IColumnItemViewCallback* value) { - if (columnItemViewCallback)return false; - columnItemViewCallback = value; - return true; + if (columnItemViewCallbacks.Contains(value)) + { + return false; + } + else + { + columnItemViewCallbacks.Add(value); + return true; + } } bool DataProvider::DetachCallback(ListViewColumnItemArranger::IColumnItemViewCallback* value) { - if (!columnItemViewCallback) return false; - columnItemViewCallback = nullptr; - return true; + vint index = columnItemViewCallbacks.IndexOf(value); + if (index == -1) + { + return false; + } + else + { + columnItemViewCallbacks.Remove(value); + return true; + } } vint DataProvider::GetColumnSize(vint index) @@ -8781,7 +8836,7 @@ DataProvider ColumnSortingState::Descending ; } - NotifyAllColumnsUpdate(); + NotifyColumnChanged(); ReorderRows(true); } @@ -8893,7 +8948,7 @@ GuiBindableDataGrid if (dataProvider->largeImageProperty != value) { dataProvider->largeImageProperty = value; - dataProvider->NotifyAllItemsUpdate(); + dataProvider->RefreshAllItems(); LargeImagePropertyChanged.Execute(GetNotifyEventArguments()); } } @@ -8908,7 +8963,7 @@ GuiBindableDataGrid if (dataProvider->smallImageProperty != value) { dataProvider->smallImageProperty = value; - dataProvider->NotifyAllItemsUpdate(); + dataProvider->RefreshAllItems(); SmallImagePropertyChanged.Execute(GetNotifyEventArguments()); } } @@ -8932,6 +8987,12 @@ GuiBindableDataGrid } return dataProvider->GetColumns()[pos.column]->GetCellValue(pos.row); } + + bool GuiBindableDataGrid::NotifyItemDataModified(vint start, vint count) + { + StopEdit(); + return dataProvider->NotifyUpdate(start, count, false); + } } } } @@ -8997,7 +9058,7 @@ GuiBindableTextList::ItemSource itemSource = ol; itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) { - InvokeOnItemModified(start, oldCount, newCount); + InvokeOnItemModified(start, oldCount, newCount, true); }); } else if (auto rl = _itemSource.Cast()) @@ -9010,7 +9071,7 @@ GuiBindableTextList::ItemSource } } - InvokeOnItemModified(0, oldCount, itemSource ? itemSource->GetCount() : 0); + InvokeOnItemModified(0, oldCount, itemSource ? itemSource->GetCount() : 0, true); } description::Value GuiBindableTextList::ItemSource::Get(vint index) @@ -9021,9 +9082,23 @@ GuiBindableTextList::ItemSource void GuiBindableTextList::ItemSource::UpdateBindingProperties() { - InvokeOnItemModified(0, Count(), Count()); + InvokeOnItemModified(0, Count(), Count(), false); } - + + bool GuiBindableTextList::ItemSource::NotifyUpdate(vint start, vint count, bool itemReferenceUpdated) + { + if (!itemSource) return false; + if (start<0 || start >= itemSource->GetCount() || count <= 0 || start + count > itemSource->GetCount()) + { + return false; + } + else + { + InvokeOnItemModified(start, count, count, itemReferenceUpdated); + return true; + } + } + // ===================== GuiListControl::IItemProvider ===================== vint GuiBindableTextList::ItemSource::Count() @@ -9092,7 +9167,7 @@ GuiBindableTextList::ItemSource { auto thisValue = itemSource->Get(itemIndex); WriteProperty(thisValue, checkedProperty, value); - InvokeOnItemModified(itemIndex, 1, 1); + InvokeOnItemModified(itemIndex, 1, 1, false); } } } @@ -9161,6 +9236,11 @@ GuiBindableTextList return itemSource->Get(index); } + bool GuiBindableTextList::NotifyItemDataModified(vint start, vint count) + { + return itemSource->NotifyUpdate(start, count, false); + } + /*********************************************************************** GuiBindableListView::ItemSource ***********************************************************************/ @@ -9208,7 +9288,7 @@ GuiBindableListView::ItemSource itemSource = ol; itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) { - InvokeOnItemModified(start, oldCount, newCount); + InvokeOnItemModified(start, oldCount, newCount, true); }); } else if (auto rl = _itemSource.Cast()) @@ -9221,7 +9301,7 @@ GuiBindableListView::ItemSource } } - InvokeOnItemModified(0, oldCount, itemSource ? itemSource->GetCount() : 0); + InvokeOnItemModified(0, oldCount, itemSource ? itemSource->GetCount() : 0, true); } description::Value GuiBindableListView::ItemSource::Get(vint index) @@ -9232,10 +9312,10 @@ GuiBindableListView::ItemSource void GuiBindableListView::ItemSource::UpdateBindingProperties() { - InvokeOnItemModified(0, Count(), Count()); + InvokeOnItemModified(0, Count(), Count(), false); } - bool GuiBindableListView::ItemSource::NotifyUpdate(vint start, vint count) + bool GuiBindableListView::ItemSource::NotifyUpdate(vint start, vint count, bool itemReferenceUpdated) { if (!itemSource) return false; if (start<0 || start >= itemSource->GetCount() || count <= 0 || start + count > itemSource->GetCount()) @@ -9244,7 +9324,7 @@ GuiBindableListView::ItemSource } else { - InvokeOnItemModified(start, count, count); + InvokeOnItemModified(start, count, count, itemReferenceUpdated); return true; } } @@ -9261,18 +9341,32 @@ GuiBindableListView::ItemSource // ===================== list::IListViewItemProvider ===================== - void GuiBindableListView::ItemSource::NotifyAllItemsUpdate() + void GuiBindableListView::ItemSource::RebuildAllItems() { - NotifyUpdate(0, Count()); + InvokeOnItemModified(0, Count(), Count(), true); } - void GuiBindableListView::ItemSource::NotifyAllColumnsUpdate() + void GuiBindableListView::ItemSource::RefreshAllItems() { - // TODO: (enumerable) foreach - for (vint i = 0; i < columnItemViewCallbacks.Count(); i++) + InvokeOnItemModified(0, Count(), Count(), false); + } + + void GuiBindableListView::ItemSource::NotifyColumnRebuilt() + { + for (auto callback : columnItemViewCallbacks) { - columnItemViewCallbacks[i]->OnColumnChanged(); + callback->OnColumnRebuilt(); } + RebuildAllItems(); + } + + void GuiBindableListView::ItemSource::NotifyColumnChanged() + { + for (auto callback : columnItemViewCallbacks) + { + callback->OnColumnChanged(true); + } + RefreshAllItems(); } // ===================== GuiListControl::IItemProvider ===================== @@ -9540,6 +9634,11 @@ GuiBindableListView return itemSource->Get(index); } + bool GuiBindableListView::NotifyItemDataModified(vint start, vint count) + { + return itemSource->NotifyUpdate(start, count, false); + } + /*********************************************************************** GuiBindableTreeView::ItemSourceNode ***********************************************************************/ @@ -9576,7 +9675,7 @@ GuiBindableTreeView::ItemSourceNode { itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) { - callback->OnBeforeItemModified(this, start, oldCount, newCount); + callback->OnBeforeItemModified(this, start, oldCount, newCount, true); children.RemoveRange(start, oldCount); for (vint i = 0; i < newCount; i++) { @@ -9584,7 +9683,7 @@ GuiBindableTreeView::ItemSourceNode auto node = Ptr(new ItemSourceNode(value, this)); children.Insert(start + i, node); } - callback->OnAfterItemModified(this, start, oldCount, newCount); + callback->OnAfterItemModified(this, start, oldCount, newCount, true); }); } @@ -9614,12 +9713,37 @@ GuiBindableTreeView::ItemSourceNode children.Clear(); } + void GuiBindableTreeView::ItemSourceNode::PrepareReverseMapping() + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::GuiBindableTreeView::ItemSourceNode::PrepareReverseMapping()#" + if (rootProvider->reverseMappingProperty && !itemSource.IsNull()) + { + auto oldValue = ReadProperty(itemSource, rootProvider->reverseMappingProperty); + CHECK_ERROR(oldValue.IsNull(), ERROR_MESSAGE_PREFIX L"The reverse mapping property of an item has been unexpectedly changed."); + WriteProperty(itemSource, rootProvider->reverseMappingProperty, Value::From(this)); + } +#undef ERROR_MESSAGE_PREFIX + } + + void GuiBindableTreeView::ItemSourceNode::UnprepareReverseMapping() + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::GuiBindableTreeView::ItemSourceNode::PrepareReverseMapping()#" + if (rootProvider->reverseMappingProperty && !itemSource.IsNull()) + { + auto oldValue = ReadProperty(itemSource, rootProvider->reverseMappingProperty); + CHECK_ERROR(oldValue.GetRawPtr() == this, ERROR_MESSAGE_PREFIX L"The reverse mapping property of an item has been unexpectedly changed."); + WriteProperty(itemSource, rootProvider->reverseMappingProperty, {}); + } +#undef ERROR_MESSAGE_PREFIX + } + GuiBindableTreeView::ItemSourceNode::ItemSourceNode(const description::Value& _itemSource, ItemSourceNode* _parent) :itemSource(_itemSource) , rootProvider(_parent->rootProvider) , parent(_parent) , callback(_parent->callback) { + PrepareReverseMapping(); } GuiBindableTreeView::ItemSourceNode::ItemSourceNode(ItemSource* _rootProvider) @@ -9631,6 +9755,7 @@ GuiBindableTreeView::ItemSourceNode GuiBindableTreeView::ItemSourceNode::~ItemSourceNode() { + UnprepareReverseMapping(); if (itemChangedEventHandler) { auto ol = childrenVirtualList.Cast(); @@ -9649,11 +9774,13 @@ GuiBindableTreeView::ItemSourceNode vint oldCount = childrenVirtualList ? childrenVirtualList->GetCount() : 0; vint newCount = newVirtualList->GetCount(); - callback->OnBeforeItemModified(this, 0, oldCount, newCount); + callback->OnBeforeItemModified(this, 0, oldCount, newCount, true); UnprepareChildren(); + UnprepareReverseMapping(); itemSource = _itemSource; + PrepareReverseMapping(); PrepareChildren(newVirtualList); - callback->OnAfterItemModified(this, 0, oldCount, newCount); + callback->OnAfterItemModified(this, 0, oldCount, newCount, true); } bool GuiBindableTreeView::ItemSourceNode::GetExpanding() @@ -9696,6 +9823,16 @@ GuiBindableTreeView::ItemSourceNode return count; } + void GuiBindableTreeView::ItemSourceNode::NotifyDataModified() + { + if (parent) + { + vint index = parent->children.IndexOf(this); + callback->OnBeforeItemModified(parent, index, 1, 1, false); + callback->OnAfterItemModified(parent, index, 1, 1, false); + } + } + vint GuiBindableTreeView::ItemSourceNode::GetChildCount() { if (!childrenVirtualList) @@ -9754,8 +9891,8 @@ GuiBindableTreeView::ItemSource rootNode->UnprepareChildren(); } vint newCount = rootNode->GetChildCount(); - OnBeforeItemModified(rootNode.Obj(), 0, oldCount, newCount); - OnAfterItemModified(rootNode.Obj(), 0, oldCount, newCount); + OnBeforeItemModified(rootNode.Obj(), 0, oldCount, newCount, updateChildrenProperty); + OnAfterItemModified(rootNode.Obj(), 0, oldCount, newCount, updateChildrenProperty); } // ===================== tree::INodeRootProvider ===================== @@ -9806,10 +9943,11 @@ GuiBindableTreeView::ItemSource GuiBindableTreeView ***********************************************************************/ - GuiBindableTreeView::GuiBindableTreeView(theme::ThemeName themeName) + GuiBindableTreeView::GuiBindableTreeView(theme::ThemeName themeName, WritableItemProperty reverseMappingProperty) :GuiVirtualTreeView(themeName, Ptr(new ItemSource)) { itemSource = dynamic_cast(GetNodeRootProvider()); + itemSource->reverseMappingProperty = reverseMappingProperty; TextPropertyChanged.SetAssociatedComposition(boundsComposition); ImagePropertyChanged.SetAssociatedComposition(boundsComposition); @@ -9829,6 +9967,11 @@ GuiBindableTreeView { itemSource->SetItemSource(_itemSource); } + + WritableItemProperty GuiBindableTreeView::GetReverseMappingProperty() + { + return itemSource->reverseMappingProperty; + } ItemProperty GuiBindableTreeView::GetTextProperty() { @@ -9890,6 +10033,29 @@ GuiBindableTreeView } return result; } + + void GuiBindableTreeView::NotifyNodeDataModified(description::Value value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::GuiBindableTreeView::NotifyNodeDataModified(Value)#" + + CHECK_ERROR(itemSource->reverseMappingProperty, ERROR_MESSAGE_PREFIX L"This function can only be called when the ReverseMappingProperty is in use."); + CHECK_ERROR(!value.IsNull(), ERROR_MESSAGE_PREFIX L"The item cannot be null."); + auto mapping = ReadProperty(value, itemSource->reverseMappingProperty); + auto node = dynamic_cast(mapping.GetRawPtr()); + CHECK_ERROR(node, ERROR_MESSAGE_PREFIX L"The item is not binded to a GuiBindableTreeView control or its reverse mapping property has been unexpectedly changed."); + + auto rootNode = node; + while (rootNode->GetParent()) + { + rootNode = rootNode->GetParent().Obj(); + } + + CHECK_ERROR(rootNode == itemSource->rootNode.Obj(), ERROR_MESSAGE_PREFIX L"The item is not binded to this control."); + CHECK_ERROR(node != itemSource->rootNode.Obj(), ERROR_MESSAGE_PREFIX L"The item should not be the root item, which is the item source assigned to this control."); + node->NotifyDataModified(); + +#undef ERROR_MESSAGE_PREFIX + } } } } @@ -10132,14 +10298,11 @@ GuiComboBoxListControl { } - void GuiComboBoxListControl::OnItemModified(vint start, vint count, vint newCount) + void GuiComboBoxListControl::OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated) { - if (count == newCount) + if (count == newCount && start <= selectedIndex && selectedIndex < start + count) { - if (start <= selectedIndex && selectedIndex < start + count) - { - DisplaySelectedContent(selectedIndex); - } + DisplaySelectedContent(selectedIndex); } else { @@ -10378,34 +10541,58 @@ DefaultDataGridItemTemplate } } - void DefaultDataGridItemTemplate::OnColumnChanged() + void DefaultDataGridItemTemplate::DeleteAllVisualizers() { - UpdateSubItemSize(); + for (vint i = 0; i < dataVisualizers.Count(); i++) + { + DeleteVisualizer(i); + } } - void DefaultDataGridItemTemplate::OnInitialize() + void DefaultDataGridItemTemplate::DeleteVisualizer(vint column) { - DefaultListViewItemTemplate::OnInitialize(); + auto visualizer = dataVisualizers[column]; + auto composition = visualizer->GetTemplate(); + visualizer->NotifyDeletedTemplate(); + if (composition->GetParent()) { - textTable = new GuiTableComposition; - textTable->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); - textTable->SetAlignmentToParent(Margin(0, 0, 0, 0)); - textTable->SetRowsAndColumns(1, 1); - textTable->SetRowOption(0, GuiCellOption::MinSizeOption()); - textTable->SetColumnOption(0, GuiCellOption::AbsoluteOption(0)); - AddChild(textTable); + composition->GetParent()->RemoveChild(composition); } + SafeDeleteComposition(composition); + dataVisualizers[column] = nullptr; + } - if (auto dataGrid = dynamic_cast(listControl)) + void DefaultDataGridItemTemplate::ResetDataTable(vint columnCount) + { + vint itemIndex = GetIndex(); + + if (dataVisualizers.Count() == columnCount) { - vint columnCount = dataGrid->listViewItemView->GetColumnCount(); - vint itemIndex = GetIndex(); - - dataVisualizers.Resize(columnCount); - for (vint i = 0; i < dataVisualizers.Count(); i++) + for (vint i = 0; i < columnCount; i++) { auto factory = GetDataVisualizerFactory(itemIndex, i); - dataVisualizers[i] = factory->CreateVisualizer(dataGrid); + if (dataVisualizerFactories[i] != factory) + { + DeleteVisualizer(i); + dataVisualizerFactories[i] = factory; + } + } + } + else + { + DeleteAllVisualizers(); + dataVisualizerFactories.Resize(columnCount); + dataVisualizers.Resize(columnCount); + + for (auto cell : dataCells) + { + SafeDeleteComposition(cell); + } + dataCells.Resize(columnCount); + + for (vint i = 0; i < columnCount; i++) + { + dataVisualizerFactories[i] = GetDataVisualizerFactory(itemIndex, i); } textTable->SetRowsAndColumns(1, columnCount); @@ -10418,28 +10605,21 @@ DefaultDataGridItemTemplate cell->GetEventReceiver()->rightButtonDown.AttachMethod(this, &DefaultDataGridItemTemplate::OnCellButtonDown); cell->GetEventReceiver()->leftButtonUp.AttachMethod(this, &DefaultDataGridItemTemplate::OnCellLeftButtonUp); cell->GetEventReceiver()->rightButtonUp.AttachMethod(this, &DefaultDataGridItemTemplate::OnCellRightButtonUp); + dataCells[i] = cell; + } + } + } - auto composition = dataVisualizers[i]->GetTemplate(); - composition->SetAlignmentToParent(Margin(0, 0, 0, 0)); - cell->AddChild(composition); - } - - // TODO: (enumerable) foreach - for (vint i = 0; i < dataVisualizers.Count(); i++) - { - dataVisualizers[i]->BeforeVisualizeCell(dataGrid->GetItemProvider(), itemIndex, i); - } - - GridPos selectedCell = dataGrid->GetSelectedCell(); - if (selectedCell.row == itemIndex) - { - NotifySelectCell(selectedCell.column); - } - else - { - NotifySelectCell(-1); - } - UpdateSubItemSize(); + void DefaultDataGridItemTemplate::OnInitialize() + { + { + textTable = new GuiTableComposition; + textTable->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); + textTable->SetAlignmentToParent(Margin(0, 0, 0, 0)); + textTable->SetRowsAndColumns(1, 1); + textTable->SetRowOption(0, GuiCellOption::MinSizeOption()); + textTable->SetColumnOption(0, GuiCellOption::AbsoluteOption(0)); + AddChild(textTable); } SelectedChanged.AttachMethod(this, &DefaultDataGridItemTemplate::OnSelectedChanged); @@ -10453,6 +10633,44 @@ DefaultDataGridItemTemplate VisuallyEnabledChanged.Execute(compositions::GuiEventArgs(this)); } + void DefaultDataGridItemTemplate::OnRefresh() + { + if (auto dataGrid = dynamic_cast(listControl)) + { + vint columnCount = dataGrid->listViewItemView->GetColumnCount(); + vint itemIndex = GetIndex(); + ResetDataTable(columnCount); + + for (vint i = 0; i < columnCount; i++) + { + auto& dataVisualizer = dataVisualizers[i]; + if (!dataVisualizer) + { + dataVisualizer = dataVisualizerFactories[i]->CreateVisualizer(dataGrid); + dataVisualizer->GetTemplate()->SetFont(GetFont()); + dataVisualizers[i] = dataVisualizer; + + auto cell = dataCells[i]; + auto composition = dataVisualizer->GetTemplate(); + composition->SetAlignmentToParent(Margin(0, 0, 0, 0)); + cell->AddChild(composition); + } + dataVisualizer->BeforeVisualizeCell(dataGrid->GetItemProvider(), itemIndex, i); + } + + GridPos selectedCell = dataGrid->GetSelectedCell(); + if (selectedCell.row == itemIndex) + { + NotifySelectCell(selectedCell.column); + } + else + { + NotifySelectCell(-1); + } + } + UpdateSubItemSize(); + } + void DefaultDataGridItemTemplate::OnSelectedChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) { if (!GetSelected()) @@ -10619,18 +10837,18 @@ GuiVirtualDataGrid (Editor) return GuiVirtualListView::GetActivatingAltHost(); } - void GuiVirtualDataGrid::OnItemModified(vint start, vint count, vint newCount) + void GuiVirtualDataGrid::OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated) { - GuiVirtualListView::OnItemModified(start, count, newCount); - if(!GetItemProvider()->IsEditing()) + GuiVirtualListView::OnItemModified(start, count, newCount, itemReferenceUpdated); + if (!GetItemProvider()->IsEditing()) { StopEdit(); } } - void GuiVirtualDataGrid::OnStyleInstalled(vint index, ItemStyle* style) + void GuiVirtualDataGrid::OnStyleInstalled(vint index, ItemStyle* style, bool refreshPropertiesOnly) { - GuiVirtualListView::OnStyleInstalled(index, style); + GuiVirtualListView::OnStyleInstalled(index, style, refreshPropertiesOnly); if (auto itemStyle = dynamic_cast(style)) { if (selectedCell.row == index && selectedCell.column != -1) @@ -10740,6 +10958,7 @@ GuiVirtualDataGrid (IDataGridContext) void GuiVirtualDataGrid::RequestSaveData() { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::list::DefaultTextListItemTemplate::OnBulletSelectedChanged(GuiGraphicsComposition*, GuiEventArgs&)#" if (currentEditor && !currentEditorOpeningEditor) { GuiControl* focusedControl = nullptr; @@ -10756,7 +10975,7 @@ GuiVirtualDataGrid (IDataGridContext) GetItemProvider()->PushEditing(); dataGridView->SetBindingCellValue(currentEditorPos.row, currentEditorPos.column, currentEditor->GetTemplate()->GetCellValue()); - GetItemProvider()->PopEditing(); + CHECK_ERROR(GetItemProvider()->PopEditing(), ERROR_MESSAGE_PREFIX L"BeginEditListItem and EndEditListItem calls are not paired."); auto style = GetArranger()->GetVisibleStyle(currentEditorPos.row); if (auto itemStyle = dynamic_cast(style)) @@ -10769,6 +10988,7 @@ GuiVirtualDataGrid (IDataGridContext) focusedControl->SetFocused(); } } +#undef ERROR_MESSAGE_PREFIX } /*********************************************************************** @@ -11312,7 +11532,6 @@ SubColumnVisualizerTemplate void SubColumnVisualizerTemplate::Initialize(bool fixTextColor) { - SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); auto textBounds = new GuiBoundsComposition; @@ -11489,175 +11708,82 @@ namespace vl namespace list { +/*********************************************************************** +RangedItemArrangerBase (ItemSource) +***********************************************************************/ + + class ArrangerItemSource : public Object, public virtual description::IValueObservableList + { + protected: + GuiListControl::IItemProvider* itemProvider = nullptr; + + public: + ArrangerItemSource(GuiListControl::IItemProvider* _itemProvider) + : itemProvider(_itemProvider) + { + } + + vint GetCount() override + { + return itemProvider->Count(); + } + + description::Value Get(vint index) override + { + return itemProvider->GetBindingValue(index); + } + + Ptr CreateEnumerator() override { CHECK_FAIL(L"ArrangerItemSource::CreateEnumerator should not be called."); } + bool Contains(const description::Value& value) override { CHECK_FAIL(L"ArrangerItemSource::Contains should not be called."); } + vint IndexOf(const description::Value& value) override { CHECK_FAIL(L"ArrangerItemSource::IndexOf should not be called."); } + + void Set(vint index, const description::Value& value) override { CHECK_FAIL(L"ArrangerItemSource::Set should not be called."); } + vint Add(const description::Value& value) override { CHECK_FAIL(L"ArrangerItemSource::Add should not be called."); } + vint Insert(vint index, const description::Value& value) override { CHECK_FAIL(L"ArrangerItemSource::Insert should not be called."); } + bool Remove(const description::Value& value) override { CHECK_FAIL(L"ArrangerItemSource::Remove should not be called."); } + bool RemoveAt(vint index) override { CHECK_FAIL(L"ArrangerItemSource::RemoveAt should not be called."); } + void Clear() override { CHECK_FAIL(L"ArrangerItemSource::Clear should not be called."); } + }; + /*********************************************************************** RangedItemArrangerBase ***********************************************************************/ - void RangedItemArrangerBase::InvalidateAdoptedSize() + void RangedItemArrangerBase::OnViewLocationChanged(compositions::GuiGraphicsComposition* composition, compositions::GuiEventArgs& arguments) { - if (listControl) - { - listControl->AdoptedSizeInvalidated.Execute(listControl->GetNotifyEventArguments()); - } - } - - vint RangedItemArrangerBase::CalculateAdoptedSize(vint expectedSize, vint count, vint itemSize) - { - vint visibleCount = expectedSize / itemSize; - if (count < visibleCount) - { - visibleCount = count; - } - else if (count > visibleCount) - { - vint deltaA = expectedSize - count * itemSize; - vint deltaB = itemSize - deltaA; - if (deltaB < deltaA) - { - visibleCount++; - } - } - return visibleCount * itemSize; - } - - RangedItemArrangerBase::ItemStyleRecord RangedItemArrangerBase::CreateStyle(vint index) - { - GuiSelectableButton* backgroundButton = nullptr; - if (listControl->GetDisplayItemBackground()) - { - backgroundButton = new GuiSelectableButton(theme::ThemeName::ListItemBackground); - if (auto style = listControl->TypedControlTemplateObject(true)->GetBackgroundTemplate()) - { - backgroundButton->SetControlTemplate(style); - } - backgroundButton->SetAutoFocus(false); - backgroundButton->SetAutoSelection(false); - } - - auto itemStyle = callback->RequestItem(index, backgroundButton->GetBoundsComposition()); - if (backgroundButton) - { - itemStyle->SetAlignmentToParent(Margin(0, 0, 0, 0)); - itemStyle->SelectedChanged.AttachLambda([=](GuiGraphicsComposition* sender, GuiEventArgs& arguments) - { - backgroundButton->SetSelected(itemStyle->GetSelected()); - }); - - backgroundButton->SetSelected(itemStyle->GetSelected()); - backgroundButton->GetContainerComposition()->AddChild(itemStyle); - } - return { itemStyle, backgroundButton }; - } - - void RangedItemArrangerBase::DeleteStyle(ItemStyleRecord style) - { - callback->ReleaseItem(style.key); - if (style.value) - { - SafeDeleteControl(style.value); - } - } - - compositions::GuiBoundsComposition* RangedItemArrangerBase::GetStyleBounds(ItemStyleRecord style) - { - return style.value ? style.value->GetBoundsComposition() : style.key; - } - - void RangedItemArrangerBase::ClearStyles() - { - startIndex = 0; if (callback) { - // TODO: (enumerable) foreach - for (vint i = 0; i < visibleStyles.Count(); i++) - { - DeleteStyle(visibleStyles[i]); - } + callback->SetViewLocation(repeat->GetViewLocation()); } - visibleStyles.Clear(); - viewBounds = Rect(0, 0, 0, 0); - InvalidateItemSizeCache(); - InvalidateAdoptedSize(); } - void RangedItemArrangerBase::OnViewChangedInternal(Rect oldBounds, Rect newBounds) + void RangedItemArrangerBase::OnTotalSizeChanged(compositions::GuiGraphicsComposition* composition, compositions::GuiEventArgs& arguments) { - vint endIndex = startIndex + visibleStyles.Count() - 1; - vint newStartIndex = 0; - vint itemCount = itemProvider->Count(); - BeginPlaceItem(true, newBounds, newStartIndex); - if (newStartIndex < 0) newStartIndex = 0; - - StyleList newVisibleStyles; - for (vint i = newStartIndex; i < itemCount; i++) - { - bool reuseOldStyle = startIndex <= i && i <= endIndex; - auto style = reuseOldStyle ? visibleStyles[i - startIndex] : CreateStyle(i); - newVisibleStyles.Add(style); - - Rect bounds; - Margin alignmentToParent; - PlaceItem(true, !reuseOldStyle, i, style, newBounds, bounds, alignmentToParent); - if (IsItemOutOfViewBounds(i, style, bounds, newBounds)) - { - break; - } - - bounds.x1 -= newBounds.x1; - bounds.x2 -= newBounds.x1; - bounds.y1 -= newBounds.y1; - bounds.y2 -= newBounds.y1; - } - - vint newEndIndex = newStartIndex + newVisibleStyles.Count() - 1; - // TODO: (enumerable) foreach:indexed - for (vint i = 0; i < visibleStyles.Count(); i++) - { - vint index = startIndex + i; - if (index < newStartIndex || index > newEndIndex) - { - DeleteStyle(visibleStyles[i]); - } - } - CopyFrom(visibleStyles, newVisibleStyles); - - if (EndPlaceItem(true, newBounds, newStartIndex)) + if (callback) { callback->OnTotalSizeChanged(); - InvalidateAdoptedSize(); } - startIndex = newStartIndex; } - void RangedItemArrangerBase::RearrangeItemBounds() + void RangedItemArrangerBase::OnAdoptedSizeInvalidated(compositions::GuiGraphicsComposition* composition, compositions::GuiEventArgs& arguments) { - vint newStartIndex = startIndex; - BeginPlaceItem(false, viewBounds, newStartIndex); - // TODO: (enumerable) foreach - for (vint i = 0; i < visibleStyles.Count(); i++) + if (callback) { - auto style = visibleStyles[i]; - Rect bounds; - Margin alignmentToParent(-1, -1, -1, -1); - PlaceItem(false, false, startIndex + i, style, viewBounds, bounds, alignmentToParent); - - bounds.x1 -= viewBounds.x1; - bounds.x2 -= viewBounds.x1; - bounds.y1 -= viewBounds.y1; - bounds.y2 -= viewBounds.y1; - - callback->SetStyleAlignmentToParent(GetStyleBounds(style), alignmentToParent); - callback->SetStyleBounds(GetStyleBounds(style), bounds); + callback->OnAdoptedSizeChanged(); } - EndPlaceItem(false, viewBounds, startIndex); } - RangedItemArrangerBase::RangedItemArrangerBase() + RangedItemArrangerBase::RangedItemArrangerBase(compositions::GuiVirtualRepeatCompositionBase* _repeat) + : repeat(_repeat) { + repeat->ViewLocationChanged.AttachMethod(this, &RangedItemArrangerBase::OnViewLocationChanged); + repeat->TotalSizeChanged.AttachMethod(this, &RangedItemArrangerBase::OnTotalSizeChanged); + repeat->AdoptedSizeInvalidated.AttachMethod(this, &RangedItemArrangerBase::OnAdoptedSizeInvalidated); } RangedItemArrangerBase::~RangedItemArrangerBase() { + SafeDeleteComposition(repeat); } void RangedItemArrangerBase::OnAttached(GuiListControl::IItemProvider* provider) @@ -11665,89 +11791,34 @@ RangedItemArrangerBase itemProvider = provider; if (provider) { - OnItemModified(0, 0, provider->Count()); + itemSource = Ptr(new ArrangerItemSource(provider)); + repeat->SetItemSource(itemSource); + } + else + { + repeat->SetItemSource(nullptr); + itemSource = nullptr; } } - void RangedItemArrangerBase::OnItemModified(vint start, vint count, vint newCount) + void RangedItemArrangerBase::OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated) { - if (callback && !itemProvider->IsEditing()) + if (itemSource && itemReferenceUpdated) { - suppressOnViewChanged = true; - { - vint visibleCount = visibleStyles.Count(); - vint itemCount = itemProvider->Count(); - SortedList reusedStyles; - for (vint i = 0; i < visibleCount; i++) - { - vint index = startIndex + i; - if (index >= itemCount) - { - break; - } - - vint oldIndex = -1; - if (index < start) - { - oldIndex = index; - } - else if (index >= start + newCount) - { - oldIndex = index - newCount + count; - } - - if (oldIndex != -1) - { - if (oldIndex >= startIndex && oldIndex < startIndex + visibleCount) - { - auto style = visibleStyles[oldIndex - startIndex]; - reusedStyles.Add(style); - visibleStyles.Add(style); - } - else - { - oldIndex = -1; - } - } - if (oldIndex == -1) - { - visibleStyles.Add(CreateStyle(index)); - } - } - - for (vint i = 0; i < visibleCount; i++) - { - auto style = visibleStyles[i]; - if (!reusedStyles.Contains(style)) - { - DeleteStyle(style); - } - } - - visibleStyles.RemoveRange(0, visibleCount); - // TODO: (enumerable) foreach:indexed - for (vint i = 0; i < visibleStyles.Count(); i++) - { - visibleStyles[i].key->SetIndex(startIndex + i); - } - } - suppressOnViewChanged = false; - - callback->OnTotalSizeChanged(); - callback->SetViewLocation(viewBounds.LeftTop()); - InvalidateAdoptedSize(); + itemSource->ItemChanged(start, count, newCount); } } void RangedItemArrangerBase::AttachListControl(GuiListControl* value) { listControl = value; - InvalidateAdoptedSize(); + repeat->SetAxis(Ptr(listControl->GetAxis())); } void RangedItemArrangerBase::DetachListControl() { - listControl = 0; + repeat->SetAxis(nullptr); + listControl = nullptr; } GuiListControl::IItemArrangerCallback* RangedItemArrangerBase::GetCallback() @@ -11759,169 +11830,82 @@ RangedItemArrangerBase { if (callback != value) { - ClearStyles(); + if (callback) + { + repeat->GetParent()->RemoveChild(repeat); + repeat->SetItemTemplate({}); + } callback = value; + if (callback) + { + callback->GetContainerComposition()->AddChild(repeat); + repeat->SetItemTemplate([](const description::Value&)->templates::GuiTemplate* + { + CHECK_FAIL(L"This function should not be called, it is used to enable the virtual repeat composition."); + }); + } } } Size RangedItemArrangerBase::GetTotalSize() { - if (callback) + if (callback && repeat) { - return OnCalculateTotalSize(); - } - else - { - return Size(0, 0); + return repeat->GetTotalSize(); } + return Size(0, 0); } GuiListControl::ItemStyle* RangedItemArrangerBase::GetVisibleStyle(vint itemIndex) { - if (startIndex <= itemIndex && itemIndex < startIndex + visibleStyles.Count()) - { - return visibleStyles[itemIndex - startIndex].key; - } - else - { - return nullptr; - } + auto bounds = repeat->GetVisibleStyle(itemIndex); + return bounds ? callback->GetItem(bounds) : nullptr; } vint RangedItemArrangerBase::GetVisibleIndex(GuiListControl::ItemStyle* style) { - // TODO: (enumerable) foreach:indexed - for (vint i = 0; i < visibleStyles.Count(); i++) - { - if (visibleStyles[i].key == style) - { - return i + startIndex; - } - } - return -1; + auto bounds = callback->GetItemBounds(style); + return repeat->GetVisibleIndex(bounds); } void RangedItemArrangerBase::ReloadVisibleStyles() { - ClearStyles(); + if (repeat) repeat->ResetLayout(true); } void RangedItemArrangerBase::OnViewChanged(Rect bounds) { - if (!suppressOnViewChanged) + repeat->SetViewLocation(bounds.LeftTop()); + repeat->SetExpectedBounds(Rect({ 0,0 }, bounds.GetSize())); + } + + vint RangedItemArrangerBase::FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) + { + return repeat->FindItemByVirtualKeyDirection(itemIndex, key); + } + + GuiListControl::EnsureItemVisibleResult RangedItemArrangerBase::EnsureItemVisible(vint itemIndex) + { + switch (repeat->EnsureItemVisible(itemIndex)) { - suppressOnViewChanged = true; - Rect oldBounds = viewBounds; - viewBounds = bounds; - if (callback) - { - OnViewChangedInternal(oldBounds, viewBounds); - RearrangeItemBounds(); - } - suppressOnViewChanged = false; + case VirtualRepeatEnsureItemVisibleResult::Moved: + return GuiListControl::EnsureItemVisibleResult::Moved; + case VirtualRepeatEnsureItemVisibleResult::NotMoved: + return GuiListControl::EnsureItemVisibleResult::NotMoved; + default: + return GuiListControl::EnsureItemVisibleResult::ItemNotExists; } } + Size RangedItemArrangerBase::GetAdoptedSize(Size expectedSize) + { + return repeat->GetAdoptedSize(expectedSize); + } + /*********************************************************************** -FreeHeightItemArranger +VirtualRepeatRangedItemArrangerBase ***********************************************************************/ - void FreeHeightItemArranger::EnsureOffsetForItem(vint itemIndex) - { - if (heights.Count() == 0) return; - - if (availableOffsetCount == 0) - { - availableOffsetCount = 1; - offsets[0] = 0; - } - - for (vint i = availableOffsetCount; i < itemIndex && i < heights.Count(); i++) - { - offsets[i] = offsets[i - 1] + heights[i - 1]; - } - } - - void FreeHeightItemArranger::BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex) - { - pim_heightUpdated = false; - EnsureOffsetForItem(heights.Count() - 1); - if (forMoving) - { - // TODO: (enumerable) foreach:indexed - for (vint i = 0; i < heights.Count(); i++) - { - if (offsets[i] + heights[i] >= newBounds.Top()) - { - newStartIndex = i; - break; - } - } - } - } - - void FreeHeightItemArranger::PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) - { - vint styleHeight = heights[index]; - { - auto composition = GetStyleBounds(style); - auto currentBounds = callback->GetStyleBounds(composition); - callback->SetStyleBounds(composition, Rect(bounds.LeftTop(), Size(viewBounds.Width(), bounds.Height()))); - vint newStyleHeight = callback->GetStylePreferredSize(composition).y; - callback->SetStyleBounds(composition, currentBounds); - - if (!newCreatedStyle || styleHeight < newStyleHeight) - { - styleHeight = newStyleHeight; - } - } - - if (heights[index] != styleHeight) - { - heights[index] = styleHeight; - pim_heightUpdated = true; - } - - vint styleOffset = index == 0 ? 0 : offsets[index - 1] + heights[index - 1]; - if (availableOffsetCount <= index || offsets[index] != styleOffset) - { - offsets[index] = styleOffset; - availableOffsetCount = index; - } - - bounds = Rect(Point(0, offsets[index]), Size(viewBounds.Width(), heights[index])); - } - - bool FreeHeightItemArranger::IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds) - { - return bounds.Top() >= viewBounds.Bottom(); - } - - bool FreeHeightItemArranger::EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex) - { - if (forMoving) - { - return pim_heightUpdated; - } - return false; - } - - void FreeHeightItemArranger::InvalidateItemSizeCache() - { - availableOffsetCount = 0; - for (vint i = 0; i < heights.Count(); i++) - { - heights[i] = 1; - } - } - - Size FreeHeightItemArranger::OnCalculateTotalSize() - { - if (heights.Count() == 0) return Size(0, 0); - EnsureOffsetForItem(heights.Count()); - return Size(viewBounds.Width(), offsets[heights.Count() - 1] + heights[heights.Count() - 1]); - } - FreeHeightItemArranger::FreeHeightItemArranger() { } @@ -11930,225 +11914,6 @@ FreeHeightItemArranger { } - void FreeHeightItemArranger::OnAttached(GuiListControl::IItemProvider* provider) - { - if (provider) - { - vint itemCount = provider->Count(); - heights.Resize(itemCount); - offsets.Resize(itemCount); - for (vint i = 0; i < heights.Count(); i++) - { - heights[i] = 1; - } - availableOffsetCount = 0; - } - else - { - heights.Resize(0); - offsets.Resize(0); - availableOffsetCount = 0; - } - RangedItemArrangerBase::OnAttached(provider); - } - - void FreeHeightItemArranger::OnItemModified(vint start, vint count, vint newCount) - { - availableOffsetCount = start; - vint itemCount = heights.Count() + newCount - count; - - if (count < newCount) - { - heights.Resize(itemCount); - if (start + newCount < itemCount) - { - memmove(&heights[start + newCount], &heights[start + count], sizeof(vint) * (itemCount - start - newCount)); - } - } - else if (count > newCount) - { - if (start + newCount < itemCount) - { - memmove(&heights[start + newCount], &heights[start + count], sizeof(vint) * (itemCount - start - newCount)); - } - heights.Resize(itemCount); - } - - for (vint i = 0; i < newCount; i++) - { - heights[start + i] = 1; - } - offsets.Resize(itemCount); - - RangedItemArrangerBase::OnItemModified(start, count, newCount); - } - - vint FreeHeightItemArranger::FindItem(vint itemIndex, compositions::KeyDirection key) - { - vint count = itemProvider->Count(); - if (count == 0) return -1; - switch (key) - { - case KeyDirection::Up: - itemIndex--; - break; - case KeyDirection::Down: - itemIndex++; - break; - case KeyDirection::Home: - itemIndex = 0; - break; - case KeyDirection::End: - itemIndex = count; - break; - case KeyDirection::PageUp: - itemIndex -= visibleStyles.Count(); - break; - case KeyDirection::PageDown: - itemIndex += visibleStyles.Count(); - break; - default: - return -1; - } - - if (itemIndex < 0) return 0; - else if (itemIndex >= count) return count - 1; - else return itemIndex; - } - - GuiListControl::EnsureItemVisibleResult FreeHeightItemArranger::EnsureItemVisible(vint itemIndex) - { - if (callback) - { - bool moved = false; - while (true) - { - if (itemIndex < 0 || itemIndex >= itemProvider->Count()) - { - return GuiListControl::EnsureItemVisibleResult::ItemNotExists; - } - - EnsureOffsetForItem(itemIndex); - vint offset = viewBounds.y1; - vint top = offsets[itemIndex]; - vint bottom = top + heights[itemIndex]; - vint height = viewBounds.Height(); - - Point location = viewBounds.LeftTop(); - - if (offset >= top && offset + height <= bottom) - { - break; - } - else if (offset > top) - { - location.y = top; - } - else if (offset < bottom - height) - { - location.y = bottom - height; - } - else - { - break; - } - - auto oldLeftTop = viewBounds.LeftTop(); - callback->SetViewLocation(location); - moved |= viewBounds.LeftTop() != oldLeftTop; - if (viewBounds.LeftTop() != location) break; - } - return moved ? GuiListControl::EnsureItemVisibleResult::Moved : GuiListControl::EnsureItemVisibleResult::NotMoved; - } - return GuiListControl::EnsureItemVisibleResult::NotMoved; - } - - Size FreeHeightItemArranger::GetAdoptedSize(Size expectedSize) - { - vint h = expectedSize.x * 2; - if (expectedSize.y < h) expectedSize.y = h; - return expectedSize; - } - -/*********************************************************************** -FixedHeightItemArranger -***********************************************************************/ - - vint FixedHeightItemArranger::GetWidth() - { - return -1; - } - - vint FixedHeightItemArranger::GetYOffset() - { - return 0; - } - - void FixedHeightItemArranger::BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex) - { - pi_width = GetWidth(); - if (forMoving) - { - pim_rowHeight = rowHeight; - newStartIndex = (newBounds.Top() - GetYOffset()) / rowHeight; - } - } - - void FixedHeightItemArranger::PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) - { - vint top = GetYOffset() + index * rowHeight; - if (pi_width == -1) - { - alignmentToParent = Margin(0, -1, 0, -1); - bounds = Rect(Point(0, top), Size(0, rowHeight)); - } - else - { - alignmentToParent = Margin(-1, -1, -1, -1); - bounds = Rect(Point(0, top), Size(pi_width, rowHeight)); - } - if (forMoving) - { - vint styleHeight = callback->GetStylePreferredSize(GetStyleBounds(style)).y; - if (pim_rowHeight < styleHeight) - { - pim_rowHeight = styleHeight; - } - } - } - - bool FixedHeightItemArranger::IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds) - { - return bounds.Top() >= viewBounds.Bottom(); - } - - bool FixedHeightItemArranger::EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex) - { - if (forMoving) - { - if (pim_rowHeight != rowHeight) - { - vint offset = (pim_rowHeight - rowHeight) * newStartIndex; - rowHeight = pim_rowHeight; - callback->SetViewLocation(Point(0, newBounds.Top() + offset)); - return true; - } - } - return false; - } - - void FixedHeightItemArranger::InvalidateItemSizeCache() - { - rowHeight = 1; - } - - Size FixedHeightItemArranger::OnCalculateTotalSize() - { - vint width = GetWidth(); - if (width < 0) width = 0; - return Size(width, rowHeight * itemProvider->Count() + GetYOffset()); - } - FixedHeightItemArranger::FixedHeightItemArranger() { } @@ -12157,183 +11922,6 @@ FixedHeightItemArranger { } - vint FixedHeightItemArranger::FindItem(vint itemIndex, compositions::KeyDirection key) - { - vint count = itemProvider->Count(); - if (count == 0) return -1; - vint groupCount = viewBounds.Height() / rowHeight; - if (groupCount == 0) groupCount = 1; - switch (key) - { - case KeyDirection::Up: - itemIndex--; - break; - case KeyDirection::Down: - itemIndex++; - break; - case KeyDirection::Home: - itemIndex = 0; - break; - case KeyDirection::End: - itemIndex = count; - break; - case KeyDirection::PageUp: - itemIndex -= groupCount; - break; - case KeyDirection::PageDown: - itemIndex += groupCount; - break; - default: - return -1; - } - - if (itemIndex < 0) return 0; - else if (itemIndex >= count) return count - 1; - else return itemIndex; - } - - GuiListControl::EnsureItemVisibleResult FixedHeightItemArranger::EnsureItemVisible(vint itemIndex) - { - if (callback) - { - if (itemIndex < 0 || itemIndex >= itemProvider->Count()) - { - return GuiListControl::EnsureItemVisibleResult::ItemNotExists; - } - bool moved = false; - while (true) - { - vint yOffset = GetYOffset(); - vint top = itemIndex*rowHeight; - vint bottom = top + rowHeight + yOffset; - - if (viewBounds.Height() < rowHeight) - { - if (viewBounds.Top() < bottom && top < viewBounds.Bottom()) - { - break; - } - } - - Point location = viewBounds.LeftTop(); - if (viewBounds.y1 >= top && viewBounds.y2 <= bottom) - { - break; - } - else if (top < viewBounds.Top()) - { - location.y = top; - } - else if (viewBounds.Bottom() < bottom) - { - location.y = bottom - viewBounds.Height(); - } - else - { - break; - } - - auto oldLeftTop = viewBounds.LeftTop(); - callback->SetViewLocation(location); - moved |= viewBounds.LeftTop() != oldLeftTop; - if (viewBounds.LeftTop() != location) break; - } - return moved ? GuiListControl::EnsureItemVisibleResult::Moved : GuiListControl::EnsureItemVisibleResult::NotMoved; - } - return GuiListControl::EnsureItemVisibleResult::NotMoved; - } - - Size FixedHeightItemArranger::GetAdoptedSize(Size expectedSize) - { - if (itemProvider) - { - vint yOffset = GetYOffset(); - vint y = expectedSize.y - yOffset; - vint itemCount = itemProvider->Count(); - return Size(expectedSize.x, yOffset + CalculateAdoptedSize(y, itemCount, rowHeight)); - } - return expectedSize; - } - -/*********************************************************************** -FixedSizeMultiColumnItemArranger -***********************************************************************/ - - void FixedSizeMultiColumnItemArranger::BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex) - { - if (forMoving) - { - pim_itemSize = itemSize; - vint rows = newBounds.Top() / itemSize.y; - if (rows < 0) rows = 0; - vint cols = newBounds.Width() / itemSize.x; - if (cols < 1) cols = 1; - newStartIndex = rows * cols; - } - } - - void FixedSizeMultiColumnItemArranger::PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) - { - vint rowItems = viewBounds.Width() / itemSize.x; - if (rowItems < 1) rowItems = 1; - - vint row = index / rowItems; - vint col = index % rowItems; - bounds = Rect(Point(col * itemSize.x, row * itemSize.y), itemSize); - if (forMoving) - { - Size styleSize = callback->GetStylePreferredSize(GetStyleBounds(style)); - if (pim_itemSize.x < styleSize.x) pim_itemSize.x = styleSize.x; - if (pim_itemSize.y < styleSize.y) pim_itemSize.y = styleSize.y; - } - } - - bool FixedSizeMultiColumnItemArranger::IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds) - { - return bounds.Top() >= viewBounds.Bottom(); - } - - bool FixedSizeMultiColumnItemArranger::EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex) - { - if (forMoving) - { - if (pim_itemSize != itemSize) - { - itemSize = pim_itemSize; - return true; - } - } - return false; - } - - void FixedSizeMultiColumnItemArranger::CalculateRange(Size itemSize, Rect bounds, vint count, vint& start, vint& end) - { - vint startRow = bounds.Top() / itemSize.y; - if (startRow < 0) startRow = 0; - vint endRow = (bounds.Bottom() - 1) / itemSize.y; - vint cols = bounds.Width() / itemSize.x; - if (cols < 1) cols = 1; - - start = startRow*cols; - end = (endRow + 1)*cols - 1; - if (end >= count) end = count - 1; - } - - void FixedSizeMultiColumnItemArranger::InvalidateItemSizeCache() - { - itemSize = Size(1, 1); - } - - Size FixedSizeMultiColumnItemArranger::OnCalculateTotalSize() - { - vint rowItems = viewBounds.Width() / itemSize.x; - if (rowItems < 1) rowItems = 1; - vint rows = itemProvider->Count() / rowItems; - if (itemProvider->Count() % rowItems) rows++; - - return Size(itemSize.x * rowItems, itemSize.y*rows); - } - FixedSizeMultiColumnItemArranger::FixedSizeMultiColumnItemArranger() { } @@ -12342,207 +11930,6 @@ FixedSizeMultiColumnItemArranger { } - vint FixedSizeMultiColumnItemArranger::FindItem(vint itemIndex, compositions::KeyDirection key) - { - vint count = itemProvider->Count(); - vint columnCount = viewBounds.Width() / itemSize.x; - if (columnCount == 0) columnCount = 1; - vint rowCount = viewBounds.Height() / itemSize.y; - if (rowCount == 0) rowCount = 1; - - switch (key) - { - case KeyDirection::Up: - itemIndex -= columnCount; - break; - case KeyDirection::Down: - itemIndex += columnCount; - break; - case KeyDirection::Left: - itemIndex--; - break; - case KeyDirection::Right: - itemIndex++; - break; - case KeyDirection::Home: - itemIndex = 0; - break; - case KeyDirection::End: - itemIndex = count; - break; - case KeyDirection::PageUp: - itemIndex -= columnCount*rowCount; - break; - case KeyDirection::PageDown: - itemIndex += columnCount*rowCount; - break; - case KeyDirection::PageLeft: - itemIndex -= itemIndex%columnCount; - break; - case KeyDirection::PageRight: - itemIndex += columnCount - itemIndex%columnCount - 1; - break; - default: - return -1; - } - - if (itemIndex < 0) return 0; - else if (itemIndex >= count) return count - 1; - else return itemIndex; - } - - GuiListControl::EnsureItemVisibleResult FixedSizeMultiColumnItemArranger::EnsureItemVisible(vint itemIndex) - { - if (callback) - { - if (itemIndex < 0 || itemIndex >= itemProvider->Count()) - { - return GuiListControl::EnsureItemVisibleResult::ItemNotExists; - } - bool moved = false; - while (true) - { - vint rowHeight = itemSize.y; - vint columnCount = viewBounds.Width() / itemSize.x; - if (columnCount == 0) columnCount = 1; - vint rowIndex = itemIndex / columnCount; - - vint top = rowIndex*rowHeight; - vint bottom = top + rowHeight; - - if (viewBounds.Height() < rowHeight) - { - if (viewBounds.Top() < bottom && top < viewBounds.Bottom()) - { - break; - } - } - - Point location = viewBounds.LeftTop(); - if (top < viewBounds.Top()) - { - location.y = top; - } - else if (viewBounds.Bottom() < bottom) - { - location.y = bottom - viewBounds.Height(); - } - else - { - break; - } - - auto oldLeftTop = viewBounds.LeftTop(); - callback->SetViewLocation(location); - moved |= viewBounds.LeftTop() != oldLeftTop; - if (viewBounds.LeftTop() != location) break; - } - return moved ? GuiListControl::EnsureItemVisibleResult::Moved : GuiListControl::EnsureItemVisibleResult::NotMoved; - } - return GuiListControl::EnsureItemVisibleResult::NotMoved; - } - - Size FixedSizeMultiColumnItemArranger::GetAdoptedSize(Size expectedSize) - { - if (itemProvider) - { - vint count = itemProvider->Count(); - vint columnCount = viewBounds.Width() / itemSize.x; - vint rowCount = viewBounds.Height() / itemSize.y; - return Size( - CalculateAdoptedSize(expectedSize.x, columnCount, itemSize.x), - CalculateAdoptedSize(expectedSize.y, rowCount, itemSize.y) - ); - } - return expectedSize; - } - -/*********************************************************************** -FixedHeightMultiColumnItemArranger -***********************************************************************/ - - void FixedHeightMultiColumnItemArranger::CalculateRange(vint itemHeight, Rect bounds, vint& rows, vint& startColumn) - { - vint w = bounds.Width(); - vint h = bounds.Height(); - if (w <= 0) w = 1; - - rows = h / itemHeight; - if (rows < 1) rows = 1; - startColumn = bounds.Left() / w; - } - - void FixedHeightMultiColumnItemArranger::BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex) - { - pi_currentWidth = 0; - pi_totalWidth = 0; - if (forMoving) - { - vint w = newBounds.Width(); - vint h = newBounds.Height(); - if (w <= 0) w = 1; - - pim_itemHeight = itemHeight; - vint rows = h / itemHeight; - if (rows < 1) rows = 1; - vint columns = newBounds.Left() / w; - newStartIndex = rows * columns; - } - } - - void FixedHeightMultiColumnItemArranger::PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) - { - vint rows = viewBounds.Height() / itemHeight; - if (rows < 1) rows = 1; - - vint row = index % rows; - if (row == 0) - { - pi_totalWidth += pi_currentWidth; - pi_currentWidth = 0; - } - - Size styleSize = callback->GetStylePreferredSize(GetStyleBounds(style)); - if (pi_currentWidth < styleSize.x) pi_currentWidth = styleSize.x; - bounds = Rect(Point(pi_totalWidth + viewBounds.Left(), itemHeight * row), Size(0, 0)); - if (forMoving) - { - if (pim_itemHeight < styleSize.y) pim_itemHeight = styleSize.y; - } - } - - bool FixedHeightMultiColumnItemArranger::IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds) - { - return bounds.Left() >= viewBounds.Right(); - } - - bool FixedHeightMultiColumnItemArranger::EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex) - { - if (forMoving) - { - if (pim_itemHeight != itemHeight) - { - itemHeight = pim_itemHeight; - return true; - } - } - return false; - } - - void FixedHeightMultiColumnItemArranger::InvalidateItemSizeCache() - { - itemHeight = 1; - } - - Size FixedHeightMultiColumnItemArranger::OnCalculateTotalSize() - { - vint rows = viewBounds.Height() / itemHeight; - if (rows < 1) rows = 1; - vint columns = itemProvider->Count() / rows; - if (itemProvider->Count() % rows) columns += 1; - return Size(viewBounds.Width() * columns, 0); - } - FixedHeightMultiColumnItemArranger::FixedHeightMultiColumnItemArranger() { } @@ -12550,117 +11937,6 @@ FixedHeightMultiColumnItemArranger FixedHeightMultiColumnItemArranger::~FixedHeightMultiColumnItemArranger() { } - - vint FixedHeightMultiColumnItemArranger::FindItem(vint itemIndex, compositions::KeyDirection key) - { - vint count = itemProvider->Count(); - vint groupCount = viewBounds.Height() / itemHeight; - if (groupCount == 0) groupCount = 1; - switch (key) - { - case KeyDirection::Up: - itemIndex--; - break; - case KeyDirection::Down: - itemIndex++; - break; - case KeyDirection::Left: - itemIndex -= groupCount; - break; - case KeyDirection::Right: - itemIndex += groupCount; - break; - case KeyDirection::Home: - itemIndex = 0; - break; - case KeyDirection::End: - itemIndex = count; - break; - case KeyDirection::PageUp: - itemIndex -= itemIndex%groupCount; - break; - case KeyDirection::PageDown: - itemIndex += groupCount - itemIndex%groupCount - 1; - break; - default: - return -1; - } - - if (itemIndex < 0) return 0; - else if (itemIndex >= count) return count - 1; - else return itemIndex; - } - - GuiListControl::EnsureItemVisibleResult FixedHeightMultiColumnItemArranger::EnsureItemVisible(vint itemIndex) - { - if (callback) - { - if (itemIndex < 0 || itemIndex >= itemProvider->Count()) - { - return GuiListControl::EnsureItemVisibleResult::ItemNotExists; - } - bool moved = false; - while (true) - { - vint rowCount = viewBounds.Height() / itemHeight; - if (rowCount == 0) rowCount = 1; - vint columnIndex = itemIndex / rowCount; - vint minIndex = startIndex; - vint maxIndex = startIndex + visibleStyles.Count() - 1; - - Point location = viewBounds.LeftTop(); - if (minIndex <= itemIndex && itemIndex <= maxIndex) - { - Rect bounds = callback->GetStyleBounds(GetStyleBounds(visibleStyles[itemIndex - startIndex])); - if (0 < bounds.Bottom() && bounds.Top() < viewBounds.Width() && bounds.Width() > viewBounds.Width()) - { - break; - } - else if (bounds.Left() < 0) - { - location.x -= viewBounds.Width(); - } - else if (bounds.Right() > viewBounds.Width()) - { - location.x += viewBounds.Width(); - } - else - { - break; - } - } - else if (columnIndex < minIndex / rowCount) - { - location.x -= viewBounds.Width(); - } - else if (columnIndex >= maxIndex / rowCount) - { - location.x += viewBounds.Width(); - } - else - { - break; - } - - auto oldLeftTop = viewBounds.LeftTop(); - callback->SetViewLocation(location); - moved |= viewBounds.LeftTop() != oldLeftTop; - if (viewBounds.LeftTop() != location) break; - } - return moved ? GuiListControl::EnsureItemVisibleResult::Moved : GuiListControl::EnsureItemVisibleResult::NotMoved; - } - return GuiListControl::EnsureItemVisibleResult::NotMoved; - } - - Size FixedHeightMultiColumnItemArranger::GetAdoptedSize(Size expectedSize) - { - if (itemProvider) - { - vint count = itemProvider->Count(); - return Size(expectedSize.x, CalculateAdoptedSize(expectedSize.y, count, itemHeight)); - } - return expectedSize; - } } } } @@ -12684,27 +11960,44 @@ namespace vl GuiListControl::ItemCallback ***********************************************************************/ - Ptr GuiListControl::ItemCallback::InstallStyle(ItemStyle* style, vint itemIndex, compositions::GuiBoundsComposition* itemComposition) + GuiListControl::ItemStyleRecord GuiListControl::ItemCallback::InstallStyle(ItemStyle* style, vint itemIndex) { - auto handler = style->CachedBoundsChanged.AttachMethod(this, &ItemCallback::OnStyleCachedBoundsChanged); - listControl->GetContainerComposition()->AddChild(itemComposition ? itemComposition : style); - listControl->OnStyleInstalled(itemIndex, style); - return handler; + templates::GuiTemplate* bounds = style; + if (listControl->GetDisplayItemBackground()) + { + style->SetAlignmentToParent(Margin(0, 0, 0, 0)); + + auto backgroundButton = new GuiSelectableButton(theme::ThemeName::ListItemBackground); + if (auto backgroundStyle = listControl->TypedControlTemplateObject(true)->GetBackgroundTemplate()) + { + backgroundButton->SetControlTemplate(backgroundStyle); + } + backgroundButton->GetBoundsComposition()->SetAlignmentToParent(Margin(0, 0, 0, 0)); + backgroundButton->SetAutoFocus(false); + backgroundButton->SetAutoSelection(false); + backgroundButton->SetSelected(style->GetSelected()); + backgroundButton->GetContainerComposition()->AddChild(style); + + bounds = new templates::GuiTemplate; + bounds->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); + bounds->AddChild(backgroundButton->GetBoundsComposition()); + + style->SelectedChanged.AttachLambda([=](GuiGraphicsComposition* sender, GuiEventArgs& arguments) + { + backgroundButton->SetSelected(style->GetSelected()); + }); + } + + listControl->OnStyleInstalled(itemIndex, style, false); + return { style,bounds }; } - GuiListControl::ItemStyle* GuiListControl::ItemCallback::UninstallStyle(vint index) + GuiListControl::ItemStyleRecord GuiListControl::ItemCallback::UninstallStyle(vint index) { auto style = installedStyles.Keys()[index]; - auto handler = installedStyles.Values()[index]; + auto bounds = installedStyles.Values()[index]; listControl->OnStyleUninstalled(style); - listControl->GetContainerComposition()->RemoveChild(style); - style->CachedBoundsChanged.Detach(handler); - return style; - } - - void GuiListControl::ItemCallback::OnStyleCachedBoundsChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) - { - listControl->CalculateView(); + return { style,bounds }; } GuiListControl::ItemCallback::ItemCallback(GuiListControl* _listControl) @@ -12722,8 +12015,8 @@ GuiListControl::ItemCallback // TODO: (enumerable) foreach:indexed for (vint i = 0; i < installedStyles.Count(); i++) { - auto style = UninstallStyle(i); - SafeDeleteComposition(style); + auto [style, bounds] = UninstallStyle(i); + SafeDeleteComposition(bounds); } installedStyles.Clear(); } @@ -12733,31 +12026,64 @@ GuiListControl::ItemCallback itemProvider = provider; } - void GuiListControl::ItemCallback::OnItemModified(vint start, vint count, vint newCount) + void GuiListControl::ItemCallback::OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated) { - listControl->OnItemModified(start, count, newCount); + listControl->OnItemModified(start, count, newCount, itemReferenceUpdated); } - GuiListControl::ItemStyle* GuiListControl::ItemCallback::RequestItem(vint itemIndex, compositions::GuiBoundsComposition* itemComposition) + GuiListControl::ItemStyle* GuiListControl::ItemCallback::CreateItem(vint itemIndex) { - CHECK_ERROR(0 <= itemIndex && itemIndex < itemProvider->Count(), L"GuiListControl::ItemCallback::RequestItem(vint)#Index out of range."); - CHECK_ERROR(listControl->itemStyleProperty, L"GuiListControl::ItemCallback::RequestItem(vint)#SetItemTemplate function should be called before adding items to the list control."); +#define ERROR_MESSAGE_PREFIX L"GuiListControl::ItemCallback::RequestItem(vint)#" + CHECK_ERROR(0 <= itemIndex && itemIndex < itemProvider->Count(), ERROR_MESSAGE_PREFIX L"Index out of range."); + CHECK_ERROR(listControl->itemStyleProperty, ERROR_MESSAGE_PREFIX L"SetItemTemplate function should be called before adding items to the list control."); auto style = listControl->itemStyleProperty(itemProvider->GetBindingValue(itemIndex)); - auto handler = InstallStyle(style, itemIndex, itemComposition); - installedStyles.Add(style, handler); + auto record = InstallStyle(style, itemIndex); + installedStyles.Add(record); return style; +#undef ERROR_MESSAGE_PREFIX + } + + GuiListControl::ItemStyleBounds* GuiListControl::ItemCallback::GetItemBounds(ItemStyle * style) + { +#define ERROR_MESSAGE_PREFIX L"GuiListControl::ItemCallback::GetItemBounds(GuiListItemTemplate*)#The style is not created from CreateItem." + vint index = installedStyles.Keys().IndexOf(style); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX); + + return installedStyles.Values()[index]; +#undef ERROR_MESSAGE_PREFIX + } + + GuiListControl::ItemStyle* GuiListControl::ItemCallback::GetItem(ItemStyleBounds* bounds) + { +#define ERROR_MESSAGE_PREFIX L"GuiListControl::ItemCallback::GetItem(GuiTemplate*)#The bounds is not created from CreateItem." + auto style = dynamic_cast(bounds); + if (style) return style; + + CHECK_ERROR(bounds->Children().Count() == 1, ERROR_MESSAGE_PREFIX); + auto backgroundButton = dynamic_cast(bounds->Children()[0]->GetAssociatedControl()); + CHECK_ERROR(backgroundButton != nullptr, ERROR_MESSAGE_PREFIX); + CHECK_ERROR(backgroundButton->GetContainerComposition()->Children().Count() == 1, ERROR_MESSAGE_PREFIX); + style = dynamic_cast(backgroundButton->GetContainerComposition()->Children()[0]); + CHECK_ERROR(style != nullptr, ERROR_MESSAGE_PREFIX); + + vint index = installedStyles.Keys().IndexOf(style); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX); + CHECK_ERROR(installedStyles.Values()[index] == bounds, ERROR_MESSAGE_PREFIX); + return style; +#undef ERROR_MESSAGE_PREFIX } void GuiListControl::ItemCallback::ReleaseItem(ItemStyle* style) { +#define ERROR_MESSAGE_PREFIX L"GuiListControl::ItemCallback::GetItemBounds(GuiListItemTemplate*)#The style is not created from CreateItem." vint index = installedStyles.Keys().IndexOf(style); - if (index != -1) - { - auto style = UninstallStyle(index); - installedStyles.Remove(style); - SafeDeleteComposition(style); - } + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX); + + auto bounds = UninstallStyle(index).value; + installedStyles.Remove(style); + SafeDeleteComposition(bounds); +#undef ERROR_MESSAGE_PREFIX } void GuiListControl::ItemCallback::SetViewLocation(Point value) @@ -12767,30 +12093,6 @@ GuiListControl::ItemCallback listControl->SetViewPosition(realRect.LeftTop()); } - Size GuiListControl::ItemCallback::GetStylePreferredSize(compositions::GuiBoundsComposition* style) - { - Size size = style->GetCachedMinSize(); - return listControl->axis->RealSizeToVirtualSize(size); - } - - void GuiListControl::ItemCallback::SetStyleAlignmentToParent(compositions::GuiBoundsComposition* style, Margin margin) - { - Margin newMargin = listControl->axis->VirtualMarginToRealMargin(margin); - style->SetAlignmentToParent(newMargin); - } - - Rect GuiListControl::ItemCallback::GetStyleBounds(compositions::GuiBoundsComposition* style) - { - Rect bounds = style->GetCachedBounds(); - return listControl->axis->RealRectToVirtualRect(listControl->GetViewSize(), bounds); - } - - void GuiListControl::ItemCallback::SetStyleBounds(compositions::GuiBoundsComposition* style, Rect bounds) - { - Rect newBounds = listControl->axis->VirtualRectToRealRect(listControl->GetViewSize(), bounds); - return style->SetExpectedBounds(newBounds); - } - compositions::GuiGraphicsComposition* GuiListControl::ItemCallback::GetContainerComposition() { return listControl->GetContainerComposition(); @@ -12801,6 +12103,11 @@ GuiListControl::ItemCallback listControl->CalculateView(); } + void GuiListControl::ItemCallback::OnAdoptedSizeChanged() + { + listControl->AdoptedSizeInvalidated.Execute(listControl->GetNotifyEventArguments()); + } + /*********************************************************************** GuiListControl ***********************************************************************/ @@ -12818,11 +12125,27 @@ GuiListControl } } - void GuiListControl::OnItemModified(vint start, vint count, vint newCount) + void GuiListControl::OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated) { + // this function is executed before RangedItemArrangerBase::OnItemModified + // but we only handle itemReferenceUpdated==false + // so RangedItemArrangerBase::GetVisibleStyle is good here + // even it is possible that the style object will be replaced later + // OnStyleInstalled will be executed on affected style objects anyway + if (!itemReferenceUpdated && itemArranger && count == newCount) + { + for (vint i = 0; i < newCount; i++) + { + vint index = start + i; + if (auto style = itemArranger->GetVisibleStyle(index)) + { + OnStyleInstalled(index, style, true); + } + } + } } - void GuiListControl::OnStyleInstalled(vint itemIndex, ItemStyle* style) + void GuiListControl::OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly) { style->SetFont(GetDisplayFont()); style->SetContext(GetContext()); @@ -12830,8 +12153,12 @@ GuiListControl style->SetVisuallyEnabled(GetVisuallyEnabled()); style->SetSelected(false); style->SetIndex(itemIndex); - style->Initialize(this); - AttachItemEvents(style); + style->SetAssociatedListControl(this); + + if (!refreshPropertiesOnly) + { + AttachItemEvents(style); + } } void GuiListControl::OnStyleUninstalled(ItemStyle* style) @@ -13203,18 +12530,18 @@ GuiSelectableListControl SelectionChanged.Execute(GetNotifyEventArguments()); } - void GuiSelectableListControl::OnItemModified(vint start, vint count, vint newCount) + void GuiSelectableListControl::OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated) { - GuiListControl::OnItemModified(start, count, newCount); - if(count!=newCount) + GuiListControl::OnItemModified(start, count, newCount, itemReferenceUpdated); + if (count != newCount) { ClearSelection(); } } - void GuiSelectableListControl::OnStyleInstalled(vint itemIndex, ItemStyle* style) + void GuiSelectableListControl::OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly) { - GuiListControl::OnStyleInstalled(itemIndex, style); + GuiListControl::OnStyleInstalled(itemIndex, style, refreshPropertiesOnly); style->SetSelected(selectedItems.Contains(itemIndex)); } @@ -13303,7 +12630,7 @@ GuiSelectableListControl vint GuiSelectableListControl::FindItemByVirtualKeyDirection(vint index, compositions::KeyDirection keyDirection) { - return GetArranger()->FindItem(selectedItemIndexEnd, keyDirection); + return GetArranger()->FindItemByVirtualKeyDirection(selectedItemIndexEnd, keyDirection); } GuiSelectableListControl::GuiSelectableListControl(theme::ThemeName themeName, IItemProvider* _itemProvider) @@ -13521,14 +12848,14 @@ GuiSelectableListControl ItemProviderBase ***********************************************************************/ - void ItemProviderBase::InvokeOnItemModified(vint start, vint count, vint newCount) + void ItemProviderBase::InvokeOnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated) { CHECK_ERROR(!callingOnItemModified, L"ItemProviderBase::InvokeOnItemModified(vint, vint, vint)#Canning modify the observable data source during its item modified event, which will cause this event to be executed recursively."); callingOnItemModified = true; // TODO: (enumerable) foreach for (vint i = 0; i < callbacks.Count(); i++) { - callbacks[i]->OnItemModified(start, count, newCount); + callbacks[i]->OnItemModified(start, count, newCount, itemReferenceUpdated); } callingOnItemModified = false; } @@ -13692,16 +13019,37 @@ ListViewColumnItemArranger::ColumnItemViewCallback { } - void ListViewColumnItemArranger::ColumnItemViewCallback::OnColumnChanged() + void ListViewColumnItemArranger::ColumnItemViewCallback::OnColumnRebuilt() { arranger->RebuildColumns(); - for (auto style : arranger->visibleStyles) - { - if (auto callback = dynamic_cast(style.key)) - { - callback->OnColumnChanged(); - } - } + } + + void ListViewColumnItemArranger::ColumnItemViewCallback::OnColumnChanged(bool needToRefreshItems) + { + arranger->RefreshColumns(); + } + +/*********************************************************************** +ListViewColumnItemArranger::ColumnItemArrangerRepeatComposition +***********************************************************************/ + + void ListViewColumnItemArranger::ColumnItemArrangerRepeatComposition::Layout_EndLayout(bool totalSizeUpdated) + { + TBase::ArrangerRepeatComposition::Layout_EndLayout(totalSizeUpdated); + arranger->FixColumnsAfterLayout(); + } + + Size ListViewColumnItemArranger::ColumnItemArrangerRepeatComposition::Layout_CalculateTotalSize() + { + auto size = TBase::ArrangerRepeatComposition::Layout_CalculateTotalSize(); + size.x += arranger->SplitterWidth; + return size; + } + + ListViewColumnItemArranger::ColumnItemArrangerRepeatComposition::ColumnItemArrangerRepeatComposition(ListViewColumnItemArranger* _arranger) + : TBase::ArrangerRepeatComposition(_arranger) + , arranger(_arranger) + { } /*********************************************************************** @@ -13710,6 +13058,11 @@ ListViewColumnItemArranger const wchar_t* const ListViewColumnItemArranger::IColumnItemView::Identifier = L"vl::presentation::controls::list::ListViewColumnItemArranger::IColumnItemView"; + void ListViewColumnItemArranger::OnViewLocationChanged(compositions::GuiGraphicsComposition* composition, compositions::GuiEventArgs& arguments) + { + FixColumnsAfterViewLocationChanged(); + } + void ListViewColumnItemArranger::ColumnClicked(vint index, compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) { GuiItemEventArgs args(listView->ColumnClicked.GetAssociatedComposition()); @@ -13766,15 +13119,20 @@ ListViewColumnItemArranger } } - void ListViewColumnItemArranger::RearrangeItemBounds() + void ListViewColumnItemArranger::FixColumnsAfterViewLocationChanged() { - FixedHeightItemArranger::RearrangeItemBounds(); - vint count = columnHeaders->GetParent()->Children().Count(); - columnHeaders->GetParent()->MoveChild(columnHeaders, count - 1); - columnHeaders->SetExpectedBounds(Rect(Point(-viewBounds.Left(), 0), Size(0, 0))); + vint x = GetRepeatComposition()->GetViewLocation().x; + columnHeaders->SetExpectedBounds(Rect(Point(-x, 0), Size(0, 0))); } - vint ListViewColumnItemArranger::GetWidth() + void ListViewColumnItemArranger::FixColumnsAfterLayout() + { + vint count = columnHeaders->GetParent()->Children().Count(); + columnHeaders->GetParent()->MoveChild(columnHeaders, count - 1); + FixColumnsAfterViewLocationChanged(); + } + + vint ListViewColumnItemArranger::GetColumnsWidth() { vint width=columnHeaders->GetCachedBounds().Width()-SplitterWidth; if(widthGetCachedBounds().Height(); } - Size ListViewColumnItemArranger::OnCalculateTotalSize() - { - Size size=FixedHeightItemArranger::OnCalculateTotalSize(); - size.x+=SplitterWidth; - return size; - } - void ListViewColumnItemArranger::DeleteColumnButtons() { // TODO: (enumerable) foreach:reversed @@ -13852,10 +13203,6 @@ ListViewColumnItemArranger GuiListViewColumnHeader* button = new GuiListViewColumnHeader(theme::ThemeName::Unknown); button->SetAutoFocus(false); button->SetControlTemplate(listView->TypedControlTemplateObject(true)->GetColumnHeaderTemplate()); - button->SetText(listViewItemView->GetColumnText(i)); - button->SetSubMenu(columnItemView->GetDropdownPopup(i), false); - button->SetColumnSortingState(columnItemView->GetSortingState(i)); - button->GetBoundsComposition()->SetExpectedBounds(Rect(Point(0, 0), Size(columnItemView->GetColumnSize(i), 0))); button->Clicked.AttachLambda([this, i](GuiGraphicsComposition* sender, GuiEventArgs& args) { ColumnClicked(i, sender, args); }); button->GetBoundsComposition()->CachedBoundsChanged.AttachLambda([this, i](GuiGraphicsComposition* sender, GuiEventArgs& args) { ColumnCachedBoundsChanged(i, sender, args); }); columnHeaderButtons.Add(button); @@ -13880,14 +13227,36 @@ ListViewColumnItemArranger } } } + + RefreshColumns(); callback->OnTotalSizeChanged(); } + void ListViewColumnItemArranger::RefreshColumns() + { + if (columnItemView && listViewItemView) + { + for (vint i = 0; i < listViewItemView->GetColumnCount(); i++) + { + auto button = columnHeaderButtons[i]; + button->SetText(listViewItemView->GetColumnText(i)); + button->SetSubMenu(columnItemView->GetDropdownPopup(i), false); + button->SetColumnSortingState(columnItemView->GetSortingState(i)); + button->GetBoundsComposition()->SetExpectedBounds(Rect(Point(0, 0), Size(columnItemView->GetColumnSize(i), 0))); + } + columnHeaders->ForceCalculateSizeImmediately(); + GetRepeatComposition()->SetItemWidth(GetColumnsWidth()); + GetRepeatComposition()->SetItemYOffset(GetColumnsYOffset()); + } + } + ListViewColumnItemArranger::ListViewColumnItemArranger() + : TBase(new TBase::ArrangerRepeatComposition(this)) { columnHeaders = new GuiStackComposition; columnHeaders->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); columnItemViewCallback = Ptr(new ColumnItemViewCallback(this)); + GetRepeatComposition()->ViewLocationChanged.AttachMethod(this, &ListViewColumnItemArranger::OnViewLocationChanged); } ListViewColumnItemArranger::~ListViewColumnItemArranger() @@ -13899,9 +13268,16 @@ ListViewColumnItemArranger } } + Size ListViewColumnItemArranger::GetTotalSize() + { + Size size = TBase::GetTotalSize(); + size.x += SplitterWidth; + return size; + } + void ListViewColumnItemArranger::AttachListControl(GuiListControl* value) { - FixedHeightItemArranger::AttachListControl(value); + TBase::AttachListControl(value); listView = dynamic_cast(value); if (listView) { @@ -13929,7 +13305,7 @@ ListViewColumnItemArranger listView->GetContainerComposition()->RemoveChild(columnHeaders); listView = nullptr; } - FixedHeightItemArranger::DetachListControl(); + TBase::DetachListControl(); } /*********************************************************************** @@ -13950,7 +13326,7 @@ ListViewItem if (owner) { vint index = owner->IndexOf(this); - owner->NotifyUpdateInternal(index, 1, 1); + owner->InvokeOnItemModified(index, 1, 1, false); } } @@ -14013,12 +13389,27 @@ ListViewItem ListViewColumn ***********************************************************************/ - void ListViewColumn::NotifyUpdate(bool affectItem) + void ListViewColumn::NotifyRebuilt() { if (owner) { vint index = owner->IndexOf(this); - owner->NotifyColumnUpdated(index, affectItem); + if (index != -1) + { + owner->NotifyColumnRebuilt(index); + } + } + } + + void ListViewColumn::NotifyChanged(bool needToRefreshItems) + { + if (owner) + { + vint index = owner->IndexOf(this); + if (index != -1) + { + owner->NotifyColumnChanged(index, needToRefreshItems); + } } } @@ -14046,7 +13437,7 @@ ListViewColumn if (text != value) { text = value; - NotifyUpdate(false); + NotifyChanged(false); } } @@ -14058,7 +13449,7 @@ ListViewColumn void ListViewColumn::SetTextProperty(const ItemProperty& value) { textProperty = value; - NotifyUpdate(true); + NotifyChanged(true); } vint ListViewColumn::GetSize() @@ -14071,7 +13462,7 @@ ListViewColumn if (size != value) { size = value; - NotifyUpdate(false); + NotifyChanged(true); } } @@ -14095,7 +13486,7 @@ ListViewColumn if (dropdownPopup != value) { dropdownPopup = value; - NotifyUpdate(false); + NotifyChanged(false); } } @@ -14109,7 +13500,7 @@ ListViewColumn if (sortingState != value) { sortingState = value; - NotifyUpdate(false); + NotifyChanged(false); } } @@ -14119,7 +13510,7 @@ ListViewDataColumns void ListViewDataColumns::NotifyUpdateInternal(vint start, vint count, vint newCount) { - itemProvider->NotifyAllItemsUpdate(); + itemProvider->RefreshAllItems(); } ListViewDataColumns::ListViewDataColumns(IListViewItemProvider* _itemProvider) @@ -14135,11 +13526,14 @@ ListViewDataColumns ListViewColumns ***********************************************************************/ - void ListViewColumns::NotifyColumnUpdated(vint column, bool affectItem) + void ListViewColumns::NotifyColumnRebuilt(vint column) { - affectItemFlag = affectItem; NotifyUpdate(column, 1); - affectItemFlag = true; + } + + void ListViewColumns::NotifyColumnChanged(vint column, bool needToRefreshItems) + { + itemProvider->NotifyColumnChanged(); } void ListViewColumns::AfterInsert(vint index, const Ptr& value) @@ -14156,11 +13550,7 @@ ListViewColumns void ListViewColumns::NotifyUpdateInternal(vint start, vint count, vint newCount) { - itemProvider->NotifyAllColumnsUpdate(); - if (affectItemFlag) - { - itemProvider->NotifyAllItemsUpdate(); - } + itemProvider->NotifyColumnRebuilt(); } ListViewColumns::ListViewColumns(IListViewItemProvider* _itemProvider) @@ -14188,17 +13578,67 @@ ListViewItemProvider ListProvider>::AfterInsert(index, value); } - void ListViewItemProvider::NotifyAllItemsUpdate() + void ListViewItemProvider::RebuildAllItems() { - NotifyUpdate(0, Count()); + InvokeOnItemModified(0, Count(), Count(), true); } - void ListViewItemProvider::NotifyAllColumnsUpdate() + void ListViewItemProvider::RefreshAllItems() { - // TODO: (enumerable) foreach - for (vint i = 0; i < columnItemViewCallbacks.Count(); i++) + InvokeOnItemModified(0, Count(), Count(), false); + } + + void ListViewItemProvider::NotifyColumnRebuilt() + { + for (auto callback : columnItemViewCallbacks) { - columnItemViewCallbacks[i]->OnColumnChanged(); + callback->OnColumnRebuilt(); + } + RefreshAllItems(); + } + + void ListViewItemProvider::NotifyColumnChanged() + { + for (auto callback : columnItemViewCallbacks) + { + callback->OnColumnChanged(true); + } + RefreshAllItems(); + } + + ListViewItemProvider::ListViewItemProvider() + :columns(this) + , dataColumns(this) + { + } + + ListViewItemProvider::~ListViewItemProvider() + { + } + + WString ListViewItemProvider::GetTextValue(vint itemIndex) + { + return GetText(itemIndex); + } + + description::Value ListViewItemProvider::GetBindingValue(vint itemIndex) + { + return Value::From(Get(itemIndex)); + } + + IDescriptable* ListViewItemProvider::RequestView(const WString& identifier) + { + if (identifier == IListViewItemView::Identifier) + { + return (IListViewItemView*)this; + } + else if (identifier == ListViewColumnItemArranger::IColumnItemView::Identifier) + { + return (ListViewColumnItemArranger::IColumnItemView*)this; + } + else + { + return 0; } } @@ -14328,42 +13768,6 @@ ListViewItemProvider } } - WString ListViewItemProvider::GetTextValue(vint itemIndex) - { - return GetText(itemIndex); - } - - description::Value ListViewItemProvider::GetBindingValue(vint itemIndex) - { - return Value::From(Get(itemIndex)); - } - - ListViewItemProvider::ListViewItemProvider() - :columns(this) - , dataColumns(this) - { - } - - ListViewItemProvider::~ListViewItemProvider() - { - } - - IDescriptable* ListViewItemProvider::RequestView(const WString& identifier) - { - if (identifier == IListViewItemView::Identifier) - { - return (IListViewItemView*)this; - } - else if (identifier == ListViewColumnItemArranger::IColumnItemView::Identifier) - { - return (ListViewColumnItemArranger::IColumnItemView*)this; - } - else - { - return 0; - } - } - ListViewDataColumns& ListViewItemProvider::GetDataColumns() { return dataColumns; @@ -14379,9 +13783,16 @@ ListViewItemProvider GuiListView ***********************************************************************/ - void GuiVirtualListView::OnStyleInstalled(vint itemIndex, ItemStyle* style) + void GuiVirtualListView::OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly) { - GuiListViewBase::OnStyleInstalled(itemIndex, style); + GuiListViewBase::OnStyleInstalled(itemIndex, style, refreshPropertiesOnly); + if (refreshPropertiesOnly) + { + if (auto predefinedItemStyle = dynamic_cast(style)) + { + predefinedItemStyle->RefreshItem(); + } + } } void GuiVirtualListView::OnItemTemplateChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) @@ -14418,31 +13829,31 @@ GuiListView SetStyleAndArranger( [](const Value&) { return new list::SmallIconListViewItemTemplate; }, Ptr(new list::FixedSizeMultiColumnItemArranger) - ); + ); break; case ListViewView::List: SetStyleAndArranger( [](const Value&) { return new list::ListListViewItemTemplate; }, Ptr(new list::FixedHeightMultiColumnItemArranger) - ); + ); break; case ListViewView::Tile: SetStyleAndArranger( [](const Value&) { return new list::TileListViewItemTemplate; }, Ptr(new list::FixedSizeMultiColumnItemArranger) - ); + ); break; case ListViewView::Information: SetStyleAndArranger( [](const Value&) { return new list::InformationListViewItemTemplate; }, Ptr(new list::FixedHeightItemArranger) - ); + ); break; case ListViewView::Detail: SetStyleAndArranger( [](const Value&) { return new list::DetailListViewItemTemplate; }, Ptr(new list::ListViewColumnItemArranger) - ); + ); break; default:; } @@ -14525,7 +13936,6 @@ BigIconListViewItemTemplate void BigIconListViewItemTemplate::OnInitialize() { - DefaultListViewItemTemplate::OnInitialize(); { auto table = new GuiTableComposition; AddChild(table); @@ -14563,6 +13973,12 @@ BigIconListViewItemTemplate } } + FontChanged.AttachMethod(this, &BigIconListViewItemTemplate::OnFontChanged); + FontChanged.Execute(compositions::GuiEventArgs(this)); + } + + void BigIconListViewItemTemplate::OnRefresh() + { if (auto listView = dynamic_cast(listControl)) { auto itemIndex = GetIndex(); @@ -14581,10 +13997,6 @@ BigIconListViewItemTemplate text->SetColor(listView->TypedControlTemplateObject(true)->GetPrimaryTextColor()); } } - - FontChanged.AttachMethod(this, &BigIconListViewItemTemplate::OnFontChanged); - - FontChanged.Execute(compositions::GuiEventArgs(this)); } void BigIconListViewItemTemplate::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) @@ -14606,7 +14018,6 @@ SmallIconListViewItemTemplate void SmallIconListViewItemTemplate::OnInitialize() { - DefaultListViewItemTemplate::OnInitialize(); { auto table = new GuiTableComposition; AddChild(table); @@ -14642,6 +14053,12 @@ SmallIconListViewItemTemplate } } + FontChanged.AttachMethod(this, &SmallIconListViewItemTemplate::OnFontChanged); + FontChanged.Execute(compositions::GuiEventArgs(this)); + } + + void SmallIconListViewItemTemplate::OnRefresh() + { if (auto listView = dynamic_cast(listControl)) { auto itemIndex = GetIndex(); @@ -14660,10 +14077,6 @@ SmallIconListViewItemTemplate text->SetColor(listView->TypedControlTemplateObject(true)->GetPrimaryTextColor()); } } - - FontChanged.AttachMethod(this, &SmallIconListViewItemTemplate::OnFontChanged); - - FontChanged.Execute(compositions::GuiEventArgs(this)); } void SmallIconListViewItemTemplate::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) @@ -14685,7 +14098,6 @@ ListListViewItemTemplate void ListListViewItemTemplate::OnInitialize() { - DefaultListViewItemTemplate::OnInitialize(); { auto table = new GuiTableComposition; AddChild(table); @@ -14724,6 +14136,12 @@ ListListViewItemTemplate } } + FontChanged.AttachMethod(this, &ListListViewItemTemplate::OnFontChanged); + FontChanged.Execute(compositions::GuiEventArgs(this)); + } + + void ListListViewItemTemplate::OnRefresh() + { if (auto listView = dynamic_cast(listControl)) { auto itemIndex = GetIndex(); @@ -14742,10 +14160,6 @@ ListListViewItemTemplate text->SetColor(listView->TypedControlTemplateObject(true)->GetPrimaryTextColor()); } } - - FontChanged.AttachMethod(this, &ListListViewItemTemplate::OnFontChanged); - - FontChanged.Execute(compositions::GuiEventArgs(this)); } void ListListViewItemTemplate::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) @@ -14778,21 +14192,43 @@ TileListViewItemTemplate return textElement.Obj(); } - void TileListViewItemTemplate::ResetTextTable(vint textRows) + void TileListViewItemTemplate::ResetTextTable(vint dataColumnCount) { - textTable->SetRowsAndColumns(textRows + 2, 1); - textTable->SetRowOption(0, GuiCellOption::PercentageOption(0.5)); - for (vint i = 0; iChildren().Count() - 1; i >= 0; i--) { - textTable->SetRowOption(i + 1, GuiCellOption::MinSizeOption()); + if (auto cell = dynamic_cast(textTable->Children()[i])) + { + SafeDeleteComposition(cell); + } + } + + { + vint textRows = dataColumnCount + 1; + textTable->SetRowsAndColumns(textRows + 2, 1); + textTable->SetRowOption(0, GuiCellOption::PercentageOption(0.5)); + for (vint i = 0; i < textRows; i++) + { + textTable->SetRowOption(i + 1, GuiCellOption::MinSizeOption()); + } + textTable->SetRowOption(textRows + 1, GuiCellOption::PercentageOption(0.5)); + textTable->SetColumnOption(0, GuiCellOption::PercentageOption(1.0)); + } + + text = CreateTextElement(0); + text->SetFont(GetFont()); + { + dataTexts.Resize(dataColumnCount); + for (vint i = 0; i < dataColumnCount; i++) + { + dataTexts[i] = CreateTextElement(i + 1); + dataTexts[i]->SetFont(GetFont()); + } } - textTable->SetRowOption(textRows + 1, GuiCellOption::PercentageOption(0.5)); - textTable->SetColumnOption(0, GuiCellOption::PercentageOption(1.0)); } void TileListViewItemTemplate::OnInitialize() { - DefaultListViewItemTemplate::OnInitialize(); { auto table = new GuiTableComposition; AddChild(table); @@ -14824,15 +14260,18 @@ TileListViewItemTemplate textTable = new GuiTableComposition; textTable->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); textTable->SetCellPadding(1); - ResetTextTable(1); textTable->SetAlignmentToParent(Margin(0, 0, 0, 0)); cell->AddChild(textTable); - { - text = CreateTextElement(0); - } } } + ResetTextTable(0); + FontChanged.AttachMethod(this, &TileListViewItemTemplate::OnFontChanged); + FontChanged.Execute(compositions::GuiEventArgs(this)); + } + + void TileListViewItemTemplate::OnRefresh() + { if (auto listView = dynamic_cast(listControl)) { auto itemIndex = GetIndex(); @@ -14847,36 +14286,30 @@ TileListViewItemTemplate { image->SetImage(nullptr); } + + vint subColumnCount = view->GetColumnCount() - 1; + vint dataColumnCount = view->GetDataColumnCount(); + if (dataColumnCount > subColumnCount) dataColumnCount = subColumnCount; + if (dataColumnCount < 0) dataColumnCount = 0; + ResetTextTable(dataColumnCount); + text->SetText(view->GetText(itemIndex)); text->SetColor(listView->TypedControlTemplateObject(true)->GetPrimaryTextColor()); - - vint dataColumnCount = view->GetDataColumnCount(); - ResetTextTable(dataColumnCount + 1); - dataTexts.Resize(dataColumnCount); for (vint i = 0; i < dataColumnCount; i++) { - dataTexts[i] = CreateTextElement(i + 1); dataTexts[i]->SetText(view->GetSubItem(itemIndex, view->GetDataColumn(i))); dataTexts[i]->SetColor(listView->TypedControlTemplateObject(true)->GetSecondaryTextColor()); } } } - - FontChanged.AttachMethod(this, &TileListViewItemTemplate::OnFontChanged); - - FontChanged.Execute(compositions::GuiEventArgs(this)); } void TileListViewItemTemplate::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) { - text->SetFont(GetFont()); - if (auto view = dynamic_cast(listControl->GetItemProvider()->RequestView(IListViewItemView::Identifier))) + if (text) text->SetFont(GetFont()); + for (auto dataText : dataTexts) { - vint dataColumnCount = view->GetDataColumnCount(); - for (vint i = 0; i < dataColumnCount; i++) - { - dataTexts[i]->SetFont(GetFont()); - } + dataText->SetFont(GetFont()); } } @@ -14892,9 +14325,69 @@ TileListViewItemTemplate InformationListViewItemTemplate ***********************************************************************/ + void InformationListViewItemTemplate::ResetTextTable(vint dataColumnCount) + { + if (dataTexts.Count() == dataColumnCount) return; + for (vint i = textTable->Children().Count() - 1; i >= 0; i--) + { + if (auto cell = dynamic_cast(textTable->Children()[i])) + { + SafeDeleteComposition(cell); + } + } + + { + textTable->SetRowsAndColumns(dataColumnCount + 2, 1); + textTable->SetRowOption(0, GuiCellOption::PercentageOption(0.5)); + for (vint i = 0; i < dataColumnCount; i++) + { + textTable->SetRowOption(i + 1, GuiCellOption::MinSizeOption()); + } + textTable->SetRowOption(dataColumnCount + 1, GuiCellOption::PercentageOption(0.5)); + textTable->SetColumnOption(0, GuiCellOption::PercentageOption(1.0)); + } + + columnTexts.Resize(dataColumnCount); + dataTexts.Resize(dataColumnCount); + + for (vint i = 0; i < dataColumnCount; i++) + { + auto cell = new GuiCellComposition; + textTable->AddChild(cell); + cell->SetSite(i + 1, 0, 1, 1); + + auto dataTable = new GuiTableComposition; + dataTable->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); + dataTable->SetRowsAndColumns(1, 2); + dataTable->SetRowOption(0, GuiCellOption::MinSizeOption()); + dataTable->SetColumnOption(0, GuiCellOption::MinSizeOption()); + dataTable->SetColumnOption(1, GuiCellOption::PercentageOption(1.0)); + dataTable->SetAlignmentToParent(Margin(0, 0, 0, 0)); + cell->AddChild(dataTable); + { + auto cell = new GuiCellComposition; + dataTable->AddChild(cell); + cell->SetSite(0, 0, 1, 1); + + columnTexts[i] = GuiSolidLabelElement::Create(); + columnTexts[i]->SetFont(GetFont()); + cell->SetOwnedElement(Ptr(columnTexts[i])); + } + { + auto cell = new GuiCellComposition; + dataTable->AddChild(cell); + cell->SetSite(0, 1, 1, 1); + + dataTexts[i] = GuiSolidLabelElement::Create(); + dataTexts[i]->SetFont(GetFont()); + dataTexts[i]->SetEllipse(true); + cell->SetOwnedElement(Ptr(dataTexts[i])); + } + } + } + void InformationListViewItemTemplate::OnInitialize() { - DefaultListViewItemTemplate::OnInitialize(); { bottomLine = GuiSolidBackgroundElement::Create(); bottomLineComposition = new GuiBoundsComposition; @@ -14948,6 +14441,12 @@ InformationListViewItemTemplate } } + FontChanged.AttachMethod(this, &InformationListViewItemTemplate::OnFontChanged); + FontChanged.Execute(compositions::GuiEventArgs(this)); + } + + void InformationListViewItemTemplate::OnRefresh() + { if (auto listView = dynamic_cast(listControl)) { auto itemIndex = GetIndex(); @@ -14966,61 +14465,24 @@ InformationListViewItemTemplate text->SetColor(listView->TypedControlTemplateObject(true)->GetPrimaryTextColor()); bottomLine->SetColor(listView->TypedControlTemplateObject(true)->GetItemSeparatorColor()); + vint subColumnCount = view->GetColumnCount() - 1; vint dataColumnCount = view->GetDataColumnCount(); - columnTexts.Resize(dataColumnCount); - dataTexts.Resize(dataColumnCount); - - textTable->SetRowsAndColumns(dataColumnCount + 2, 1); - textTable->SetRowOption(0, GuiCellOption::PercentageOption(0.5)); + if (dataColumnCount > subColumnCount) dataColumnCount = subColumnCount; + if (dataColumnCount < 0) dataColumnCount = 0; + ResetTextTable(dataColumnCount); for (vint i = 0; i < dataColumnCount; i++) { - textTable->SetRowOption(i + 1, GuiCellOption::MinSizeOption()); - } - textTable->SetRowOption(dataColumnCount + 1, GuiCellOption::PercentageOption(0.5)); - textTable->SetColumnOption(0, GuiCellOption::PercentageOption(1.0)); - - for (vint i = 0; i < dataColumnCount; i++) - { - auto cell = new GuiCellComposition; - textTable->AddChild(cell); - cell->SetSite(i + 1, 0, 1, 1); - - auto dataTable = new GuiTableComposition; - dataTable->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); - dataTable->SetRowsAndColumns(1, 2); - dataTable->SetRowOption(0, GuiCellOption::MinSizeOption()); - dataTable->SetColumnOption(0, GuiCellOption::MinSizeOption()); - dataTable->SetColumnOption(1, GuiCellOption::PercentageOption(1.0)); - dataTable->SetAlignmentToParent(Margin(0, 0, 0, 0)); - cell->AddChild(dataTable); { - auto cell = new GuiCellComposition; - dataTable->AddChild(cell); - cell->SetSite(0, 0, 1, 1); - - columnTexts[i] = GuiSolidLabelElement::Create(); columnTexts[i]->SetText(view->GetColumnText(view->GetDataColumn(i) + 1) + L": "); columnTexts[i]->SetColor(listView->TypedControlTemplateObject(true)->GetSecondaryTextColor()); - cell->SetOwnedElement(Ptr(columnTexts[i])); } { - auto cell = new GuiCellComposition; - dataTable->AddChild(cell); - cell->SetSite(0, 1, 1, 1); - - dataTexts[i]= GuiSolidLabelElement::Create(); - dataTexts[i]->SetEllipse(true); dataTexts[i]->SetText(view->GetSubItem(itemIndex, view->GetDataColumn(i))); dataTexts[i]->SetColor(listView->TypedControlTemplateObject(true)->GetPrimaryTextColor()); - cell->SetOwnedElement(Ptr(dataTexts[i])); } } } } - - FontChanged.AttachMethod(this, &InformationListViewItemTemplate::OnFontChanged); - - FontChanged.Execute(compositions::GuiEventArgs(this)); } void InformationListViewItemTemplate::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) @@ -15030,14 +14492,14 @@ InformationListViewItemTemplate font.size = (vint)(font.size * 1.2); text->SetFont(font); } - if (auto view = dynamic_cast(listControl->GetItemProvider()->RequestView(IListViewItemView::Identifier))) + + for (auto columnText : columnTexts) { - vint dataColumnCount = view->GetDataColumnCount(); - for (vint i = 0; i < dataColumnCount; i++) - { - columnTexts[i]->SetFont(GetFont()); - dataTexts[i]->SetFont(GetFont()); - } + columnText->SetFont(GetFont()); + } + for (auto dataText : dataTexts) + { + dataText->SetFont(GetFont()); } } @@ -15053,9 +14515,61 @@ InformationListViewItemTemplate DetailListViewItemTemplate ***********************************************************************/ + void DetailListViewItemTemplate::UpdateSubItemSize() + { + if (auto view = dynamic_cast(listControl->GetItemProvider()->RequestView(IListViewItemView::Identifier))) + { + if (columnItemView) + { + vint columnCount = view->GetColumnCount(); + if (columnCount > textTable->GetColumns()) + { + columnCount = textTable->GetColumns(); + } + for (vint i = 0; i < columnCount; i++) + { + textTable->SetColumnOption(i, GuiCellOption::AbsoluteOption(columnItemView->GetColumnSize(i))); + } + } + } + } + + void DetailListViewItemTemplate::ResetTextTable(vint subColumnCount) + { + if (subItemCells.Count() == subColumnCount) return; + + for (auto cell : subItemCells) + { + SafeDeleteComposition(cell); + } + subItemCells.Resize(subColumnCount); + subItemTexts.Resize(subColumnCount); + + textTable->SetRowsAndColumns(1, subColumnCount + 1); + for (vint i = 0; i < subColumnCount; i++) + { + auto cell = new GuiCellComposition; + textTable->AddChild(cell); + cell->SetSite(0, i + 1, 1, 1); + + auto textBounds = new GuiBoundsComposition; + cell->AddChild(textBounds); + textBounds->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElement); + textBounds->SetAlignmentToParent(Margin(8, 0, 8, 0)); + + auto subText = GuiSolidLabelElement::Create(); + subText->SetAlignments(Alignment::Left, Alignment::Center); + subText->SetFont(GetFont()); + subText->SetEllipse(true); + textBounds->SetOwnedElement(Ptr(subText)); + + subItemCells[i] = cell; + subItemTexts[i] = subText; + } + } + void DetailListViewItemTemplate::OnInitialize() { - DefaultListViewItemTemplate::OnInitialize(); columnItemView = dynamic_cast(listControl->GetItemProvider()->RequestView(ListViewColumnItemArranger::IColumnItemView::Identifier)); { @@ -15104,17 +14618,28 @@ DetailListViewItemTemplate text = GuiSolidLabelElement::Create(); text->SetAlignments(Alignment::Left, Alignment::Center); + text->SetFont(GetFont()); text->SetEllipse(true); textBounds->SetOwnedElement(Ptr(text)); } } } + FontChanged.AttachMethod(this, &DetailListViewItemTemplate::OnFontChanged); + FontChanged.Execute(compositions::GuiEventArgs(this)); + } + + void DetailListViewItemTemplate::OnRefresh() + { if (auto listView = dynamic_cast(listControl)) { auto itemIndex = GetIndex(); if (auto view = dynamic_cast(listView->GetItemProvider()->RequestView(IListViewItemView::Identifier))) { + vint subColumnCount = view->GetColumnCount() - 1; + if (subColumnCount < 0) subColumnCount = 0; + ResetTextTable(subColumnCount); + auto imageData = view->GetSmallImage(itemIndex); if (imageData) { @@ -15124,69 +14649,26 @@ DetailListViewItemTemplate { image->SetImage(0); } + text->SetText(view->GetText(itemIndex)); text->SetColor(listView->TypedControlTemplateObject(true)->GetPrimaryTextColor()); - vint columnCount = view->GetColumnCount() - 1; - subItems.Resize(columnCount); - textTable->SetRowsAndColumns(1, columnCount + 1); - for (vint i = 0; i < columnCount; i++) + for (vint i = 0; i < subColumnCount; i++) { - auto cell = new GuiCellComposition; - textTable->AddChild(cell); - cell->SetSite(0, i + 1, 1, 1); - - auto textBounds = new GuiBoundsComposition; - cell->AddChild(textBounds); - textBounds->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElement); - textBounds->SetAlignmentToParent(Margin(8, 0, 8, 0)); - - subItems[i] = GuiSolidLabelElement::Create(); - subItems[i]->SetAlignments(Alignment::Left, Alignment::Center); - subItems[i]->SetFont(text->GetFont()); - subItems[i]->SetEllipse(true); - subItems[i]->SetText(view->GetSubItem(itemIndex, i)); - subItems[i]->SetColor(listView->TypedControlTemplateObject(true)->GetSecondaryTextColor()); - textBounds->SetOwnedElement(Ptr(subItems[i])); - } - OnColumnChanged(); - } - } - - FontChanged.AttachMethod(this, &DetailListViewItemTemplate::OnFontChanged); - - FontChanged.Execute(compositions::GuiEventArgs(this)); - } - - void DetailListViewItemTemplate::OnColumnChanged() - { - if (auto view = dynamic_cast(listControl->GetItemProvider()->RequestView(IListViewItemView::Identifier))) - { - if (columnItemView) - { - vint columnCount = view->GetColumnCount(); - if (columnCount>textTable->GetColumns()) - { - columnCount = textTable->GetColumns(); - } - for (vint i = 0; iSetColumnOption(i, GuiCellOption::AbsoluteOption(columnItemView->GetColumnSize(i))); + subItemTexts[i]->SetText(view->GetSubItem(itemIndex, i)); + subItemTexts[i]->SetColor(listView->TypedControlTemplateObject(true)->GetSecondaryTextColor()); } } } + UpdateSubItemSize(); } void DetailListViewItemTemplate::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) { text->SetFont(GetFont()); - if (auto view = dynamic_cast(listControl->GetItemProvider()->RequestView(IListViewItemView::Identifier))) + for (auto subText : subItemTexts) { - vint columnCount = view->GetColumnCount() - 1; - for (vint i = 0; i < columnCount; i++) - { - subItems[i]->SetFont(GetFont()); - } + subText->SetFont(GetFont()); } } @@ -15288,6 +14770,10 @@ DefaultTextListItemTemplate CheckedChanged.Execute(compositions::GuiEventArgs(this)); } + void DefaultTextListItemTemplate::OnRefresh() + { + } + void DefaultTextListItemTemplate::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) { textElement->SetFont(GetFont()); @@ -15315,15 +14801,17 @@ DefaultTextListItemTemplate void DefaultTextListItemTemplate::OnBulletSelectedChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::list::DefaultTextListItemTemplate::OnBulletSelectedChanged(GuiGraphicsComposition*, GuiEventArgs&)#" if (!supressEdit) { if (auto textItemView = dynamic_cast(listControl->GetItemProvider()->RequestView(ITextItemView::Identifier))) { - BeginEditListItem(); + listControl->GetItemProvider()->PushEditing(); textItemView->SetChecked(GetIndex(), bulletButton->GetSelected()); - EndEditListItem(); + CHECK_ERROR(listControl->GetItemProvider()->PopEditing(), ERROR_MESSAGE_PREFIX L"BeginEditListItem and EndEditListItem calls are not paired."); } } +#undef ERROR_MESSAGE_PREFIX } DefaultTextListItemTemplate::DefaultTextListItemTemplate() @@ -15366,6 +14854,22 @@ DefaultRadioTextListItemTemplate TextItem ***********************************************************************/ + void TextItem::NotifyUpdate(bool raiseCheckEvent) + { + if (owner) + { + vint index = owner->IndexOf(this); + owner->InvokeOnItemModified(index, 1, 1, false); + + if (raiseCheckEvent) + { + GuiItemEventArgs arguments; + arguments.itemIndex = index; + owner->listControl->ItemChecked.Execute(arguments); + } + } + } + TextItem::TextItem() :owner(0) , checked(false) @@ -15393,11 +14897,7 @@ TextItem if (text != value) { text = value; - if (owner) - { - vint index = owner->IndexOf(this); - owner->InvokeOnItemModified(index, 1, 1); - } + NotifyUpdate(false); } } @@ -15411,15 +14911,7 @@ TextItem if (checked != value) { checked = value; - if (owner) - { - vint index = owner->IndexOf(this); - owner->InvokeOnItemModified(index, 1, 1); - - GuiItemEventArgs arguments; - arguments.itemIndex = index; - owner->listControl->ItemChecked.Execute(arguments); - } + NotifyUpdate(true); } } @@ -15493,9 +14985,9 @@ GuiTextList { } - void GuiVirtualTextList::OnStyleInstalled(vint itemIndex, ItemStyle* style) + void GuiVirtualTextList::OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly) { - GuiSelectableListControl::OnStyleInstalled(itemIndex, style); + GuiSelectableListControl::OnStyleInstalled(itemIndex, style, refreshPropertiesOnly); if (auto textItemStyle = dynamic_cast(style)) { textItemStyle->SetTextColor(TypedControlTemplateObject(true)->GetTextColor()); @@ -15504,6 +14996,13 @@ GuiTextList textItemStyle->SetChecked(textItemView->GetChecked(itemIndex)); } } + if (refreshPropertiesOnly) + { + if (auto predefinedItemStyle = dynamic_cast(style)) + { + predefinedItemStyle->RefreshItem(); + } + } } void GuiVirtualTextList::OnItemTemplateChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) @@ -15637,7 +15136,7 @@ NodeItemProvider { } - void NodeItemProvider::OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount) + void NodeItemProvider::OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated) { vint offset = 0; vint base = CalculateNodeVisibilityIndexInternal(parentNode); @@ -15652,7 +15151,7 @@ NodeItemProvider offsetBeforeChildModifieds.Set(parentNode, offset); } - void NodeItemProvider::OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount) + void NodeItemProvider::OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated) { vint offsetBeforeChildModified = 0; { @@ -15698,7 +15197,7 @@ NodeItemProvider firstChildStart += child->CalculateTotalVisibleNodes(); } } - InvokeOnItemModified(firstChildStart, offsetBeforeChildModified, offset); + InvokeOnItemModified(firstChildStart, offsetBeforeChildModified, offset, itemReferenceUpdated); } } @@ -15708,7 +15207,7 @@ NodeItemProvider if (base != -2) { vint visibility = node->CalculateTotalVisibleNodes(); - InvokeOnItemModified(base + 1, 0, visibility - 1); + InvokeOnItemModified(base + 1, 0, visibility - 1, true); } } @@ -15724,7 +15223,7 @@ NodeItemProvider auto child = node->GetChild(i); visibility += child->CalculateTotalVisibleNodes(); } - InvokeOnItemModified(base + 1, visibility, 0); + InvokeOnItemModified(base + 1, visibility, 0, true); } } @@ -15852,7 +15351,7 @@ MemoryNodeProvider::NodeCollection INodeProviderCallback* proxy = ownerProvider->GetCallbackProxyInternal(); if (proxy) { - proxy->OnBeforeItemModified(ownerProvider, start, count, newCount); + proxy->OnBeforeItemModified(ownerProvider, start, count, newCount, true); } } @@ -15872,7 +15371,7 @@ MemoryNodeProvider::NodeCollection INodeProviderCallback* proxy = ownerProvider->GetCallbackProxyInternal(); if (proxy) { - proxy->OnAfterItemModified(ownerProvider, start, count, newCount); + proxy->OnAfterItemModified(ownerProvider, start, count, newCount, true); } } @@ -15959,20 +15458,6 @@ MemoryNodeProvider NotifyDataModified(); } - void MemoryNodeProvider::NotifyDataModified() - { - if(parent) - { - vint index=parent->children.IndexOf(this); - INodeProviderCallback* proxy=GetCallbackProxyInternal(); - if(proxy) - { - proxy->OnBeforeItemModified(parent, index, 1, 1); - proxy->OnAfterItemModified(parent, index, 1, 1); - } - } - } - MemoryNodeProvider::NodeCollection& MemoryNodeProvider::Children() { return children; @@ -16015,6 +15500,20 @@ MemoryNodeProvider return totalVisibleNodeCount; } + void MemoryNodeProvider::NotifyDataModified() + { + if (parent) + { + vint index = parent->children.IndexOf(this); + INodeProviderCallback* proxy = GetCallbackProxyInternal(); + if (proxy) + { + proxy->OnBeforeItemModified(parent, index, 1, 1, false); + proxy->OnAfterItemModified(parent, index, 1, 1, false); + } + } + } + vint MemoryNodeProvider::GetChildCount() { return childCount; @@ -16045,21 +15544,21 @@ NodeRootProviderBase { } - void NodeRootProviderBase::OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount) + void NodeRootProviderBase::OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated) { // TODO: (enumerable) foreach for(vint i=0;iOnBeforeItemModified(parentNode, start, count, newCount); + callbacks[i]->OnBeforeItemModified(parentNode, start, count, newCount, itemReferenceUpdated); } } - void NodeRootProviderBase::OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount) + void NodeRootProviderBase::OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated) { // TODO: (enumerable) foreach for(vint i=0;iOnAfterItemModified(parentNode, start, count, newCount); + callbacks[i]->OnAfterItemModified(parentNode, start, count, newCount, itemReferenceUpdated); } } @@ -16178,11 +15677,11 @@ GuiVirtualTreeListControl { } - void GuiVirtualTreeListControl::OnBeforeItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount) + void GuiVirtualTreeListControl::OnBeforeItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated) { } - void GuiVirtualTreeListControl::OnAfterItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount) + void GuiVirtualTreeListControl::OnAfterItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated) { } @@ -16483,9 +15982,9 @@ GuiVirtualTreeView } } - void GuiVirtualTreeView::OnAfterItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount) + void GuiVirtualTreeView::OnAfterItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated) { - GuiVirtualTreeListControl::OnAfterItemModified(parentNode, start, count, newCount); + GuiVirtualTreeListControl::OnAfterItemModified(parentNode, start, count, newCount, itemReferenceUpdated); SetStyleExpandable(parentNode, parentNode->GetChildCount() > 0); } @@ -16501,9 +16000,9 @@ GuiVirtualTreeView SetStyleExpanding(node, false); } - void GuiVirtualTreeView::OnStyleInstalled(vint itemIndex, ItemStyle* style) + void GuiVirtualTreeView::OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly) { - GuiVirtualTreeListControl::OnStyleInstalled(itemIndex, style); + GuiVirtualTreeListControl::OnStyleInstalled(itemIndex, style, refreshPropertiesOnly); if (auto treeItemStyle = dynamic_cast(style)) { treeItemStyle->SetTextColor(TypedControlTemplateObject(true)->GetTextColor()); @@ -16528,6 +16027,13 @@ GuiVirtualTreeView } } } + if (refreshPropertiesOnly) + { + if (auto predefinedItemStyle = dynamic_cast(style)) + { + predefinedItemStyle->RefreshItem(); + } + } } GuiVirtualTreeView::GuiVirtualTreeView(theme::ThemeName themeName, Ptr _nodeRootProvider) @@ -16589,7 +16095,6 @@ DefaultTreeItemTemplate void DefaultTreeItemTemplate::OnInitialize() { - templates::GuiTreeItemTemplate::OnInitialize(); SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); table = new GuiTableComposition; @@ -16665,6 +16170,10 @@ DefaultTreeItemTemplate ImageChanged.Execute(compositions::GuiEventArgs(this)); } + void DefaultTreeItemTemplate::OnRefresh() + { + } + void DefaultTreeItemTemplate::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) { textElement->SetFont(GetFont()); @@ -17805,43 +17314,6 @@ namespace vl using namespace compositions; using namespace elements; -/*********************************************************************** -Item GuiListItemTemplate -***********************************************************************/ - - void GuiListItemTemplate::OnInitialize() - { - } - - GuiListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_IMPL) - - GuiListItemTemplate::GuiListItemTemplate() - { - GuiListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_EVENT_INIT) - } - - GuiListItemTemplate::~GuiListItemTemplate() - { - FinalizeAggregation(); - } - - void GuiListItemTemplate::BeginEditListItem() - { - listControl->GetItemProvider()->PushEditing(); - } - - void GuiListItemTemplate::EndEditListItem() - { - CHECK_ERROR(listControl->GetItemProvider()->PopEditing(), L"GuiListItemTemplate::EndEditListItem()#BeginEditListItem and EndEditListItem calls are not paired."); - } - - void GuiListItemTemplate::Initialize(controls::GuiListControl* _listControl) - { - CHECK_ERROR(listControl == nullptr, L"GuiListItemTemplate::Initialize(GuiListControl*)#This function can only be called once."); - listControl = _listControl; - OnInitialize(); - } - /*********************************************************************** Template Declarations ***********************************************************************/ @@ -25944,44 +25416,48 @@ namespace vl using namespace compositions; /*********************************************************************** -GalleryItemArranger +GalleryItemArrangerRepeatComposition ***********************************************************************/ namespace ribbon_impl { - void GalleryItemArranger::BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex) + void GalleryItemArrangerRepeatComposition::Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex) { - if (forMoving) + if (firstPhase) { pim_itemWidth = itemWidth; newStartIndex = firstIndex; } } - void GalleryItemArranger::PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) + compositions::VirtualRepeatPlaceItemResult GalleryItemArrangerRepeatComposition::Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) { alignmentToParent = Margin(-1, 0, -1, 0); bounds = Rect(Point((index - firstIndex) * itemWidth, 0), Size(itemWidth, 0)); - if (forMoving) + if (firstPhase) { - vint styleWidth = callback->GetStylePreferredSize(GetStyleBounds(style)).x; + vint styleWidth = Layout_GetStylePreferredSize(style).x; if (pim_itemWidth < styleWidth) { pim_itemWidth = styleWidth; } } + + if (bounds.Right() + pim_itemWidth > viewBounds.Right()) + { + return VirtualRepeatPlaceItemResult::HitLastItem; + } + else + { + return VirtualRepeatPlaceItemResult::None; + } } - bool GalleryItemArranger::IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds) - { - return bounds.Right() + pim_itemWidth > viewBounds.Right(); - } - - bool GalleryItemArranger::EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex) + compositions::VirtualRepeatEndPlaceItemResult GalleryItemArrangerRepeatComposition::Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex) { bool result = false; - if (forMoving) + if (firstPhase) { if (pim_itemWidth != itemWidth) { @@ -25995,32 +25471,40 @@ GalleryItemArranger UnblockScrollUpdate(); } - return result; + return result ? + VirtualRepeatEndPlaceItemResult::TotalSizeUpdated : + VirtualRepeatEndPlaceItemResult::None; } - void GalleryItemArranger::InvalidateItemSizeCache() + void GalleryItemArrangerRepeatComposition::Layout_EndLayout(bool totalSizeUpdated) + { + } + + void GalleryItemArrangerRepeatComposition::Layout_InvalidateItemSizeCache() { itemWidth = 1; } - Size GalleryItemArranger::OnCalculateTotalSize() + Size GalleryItemArrangerRepeatComposition::Layout_CalculateTotalSize() { return Size(1, 1); } - GalleryItemArranger::GalleryItemArranger(GuiBindableRibbonGalleryList* _owner) + GalleryItemArrangerRepeatComposition::GalleryItemArrangerRepeatComposition(GuiBindableRibbonGalleryList* _owner) :owner(_owner) { } - GalleryItemArranger::~GalleryItemArranger() + GalleryItemArrangerRepeatComposition::~GalleryItemArrangerRepeatComposition() { } - vint GalleryItemArranger::FindItem(vint itemIndex, compositions::KeyDirection key) + vint GalleryItemArrangerRepeatComposition::FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) { - vint count = itemProvider->Count(); + vint count = itemSource->GetCount(); + if (itemIndex < 0 || itemIndex >= count) return -1; vint groupCount = viewBounds.Width() / itemWidth; + if (groupCount == 0) groupCount = 1; switch (key) { @@ -26051,42 +25535,41 @@ GalleryItemArranger else return itemIndex; } - GuiListControl::EnsureItemVisibleResult GalleryItemArranger::EnsureItemVisible(vint itemIndex) + compositions::VirtualRepeatEnsureItemVisibleResult GalleryItemArrangerRepeatComposition::EnsureItemVisible(vint itemIndex) { - if (callback) + if (!itemSource) return VirtualRepeatEnsureItemVisibleResult::NotMoved; + if (itemIndex < 0 || itemIndex >= itemSource->GetCount()) { - if (0 <= itemIndex && itemIndex < itemProvider->Count()) - { - vint groupCount = viewBounds.Width() / itemWidth; - if (itemIndex < firstIndex) - { - firstIndex = itemIndex; - callback->OnTotalSizeChanged(); - } - else if (itemIndex >= firstIndex + groupCount) - { - firstIndex = itemIndex - groupCount + 1; - callback->OnTotalSizeChanged(); - } - return GuiListControl::EnsureItemVisibleResult::NotMoved; - } - else - { - return GuiListControl::EnsureItemVisibleResult::ItemNotExists; - } + return VirtualRepeatEnsureItemVisibleResult::ItemNotExists; } - return GuiListControl::EnsureItemVisibleResult::NotMoved; + + vint groupCount = viewBounds.Width() / itemWidth; + if (groupCount == 0) groupCount = 1; + + if (itemIndex < firstIndex) + { + firstIndex = itemIndex; + InvalidateLayout(); + } + else if (itemIndex >= firstIndex + groupCount) + { + firstIndex = itemIndex - groupCount + 1; + InvalidateLayout(); + } + return VirtualRepeatEnsureItemVisibleResult::NotMoved; } - Size GalleryItemArranger::GetAdoptedSize(Size expectedSize) + Size GalleryItemArrangerRepeatComposition::GetAdoptedSize(Size expectedSize) { return Size(1, 1); } - void GalleryItemArranger::ScrollUp() + void GalleryItemArrangerRepeatComposition::ScrollUp() { - vint count = itemProvider->Count(); + vint count = itemSource->GetCount(); vint groupCount = viewBounds.Width() / itemWidth; + if (groupCount == 0) groupCount = 1; + if (count > groupCount) { firstIndex -= groupCount; @@ -26094,18 +25577,16 @@ GalleryItemArranger { firstIndex = 0; } - - if (callback) - { - callback->OnTotalSizeChanged(); - } + InvalidateLayout(); } } - void GalleryItemArranger::ScrollDown() + void GalleryItemArrangerRepeatComposition::ScrollDown() { - vint count = itemProvider->Count(); + vint count = itemSource->GetCount(); vint groupCount = viewBounds.Width() / itemWidth; + if (groupCount == 0) groupCount = 1; + if (count > groupCount) { firstIndex += groupCount; @@ -26113,20 +25594,18 @@ GalleryItemArranger { firstIndex = count - groupCount; } - - if (callback) - { - callback->OnTotalSizeChanged(); - } + InvalidateLayout(); } } - void GalleryItemArranger::UnblockScrollUpdate() + void GalleryItemArrangerRepeatComposition::UnblockScrollUpdate() { blockScrollUpdate = false; - vint count = itemProvider->Count(); + vint count = itemSource->GetCount(); vint groupCount = viewBounds.Width() / pim_itemWidth; + if (groupCount == 0) groupCount = 1; + owner->SetScrollUpEnabled(firstIndex > 0); owner->SetScrollDownEnabled(firstIndex + groupCount < count); if (owner->layout->GetItemWidth() != pim_itemWidth) @@ -26136,6 +25615,34 @@ GalleryItemArranger } } +/*********************************************************************** +GalleryItemArranger +***********************************************************************/ + + GalleryItemArranger::GalleryItemArranger(GuiBindableRibbonGalleryList* _owner) + : TBase(new TBase::ArrangerRepeatComposition(this, _owner)) + { + } + + GalleryItemArranger::~GalleryItemArranger() + { + } + + void GalleryItemArranger::ScrollUp() + { + GetRepeatComposition()->ScrollUp(); + } + + void GalleryItemArranger::ScrollDown() + { + GetRepeatComposition()->ScrollDown(); + } + + void GalleryItemArranger::UnblockScrollUpdate() + { + GetRepeatComposition()->UnblockScrollUpdate(); + } + /*********************************************************************** GalleryResponsiveLayout ***********************************************************************/ @@ -27986,77 +27493,11 @@ namespace vl namespace compositions { using namespace reflection::description; - using namespace collections; - using namespace controls; - using namespace elements; /*********************************************************************** GuiRepeatCompositionBase ***********************************************************************/ - void GuiRepeatCompositionBase::OnItemChanged(vint index, vint oldCount, vint newCount) - { - if (itemTemplate && itemSource) - { - for (vint i = oldCount - 1; i >= 0; i--) - { - RemoveItem(index + i); - } - - for (vint i = 0; i < newCount; i++) - { - InstallItem(index + i); - } - } - } - - void GuiRepeatCompositionBase::RemoveItem(vint index) - { - GuiItemEventArgs arguments(dynamic_cast(this)); - arguments.itemIndex = index; - ItemRemoved.Execute(arguments); - - auto item = RemoveRepeatComposition(index); - SafeDeleteComposition(item); - } - - void GuiRepeatCompositionBase::InstallItem(vint index) - { - auto source = itemSource->Get(index); - auto templateItem = itemTemplate(source); - auto item = InsertRepeatComposition(index); - - templateItem->SetAlignmentToParent(Margin(0, 0, 0, 0)); - templateItem->SetContext(itemContext); - item->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); - item->AddChild(templateItem); - - GuiItemEventArgs arguments(dynamic_cast(this)); - arguments.itemIndex = index; - ItemInserted.Execute(arguments); - } - - void GuiRepeatCompositionBase::ClearItems() - { - vint count = GetRepeatCompositionCount(); - for (vint i = count - 1; i >= 0; i--) - { - RemoveItem(i); - } - } - - void GuiRepeatCompositionBase::InstallItems() - { - if (itemTemplate && itemSource) - { - vint count = itemSource->GetCount(); - for (vint i = 0; i < count; i++) - { - InstallItem(i); - } - } - } - GuiRepeatCompositionBase::GuiRepeatCompositionBase() { } @@ -28076,11 +27517,11 @@ GuiRepeatCompositionBase void GuiRepeatCompositionBase::SetItemTemplate(ItemStyleProperty value) { - ClearItems(); + OnClearItems(); itemTemplate = value; if (itemTemplate && itemSource) { - InstallItems(); + OnInstallItems(); } } @@ -28096,9 +27537,10 @@ GuiRepeatCompositionBase if (itemChangedHandler) { itemSource.Cast()->ItemChanged.Remove(itemChangedHandler); + itemChangedHandler = {}; } - ClearItems(); + OnClearItems(); itemSource = value.Cast(); if (!itemSource && value) { @@ -28107,7 +27549,7 @@ GuiRepeatCompositionBase if (itemTemplate && itemSource) { - InstallItems(); + OnInstallItems(); } if (auto observable = itemSource.Cast()) { @@ -28126,18 +27568,112 @@ GuiRepeatCompositionBase if (itemContext != value) { itemContext = value; - vint count = GetRepeatCompositionCount(); - for (vint i = 0; i < count; i++) - { - auto rc = GetRepeatComposition(i); - auto it = dynamic_cast(rc->Children()[0]); - it->SetContext(itemContext); - } + OnUpdateContext(); GuiEventArgs arguments(dynamic_cast(this)); ContextChanged.Execute(arguments); } } + } + } +} + +/*********************************************************************** +.\GRAPHICSCOMPOSITION\GUIGRAPHICSREPEATCOMPOSITION_NONVIRTIAL.CPP +***********************************************************************/ + +namespace vl +{ + namespace presentation + { + namespace compositions + { + +/*********************************************************************** +GuiNonVirtialRepeatCompositionBase +***********************************************************************/ + + void GuiNonVirtialRepeatCompositionBase::OnItemChanged(vint index, vint oldCount, vint newCount) + { + if (itemTemplate && itemSource) + { + for (vint i = oldCount - 1; i >= 0; i--) + { + RemoveItem(index + i); + } + + for (vint i = 0; i < newCount; i++) + { + InstallItem(index + i); + } + } + } + + void GuiNonVirtialRepeatCompositionBase::OnClearItems() + { + vint count = GetRepeatCompositionCount(); + for (vint i = count - 1; i >= 0; i--) + { + RemoveItem(i); + } + } + + void GuiNonVirtialRepeatCompositionBase::OnInstallItems() + { + if (itemTemplate && itemSource) + { + vint count = itemSource->GetCount(); + for (vint i = 0; i < count; i++) + { + InstallItem(i); + } + } + } + + void GuiNonVirtialRepeatCompositionBase::OnUpdateContext() + { + vint count = GetRepeatCompositionCount(); + for (vint i = 0; i < count; i++) + { + auto rc = GetRepeatComposition(i); + auto it = dynamic_cast(rc->Children()[0]); + it->SetContext(itemContext); + } + } + + void GuiNonVirtialRepeatCompositionBase::RemoveItem(vint index) + { + GuiItemEventArgs arguments(dynamic_cast(this)); + arguments.itemIndex = index; + ItemRemoved.Execute(arguments); + + auto item = RemoveRepeatComposition(index); + SafeDeleteComposition(item); + } + + void GuiNonVirtialRepeatCompositionBase::InstallItem(vint index) + { + auto source = itemSource->Get(index); + auto templateItem = itemTemplate(source); + auto item = InsertRepeatComposition(index); + + templateItem->SetAlignmentToParent(Margin(0, 0, 0, 0)); + templateItem->SetContext(itemContext); + item->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); + item->AddChild(templateItem); + + GuiItemEventArgs arguments(dynamic_cast(this)); + arguments.itemIndex = index; + ItemInserted.Execute(arguments); + } + + GuiNonVirtialRepeatCompositionBase::GuiNonVirtialRepeatCompositionBase() + { + } + + GuiNonVirtialRepeatCompositionBase::~GuiNonVirtialRepeatCompositionBase() + { + } /*********************************************************************** GuiRepeatStackComposition @@ -28222,6 +27758,1297 @@ GuiRepeatFlowComposition } } +/*********************************************************************** +.\GRAPHICSCOMPOSITION\GUIGRAPHICSREPEATCOMPOSITION_VIRTUAL.CPP +***********************************************************************/ + +namespace vl +{ + namespace presentation + { + namespace compositions + { + using namespace collections; + +/*********************************************************************** +GuiVirtualRepeatCompositionBase +***********************************************************************/ + + void GuiVirtualRepeatCompositionBase::Layout_UpdateIndex(ItemStyleRecord style, vint index) + { + } + + void GuiVirtualRepeatCompositionBase::Layout_UpdateViewBounds(Rect value, bool forceUpdateTotalSize) + { + auto old = GetViewLocation(); + Rect oldBounds = viewBounds; + viewBounds = value; + OnViewChangedInternal(oldBounds, value, forceUpdateTotalSize); + if (old != GetViewLocation()) + { + ViewLocationChanged.Execute(GuiEventArgs(this)); + } + } + + void GuiVirtualRepeatCompositionBase::Layout_UpdateViewLocation(Point value) + { + Layout_UpdateViewBounds(Rect(value, viewBounds.GetSize()), false); + } + + Rect GuiVirtualRepeatCompositionBase::Layout_CalculateBounds(Size parentSize) + { + auto bounds = GuiBoundsComposition::Layout_CalculateBounds(parentSize); + auto size = axis->RealSizeToVirtualSize(bounds.GetSize()); + if (size != viewBounds.GetSize() || itemSourceUpdated) + { + itemSourceUpdated = false; + Layout_UpdateViewBounds(Rect(viewBounds.LeftTop(), size), true); + } + return bounds; + } + + void GuiVirtualRepeatCompositionBase::Layout_ResetLayout() + { + viewBounds = Rect({ 0,0 }, { 0,0 }); + ViewLocationChanged.Execute(GuiEventArgs(this)); + OnResetViewLocation(); + itemSourceUpdated = true; + Layout_InvalidateItemSizeCache(); + AdoptedSizeInvalidated.Execute(GuiEventArgs(this)); + } + + void GuiVirtualRepeatCompositionBase::Layout_SetStyleAlignmentToParent(ItemStyleRecord style, Margin value) + { + style->SetAlignmentToParent(axis->VirtualMarginToRealMargin(value)); + } + + Size GuiVirtualRepeatCompositionBase::Layout_GetStylePreferredSize(ItemStyleRecord style) + { + return axis->RealSizeToVirtualSize(style->GetCachedMinSize()); + } + + Rect GuiVirtualRepeatCompositionBase::Layout_GetStyleBounds(ItemStyleRecord style) + { + return axis->RealRectToVirtualRect(axis->VirtualSizeToRealSize(viewBounds.GetSize()), style->GetCachedBounds()); + } + + void GuiVirtualRepeatCompositionBase::Layout_SetStyleBounds(ItemStyleRecord style, Rect value) + { + return style->SetExpectedBounds(axis->VirtualRectToRealRect(axis->VirtualSizeToRealSize(viewBounds.GetSize()), value)); + } + + void GuiVirtualRepeatCompositionBase::OnItemChanged(vint start, vint oldCount, vint newCount) + { + itemSourceUpdated = true; + + vint visibleCount = visibleStyles.Count(); + vint itemCount = itemSource->GetCount(); + SortedList reusedStyles; + for (vint i = 0; i < visibleCount; i++) + { + vint index = startIndex + i; + if (index >= itemCount) + { + break; + } + + vint oldIndex = -1; + if (index < start) + { + oldIndex = index; + } + else if (index >= start + newCount) + { + oldIndex = index - newCount + oldCount; + } + + if (oldIndex != -1) + { + if (oldIndex >= startIndex && oldIndex < startIndex + visibleCount) + { + auto style = visibleStyles[oldIndex - startIndex]; + reusedStyles.Add(style); + visibleStyles.Add(style); + } + else + { + oldIndex = -1; + } + } + if (oldIndex == -1) + { + visibleStyles.Add(CreateStyle(index)); + } + } + + for (vint i = 0; i < visibleCount; i++) + { + auto style = visibleStyles[i]; + if (!reusedStyles.Contains(style)) + { + DeleteStyle(style); + } + } + + visibleStyles.RemoveRange(0, visibleCount); + for (auto [style, i] : indexed(visibleStyles)) + { + Layout_UpdateIndex(style, startIndex + 1); + } + } + + void GuiVirtualRepeatCompositionBase::OnClearItems() + { + startIndex = 0; + for (auto style : visibleStyles) + { + DeleteStyle(style); + } + visibleStyles.Clear(); + Layout_ResetLayout(); + } + + void GuiVirtualRepeatCompositionBase::OnInstallItems() + { + // nothing needs to be done here + // visibleStyles will be recreated in the next round of layout + } + + void GuiVirtualRepeatCompositionBase::OnUpdateContext() + { + for (auto style : visibleStyles) + { + style->SetContext(itemContext); + } + } + + void GuiVirtualRepeatCompositionBase::OnResetViewLocation() + { + } + + GuiVirtualRepeatCompositionBase::ItemStyleRecord GuiVirtualRepeatCompositionBase::CreateStyleInternal(vint index) + { + auto source = itemSource->Get(index); + auto itemStyle = itemTemplate(source); + itemStyle->SetContext(itemContext); + return itemStyle; + } + + void GuiVirtualRepeatCompositionBase::DeleteStyleInternal(ItemStyleRecord style) + { + SafeDeleteComposition(style); + } + + vint GuiVirtualRepeatCompositionBase::CalculateAdoptedSize(vint expectedSize, vint count, vint itemSize) + { + vint visibleCount = expectedSize / itemSize; + if (count < visibleCount) + { + visibleCount = count; + } + else if (count > visibleCount) + { + vint deltaA = expectedSize - count * itemSize; + vint deltaB = itemSize - deltaA; + if (deltaB < deltaA) + { + visibleCount++; + } + } + return visibleCount * itemSize; + } + + GuiVirtualRepeatCompositionBase::ItemStyleRecord GuiVirtualRepeatCompositionBase::CreateStyle(vint index) + { + auto itemStyle = CreateStyleInternal(index); + AddChild(itemStyle); + itemStyle->ForceCalculateSizeImmediately(); + return itemStyle; + } + + void GuiVirtualRepeatCompositionBase::DeleteStyle(ItemStyleRecord style) + { + DeleteStyleInternal(style); + } + + void GuiVirtualRepeatCompositionBase::OnViewChangedInternal(Rect oldBounds, Rect newBounds, bool forceUpdateTotalSize) + { + bool needToUpdateTotalSize = forceUpdateTotalSize; + + if (itemTemplate && itemSource) + { + while (true) + { + bool needRestart = false; + + vint endIndex = startIndex + visibleStyles.Count() - 1; + vint newStartIndex = 0; + vint itemCount = itemSource->GetCount(); + Layout_BeginPlaceItem(true, newBounds, newStartIndex); + if (newStartIndex < 0) newStartIndex = 0; + + StyleList newVisibleStyles; + for (vint i = newStartIndex; i < itemCount; i++) + { + bool reuseOldStyle = startIndex <= i && i <= endIndex; + auto style = reuseOldStyle ? visibleStyles[i - startIndex] : CreateStyle(i); + newVisibleStyles.Add(style); + + Rect bounds; + Margin alignmentToParent; + auto placeItemResult = Layout_PlaceItem(true, !reuseOldStyle, i, style, newBounds, bounds, alignmentToParent); + + if (placeItemResult != VirtualRepeatPlaceItemResult::None) + { + needRestart = placeItemResult == VirtualRepeatPlaceItemResult::Restart; + break; + } + } + + vint newEndIndex = newStartIndex + newVisibleStyles.Count() - 1; + for (auto [style, i] : indexed(visibleStyles)) + { + vint index = startIndex + i; + if (index < newStartIndex || index > newEndIndex) + { + DeleteStyle(visibleStyles[i]); + } + } + CopyFrom(visibleStyles, newVisibleStyles); + + needToUpdateTotalSize = (Layout_EndPlaceItem(true, newBounds, newStartIndex) == VirtualRepeatEndPlaceItemResult::TotalSizeUpdated) || needToUpdateTotalSize; + startIndex = newStartIndex; + + if (!needRestart) break; + } + + { + vint newStartIndex = startIndex; + Layout_BeginPlaceItem(false, viewBounds, newStartIndex); + + for (auto [style, i] : indexed(visibleStyles)) + { + Rect bounds; + Margin alignmentToParent(-1, -1, -1, -1); + Layout_PlaceItem(false, false, startIndex + i, style, viewBounds, bounds, alignmentToParent); + + bounds.x1 -= viewBounds.x1; + bounds.x2 -= viewBounds.x1; + bounds.y1 -= viewBounds.y1; + bounds.y2 -= viewBounds.y1; + + Layout_SetStyleAlignmentToParent(style, alignmentToParent); + Layout_SetStyleBounds(style, bounds); + } + + needToUpdateTotalSize = (Layout_EndPlaceItem(false, viewBounds, startIndex) == VirtualRepeatEndPlaceItemResult::TotalSizeUpdated) || needToUpdateTotalSize; + } + } + + if (needToUpdateTotalSize) + { + realFullSize = axis->VirtualSizeToRealSize(Layout_CalculateTotalSize()); + TotalSizeChanged.Execute(GuiEventArgs(this)); + AdoptedSizeInvalidated.Execute(GuiEventArgs(this)); + } + Layout_EndLayout(needToUpdateTotalSize); + } + + GuiVirtualRepeatCompositionBase::GuiVirtualRepeatCompositionBase() + { + AxisChanged.SetAssociatedComposition(this); + TotalSizeChanged.SetAssociatedComposition(this); + ViewLocationChanged.SetAssociatedComposition(this); + AdoptedSizeInvalidated.SetAssociatedComposition(this); + } + + GuiVirtualRepeatCompositionBase::~GuiVirtualRepeatCompositionBase() + { + } + + Ptr GuiVirtualRepeatCompositionBase::GetAxis() + { + return axis; + } + + void GuiVirtualRepeatCompositionBase::SetAxis(Ptr value) + { + if (axis != value) + { + OnClearItems(); + if (!value) value = Ptr(new GuiDefaultAxis); + axis = value; + if (itemTemplate && itemSource) + { + OnInstallItems(); + } + AxisChanged.Execute(GuiEventArgs(this)); + } + } + + Size GuiVirtualRepeatCompositionBase::GetTotalSize() + { + return realFullSize; + } + + Point GuiVirtualRepeatCompositionBase::GetViewLocation() + { + return axis->VirtualRectToRealRect(realFullSize, viewBounds).LeftTop(); + } + + void GuiVirtualRepeatCompositionBase::SetViewLocation(Point value) + { + Size realSize = axis->VirtualSizeToRealSize(viewBounds.GetSize()); + Rect realBounds = Rect(value, realSize); + Layout_UpdateViewBounds(axis->RealRectToVirtualRect(realFullSize, realBounds), false); + OnResetViewLocation(); + } + + GuiVirtualRepeatCompositionBase::ItemStyleRecord GuiVirtualRepeatCompositionBase::GetVisibleStyle(vint itemIndex) + { + if (startIndex <= itemIndex && itemIndex < startIndex + visibleStyles.Count()) + { + return visibleStyles[itemIndex - startIndex]; + } + else + { + return nullptr; + } + } + + vint GuiVirtualRepeatCompositionBase::GetVisibleIndex(ItemStyleRecord style) + { + for (auto [s, i] : indexed(visibleStyles)) + { + if (s == style) + { + return i + startIndex; + } + } + return -1; + } + + void GuiVirtualRepeatCompositionBase::ResetLayout(bool recreateVisibleStyles) + { + if (recreateVisibleStyles) + { + OnClearItems(); + } + else + { + Layout_ResetLayout(); + } + } + + void GuiVirtualRepeatCompositionBase::InvalidateLayout() + { + itemSourceUpdated = true; + } + + vint GuiVirtualRepeatCompositionBase::FindItemByRealKeyDirection(vint itemIndex, compositions::KeyDirection key) + { + return FindItemByVirtualKeyDirection(itemIndex, axis->RealKeyDirectionToVirtualKeyDirection(key)); + } + +/*********************************************************************** +GuiRepeatFreeHeightItemComposition +***********************************************************************/ + + void GuiRepeatFreeHeightItemComposition::EnsureOffsetForItem(vint itemIndex) + { + if (heights.Count() == 0) return; + + if (availableOffsetCount == 0) + { + availableOffsetCount = 1; + offsets[0] = 0; + } + + for (vint i = availableOffsetCount; i < itemIndex && i < heights.Count(); i++) + { + offsets[i] = offsets[i - 1] + heights[i - 1]; + } + } + + void GuiRepeatFreeHeightItemComposition::Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex) + { + pi_heightUpdated = false; + EnsureOffsetForItem(heights.Count() - 1); + if (firstPhase) + { + // TODO: (enumerable) foreach:indexed + for (vint i = 0; i < heights.Count(); i++) + { + if (heights[i] == 1 && startIndex <= i && i < startIndex + visibleStyles.Count() && visibleStyles[i - startIndex]) + { + vint h = visibleStyles[i - startIndex]->GetCachedMinSize().y; + if (h > 1) + { + heights[i] = h; + } + } + if (offsets[i] + heights[i] > newBounds.Top()) + { + newStartIndex = i; + break; + } + } + } + } + + VirtualRepeatPlaceItemResult GuiRepeatFreeHeightItemComposition::Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) + { + vint styleHeight = heights[index]; + { + vint newStyleHeight = Layout_GetStylePreferredSize(style).y; + if (!newCreatedStyle || styleHeight < newStyleHeight) + { + styleHeight = newStyleHeight; + } + } + + if (heights[index] != styleHeight) + { + heights[index] = styleHeight; + pi_heightUpdated = true; + } + + vint styleOffset = index == 0 ? 0 : offsets[index - 1] + heights[index - 1]; + if (availableOffsetCount <= index || offsets[index] != styleOffset) + { + offsets[index] = styleOffset; + availableOffsetCount = index; + } + + bounds = Rect(Point(0, offsets[index]), Size(viewBounds.Width(), heights[index])); + + if (bounds.Bottom() >= viewBounds.Bottom()) + { + return VirtualRepeatPlaceItemResult::HitLastItem; + } + else + { + return VirtualRepeatPlaceItemResult::None; + } + } + + VirtualRepeatEndPlaceItemResult GuiRepeatFreeHeightItemComposition::Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex) + { + return pi_heightUpdated ? VirtualRepeatEndPlaceItemResult::TotalSizeUpdated : VirtualRepeatEndPlaceItemResult::None; + } + + void GuiRepeatFreeHeightItemComposition::Layout_EndLayout(bool totalSizeUpdated) + { + } + + void GuiRepeatFreeHeightItemComposition::Layout_InvalidateItemSizeCache() + { + availableOffsetCount = 0; + for (vint i = 0; i < heights.Count(); i++) + { + heights[i] = 1; + } + } + + Size GuiRepeatFreeHeightItemComposition::Layout_CalculateTotalSize() + { + if (heights.Count() == 0) return Size(0, 0); + EnsureOffsetForItem(heights.Count()); + return Size(viewBounds.Width(), offsets[heights.Count() - 1] + heights[heights.Count() - 1]); + } + + void GuiRepeatFreeHeightItemComposition::OnItemChanged(vint start, vint oldCount, vint newCount) + { + availableOffsetCount = start; + vint itemCount = heights.Count() + newCount - oldCount; + + if (oldCount < newCount) + { + heights.Resize(itemCount); + if (start + newCount < itemCount) + { + memmove(&heights[start + newCount], &heights[start + oldCount], sizeof(vint) * (itemCount - start - newCount)); + } + } + else if (oldCount > newCount) + { + if (start + newCount < itemCount) + { + memmove(&heights[start + newCount], &heights[start + oldCount], sizeof(vint) * (itemCount - start - newCount)); + } + heights.Resize(itemCount); + } + + for (vint i = 0; i < newCount; i++) + { + heights[start + i] = 1; + } + offsets.Resize(itemCount); + + GuiVirtualRepeatCompositionBase::OnItemChanged(start, oldCount, newCount); + } + + void GuiRepeatFreeHeightItemComposition::OnInstallItems() + { + heights.Resize(itemSource->GetCount()); + Layout_InvalidateItemSizeCache(); + + offsets.Resize(itemSource->GetCount()); + EnsureOffsetForItem(heights.Count() - 1); + + GuiVirtualRepeatCompositionBase::OnInstallItems(); + } + + vint GuiRepeatFreeHeightItemComposition::FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) + { + if (!itemSource) return -1; + vint count = itemSource->GetCount(); + if (itemIndex < 0 || itemIndex >= count) return -1; + + switch (key) + { + case KeyDirection::Up: + itemIndex--; + break; + case KeyDirection::Down: + itemIndex++; + break; + case KeyDirection::Home: + itemIndex = 0; + break; + case KeyDirection::End: + itemIndex = count - 1; + break; + case KeyDirection::PageUp: + itemIndex -= visibleStyles.Count(); + break; + case KeyDirection::PageDown: + itemIndex += visibleStyles.Count(); + break; + default: + return -1; + } + + if (itemIndex < 0) return 0; + else if (itemIndex >= count) return count - 1; + else return itemIndex; + } + + VirtualRepeatEnsureItemVisibleResult GuiRepeatFreeHeightItemComposition::EnsureItemVisible(vint itemIndex) + { + if (!itemSource) return VirtualRepeatEnsureItemVisibleResult::NotMoved; + bool moved = false; + while (true) + { + if (itemIndex < 0 || itemIndex >= itemSource->GetCount()) + { + return VirtualRepeatEnsureItemVisibleResult::ItemNotExists; + } + + EnsureOffsetForItem(itemIndex); + vint offset = viewBounds.y1; + vint top = offsets[itemIndex]; + vint bottom = top + heights[itemIndex]; + vint height = viewBounds.Height(); + + Point location = viewBounds.LeftTop(); + + if (offset >= top && offset + height <= bottom) + { + break; + } + else if (offset > top) + { + location.y = top; + } + else if (offset < bottom - height) + { + location.y = bottom - height; + } + else + { + break; + } + + auto oldLeftTop = viewBounds.LeftTop(); + Layout_UpdateViewLocation(location); + moved |= viewBounds.LeftTop() != oldLeftTop; + if (viewBounds.LeftTop() != location) break; + } + return moved ? VirtualRepeatEnsureItemVisibleResult::Moved : VirtualRepeatEnsureItemVisibleResult::NotMoved; + } + + Size GuiRepeatFreeHeightItemComposition::GetAdoptedSize(Size expectedSize) + { + vint h = expectedSize.x * 2; + if (expectedSize.y < h) expectedSize.y = h; + return expectedSize; + } + +/*********************************************************************** +GuiRepeatFixedHeightItemComposition +***********************************************************************/ + + void GuiRepeatFixedHeightItemComposition::Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex) + { + pi_width = itemWidth; + pi_yoffset = itemYOffset; + if (firstPhase) + { + pi_rowHeight = rowHeight; + newStartIndex = newBounds.Top() / pi_rowHeight; + } + } + + VirtualRepeatPlaceItemResult GuiRepeatFixedHeightItemComposition::Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) + { + if (firstPhase) + { + vint styleHeight = Layout_GetStylePreferredSize(style).y; + if (pi_rowHeight < styleHeight) + { + pi_rowHeight = styleHeight; + } + } + + vint top = pi_yoffset + index * pi_rowHeight; + if (pi_width == -1) + { + alignmentToParent = Margin(0, -1, 0, -1); + bounds = Rect(Point(0, top), Size(0, pi_rowHeight)); + } + else + { + alignmentToParent = Margin(-1, -1, -1, -1); + bounds = Rect(Point(0, top), Size(pi_width, pi_rowHeight)); + } + + if (bounds.Bottom() >= viewBounds.Bottom()) + { + return VirtualRepeatPlaceItemResult::HitLastItem; + } + else + { + return VirtualRepeatPlaceItemResult::None; + } + } + + VirtualRepeatEndPlaceItemResult GuiRepeatFixedHeightItemComposition::Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex) + { + if (firstPhase) + { + if (pi_rowHeight != rowHeight) + { + rowHeight = pi_rowHeight; + return VirtualRepeatEndPlaceItemResult::TotalSizeUpdated; + } + } + return VirtualRepeatEndPlaceItemResult::None; + } + + void GuiRepeatFixedHeightItemComposition::Layout_EndLayout(bool totalSizeUpdated) + { + } + + void GuiRepeatFixedHeightItemComposition::Layout_InvalidateItemSizeCache() + { + rowHeight = 1; + } + + Size GuiRepeatFixedHeightItemComposition::Layout_CalculateTotalSize() + { + if (!itemSource || itemSource->GetCount() == 0) return Size(0, 0); + + vint width = itemWidth; + if (width == -1) width = viewBounds.Width(); + return Size(width, rowHeight * itemSource->GetCount() + itemYOffset); + } + + vint GuiRepeatFixedHeightItemComposition::FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) + { + vint count = itemSource->GetCount(); + if (itemIndex < 0 || itemIndex >= count) return -1; + vint groupCount = viewBounds.Height() / rowHeight; + if (groupCount == 0) groupCount = 1; + + switch (key) + { + case KeyDirection::Up: + itemIndex--; + break; + case KeyDirection::Down: + itemIndex++; + break; + case KeyDirection::Home: + itemIndex = 0; + break; + case KeyDirection::End: + itemIndex = count; + break; + case KeyDirection::PageUp: + itemIndex -= groupCount; + break; + case KeyDirection::PageDown: + itemIndex += groupCount; + break; + default: + return -1; + } + + if (itemIndex < 0) return 0; + else if (itemIndex >= count) return count - 1; + else return itemIndex; + } + + VirtualRepeatEnsureItemVisibleResult GuiRepeatFixedHeightItemComposition::EnsureItemVisible(vint itemIndex) + { + if (!itemSource) return VirtualRepeatEnsureItemVisibleResult::NotMoved; + if (itemIndex < 0 || itemIndex >= itemSource->GetCount()) + { + return VirtualRepeatEnsureItemVisibleResult::ItemNotExists; + } + + vint viewY1 = viewBounds.y1 + itemYOffset; + vint viewY2 = viewBounds.y2; + vint itemY1 = itemIndex * rowHeight + itemYOffset; + vint itemY2 = itemY1 + rowHeight; + + if (viewY2 - viewY1 < rowHeight) + { + if (itemY1 < viewY2 && itemY2 > viewY1) + { + return VirtualRepeatEnsureItemVisibleResult::NotMoved; + } + } + else + { + if (itemY1 >= viewY1 && itemY2 <= viewY2) + { + return VirtualRepeatEnsureItemVisibleResult::NotMoved; + } + + if (itemY1 < viewY1 && itemY2 > viewY1) + { + Layout_UpdateViewLocation({ viewBounds.x1,viewBounds.y1 + itemY1 - viewY1 }); + return VirtualRepeatEnsureItemVisibleResult::Moved; + } + + if (itemY1 < viewY2 && itemY2 > viewY2) + { + Layout_UpdateViewLocation({ viewBounds.x1,viewBounds.y1 + itemY2 - viewY2 }); + return VirtualRepeatEnsureItemVisibleResult::Moved; + } + } + + bool up = itemY1 < viewY1; + while (true) + { + if (up) + { + if (itemY1 >= viewY1) break; + Layout_UpdateViewLocation({ viewBounds.x1,viewBounds.y1 + itemY1 - viewY1 }); + } + else + { + if (itemY2 <= viewY2) break; + Layout_UpdateViewLocation({ viewBounds.x1,viewBounds.y1 + itemY2 - viewY2 }); + } + + viewY1 = viewBounds.y1 + itemYOffset; + viewY2 = viewBounds.y2; + itemY1 = itemIndex * rowHeight + itemYOffset; + itemY2 = itemY1 + rowHeight; + } + + return VirtualRepeatEnsureItemVisibleResult::Moved; + } + + Size GuiRepeatFixedHeightItemComposition::GetAdoptedSize(Size expectedSize) + { + if (!itemSource) return expectedSize; + vint y = expectedSize.y - itemYOffset; + vint itemCount = itemSource->GetCount(); + return Size(expectedSize.x, itemYOffset + CalculateAdoptedSize(y, itemCount, rowHeight)); + } + + vint GuiRepeatFixedHeightItemComposition::GetItemWidth() + { + return itemWidth; + } + + void GuiRepeatFixedHeightItemComposition::SetItemWidth(vint value) + { + if (value < -1) value = -1; + if (itemWidth != value) + { + itemWidth = value; + InvalidateLayout(); + } + } + + vint GuiRepeatFixedHeightItemComposition::GetItemYOffset() + { + return itemYOffset; + } + + void GuiRepeatFixedHeightItemComposition::SetItemYOffset(vint value) + { + if (value < 0) value = 0; + if (itemYOffset != value) + { + itemYOffset = value; + InvalidateLayout(); + } + } + +/*********************************************************************** +GuiRepeatFixedSizeMultiColumnItemComposition +***********************************************************************/ + + void GuiRepeatFixedSizeMultiColumnItemComposition::Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex) + { + if (firstPhase) + { + pi_itemSize = itemSize; + vint rows = newBounds.Top() / pi_itemSize.y; + if (rows < 0) rows = 0; + vint cols = newBounds.Width() / pi_itemSize.x; + if (cols < 1) cols = 1; + newStartIndex = rows * cols; + } + } + + VirtualRepeatPlaceItemResult GuiRepeatFixedSizeMultiColumnItemComposition::Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) + { + if (firstPhase) + { + Size styleSize = Layout_GetStylePreferredSize(style); + if (pi_itemSize.x < styleSize.x) pi_itemSize.x = styleSize.x; + if (pi_itemSize.y < styleSize.y) pi_itemSize.y = styleSize.y; + } + + vint rowItems = viewBounds.Width() / pi_itemSize.x; + if (rowItems < 1) rowItems = 1; + + vint row = index / rowItems; + vint col = index % rowItems; + bounds = Rect(Point(col * pi_itemSize.x, row * pi_itemSize.y), pi_itemSize); + + if (col == rowItems - 1 && bounds.Bottom() >= viewBounds.Bottom()) + { + return VirtualRepeatPlaceItemResult::HitLastItem; + } + else + { + return VirtualRepeatPlaceItemResult::None; + } + } + + VirtualRepeatEndPlaceItemResult GuiRepeatFixedSizeMultiColumnItemComposition::Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex) + { + if (firstPhase) + { + if (pi_itemSize != itemSize) + { + itemSize = pi_itemSize; + return VirtualRepeatEndPlaceItemResult::TotalSizeUpdated; + } + } + return VirtualRepeatEndPlaceItemResult::None; + } + + void GuiRepeatFixedSizeMultiColumnItemComposition::Layout_EndLayout(bool totalSizeUpdated) + { + } + + void GuiRepeatFixedSizeMultiColumnItemComposition::Layout_InvalidateItemSizeCache() + { + itemSize = Size(1, 1); + } + + Size GuiRepeatFixedSizeMultiColumnItemComposition::Layout_CalculateTotalSize() + { + if (!itemSource || itemSource->GetCount() == 0) return Size(0, 0); + + vint rowItems = viewBounds.Width() / itemSize.x; + if (rowItems < 1) rowItems = 1; + vint rows = itemSource->GetCount() / rowItems; + if (itemSource->GetCount() % rowItems) rows++; + + return Size(itemSize.x * rowItems, itemSize.y * rows); + } + + vint GuiRepeatFixedSizeMultiColumnItemComposition::FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) + { + vint count = itemSource->GetCount(); + if (itemIndex < 0 || itemIndex >= count) return -1; + vint columnCount = viewBounds.Width() / itemSize.x; + if (columnCount == 0) columnCount = 1; + vint rowCount = viewBounds.Height() / itemSize.y; + if (rowCount == 0) rowCount = 1; + + switch (key) + { + case KeyDirection::Up: + itemIndex -= columnCount; + break; + case KeyDirection::Down: + itemIndex += columnCount; + break; + case KeyDirection::Left: + itemIndex--; + break; + case KeyDirection::Right: + itemIndex++; + break; + case KeyDirection::Home: + itemIndex = 0; + break; + case KeyDirection::End: + itemIndex = count; + break; + case KeyDirection::PageUp: + itemIndex -= columnCount * rowCount; + break; + case KeyDirection::PageDown: + itemIndex += columnCount * rowCount; + break; + case KeyDirection::PageLeft: + itemIndex -= itemIndex % columnCount; + break; + case KeyDirection::PageRight: + itemIndex += columnCount - itemIndex % columnCount - 1; + break; + default: + return -1; + } + + if (itemIndex < 0) return 0; + else if (itemIndex >= count) return count - 1; + else return itemIndex; + } + + VirtualRepeatEnsureItemVisibleResult GuiRepeatFixedSizeMultiColumnItemComposition::EnsureItemVisible(vint itemIndex) + { + if (!itemSource) return VirtualRepeatEnsureItemVisibleResult::NotMoved; + if (itemIndex < 0 || itemIndex >= itemSource->GetCount()) + { + return VirtualRepeatEnsureItemVisibleResult::ItemNotExists; + } + bool moved = false; + while (true) + { + vint rowHeight = itemSize.y; + vint columnCount = viewBounds.Width() / itemSize.x; + if (columnCount == 0) columnCount = 1; + vint rowIndex = itemIndex / columnCount; + + vint top = rowIndex * rowHeight; + vint bottom = top + rowHeight; + + if (viewBounds.Height() < rowHeight) + { + if (viewBounds.Top() < bottom && top < viewBounds.Bottom()) + { + break; + } + } + + Point location = viewBounds.LeftTop(); + if (top < viewBounds.Top()) + { + location.y = top; + } + else if (viewBounds.Bottom() < bottom) + { + location.y = bottom - viewBounds.Height(); + } + else + { + break; + } + + auto oldLeftTop = viewBounds.LeftTop(); + Layout_UpdateViewLocation(location); + moved |= viewBounds.LeftTop() != oldLeftTop; + if (viewBounds.LeftTop() != location) break; + } + return moved ? VirtualRepeatEnsureItemVisibleResult::Moved : VirtualRepeatEnsureItemVisibleResult::NotMoved; + } + + Size GuiRepeatFixedSizeMultiColumnItemComposition::GetAdoptedSize(Size expectedSize) + { + if (!itemSource) return expectedSize; + vint count = itemSource->GetCount(); + vint columnCount = viewBounds.Width() / itemSize.x; + vint rowCount = viewBounds.Height() / itemSize.y; + return Size( + CalculateAdoptedSize(expectedSize.x, columnCount, itemSize.x), + CalculateAdoptedSize(expectedSize.y, rowCount, itemSize.y) + ); + } + +/*********************************************************************** +GuiRepeatFixedHeightMultiColumnItemComposition +***********************************************************************/ + + void GuiRepeatFixedHeightMultiColumnItemComposition::FixColumnWidth(vint index) + { + vint c = index / pi_rows - pi_firstColumn; + vint r = index % pi_rows; + vint w = pi_visibleItemWidths[index - pi_firstColumn * pi_rows]; + + if (r == 0) + { + while (pi_visibleColumnWidths.Count() <= c) pi_visibleColumnWidths.Add(0); + while (pi_visibleColumnOffsets.Count() <= c) pi_visibleColumnOffsets.Add(0); + + pi_visibleColumnWidths[c] = w; + if (c == 0) + { + pi_visibleColumnOffsets[c] = 0; + } + else + { + pi_visibleColumnOffsets[c] = pi_visibleColumnOffsets[c - 1] + pi_visibleColumnWidths[c - 1]; + } + } + else + { + if (pi_visibleColumnWidths[c] < w) + { + pi_visibleColumnWidths[c] = w; + } + } + } + + void GuiRepeatFixedHeightMultiColumnItemComposition::Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex) + { + if (firstPhase) + { + pi_firstColumn = newBounds.Width() == 0 ? 0 : newBounds.x1 / newBounds.Width(); + pi_itemHeight = itemHeight; + + pi_visibleItemWidths.Clear(); + pi_visibleColumnWidths.Clear(); + pi_visibleColumnOffsets.Clear(); + pi_rows = newBounds.Height() / itemHeight; + if (pi_rows < 1) pi_rows = 1; + + if (pi_firstColumn < 0) + { + pi_firstColumn = 0; + } + else if (pi_firstColumn * pi_rows >= itemSource->GetCount()) + { + pi_firstColumn = (itemSource->GetCount() + pi_rows - 1) / pi_rows - 1; + } + + newStartIndex = pi_firstColumn * pi_rows; + } + } + + VirtualRepeatPlaceItemResult GuiRepeatFixedHeightMultiColumnItemComposition::Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) + { +#define ERROR_MESSAGE_INTERNAL_ERROR L"vl::presentation::compositions::GuiRepeatFixedHeightMultiColumnItemComposition::Layout_PlaceItem(...)#Internal error." + + vint visibleColumn = index / pi_rows - pi_firstColumn; + vint visibleRow = index % pi_rows; + + if (firstPhase) + { + Size styleSize = Layout_GetStylePreferredSize(style); + if (pi_itemHeight < styleSize.y) + { + pi_itemHeight = styleSize.y; + vint newRows = viewBounds.Height() / pi_itemHeight; + if (newRows != pi_rows) + { + CHECK_ERROR(newRows < pi_rows, ERROR_MESSAGE_INTERNAL_ERROR); + vint oldFirstIndex = pi_firstColumn * pi_rows; + pi_rows = newRows > 0 ? newRows : 1; + vint newFirstIndex = pi_firstColumn * pi_rows; + + if (oldFirstIndex == newFirstIndex) + { + for (vint i = newFirstIndex; i < index; i++) + { + FixColumnWidth(i + newFirstIndex); + } + } + else + { + CHECK_ERROR(oldFirstIndex > newFirstIndex, ERROR_MESSAGE_INTERNAL_ERROR); + return VirtualRepeatPlaceItemResult::Restart; + } + + visibleColumn = index / pi_rows - pi_firstColumn; + visibleRow = index % pi_rows; + } + } + + pi_visibleItemWidths.Add(styleSize.x); + FixColumnWidth(index); + } + + vint x = viewBounds.x1 + pi_visibleColumnOffsets[visibleColumn]; + vint y = pi_itemHeight * visibleRow; + vint w = pi_visibleItemWidths[index - pi_firstColumn * pi_rows]; + bounds = Rect({ x,y }, { w,pi_itemHeight }); + + if (visibleRow == pi_rows - 1 && pi_visibleColumnOffsets[visibleColumn] + pi_visibleColumnWidths[visibleColumn] >= viewBounds.Width()) + { + return VirtualRepeatPlaceItemResult::HitLastItem; + } + else + { + return VirtualRepeatPlaceItemResult::None; + } +#undef ERROR_MESSAGE_INTERNAL_ERROR + } + + VirtualRepeatEndPlaceItemResult GuiRepeatFixedHeightMultiColumnItemComposition::Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex) + { + if (firstPhase) + { + bool itemHeightUpdated = pi_itemHeight != itemHeight; + + firstColumn = pi_firstColumn; + itemHeight = pi_itemHeight; + if (pi_visibleColumnOffsets.Count() <= 1) + { + fullVisibleColumns = pi_visibleColumnOffsets.Count(); + } + else + { + vint c = pi_visibleColumnOffsets.Count() - 1; + vint x = pi_visibleColumnOffsets[c] + pi_visibleColumnWidths[c]; + if (x <= viewBounds.Width()) + { + fullVisibleColumns = c + 1; + } + else + { + fullVisibleColumns = c; + } + } + + if (itemHeightUpdated) + { + return VirtualRepeatEndPlaceItemResult::TotalSizeUpdated; + } + } + return VirtualRepeatEndPlaceItemResult::None; + } + + void GuiRepeatFixedHeightMultiColumnItemComposition::Layout_EndLayout(bool totalSizeUpdated) + { + } + + void GuiRepeatFixedHeightMultiColumnItemComposition::Layout_InvalidateItemSizeCache() + { + itemHeight = 1; + } + + Size GuiRepeatFixedHeightMultiColumnItemComposition::Layout_CalculateTotalSize() + { + if (!itemSource || itemSource->GetCount() == 0) return Size(0, 0); + + vint rows = viewBounds.Height() / itemHeight; + if (rows < 1) rows = 1; + vint columns = (itemSource->GetCount() + rows - 1) / rows; + + return Size(viewBounds.Width() * (columns + 1), (rows * itemHeight)); + } + + vint GuiRepeatFixedHeightMultiColumnItemComposition::FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) + { + vint count = itemSource->GetCount(); + if (itemIndex < 0 || itemIndex >= count) return -1; + vint rowCount = viewBounds.Height() / itemHeight; + if (rowCount == 0) rowCount = 1; + + switch (key) + { + case KeyDirection::Up: + itemIndex--; + break; + case KeyDirection::Down: + itemIndex++; + break; + case KeyDirection::Left: + itemIndex -= rowCount; + break; + case KeyDirection::Right: + itemIndex += rowCount; + break; + case KeyDirection::Home: + itemIndex = 0; + break; + case KeyDirection::End: + itemIndex = count; + break; + case KeyDirection::PageUp: + itemIndex -= itemIndex % rowCount; + break; + case KeyDirection::PageDown: + itemIndex += rowCount - itemIndex % rowCount - 1; + break; + default: + return -1; + } + + if (itemIndex < 0) return 0; + else if (itemIndex >= count) return count - 1; + else return itemIndex; + } + + VirtualRepeatEnsureItemVisibleResult GuiRepeatFixedHeightMultiColumnItemComposition::EnsureItemVisible(vint itemIndex) + { + if (!itemSource) return VirtualRepeatEnsureItemVisibleResult::NotMoved; + if (itemIndex < 0 || itemIndex >= itemSource->GetCount()) + { + return VirtualRepeatEnsureItemVisibleResult::ItemNotExists; + } + bool moved = false; + while (true) + { + vint rowCount = viewBounds.Height() / itemHeight; + if (rowCount == 0) rowCount = 1; + vint column = itemIndex / rowCount; + Point location = viewBounds.LeftTop(); + + if (column < firstColumn) + { + location.x = viewBounds.Width() * column; + } + else if (column >= firstColumn + fullVisibleColumns) + { + location.x = viewBounds.Width() * (column - fullVisibleColumns + 1); + } + else + { + break; + } + + auto oldLeftTop = viewBounds.LeftTop(); + Layout_UpdateViewLocation(location); + moved |= viewBounds.LeftTop() != oldLeftTop; + if (viewBounds.LeftTop() != location) break; + } + return moved ? VirtualRepeatEnsureItemVisibleResult::Moved : VirtualRepeatEnsureItemVisibleResult::NotMoved; + } + + Size GuiRepeatFixedHeightMultiColumnItemComposition::GetAdoptedSize(Size expectedSize) + { + if (!itemSource) return expectedSize; + vint count = itemSource->GetCount(); + return Size(expectedSize.x, CalculateAdoptedSize(expectedSize.y, count, itemHeight)); + } + } + } +} + /*********************************************************************** .\GRAPHICSCOMPOSITION\GUIGRAPHICSRESPONSIVECOMPOSITION.CPP ***********************************************************************/ diff --git a/Import/GacUI.h b/Import/GacUI.h index 305a2386..9f72da40 100644 --- a/Import/GacUI.h +++ b/Import/GacUI.h @@ -5073,8 +5073,14 @@ namespace vl class GuiSharedSizeRootComposition; class GuiRepeatCompositionBase; + class GuiNonVirtialRepeatCompositionBase; class GuiRepeatStackComposition; class GuiRepeatFlowComposition; + class GuiVirtualRepeatCompositionBase; + class GuiRepeatFreeHeightItemComposition; + class GuiRepeatFixedHeightItemComposition; + class GuiRepeatFixedSizeMultiColumnItemComposition; + class GuiRepeatFixedHeightMultiColumnItemComposition; } } } @@ -5940,25 +5946,15 @@ namespace vl description::Value itemContext; Ptr itemChangedHandler; - virtual vint GetRepeatCompositionCount() = 0; - virtual GuiGraphicsComposition* GetRepeatComposition(vint index) = 0; - virtual GuiGraphicsComposition* InsertRepeatComposition(vint index) = 0; - virtual GuiGraphicsComposition* RemoveRepeatComposition(vint index) = 0; - - void OnItemChanged(vint index, vint oldCount, vint newCount); - void RemoveItem(vint index); - void InstallItem(vint index); - void ClearItems(); - void InstallItems(); + virtual void OnItemChanged(vint index, vint oldCount, vint newCount) = 0; + virtual void OnClearItems() = 0; + virtual void OnInstallItems() = 0; + virtual void OnUpdateContext() = 0; public: GuiRepeatCompositionBase(); ~GuiRepeatCompositionBase(); - /// An event called after a new item is inserted. - GuiItemNotifyEvent ItemInserted; - /// An event called before a new item is removed. - GuiItemNotifyEvent ItemRemoved; - /// Context changed event. This event raises when the font of the control is changed. + /// Context changed event. This event raises when the context of the composition is changed. GuiNotifyEvent ContextChanged; /// Get the item style provider. @@ -5983,8 +5979,39 @@ namespace vl void SetContext(const description::Value& value); }; +/*********************************************************************** +GuiNonVirtialRepeatCompositionBase +***********************************************************************/ + + /// A base class for all bindable repeat compositions. + class GuiNonVirtialRepeatCompositionBase : public GuiRepeatCompositionBase, public Description + { + protected: + + virtual vint GetRepeatCompositionCount() = 0; + virtual GuiGraphicsComposition* GetRepeatComposition(vint index) = 0; + virtual GuiGraphicsComposition* InsertRepeatComposition(vint index) = 0; + virtual GuiGraphicsComposition* RemoveRepeatComposition(vint index) = 0; + + void OnItemChanged(vint index, vint oldCount, vint newCount) override; + void OnClearItems() override; + void OnInstallItems() override; + void OnUpdateContext() override; + + void RemoveItem(vint index); + void InstallItem(vint index); + public: + GuiNonVirtialRepeatCompositionBase(); + ~GuiNonVirtialRepeatCompositionBase(); + + /// An event called after a new item is inserted. + GuiItemNotifyEvent ItemInserted; + /// An event called before a new item is removed. + GuiItemNotifyEvent ItemRemoved; + }; + /// Bindable stack composition. - class GuiRepeatStackComposition : public GuiStackComposition, public GuiRepeatCompositionBase, public Description + class GuiRepeatStackComposition : public GuiStackComposition, public GuiNonVirtialRepeatCompositionBase, public Description { protected: vint GetRepeatCompositionCount()override; @@ -5998,7 +6025,7 @@ namespace vl }; /// Bindable flow composition. - class GuiRepeatFlowComposition : public GuiFlowComposition, public GuiRepeatCompositionBase, public Description + class GuiRepeatFlowComposition : public GuiFlowComposition, public GuiNonVirtialRepeatCompositionBase, public Description { protected: vint GetRepeatCompositionCount()override; @@ -6010,6 +6037,239 @@ namespace vl GuiRepeatFlowComposition(); ~GuiRepeatFlowComposition(); }; + +/*********************************************************************** +GuiVirtualRepeatCompositionBase +***********************************************************************/ + + /// Result for . + enum class VirtualRepeatEnsureItemVisibleResult + { + /// The requested item does not exist. + ItemNotExists, + /// The view location is moved. + Moved, + /// The view location is not moved. + NotMoved, + }; + + enum class VirtualRepeatPlaceItemResult + { + None, + HitLastItem, + Restart, + }; + + enum class VirtualRepeatEndPlaceItemResult + { + None, + TotalSizeUpdated, + }; + + /// This composition implements most of the common functionality that display a continuing subset of items at a time. + class GuiVirtualRepeatCompositionBase : public GuiBoundsComposition, public GuiRepeatCompositionBase, public Description + { + protected: + using ItemStyleRecord = templates::GuiTemplate*; + using StyleList = collections::List; + + Ptr axis = Ptr(new GuiDefaultAxis); + bool itemSourceUpdated = false; + Size realFullSize; + Rect viewBounds; + vint startIndex = 0; + StyleList visibleStyles; + + virtual void Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex) = 0; + virtual VirtualRepeatPlaceItemResult Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) = 0; + virtual VirtualRepeatEndPlaceItemResult Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex) = 0; + virtual void Layout_EndLayout(bool totalSizeUpdated) = 0; + virtual void Layout_InvalidateItemSizeCache() = 0; + virtual Size Layout_CalculateTotalSize() = 0; + + virtual void Layout_UpdateIndex(ItemStyleRecord style, vint index); + void Layout_UpdateViewBounds(Rect value, bool forceUpdateTotalSize); + void Layout_UpdateViewLocation(Point value); + Rect Layout_CalculateBounds(Size parentSize) override; + void Layout_ResetLayout(); + + void Layout_SetStyleAlignmentToParent(ItemStyleRecord style, Margin value); + Size Layout_GetStylePreferredSize(ItemStyleRecord style); + Rect Layout_GetStyleBounds(ItemStyleRecord style); + void Layout_SetStyleBounds(ItemStyleRecord style, Rect value); + + void OnItemChanged(vint start, vint oldCount, vint newCount) override; + void OnClearItems() override; + void OnInstallItems() override; + void OnUpdateContext() override; + virtual void OnResetViewLocation(); + virtual ItemStyleRecord CreateStyleInternal(vint index); + virtual void DeleteStyleInternal(ItemStyleRecord style); + + vint CalculateAdoptedSize(vint expectedSize, vint count, vint itemSize); + ItemStyleRecord CreateStyle(vint index); + void DeleteStyle(ItemStyleRecord style); + void OnViewChangedInternal(Rect oldBounds, Rect newBounds, bool forceUpdateTotalSize); + + public: + /// Create the arranger. + GuiVirtualRepeatCompositionBase(); + ~GuiVirtualRepeatCompositionBase(); + + /// Axis changed event. + GuiNotifyEvent AxisChanged; + + /// Total size changed event. This event raises when the total size of the content is changed. + GuiNotifyEvent TotalSizeChanged; + + /// View location changed event. This event raises when the view location of the content is changed. + GuiNotifyEvent ViewLocationChanged; + + /// This event raises when the adopted size of the content is potentially changed. + GuiNotifyEvent AdoptedSizeInvalidated; + + Ptr GetAxis(); + void SetAxis(Ptr value); + + Size GetTotalSize(); + Point GetViewLocation(); + void SetViewLocation(Point value); + + ItemStyleRecord GetVisibleStyle(vint itemIndex); + vint GetVisibleIndex(ItemStyleRecord style); + void ResetLayout(bool recreateVisibleStyles); + void InvalidateLayout(); + + vint FindItemByRealKeyDirection(vint itemIndex, compositions::KeyDirection key); + virtual vint FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) = 0; + virtual VirtualRepeatEnsureItemVisibleResult EnsureItemVisible(vint itemIndex) = 0; + virtual Size GetAdoptedSize(Size expectedSize) = 0; + }; + + /// Free height repeat composition. This arranger will cache heights of all items. + class GuiRepeatFreeHeightItemComposition : public GuiVirtualRepeatCompositionBase, public Description + { + private: + bool pi_heightUpdated = false; + + protected: + collections::Array heights; + collections::Array offsets; + vint availableOffsetCount = 0; + + void EnsureOffsetForItem(vint itemIndex); + + void Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex) override; + VirtualRepeatPlaceItemResult Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) override; + VirtualRepeatEndPlaceItemResult Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex) override; + void Layout_EndLayout(bool totalSizeUpdated) override; + void Layout_InvalidateItemSizeCache() override; + Size Layout_CalculateTotalSize() override; + + void OnItemChanged(vint start, vint oldCount, vint newCount) override; + void OnInstallItems() override; + public: + /// Create the arranger. + GuiRepeatFreeHeightItemComposition() = default; + ~GuiRepeatFreeHeightItemComposition() = default; + + vint FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) override; + VirtualRepeatEnsureItemVisibleResult EnsureItemVisible(vint itemIndex) override; + Size GetAdoptedSize(Size expectedSize) override; + }; + + /// Fixed height item arranger. This arranger lists all item with the same height value. This value is the maximum height of all minimum heights of displayed items. + class GuiRepeatFixedHeightItemComposition : public GuiVirtualRepeatCompositionBase, public Description + { + private: + vint pi_width = 0; + vint pi_yoffset = 0; + vint pi_rowHeight = 0; + + protected: + vint rowHeight = 1; + vint itemWidth = -1; + vint itemYOffset = 0; + + void Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex)override; + VirtualRepeatPlaceItemResult Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; + VirtualRepeatEndPlaceItemResult Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex)override; + void Layout_EndLayout(bool totalSizeUpdated) override; + void Layout_InvalidateItemSizeCache()override; + Size Layout_CalculateTotalSize()override; + public: + /// Create the arranger. + GuiRepeatFixedHeightItemComposition() = default; + ~GuiRepeatFixedHeightItemComposition() = default; + + vint FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key)override; + VirtualRepeatEnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; + Size GetAdoptedSize(Size expectedSize)override; + + vint GetItemWidth(); + void SetItemWidth(vint value); + vint GetItemYOffset(); + void SetItemYOffset(vint value); + }; + + /// Fixed size multiple columns item arranger. This arranger adjust all items in multiple lines with the same size. The width is the maximum width of all minimum widths of displayed items. The same to height. + class GuiRepeatFixedSizeMultiColumnItemComposition : public GuiVirtualRepeatCompositionBase, public Description + { + private: + Size pi_itemSize; + + protected: + Size itemSize{ 1,1 }; + + void Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex)override; + VirtualRepeatPlaceItemResult Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; + VirtualRepeatEndPlaceItemResult Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex)override; + void Layout_EndLayout(bool totalSizeUpdated) override; + void Layout_InvalidateItemSizeCache()override; + Size Layout_CalculateTotalSize()override; + public: + /// Create the arranger. + GuiRepeatFixedSizeMultiColumnItemComposition() = default; + ~GuiRepeatFixedSizeMultiColumnItemComposition() = default; + + vint FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key)override; + VirtualRepeatEnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; + Size GetAdoptedSize(Size expectedSize)override; + }; + + /// Fixed size multiple columns item arranger. This arranger adjust all items in multiple columns with the same height. The height is the maximum width of all minimum height of displayed items. Each item will displayed using its minimum width. + class GuiRepeatFixedHeightMultiColumnItemComposition : public GuiVirtualRepeatCompositionBase, public Description + { + private: + collections::List pi_visibleItemWidths; + collections::List pi_visibleColumnWidths; + collections::List pi_visibleColumnOffsets; + vint pi_rows = 0; + vint pi_firstColumn = 0; + vint pi_itemHeight = 0; + + protected: + vint firstColumn = 0; + vint fullVisibleColumns = 0; + vint itemHeight = 1; + + void FixColumnWidth(vint index); + + void Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex)override; + VirtualRepeatPlaceItemResult Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; + VirtualRepeatEndPlaceItemResult Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex)override; + void Layout_EndLayout(bool totalSizeUpdated) override; + void Layout_InvalidateItemSizeCache()override; + Size Layout_CalculateTotalSize()override; + public: + /// Create the arranger. + GuiRepeatFixedHeightMultiColumnItemComposition() = default; + ~GuiRepeatFixedHeightMultiColumnItemComposition() = default; + + vint FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key)override; + VirtualRepeatEnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; + Size GetAdoptedSize(Size expectedSize)override; + }; } } } @@ -12797,37 +13057,13 @@ Templates F(GuiRibbonGalleryListTemplate, GuiRibbonGalleryTemplate) \ #define GUI_ITEM_TEMPLATE_DECL(F)\ + F(GuiListItemTemplate, GuiTemplate) \ F(GuiTextListItemTemplate, GuiListItemTemplate) \ F(GuiTreeItemTemplate, GuiTextListItemTemplate) \ F(GuiGridCellTemplate, GuiControlTemplate) \ F(GuiGridVisualizerTemplate, GuiGridCellTemplate) \ F(GuiGridEditorTemplate, GuiGridCellTemplate) \ -/*********************************************************************** -GuiListItemTemplate -***********************************************************************/ - - class GuiListItemTemplate : public GuiTemplate, public AggregatableDescription - { - protected: - controls::GuiListControl* listControl = nullptr; - - virtual void OnInitialize(); - public: - GuiListItemTemplate(); - ~GuiListItemTemplate(); - -#define GuiListItemTemplate_PROPERTIES(F)\ - F(GuiListItemTemplate, bool, Selected, false)\ - F(GuiListItemTemplate, vint, Index, 0)\ - - GuiListItemTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_DECL) - - void BeginEditListItem(); - void EndEditListItem(); - void Initialize(controls::GuiListControl* _listControl); - }; - /*********************************************************************** Control Template ***********************************************************************/ @@ -12962,10 +13198,11 @@ Control Template /*********************************************************************** Item Template ***********************************************************************/ - + #define GuiListItemTemplate_PROPERTIES(F)\ F(GuiListItemTemplate, bool, Selected, false)\ F(GuiListItemTemplate, vint, Index, 0)\ + F(GuiListItemTemplate, controls::GuiListControl*, AssociatedListControl, nullptr)\ #define GuiTextListItemTemplate_PROPERTIES(F)\ F(GuiTextListItemTemplate, Color, TextColor, {})\ @@ -13655,6 +13892,8 @@ List Control class IItemProvider; using ItemStyle = templates::GuiListItemTemplate; + using ItemStyleBounds = templates::GuiTemplate; + using ItemStyleRecord = collections::Pair; using ItemStyleProperty = TemplateProperty; //----------------------------------------------------------- @@ -13672,45 +13911,39 @@ List Control /// The index of the first modified item. /// The number of all modified items. /// The number of new items. If items are inserted or removed, newCount may not equals to count. - virtual void OnItemModified(vint start, vint count, vint newCount)=0; + /// True when items are replaced, false when only content in items are updated. + virtual void OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated)=0; }; /// Item arranger callback. Item arrangers use this interface to communicate with the list control. When setting positions for item controls, functions in this callback object is suggested to call because they use the result from the [T:vl.presentation.controls.compositions.IGuiAxis]. class IItemArrangerCallback : public virtual IDescriptable, public Description { public: - /// Request an item control representing an item in the item provider. This function is suggested to call when an item control gets into the visible area. + /// Create an item control representing an item in the item provider. This function is suggested to call when an item control gets into the visible area. /// The item control. /// The index of the item in the item provider. - /// The composition that represents the item. Set to null if the item style is expected to be put directly into the list control. - virtual ItemStyle* RequestItem(vint itemIndex, compositions::GuiBoundsComposition* itemComposition)=0; + virtual ItemStyle* CreateItem(vint itemIndex)=0; + /// Get the most outer bounds from an item control. + /// The most outer bounds. When The item control. + virtual ItemStyleBounds* GetItemBounds(ItemStyle* style)=0; + /// Get the item control from its most outer bounds. + /// The item control. + /// The most outer bounds. + virtual ItemStyle* GetItem(ItemStyleBounds* bounds)=0; /// Release an item control. This function is suggested to call when an item control gets out of the visible area. /// The item control. virtual void ReleaseItem(ItemStyle* style)=0; /// Update the view location. The view location is the left-top position in the logic space of the list control. /// The new view location. virtual void SetViewLocation(Point value)=0; - /// Get the preferred size of an item control. - /// The preferred size of an item control. - /// The item control. - virtual Size GetStylePreferredSize(compositions::GuiBoundsComposition* style)=0; - /// Set the alignment of an item control. - /// The item control. - /// The new alignment. - virtual void SetStyleAlignmentToParent(compositions::GuiBoundsComposition* style, Margin margin)=0; - /// Get the bounds of an item control. - /// The bounds of an item control. - /// The item control. - virtual Rect GetStyleBounds(compositions::GuiBoundsComposition* style)=0; - /// Set the bounds of an item control. - /// The item control. - /// The new bounds. - virtual void SetStyleBounds(compositions::GuiBoundsComposition* style, Rect bounds)=0; /// Get the that directly contains item controls. /// The that directly contains item controls. virtual compositions::GuiGraphicsComposition* GetContainerComposition()=0; /// Notify the list control that the total size of all item controls are changed. virtual void OnTotalSizeChanged()=0; + /// Notify the list control that the adopted size of the list control is changed. + virtual void OnAdoptedSizeChanged()=0; }; //----------------------------------------------------------- @@ -13806,7 +14039,7 @@ List Control /// The item index that is found. Returns -1 if this operation failed. /// The base item index. /// The key direction. - virtual vint FindItem(vint itemIndex, compositions::KeyDirection key) = 0; + virtual vint FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) = 0; /// Adjust the view location to make an item visible. /// Returns the result of this operation. /// The item index of the item to be made visible. @@ -13825,17 +14058,14 @@ List Control class ItemCallback : public IItemProviderCallback, public IItemArrangerCallback { - typedef compositions::IGuiGraphicsEventHandler BoundsChangedHandler; - typedef collections::List StyleList; - typedef collections::Dictionary> InstalledStyleMap; + typedef collections::Dictionary InstalledStyleMap; protected: GuiListControl* listControl = nullptr; IItemProvider* itemProvider = nullptr; InstalledStyleMap installedStyles; - Ptr InstallStyle(ItemStyle* style, vint itemIndex, compositions::GuiBoundsComposition* itemComposition); - ItemStyle* UninstallStyle(vint index); - void OnStyleCachedBoundsChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); + ItemStyleRecord InstallStyle(ItemStyle* style, vint itemIndex); + ItemStyleRecord UninstallStyle(vint index); public: ItemCallback(GuiListControl* _listControl); ~ItemCallback(); @@ -13843,16 +14073,15 @@ List Control void ClearCache(); void OnAttached(IItemProvider* provider)override; - void OnItemModified(vint start, vint count, vint newCount)override; - ItemStyle* RequestItem(vint itemIndex, compositions::GuiBoundsComposition* itemComposition)override; + void OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated)override; + ItemStyle* CreateItem(vint itemIndex)override; + ItemStyleBounds* GetItemBounds(ItemStyle* style)override; + ItemStyle* GetItem(ItemStyleBounds* bounds)override; void ReleaseItem(ItemStyle* style)override; void SetViewLocation(Point value)override; - Size GetStylePreferredSize(compositions::GuiBoundsComposition* style)override; - void SetStyleAlignmentToParent(compositions::GuiBoundsComposition* style, Margin margin)override; - Rect GetStyleBounds(compositions::GuiBoundsComposition* style)override; - void SetStyleBounds(compositions::GuiBoundsComposition* style, Rect bounds)override; compositions::GuiGraphicsComposition* GetContainerComposition()override; void OnTotalSizeChanged()override; + void OnAdoptedSizeChanged()override; }; //----------------------------------------------------------- @@ -13867,8 +14096,8 @@ List Control Size fullSize; bool displayItemBackground = true; - virtual void OnItemModified(vint start, vint count, vint newCount); - virtual void OnStyleInstalled(vint itemIndex, ItemStyle* style); + virtual void OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated); + virtual void OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly); virtual void OnStyleUninstalled(ItemStyle* style); void OnRenderTargetChanged(elements::IGuiGraphicsRenderTarget* renderTarget)override; @@ -14005,8 +14234,8 @@ Selectable List Control vint selectedItemIndexEnd; void NotifySelectionChanged(); - void OnItemModified(vint start, vint count, vint newCount)override; - void OnStyleInstalled(vint itemIndex, ItemStyle* style)override; + void OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated)override; + void OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly)override; virtual void OnItemSelectionChanged(vint itemIndex, bool value); virtual void OnItemSelectionCleared(); void OnItemLeftButtonDown(compositions::GuiGraphicsComposition* sender, compositions::GuiItemMouseEventArgs& arguments); @@ -14083,7 +14312,7 @@ Predefined ItemProvider vint editingCounter = 0; bool callingOnItemModified = false; - virtual void InvokeOnItemModified(vint start, vint count, vint newCount); + virtual void InvokeOnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated); public: /// Create the item provider. ItemProviderBase(); @@ -14102,7 +14331,7 @@ Predefined ItemProvider protected: void NotifyUpdateInternal(vint start, vint count, vint newCount)override { - InvokeOnItemModified(start, count, newCount); + InvokeOnItemModified(start, count, newCount, true); } public: vint Count()override @@ -14110,6 +14339,39 @@ Predefined ItemProvider return this->items.Count(); } }; + + template + class PredefinedListItemTemplate : public TBase + { + protected: + GuiListControl* listControl = nullptr; + virtual void OnInitialize() = 0; + virtual void OnRefresh() = 0; + + void OnAssociatedListControlChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::list::PredefinedListItemTemplate::OnAssociatedListControlChanged(GuiGraphicsComposition*, GuiEventArgs&)#" + auto value = this->GetAssociatedListControl(); + CHECK_ERROR(value && (!listControl || listControl == value), ERROR_MESSAGE_PREFIX L"GuiListItemTemplate::SetAssociatedListControl cannot be invoked using a different list control instance."); + if (!listControl) + { + listControl = value; + OnInitialize(); + OnRefresh(); + } +#undef ERROR_MESSAGE_PREFIX + } + public: + PredefinedListItemTemplate() + { + this->AssociatedListControlChanged.AttachMethod(this, &PredefinedListItemTemplate::OnAssociatedListControlChanged); + } + + void RefreshItem() + { + OnRefresh(); + } + }; } } } @@ -14146,7 +14408,6 @@ Predefined ItemArranger namespace list { - /// Ranged item arranger. This arranger implements most of the common functionality for those arrangers that display a continuing subset of item at a time. class RangedItemArrangerBase : public Object, virtual public GuiListControl::IItemArranger, public Description { @@ -14154,163 +14415,124 @@ Predefined ItemArranger using ItemStyleRecord = collections::Pair; typedef collections::List StyleList; - GuiListControl* listControl = nullptr; - GuiListControl::IItemArrangerCallback* callback = nullptr; - GuiListControl::IItemProvider* itemProvider = nullptr; + GuiListControl* listControl = nullptr; + GuiListControl::IItemArrangerCallback* callback = nullptr; + GuiListControl::IItemProvider* itemProvider = nullptr; + Ptr itemSource; + compositions::GuiVirtualRepeatCompositionBase* repeat = nullptr; - bool suppressOnViewChanged = false; - Rect viewBounds; - vint startIndex = 0; - StyleList visibleStyles; - - protected: - - void InvalidateAdoptedSize(); - vint CalculateAdoptedSize(vint expectedSize, vint count, vint itemSize); - ItemStyleRecord CreateStyle(vint index); - void DeleteStyle(ItemStyleRecord style); - compositions::GuiBoundsComposition* GetStyleBounds(ItemStyleRecord style); - void ClearStyles(); - void OnViewChangedInternal(Rect oldBounds, Rect newBounds); - virtual void RearrangeItemBounds(); - - virtual void BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex) = 0; - virtual void PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent) = 0; - virtual bool IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds) = 0; - virtual bool EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex) = 0; - virtual void InvalidateItemSizeCache() = 0; - virtual Size OnCalculateTotalSize() = 0; + void OnViewLocationChanged(compositions::GuiGraphicsComposition* composition, compositions::GuiEventArgs& arguments); + void OnTotalSizeChanged(compositions::GuiGraphicsComposition* composition, compositions::GuiEventArgs& arguments); + void OnAdoptedSizeInvalidated(compositions::GuiGraphicsComposition* composition, compositions::GuiEventArgs& arguments); public: /// Create the arranger. - RangedItemArrangerBase(); + /// A repeat composition to implement the item layout. It will be deleted when the item arranger is deleted. + RangedItemArrangerBase(compositions::GuiVirtualRepeatCompositionBase* _repeat); ~RangedItemArrangerBase(); - void OnAttached(GuiListControl::IItemProvider* provider)override; - void OnItemModified(vint start, vint count, vint newCount)override; - void AttachListControl(GuiListControl* value)override; - void DetachListControl()override; - GuiListControl::IItemArrangerCallback* GetCallback()override; - void SetCallback(GuiListControl::IItemArrangerCallback* value)override; - Size GetTotalSize()override; - GuiListControl::ItemStyle* GetVisibleStyle(vint itemIndex)override; - vint GetVisibleIndex(GuiListControl::ItemStyle* style)override; - void ReloadVisibleStyles()override; - void OnViewChanged(Rect bounds)override; + void OnAttached(GuiListControl::IItemProvider* provider)override; + void OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated)override; + void AttachListControl(GuiListControl* value)override; + void DetachListControl()override; + GuiListControl::IItemArrangerCallback* GetCallback()override; + void SetCallback(GuiListControl::IItemArrangerCallback* value)override; + Size GetTotalSize()override; + GuiListControl::ItemStyle* GetVisibleStyle(vint itemIndex)override; + vint GetVisibleIndex(GuiListControl::ItemStyle* style)override; + void ReloadVisibleStyles()override; + void OnViewChanged(Rect bounds)override; + vint FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key) override; + GuiListControl::EnsureItemVisibleResult EnsureItemVisible(vint itemIndex) override; + Size GetAdoptedSize(Size expectedSize) override; }; - /// Free height item arranger. This arranger will cache heights of all items. - class FreeHeightItemArranger : public RangedItemArrangerBase, public Description + + template + class VirtualRepeatRangedItemArrangerBase : public RangedItemArrangerBase { - private: - bool pim_heightUpdated = false; + using TArranger = VirtualRepeatRangedItemArrangerBase; + protected: + class ArrangerRepeatComposition : public TVirtualRepeatComposition + { + protected: + TArranger* arranger = nullptr; + + void Layout_UpdateIndex(templates::GuiTemplate* style, vint index) override + { + auto itemStyle = arranger->callback->GetItem(style); + itemStyle->SetIndex(index); + } + + templates::GuiTemplate* CreateStyleInternal(vint index) override + { + auto itemStyle = arranger->callback->CreateItem(index); + return arranger->callback->GetItemBounds(itemStyle); + } + + void DeleteStyleInternal(templates::GuiTemplate* style) override + { + auto itemStyle = arranger->callback->GetItem(style); + arranger->callback->ReleaseItem(itemStyle); + } + public: + template + ArrangerRepeatComposition(TArranger* _arranger, TArgs&& ...args) + : TVirtualRepeatComposition(std::forward(args)...) + , arranger(_arranger) + { + } + }; + + TVirtualRepeatComposition* GetRepeatComposition() + { + return dynamic_cast(repeat); + } protected: - collections::Array heights; - collections::Array offsets; - vint availableOffsetCount = 0; + VirtualRepeatRangedItemArrangerBase() + : RangedItemArrangerBase(new ArrangerRepeatComposition(this)) + { + } - void EnsureOffsetForItem(vint itemIndex); + VirtualRepeatRangedItemArrangerBase(ArrangerRepeatComposition* _repeat) + : RangedItemArrangerBase(_repeat) + { + } + }; - void BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex)override; - void PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; - bool IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds)override; - bool EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex)override; - void InvalidateItemSizeCache()override; - Size OnCalculateTotalSize()override; + /// Free height item arranger. This arranger will cache heights of all items. + class FreeHeightItemArranger : public VirtualRepeatRangedItemArrangerBase, public Description + { public: /// Create the arranger. FreeHeightItemArranger(); ~FreeHeightItemArranger(); - - void OnAttached(GuiListControl::IItemProvider* provider)override; - void OnItemModified(vint start, vint count, vint newCount)override; - vint FindItem(vint itemIndex, compositions::KeyDirection key)override; - GuiListControl::EnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; - Size GetAdoptedSize(Size expectedSize)override; }; /// Fixed height item arranger. This arranger lists all item with the same height value. This value is the maximum height of all minimum heights of displayed items. - class FixedHeightItemArranger : public RangedItemArrangerBase, public Description + class FixedHeightItemArranger : public VirtualRepeatRangedItemArrangerBase, public Description { - private: - vint pi_width = 0; - vint pim_rowHeight = 0; - - protected: - vint rowHeight = 1; - - virtual vint GetWidth(); - virtual vint GetYOffset(); - - void BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex)override; - void PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; - bool IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds)override; - bool EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex)override; - void InvalidateItemSizeCache()override; - Size OnCalculateTotalSize()override; public: /// Create the arranger. FixedHeightItemArranger(); ~FixedHeightItemArranger(); - - vint FindItem(vint itemIndex, compositions::KeyDirection key)override; - GuiListControl::EnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; - Size GetAdoptedSize(Size expectedSize)override; }; /// Fixed size multiple columns item arranger. This arranger adjust all items in multiple lines with the same size. The width is the maximum width of all minimum widths of displayed items. The same to height. - class FixedSizeMultiColumnItemArranger : public RangedItemArrangerBase, public Description + class FixedSizeMultiColumnItemArranger : public VirtualRepeatRangedItemArrangerBase, public Description { - private: - Size pim_itemSize; - - protected: - Size itemSize{ 1,1 }; - - void CalculateRange(Size itemSize, Rect bounds, vint count, vint& start, vint& end); - - void BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex)override; - void PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; - bool IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds)override; - bool EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex)override; - void InvalidateItemSizeCache()override; - Size OnCalculateTotalSize()override; public: /// Create the arranger. FixedSizeMultiColumnItemArranger(); ~FixedSizeMultiColumnItemArranger(); - - vint FindItem(vint itemIndex, compositions::KeyDirection key)override; - GuiListControl::EnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; - Size GetAdoptedSize(Size expectedSize)override; }; /// Fixed size multiple columns item arranger. This arranger adjust all items in multiple columns with the same height. The height is the maximum width of all minimum height of displayed items. Each item will displayed using its minimum width. - class FixedHeightMultiColumnItemArranger : public RangedItemArrangerBase, public Description + class FixedHeightMultiColumnItemArranger : public VirtualRepeatRangedItemArrangerBase, public Description { - private: - vint pi_currentWidth = 0; - vint pi_totalWidth = 0; - vint pim_itemHeight = 0; - - protected: - vint itemHeight = 1; - - void CalculateRange(vint itemHeight, Rect bounds, vint& rows, vint& startColumn); - - void BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex)override; - void PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; - bool IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds)override; - bool EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex)override; - void InvalidateItemSizeCache()override; - Size OnCalculateTotalSize()override; public: /// Create the arranger. FixedHeightMultiColumnItemArranger(); ~FixedHeightMultiColumnItemArranger(); - - vint FindItem(vint itemIndex, compositions::KeyDirection key)override; - GuiListControl::EnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; - Size GetAdoptedSize(Size expectedSize)override; }; } } @@ -14368,7 +14590,7 @@ DefaultTextListItemTemplate virtual void SetChecked(vint itemIndex, bool value) = 0; }; - class DefaultTextListItemTemplate : public templates::GuiTextListItemTemplate + class DefaultTextListItemTemplate : public PredefinedListItemTemplate { protected: using BulletStyle = templates::GuiControlTemplate; @@ -14379,6 +14601,7 @@ DefaultTextListItemTemplate virtual TemplateProperty CreateBulletStyle(); void OnInitialize()override; + void OnRefresh()override; void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); void OnTextChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); void OnTextColorChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); @@ -14418,6 +14641,7 @@ TextItemProvider WString text; bool checked; + void NotifyUpdate(bool raiseCheckEvent); public: /// Create an empty text item. TextItem(); @@ -14490,7 +14714,7 @@ GuiVirtualTextList protected: TextListView view = TextListView::Unknown; - void OnStyleInstalled(vint itemIndex, ItemStyle* style)override; + void OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly)override; void OnItemTemplateChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: /// Create a Text list control in virtual mode. @@ -14586,13 +14810,15 @@ NodeItemProvider /// The index of the first sub item. /// The number of sub items to be modified. /// The new number of modified sub items. - virtual void OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount)=0; + /// True when items are replaced, false when only content in items are updated. + virtual void OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)=0; /// Called after sub items of a node are modified. /// The node containing modified sub items. /// The index of the first sub item. /// The number of sub items to be modified. /// The new number of modified sub items. - virtual void OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount)=0; + /// True when items are replaced, false when only content in items are updated. + virtual void OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)=0; /// Called when a node is expanded. /// The node. virtual void OnItemExpanded(INodeProvider* node)=0; @@ -14618,6 +14844,8 @@ NodeItemProvider /// Calculate the number of total visible nodes of this node. The number of total visible nodes includes the node itself, and all total visible nodes of all visible sub nodes. If this node is collapsed, this number will be 1. /// The number of total visible nodes. virtual vint CalculateTotalVisibleNodes()=0; + /// Notify that the state in the binded data object is modified. + virtual void NotifyDataModified()=0; /// Get the number of all sub nodes. /// The number of all sub nodes. @@ -14706,8 +14934,8 @@ NodeItemProvider Ptr GetNodeByOffset(Ptr provider, vint offset); void OnAttached(INodeRootProvider* provider)override; - void OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount)override; - void OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount)override; + void OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)override; + void OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)override; void OnItemExpanded(INodeProvider* node)override; void OnItemCollapsed(INodeProvider* node)override; vint CalculateNodeVisibilityIndexInternal(INodeProvider* node); @@ -14788,8 +15016,6 @@ MemoryNodeProvider /// Set the data object. /// The data object. void SetData(const Ptr& value); - /// Notify that the state in the binded data object is modified. - void NotifyDataModified(); /// Get all sub nodes. /// All sub nodes. NodeCollection& Children(); @@ -14797,6 +15023,7 @@ MemoryNodeProvider bool GetExpanding()override; void SetExpanding(bool value)override; vint CalculateTotalVisibleNodes()override; + void NotifyDataModified()override; vint GetChildCount()override; Ptr GetParent()override; @@ -14809,8 +15036,8 @@ MemoryNodeProvider collections::List callbacks; protected: void OnAttached(INodeRootProvider* provider)override; - void OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount)override; - void OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount)override; + void OnBeforeItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)override; + void OnAfterItemModified(INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)override; void OnItemExpanded(INodeProvider* node)override; void OnItemCollapsed(INodeProvider* node)override; public: @@ -14856,8 +15083,8 @@ GuiVirtualTreeListControl GUI_SPECIFY_CONTROL_TEMPLATE_TYPE(TreeViewTemplate, GuiSelectableListControl) protected: void OnAttached(tree::INodeRootProvider* provider)override; - void OnBeforeItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount)override; - void OnAfterItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount)override; + void OnBeforeItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)override; + void OnAfterItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)override; void OnItemExpanded(tree::INodeProvider* node)override; void OnItemCollapsed(tree::INodeProvider* node)override; @@ -14996,10 +15223,10 @@ GuiVirtualTreeView templates::GuiTreeItemTemplate* GetStyleFromNode(tree::INodeProvider* node); void SetStyleExpanding(tree::INodeProvider* node, bool expanding); void SetStyleExpandable(tree::INodeProvider* node, bool expandable); - void OnAfterItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount)override; + void OnAfterItemModified(tree::INodeProvider* parentNode, vint start, vint count, vint newCount, bool itemReferenceUpdated)override; void OnItemExpanded(tree::INodeProvider* node)override; void OnItemCollapsed(tree::INodeProvider* node)override; - void OnStyleInstalled(vint itemIndex, ItemStyle* style)override; + void OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly)override; public: /// Create a tree view control in virtual mode. /// The theme name for retriving a default control template. @@ -15038,7 +15265,7 @@ DefaultTreeItemTemplate namespace tree { - class DefaultTreeItemTemplate : public templates::GuiTreeItemTemplate + class DefaultTreeItemTemplate : public list::PredefinedListItemTemplate { protected: GuiSelectableButton* expandingButton = nullptr; @@ -15047,6 +15274,7 @@ DefaultTreeItemTemplate elements::GuiSolidLabelElement* textElement = nullptr; void OnInitialize()override; + void OnRefresh()override; void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); void OnTextChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); void OnTextColorChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); @@ -17653,7 +17881,7 @@ ComboBox with GuiListControl // ===================== GuiListControl::IItemProviderCallback ===================== void OnAttached(GuiListControl::IItemProvider* provider)override; - void OnItemModified(vint start, vint count, vint newCount)override; + void OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated)override; public: /// Create a control with a specified default theme and a list control that will be put in the popup control to show all items. /// The theme name for retriving a default control template. @@ -17948,19 +18176,23 @@ ListViewColumnItemArranger ***********************************************************************/ /// List view column item arranger. This arranger contains column headers. When an column header is resized, all items will be notified via the [T:vl.presentation.controls.list.ListViewColumnItemArranger.IColumnItemView] for . - class ListViewColumnItemArranger : public FixedHeightItemArranger, public Description + class ListViewColumnItemArranger : public VirtualRepeatRangedItemArrangerBase, public Description { + using TBase = VirtualRepeatRangedItemArrangerBase; typedef collections::List ColumnHeaderButtonList; typedef collections::List ColumnHeaderSplitterList; public: - static const vint SplitterWidth=8; + static const vint SplitterWidth = 8; /// Callback for [T:vl.presentation.controls.list.ListViewColumnItemArranger.IColumnItemView]. Column item view use this interface to notify column related modification. class IColumnItemViewCallback : public virtual IDescriptable, public Description { public: - /// Called when any column is changed (inserted, removed, text changed, etc.). - virtual void OnColumnChanged()=0; + /// Called when any column object is changed (inserted, removed, updated binding, etc.). + virtual void OnColumnRebuilt()=0; + + /// Called when any property of a column is changed (size changed, text changed, etc.). + virtual void OnColumnChanged(bool needToRefreshItems)=0; }; /// The required view for . @@ -18001,12 +18233,25 @@ ListViewColumnItemArranger class ColumnItemViewCallback : public Object, public virtual IColumnItemViewCallback { protected: - ListViewColumnItemArranger* arranger; + ListViewColumnItemArranger* arranger = nullptr; + public: ColumnItemViewCallback(ListViewColumnItemArranger* _arranger); ~ColumnItemViewCallback(); - void OnColumnChanged(); + void OnColumnRebuilt() override; + void OnColumnChanged(bool needToRefreshItems) override; + }; + + class ColumnItemArrangerRepeatComposition : public TBase::ArrangerRepeatComposition + { + protected: + ListViewColumnItemArranger* arranger = nullptr; + + void Layout_EndLayout(bool totalSizeUpdated) override; + Size Layout_CalculateTotalSize() override; + public: + ColumnItemArrangerRepeatComposition(ListViewColumnItemArranger* _arranger); }; GuiListViewBase* listView = nullptr; @@ -18019,22 +18264,25 @@ ListViewColumnItemArranger bool splitterDragging = false; vint splitterLatestX = 0; + void OnViewLocationChanged(compositions::GuiGraphicsComposition* composition, compositions::GuiEventArgs& arguments); void ColumnClicked(vint index, compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); void ColumnCachedBoundsChanged(vint index, compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); void ColumnHeaderSplitterLeftButtonDown(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); void ColumnHeaderSplitterLeftButtonUp(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); void ColumnHeaderSplitterMouseMove(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); - void RearrangeItemBounds()override; - vint GetWidth()override; - vint GetYOffset()override; - Size OnCalculateTotalSize()override; + void FixColumnsAfterViewLocationChanged(); + void FixColumnsAfterLayout(); + vint GetColumnsWidth(); + vint GetColumnsYOffset(); void DeleteColumnButtons(); void RebuildColumns(); + void RefreshColumns(); public: ListViewColumnItemArranger(); ~ListViewColumnItemArranger(); + Size GetTotalSize()override; void AttachListControl(GuiListControl* value)override; void DetachListControl()override; }; @@ -18122,7 +18370,8 @@ ListViewItemProvider GuiMenu* dropdownPopup = nullptr; ColumnSortingState sortingState = ColumnSortingState::NotSorted; - void NotifyUpdate(bool affectItem); + void NotifyRebuilt(); + void NotifyChanged(bool needToRefreshItems); public: /// Create a column with the specified text and size. /// The specified text. @@ -18171,8 +18420,10 @@ ListViewItemProvider class IListViewItemProvider : public virtual Interface { public: - virtual void NotifyAllItemsUpdate() = 0; - virtual void NotifyAllColumnsUpdate() = 0; + virtual void RebuildAllItems() = 0; + virtual void RefreshAllItems() = 0; + virtual void NotifyColumnRebuilt() = 0; + virtual void NotifyColumnChanged() = 0; }; /// List view data column container. @@ -18197,7 +18448,8 @@ ListViewItemProvider IListViewItemProvider* itemProvider; bool affectItemFlag = true; - void NotifyColumnUpdated(vint column, bool affectItem); + void NotifyColumnRebuilt(vint column); + void NotifyColumnChanged(vint column, bool needToRefreshItems); void AfterInsert(vint index, const Ptr& value)override; void BeforeRemove(vint index, const Ptr& value)override; void NotifyUpdateInternal(vint start, vint count, vint newCount)override; @@ -18228,8 +18480,24 @@ ListViewItemProvider void AfterInsert(vint index, const Ptr& value)override; void BeforeRemove(vint index, const Ptr& value)override; - void NotifyAllItemsUpdate()override; - void NotifyAllColumnsUpdate()override; + // ===================== list::IListViewItemProvider ===================== + + void RebuildAllItems() override; + void RefreshAllItems() override; + void NotifyColumnRebuilt() override; + void NotifyColumnChanged() override; + + public: + ListViewItemProvider(); + ~ListViewItemProvider(); + + // ===================== GuiListControl::IItemProvider ===================== + + WString GetTextValue(vint itemIndex)override; + description::Value GetBindingValue(vint itemIndex)override; + IDescriptable* RequestView(const WString& identifier)override; + + // ===================== list::ListViewItemStyleProvider::IListViewItemView ===================== Ptr GetSmallImage(vint itemIndex)override; Ptr GetLargeImage(vint itemIndex)override; @@ -18238,7 +18506,9 @@ ListViewItemProvider vint GetDataColumnCount()override; vint GetDataColumn(vint index)override; vint GetColumnCount()override; - WString GetColumnText(vint index)override;; + WString GetColumnText(vint index)override; + + // ===================== list::ListViewColumnItemArranger::IColumnItemView ===================== bool AttachCallback(ListViewColumnItemArranger::IColumnItemViewCallback* value)override; bool DetachCallback(ListViewColumnItemArranger::IColumnItemViewCallback* value)override; @@ -18247,14 +18517,6 @@ ListViewItemProvider GuiMenu* GetDropdownPopup(vint index)override; ColumnSortingState GetSortingState(vint index)override; - WString GetTextValue(vint itemIndex)override; - description::Value GetBindingValue(vint itemIndex)override; - public: - ListViewItemProvider(); - ~ListViewItemProvider(); - - IDescriptable* RequestView(const WString& identifier)override; - /// Get all data columns indices in columns. /// All data columns indices in columns. ListViewDataColumns& GetDataColumns(); @@ -18285,7 +18547,7 @@ GuiVirtualListView protected: ListViewView view = ListViewView::Unknown; - void OnStyleInstalled(vint itemIndex, ItemStyle* style)override; + void OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly)override; void OnItemTemplateChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: /// Create a list view control in virtual mode. @@ -18450,6 +18712,7 @@ GuiBindableTextList description::Value Get(vint index); void UpdateBindingProperties(); + bool NotifyUpdate(vint start, vint count, bool itemReferenceUpdated); // ===================== GuiListControl::IItemProvider ===================== @@ -18502,6 +18765,12 @@ GuiBindableTextList /// Get the selected item. /// Returns the selected item. If there are multiple selected items, or there is no selected item, null will be returned. description::Value GetSelectedItem(); + + /// Notify the control that data in some items are modified. + /// The index of the first item. + /// The number of items + /// Returns true if this operation succeeded. + bool NotifyItemDataModified(vint start, vint count); }; /*********************************************************************** @@ -18539,14 +18808,16 @@ GuiBindableListView description::Value Get(vint index); void UpdateBindingProperties(); - bool NotifyUpdate(vint start, vint count); + bool NotifyUpdate(vint start, vint count, bool itemReferenceUpdated); list::ListViewDataColumns& GetDataColumns(); list::ListViewColumns& GetColumns(); // ===================== list::IListViewItemProvider ===================== - void NotifyAllItemsUpdate()override; - void NotifyAllColumnsUpdate()override; + void RebuildAllItems() override; + void RefreshAllItems() override; + void NotifyColumnRebuilt() override; + void NotifyColumnChanged() override; // ===================== GuiListControl::IItemProvider ===================== @@ -18621,6 +18892,12 @@ GuiBindableListView /// Get the selected item. /// Returns the selected item. If there are multiple selected items, or there is no selected item, null will be returned. description::Value GetSelectedItem(); + + /// Notify the control that data in some items are modified. + /// The index of the first item. + /// The number of items + /// Returns true if this operation succeeded. + bool NotifyItemDataModified(vint start, vint count); }; /*********************************************************************** @@ -18654,6 +18931,8 @@ GuiBindableTreeView Ptr PrepareValueList(const description::Value& inputItemSource); void PrepareChildren(Ptr newValueList); void UnprepareChildren(); + void PrepareReverseMapping(); + void UnprepareReverseMapping(); public: ItemSourceNode(const description::Value& _itemSource, ItemSourceNode* _parent); ItemSourceNode(ItemSource* _rootProvider); @@ -18667,6 +18946,7 @@ GuiBindableTreeView bool GetExpanding()override; void SetExpanding(bool value)override; vint CalculateTotalVisibleNodes()override; + void NotifyDataModified()override; vint GetChildCount()override; Ptr GetParent()override; @@ -18679,6 +18959,7 @@ GuiBindableTreeView { friend class ItemSourceNode; public: + WritableItemProperty reverseMappingProperty; ItemProperty textProperty; ItemProperty> imageProperty; ItemProperty> childrenProperty; @@ -18700,7 +18981,6 @@ GuiBindableTreeView description::Value GetBindingValue(tree::INodeProvider* node)override; IDescriptable* RequestView(const WString& identifier)override; - // ===================== tree::ITreeViewItemView ===================== Ptr GetNodeImage(tree::INodeProvider* node)override; @@ -18712,7 +18992,8 @@ GuiBindableTreeView public: /// Create a bindable Tree view control. /// The theme name for retriving a default control template. - GuiBindableTreeView(theme::ThemeName themeName); + /// (Optional): The value of . + GuiBindableTreeView(theme::ThemeName themeName, WritableItemProperty reverseMappingProperty = {}); ~GuiBindableTreeView(); /// Text property name changed event. @@ -18728,6 +19009,15 @@ GuiBindableTreeView /// Set the item source. /// The item source. Null is acceptable if you want to clear all data. void SetItemSource(description::Value _itemSource); + + /// + /// Get the reverse mapping property name to store the internal tree view node for an item. + /// The value is set in the constructor. + /// Using this property makes items in item source exclusive to a treeview control. + /// Sharing such item in different treeview controls causes exceptions. + /// + /// The reverse mapping property name. + WritableItemProperty GetReverseMappingProperty(); /// Get the text property name to get the item text from an item. /// The text property name. @@ -18753,6 +19043,11 @@ GuiBindableTreeView /// Get the selected item. /// Returns the selected item. If there are multiple selected items, or there is no selected item, null will be returned. description::Value GetSelectedItem(); + + /// Notify the control that data in an item is modified. Child nodes are not notified. + /// The item from the item source. + /// Returns true if this operation succeeded. + void NotifyNodeDataModified(description::Value value); }; } } @@ -19131,7 +19426,7 @@ namespace vl { namespace list { - class DefaultListViewItemTemplate : public templates::GuiListItemTemplate + class DefaultListViewItemTemplate : public PredefinedListItemTemplate { public: DefaultListViewItemTemplate(); @@ -19145,6 +19440,7 @@ namespace vl elements::GuiSolidLabelElement* text = nullptr; void OnInitialize()override; + void OnRefresh()override; void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: BigIconListViewItemTemplate(); @@ -19158,6 +19454,7 @@ namespace vl elements::GuiSolidLabelElement* text = nullptr; void OnInitialize()override; + void OnRefresh()override; void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: SmallIconListViewItemTemplate(); @@ -19171,6 +19468,7 @@ namespace vl elements::GuiSolidLabelElement* text = nullptr; void OnInitialize()override; + void OnRefresh()override; void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: ListListViewItemTemplate(); @@ -19187,8 +19485,9 @@ namespace vl DataTextElementArray dataTexts; elements::GuiSolidLabelElement* CreateTextElement(vint textRow); - void ResetTextTable(vint textRows); + void ResetTextTable(vint dataColumnCount); void OnInitialize()override; + void OnRefresh()override; void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: TileListViewItemTemplate(); @@ -19207,7 +19506,9 @@ namespace vl elements::GuiSolidBackgroundElement* bottomLine = nullptr; compositions::GuiBoundsComposition* bottomLineComposition = nullptr; + void ResetTextTable(vint dataColumnCount); void OnInitialize()override; + void OnRefresh()override; void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: InformationListViewItemTemplate(); @@ -19216,19 +19517,22 @@ namespace vl class DetailListViewItemTemplate : public DefaultListViewItemTemplate - , public virtual ListViewColumnItemArranger::IColumnItemViewCallback { - typedef collections::Array SubItemList; + typedef collections::Array SubItemCellList; + typedef collections::Array SubItemTestList; typedef ListViewColumnItemArranger::IColumnItemView IColumnItemView; protected: IColumnItemView* columnItemView = nullptr; elements::GuiImageFrameElement* image = nullptr; elements::GuiSolidLabelElement* text = nullptr; compositions::GuiTableComposition* textTable = nullptr; - SubItemList subItems; + SubItemCellList subItemCells; + SubItemTestList subItemTexts; + void UpdateSubItemSize(); + void ResetTextTable(vint subColumnCount); void OnInitialize()override; - void OnColumnChanged()override; + void OnRefresh()override; void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: DetailListViewItemTemplate(); @@ -19273,37 +19577,41 @@ DefaultDataGridItemTemplate class DefaultDataGridItemTemplate : public DefaultListViewItemTemplate - , public ListViewColumnItemArranger::IColumnItemViewCallback { protected: - compositions::GuiTableComposition* textTable = nullptr; - collections::Array> dataVisualizers; - IDataEditor* currentEditor = nullptr; + compositions::GuiTableComposition* textTable = nullptr; + collections::Array dataVisualizerFactories; + collections::Array> dataVisualizers; + collections::Array dataCells; + IDataEditor* currentEditor = nullptr; - IDataVisualizerFactory* GetDataVisualizerFactory(vint row, vint column); - IDataEditorFactory* GetDataEditorFactory(vint row, vint column); - vint GetCellColumnIndex(compositions::GuiGraphicsComposition* composition); - bool IsInEditor(GuiVirtualDataGrid* dataGrid, compositions::GuiMouseEventArgs& arguments); - void OnCellButtonDown(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); - void OnCellLeftButtonUp(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); - void OnCellRightButtonUp(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); + IDataVisualizerFactory* GetDataVisualizerFactory(vint row, vint column); + IDataEditorFactory* GetDataEditorFactory(vint row, vint column); + vint GetCellColumnIndex(compositions::GuiGraphicsComposition* composition); + bool IsInEditor(GuiVirtualDataGrid* dataGrid, compositions::GuiMouseEventArgs& arguments); + void OnCellButtonDown(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); + void OnCellLeftButtonUp(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); + void OnCellRightButtonUp(compositions::GuiGraphicsComposition* sender, compositions::GuiMouseEventArgs& arguments); - void OnColumnChanged()override; - void OnInitialize()override; - void OnSelectedChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); - void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); - void OnContextChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); - void OnVisuallyEnabledChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); + void DeleteAllVisualizers(); + void DeleteVisualizer(vint column); + void ResetDataTable(vint columnCount); + void OnInitialize()override; + void OnRefresh()override; + void OnSelectedChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); + void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); + void OnContextChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); + void OnVisuallyEnabledChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: DefaultDataGridItemTemplate(); ~DefaultDataGridItemTemplate(); - void UpdateSubItemSize(); - bool IsEditorOpened(); - void NotifyOpenEditor(vint column, IDataEditor* editor); - void NotifyCloseEditor(); - void NotifySelectCell(vint column); - void NotifyCellEdited(); + void UpdateSubItemSize(); + bool IsEditorOpened(); + void NotifyOpenEditor(vint column, IDataEditor* editor); + void NotifyCloseEditor(); + void NotifySelectCell(vint column); + void NotifyCellEdited(); }; } @@ -19333,8 +19641,8 @@ GuiVirtualDataGrid bool currentEditorOpeningEditor = false; compositions::IGuiAltActionHost* GetActivatingAltHost()override; - void OnItemModified(vint start, vint count, vint newCount)override; - void OnStyleInstalled(vint index, ItemStyle* style)override; + void OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated)override; + void OnStyleInstalled(vint index, ItemStyle* style, bool refreshPropertiesOnly)override; void OnStyleUninstalled(ItemStyle* style)override; void NotifyCloseEditor(); @@ -19591,7 +19899,8 @@ DataColumn Ptr visualizerFactory; Ptr editorFactory; - void NotifyAllColumnsUpdate(bool affectItem); + void NotifyRebuilt(); + void NotifyChanged(bool needToRefreshItems); public: DataColumn(); ~DataColumn(); @@ -19692,7 +20001,8 @@ DataColumn DataProvider* dataProvider = nullptr; bool affectItemFlag = true; - void NotifyColumnUpdated(vint index, bool affectItem); + void NotifyColumnRebuilt(vint column); + void NotifyColumnChanged(vint column, bool needToRefreshItems); void NotifyUpdateInternal(vint start, vint count, vint newCount)override; bool QueryInsert(vint index, const Ptr& value)override; void AfterInsert(vint index, const Ptr& value)override; @@ -19718,10 +20028,11 @@ DataProvider friend class DataColumn; friend class DataColumns; friend class controls::GuiBindableDataGrid; + typedef collections::List ColumnItemViewCallbackList; protected: ListViewDataColumns dataColumns; DataColumns columns; - ListViewColumnItemArranger::IColumnItemViewCallback* columnItemViewCallback = nullptr; + ColumnItemViewCallbackList columnItemViewCallbacks; Ptr itemSource; Ptr itemChangedEventHandler; @@ -19730,8 +20041,11 @@ DataProvider Ptr currentSorter; collections::List virtualRowToSourceRow; - void NotifyAllItemsUpdate()override; - void NotifyAllColumnsUpdate()override; + bool NotifyUpdate(vint start, vint count, bool itemReferenceUpdated); + void RebuildAllItems() override; + void RefreshAllItems() override; + void NotifyColumnRebuilt() override; + void NotifyColumnChanged() override; GuiListControl::IItemProvider* GetItemProvider()override; void OnProcessorChanged()override; @@ -19863,6 +20177,12 @@ GuiBindableDataGrid /// Get the selected cell. /// Returns the selected item. If there are multiple selected items, or there is no selected item, null will be returned. description::Value GetSelectedCellValue(); + + /// Notify the control that data in some items are modified. + /// The index of the first item. + /// The number of items + /// Returns true if this operation succeeded. + bool NotifyItemDataModified(vint start, vint count); }; } } @@ -19900,31 +20220,43 @@ GalleryItemArranger namespace ribbon_impl { - class GalleryItemArranger : public list::RangedItemArrangerBase, public Description + class GalleryItemArrangerRepeatComposition : public compositions::GuiVirtualRepeatCompositionBase, public Description { private: - vint pim_itemWidth = 0; - bool blockScrollUpdate = true; + vint pim_itemWidth = 0; + bool blockScrollUpdate = true; protected: - GuiBindableRibbonGalleryList* owner; - vint itemWidth = 1; - vint firstIndex = 0; + GuiBindableRibbonGalleryList* owner; + vint itemWidth = 1; + vint firstIndex = 0; - void BeginPlaceItem(bool forMoving, Rect newBounds, vint& newStartIndex)override; - void PlaceItem(bool forMoving, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; - bool IsItemOutOfViewBounds(vint index, ItemStyleRecord style, Rect bounds, Rect viewBounds)override; - bool EndPlaceItem(bool forMoving, Rect newBounds, vint newStartIndex)override; - void InvalidateItemSizeCache()override; - Size OnCalculateTotalSize()override; + void Layout_BeginPlaceItem(bool firstPhase, Rect newBounds, vint& newStartIndex)override; + compositions::VirtualRepeatPlaceItemResult Layout_PlaceItem(bool firstPhase, bool newCreatedStyle, vint index, ItemStyleRecord style, Rect viewBounds, Rect& bounds, Margin& alignmentToParent)override; + compositions::VirtualRepeatEndPlaceItemResult Layout_EndPlaceItem(bool firstPhase, Rect newBounds, vint newStartIndex)override; + void Layout_EndLayout(bool totalSizeUpdated) override; + void Layout_InvalidateItemSizeCache()override; + Size Layout_CalculateTotalSize()override; + public: + GalleryItemArrangerRepeatComposition(GuiBindableRibbonGalleryList* _owner); + ~GalleryItemArrangerRepeatComposition(); + + vint FindItemByVirtualKeyDirection(vint itemIndex, compositions::KeyDirection key)override; + compositions::VirtualRepeatEnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; + Size GetAdoptedSize(Size expectedSize)override; + + void ScrollUp(); + void ScrollDown(); + void UnblockScrollUpdate(); + }; + + class GalleryItemArranger : public list::VirtualRepeatRangedItemArrangerBase, public Description + { + using TBase = list::VirtualRepeatRangedItemArrangerBase; public: GalleryItemArranger(GuiBindableRibbonGalleryList* _owner); ~GalleryItemArranger(); - vint FindItem(vint itemIndex, compositions::KeyDirection key)override; - GuiListControl::EnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override; - Size GetAdoptedSize(Size expectedSize)override; - void ScrollUp(); void ScrollDown(); void UnblockScrollUpdate(); @@ -20788,6 +21120,7 @@ Ribbon Gallery List namespace ribbon_impl { + class GalleryItemArrangerRepeatComposition; class GalleryItemArranger; class GalleryResponsiveLayout; } @@ -20795,7 +21128,7 @@ Ribbon Gallery List /// Auto resizable ribbon gallyer list. class GuiBindableRibbonGalleryList : public GuiRibbonGallery, public list::GroupedDataSource, private IGuiMenuDropdownProvider, public Description { - friend class ribbon_impl::GalleryItemArranger; + friend class ribbon_impl::GalleryItemArrangerRepeatComposition; using IValueEnumerable = reflection::description::IValueEnumerable; using IValueObservableList = reflection::description::IValueObservableList; diff --git a/Import/GacUICompiler.cpp b/Import/GacUICompiler.cpp index d6208adf..aedd597b 100644 --- a/Import/GacUICompiler.cpp +++ b/Import/GacUICompiler.cpp @@ -8373,28 +8373,22 @@ GuiComboBoxInstanceLoader GuiTreeViewInstanceLoader ***********************************************************************/ -#define BASE_TYPE GuiTemplateControlInstanceLoader - template - class GuiTreeViewInstanceLoaderBase : public BASE_TYPE +#define BASE_TYPE GuiTemplateControlInstanceLoader + class GuiTreeViewInstanceLoader : public BASE_TYPE { protected: - bool bindable; GlobalStringKey _Nodes; public: - GuiTreeViewInstanceLoaderBase(bool _bindable) - :BASE_TYPE(description::TypeInfo::content.typeName, theme::ThemeName::TreeView) - , bindable(_bindable) + GuiTreeViewInstanceLoader() + :BASE_TYPE(description::TypeInfo::content.typeName, theme::ThemeName::TreeView) { _Nodes = GlobalStringKey::Get(L"Nodes"); } void GetPropertyNames(GuiResourcePrecompileContext& precompileContext, const typename BASE_TYPE::TypeInfo& typeInfo, collections::List& propertyNames)override { - if (!bindable) - { - propertyNames.Add(_Nodes); - } + propertyNames.Add(_Nodes); BASE_TYPE::GetPropertyNames(precompileContext, typeInfo, propertyNames); } @@ -8402,10 +8396,7 @@ GuiTreeViewInstanceLoader { if (propertyInfo.propertyName == _Nodes) { - if (!bindable) - { - return GuiInstancePropertyInfo::Collection(TypeInfoRetriver>::CreateTypeInfo()); - } + return GuiInstancePropertyInfo::Collection(TypeInfoRetriver>::CreateTypeInfo()); } return BASE_TYPE::GetPropertyType(precompileContext, propertyInfo); } @@ -8453,23 +8444,49 @@ GuiTreeViewInstanceLoader }; #undef BASE_TYPE - class GuiTreeViewInstanceLoader : public GuiTreeViewInstanceLoaderBase - { - public: - GuiTreeViewInstanceLoader() - :GuiTreeViewInstanceLoaderBase(false) - { - } - }; +/*********************************************************************** +GuiBindableTreeViewInstanceLoader +***********************************************************************/ - class GuiBindableTreeViewInstanceLoader : public GuiTreeViewInstanceLoaderBase +#define BASE_TYPE GuiTemplateControlInstanceLoader + class GuiBindableTreeViewInstanceLoader : public BASE_TYPE { + protected: + GlobalStringKey _ReverseMappingProperty; + + void AddAdditionalArguments(types::ResolvingResult& resolvingResult, const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, GuiResourceError::List& errors, Ptr createControl)override + { + vint indexReverseMappingProperty = arguments.Keys().IndexOf(_ReverseMappingProperty); + if (indexReverseMappingProperty != -1) + { + createControl->arguments.Add(arguments.GetByIndex(indexReverseMappingProperty)[0].expression); + } + } public: GuiBindableTreeViewInstanceLoader() - :GuiTreeViewInstanceLoaderBase(true) + :BASE_TYPE(description::TypeInfo::content.typeName, theme::ThemeName::TreeView) { + _ReverseMappingProperty = GlobalStringKey::Get(L"ReverseMappingProperty"); + } + + void GetPropertyNames(GuiResourcePrecompileContext& precompileContext, const typename BASE_TYPE::TypeInfo& typeInfo, collections::List& propertyNames)override + { + propertyNames.Add(_ReverseMappingProperty); + BASE_TYPE::GetPropertyNames(precompileContext, typeInfo, propertyNames); + } + + Ptr GetPropertyType(GuiResourcePrecompileContext& precompileContext, const typename BASE_TYPE::PropertyInfo& propertyInfo)override + { + if (propertyInfo.propertyName == _ReverseMappingProperty) + { + auto info = GuiInstancePropertyInfo::Assign(TypeInfoRetriver>::CreateTypeInfo()); + info->usage = GuiInstancePropertyInfo::ConstructorArgument; + return info; + } + return BASE_TYPE::GetPropertyType(precompileContext, propertyInfo); } }; +#undef BASE_TYPE /*********************************************************************** GuiTreeNodeInstanceLoader @@ -8671,30 +8688,6 @@ GuiTreeNodeInstanceLoader } }; -/*********************************************************************** -GuiBindableDataGridInstanceLoader -***********************************************************************/ - -#define BASE_TYPE GuiTemplateControlInstanceLoader - class GuiBindableDataGridInstanceLoader : public BASE_TYPE - { - protected: - GlobalStringKey typeName; - - public: - GuiBindableDataGridInstanceLoader() - :BASE_TYPE(description::TypeInfo::content.typeName, theme::ThemeName::ListView) - { - typeName = GlobalStringKey::Get(description::TypeInfo::content.typeName); - } - - GlobalStringKey GetTypeName()override - { - return typeName; - } - }; -#undef BASE_TYPE - /*********************************************************************** Initialization ***********************************************************************/ @@ -8709,7 +8702,6 @@ Initialization manager->SetLoader(Ptr(new GuiComboButtonInstanceLoader)); manager->SetLoader(Ptr(new GuiTreeViewInstanceLoader)); manager->SetLoader(Ptr(new GuiBindableTreeViewInstanceLoader)); - manager->SetLoader(Ptr(new GuiBindableDataGridInstanceLoader)); manager->CreateVirtualType( GlobalStringKey::Get(description::TypeInfo::content.typeName), @@ -8750,9 +8742,11 @@ GuiInstanceLoader_Document.cpp default: Ptr GuiInstanceLoader_List.cpp GuiComboBox - ctor: _ListControl(GuiListControl*) - GuiTreeView, GuiBindableTreeView + ctor: ListControl(GuiListControl*) + GuiTreeView Nodes: array(Ptr) + GuiBindableTreeView + ctor: ReverseMappingProperty(WritableItemProperty) tree::TreeNode ctor: Text, Image Tag @@ -9006,6 +9000,7 @@ GuiPredefinedInstanceLoadersPlugin ADD_TEMPLATE_CONTROL ( GuiBindableTextList, TextList ); ADD_TEMPLATE_CONTROL ( GuiListView, ListView ); ADD_TEMPLATE_CONTROL ( GuiBindableListView, ListView ); + ADD_TEMPLATE_CONTROL ( GuiBindableDataGrid, ListView ); ADD_TEMPLATE_CONTROL ( GuiMultilineTextBox, MultilineTextBox ); ADD_TEMPLATE_CONTROL ( GuiSinglelineTextBox, SinglelineTextBox ); ADD_TEMPLATE_CONTROL ( GuiDatePicker, DatePicker ); diff --git a/Import/GacUICompiler.h b/Import/GacUICompiler.h index e7130674..513779cb 100644 --- a/Import/GacUICompiler.h +++ b/Import/GacUICompiler.h @@ -709,11 +709,11 @@ Instance Loader public: enum Support { - NotSupport, - SupportAssign, - SupportArray, - SupportCollection, - SupportSet, + NotSupport, // cannot assign + SupportAssign, // assign value directly + SupportArray, // assign a collection to that property directly + SupportCollection, // calling Add to add all items to that property + SupportSet, // allow }; enum PropertyUsage @@ -724,13 +724,13 @@ Instance Loader enum PropertyBindability { - Bindable, + Bindable, // a property is bindable NotBindable, }; enum PropertyMergability { - MergeWithParent, + MergeWithParent, // when type check of the property failed, search in base types NotMerge, }; diff --git a/Import/GacUIReflection.cpp b/Import/GacUIReflection.cpp index 1ad41c62..23a15820 100644 --- a/Import/GacUIReflection.cpp +++ b/Import/GacUIReflection.cpp @@ -1205,6 +1205,12 @@ Type Declaration (Extra) ENUM_CLASS_ITEM(Both) END_ENUM_ITEM(ResponsiveDirection) + BEGIN_ENUM_ITEM(VirtualRepeatEnsureItemVisibleResult) + ENUM_CLASS_ITEM(ItemNotExists) + ENUM_CLASS_ITEM(Moved) + ENUM_CLASS_ITEM(NotMoved) + END_ENUM_ITEM(VirtualRepeatEnsureItemVisibleResult) + BEGIN_INTERFACE_MEMBER_NOPROXY(IGuiShortcutKeyItem) CLASS_MEMBER_PROPERTY_READONLY_FAST(Manager) CLASS_MEMBER_PROPERTY_READONLY_FAST(Name) @@ -1482,25 +1488,68 @@ Type Declaration (Class) END_CLASS_MEMBER(GuiSharedSizeRootComposition) BEGIN_CLASS_MEMBER(GuiRepeatCompositionBase) - CLASS_MEMBER_GUIEVENT(ItemInserted) - CLASS_MEMBER_GUIEVENT(ItemRemoved) CLASS_MEMBER_PROPERTY_FAST(ItemTemplate) CLASS_MEMBER_PROPERTY_FAST(ItemSource) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Context) END_CLASS_MEMBER(GuiRepeatCompositionBase) + BEGIN_CLASS_MEMBER(GuiNonVirtialRepeatCompositionBase) + CLASS_MEMBER_BASE(GuiBoundsComposition) + CLASS_MEMBER_BASE(GuiRepeatCompositionBase) + CLASS_MEMBER_GUIEVENT(ItemInserted) + CLASS_MEMBER_GUIEVENT(ItemRemoved) + END_CLASS_MEMBER(GuiNonVirtialRepeatCompositionBase) + BEGIN_CLASS_MEMBER(GuiRepeatStackComposition) CLASS_MEMBER_BASE(GuiStackComposition) - CLASS_MEMBER_BASE(GuiRepeatCompositionBase) + CLASS_MEMBER_BASE(GuiNonVirtialRepeatCompositionBase) CLASS_MEMBER_CONSTRUCTOR(GuiRepeatStackComposition*(), NO_PARAMETER) END_CLASS_MEMBER(GuiRepeatStackComposition) BEGIN_CLASS_MEMBER(GuiRepeatFlowComposition) CLASS_MEMBER_BASE(GuiFlowComposition) - CLASS_MEMBER_BASE(GuiRepeatCompositionBase) + CLASS_MEMBER_BASE(GuiNonVirtialRepeatCompositionBase) CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFlowComposition*(), NO_PARAMETER) END_CLASS_MEMBER(GuiRepeatFlowComposition) + BEGIN_CLASS_MEMBER(GuiVirtualRepeatCompositionBase) + CLASS_MEMBER_BASE(GuiBoundsComposition) + CLASS_MEMBER_BASE(GuiRepeatCompositionBase) + CLASS_MEMBER_GUIEVENT(AdoptedSizeInvalidated) + CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Axis) + CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(TotalSize) + CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ViewLocation) + CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(AdoptedSize, AdoptedSizeInvalidated) + CLASS_MEMBER_METHOD(GetVisibleStyle, { L"itemIndex" }) + CLASS_MEMBER_METHOD(GetVisibleIndex, { L"style" }) + CLASS_MEMBER_METHOD(ResetLayout, { L"recreateVisibleStyles" }) + CLASS_MEMBER_METHOD(InvalidateLayout, NO_PARAMETER) + CLASS_MEMBER_METHOD(FindItemByRealKeyDirection, { L"itemIndex" _ L"key" }) + CLASS_MEMBER_METHOD(FindItemByVirtualKeyDirection, { L"itemIndex" _ L"key" }) + CLASS_MEMBER_METHOD(EnsureItemVisible, { L"itemIndex" }) + CLASS_MEMBER_METHOD(GetAdoptedSize, { L"expectedSize" }) + END_CLASS_MEMBER(GuiNonVirtialRepeatCompositionBase) + + BEGIN_CLASS_MEMBER(GuiRepeatFreeHeightItemComposition) + CLASS_MEMBER_BASE(GuiVirtualRepeatCompositionBase) + CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFreeHeightItemComposition*(), NO_PARAMETER) + END_CLASS_MEMBER(GuiRepeatFreeHeightItemComposition) + + BEGIN_CLASS_MEMBER(GuiRepeatFixedHeightItemComposition) + CLASS_MEMBER_BASE(GuiVirtualRepeatCompositionBase) + CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFixedHeightItemComposition*(), NO_PARAMETER) + END_CLASS_MEMBER(GuiRepeatFixedHeightItemComposition) + + BEGIN_CLASS_MEMBER(GuiRepeatFixedSizeMultiColumnItemComposition) + CLASS_MEMBER_BASE(GuiVirtualRepeatCompositionBase) + CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFixedSizeMultiColumnItemComposition*(), NO_PARAMETER) + END_CLASS_MEMBER(GuiRepeatFixedSizeMultiColumnItemComposition) + + BEGIN_CLASS_MEMBER(GuiRepeatFixedHeightMultiColumnItemComposition) + CLASS_MEMBER_BASE(GuiVirtualRepeatCompositionBase) + CLASS_MEMBER_CONSTRUCTOR(GuiRepeatFixedHeightMultiColumnItemComposition*(), NO_PARAMETER) + END_CLASS_MEMBER(GuiRepeatFixedHeightMultiColumnItemComposition) + BEGIN_CLASS_MEMBER(GuiResponsiveCompositionBase) CLASS_MEMBER_BASE(GuiBoundsComposition) @@ -1780,20 +1829,19 @@ Type Declaration (Extra) CLASS_MEMBER_BASE(IDescriptable) CLASS_MEMBER_METHOD(OnAttached, {L"provider"}) - CLASS_MEMBER_METHOD(OnItemModified, {L"start" _ L"count" _ L"newCount"}) + CLASS_MEMBER_METHOD(OnItemModified, {L"start" _ L"count" _ L"newCount" _ L"itemReferenceUpdated"}) END_INTERFACE_MEMBER(GuiListControl::IItemProviderCallback) BEGIN_INTERFACE_MEMBER_NOPROXY(GuiListControl::IItemArrangerCallback) CLASS_MEMBER_BASE(IDescriptable) - CLASS_MEMBER_METHOD(RequestItem, {L"itemIndex" _ L"itemComposition"}) + CLASS_MEMBER_METHOD(CreateItem, {L"itemIndex"}) + CLASS_MEMBER_METHOD(GetItemBounds, { L"style" }) + CLASS_MEMBER_METHOD(GetItem, { L"bounds" }) CLASS_MEMBER_METHOD(ReleaseItem, {L"style"}) CLASS_MEMBER_METHOD(SetViewLocation, {L"value"}) - CLASS_MEMBER_METHOD(GetStylePreferredSize, {L"style"}) - CLASS_MEMBER_METHOD(SetStyleAlignmentToParent, {L"style" _ L"margin"}) - CLASS_MEMBER_METHOD(GetStyleBounds, {L"style"}) - CLASS_MEMBER_METHOD(SetStyleBounds, {L"style" _ L"bounds"}) CLASS_MEMBER_METHOD(GetContainerComposition, NO_PARAMETER) CLASS_MEMBER_METHOD(OnTotalSizeChanged, NO_PARAMETER) + CLASS_MEMBER_METHOD(OnAdoptedSizeChanged, NO_PARAMETER) END_INTERFACE_MEMBER(GuiListControl::IItemArrangerCallback) BEGIN_ENUM_ITEM(GuiListControl::EnsureItemVisibleResult) @@ -1828,7 +1876,7 @@ Type Declaration (Extra) CLASS_MEMBER_METHOD(GetVisibleIndex, {L"style"}) CLASS_MEMBER_METHOD(ReloadVisibleStyles, NO_PARAMETER) CLASS_MEMBER_METHOD(OnViewChanged, {L"bounds"}) - CLASS_MEMBER_METHOD(FindItem, {L"itemIndex" _ L"key"}) + CLASS_MEMBER_METHOD(FindItemByVirtualKeyDirection, {L"itemIndex" _ L"key"}) CLASS_MEMBER_METHOD(EnsureItemVisible, {L"itemIndex"}) CLASS_MEMBER_METHOD(GetAdoptedSize, {L"expectedSize"}) END_INTERFACE_MEMBER(GuiListControl::IItemArranger) @@ -1908,7 +1956,8 @@ Type Declaration (Extra) END_CLASS_MEMBER(ListViewColumnItemArranger) BEGIN_CLASS_MEMBER(ListViewColumnItemArranger::IColumnItemViewCallback) - CLASS_MEMBER_METHOD(OnColumnChanged, NO_PARAMETER) + CLASS_MEMBER_METHOD(OnColumnRebuilt, NO_PARAMETER) + CLASS_MEMBER_METHOD(OnColumnChanged, {L"needToRefreshItems"}) END_CLASS_MEMBER(ListViewColumnItemArranger::IColumnItemViewCallback) BEGIN_INTERFACE_MEMBER(ListViewColumnItemArranger::IColumnItemView) @@ -1991,8 +2040,8 @@ Type Declaration (Extra) CLASS_MEMBER_BASE(IDescriptable) CLASS_MEMBER_METHOD(OnAttached, {L"provider"}) - CLASS_MEMBER_METHOD(OnBeforeItemModified, {L"parentNode" _ L"start" _ L"count" _ L"newCount"}) - CLASS_MEMBER_METHOD(OnAfterItemModified, {L"parentNode" _ L"start" _ L"count" _ L"newCount"}) + CLASS_MEMBER_METHOD(OnBeforeItemModified, {L"parentNode" _ L"start" _ L"count" _ L"newCount" _ L"itemReferenceUpdated"}) + CLASS_MEMBER_METHOD(OnAfterItemModified, {L"parentNode" _ L"start" _ L"count" _ L"newCount" _ L"itemReferenceUpdated"}) CLASS_MEMBER_METHOD(OnItemExpanded, {L"node"}) CLASS_MEMBER_METHOD(OnItemCollapsed, {L"node"}) END_INTERFACE_MEMBER(INodeProviderCallback) @@ -2005,6 +2054,7 @@ Type Declaration (Extra) CLASS_MEMBER_PROPERTY_READONLY_FAST(Parent) CLASS_MEMBER_METHOD(CalculateTotalVisibleNodes, NO_PARAMETER) + CLASS_MEMBER_METHOD(NotifyDataModified, NO_PARAMETER) CLASS_MEMBER_METHOD(GetChild, {L"index"}) END_INTERFACE_MEMBER(INodeProvider) @@ -2041,7 +2091,6 @@ Type Declaration (Extra) CLASS_MEMBER_PROPERTY_FAST(Data) - CLASS_MEMBER_METHOD(NotifyDataModified, NO_PARAMETER) CLASS_MEMBER_METHOD_RENAME(GetChildren, Children, NO_PARAMETER) CLASS_MEMBER_PROPERTY_READONLY(Children, GetChildren) END_CLASS_MEMBER(MemoryNodeProvider) @@ -3010,6 +3059,7 @@ Type Declaration (Class) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TextProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(CheckedProperty) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged) + CLASS_MEMBER_METHOD(NotifyItemDataModified, {L"start" _ L"count"}) END_CLASS_MEMBER(GuiBindableTextList) BEGIN_CLASS_MEMBER(GuiBindableListView) @@ -3022,17 +3072,21 @@ Type Declaration (Class) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(LargeImageProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SmallImageProperty) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged) + CLASS_MEMBER_METHOD(NotifyItemDataModified, { L"start" _ L"count" }) END_CLASS_MEMBER(GuiBindableListView) BEGIN_CLASS_MEMBER(GuiBindableTreeView) CLASS_MEMBER_BASE(GuiVirtualTreeView) CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiBindableTreeView) + CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiBindableTreeView, WritableItemProperty, reverseMappingProperty) CLASS_MEMBER_PROPERTY_FAST(ItemSource) + CLASS_MEMBER_PROPERTY_READONLY_FAST(ReverseMappingProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TextProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ImageProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ChildrenProperty) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged) + CLASS_MEMBER_METHOD(NotifyNodeDataModified, {L"value"}) END_CLASS_MEMBER(GuiBindableTreeView) BEGIN_CLASS_MEMBER(GuiBindableDataGrid) @@ -3047,6 +3101,7 @@ Type Declaration (Class) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SmallImageProperty) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedRowValue, SelectedCellChanged) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedCellValue, SelectedCellChanged) + CLASS_MEMBER_METHOD(NotifyItemDataModified, { L"start" _ L"count" }) END_CLASS_MEMBER(GuiBindableDataGrid) #undef INTERFACE_IDENTIFIER @@ -3792,7 +3847,6 @@ Type Declaration (Class) NAME ## _PROPERTIES(GUI_TEMPLATE_PROPERTY_REFLECTION)\ END_CLASS_MEMBER(NAME)\ - GUI_CONTROL_TEMPLATE(GuiListItemTemplate, GuiTemplate) GUI_CORE_CONTROL_TEMPLATE_DECL(GUI_CONTROL_TEMPLATE) GUI_CONTROL_TEMPLATE_DECL(GUI_CONTROL_TEMPLATE) GUI_ITEM_TEMPLATE_DECL(GUI_CONTROL_TEMPLATE) diff --git a/Import/GacUIReflection.h b/Import/GacUIReflection.h index 6bfe0b9d..3b5959a4 100644 --- a/Import/GacUIReflection.h +++ b/Import/GacUIReflection.h @@ -261,6 +261,7 @@ Type List (Compositions) F(presentation::compositions::IGuiAltActionHost)\ F(presentation::compositions::IGuiTabAction)\ F(presentation::compositions::GuiRepeatCompositionBase)\ + F(presentation::compositions::VirtualRepeatEnsureItemVisibleResult)\ #define GUIREFLECTIONCOMPOSITION_CLASS_TYPELIST(F)\ F(presentation::compositions::GuiGraphicsComposition)\ @@ -279,8 +280,14 @@ Type List (Compositions) F(presentation::compositions::GuiPartialViewComposition)\ F(presentation::compositions::GuiSharedSizeItemComposition)\ F(presentation::compositions::GuiSharedSizeRootComposition)\ + F(presentation::compositions::GuiNonVirtialRepeatCompositionBase)\ F(presentation::compositions::GuiRepeatStackComposition)\ F(presentation::compositions::GuiRepeatFlowComposition)\ + F(presentation::compositions::GuiVirtualRepeatCompositionBase)\ + F(presentation::compositions::GuiRepeatFreeHeightItemComposition)\ + F(presentation::compositions::GuiRepeatFixedHeightItemComposition)\ + F(presentation::compositions::GuiRepeatFixedSizeMultiColumnItemComposition)\ + F(presentation::compositions::GuiRepeatFixedHeightMultiColumnItemComposition)\ F(presentation::compositions::GuiResponsiveCompositionBase)\ F(presentation::compositions::GuiResponsiveSharedComposition)\ F(presentation::compositions::GuiResponsiveViewComposition)\ @@ -333,7 +340,6 @@ Type List (Templates) #define GUIREFLECTIONTEMPLATES_CLASS_TYPELIST(F)\ F(presentation::templates::GuiTemplate)\ - F(presentation::templates::GuiListItemTemplate)\ F(presentation::templates::GuiCommonDatePickerLook)\ F(presentation::templates::GuiCommonScrollViewLook)\ GUI_CORE_CONTROL_TEMPLATE_DECL(GUIREFLECTIONTEMPLATES_##F)\ @@ -785,9 +791,9 @@ Interface Proxy (Controls) INVOKE_INTERFACE_PROXY(OnAttached, provider); } - void OnItemModified(vint start, vint count, vint newCount)override + void OnItemModified(vint start, vint count, vint newCount, bool itemReferenceUpdated)override { - INVOKE_INTERFACE_PROXY(OnItemModified, start, count, newCount); + INVOKE_INTERFACE_PROXY(OnItemModified, start, count, newCount, itemReferenceUpdated); } END_INTERFACE_PROXY(presentation::controls::GuiListControl::IItemProviderCallback) @@ -888,9 +894,9 @@ Interface Proxy (Controls) INVOKE_INTERFACE_PROXY(OnViewChanged, bounds); } - vint FindItem(vint itemIndex, presentation::compositions::KeyDirection key)override + vint FindItemByVirtualKeyDirection(vint itemIndex, presentation::compositions::KeyDirection key)override { - INVOKEGET_INTERFACE_PROXY(FindItem, itemIndex, key); + INVOKEGET_INTERFACE_PROXY(FindItemByVirtualKeyDirection, itemIndex, key); } presentation::controls::GuiListControl::EnsureItemVisibleResult EnsureItemVisible(vint itemIndex)override @@ -1010,6 +1016,11 @@ Interface Proxy (Controls) INVOKEGET_INTERFACE_PROXY_NOPARAMS(CalculateTotalVisibleNodes); } + void NotifyDataModified()override + { + INVOKE_INTERFACE_PROXY_NOPARAMS(NotifyDataModified); + } + vint GetChildCount()override { INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetChildCount); diff --git a/Import/VlppGlrParserCompiler.cpp b/Import/VlppGlrParserCompiler.cpp index 5787e387..4bd8133a 100644 --- a/Import/VlppGlrParserCompiler.cpp +++ b/Import/VlppGlrParserCompiler.cpp @@ -5714,6 +5714,7 @@ namespace vl { List pmRules; // all rules that need to be rewritten Dictionary skippedRules; // skipped RuleSymbol -> GlrRule + SortedList protectedSkippedClause; // a simple use clause that belongs to one of the skipped rules Dictionary originRules; // rewritten RuleSymbol -> GlrRule ends with _LRI_Original, which is the same GlrRule object before rewritten Dictionary lriRules; // rewritten RuleSymbol -> GlrRule containing left_recursion_inject clauses Dictionary fixedAstRules; // RuleSymbol -> GlrRule relationship after rewritten @@ -5814,7 +5815,7 @@ FillMissingPrefixMergeClauses true, ruleSymbol->isParser, ruleRaw->name.codeRange - ); + ); newRuleSymbol->isPartial = ruleSymbol->isPartial; newRuleSymbol->ruleType = vContext.clauseTypes[clause.Obj()]; vContext.astRules.Add(newRuleSymbol, newRule.Obj()); @@ -5851,24 +5852,30 @@ FillMissingPrefixMergeClauses } /*********************************************************************** -CollectRewritingTargets +CollectSkippedTargets ***********************************************************************/ - void CollectRewritingTargets(const VisitorContext& vContext, RewritingContext& rContext, Ptr rewritten) + void CollectSkippedTargets(const VisitorContext& vContext, RewritingContext& rContext, Ptr rewritten) { + // when a rule + // is not a prefix of a rewritten rule + // has no direct prefix_merge clause + // has only one clause which starts with prefix_merge clause + // skip rewriting it + // if the only clause of a skipped rule is a simple use clause referencing a rule to be rewritten + // the name it referenced should not be changed in RenamePrefix + + List lastRemovedCandidates; + Dictionary candidateProtectedClauses; + for (auto rule : rewritten->rules) { auto ruleSymbol = vContext.syntaxManager.Rules()[rule->name.value]; if (vContext.indirectPmClauses.Keys().Contains(ruleSymbol)) { - // when a rule has - // no direct prefix_merge clause - // only one clause which starts with prefix_merge clause - // such clause is not a simple use clause - // skip rewriting it if (!vContext.directPmClauses.Keys().Contains(ruleSymbol)) { - bool found = false; + GlrClause* uniqueQualifiedClause = nullptr; for (auto clause : rule->clauses) { vint index = vContext.clauseToStartRules.Keys().IndexOf(clause.Obj()); @@ -5879,14 +5886,9 @@ CollectRewritingTargets { if (vContext.indirectPmClauses.Keys().Contains(startRule)) { - if (vContext.simpleUseClauseToReferencedRules.Keys().Contains(clause.Obj())) + if (!uniqueQualifiedClause) { - goto DO_NOT_SKIP; - } - - if (!found) - { - found = true; + uniqueQualifiedClause = clause.Obj(); break; } else @@ -5898,11 +5900,67 @@ CollectRewritingTargets } } - rContext.skippedRules.Add(ruleSymbol, rule.Obj()); + if (uniqueQualifiedClause) + { + rContext.skippedRules.Add(ruleSymbol, rule.Obj()); + if (vContext.simpleUseClauseToReferencedRules.Keys().Contains(uniqueQualifiedClause)) + { + candidateProtectedClauses.Add(ruleSymbol, uniqueQualifiedClause); + } + } continue; - DO_NOT_SKIP:; + DO_NOT_SKIP: + lastRemovedCandidates.Add(ruleSymbol); } + } + } + while (lastRemovedCandidates.Count() > 0) + { + List newRemovedCandidates; + for (auto ruleSymbol : lastRemovedCandidates) + { + vint indexStart = vContext.directStartRules.Keys().IndexOf(ruleSymbol); + if (indexStart != -1) + { + for (auto startRuleSymbol : vContext.directStartRules.GetByIndex(indexStart)) + { + if (rContext.skippedRules.Keys().Contains(startRuleSymbol.ruleSymbol)) + { + rContext.skippedRules.Remove(startRuleSymbol.ruleSymbol); + newRemovedCandidates.Add(startRuleSymbol.ruleSymbol); + } + } + } + } + CopyFrom(lastRemovedCandidates, newRemovedCandidates); + } + + for (auto [ruleSymbol, rule] : rContext.skippedRules) + { + vint index = candidateProtectedClauses.Keys().IndexOf(ruleSymbol); + if (index != -1) + { + rContext.protectedSkippedClause.Add(candidateProtectedClauses.Values()[index]); + } + } + } + +/*********************************************************************** +CollectRewritingTargets +***********************************************************************/ + + void CollectRewritingTargets(const VisitorContext& vContext, RewritingContext& rContext, Ptr rewritten) + { + for (auto rule : rewritten->rules) + { + auto ruleSymbol = vContext.syntaxManager.Rules()[rule->name.value]; + if (vContext.indirectPmClauses.Keys().Contains(ruleSymbol)) + { + if (rContext.skippedRules.Keys().Contains(ruleSymbol)) + { + continue; + } rContext.pmRules.Add(ruleSymbol); vint indexStart = vContext.directStartRules.Keys().IndexOf(ruleSymbol); @@ -6982,6 +7040,11 @@ RenamePrefix RenamePrefixVisitor visitor(rContext, ruleSymbol, syntaxManager); for (auto clause : originRule->clauses) { + if (rContext.protectedSkippedClause.Contains(clause.Obj())) + { + continue; + } + // !(a; b) should be moved from rule X_LRI_Original to left_recursion_inject clauses in rule X if (auto reuseClause = clause.Cast()) { @@ -7013,6 +7076,7 @@ RewriteSyntax // find rules that need to be rewritten using left_recursion_inject RewritingContext rewritingContext; + CollectSkippedTargets(context, rewritingContext, rewritten); CollectRewritingTargets(context, rewritingContext, rewritten); // create rewritten rules, rename origin rules @@ -7374,7 +7438,8 @@ ExpandClauseVisitor name.value += L"_SWITCH"; for (auto&& switchName : switchNames) { - auto value = workingSwitchValues->Get(switchName); + vint index = workingSwitchValues->Keys().IndexOf(switchName); + auto value = index == -1 ? sContext.switches[switchName].key : workingSwitchValues->Values()[index]; name.value += (value ? L"_1" : L"_0") + switchName; } } @@ -7435,6 +7500,7 @@ ExpandClauseVisitor { // make it optional if necessary auto opt = Ptr(new GlrOptionalSyntax); + opt->priority = GlrOptionalPriority::Equal; opt->syntax = result.Cast(); result = opt; } @@ -7459,6 +7525,66 @@ ExpandClauseVisitor FixRuleName(result.Cast()->name); } + void Visit(GlrLoopSyntax* node) override + { + Ptr syntax, delimiter; + + try + { + syntax = CopyNode(node->syntax.Obj()); + } + catch (CancelBranch) + { + } + + try + { + delimiter = CopyNode(node->delimiter.Obj()); + } + catch (CancelBranch) + { + } + + if (syntax && delimiter) + { + auto loop = Ptr(new GlrLoopSyntax); + loop->codeRange = node->codeRange; + loop->syntax = syntax; + loop->delimiter = delimiter; + result = loop; + } + else if (syntax) + { + auto loop = Ptr(new GlrLoopSyntax); + loop->codeRange = syntax->codeRange; + loop->syntax = syntax; + result = loop; + } + else if (delimiter) + { + auto loop = Ptr(new GlrLoopSyntax); + loop->codeRange = delimiter->codeRange; + loop->syntax = delimiter; + result = loop; + } + else + { + result = Ptr(new EmptySyntax); + } + } + + void Visit(GlrOptionalSyntax* node) override + { + try + { + copy_visitor::RuleAstVisitor::Visit(node); + } + catch (CancelBranch) + { + result = Ptr(new EmptySyntax); + } + } + void Visit(GlrAlternativeSyntax* node) override { // alternative syntax converts to alternative syntax @@ -7566,15 +7692,28 @@ DeductEmptySyntaxVisitor node->delimiter = CopyNodeSafe(node->delimiter); result = Ptr(node); - if (node->syntax.Cast()) + bool syntax = !node->syntax.Cast(); + bool delimiter = !node->delimiter.Cast(); + if (syntax && delimiter) { - // if the loop body is empty, it is empty - result = node->syntax; + // if both are not empty, nothing need to worry } - else if (node->delimiter.Cast()) + else if (syntax) { + // if only syntax is not empty, it is {syntax} node->delimiter = nullptr; } + else if (delimiter) + { + // if only delimiter is empty, it is {delimiter} + node->syntax = node->delimiter; + node->delimiter = nullptr; + } + else + { + // if both are empty, it is empty + result = node->syntax; + } } void Visit(GlrOptionalSyntax* node) override @@ -7634,6 +7773,7 @@ DeductEmptySyntaxVisitor { // if only first is not empty, it is [first] auto opt = Ptr(new GlrOptionalSyntax); + opt->priority = GlrOptionalPriority::Equal; opt->syntax = node->first; result = opt; } @@ -7641,6 +7781,7 @@ DeductEmptySyntaxVisitor { // if only second is not empty, it is [second] auto opt = Ptr(new GlrOptionalSyntax); + opt->priority = GlrOptionalPriority::Equal; opt->syntax = node->second; result = opt; } @@ -7742,12 +7883,15 @@ RewriteSyntax return ruleName; } - Ptr CreateRule(RuleSymbol* ruleSymbol, Ptr rule, const WString& name) + Ptr CreateRule(RuleSymbol* ruleSymbol, Ptr rule, const WString& name, bool applyAttributes) { auto newRule = Ptr(new GlrRule); newRule->codeRange = rule->codeRange; - newRule->attPublic = rule->attPublic; - newRule->attParser = rule->attParser; + if (applyAttributes) + { + newRule->attPublic = rule->attPublic; + newRule->attParser = rule->attParser; + } newRule->name = rule->name; newRule->name.value = name; newRule->type = rule->type; @@ -7757,7 +7901,7 @@ RewriteSyntax Ptr CreateRule(RuleSymbol* ruleSymbol, Ptr rule, const wchar_t* tag, Dictionary& switchValues) { - return CreateRule(ruleSymbol, rule, CreateRuleName(rule, tag, switchValues)); + return CreateRule(ruleSymbol, rule, CreateRuleName(rule, tag, switchValues), true); } void AddRules(RuleSymbol* ruleSymbol, Ptr rewritten, Group>& expandedRules) @@ -7787,7 +7931,7 @@ RewriteSyntax rule->name.value, ruleSymbol->fileIndex, ruleSymbol->isPublic, - false, + ruleSymbol->isParser, rule->name.codeRange ); } @@ -7801,11 +7945,7 @@ RewriteSyntax if (sContext.ruleAffectedSwitches.Count() == syntaxManager.Rules().Count()) { - syntaxManager.AddError( - ParserErrorType::NoSwitchUnaffectedRule, - {} - ); - return nullptr; + CHECK_FAIL(L"vl::glr::parsergen::RewriteSyntax_Switch(...)#Internal error: This function should not be called when there is no switch used in any rule."); } RewritingContext rewritingContext; @@ -7935,7 +8075,7 @@ RewriteSyntax vint ruleIndex = rewritingContext.combinedRulesByName.Keys().IndexOf(combinedRuleName); if (ruleIndex == -1) { - combinedRule = CreateRule(ruleSymbol, rule, combinedRuleName); + combinedRule = CreateRule(ruleSymbol, rule, combinedRuleName, false); rewritingContext.expandedCombinedRules.Add(ruleSymbol, combinedRule); rewritingContext.combinedRulesByName.Add(combinedRuleName, combinedRule); } @@ -8343,15 +8483,13 @@ ValidateDeducingPrefixMergeRuleVisitor auto secondResult = result; auto secondEmpty = couldBeEmpty; - if (firstEmpty || secondEmpty) + couldBeEmpty = firstEmpty || secondEmpty; + if (couldBeEmpty) { VisitPotentialEmptySyntax(); } else { - result = nullptr; - couldBeEmpty = true; - if (firstResult && secondResult) { CopyFrom(*firstResult.Obj(), *secondResult.Obj(), true); @@ -8365,6 +8503,10 @@ ValidateDeducingPrefixMergeRuleVisitor { result = secondResult; } + else + { + result = nullptr; + } } } @@ -8930,107 +9072,12 @@ ValidateStructureRelationshipVisitor , protected virtual GlrSyntax::IVisitor , protected virtual GlrClause::IVisitor { - struct Link - { - GlrRefSyntax* ref = nullptr; - Link* prev = nullptr; - Link* next = nullptr; - - Link(GlrRefSyntax* _ref) : ref(_ref) {} - }; - - struct LinkPair - { - Link* first = nullptr; - Link* last = nullptr; - - void EnsureComplete() - { - CHECK_ERROR(!first || !first->prev, L"Illegal Operation!"); - CHECK_ERROR(!last || !last->next, L"Illegal Operation!"); - } - - LinkPair Append(Link* link) - { - EnsureComplete(); - if (first) - { - link->prev = last; - last->next = link; - return { first,link }; - } - else - { - return { link,link }; - } - } - - LinkPair Connect(LinkPair pair) - { - EnsureComplete(); - pair.EnsureComplete(); - if (!first && !pair.first) - { - return {}; - } - else if (!first) - { - return pair; - } - else if (!pair.first) - { - return *this; - } - else - { - last->next = pair.first; - pair.first->prev = last; - return { first,pair.last }; - } - } - - void CutAfter(Link* link, LinkPair& l1, LinkPair& l2) - { - EnsureComplete(); - if (!first) - { - CHECK_ERROR(!link, L"Illegal Operation!"); - l1 = {}; - l2 = {}; - } - else if (!link) - { - l2 = *this; - l1 = {}; - } - else if (link == last) - { - l1 = *this; - l2 = {}; - } - else - { - auto a = first; - auto b = last; - l1 = { a,link }; - l2 = { link->next,b }; - l1.last->next = nullptr; - l2.first->prev = nullptr; - } - } - - operator bool() const - { - return last; - } - }; protected: VisitorContext& context; RuleSymbol* ruleSymbol; GlrClause* clause = nullptr; + Dictionary fieldCounters; - LinkPair existingFields; - LinkPair existingPartials; public: ValidateStructureRelationshipVisitor( VisitorContext& _context, @@ -9041,28 +9088,6 @@ ValidateStructureRelationshipVisitor { } - ~ValidateStructureRelationshipVisitor() - { - { - auto c = existingFields.first; - while (c) - { - auto n = c->next; - delete c; - c = n; - } - } - { - auto c = existingPartials.first; - while (c) - { - auto n = c->next; - delete c; - c = n; - } - } - } - void ValidateClause(Ptr clause) { clause->Accept(this); @@ -9070,6 +9095,19 @@ ValidateStructureRelationshipVisitor protected: + void AddFieldCounter(const WString& name, vint counter) + { + vint index = fieldCounters.Keys().IndexOf(name); + if (index == -1) + { + fieldCounters.Add(name, counter); + } + else + { + const_cast&>(fieldCounters.Values())[index] += counter; + } + } + //////////////////////////////////////////////////////////////////////// // GlrSyntax::IVisitor //////////////////////////////////////////////////////////////////////// @@ -9078,20 +9116,7 @@ ValidateStructureRelationshipVisitor { if (node->field) { - existingFields = existingFields.Append(new Link(node)); - } - - if (node->refType == GlrRefType::Id) - { - vint ruleIndex = context.syntaxManager.Rules().Keys().IndexOf(node->literal.value); - if (ruleIndex != -1) - { - auto fieldRule = context.syntaxManager.Rules().Values()[ruleIndex]; - if (fieldRule->isPartial) - { - existingPartials = existingPartials.Append(new Link(node)); - } - } + AddFieldCounter(node->field.value, 1); } } @@ -9121,19 +9146,61 @@ ValidateStructureRelationshipVisitor void Visit(GlrAlternativeSyntax* node) override { - auto currentFields = existingFields; - auto currentPartials = existingPartials; + Dictionary currentCounters(std::move(fieldCounters)); node->first->Accept(this); - - LinkPair firstFields, firstPartials; - existingFields.CutAfter(currentFields.last, existingFields, firstFields); - existingPartials.CutAfter(currentPartials.last, existingPartials, firstPartials); + Dictionary firstCounters(std::move(fieldCounters)); node->second->Accept(this); + Dictionary secondCounters(std::move(fieldCounters)); - existingFields = existingFields.Connect(firstFields); - existingPartials = existingPartials.Connect(firstPartials); + vint firstIndex = 0; + vint secondIndex = 0; + fieldCounters = std::move(currentCounters); + while (true) + { + bool firstAvailable = firstIndex < firstCounters.Count(); + bool secondAvailable = secondIndex < secondCounters.Count(); + + if (firstAvailable && secondAvailable) + { + auto firstKey = firstCounters.Keys()[firstIndex]; + auto secondKey = secondCounters.Keys()[secondIndex]; + auto compare = firstKey <=> secondKey; + + if (compare == std::strong_ordering::less) + { + secondAvailable = false; + } + else if (compare == std::strong_ordering::greater) + { + firstAvailable = false; + } + } + + if (firstAvailable && secondAvailable) + { + vint firstValue = firstCounters.Values()[firstIndex]; + vint secondValue = secondCounters.Values()[secondIndex]; + AddFieldCounter(firstCounters.Keys()[firstIndex], (firstValue > secondValue ? firstValue : secondValue)); + firstIndex++; + secondIndex++; + } + else if (firstAvailable) + { + AddFieldCounter(firstCounters.Keys()[firstIndex], firstCounters.Values()[firstIndex]); + firstIndex++; + } + else if (secondAvailable) + { + AddFieldCounter(secondCounters.Keys()[secondIndex], secondCounters.Values()[secondIndex]); + secondIndex++; + } + else + { + break; + } + } } void Visit(GlrPushConditionSyntax* node) override @@ -9152,25 +9219,8 @@ ValidateStructureRelationshipVisitor void CheckAfterClause(GlrClause* node) { - Dictionary counters; - auto c = existingFields.first; - while (c) - { - auto fieldName = c->ref->field.value; - vint index = counters.Keys().IndexOf(fieldName); - if (index == -1) - { - counters.Add(fieldName, 1); - } - else - { - counters.Set(fieldName, counters.Values()[index] + 1); - } - c = c->next; - } - auto clauseType = context.clauseTypes[clause]; - for (auto [key, value] : counters) + for (auto [key, value] : fieldCounters) { auto prop = FindPropSymbol(clauseType, key); if (prop->propType != AstPropType::Array && value > 1) @@ -9584,6 +9634,14 @@ ValidateSwitchesAndConditions VerifySwitchesAndConditionsVisitor visitor(context, sContext); visitor.ValidateRule(rule); } + + if (sContext.ruleAffectedSwitches.Count() == context.syntaxManager.Rules().Count()) + { + context.syntaxManager.AddError( + ParserErrorType::SwitchUnaffectedRuleNotExist, + syntaxFile->codeRange + ); + } } } } @@ -15541,6 +15599,7 @@ namespace vl::glr::parsergen writer.WriteString(prop->propTypeName.value); writer.WriteString(L"[]"); break; + default:; } writer.WriteLine(L";"); } @@ -17868,6 +17927,7 @@ SyntaxSymbolManager::FixLeftRecursionInjectEdge void SyntaxSymbolManager::FixLeftRecursionInjectEdge(StateSymbol* startState, EdgeSymbol* injectEdge) { +#define ERROR_MESSAGE_PREFIX L"vl::glr::parsergen::SyntaxSymbolManager::FixLeftRecursionInjectEdge(StateSymbol*, EdgeSymbol*)#" // search for all qualified placeholder edge starts from inject targets List placeholderEdges; for (auto outEdge : startState->OutEdges()) @@ -17902,7 +17962,9 @@ SyntaxSymbolManager::FixLeftRecursionInjectEdge // check if placeholderEdge does nothing more than using rules if (placeholderEdge->insAfterInput.Count() > 0) { - goto FAILED_INSTRUCTION_CHECKING; + // EdgeInputType::LrPlaceholder is created from a left_recursion_placeholder clause + // This is ensured by the semantic + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Internal error: EdgeInputType::LrPlaceholder edge should have empty insAfterInput."); } for (vint i = 0; i <= placeholderEdge->returnEdges.Count(); i++) @@ -17922,23 +17984,15 @@ SyntaxSymbolManager::FixLeftRecursionInjectEdge { if (outEdge->input.type == EdgeInputType::Ending && outEdge->insAfterInput.Count() > 0) { - goto FAILED_INSTRUCTION_CHECKING; + // EdgeInputType::Ending is created from accumulating multiple EdgeInputType::Epsilon edges leading to an ending state + // EdgeInputType::Epsilon always have empty insAfterInput + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Internal error: EdgeInputType::Ending edge should have empty insAfterInput."); } } returnEdges.Add(returnEdge); endingStates.Add(endingState); } - continue; - FAILED_INSTRUCTION_CHECKING: - AddError( - ParserErrorType::LeftRecursionPlaceholderMixedWithSwitches, - {}, - injectEdge->fromState->Rule()->Name(), - lrpFlags[injectEdge->input.flags[0]], - startState->Rule()->Name() - ); - return; } // calculate all acceptable Token input from inject edge @@ -18258,6 +18312,7 @@ SyntaxSymbolManager::FixLeftRecursionInjectEdge startState->Rule()->Name() ); } +#undef ERROR_MESSAGE_PREFIX } /*********************************************************************** diff --git a/Import/VlppGlrParserCompiler.h b/Import/VlppGlrParserCompiler.h index 0321ed5b..26ade4d6 100644 --- a/Import/VlppGlrParserCompiler.h +++ b/Import/VlppGlrParserCompiler.h @@ -104,7 +104,6 @@ ParserSymbolManager /* SyntaxSymbolManager */\ ERROR_ITEM(DuplicatedRule, ruleName)\ ERROR_ITEM(RuleIsIndirectlyLeftRecursive, ruleName) /* Indirect left recursion must be resolved before */\ - ERROR_ITEM(LeftRecursionPlaceholderMixedWithSwitches, ruleName, placeholder, targetRuleName)\ ERROR_ITEM(LeftRecursionInjectHasNoContinuation, ruleName, placeholder, targetRuleName)\ /* SyntaxAst(ResolveName) */\ ERROR_ITEM(RuleNameConflictedWithToken, ruleName)\ @@ -135,8 +134,8 @@ ParserSymbolManager /* SyntaxAst(ValidateSwitchesAndConditions, condition) */\ ERROR_ITEM(PushedSwitchIsNotTested, ruleName, switchName)\ ERROR_ITEM(PrefixMergeAffectedBySwitches, ruleName, prefixMergeRule, switchName)\ + ERROR_ITEM(SwitchUnaffectedRuleNotExist)\ /* SyntaxAst(RewriteSyntax_Switch, condition) */\ - ERROR_ITEM(NoSwitchUnaffectedRule)\ ERROR_ITEM(SwitchUnaffectedRuleExpandedToNoClause, ruleName)\ ERROR_ITEM(SwitchAffectedRuleExpandedToNoClause, ruleName, expandedRuleName)\ /* SyntaxAst(ValidateTypes) */\ diff --git a/Import/VlppOS.Linux.cpp b/Import/VlppOS.Linux.cpp index 5df8a392..ab3da025 100644 --- a/Import/VlppOS.Linux.cpp +++ b/Import/VlppOS.Linux.cpp @@ -107,7 +107,7 @@ FilePath return fullPath == L"/"; } - WString FilePath::GetRelativePathFor(const FilePath& _filePath) + WString FilePath::GetRelativePathFor(const FilePath& _filePath) const { if (fullPath.Length() == 0 || _filePath.fullPath.Length() == 0 || fullPath[0] != _filePath.fullPath[0]) { diff --git a/Import/VlppOS.Windows.cpp b/Import/VlppOS.Windows.cpp index ca0b5cc4..9784684c 100644 --- a/Import/VlppOS.Windows.cpp +++ b/Import/VlppOS.Windows.cpp @@ -105,7 +105,7 @@ FilePath return fullPath == L""; } - WString FilePath::GetRelativePathFor(const FilePath& _filePath) + WString FilePath::GetRelativePathFor(const FilePath& _filePath) const { if (fullPath.Length() == 0 || _filePath.fullPath.Length() == 0 || fullPath[0] != _filePath.fullPath[0]) { diff --git a/Import/VlppOS.h b/Import/VlppOS.h index 6c9e688c..62069695 100644 --- a/Import/VlppOS.h +++ b/Import/VlppOS.h @@ -1950,7 +1950,7 @@ namespace vl /// Calculate the relative path based on a specified referencing folder. /// The relative path. /// The referencing folder. - WString GetRelativePathFor(const FilePath& _filePath); + WString GetRelativePathFor(const FilePath& _filePath)const; }; diff --git a/Tools/Reflection32.bin b/Tools/Reflection32.bin index 0b6819653fb3d2235db7ad3092d60775bac1261e..3896c0b52ab8c493987d85b28807c177c1c6257f 100644 GIT binary patch literal 945410 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�Jtv{x1H?qK9(6$Z2%fyB*mZUYDQ9}-RA9X# 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 literal 936261 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

hQx?iAsmBHjsEg>mn#J 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

    *k!gUY@h(j+4)5zRj3~oT?t%(fRm3z*S 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

    8;C2)X*7-8eces5#8s)?acFpb> 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 I0=|m=ADK5rTmS$7 diff --git a/Tools/Reflection64.bin b/Tools/Reflection64.bin index aa34da920ca38143205aeb717c870163d1b7880f..12676f792fa973848a12869699f1083a1a0e0fe6 100644 GIT binary patch literal 945410 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�TIda_wIP`@lVG;Pf4P}}&UM$$Taxdv0^^;o_;AsEIj4P4R@M(qW0i)N>Nwb;v6impH~@twM|zNia2 zFO_OQ5AlW{j7h$I3IKfX>j;!O<+OrPTp+vRdWA0HVueaj>hN(Y8Fu%c=}{n32cGmI z+0I}%98Bd%)TlqT(ZqyI^Z}x_38>-;uG^7Cuh5>pmB@=M2^s-9}yGgMrQJ2a0N2&O=P%kx#t|o zCbN2aA_?)9B<1rdwDJ--g$Hg4ye~oO>|gNDy0XbAv_9RFq`oLB-sgLEW&NmFIOOGt zg(wOBVU=)(qZ)gF#|xmtb?a(SoGUlFqh2zEv4AJ^Wpx@i8ofs5W>J|1gTlvwxF=yL zaCT$OQqQu_PBRYVV^tv0HWQNJl`v7L`gDAVvt^&)*kT!nTA0&-qbPKkfW!iBBe2`CHyh-WU}YOWvPT=zpiY{*W;#xs0owjx;35rg4k?68Hwr0o6j@m z46d@GC}wnILb`dPo)*)YgU`a>$1`Ul_Oi2ZXfz&ijS*{$tU0%dO3n_;dekiuTHxgv z3#|d?`s!uR`PtFI=egN*-cF_P3?ETk>844&Ye|1TOeSZ>ldx$aLwTRYfk0#jc%uq5 zMH8;u*rm_txHP=GEAcDo-`AZC+;L{&W&ZABJ5d#=a(N95+jrD zDv*$RHpe&9Pd;so`^k1Pf>5q76k`ay9%T(d$0d=zP|Ci`M5KBxkka3O5>i{^`J|UP zIz_zoqXgqd{xt7(uFMfEWHD)hBF*T}bO%ETC72IfWeRb3`d|tmT(=4>T!{jLZAM@$ z<~c;r5Z`?Y_jyWF`fwC!6+$Qe*0M8yDM8-ezOF_5*(`r7MGjwuWW zI0lr4Qp-hP7t3V<>ZqiefC4y34?zjPSFjK?MH8-DBh`CJ8^feK`9QC8L*4Lf;}6K9 zgn?xNcV~Pf;ogIc(Yq_JCwo?YY>V~@j>Fa+G!aodgMqb&uB(I5Vr+47_(filu51#} z?{nMyrv_;v-klV0>%ZL7aAiwjy^L%K?kxFW23n3Q4DP_=MbY8<{{DvllPe>d$hO}P zq+Ya@^+MmBE9(orj6$h=J+)4S5W=i;{dN~cFf|>VQkSi=-_O%vuD2p!XbYu2`<<DKG8`CYWSh^&k^tZFI?~Jw-SClR#}fI%qm~*sk^eiC!~?4@ElVC z+29^5G|1|xa!cUxqUdnl4%^yzGn4orGK9dBUb*bu?z>I@jBJ+cW|bIXfM~57u&}vq zg|AnhKYBcH8wQuU^J&5=0M;fu2Fw`ObEcYxuL_}uS>w7D4(E7Q7^V9sEDdO4Dbhe@ z2Q_!<0e|rz8TOBf8VxJ)%s0-go~Oxzl3%h$#GfIYc=1^~U<@|5)|(ze;jB9fi~i@) z{^QGidOz`k9G61h@p+1!7qmI9$>#l0jBA=~7}r=P!R3x9tp*-=CD&~<(V^AZsT};1 z6KTEcnDpOZO9G1^VNLe}!mxjY>rqoa)0OYh0>DiMVBFQ38?d1yXFQ)wr`_!Y6mCT+ z#Mh6}g)7gFZj7%d7#QI$kX!Ecq%K~#sW6tX7`bj05sx7nc9zvVpRyW=umV6dMH8-D z<0HMusrVgP`9-@upz|G8fN+jXkL%X-K;uAhIH?ZBq04=Zb|;x#8~4wSu8u35*cqS; z&j{C#l}SK*AJyCt(3HDE-5LV^veuj^nsQgDTcSEfyE`CeFCgl{W%W=vl3l0@I*-CJ zVT^MMYpY8IyiP{SbsJue81P*LnCr(5aMUf1n@Rjjk}%h+NO<7=&y|s7yrQKA_wMTU zaI&`c2~+n<)kn+!Ul0deTRWS2Y)LBk3QyFP?JRLr#}RVF(rBXHc!f)@z~g1p;kpfw zcoLq45fQ&v7?9BvO}Ji86vozoD4K#O*UO3iD;fdNLj_LJ6iv8ZP85;00jFpRqFlE` z5o27r-tV6zhQpAjjWk>BKugf7@Wy0(lBvn0yI~9n)T+c9Jc}})+f9?njC)6b%PsD# z^rh0ch%^_QiQCg-F4|REd^)999x_DhMzV#Ns!GCjYVACXr}xL#p|XCZRk4z~JGo19zT>H2lx-rgx1 zcSC&A%njZ7)`Hs>Ht@8!h}`)%*{HmdOzd#E$&C;(VOAaUgqh~*6_AXdQ*s**^Ma0Z zup04lHI-QfUi1XLFOY1L6D_c>*Ge+s>FX zy-r!Bg~6w?O`|o+up<|KfY0Cuvm=e2Lp)$DoZS~K;NLbp(c27}2=*>sy+28=ySE5f z2#2%l$9N#F>~}pG%LXUJ_6cUxGN#XO$fky4?7X}&eXV__^!#PVk+5*vV5q=YowGia zjFsL#NUz&`s5z{@6IJZm%i!(7W9iMFl(XC0WsB_fq2{ws_95SuVy`cj)6S_05D$$zVeF$RJQIB^hDJ@nl3#e75%FO2(Zw z1*9hk_sUA(vie@%7*9|8JPGT$LC`u`C|Oher^vCqx@ox2-uZf2R8y#NM-0h?&>-zG-`BIlgJCK=n9XbdKaoP)vSpnvz9 z`g&@=dhhl0zMa_<==X!#n(J5J*HzWk{rV---cUC!Mn&DMAS1bM+8gSo#i*#8)nX{T7NeqWR;Cf^roEwVT8xUiS;a=EoA!pfX)!A5X2lz!ZrU5_rp2hJo8?1=$|sGIhN zx@j>g>Sl==p>En6>ZZl0sGB8fgt}>OsGAm}qHdO`5$dMBp>A4?in>{%MyQ+ihPr7n zD(Ys58li658|tRTsHmGIYJ|FJZ>XCVqoQt>s1fR>y`gSejEcHhqDH8j_J+D?F)He2 zi5j79+8gSo#i*#8C2EAaX>X{T7NeqWmZ%ZxroEwVT8xUiS)xX$oA!pfX z#uia=K_C0BcB?k60PJiZVbcI!)@1^{fxpl`l6M!lA!wXqS{UbOm|g8f_ws)74+6BT zPAr2E4)O9hxZgq3InHi(*wb+@2_JX3?kD5L%gB>9*%L;&Zx_2@ue)pKuz$&V;S*2u zg5zcSgE-01;W?dihe`i2KKled;*JT{FTea;`6n+U5$QjlwAA}~PeENECcR8|ei=%k zp9OK4=b_jItpB07Bvf8~H(hp*!kC_sV#l&>@734e9ot=R&C45&@#YrHxuIwJR>yt) zm!^lkr;rgS!T4cf5)-TZ!n&Qxc|mMn$DyBw^33}$H7+EsL(<9K3vEI9jXkzSoEG}- zrMu}CFU&NK)a{n}0$`?VeWV{1c4RiW>~;9rBoY|>-6$A5Q0RLZsolj>+AjCuly<9mZ1B$9+-Han2$q-W zMSWTDq1q#iCU5ofbBwbp_=rm;Shtl;=f3}VSFO?NBBM%sl@)B8ojlrXi{#=k6rE*1 zwat#;^XNgrLIft#%0u>o#0&Pp{AeOzDcR@n3%^kvA25Y$-@W1#FGn#_ zmjH(`I+QQRI7Yz-8N#|9qx?jb`xtM1M{Vwa`y@yI!@T#Dg~L;#*%<#EihhdEFBT4E z7{CJ(5)+-U!`!|~0&Q6q+KkVII20yXx4zVcc~i69t?w4!#d{PlT>4(X3l{3Fm9&k} zdU@f3e}24*^%WWLyBGI%=Q@q-130-;^QZ=VE^rv|>=&fblAWG04tVfElCo}-RL?m6 zn|eoTo%ubKr=m_=jz7Gd@7aN9HWKw40?I#;Xf8&Y+07U?8*zH^yQzI>q1LGvb_J30 zax9nUc_y@>SV8(1B2tnF;f&CCH|HiG)82T0tn|%Abseo7`lkKr(l@yrp>Nu+E`4)x zJwo5KUtRh$iMemuuP%Lakv-yl(|&d7n>rDpZ`!XeeRHurLf^DsUHax?RfN82zq<5! z*&Ca-O#9WPf2+jGW7@ASeRJ_Wl02sU>eAno=zY_Eb?KYsZN&Sg{W9q5_p$X~ckkas z;or)^>t+}aFGuj_pU2$$E9^;tsp$GVIQ5-C9@o7bX$TZBlojv9gmI8LUl_joSehTd z-Pij82i)g@hwzv_%|Fy=E#|!@&ID5*)UD68Tk}I84SyPF@J1R|46)1gS@6C_v)*$< z!1gP?PLJoDj?-4RlgtARMQq6qLcs>ODZopD<91AXIcZ=HG9ETDFarm}!Atkftt;}L zflf`gD60v#aTH{il@jF;pKqho<^^EeDKp*x1(Ve9{A^F zEj)Cc==N%zoNEIn5A|YYl%q|*N^w{HaJ|#54?fLWnB2NY{V5VNLh(v~U+Tts*v_b6 z!c;^}bXQ~lfh%T7)OWq@X&0`-5QFq9QAlsNeu&dUeJ|6VcEPG`tc-N5FFYQmW4(I5 zP!^tECJZYRnE1sUa~@^}1@rPt&#Jr(s$p(gM0xdDRa<=;RKv@7bVy#+)}L`+riI~! z(Rv?R2jll4Dk=`eA*|c$uxNST<%8l-HU+&H^nS|+#i0OUy%_ZV%Lm1w0A;-x^a0BU z#i0OYy%_Y8<%8l-fU<5ub-B(y&sHP!FnQ?Hnjt@^xL0g}4(oQKB7U3HNC`*BgsEGr zOqj&Kmkc^I&M+!5v>#QJeZn5!G>!w}vtBi74h+^`1aHuqli>>(QF zglJ}s@Bu3uDZE{>R2JS5s(@=$>fOQE}TPPd$2 zZHU+xwnaRMdh2gncWbk@KQDcY)8rPkzOwPq8(4eVdDe3?q+oEcpKYIc_*h0u`@Eso zb9e67=j$|NSE|o_`}@c`+_vQN@Vx_#?ge`vRG-V)802nUuCFd0sI}&s?!kR{vY7i6 zfTaoRLzsZ00K&R;xW0qHRf_ZaZ1)^nsKYHUM3#tAbBb%@+@_weZfVemtNKqTH(L95 zcG?T>E3d~u22&Qixn!?**vbX(K-vx*qzKMFS2`%i7OJ3zaX(d5V=Ec_vaLfWuy>1fY8Iy>sU1MT?(Vg>;o z@gQgrYt}7mDkgo_S>}WKOW1iP6XKb#Q8pc@&mG)=)C5E0Ani_@$mnOdH!A!9cKBi9 zM&Yl1D4~Z?;E0e7JUQS9G_ctc9}D_=Cz7@A>~lNq#Ra(GrR;2ALRxIZ2`yN+F{dx{ zWdjFQ8$@1~PJ}Bi>y`*DF8$TtL-k(00}>`F^m>2grj7?uhOlml>&tsCnt^yWaKQfM z>_U@h@qwd9fdkrA?=5y(0C)uhAO#?8vhcLdy6q}3yzEa}fJb!Ty-`hC!9LdT;RiSr zKa6Fpb9JyT(>L~Q>-tAn8*}Wm;t<8p0dzH8T1$|*uSC=YW{3qK2!a^vwwpA)`>7ZB zuS&<~Ok~~S)7WsHaHRu9=hf*9xW}wV8T3ad7`!H(0r#2pD1+TgeDKaIMrqZLWGL1j9Dds( zz9iFINba1$Ejwz>#zX2&=>viiy0mohv9Or4t-vQOOFll{UhL%_6z@ws`nneGUWuL< zQWzy(7WKq*-wfM$PxP8_Q?2FR+2Zb=>g{Rc1Po!xuPN?Kq2BW|(GW8pEMnBLZgVQm zo?d0K(citg%HG!_3;CTH>PvIjx<=ZZaL@* z=sEbw3IxWKHawxRZb{RcG$Xz7nBVeY>Y<)uIq&6=Tk<+Qjn)BI=(1VPMxICN5JQFg z$hz(GwI!xrB2Y_4$D24^Og)T`4sxv8GhoMtia455!h?r(>mOQyDe70O%;27~ZhKB8 zP4#?9e!O`F@t$w6`)80tjhKE7r$o!TQAI+vT6UjNELpZRzUh5|_bCfBDl}hOOeW_lR9D z)9)yWLY+-1xs=G52Nd9>%M+|${zvBJWh@rpI!K$!>{QnO*qp2v4u}0+9@b@Bv3wJ+ z4zaLeud;sm<@Xe0UREs_StZp~tbFL+8eY= z(fnN}UHJHIT;I(Kv_%26Qx>f-eBboC{_Rl+-WISB`lR1Y0okUH$3ZvV!5Hu!r1j#1 zsb8#H5_&nmt(%>}Y&qKK_JT7JI#>=DAIEYAV${a~#d?&sFsog0lgEc9?ZhTDkGYXLVr{ToPAFD?D7+QaC(*_|e6TaKodxdj(;hV z1{FWxfO1z%BB$M9;DsYCnQu}P)`4v#OqP?GQe*zz`A@yjoCHjWYRptOBL2DdS+II36X`gwI;ZGxk*#*nKg<`JZE^R!g@u| ztW{*-5y-K7W}PAv_YAM}S+D4s^@bm$xJCS=r5$r)5@t)o~P4_Ox!bE%UG}InHfa}9)TRYXJ!?d zxMz4}znk<3~}Chi#?J*-zGvrdtLM8A<@chSm z)HAtNUr~S`Agw^!3vv4P3R8RBFTo618t!Y0i(qh>Rmyy~<7-GGuZ_Y_#Q#o(Sr%YXL;%URnf7UCyW;$(R-~r8gRW@l8L*+n~ zmz(LdNb!JXy{d1HtBGM+PYm%aW?!&g)i-Gq!-$LDw4NAHf+1}w-a_tUy{d20CWcXu zskDiK>kI2ueREt*3~2*=#7R7(CkD#U@vm-X(k6yc`$kU;7}$_@fb-T6>lKrD=J?8+ zw29$slv=D;_04fLG0db*3?nYZGkRj6FyxGI-fd;QYNXO8hRP$ne2uP?7y}#94)76^ z8FLPodnPS~N9-A$!3YoJ*u!*OC2-oprgE6D3+!dMt!um|-TEeePr=_^@1MC$V!=~0 z>(L^o-vzVJzf)}$IPmp?BoCki7)Go|Jy2dgCUJMUvlE|lcuSu3ie#n~8T1#@mXFHQ zak*!v6`8naE~6%_M?I4}Vig7W0dfTX;5N_3*13K$b^zv~qiGOx>$jdpaQmzQBS0po~$e_QF zHY+%Bj9$bBCV}Rqy#;m}|2&juc%zv0A})b+ZiP@3KpJuc{?KF8kCG&GJn9C1tVbOH zG%sy5Ch@|lp`yWg$$CXHQ;H1w3ps+glzV1ck%^CB&P&##p3zC-3%Npv3m~m4entdY zPeS)8nuLz)58%go6umqUlXzUx*#QKkbp@|=S+7WDDv3)8Oec|H=NY}oHE?!0 znHfcf(lKYo<4Y&37jX%s%gM|tGN2D>b0!#-CPpt}1C!-s)+jP#@Qkh`ek?0=@P)Ll zz?&h^g7qR#1ecY&ViMm>aCYLZ;OT|+ie#n~8T1#@dM5Nxni#!^4NR7MW?GSndxobM z){D3V(&c1klE`paSg%NCR*``(A;%u3HHu6;OuW0ydek$yt5-z4U;IXZ> z8a(hYikJOQ|0Vh1bczS-Q9oeU-OE0{dj)#`ofJt#LV%qe|DVx|nDm=ZOz>(T3H?T} zB9iqY@W8Tsluq7M>^eK-@SN=lUI?*Xk<64LL*33H6MBdq&>R&+zQedPOob ziVSr#$1}XS$9hFFvq@w|yxF%#ky-UHtyN^=VdBcpdc`oUOCobQ@ilr88yuH60Vgrw z377RE0)eTWaFXzOf?++1&viZt{U-3ENYTFI8 z3sD7cIwVSgqmhLECxpg&6g?7+TZsLkqQTo^tVhYPD-=5QGba!?rzWgN(Ic+7)xZ^m zltYGRGS(}SnMxuv;+bt)k%)BG9z~BN$!!KnLjBB160TOP zS0po~$WXU)$W*RlxNPjDy-{ImQn87h8sB0o@jxXO#C;5iUD(h8!Go#q7e%{QE zmreQjP74&DTd^JuR5_V3$Elo*4pV%1vnN=u=$SQ1Im2@^>lMkYO(HYmxq4j^naXoQ zdCsg?Wa2r)QvmA~!*q@!Glr_CFO2p#VK;O-?ITGfj*!z>k9s8c>?esrzlh{;VoJH77DK_z(l#`iJWa6IT=l5B!=$TnXX4O5jCW*|g$$6|-^vqgChLCawHy2sfE0S5K z$gFyp)+dqSu&`dyGv_EWV+a$^jS4*;m)lbl)+@SV^3TM+vqMNZ8GA=+!g@tAQ;JMH zF5jdktXCv6t;kTfb3DV&GkOsln2ywcMTWYaLxw%UdJ&gEx}419l#q6IR-Me0A_HGS z+WRj<577fOg8A6&XUxA;USsdX&rw(qS*d+gcQbxIZdqimo4i1Sg?S6G7Ia4meE=cxf+~ zPOg!Ec6JCUCmMWS%z8yKQ%Phhp9@A#lha(o-ZOfUZ{YO^8||C;u(^zyuwFzau#T{q zPKs2pid;jVp%>9Xy9k>Z#fCbblf-=f$9fT&(2MdBHD=e8lS%Uo7gyFRdS+II36X`g z3#Z_2Bng^AFJgms<(^ri$i#DoCuG)(xP(rWlUb|CfIj5dJ+n@ciF<}~g!PJ^S+B^z zBaqfJm8XRAFrAY`Cd6L&8okIh=wI&AWxN!4>5_y#i;jq7y{P}eQRUH?TnEPvvvgTY zWLU3C=A0BVyl!H>BAKZqG9w-|(~8Whmy;Pqh7uxYr7&X8%qlW*&+v5@)}uMYV_Bic zU9p~;u%3+m=PBdmPK3^S6g^T&?vg@=2P^9p$xJ1YshpybrS;@-#U{-+TWC5_6GZciJGRuo;)+>5uR*@l}=a8v9pvuFvCW#DZEbA3L zvo?v$h!c2S5}6T)X?+qI4h!oQ!*os(naW|xJ?$7T1zxHoq2HMXIqMapF?lx>@L^6n zDo3NdoJ=V)@k09zYQlQdGaMI%PEOCMtaqg*tVhwyT`{>KB`$X-GOSl5Go{Fo({nt- zdnT+`Br~nZP`7i)j5uRw6q&eZcqzbo)HAuoOi@^Me@t!?3a%?-@JIO=no?xqo*D5R zJbgTonMoou;xROPJds(W$ix$vFSf8A9nj?oyjGEkCor$mSg%NCT@snfIg?xJ#!G?M z2TAA~DPXKeqj5Dc;APK$4kZbmw{cjH!k1^}`+H@CSe9=y&{>ZBr>C}^GRgb zc}6dC4V+#crWr*hUd{N9Z`O;r1k$-|AjZesKzHZWaIW=fHXrv|T7Suf%eNSBkDR%AdQ(k2O)57sM^nNeiop5e0_)+>^k zRb=21Nb8vq*S0l^Ox!bEK3K2lnYD@xJOVj(&#X%#6GnybHF}Y2(7*E0v|f>khl$s$ ztQT2u9>VWcSOm0K3j)$tR$i!2Ft32yb&qOXc zY1hQraALAvmCcm$4W&fR^jx{rMtn1^*u;Iqd!MXFeN&#pnoQg^JRh@Ok<3hzXLvql zy&{=eMJDc<%1KimrZtL8JZE@5X1$_k)+#cq?wNH-WH@12ujrZeNn}QxGv_3csXSAk zAgSPGcz|KN6nL?agnk~SGV2vnWAc2l@9Yp#&K$%|j9$bBrpwF8lp+%^C%iady@*R7 zT~20NkpX>3yQ1U~%X&pJGf8AdJc4HxnRu9Z{$stOXVxT<;VFmpie%O*GRPH3n=>O0 z)4C)wVN?iTqZhdb{VN|$>lK+*&zW-+8PJEcVKSaTQ;|iE3CCSa8hWYTB9=sg-x|hx zltk`4m_#A;2mKZa5v9QMU=sRY07fM1QS|csoZKOHogG42g?Uhsi4PW@_gJs!nQ294 z)jcz#$izLvQw{4CJu|Dw#62_OYQIL2iF=0UJ=QCFX00N#>YiDr$izLvn>?&XJ(F8# z6@|Dzcko72fq|ja<_MII5uts(=DK#tur>lB%|XL!Cp1r1cC>Kde_IbB-bt z_Y997)}v%{r)Nb0et;Z-KX`ghLca%yiDW(MfbtPMc~7zH>=07U^vtQidPOo*Nn}P` z+oqGqu=9*w%2_eMmceMjWO!Nn~zK&SSlzXVxk* zgp@OyxXQC0C6im*6a@qYasfGd$_AUePn_ z6&ZL0(t0MiTbdZXhz(4Zhv}U0lJVDn{C{4m>p)2)__`14MGgs`%UvTRQQ$>B>ro24 zMo2>6mAP>6f2>E*Pm^Q4%z2^Xh4RnN&H$wUm(5S^I_nk5Oer$)k;}6%>lMjND>8A< zjJVp*B$44r8okIh=x2G(%qlYRFmXX;y@*R7T~20=A_Mx6Hi1VRrnQPp+%vpq%zD%_ zTv!x3TmWfZu?PPolJzKhd0Zwh7Q4<4A+5s6hawY?3uh?nQO|H(6nfkh7f}<|qv(;i z+&d*M_aZW^S0po~$i(Bq1)lXNnb=9;am7aahN6%&fGQWZh;OFH>znc%)@0(Y;qqhj zqP&6WaxybXp5cuQ){D3V(&c1k6&cWnv{L{t-&n6mW=#^A${AelnYBq|g1g0eMlW&= zoLx?4ogy=ax>rtSy&?npkTz#V9Hw)|OD6a1Fo}Z647g5YQKE$7t|1M*^f&C+TfHO# zBM!*qeFq(pzk;yYai8#S{XbZbdZRp5C+{!zogG5TnG?C3v0jnPR1%pHhiO`oiB}Xp z(_lU78D8Nk^mttEM@?9dqDPYCl0lNhUBQb;)+>^kQe>#xIT_1IZS*2GFkSAMX+6a8j^dk<64LL)~75;iJgJlY}ce>rv0-E}s>JG5CY?Gzon#5oA5;fJmO!2YE_J zIjJ#EO<1o;W=fHXrv?ua)}v%{Q$tap&gS?dtRvt=IwVR#Uw=HWvHw8R{jXP_-v@h_ z+f~OcuDlfF*`hvo>CY2^+llfIUhb*w-P)d8?506HM=U%~Bw`aFZXo~QWw?OXUbtkL zU5dKx`hw@B##>(ZqHvKRv|rdbJMfJBl9Mu=rL0#ZGo{FY1fR&s;`LSTEudI#Et$Mv(!1$gz87R*|7@=j05pj98C)hG!s!4i`XLSD+Z71?y4t zYs!&cZfYMoRBO$556ExsVAzGU44y?UV*Q13=!-?7LI%?(%RhLzX|dCB8(6MX?5ypt z2OfiZDQ$D&@G#=R`itaH;}Mv=sr=z3>Q=2&J5=x0JC_s?8^%FQgmps*KY&>7r4?7e zM-nc88wobW;c7?|cPJV|+O%OWux{}215B0|l*uGAd{+?bz&3I?GE+%p*m*`bEaV4} z;ewKcjxh>QUa?mIbS(2Z=#<{8eBZl2=VHlYe-*NE{F_hFH?1;6?is$+d&R)7e3n zAZ=%P7n${nWTq4us)#v7lNUIwS0pp7$iO3z)-xmC;+{F4$jmA-s~)B`iVVU7IrcEE zRb=9x;VlQ&qX~Svbkxh*J~!2$SFg?2JKat0Qd+Iis&^C}_ylqUzR@R7d+Yn!o%-tX zIYIjBWq2J}l1sQG8oek)@bcB=4=)d7!AZhDi;{@-BKW|Qr_&^KOhf1l>rwQ`)N@D- zJ3G|R@mKpPMF#zav_mEM7d=2z=tZtUyK>J=D>8A5 zax&A34Cq7Jj5VG>Q;|iE3CER_nNeiop5a9+>lMk&CXwMMqgaoU$(?Z(1@d&x7z$2C zFzApd1zpU1IY~laAT-va=;f&~*+s90DJPX(QBGz`k%{LiPb#ce^vtv(Lopadl9YR9 zMv;kohDR*x6+JVXM21H!>lMkYQDov_;@tt(E0S5O$gFyp)+sV^&y0AtV7(#}_YB_v z$9gnOxm90Li2I{*spG1jgx(>7tVbPini%jByYHR)T>H>MqglUXa#8--*&(Ey+Sa2c ztXCv6rO3ongKHV<70FC1GSuxH&#?21Uc?5b%fmFI$izLv^B?O)TmtFbL8B;uH00RV zv6Dvx+I0maAT1fL?W{-rQ68KrMJ65`PE*z^l9^Uy;1NjcnGx6e8AT@U8LsWDM?J%Z zR-wZMkk%E4@lPUIkD`|+$>cGy>+BHH_{+(ZA`_1bmk-t}dS+UYS#{6MC^B)+@YrR& zqGx84$nbKS^@?QHC^D-arnSctnRSZHs^`plMP>|Px|U#gsa_?LM1pS$U_F|+xyzL# z3S5$nUc><|=BXzM{V1%6WW5MHu#8MS4;8!44k6`CJrAKKtXCv6rO2%MV3}5AsM|T7 zVdojW$Tcus9;O*ZChnOpP!raRxCGMWWF{Xbq=(9xzeEp3vR;wQlp;gj&IuDw!mLNh zuSjM}kr_j9$~`l!$WXV(AEp^aChi$t zRkI!qQ*PQS3ajpq$w#K7EuW;b9`#3grc5P~8S#1Yv?3GF6h1FzJ?a@=tSIz&l01T% zupUJ(kIUqv#J;l=cLmpW)+>^kQe>#x<1Z)EicH)yTs~NjdPXOSzwtt$$6diUTCkpk z?yr<4q5m}zWIc)=Nzum)Qk0O!pA}PzOgt-ie6Sw%jLr%l7lj^o#iOYS>rwPbT>f?t zmod1aoXnIWL){*Kl1wWyanEq6V7+3PW)zvYXU-4>vNrYty@px!C_#189cVNR)fcq8>iiKea$pKoKEpz zJ?e*3BqO{$kl}}$>XQOeIW>7Tkc9p>(hCUIqi!f4rIU{n!_E#lJZA#tg%Il%$xJCS z=r5$b6j?bg<(`>VWa6IT*`M`_o|#c(;1Njc8Quh7y&{>}Br+r36j-Ckta_N%Dl!NU zqzw~ScGfF~XEFl<7)B`US3pdF4oJeuOaJSl7lZ( zM*N?_x_%{-914M#emg4(9W?@=tVhwWAxC=I z>ld~p0uQBS0qbc5I<>ij^-dCj9uZ(YiNNk&r_tKqeWEzU9ZS}8mhI1m??tlyb@~0< zA~BJM1TckP!JBF2QbPNN=-&~Ecn0ey$Uk^_QKNojM|-~B3aPQy5zIk0ZH;0JKZtw(M?97P5I+enZpoh?JGauyk!4F&-}04X;c zo+SV38pqR}J57 z4`>%*GnK?<)V`TcVl!&r%p|cHwQpvV*o@jYYm(TE+Ba(zn|STx9XZyEhE(urdF@L} z;`@3a}Jk#CM|{86RcPC%$PH{+%r0XQMn=Qe94|*y`pE zt3E$o27Gd#gpQRzh7jw~7~o{kOF6OmJ2B>trTJqSr?x*3V?PoJe~0-_=V3U}3lvu3 zGMg432;t{{kh6 z%!upzbP|~`BoJFT5jw)c679;vG?PST#GaW=A~RyotVtp>V$ZBiBExF{);U#zK3vYM zOCnP_OgMq|vVWKJ1?ML*;O?^?y3c>W9oLmVyxiyB&b71QugJ^NB#FvDz@$jlnL*HT z94}3h&@n~980!Iz|G)uy*4bTe*5`VSb_;#De6TXW>~lHjh97Y49zRUno^INLjs|wF z;G4*B1V~<44&_dSM9f)Wg+2_klHkdj^{WVhtBbsrFbf2<8^Z!CP#CxoJ+eOF$(r@6 z#(Xf`0xNJD#x2Z&brTQ#fNq{9e|U*oB07TwRuUPG3G2W%5@d9Y8i(AsdA7QNpG4uE zFeQ?81C1YW9P-A?K81GEy{Uh^B(xtwuKuG?bc`j@z&U5bl=FafblXVS^!ecb^D^Yc zV4S7**u>-XLTbV~JYghU6Je9)n@}vp zy3q{{`C&*l)5N#q;Wi^v4l5#P)tu^DyV%qFqnA;fxB->gYugP9MpWW6ez zwMlG79jSFmZ20;u>s5WTK8ek!eREC{n=n!(ag1K%93)!##E@2QI54aiaS5caC#<}* zQ|7du7{DKL?8R?7ZDJU4+DxZKY7rn>S9P`pYZu}6X6v~dLjhr!P0SAm@ctjHpDfTOjyP_(P0YY)n9VBYz`EgrAHYdpD+nuZw~3jY zUodPWkaFw!V7oM_+nigh8xr^dWQw|-oOdv6B#?6R?rHL`?kGtbG|w4W98=Z}G=6~1 zT+a_SBo!GP0cn?l=M!Jnfo&vAmXn!EBEw5R)(r{#FdUibBr=uP80DUsNg^}i)z@qi znGt(tO%jn00 z(&cK_&k*Fo{^=0QsxS~3X7b{hne{V;z)eJ6hh3l@oXyS(-Z+?FsdAQBy{Sk{`=JQn z2QSU?rwoZhX&i_j5X$SxA6{xC6V_q8%3)+3;6{Q??p!lijH#ZB=Wt-o`h-Kux*>rd zV6!L)$>D}!BY~9L?ZHau8Pd)jk0T)MVCIz%>xKk=fXQ+)Q%Pia<-0qi)BEwTV>%cY=WO8HlEcsV= zR6I?%|EwEm`~V8M{urzQ6d4==Y1aTe&9V+`BVn?f%v2JY%9Bg(5;b^cYBGt<9VnEn z8<*e*xF*6T%{PqBI>3z_lFjsS<(rw~ip}hC#b(WM#b#|1o3QedtTehwU-@CkEMAwy zX4Lg&eG(f!{bIeyHNl6GdUK9qL!~X}ocQz9g!L$!@`)j>-0-Z#dX!ALYo^mChT!ng zB=L0G#4u_$X^|T7keW`L7j87-o*EiD4!!Z#Xin zSB+HK#87#Fmk+7qip-cNsdCSx%~2x`Q`!_&x$>2JCT)h|brtK;;Z#m0ZGyTTow=|c zC8M|a<_^^74sLXhfvS@y%#DzCjyysXSdUWBo8cLS^EPZ4F9ZE7Y{p<)uhwkLjh6&& zC-5>O;kV@v)|-u1eY`|)Gp3grkqcYy!Qk=pFnMv&xbtF3NV1oDy00bd@3a?NdWcZ| z=j<==TZ>tb4v{4Zni26Fx=DFaxuR z7j)enKFe_dU#(<4O5*B5-^&fzOER7#zo?gFpo_L%e+>U5lJ(t^&xQw%ySDt{<;KNc zuiX+iC>m%BX=(5(l=TaV24>BW#yM9o1A$>KP4U$*)-M(U_ZEq>r$FEa(m5}2k5Kr? z1_fpqLL3OzO+fGioP4JI;Ux(9S6t)=X_&iaI4G=xfsvqusClU=$tC9%4VWQ;A3(+q zoaf3vxt0=Tw9TpF91qq3XC!RqIwM@Mn^a_Q1f(54Aq%C6(G3gv0Vee*?!Wj*MsX4i zP6*bESOmIU&y&!RKIjwcQFOif4euX$UU2CUN%3)Di)8&0Dr12Xjyp^K@Dd{=R1wQ* zm_%g`tOpMK2RP-r<@xfj?x6TsVMx{)Iq0Ae87qnmj)1gdh4-FW58(U62C4yz)K9^mN@92a3To#dNQM`|XC4JR$@ z%cY=CddL zGshL1*(5fj&YLw!Y<@bm}TMY4EZ5}Q#+YJCzLjtuMM zk%2m-Z_Y_#Q#n%Q6GK|L;aQ3GfiLJUxTc&;TD7U1HRWW|ip_|_lvZm-?3po_n({D> zxzd!ANh>sbBM$2{h6d_zqbaS<@K9!bfKGpbj6QKySKE_{9ba8%ouCIQNbrek68Z~Z zMI`G3IQk36X&0!g?MWo~>N@KLJy1d7O7e%7wM#{D&CJ^@?nN)}7?`5J@+|KindSW> zv)oxx%U2V(czL+yKAu}<{i0M~>qPD>wz@AtAP2h-2x$1MNcaJNKu+)rJfI_2hB#Y( z9kM_q>oAFCltTj*4e)@qm%Hiec)wRQ9+B%wHKG|DCiEAv4;)*_Zel#x4G^m}_K^vo$$IkG*FNmDkAx29jK^dj>bl(R)jGWuwXP$y zuj59^Hg~V-(O0cx66g+OAG%T2QLqsSTO7ZNe-g>M$vymlaFV;)jXb(!2y6KijyQ877|kuO~0C4p219 z54HOh4fJHop@U3eH_GoW=@k0EQNY#^IfQsp@d}dlsFQV4?F~-|Z1VT%ClSFJ4}#8ml!&g?d);$9N$A{d)}!cp zqRl?9odnOFWjzY7JHM|sS5HFc0nU09T@SQI_ViE^K0BNBD8BB!KdVVXe>pNvBi@0*01^Wzxi z9i5K;1$S>ApjV$#oBa(Hz_p=cGI&z?w7q>eH8?F7D z8}4TPUb}PbUGi_kY{@<{)=#|+&}`3T`@Zi6K+Xxx`{dssOb_q_8t9t{57oO}=gKns z$rVd?V4>Y@_>Jo_fcJx#Nbofh?Q{pWW}iClz6ZxHYoFmBbY=k^X*I+&3j*NCI!xl< zpAbufCF$O)A6oq`z8Bm@vd&$6Qml(QQTDm7X78-^4!lo{yWpc<1=!?F#HW_L^r!BA z%WlO%bYbw{{@$?H?GY^YGN6A(Z*mGC_vYy_cj1?_4$8=uX2LH2rm(YmogIip$Ef;Znr(x zsP*de{bj*N05k{+4zsh%zvG`ovi>q=z#i2Z?dzsOH;&|z^70hpd))QUGUIQdp1dMv zT>EfyeP3;{=~BVXEnT;A`!_M>*0!`t8e*VwH(wQFqARDH<9hXu!jF3K)iLuNq7>t= zi5bsXmLiAL+dNR3!lj|`1G7WjCpOWlS^vfVzcR2AF7w=1MHbP z^|}}Udhca+1-Z;R&pNMt^HLsIMlF-TU1O9-V;N=E%_-lwW zX4GDEl69EGzrQ2aNqwPqTX%cAHt+UmIG~{iFw5!kPJ+3D^`P-@dxPWy6Tt8AC-S_?MymhLm0pXEA7j8yW<`G92P4C<% zWB9sr{(N1bo6hmd=~FS|X8fjD|8&f{u9jPl*5?*`epTUDuKy(t8)o71-589Hkb5&h zZ?XH?67!!!tVI4SX8u~z&`U{jUyQybKMzxkt|})K*AR(f5$fn^V$4gy*nO<)cAqyb zcDn6Oz#7Z|azIY0`V9U_Bj96N6Jy5px!7)Ze}Y@?+^YU~E-lNV<`<-1M{V`&<7+}$MKh54NMo0o$(5cBI8Mr=$hHSb^LT4tWJ^b9e( zzR3KEg5%{Tw_o1d*>1FYWe`6FGm&SC>2r!8^aIO!AZ%;(LlVGp208cVEC%60y`(?c zsN3!CItUOs5&0SQ=Y|4tCx${h{rJo#x2xGclwFbDS)2DK1OY0iH$Q<1kvC!p?u{Pa ze#Q^Rhgp5&`ZYjVzp*J zt0dNMBj}rpSez)fz3j8t(Vj2OgYSWj$UkM%@Fd!42)_jF-}UxG`R8Gh;e3JE!BBwE z$>1S;LYD#Xs$jbq#;GK_5LUXn8tiSmH(ww6Q3-!GAI$L|;IAi!W_@38MUCrm=q~>r zSXt{B$zJx_3nOEmJsJGtm2|p|DJJy1oCGvN#-R*48gNWk)VPW1idv_buBdG}Z_VDU zaTJTs6>+$>d~8K6OLds=^5_&6u`5D)iRtN)nLai;*2h+swT|LZEaq3l)!Op06}7CV z@{MhO&UnFszwY$&l5+K8)QLfxP(qgcfp(|LA6}~S6uIWLqEPxCW_6}8;!f%Fg;7JP zvxX5s=?!LCyN>`x?^9w0JOUU!Y>xh7kgb>`ke?IDs~&Cn*os0_f~eQae}>nI+@bKrReyIOv%sAawM>)&zt>y^wA3=J>cjgTv9Tc5Z0pD1t>&F{fJ z=e+$z@^26qNCq#NWW0g~y83Ux!`ge={Y?=<9tBXFHYqePZ_Yw&R}ul{EkKz3Kyc32C=E_#JAj-#11=ZxGbvj{7S~ z<;qLtm391eqz_*93siScd(VOTcDK`X)shJFAb6mRvKo&z_(-pN-35kTr`_D` zUiMLIUabV>w>Vm4@I3#4c6xs554G%>vEAA8I@cH=p*^H6Djh~tnU}pRuQ_++Wzp6Yk!J{=_8Mg17f{hgrZZ$-7Vj#?WlF!qc~+4yq;=^ z?S&!?9jUF&_K|J=LBN18xB(o!S&93%DAqXvI)MVjIyT*5=|S8*3_CQ?^PpR?EF)S6 z1>(UB1&D%Zfx2S^AL57!j#gJ}FBW0wZun^R&)v%)P9#tE#Ps1J2tDQE9bqt%*N1Bn z06cFbdaVKG-P1rd_maRe03J5RFn$1lcG6(YQwEW|=F#)X;E|wB{rL-1f;&?HB}khB z{N7>KAHs3s-s+iJQOWM63QPuPYQ;?WIw0#06(;|{j9?P??s_?3a$cjir{3-LZzxoR z%wYHd?1=nJ!THA`JiUdwspdXDEhmBjB&V?OiQvP?_?ZG8BB$Nk2kGCyvY}J2r2suV z2IOyu^Z$9-2innS^|AbZU>O$nIkMy3|NRwVohAPeI<;i_$~@<=Qc)feL(v0$(}6~F z-krm#ZlG=;5ymsKfB<~OI?pVRq+Vk91z+k?u*I+E7HiGsF}YC&*7G(Ecv1D&F(jSu z=Qi7WYt8<~M;Qp``=eqYdVgh`d-}WMmg4(v=K{>5rn4|A!)B&aHLhA-_or6R|zT*GMQ60zC%q|{~JMndJzk~pVZ$K3;4s# z5@-zfvHrJ=i!{Xnx{U42-p$)_4?WSK&j~D-md6UvGZ+v+I)8TgH!|1fM=>ovj`6v} z`qI}@9_P8ca^SzArs(YyeAXWy!u&2GF zz1SU0FgaPkrRs?S^-P9D7U=U!E`>wbf0EdJR*`*u*3xiiEZJk6Crg}MDqv0lpY#h& zxd^AMBmy{k>GsX8Q(~L_k7PFz{nh2Qw%BXCcf8kYz4PnGHn)$oRuoB3^4OtUQ2>3S z?|10RjQ2uJFo6<^xWw#5BW2}(+4~-QGxOVZE}u~qCKI;8L)`&#K-aHyVh!yP68A!j{)CrYyS z3c~vdDIn;q&G=`J@dbz>I`KX-y^cGf&yn4BXg`hz@4Sd-#i7M_mElth~WNP5x%b1k~0@I>PKz~62qLXa;I7UD1&2Q zz-xML>N`O;61s{9(g;N}Y$ApqFni&L`1iO#0Md?mb|~w3KnNE8GuBtVqV%3#{VsC2 zSm!Q&EY?L`hujso{_O(9g*JVx|m)>-B$$@y`~4=&{!a$<`Su7@rZ_pDV)1E!St4xazhTXX2|bisj3O zL2x%|Z?CuZ_YRaHaHzi|mcLSjpf?^ILbeVo1K>sLm&Nc`ivV(+bh{EK-JYEE4YB;a zA_N_3b$!1KgRdBWQ*3{~2m@u$OS$S@W}n0GEwTH9BKvw?cF%*(9n5YZ2oS4v1Hm0A z7OeASo^Nyics44C73{j^m}pQ=%+>uL3C52Z3rFZvnEo>%vUiGm7xPfK!2Cq4|EdT@ z_heJuzh5tVYP}4Dv*M>>``1MnI_u>2u@w716T81HvX65CFa2baV*D3k^!G)^wS&~% zr+i#@A}DMi_Sz+hLihz3A_u z3dVsyGVJs;jT-$Zu<*%Nkq^XL|DH`jEF8@J8CVr zCDvJ+;)!+A7z9|qU5tPpnf|3d3SAC`X;=TGj^UTv$BgTN=V$9Ip+GV3P6bY=sTjhN zyq%k?FZ5g;-PT%I?5!WT(R74ovY8l+u8|I4XQ$!bRo**RhQVD~6T{GF6#M-d#a+>Z zoEe|3V>}y)Sm`)7Tqsu5xZckgyp*i}GReE47daazoKSa;`ACO*0Oa3(mI8B^7|a>s zH81=3zwAEH?)2Qt*4%|n8Kw#lK8Caf3ptM#tlu@pNbl45$)#Bj_&M3Ji3aN3#Qgap z?@*9l31KiELh(VW1$Oj z-wRzu0M^CIMA!rhKj06@_}gWX6OcB0*p;mFDaIxNFDwRnyl!x7a{oAZt=WI+>fJG3 zhgq88Wxe3e`VL`o5i`O8+TF5z4+I8hbZ8aa9e#kD@k4yi4Iu;r>u!8A0WDbP4XJx@ z=iql3(6h(pTCX;qj>0uyVeU-feq0dihprNSI`3c43Go^xVfgwD>pO+R#moi0(6<(C z_Z#Nf=d*Tp+V1}A-mx++m;qtQ2A(gdKu0ybJf1uJ-ZR!MXzZ%aJ;f9E5_vb_A8NP0 z0|)O<_GjA{)tZa-;E4ttpkx}k@Vt&?S3uAp`D0pf`{ksHJlA-nYY64lGkV!;r5akCs4CZVlYDkNYNK-+V0Jw*G{0oRv03IZUyF~!{!a*2B?yJ^E z14_;);(~gRte?w%(m4}QT<(;CaB!M25Iv>tUfjE*-da@l2SMonWwYVYH2txDhzOWq z>E)DMe(?h&IcO~b>M^JsuVea=C(W#uYJYQdq^>UZHFS66E z@2D*-xYxLwEF7HC0Wa))g&zzd9uUxri!pa0?$_nCh!x{UvBTgwbXC_Vy&4G7$r(@F zwMP@k(1kF7jAof?qFB8UK1OUlUgUQ1V_1dit8yFMBU@YBbBoOkaRi?vEuJD0 z0SgHFGL3t%eD2@{t?bFa3l~yg{!YyQeG$x!rDtAl+uv$;>RDZvn>RDW>^bSA&OKSs z{$CNQPRIVMPTht~yVKnY4-Q7Jm>A|V0dF!u$JAj*9=7K&OmGDBr*a1nCN$9Js`8>% z)t}Ivoa;-R5Kj}RXEG$9^d98}3w8Hw^fHm2E(p&mLejGuibWQmvi`6upCQ(tE%F}H zkC5O?J~QH;oN$-S>hu27$&!2L4RQf4fV6>p2x2TvSbqWcl>@0W(w{-N`Q&iJz2`TH z#U;do^?yobffN0}Vl)*LeucFDJr(OPX~Mcaf@cp*rNDTh_~KHL7sx+^{K(6~?8#x} z3^^7y?b-f|q{T}_?qn1lcjUT{e*hU`Vtla}M@|_KUCTEtxx)h2R^6edFI*vBEiFDm zaKU4+;HA40r_44_k*|?s|6Sxg*-yIq^j~D5ZafM|!(8MJbQwbQ*9rxAGf4UO37r@? z3CT|Q6%Db0Lu_KaK8BK4o;u6zGv8dr`Ws?w^hS$3W)^yzlR7;3-YE9}L*y>@{gUmC z{)>@NdlU|px51nYKieecVGkYkgtH-Mxc!`9S+}6veSm`Io5T$t6}gAqak~8ArA$X~ z#|3*IEHpx<;}7s%a@sA?IpE%l;%_z!OmfoTEO=QAy+wfjQ{;v6 zdkDgkt4EEld&=*a|Jq8x$cfI|KvLvesWTTbhOW4q9fo_6>ipJbZNCDcfajpzlbW#p zHevyfhMwvHB@4GeAjgwji{CExKQ8iO?xijt*~x)_G480!$2(Gbo3W|Shu-FRmwWq8 zvVSk`EzXaF=cI8EwpySuny~(E>b=P& zeG-5-#`H(2zZn+hR^;t9?}>5IBUs&K8A#;hHeXtJuV8$NvEU&2eZtEy?@v}<6eftUHP)u|6UP}zO;zP z8_EFijU#mJGBN!9A^_bHe-Emfa01RSE0&XJdS(49OaL_zO!XRFN@D-xp-D8p4Raz{ z|5}WOo`rYS-8I&Z+bZ7BMR4a88!{ICc`ml*kiVv7B5iQOL++1Eqg-Sk=C>9#@ZoqJ&D z50l9kP$skf3&!S5*0mZN1fEM^kyC)qrbW*$1>{#E_eq#S0n)RcHx8D0)s2n+MvVSm zGbDv-6 zxQ|>P+*RLKcW=s=tM3|Q2F%G(_Q9Le1qksD5=UsaZE|mQ=xwaK*Ljyg;4?6=aQzsB zo)0pJEv@+!fHP76HoHp{{#BX*AZIVpc*y_hR zK3u2^KY$m0nAkz-106pjQ$fSVe~25A_fYL%9iRX?i=BX+LIWM|E$)#4|0UMohnzaH zn+V)c0B*}bc>vCMV_&0QnovB)-G~gg#BeB7dIjCDhVHQk-;Ji~2eHms1aca&eq-Tr z2a#>&q0=hx@aGGP29gHOG0)!JM6BPj2t{Az^Ct@a5=94DFx2_nN#qOGX9OCV5+q2= zzh`C9Z}%wlX#Zwo#`V6^=K8+cVzcMoY*2S^(rLFY7Uqso6zEO@w2=YP3+>4M8;9DR zV<`xKE|xbHA?U=EC4BZ!YW+wV4Cnuy#r)qK%ZrMbG_&)VXix9{DnWJGWx{e_snpa{kmF#qahcMZG@ zg|D%mFV=U8>~bjb7O%cPWgxu$wq1Yi!xK&+U+xL9n-Wi0NG-O%+_? zEe8=wehSJx#QN?c6kVnKT$07(J|$7-crCL)$cn1pplR>ao%4V zqb2JH1o@E2!yGL6J)2MbTO^Xu`K=MGH^h2NK*H!%9zq`KR7lRw!n`r#w+O2s- z$ILpMH4hS$wn&pTI{WoC{Qxq|2_#>`XZ;|fg9bvxEN~$yu*g}5i%powNd&&61wAZ) z!?B2g@#o6lyx$bw3nCv4Y>?6UzsWt5w$}w7DeU})W{`H}@c_zy){hGE!$l$(!Ss?b zj`x@Z3OSDE&BSAD84w_?r$1Lg+{Y-pH4O2=xei)|bDi)5;)EYo;&EJltc-PY-&3rU zdL5x2#~pD;;TpI)`k2|%V*Su-iR`p=#66(&&B?b9Qxn!XR8Nm}QP&@AVEL}*^b~%z zowWVmlxE`m*DX<^G|~F!XiAqIN4O|&ei7YeuJvr+LwUxGO_;pB9tYWddR)x zMp-8h}Q!1@;XhA1gi#PSuON!LyJn%Hb7){YH_GV-7l#vya2bBS(QnPRBW# zuN32`+Cd7~gwCG9w^!VQO@nJs0WT+8dAfL&;Jt})fu}o#s|J4YSq8!xD^NJvnnCr?_qW0zpS4eyw?iMTSY!W%!e%1Ls2#~ zHZJyh?biO1q4;Hx6!{LZ{yy#$+R5+P8hYDYx$( zF0uMAMb`Da?Y8Y|&Hf2`8OB!#?c29QlpJM&J zV)cVX*7fQT+dJI`a%Zr5!$Ksi-og*~12VpP3oYSi_6g7U|HkZju<6m>Pyg;g+Xu7? zeF#5*5q^mG0n{OF1;MQcXu&#n@>8)+>KjtsrR8?B>A#jETYpV-H>W~#QTdD@eOBa? zg<>cw`l5Ot$vuP7^7nJir{Mgz*#Df!r!bD5Vz(T1Uznfw7>5$N@&z&dWs(1nA@u0U zmb=0FAh!|q<1;V5C|yI&2Z_YeUK}h`LO*j(wvq0zFu{u>*1seiE))3=rEd0Xwbmer z@>c+}Lxtg3|C+#lUF1J9yk1gl*yp|qcwXJDNju#(SPZl8!B;9+|CXSK0N@YwOwYv| z>-*f3MWdkc?HCQcp`N{Dyt^=P1A;N$oJTUkQ>=3>{9de&dR9NreHW(bzYSBL4;>w% z3VvTOejxIxoK#Cs;M|8!T5f;zkh^;~d-K_Y2R=owAZ>zkDzW~fSbuFyI|KaHiRoVh zR=UkP$Mk<=ebh^l@PuIx-5esKKNp1GGZF%Wr1x@TWB-o!;d+^Uz7F&Y*cJISu^Z-1 zot5sL?>i+`0!Gf+8e{wt7$`1~=))3>Mr%13zlve#O-p>HD0Ctx5ZsAh3&4cTzE5XI zEdgLJ4FT{Q0l1O?Jc9vrE@f}jNsaYy1>wqq@XRuV@OtPJC;d(kt|AD}Vgy}(vWwL7 zd)iwUo6Y`59TpP?#?=Mlnj(=?A#wH6QbT3;=%yfDLl90VLeiTJ=egJ6KE&T-(A>~G zQajd_dv*^e^z7P#bG;%weZhZ#*I(2IpkY=A2(3hEg7uS`0i28j^p&8C+-nCL?tQGw z?)NEzb~>X1O>aK{Z3Ml(4&!sL_2SgO8GIQ4?~0uk1JH{{Kl_CXzDE*LpuxE(j8;X1`11y;*-EBUNJ_;U_c6l1b zxP{ohtw`i{@TM-C=!8GX%%Km+YZWQ6Z(=;<(5v6%(y)52m#;>QMQ7;%7>b^wKMYmXA8}oyn z$p&{vKYS2xL=y-Te0TKS3F4p1I*GfZQvf!^08AgU{h}0zjmZ$%@;e1$Qw&0vc7Ic` zTi^KmH_I?Crh&DYFp%^i-}DKDJC*CNxyul^q;HKO=!|v<*-|?N;M^ntxiz{BfT!5= z2;c=}>AK5pxV2l&V*y}@`SpAOxEBG1AZQo4S4L;AJO}_oOshNCFv5%>s-x@x(xZHj z7=oQoU8ee3JM<&RQ9NtkQ&8?L(i9H)J)4HIUGBdclqLCV0-GOU8VWz4aN&pe)eqQ& zAMG^sAJl|(-W|GM%#nH1knd_vPnXZ?{=~wp!{8z>-Dcn+cgf-raP=_r;3LT`tk;CV z91#gaLN5gUgS6dVr?DW{mjjbw&SxJ@OjzH`40!BlSIEU7^u{$sP9YW(TwUs7zbW!X z(lYc^e(&eBzoek76Zf1_z?TqM-zVk|6~XJNa&T2;MLFyj>{by6UH`E3QVgO#J|KqM zLjlOgY68G8S+tfS!FofGkvt~K`h*lWgKS)EG~LykKqM!dxI#Wia2ASsiZc-}efdo> zeo%})xX8HPYzc!htHan7cS}@w3gc!a>Tnoc7(6B=_^LDOT!*{TM+7WLK1!w-fkZsly$Gj79Os5%voj z6vsYzUnSd}TIZOc$=0jF!%>j7Tygnk{SiXsuZsxD z@7b#A9_}gD?&HwiK{gk|e^wf!1?!JtSgs&NtN0`q|4l4d{~KaqR`HsJpQiEZ%f}CV zfgVEIP+USRSbr?BfGff@rdeQh=Rd)uSeQBT9pEGKaRhRy{2oB`y2oF)cmleZlikmu z9z98n{~du88h>Jm@#mBAr-;$NFEXy(<1^I<%J<+&02yX|`k#c#`ad!{q69zd<&I~u ztKIgmyU*T~n#AN2#Dw*y#+c|^K>A9P@n&M449l`=1{+d?Q&(%J9~Z?y4~68p1E;P z`M(e-!({c_s4TGlC86;hrh~Dk%R>M8_9T4%_9p9J7ToU^;p;fM3o|?03yTYiL3Bu6 zCWgOP1R%d>D;Bm6CqUX+nxETX{VQVr`$h120`=pdtZ%$L{HhrJL6LDCJpXi9y`#)i zX5{4TyQvB5UlZIP7UAp8`CSo(ZUVmEH?o#h zKi^9!#QL{{!cRn^iU%rspEp}#`VXLX-y~+$enxSP;XO3guO`DhVB-&%L_EFpue?#{ z(QLkY%(y<`?cefqz-_O(w}&A|-;BQI%vWFrrZ%5A_Rzzw9R(<-jPYlSSht|D0ecN` z%1I*MF8o8(b#2O=B3CeiFLG#d)?br6k8`sCqHo~LK(cktnA{#soOG|AARWH8NUXp^ zhvoMPFS8DJl|PXOG7tx~KKua6_#uAR5NsBwCx#MQu+Fy?ohW_45DgLrxL))>XC3;P zGltMDScrb)?OMX&Waa`3de1q0w0U>!aDD!*7|TQC?{(Qc`U)7mf|j+dvX54fHlKJc z%lfG?0(xzUYYa&YeoG0$`e`u+x=!ewqIV4ZjQ&GfKk&{F>u1DR=v_qry%@g@BD;rh zOA?_gqc{s^*3XO)(r(Gtt^Q3;?!6!H9Js|~Jui-LmI9)E|E>WDd=8oJ``g4=ogBU)y2mp&6Fa4=rnQ_kMjbik?BI7({@FI{hkh@UiHi_|V zMIgEd{*l*{bKz-f_=#_90nf+Ur`SC73>EVanM7~-DKpea5pd*Trfh7 z3>W#s4;YmAA%1Haj)33HJ52fP>V8a~moc#DrTch8;GeT=&WUq>v0Y;fu;T$&W}Nf( z0b+D-k#RW9OZfsbZliO3M7Kc2++np(>>enx&*aODGx_~uv{7VS43?S>m>*<68rz7VFXG1I z?goP{9&t7oV5$;2tUp1}pU5mgKQGFkwmwF4>kp19>rY{1&NG~Gd)e^!TH=!WP!8a! zjdh?Ii5{VpdD*M&SK#;;w4C4yZEWHP9HB$ob4#K!<6Pum%SaeU+I!il%{Lai_xc96!XuJ!=E*@`Kd1?uz#+YeZkP?r&G*7Pt5*Pk$D~6{yWIsvj=4e zU!>?hUo5|<2w}-2AHEpzr4k?UGf|g{>DLVnk!4XC1Sio;#PsWnAawo3V^?JW+=rKn z;Wrck=rgAbKyE!K1L3pRmx=K=7JYd><(C z3-7JITqwS&s0+HB%18TD9}FJ5=oMo3%|-V0T;N{{US=HEtkAnxiqW?e8P{{@cK6wY zf%}KKQR#=|JJw&tu&B7;r*lj{?poGIe%$rd0`gV{%LDP7ka*O-41^!Ge~lP_TM>wU zB%ptBuz5@_&y?YCHoR8szr6@2zj%Ea#Vh9wg$Moz*fa;lKxD-$K;$eDxOja?AU?rR z2uWV?3IId&;lpg0`=Ap`7q0-4(+iHpzY54F87!|C_-Kv-puv&Tt=GVkNY+0h$e$`= zAiodF=hRn_2{|3)F#V4l{-vSKPp6pwyqNuRk@?)Iz6{~3GPFBQwI zV+o0%d{L}^waB`z{4&U?-tqD12Mb1F?&Tr83gY}d_zosuL$Ba>8zK7 zH_dEtZzgN`k5H9iy%2s9`Axz2ei4=q#x{SxrmRz7bH>V736Aw|3G5Gw;B~Zi_uPlV z<_;(V(RupYV)sWy_Ltlq5?+Qq#c>n=C7Az9S{1Sh}HiqvaUzvo&)Yv zer{FJEkod>`>9y|SrLMsD+k|{$a?aPgr59D?Ej_+N8dZ!zxg;BpL#Vj8#+-d7seJ``l_5Dg>^(w@C`v3kv6tY_T6 zoxuG>v3k8C>+*XRpDoR1W1(9wv(Gc%wdDBIi|p%^^yfTf#`&D*Br$sZBIA)cuMCUl zylV@_4T`XIG2P)`=;S_xndGXI#qt?N2-;Qt0%sY0-YPsrjGkF!ymU@0Lt;l=M-a{` zLeggh7k6q4{$#WafK%$aV)%wd0B6ej!Ak)2U!CE;a5J~qtocttq#&LuNH;1%)KB4L zZ~sv*V*L(A<1nY$CrM+hfLOl?GeDih0aBc^Nvh>PE8E1bhihqS{0|5Y){KOCJ)d{$ zP4`u?`n>FftSFAoM&Ml7+UGu)+O5y8D3V@z`;Q;(&%SyE$K*MUms!SH_yJDS>G!Oo1k{$}FM>$jW5(rHOi!)u085N;kr(A5C18A<`TMGQdi59p1j0FpB< zc;o4o0y52D2(k84cu`M47$Oq4VauFE`X(p$Zn519wK?|)oV#QlP;&ag@jhEnW*80q z(B)$;yJhajC|^UE2WKN;UJtgudDoBDib5dgz3jA)tf+1ATDBH)wpX0H9?RKRnEtoK z`FEz;y;j(*6ZtN2dRRg0b0oifkWK!dlwk1Gdyd$?lgM{7h91rG{-N$q2LQ+eNL!(v zLcL=B&Vsy2WJoob)Wz0+xLu(mHPCc|Kiqy7F}hjgd!%J>p}u3@8}EP11NXQpDC)(E z+-MePgO%yeDLDI-7OY!$^W|#X-3F|?iYK-dx%+z3(o63V7xcYt_bldd;}fJedc=CV zPwpnZ*jnThUFEz_wzu7@luHwF69w+>V*1=72zI+4&;HKqlQRt1uqtN+=tx) z5;`6ijUXQPVqi`P9S+Wqr^UH;Ls6aeI50w#PM%SvWJWMqr~#xiu@QOoGd?h84$8(n#*8#_I$LMf2_!lGmPG? z%w}hKj#h!lAwk#~i{HA(`eOwBaUws#EcA@!wllL=hA0MREV4KMMhrh*i|y_$eYkT?T;H$|J`8T%}$j5U&vVC3e3qhrD!30eYzbyi(+s8A$iZE}c@K zUM3K)5_uUz>7~=)Y~rdVS<7yFt(bm;$gePj9(%YVqX49N5H?4iP07sq>je3YBEQNE za;FzX!K4PR?}OCq#qyg(evJ`y#Qd8xmtK~++Q6OEl`)OW(}e)~!@Bi(Y=u3NV76QE2k(-1h$}uQ^4si^8_Ew}W-j@osVeUjmwZU% zci1&&$PZp-uKD8_Meh=Sd|2dn*)Mt&WqU(^@T2J6;);J2`8{@t9z~f;{%A(gd&DIl z5&3;~&GqF6FZ(-*e*_csd&L|7Ch`aD6DH@hOo%X0Pa-`=vWJ ztL_b4co)hOtfzb9W8#HRi~L{qhTcZ;J2v{Ru~qj6-zCO+x<5WHe)unuKVg69t-~Gl z*5Yw9Qm#cKh4pk_d_sKi8IeC_U*zo-U1Ly3k)@E9!P9Ajh4s%0^5;eVA2ZNr=l%Pr zHoKR3$`jX$irF*bE#uD#!WTsTjFI#mQ+=ch7nXtZKVtujB7e>}diTri8aHe10lN8X z4xAe8$(P0Q*G1wX(69%a7c~WdXhGVjJ%ggg`elOr4Uxa(KI(1E{)_JX9Zrfvw3A;E z)87<{hfhN%^{Tn#+*4svr>?MjeP0!qd`l!=@)2CKB$F5S>LRx4?zjpSG1hG|Zlxpm z%G%e&4c`{|8&1Y0m$Ll32Tm9aHj@)3G2e+{B9is*3hehp{+8jFT-e*^zL?Tqa&*H| z?8E^b!pgb0$@dzv{sW=$Bay#jI(kXCvA(a}sgIP;4~55%MgE@o=taACiF@;ex)Ty} z+)x)i*%z$;L^%9ZBnAxRgdRBlv$%U};Y+b64T5BHW-OPac_qkt`oQ^_xZ&p_C!}M+ z9eMKz?wuYgAkQRMvHnXz{;kL>l`+`qMy`KFfns0=D_@BIl^Fh=$Saouw7U)eAaDx6 zuf_21MP7vg^lZPU-K#ZIyYL&ae7VT0GJ;;e4_@QaU%}vHYN%-OJ^!pn97s zsUlBg2D;oLPVPxoKhTqiJdB92eu@w{P2{zhi2Rl^%8#0GZ2~_Rp2TAR4S+SCCH^d2Q~ZRF4TSvuXBd@6n9w*Mz$_vRu`W&61mqYQy-(#^#3EkvHi2>RMh_Ime?i_K;| zJYtBw8CPQE$Pnl7@+16WtH~5)ICT6R#!|5f)OfUD-GXwO0~8i+C9e2Wk=HA8$u9Rk z<@O)EOKvT$I9ufD?2_C(RJmbl4d>x)#PV%LUY`-n2_5dA$;&(g$0u;C-(Fy6MBaem z_3WSRJY+AlTTu>o5bRlzXD|o7NxA!gyTNg8(T&5SJ;lOwoGarU#rPVLXEKPcjP7F^ zejj1WQFlYCyP2{Khbz~giT$-A&te??9s>z8!`#K zcoh;CEYw?xeVr2X>qXv(VRC$m4QAz2>dct7s;+`sD^6tHdOcP@r^OBDh`ceoLyx7w zM&b1n=EXl3({~ej6Nb?BD13Ay1>w$O`R*cb$_S<&DeESZW>|9lVf`)wyFuiil)-PW zAFekQyg^$-F}|x<-6-;AY+c_t7~HqnJwTK_l!e^A!60I$$5{v6O+l74d z-BT>ji@YNv=tK_)?yWZ|4%;Qh>mqN@AUe@CNV>;%3&cK=cVMU`{b{uN9!u=c9x=XO zq9 zTX&6Kv%ay`QPGT6se6lorpQ?a(B}o&=dc|>dOz+X<`0Qn!!Y{1z+ZamH5QJWOH`+p6&&=U6KDEAjCUaa`!jf z+DBL254@|!`Uw1>R|=UQ{Bqmhr{?ch`(t#-lEjb~?5(;V_(giGk03Gh9J47~`ul4e zopy88oxzvqSs#HjmW-0YdC z&HJMN60TME1YQaSPq01$Pw1L~S4L&ee6G4P@X{zagY^+OLoYkw3_rQLlYu`*cj(1F z+~GePSMRL4H}H}zBnRswNDjTq$etcK91fabihq&NC(zO;0B!z z=k4jZPa_-$!-D(G`Uw1>FZUcD69?}Wu|5JP=)JrD-`=@LNp{qAeDc_YN8WEB3ChXQ z#6uGF9R6_i1ZHP;c2{P0*Xh}f0W{p{u9>;n+xIrNyJvQmD01{16%s-~ganK{j)FX+ z2r4MzTb?Q^%ELErP$WSJ5VBU?Tff`C{#951`gW%2HvP*vaHn=>Z{7Ob@BP)UepU4= z7>RZE+>QP7po3Cc9sv>jc^D$5-xxawNKON0f|f_X0pg|RYL*O)odKQ3rsWYZz&(ax zpksz($3QzuS{?xg>}p#K`F8)Y!+^CG@LkaI2w-5}(!emWtLdeI$L5AcwuN19jv2c$ z=x0I8BTxoj!CxE{Hz}hq$jb#^3N4R-2kt=*26crr;mqgIMQyzU>iSRN`Ehom!>L+R zX&yMt)(kkYGMK`Hf9c?3AzPbJ&cF}-6md|Yy_j~)p&#{S{Z zAv-OPKq)wP0s@25uT3Kr_xnMK9j6h9`~CDt>o|>IaKilj`{_>VICdtqx1r_licO&@ z9mh_ET2@*f0Tmo9wMuD3VQWeQgn0i#PD3XV7`rSWZxOg^v^)Y?xI;a&R=U|r!$zLP zXzWmExR{nl00r-Du<8IPCbB+uB#^@ibVAD`K!PLc1j+d0MUYAgc+m0)c;MB4c}AXz zn4O07L_mU;M?eCH0nkREv413V$p$Tt00s8jD|-84l%1kEDf3Q{>j<<#%cBOe-PH55 zy(fjn6K19hrfGQuKw!4bTqnWfIG=yso_qh#YR|y@a(eemXf(Q5o7734KeVFNPyO~VsXcjx?1rYPYB&>R%<270y!AFA^ z3mOc1>+jfY2X!uJc?1}`WRWUmW^eO^GZU~XjIQ{gV{X?X-3 z@aJ(fAH0tJ^Pp>?Xn6z}upEv~@$L(p8KBY%TJ7c)kQtyy-qa_N5yPz(qq7tZ1dY{Z z_7dy8a96_pd!!DgOWvMu@Bac?58NLQy61vMtDUOa(I5@Y`3TLcpr#o&gC>l{;6^h` zq-nH#8+`<5Gu#0$!Ch#_I=@sBo8^}1DV$2_a?9JfO7OU0UzDr{(P&!xV(vlkjKX44 z4Wij}ycQQ*t|vco zV2Fxd%2k9X=POA&ttwN?pzWfIC9szc$8@PG2zF+3*!-i=g2qSGczORhAcnW!O zwES}J0bIk2>URvq)ug&#;cnlfecuo5>yc2{sgSmZmhZ9;@GANsU=DHnmQ}MIwNU*| zb=2_RZEyQ(-|gWJ=2{E3uj#Z6{staohJIsUxScEf3p_ul?|o?PMx~DJXbrYiStgpb zP$zv3>#AP`H!%*Z?N(nv zrQ3jaoz}HuvN5uU&*ALo?XlO>GN)iH4fqxwmX5Ynu(LYCHfpY&rrLYB9=_uq&L_1I zZ=$w=egya(ABbz}c)z<-1-+TOJGK&Ydbzmvo~y^eOr9LXB_m;W8-l7hxs98hH0QXF3fX?ejcL!O*-QDV_`e+&C;9TLBJ@hdPFK{QChfQ!*k4~0@ zcwO!9Q^Svux92=L`~kE8E3leG?RtEm&+Ta+0(Wz+aC`iIbY3xad`IsN`Z3ou+1k;2 zQ}kK?3V3yUp>Aktc`qF9V6G~z^}9E;3@USY!ymveVD8OUkhXU8?vza?OZawsv4Ps* z@!)ZtEBpd}{!BOh?*6b;*-DP7cw~3ax}<)0r%r`K1pc5GnYpALw;+zEJu*-f{H~+P zOYED2n-*927uZA$@VZz1`4?5qC3+8=K95BewG9#~fw&Ebgq8~x z(I4O+;Mf;_oCC2wKrx6+c6IbXj*6*cPpc`)P#+#XcGuTvxBAso+LGY4w78~9D`_-# zxK;SuG>+6WK`}i#BQQBYq(DS}fM3AU&y3cN-o1yP^sJqH`X2Xx_NeaP(CK26_2y5) z{m12~KgT`*yg^zn?Wp6Wu4$6A_D0IgcN7gB#8mtgc_><@@+->F3cT_-Xz7Let2!{& zgxjE~16Yag&Zr2!26#+beps-pkv>T_UN>`TMMHPuo2CY1M{jOp4_Sn_*a3^%w!#b}5!JW82HeCCIxTX_ZtZX;b8q_gU zB=dpK*Y%VWVz_8IWr;(E$5{3${+c(sIl_41T*ysV&E=)K=k=9R+}!(-C& zHun(tQ#N+1RPD6Mw0wfA9lwHo%Iug0v1n%t+5}hk70}kw^7G2npG%-r{j|Nbd~2Ed zD?8u*pXTbvW7RC?F}GoYytTcX+V?Jn0{RztS+x9o?oseCeNWI-MvNV+pIKe7-h%{0 zeu1kGTV1_&PH)R?S9SN2SzS~Sv3vsx`V3-_hHa|m9FKbTrIdc6{S~1>Nt{F6rEsir^k#*-LK^8!b&xD8Q-s81=RPui>tu?{fxP0_NX+^=aM$j^4(<~ zp*T4f40|uj(;zk8!_|QMeH-R5%|vy8v4N{=bl{iaH)#3SxQD=-pY|#3WrtN*W14*} zaKm0Lrk>VoxyrCZ*R4@h4KxL=ZlghJ@Ef%JI_^2}S8JYQAr1B1SF~+(jGn~#P^gYy z&s79Z2v;0^-yg1TMEZaFbX?opuGwF6moR{L2KRB9{2);ulwrce{TDZR{sq(l|MFMu z4~`!Ozlfa&z2SBtskWOF-lluFHsOWFb4k6f2lP$*mNq8xExmzjQGe;(GLemXJJ+Z# z>E$N?%|!^uHhQw zdq0!eoFCwt<9|Odp2+vJclZX~Igt%I!ZipBZdpB7FGy(3>B$=PvWaSreHb@f1ApNc z+GI7v_Bk^Ux$s&x{9YE-dJx%u=j9XiUZ6QI;$-H3Ka<&@+qeed_k%mq$!yN;WtxNK z_KJy=+dW)!{BoPj2EB%BkWX%t*__vM&GEmVyCza__i_!wk&ZkEkl8A&*U?zB{pyKq z)~C5<`QOuIHs~|MH|RAJ`G!uhVIr@efY(7DXf7r}O%H+=^nOGb2z_WG+qG4uT@@9n zs*YsoW|=wKeD-KE+qFGZyOO9j;q5xXwF}P>%;{CXs)cYKL!lAl}p)JIXvE zo)fADscIceTH)HZ$i}rX@Qt2i-s&S!CU)K_n;)%i1nGfT?hI4x5HKFuP* zb6C|VY^)|hS`&K$k`SqMI!3&pV?AkQQ@GP$PN@G!%c7BvMzA^ANYe0xj-CY3jT=fu z(;$`eNzX&eB9)F*@Lr2!YI{D}il;#$=Mjm}vPh&OkzKYMHdif?BMlLV3~}&S9Y;+g zwbsf*_VYu$D-hg5GkBx*)0x zS{9vjbb_O7dclMU>J#xs5mP))T!2Yp+ffn@+0+`KtV{Xnd<80(FN7umIS zkK~P0=aBV-v|Jh{-c4j+E~~nZ;|R-Pgo!6&%*Jt@ZOZQHyJQNaNrxe{Or;4*KG$Zh zbM|J!myd^h_H@ccwW(lJ{*}Vkv7x~BLXIuYj+R3;M>Sd13R$;z0{_^Pm3rM2(4_X1mP^ybv60zY($FrH z*@munB!O)_IZ)Rpk{1c|^R_*G1a15Op2Y;-%|aQ%mAXFCUI^!!<9r?@N+3P>f*-m_v$VG2Khl1goo9FtsU%wQG!< z9~n~#*W(~s(d)uhnyT6~;N1nhY`;&-bd1Zo2R*Qo!0a?&rNdcTrdZ)EG&$9F4R3SR zu574!c2>9T$AqunDzrJi_&nYDu&E~$wih&JK?@(gw;$W&(BghH}>Z_ym-g@0DC*`vE+VdBNV9hiC(&@@Q%3K)u7OtefpDwZbRu9nlBSAl%&z|HNW;BUMi zJ6`?*M4S4^!gtNlYJ>i7LQ4dW)B9N;kpTz2vwIV zJA%RJ`5Jq?j)s50&c@4p9Ii2DNi{`3NE5fU+1+8lez{b9wL)&W!JKlTo6QWzM zZr{Mc?G?sCD}RKoU$}4N*mjK(dgiTrmPpr;ZmBM8Hcf+AFI=}Sf$;Rp^(~xSanu#% z0TiZwrf=n#;uK_NYuln)b5Hh|2Eyk;cW*y$T7FnlT9oWoEJ$6^vW688X1kFdX$a6E zfIh(@H&+96srQ-M!gdI@cvRrB6$@ab_ppsB7OdESp^)NbR+&zVpLZS*D|L2FPghmit4k_wn?=@oN5$F{Fr~_*<t9ssXZv1`?Zx)> zm}_@;CCX)$`#z2?wh7DXxoy?di!JBVq@nkz$C3C0<-0Cy3ksr@YMMmRyfDoaTiVC! zsnVS3k%p+$wXR?oyd#0j>~ENBN1WYhKLo4`7M!j3bA}Z!0|KQAUT(Anct615#a4Fj z@kS8W_Ox3qeIj5Knj;+Q(sPyXxv-VZnVQUX*2@y2eq-=KPOX@%Gx8F$ezG6t$oc{W zu^0fy0Dy7*2nQ7}Yu~SDvm!I2Rcsw<2wE@Nk8)`7O!l5|-AuY#1KSd;UaTMEu;L9a zhxKu<=-_4H>Nl?+FU2)!hUm~`;p*r5363jXbeSDLDuw`ttl5=D2%ziwWErsZ2zF7d zU$LL!z~X7H*>)?T`(C%C`|@^QpXK1~Rsie(ipa!;8HG$bVtI zF5&9u`gx9PS1+a_rBhw%2uz-m`GnX5#~wV|_HkdfV83XuU$WPO_Ii`O-fXY$ve$>~ z_55A=jl9ua932C}8@JfLn_K1GIPV5LjIUV6Ubfhnkfa(vBV4^)AK;3jRkf2Gj4dL!`hjEIRCyt)Yt7bI~8>nA=f!GMgM!n?je!(LCZ*VFCQ`zjt~UzWK-CMkIVLuk5}LouhK$T}1+6j3{(KFw@nVvZx-m=Q|WJ;0>*TKGcD7w5NnI^^6`U7P3a}%QP60r+U-+7^8(vOphU~1 zY2wK?Lo=Tw7MKQbX_z=kgn`*JNyIeB^g<$2S}si%J7ARTRxC(|5Gx*>bt65}5THW< z#YrLzP`u}UK53hEH)bW1upNReo~m%!iUk;|yP`%F3s!8vP)PAwkW8mVl89;e?5Q_O z%cZ;ho;b545rT6FD@un>OGce$nZh*Cq&_Gumlh{Z5@Eje-bo?^?GQr6u_*_w^!7t_ zO?bgFVJe;dP(<+vO1t)r)g(x3M;bMAu*n@$5R9TbKWMqMMa2&3LK@U{Y%g95*KI^v zkh+!>;w+EjrcJO#HQSgE>;0fAZEah&uM@dC;XYt{HOCeYPLBprTM675&K3aNYdE-< z8`G@+GuM0_-9{MIQWX=(?-T`l6?`oR8C!=8a`(1IVe7ZN*Kus|q(H`YC2U31LqYxY4lP~{V9xKea=l-e zdYRtMF~yTFW~F@)#(JTBQg3wcaQeD1_A>tUGK?3JYP*^3B^SopGac03{SA&Wj(BH` zi#@s`UB8R)1`aEB!i>p1Y*I?3B&+8)#5j13!y7rmcn!U_yLFwuqiH*~2ZXDa>u+*g zJh9l~~Db~Pi4c@}> z#mb!vQq{ueCkk1=a^K349YDF?66Jc8`!M;P0NEbR}@Z7;ULZySDxBipsSMsG~arq*qD_MmiU-tO$3 z99W!w-R$_xz*d6IBGf2!{jz-*M;FhfXAxYR_(zn>c4xoKvBg2g=wxsr`-Qq(9(gffb|Ra4>_=Spt~oi9$VKb7vmb4;5{kQ^-A}>9AUf=cedF~s-d1a zt1X62JqM9xwzT$l=G5FN0oa9$a?)l=>HGoYQz`z0IxtX%Upxsv6#wETTO0g=lQ+oy zCudm|z(1ko0d7H~2eb^&4OKvmf5bt?OBoNuHFaE|0zr4DPjn`n*9@wZTEUcb4c!f71W$1OQ#BBFXKPu7-OHoJ8>q2{TAZS zIKp^1;hEkMzJ9)c&hf0*7o*7q+tve+vl3r2;jU$KA1 zaqSmk5U_r*@8`f`V|zePrRS#;k`Ti#F$rFi@BxnS_u8?Zxf;T7Xt9vCUL=P8nrntytcE3$T?Xy_{)Xd>twy$HPppRJJSgJ7I$|B2&^ zr}mdr+!nS2v;8>7w$H@JnbNO$`?XJSTyadZQZ+{{&nH`PcP2vt>^HifK`o~nzuvy4-RVAR*bcl zO7j3ia}EMI)@yi-K=wlZPYyB;lkHJ!Nvec$5%C?=>HRcE8Ham~d`+G>C!_3RMaNzp ze}*HBJGhl3iB&5$74sV~q#o5Bu%k^_*xE|JiLnS-`iPD9u-y!>aDX!hg z(S@s@>lZk#IC`^^w1P+kTX+lR2j7<1FLGe%mpHz7 zqVlLd5-h9=-GL{2zRc0Z?g80*e6Fb0tJ?qKxZ>EOvoGsBA?qdk-yGSlj!Yl?gR{sA zSbs2XiU+u0VpoDyGib2>f#CJa_NyFTEL)BBP^z;K2-m{5 z_4&2;mE>yV3J0c$Uj2H#pW}*8P|6~Tx(myvBrgyv>$S39t`Bfn z`whATtY5F+eRQ!UeMC>Z5xqN4JMvAiE*OF8J}D#^J@zg0qR_5^=-4!abcMiw6xk*^WgJ zuztzz;=uX_4Fc5<^^7u57uBYUtY;ul{ZP;3pyGs@g$bC~=YVGC1Cws-QZcq(WBVwM zG&Z*MU>^bNm++&@fSs+j!cBAPjI|AyiDJEqeGCWoZ0jAH>z)Ly>JX}axjvSoiX${R z)kBR|n8c!3D>pyevpBY0d&Sz#R#IO`gSzUT-4*rv37IKp@t zjmZlwc7e4E=WWxAk3)-dDj~Ger;%i?zUbol9ANA(ECt8I zy58nk+mpb#eO_?03$^bIygia|d?lzOyQSckEi_J9et_ zwEI*!IlszTf$RH6H;ru?9A3C^QF(m4yt#K^v^+GlXd*ct?kjB`8R{P|wVM8ZlwTJp zH|rN@1E!_T3pb(hlP3}q*o-yp<>9gM(TRca^5`~XEwoYHmSJq1*m!-hgGNEa<8;a< zSB^RP08#{Id{Wb@&7_GHx8e%b(w2;^FtOS-il3ZEj=(&vGp*NR@^EJ=3Z_619?NLu#cpuc+6Yd4~hQ{xUydT^j9sm!7_lE~T zht~sOwejMS)L)CI+coN|!!&Bg?@HBWjJOiEy&w^*e zh438sV0bP(51tP%fNgLQY=?_s2V4S|!ey`%UI;IO%i#*R5_Z9EcromOy-?V*;=cj3UXtd>$OJ@*?fjh}RC4=mC?GXQ3grO+mI zvFGoIl6`O$Tn*R2OQ6s<@jA!yO{W~Qpe4Hp2R4;Po!IhQvNm0z)oS~D)Mzwgxmwc- zsTBn+S*ul3Et#98&?a@UCAINVl)X%)q4Dtw)N)L&95ZJfvA8@ivAHxnzPx{3slhs; zZqh;<)%g!7<0@NSrMkMBHe4E?vyP~%Sf=Sb9Ry~^Z9U5~xe6^)BU?}TA*u}ZKzw~* zdXp>1oSZ|7!0Ed8m98DnEc;tZTxg$q+j7nm>MPaP>m9?T@spl{0~^|rX@!~QE3{6n zY&~buhobi7@L_N*d^i+($w|&@3ClN~a?HuuqzIhumDPi#Yo=z>R?-$)uhxG=okp{z zS4QZXLTe^nW(78~BGa@p%vNZdI>jy9kJjtp09+4CQ0ODCsAdyk`KD8jnX~)aaqUR| z@cO~w4U0eC;x=>>4|; z8N)JJ3vE<4TY6`7zXEQ68{r_l5^jP+Q0Tk41bAg;eWp{6nX^N)bhJD%l9{UAC<>f% zOPs3E18VA3y5|@*lxi5dR=q#tb9QKAoiYuyfZ_u4jmTsuv`0N`QFk3SQ_CNdLUHC@lTdzB` zMQTgVN~*46nf9x{l4_Kz&@wf$)ptPEtKl{9T1|j@#GMxCu7i(& zkA&C5N5LE5R(K=43Em8Efw#ij;O$W8RhNSIsY9fcna9|Io??|_ekkB3iy zPlQi`Pliu{Lcg6vz{ya3Os5<(XRY2jUfR4U=?fc@^ZW36huLgO3!EBT_0tx5ORaa| zU=9VxP}@`D2xQ}P*6Q^&%k%+fqrgT6WwI68rcU+*Xa1+6^PTW%Q0S9W32=AT@=T{3 zbJFE-;FK{nJ0MLYDYQ);|4QYqBGpZ*+vx^GG=6d}5rH{6XZ+q;>OxD@z*f?-yHM!q zk;cZKLHL=_a!jrqGtbh}731}uTFJ3ACv~BvYVI1#c~6a{8oTRnxHNv!lTBcz&2n_h zG~bLf7TTv?wxo%lf#T1E&w|f}LjRmiz(Q!brc;hN=|Vd&WS4<3z4-O3uCp(}uw9C2FYV|3)R(Q8kGYL5(krBan^H zS*Pb&l4(_En83zHWil4pr(U+K=j4x}_s8KU;3wgypwLej5wILuzUh=>P992%z$x>( zN6Q;VOJifndD(?k(+LahR$q6(yuMdYsh%qgh-m!eQA7k5>Yr(undB+7N^NY-ol)x3 z@H6nU@N@9<@C)#ZQ0T3d1av{`Go5nGoYw8>Uq4u`U2oNI-8u;i{h+?PaL{PSqgw+a zYDZ4%)={fr>lWuJv`TGk-F?vZOYqC^EAXrEYw+vv8}OU(TkzZPJMg>kd+_`42k?hb z==F;U=z;2OI^~!->++t#b?eH*)owE8EKq-4UN>o>Pu2N9DB}*2x=MBJH6Wt#IqUMe zie>sr{dIYxT!ogYk-bIvN0H`wppWoX(DWu(j+t{ttLnbAe`u&Qx@GZbc_euNnMSk? z>z~n@$XIB%_PDd=4w80A?O1Ijpt19Kc5XDRfFHtfkkqaC(OH7cUE zO`bwTV3P`F`oOm3F0@n)ZGGimMwaN2%Lso6G`-1{V;0WPjCEVHXoilG7TTuHlPGhp zN=8)IheqLw#uv`ekz$$FE1IG6a}`>qMz-4CsQN4TYxo=ZTlhQpd-w6ByUT(vUx!?Q`%hq-E3e)X?f8)PcisViYE#jOM9*3mg)17L^VD#T9hp`=j*y)=Nl9!AO1{R_io-j!QrOQ{;*kd4o~a+|Jyre*41muGr{reyLITBSC&=I&^@0}=OwJHnmd&TtpFE8Gq44)=h2 zLY<;FuOMJUzQEoR}^?i?r&*F48ChvEX`9xyF&p}*Aoz8rL@Xhikh7= zsg`NgqOo0+uh2TRvNyO^-;0R7;XZI*xF6gfYNg&9B;ZOICCeY<^T-ewH{A06(GAfH zb1fz>^o6>6A7v@3#L$*aaRjpQIq#2F$8H^4GHrbVMFlqDg-p&u3)RflcI+QO#DVbs z@F4gA_(1p|crZK!9tsbGI!MnB5wICX$?|)}v1ACW>yP?Z^)t*?=tFI>mvo|93~d{Z zBan@sJcEG17HrG3`L>r(XtA2wYrHl%oQT9fo*pFqTk@FaLLJO!Q#{npdz$Y;Pa;aTu(xDe_qeLhOS7>ttT_ne~B zPVeSqqp`Nrw3ximhw5&BS)ox8wPidCS2VuxELF#rOjjv7OBLrVv{23LCA*>WIYc}d zo(s=|=fewN8(ak2;bN#K^ymZuSHmb-es3r`%~br*`q`->xK%U~zG5MBhA!xeBP?1J6!V%P)qoGoxI z0b5{{EWbA$L59G1{;v3I+G4-;9EBd$0)`qpWxCJF z6dKr^J2III?NmQ|&aTwdOGF=B1y{p0@Dg|_ybL}B>J9z*2m&4nqh$F#qG-)g@n4-Y z`b_c^dP^&uS$Z`uqE=lWg)16gxK7ElD$}$@>y#$47uu?h_6%3N4<+Jq_%OH@J{}`#fGZfmb z{`cdc(OvA@P&bD5PM$7FwxxwytM~tBJS)<2cBjNS%QSb)1 z72XJMf;Yokpx)E_w-fMa7$wW^J#)zrnCtEIv8UEj7kX69cjUll0njIfmOLg6sXZ{h z@a&L|gVd5trztu+6lN^6Prd9h%C~xe8T#R|$alafS$+%VZ8U7ySobBu7Lym+sP4Z& z*~@F2CY7}1acM~Hf$_Qf5;?YH8ZmEQqH)eb3)Re4H1Taj+zuZNA7cg#)I*O)egce= z<+tu3WC)xZpVhZR!<&TO3T!r=22gA*)OKeM8a^k~q8ngZtX>p!HtJKEU+zB-5r7 z3AhtR$?{vZ{&d=#eD-RnROi)@7LynHLfv=eU_hfHYRl82a7E*DX5U;}GVNS{_H8C- zp@nK@YddzIM#Nq4>F^ownNSP$)LjHT9Y)DoZsjdw zq_XuHZu=-(j&jb^E;)Y9^so9)yEM+H0vb|7wX%14#&{tSFM=eD}yqJBA%$T*Yw7FCeRcMZ58DYcz|kJcn|U$VU#T2>vPBunDM&z zPMTUF)=yk$pL%=W^(xeep&f6EBan^HTandQEz?#xE3$_93awKsTW@Ey{U8w^f**z- zfggn*gCB<)uh-s8z*{0On9gi5bKV}l&F%^%f{%?)K z6^+k%Z>WJ?nO;!;y`kpw7h0>9_J-Y2{}V)f5`GGP8h!?T7Jd$X9)1CS5q=5k9liWE z0^SazWchQ$;baJ`)9~3lZY?A&^p!gQ3neE|A%-@*BaT2eKIdJ;v}Ln4WctG~6cgCM z@=UHm%hbqT;Cc4TM0^E)6@CqV9cri^dM5$zf>E;kR?S&HIO9!!%%J5Ag?>=~T{vj; ztlqmdJfimI+)Yhec)C5A7OQ_ZwYj{7R;pdx+TS4JoA6uk+weP3WA)a12zW1ylI6E{ z&edW~YuBFSThCGG2`zB0_sKymlv?yY10ouq^W0r+o7GyBY4Gs8UHA*EGqCGCa+b+l zXs7zw;$A_0mx%Ad@53L!AHpBOAH$!(pTeKPpF{6RR?JEM)6efG-~*84Cd=pY!VlVH9Qb&Uk-51q9~WnMq%0jat}RuC)F@#2?|G;Gf}N zpvLKyPZ01)7$wVZy*XqE%vv>4@6*>UB`&mIy*)$Rh#E2OL%^rv2xQ}PudVCak!hv8 zYwJe&3awKsTi3)s1@Jc#{2l(o3|OUiK8^gD$XdkwR?XSn87-BvPpdSSO69GzhHAPG z2RGNmP6-~@%;WgjCk^ciH&4^X{<#WiN zhf%Wp7Oa1}tDk*b-toKJ~?Q)id_^o3Tcjjia8yLZie_St7y^@h*U?SlC}sk0mM?r;z2 zT@$Yc_a@vq&J~E>B6`+W3HTaRU(+ea%-OMD-PAAs#Hk8BsHS@6F{&2PbYCa@8&J(n zt{gLG7LRq!bd>tDctM6jJJrXY;%?@C7`8w3p38yA_lF0;2fzoy2f>5kAy9uPev^Q2 zwd%L*HNl4dfuX^5YX{215*f|(D7tVw8;R1LBJQ5xStwiw$1pE+Muj!OyPR=7mV13gU5B3k0 zH_$CxOkU_4b+=FY6!%W3bTkQ$fyct*;PLPT2xghzJ74lgl>1}&6Zlj3Gx&4(3ut+W z+pW(!c5D;tQLfoZYNBm29Xh*{)LPEM7E?2O^ZjwjiMakGcrrW%o(fNcr^7SgneZ%l zHe3kLfe(h~!t>zy@B-Kd7r}P87}}DGza-#SP&-Yh9JA)j^+kSOGdP@lA$Kn21vXAy z*b-{)n-Nc>Xft(?UcEyVYND#wP`&hzJLsJlav{73E{7}NO4tRv;l;2A_QF1>5{kbk;15u}Os5>P=GQQ$ zxurUV_a-l-4sRGcjIsiYQ?}$WHI!!lBLRPce};d7_6)=s&#semC?Rl~T}uXsN>wjZ zhhj^KHANL`Xv;Ygebd8Ct4OdKu7Q_8TXI)Q^=$Q5H6>tOG2nXSna1#Wx zcB4G6-R$>v)cfFy`@$XI{osypC%7}*MN+;X*y2;FkMYh!$~sB8QUBLJruWRMTztlx z)}omKQh3HI%BTstqK4|_2ytU_2*+%O!>|lT;8k!Gj=^y_0k4MFz-!?acpZEMd?dUc zJ__Cdx569YP4H%T3%nKH25*OthL3@dg*r!ZR~)n()L*7kjyXA-6oJ#nVsdrAvcK}g zX1L04C2e7As9mUG1nTD&c@j6d=TSv2cSzgUAyftd|%-B8_y8>Itra9!U zg*rL1ooSznlkS91gLlEF!)L%}!e_x}!{@-~LTgt%5C!fJ)yH(oF&mGZ-ofj_v(8P8 zoJ`t6Z>hB-$2a^OInN`(^Wh8N3*n34i{VS)OQAi{UG05v!@khgIS6+=06q{t2p$X% zfrrAw;NfsKoC6)1jl7S#|6?OaJyCmB;}Ml<;Z{ae{cMGOM4cQ_>iROA_Hy_N_)7RH z_-gnX_*(cn_!Ae{8Q4^YLVu~h*F?{v zbTi#ef;Yf>;2WX#>_-j`1fJeY1;Ze|f$e#9TqEngbQrWR;I?GY6dET=rH)T3z z_Ib}%^Qwpj)llv1ohK6eCd_*?d<%Rld>ec_d4E-d=Gptd>?#2`~dtQ{1E&w z{0RIg{22T=`~>_Y{1p5&{0#go{2cr|`~v(U{1W^!{0jUk{2Kf^{096c{1*H+{0{ss z{2u&1`~kFa6pyBXj)At9>6ByEJbN~+$8^?g>ae$S1Z4&`m&4PX%G6MePSTW`*jclV zLOzy+$HC*_3GhUC5E9XtqyEmlV=$bWN<$B&T zziSs|uMU*GN>KJ{LD@BtvTGw{*GS5q50v-EZ^{Qm@_~`;{R-0`6vaOvl6|_-^gdXn z>=UcXheY`gjpVT98vac0HMjEYO6*kpoJgJ<$@3z4ek6NVw|u7uW&53S%{yAt=8qN0 zPqp?ZKNnHHw)PSCqp3Bp=}d)ZH2b;FxIUK}?7u%G!H?jN;ZNXC;m;tLWq+}s*uQ&m zKp$KMSHm^%5_l=R3_b+LlPSSzdn>Dt^1VHdYu-_7x`{Gtm(yr~z?tMPY;C>Z`o+XQ z$4$S0zl6WieJG{)Pzt&nS}w_^wSw`*cMhg{eG_*M;>4Pw3N=)3SIN(h?D;hbeq%!7 zE%ad+uogZX_CtG>l@dJ74;F8{`IKv(!7XV0s(&)Qrf_FJc2y>y2C8@s)ym%DIpMdM z@jLi?_y_n$_$T;h_!szB_&4}>_z(C`_%HZx_#Ze4XX!q)Hh3M14?ykEIOUi%UwND6 z{ocXNBSWS5YR-8*u*ociKGz0&>I+fYO!vX&`@$XI{h&5^K6YKQo`@2>0&ajCq4hNK zm3opbZ3<<}QLg#kZIh15^wU$&C$RP0Dx*;~R6~2YE0Z1Z=uU8FxC`7B?gn>6G< zOrIL>`ZF*x{@TH@#e<`zf#8d+QyC{`xkkxy zaq{cU!9dqTfg!A7WHw<)6e6;|3Sp~8vRNzHLNc!}0xN;5MzT3qjfA|}M5{(>sqOOr?-c=K?i~`$+uIb-0wxoY(tmFk$U^TdJ zbfV;CQ(*hVSke~ea@HQ@Dmj;Qfwf95E)PtE0iI0B=VY^Ii;Yd32?ns_HQ{84$ zP+-1piHbATY+j_97Hr}`89maqU9LBeBxPWIjXO54E3IE&THm$q%4GUzR`J(Tt_sc1 zQGCb*Y8>TDdz#nEf%O#)tDdl#Kii^;x~XGk0eT$~>1P=-*MW_@WGQmpn!k2%T3u0IUmCJm(*m;xy2L)9a;KuyX_0akRwm;Jyb6xOC|f$K z5uM7`XSn&4(*e+U(02Ea_HP*NAKBP!KYAICu&&dsoN#p;Bf&T{y?#`VndL6MFm$yYqhyubS^~AbKryFx$r!A zKD+?7!9}ngTDkRI`su79X{PdfSO1#jymYrLA0 zTM}~Ba8og`)|pF32iJF($7WkkQSG+%O1#lEQ?GcBFfdYQVz9DOUEDw3Z?w_vCq@TaJNsK@Ph^r~ z_faIc0d9pi!kggD(A|h;O(a`7Au8)qWy@7gU6Oxwl5t5#@*9Aov(+ihYe0s&p_hX` zxXOr3+U#NO=s28Ifz!I9O;(-iwK-dEdaU8^C&a$78pYN`3VQ4R7Bb!nZ-ci(Zz((m z`LXa0_&E4@_yqVw_#|k3Dok*0-!@*gm34x0-0*fx<9DV)WoKh$_eGUmj46A5Rdz2> zIk#a8X5Xo?*g0O>tVMdJhF0_bn$RghbDvDYr@*JeJK@vdUC?}%MDTWRj$HT5q2|Ec ze!sk2UHH#d&7z@ckH3U2bE#d&%n`RuwUx=m_oDu>)@D;X>t(3+5cp7dIeZvYV_WO# zG}ANSGvTw~v*B}~`7DRv|6VIEpyt5bR_^W}-xy}Pp{u8E>8NoHRp0Y&O=Ke21D;F5 z=RxzCUO8skyJnLzFjwtxWzp>F#r9mw!NXy{5mXo>w~sb;T3Zz!2ij_x;krT(ISU4c zK+N! z=mxkI-Ux4kH$yEl|7R)qbMW)<3-F8ZOVE6lLvYI-!475q_**Vl47hZD*PJ!I{XGSpXCtz-*eG?Y7VUHqV}P|k#*(% z(e*v0{^aIZOG8Pkq}F~DGrtAD4Zj1w3%>`=XE_A__qZR?`nVeC+kDWh& zhBtCU?s#avvDb_awt5+$R?<=XL$v=9{4x9qG@bbfZn<%Dtu9#Z(|E}p$mGi;LoN1h z6}=^zE*&C2CBe_&&*3lNFX6A?uiWl>%kUHx*p}Q1 zyCxgZK3X12pJxdMhL50YXhkj!rBBv}jGc>0{hKX1aC!gehSHk;!SUqlb~aaFcs8_c zXvm%u7=l)I^scd$11n*@(^9SJ?TAyY>Bv^wySaa8h-wYjkq!dw&|piXoo1=7wR_>< z1%r2o5;a@;%k8E4ccYfA$Yo$0n&mv&?lt8zltRcR}T2zMPl&^fWt_l@|{xo6FVr8fsmm>e*KYs_!bW zA3YY{SXjRw3It}NJBBN&JDxm(V9L@ zlIm37H@c;5L-IONc&lh|c%qb@N?1+o~2}ps9S;<)mIRI65}&4t5~ny`_Qj@cKF#`Zf-Z-uq|&RwwAG z*`_nmyLN)MX>IDjkgD>WUv_E;ft|xwl%qSqp(})_a7N2IB!pc&Q5p-cm1a9*2w&4b zI-D#et=e8?ud#9LH8zmpjhNeeWP~!>M|vIGaj_LyoxEU*6WN4+A>m))-{9Y&wwj+{mqICH zUzpGI=~ey_loXh6+rouQD*bob<-JB*e&C|b-q)>65laWJ(7M3TkF)ZHBPAaUs3h;6 zx>O3u`UbDK!r3rz)$pd_Z;PeI8csN-v(8~+HiZQ zYWMgzI{pVvsxxlC54$rcZy*#7k;@8|vP! z+El8RJCN{xa7VZk+}Uv51hpOE7iK*Nq&*BR2pt+plbA^(dseq zvG5M~IH=8bm0hrISGXJ89qs}5gyypxoe-1cO*>6HEGO5AbE!G7z=<>IVAlQk$XAMc zVbtDm9|&|wx)ETw<>uPduwzsg9xZhYFYcaz_D_UQf=`A|flq~Z!l%Kz;M3tV;4|T~ z;IrX#;B(>g;Patga*ekyUfK`t4-bF`!u!L6-~-?T;e+78@DO+?JPaNVXTv#gE}RGF z!v*jNcqBXu9u1Fy$HL>_@$dwABJ@mqGV&?#RCpRZ9i9QtglECC;X-&0d@wv0o(Io| z7r-{S2)4t;umdiEOQ8>}cOqX1ZCBgb&L5NHGoB!vh%DEom9m3H*%iLByL!ql_LaRx zQugXn*(-EqFTs@E^;32qTG{cb>?XIe--}ds4^7$UsIY`+J zUuE}WmEBKOb|tDjn+~8nCz9tz^1MiPDPjHvQT!2+d}Jga70E|O@-dNoY$P8S$>FwS z_*0(~s$wdi7|AC^^2w2WN+i2iVEKOjQu*{K{TY#bW+a~#$!AA$?#W0;2G%{nR!>F? z7gibG1=vd2$tKOz4K0^Nfh$VG6AswGmEr1c$a8*RcX?!D#4#M$mwfChxlv&$(b*$) zyVFRLqp81Kvu*FdCd>|ZaKqiaTHDpq$tG|`|Fwh3$F)i|ckWgU4p#%6rUH}2@p!UJ zobF4-w%HY$GBin)YpZ=Pu)x;k$^D$Nx;fW%TIMw@&5QcFLIN*{xUzW|e8sOiM($%{z19Ik*Xq3Ot$&PBF> zBzYQdb;jp<#B+aOtw&ZQ&z%eo&$i}tTg`wB)$&DD`(pSK_)^u$pRykDkZJs8xgbqqYEK=HVw0zA@!nbx4?Q9&!CsQ z91pw#z7oDl&!|MiTpe9+2G-NDyF57coI-LU$^Ua0y&6?sGgFmZ5(m~(DS38ce71TN zY2?s)EtCvZ)q4-9ZhMd&)$G0_smqI1^6Sdp3ka_z{&=5dwB0~LsRN`j(Q_% zy$QYwP=K6H5hOm*>+H?Y=Et-Po1Q1}39d~l}fFn$1&CUxo3A%dLwDl~`D|=bjijKUjJsnGWI(nC7drP+D z-j24O_FScV`?|VgceKY%(cZSQy<@rS^uSO-ds}yBU)yq*<$;yp5#bS;Ui=;%#6(h+OfaY;w}s=khCC0tU+#3f!L1qNR(IXPBl$;l^852};u zlu zG^bBXbH=ogGpB`|H7(@qxRIB1u56pukC(<{d}&YH>W<2Ex3Vwp^vmKRm$j|Duq~dh zmUS%eo)(tO7;$NxahL6E?^=7(N%2e8fc{OA>WqXI#K?_Xh$)0n6J~t!!VmwynGSjJ1|q=ijKvdZEKTZ+tJ<^kMiYb|sYhGdW}ua}`?a@xrw3GC{L)$H!+YVYXnP23w#q8G;j(-!kR^-p#^oa|zo zdOG@6^{k9l?de>)tS@fqN?_heu&3Thu&3@xu&2&Rus7DLw>`NcnRfY5J-^4z-P^Gu zS^O;TS~)$UyRE0Kud64vucFtqz;OLIJ+PyrJMMSAE8Du0Q8%qIdy^hA?R?m~YEd{} zPg{XayLwJ0thjYo#b<(5D=%7^To%Qv+f~yp6IaJG!s@Q&t5$TZ4Hs28Q7e)wq1c1u znqK~zSk+5nCtXtQh$rWSPutp<*4HnK2i0X=T`NA3Ec?RWNma}`8J+@9g{Q&Op*P6A zG42gjhkt>KpgMjF`DO6c@a6C|@D=b?@RhI~x*g@}P477veGucX zq+bk&;R&z|kAfX=9{fA>L62jR{|1-95x50j2Oj|+39pBbf;Yge@J4tOyb9h7Z-KYM z+u-eR6pq1hI03JQ*T8FG*xe6*ORJdmKDZ2q8xrB~#42XZhn?_8@F(zx@OXG343{I} z@1iPZxz}X*%L#uAd@Fntd^7a^*Nc!Bz;DBsz!$)Wz!mU*@NW1<_y%|nbUAT2@|AEU zoD2U24~0*H4~PA59UOq`VF_LVH^7Z>5O%?Lz#qW(!uP>%LdTnaah!ga_}{@l!tcXB z!~ei{!9T#?!au>^!>7Qf!KcEz;GOUn@ZHdSzeN5O{55`@?_0 zW8fV4V|X#_f%kUcp3aBY!>Qc`biITL}2ahiGk!*=JHtbafsw4uJFQp ztlyhFfz`O4(pBLdu+n-}x(`W&y~x>S z2P2x~HhXbN^6q;5pVw3+8$7W3W188Jj%$-=nQA`r5gtU++`!87KNhC_v7P#%Nwf2x z!J0=2fknM1`G#Cu@?yPu)vZ@$Pvk)PLy`6>-^D>UG`)o@$4tBaNu&&Hp!}lp#PIsD z_NfuklqGvmwHkjIOFj}=WD8$R!XDTQ``{|L8rtrSEGBvGBRm?Trz}@F^_Z))zy=;` zFAWXN)L+*BQT+5V_;L6N_(`b!J9DrGgD-)X!pq=8;6vf%&~~sq?T<6WT>Y;#lffHXN<_C%^v2?cxR9*u!*ivRW+PO!bv6nca?Ub z*ub`R$*1R&@6Fh(fypDM;THaGBn#{=CBL1L{Eq2{_~X^-D=hk%ObwB1w5x!?Mn-S! zAMLn0(W`BALv!=q&Zuec|13@OIrw?_1^7j%Irhqjaj@0^6F`I0?s66pfsL$68f5cu zZ}P)$iVV4>~trN{!shofRYTnE)$gDfYe=?qUTJ)N9^4K2;AcV^a*R{v$~ zQtybl-Oa^uU;}meR6xro*+`XiN*mCJQ37pBU3wG=0vqT!&5LOv*-EUzS95gUS2*}8 z{F)JDR^jy=lnlrgo*WyTR^Gx%EiB(!?ex~;r2lpF{s#Oe{1*H+{0>xouXwJ&fDLdX z9E4ZGO>hWqhQqK7N8nX(6uKn0e%mD`$@AceYpdjG*k5ma?Y;<=s(O zSv!<%k6EXXFt9<-4ecI&5vbL+j~9U7#W~;8NvPnI?=O0cGn z0+%G8^{T#bVebqKp~*`X*@V;AB5@O-ZPUoLyM^w%H2gg8;6TgQFHXS+pzV+F&5z+v z;7{St;LqVN;4k5?;IH9t;BVpY;P2rd;2+_i;Gf}N;9uc`(9_LJ<%0=71iC4B81mt8 zHk;VUI!lm9|^CA zkAgSAt?)*86TBJT0&j)4!Q0`Z;bY)q;T`aC@bT~o@QLtA@X7Eg@Tu@l_%wJId^&sv zd?tJr)IYc_o$j30B+1iwx=kv_)1lL{`TyIeDo^>=zZV87y91^icFDq@vO99h`&FaU zcsJ#YcbqF97^S~|Bp(#X-n1~k<51c0sO-2@c6=&3PL&<6%8py**^xeTB6)5k=gzGi zBn)hDPN_4uE?me}>hk36$mH$HWCL|81t#02Q=b5{IRh(6`^p_drOnATqmB!#jcFTR z-@b8hXnnH1nmrY*ELW1n9oi0W?aeaRG0tFt4IC5JOVd{TbrrDryZ~1Io92*9Yo5)) za}0<|H8@?(IG+YKq4kRL#8{~{)%QhbRsVaA>d!^D=c!{O)jf3tHc&lzC#*H4^|#a7 zKT!Ig@L%xX@IP=8s=Ky4pMw_|U;=1x+Af|40~;7OgErATFBtqt@qL))?+bT;_k%ma zo#4)J7pPU5^Fj_@WPl0s%x+;2g&(t=S)i%5CyGg&|vW(+AT-* zm!k5^npM4pZJ*@E)p+uy=kSW|OfUA-dUp=?fP2EdOhEszf4&@ZUIAYTUj<(cUjttY zUk6_gyg&zoLq&qFNl$q}p#aLsXh(rD}Tx7uZnk z%1!ERo7MM=%v8^}aqxBnBE=0(6>nkhKY8JNBzY7d`MslzyPF=5)@c9U9}5nE2SPRU z{*v1}j;D8!;GOVY@ZIn|@V(G{I>M%lN%HMK4$r0Lz=mC8%EQSGtz>tqCCom zDlZ)^PmFADl|R(1$_ue2uxT&%CbuM8ce8HNZ3jh-V~_eUx_< zQ7xSotg=y$`j|TA^te>z8O^FQS#zqfjqm^(=YjA+PzzPeHvBjieFAVu$K|8ofUQKMOUdRkKqw^>bi@@mU>};h~0^++ngt zEjk2C4~2(Cmb+>6IZXUK`~v(U{1W^!{0jVUoldQ1S_hhuXM4)!>_tT66I;2;X*JeH zr(OK3cqEEW<87JrQU4}(pOW8u@$)|X)M`_zo~+K1E(U+CSyfvYoxOwWlivtSo(66G zjN)BU`|RNuIUCN2jJD5y9W%ZGzX`tuzYV_wzYFb4dPld!Bzf9`>SsFDQf_oXoc4eV zs5!9FY*5#&3l}b~{6Zzyl^9`-i++71&csek^OOw07)ZDZ5vmIW0ZJ$QW?ci=C1vVP&VeeulXMJZ-l|CY}PNRN_ zmA`_&h8nMtmJ`!-hNqpOg;CrWe!#BP3neSkt|K`(3LXuQfhy?L=iXTM8!Y%O{2lx~ z`~& zZnMrIV_<_(Q0X9bR{BkEEybhZSiKf0|8E*cV~9?jn>(a^E+epkG1V{0wc6daK#ioD z{s+wsm&T`V_sNsMB27EP3mHS>+wi;g$3;%I=S`|AUHLxnzHkS4Ke!__e{7m2N{d$} zd)kPqWqhL%liTP%d=uETE5ln-m3=!;vzk*wbvr5QkjJY$skLnU9oRBxI5ef?g{sT=4;g*WN*3)<+^V^H3v5A zGRf;uEqP6=q>HA#QGXw}FWe9A4-bF`!u!L6-~*rwLhFe;ld`R-O!lU|Xlt3@2|!ur zD65xpI_EXJ773j;bAcV!UDlzkHMAl}sRo}!cRe}kw#GjYPdo@3ZsC?2Gq+o{G81JC zWCx)o8`bHQ$Tl16U~D=B9tsbGhr`*>e2r|^N7hgFraM!v?^-z_CJT`noDfz0R9tpi z@{+hw^fI*OVCi)O9l`J(!}5Y9vz9=JIAxw($ow^o;xH z!xn`dHLyE*n=2F%hlO-b1c4!4<&9T6T3`rVHKHE_D@kmqz*Xr}+x9qg@f&Zch1)^8OR)1bg)Z)l^fReQ0md4XOsTY}V8x~5r!b4{H`34w9X ztGs=cymwyx3DsmrA?HUbY=^)wdao{JL#jW~VH*Z^kCw)gjfB`HG)cDwlp8VEwqwW{ zm}gt^1MuN(x@6Bc`T2)@6YX+=ZDYy1j>&iFH)NY}ammnZ((vW?%4gqWTU%{EeUNMG zTv7z)*}Akpd1rrgOLuu}c3PeXb*PS~(|ymd8`nu2f^u~`f((JVx+NDwBgs3B1C?iW z3u|%=EJH!N)|uow3!V)Z!gJt*;knTA++90Rb!oIC;Zg8tcnmxi9tV$yC%_ZoN$_NN z3Op5_22Y1)z%$`l@NBpcsxNA%Cv5GKwx=@L)AYC_m7R`F@1R!J@5;_!$_@l&hl}#I zZgjZ8WO;5!D({O!l=q9|Mvva-_UG^*aQF)>=+BD=hu4RVx5fSA{Yys&(@#cJ^2YzE zT5XJ(@u$5sr*0PNz+T97CS}wNu=C-(}t5_Z9EcromOdgFX*y8yPq zMX((@ANJtpUf2g$!PRgLyaZkfFM|((4~3V*hrzY*;jkaBgU;8em$tIKLFzwcvZv{B zM=I+V(>rRE^}DiDt+KsW*-@f=Z=bi)UfJT55`N2~VQ18cTRG5qy&UwxRd6-55f;;0 z9Z=^D&?>I#OUPHi4R9kIgjYfv<$t;}%-H$K4=y)7pWlx2?Wt>U@+I(6co}>M#8(?1&=K)J-8gnOJF$8xr;RrUO#_QoXq6w@!?_w) zON(C20Unw4P;y-k9|ld|NinKCLB^}$HSk)v1zraq0Urtf*Nu-OFfg#d#mV(`d315| zI!}2+Q-1EmfhJzd!NXxcTnF{{g{WhfxE{Yf3f=&>!W-dD@Md@mycODh6rY}CtXDce zDw91;kGiSs&^LXnC#kfnABkpxh3&9;U3pRY+NSU5u2nNFhZ=et7Tylyz=4h)AeWb6?tNZCxZP9xE~511(2nqE?0pP;EW86g4n7_} z0X`A_-yO)I12sQk>i@WrY@a9LkG%M_pUfvkU~xZ5UX4j!+@?L_a;vhnyLVJS)l_Ki z9>84E1Qu#lxqN6zrw35B5#4$ z!AHPH!t3Fq;0@4A{uS7>5_Z9EcromOy|53if~(;gcnS30+>_~1Pk~Q`cfzN^yWrE| zGvG7fv*5GgbKrB~^WgL03*Zaki{OjlOW;f4%izo5E8r{PtKh5QYv60)>)`9*-S7?Y z9{5K1CirIf7Wh{9Hu!e<4){*^F8FTv9{67PKKOq40T>>(&i*;}Vmjj*PWJRvNq0(R zXLQrIdg^qEV18H4%J=s5o!8;k*Xq8c`@QD>f9;bX^XN3%H$RdWM6xSU)4L*4J}OFo zbR-`W$zFDw|F|gLCv=Q=A*1ZwL*?+uTKH3TTqvh!It>YId`=0^{5Ui!<;VXyuDo>V zp+furR&w76Z-O_&Ti~tmHh4RHG_<@+QQ$K85a{>6FGqeDTnir#`{BXxgG>Y;f**z- zfggn*gCB>VfS-h)f}e(;fuDt+gP(_AfM0}Pf?tMTfnSARgI|Z=fZv4Qg5QP@!aiX? zh-v#7PWH4P;r>+q|L4W3NA=hCo)^<`>Vy(lG)^bR#>>g~3Tsw?X(6_Lpe-Gb)NGn? ztYzP^D?|y5Pb+aMY;bXy+@T7OhgU8T?Nw3HRnZDA;6TM6L$1d{)2*Wv3;iyNe-C~i z{s4lsZp(>jy@s1lIdy>Niok-V3J&NV9N1KHjht#wb71kdlhxjVeUF2WhmObrN?8v} z@CvvAdX4!*3jPuNG5iVqDf}7yIs66Onev2s$86+A%t-s4_E^qNRG@6V$}KlTWuK_& zEsA#Q(as#^Uc`lA5&i;;ddFb$O@QQql_f*{?h;h8P5V!M@~$q8|0V6DY(dJo3VW#& zSfp@yU?P0OEE&_A%fp?+$#(6y;WOCf4F*9{%?QKaULDU`sYXTf=KqF$Mnw0%3+Ze z{*;fdimAN4uikR!UZ0!^Y<=!sxUggW;P{Ht}kYU$u?t$wtMWPOfJ}xi!#_NW`C5 zFu%1~eoWIDo-R=AWr0mJ?(+V1CAVL#vzFH6Qt=|ItWB0K{ryOUFXG3^m1CwBI4%O4 zupo4u2CH377^cofCd{VM=0H`|V&#~vny_Rrd8V$lm7;eQ9X!uO#b?21!{@-~!so%~ z!xunZvl-ilp^vo8CEYwYA1;7Lz$4*N@Mw4pJQf}YkB29~6X8klWT+mET(2EAiQ`O} z;?l|1MV#@CE&%km>Hpg&@7xK^vru5cXjzh6ywBj~wQhPL{(BL8F?=ItCF8}A<;D1~p+bgjEGIm6;O z9Z^erv1hH?*jck|uJb76e0TwDgNtB0Tnszl61WsDgPqWYf%U6bOuLog&5mxs@zn2kJ}c0^aVfkl?K_;5oR zg`8+!j{dKJuY|9HuZEr%uEM}kI0nbz1iTtv1FwZ!;C1j3@R9I(_$YV-+zR)EE77Y9 zcEgKd5A20~a1~q)*T73)`~aOJlWNoRS*z_z@o9ejZ#n<%^I_W0&d0LA=K5K3K{7lx zF@i9FRxT1V@X}yz1V3Mj5 zmN%>%M%LJfxf9Ci%HbnfI*V zTJk*{_QQ2>0Ir86cm>=5|DW&OzPAuKqvmZ--h5k^eCVgCX7*+CxG%VP-H6)<;gxU` z^uo|f;9(>X z-6oK)hS$JrVf;AL|JG(uFPk}?>t{R~Y=-SJ8tjF6PlMTOTkYMcne)gQ*kI5%{owsA zIFqh0>vbHw9^MV#U;=dTydFQ|wv}`@!kggD(6eK!PSClwJ;mh?@ziNeZq)hqS<|=L z#?%B$6mLYfwQoVwTcPP1IUqH_+YW(Ew0iaR?PaC@WOmU>)>T6l@v&y*d!k&5w{dVg zd^CIvw1uq1@?z>3!_B9h8h$t>1r`{-qBQITXVtZ|-~kSl--zO-wrf6?@H^n+;N#&F zATWE{6)j&jGT3rVpE_VJMF%!;z@q-<8r#dlRA~;Z`-v(OB``kKZ2<`a8|l{kBhn+( z*7Y0$Hn;v$-kA!OZ71dU4DAZVc(>J*U8gI1ouIr|RNvl_ z?A5#J8$C#xcHg5YD6p{mj*W$nzO??fj-GoLE&p!#9{67PKKOo!UbD13Z-dnRoM!hq z;w!Vf^Smvf9(p!rtCQOQww{&t1fOjUEb0l#KEPn*r&*JCN|U#SqUO?FRq7l!rLNI? zwaL<3T`sOX^~TASW2QzNO~HW$Ms$sohNtco6`EjG-5e-?Aj;+0+mmTLW9tenx15-! zGdwkIHaPOn4bdjtG|gXb+-zM{KL-7&W&z9VD$T9s#L^P0mHtSM00r8+nCi zowc+^Pxi_mR3(zzc6oDDY?8*X3ZZW*N36Lel*!110M_TfRBT= zecr5Wuh)atXFU{iubqcej~+oyfd!+1&oP8wgK5d1_K1&=>!a{v(D=ur#uMNZq3Z+N zA+MZ|Q{E@wC!y^?arc@(t!G+~J%*YC8~V3%pgcVDJ2Lt}9iBwhxMJ3)IQTUD4E!v# zEw7Gm(7WyR)z6`$tzY4dz2TnkNz{c%fE)R{3j}DGBec63IhH9_< zSl8JzzJ`5Yho(23a?G?5nq0|M=f*zmnAxe+L8x*z$~RE{oA6suBTXM0p=>(k)VL;B zc)k5smu9%aQ#Gk7-^PURKvgrHa?DiqIiw6M=wH19qvfF?DzWfdT7?UnU5IWpX*3#A zp2nX-c~6CR!l%KzpqHKBMcePe@53L!AHpBOAH$!(pTeKPpTl3kU&3F(U&G%(FNaa< zzjnIxG;e#@4$8Ztkn+8~4Ul%VCQskhu9kil9dGKzT55yWat@1lx-yqbi{Db}@8Iv@ zAK)M1pP+rva;!I|^&9TYqfBvWU$9)`Q(rBhroe{7vg!K?4o$mA-h>#>D)CU#4R)PB zW7l8cU*X^2-{C*tKjFXNzu|wNjQ4@}g*(9e!5!gFP^bM*H&!}!ntbv-cK*VJ{6J^r z1<2&fv-(BDYG@b9d#OwB?~IprfxANEE!6U2#$7zO%e7HbV9|_`KAB(batjx(m>4fz zI}_8dQdez&2JeQcQFJ=_r44oxDFT~Pz15HF^r4b1+US(81kEXBJmr#jyx%k!wbv+y#XG7DQPB~_(yI;EqEYiJtqhVX#SoQW= z-t|MPYt+0&n9cSaeDGZOJUAcD!DVydJUAaNfJeY1;Zg8tcnmxi9tV$yC%_ZoN$_NN z3Op5_22Y1)z%$`l@NBpco&z5Y&xPl~^Wg=s4K9N1a52&mk-WXXgYm!Z4b$8e z+&ml+*kI~u`MbGx%J_!;Ne8MnO6ynFr^<~6e(I|xuO8D~(r^~)pZc|&RMG5# zN_f5ERa@RAc%!RAjeS0qyZ}0Tti)?wup3?sdtfi@gR9_bxCUMVFNK%Ehd^gBZPwnH z>TP(djbtY>zkXEqs#@a%$msfMb20|&}(0GL=8J`~qq4oz=5 z<(R1n;ja8on5hM=&Q`&KW}k?B7`0ltyD2KC5$jRD zG*cr^rNqEynqg&WY&`soJ-^*)_ffAJs=U{AHIa3M+yz3bo(^NbSx>8+%DP{retP-} zJiKA1o}NpIfek!8KG@s?5K3;y(Eah&v+ME~W7A9EOX17l%i$~FE8(l)tKn*3u{mtT)-9|doK zTcNHa+l=Sf)a9*BGr{Fe-$uR7_ElME@Qv6MMW;5UI?f?QV8J|J{e^fvndZ(GZ`B(WgHd@baC}jHGBl*9z ziKjl>x@nho+Gei#I;XyG%GO55wWWcH@$$C4k!zbhi^h32d=50e)xMCsUSB{-fqBC_ z{KRY5lrQ zd0U4<+Eq@V=D?=h*IrJZsZM?vH+=+D)oZApd7s76?w8_+m%*3ASHM@oS3&bxnf1in zR{!O8x9~NI@E6#czZNd+?A$yuWY4LT691jEb;Nuz0jQvOf7y zZ(jv(N<#-oq)_@o&#P&$*FYP@^com5*P#w7fLbc(maw?P|Q^K7J;y2tQbbDP<6>&(0> zvptPfxwm7Sa%^0#@=cwae3G?tcV@dRVO%!81HIn~-v!?d-vi$Z-v`Yf+o}CBZbTd3 z_*T#HxqfVBOS3b1aOU1<{P*J&jf$O;tMrMa49uPH!v;q3D(bzV_y=aH_y^OH;Va6c)djBoCNNawnJ2J!bMn=r zP+B%oU-I$PY=x_aHw`E20fUlkl|LMk-p0x6zbb0JM$GL3N0Boy&y&@;t9m25cksH> zR%^?CsVr-3FkVXnm-mlu@Q%i;5KwWEV^JF|HSWfS=P}o|`Q!-9vyFGHx<-=^nQXO& zV3+!5JHVpyc=F34edWILNH%zR>5B2ba?jv~jpNziN%pv@_YwF}_%Zl#_zCz)_$l~l_!;*Bd;DQW^Yh`&CYSIxDv3#_E*Vv>WeHok)vV%ynZk8$?rXToJzgGBOli ztZjDUeqN4-4&(3O$L~VJwZQB#x3fjP<da0_YB6K499+rF`{-8z6^nlf*J*lGC14StNy>MGTBhB~@WS~#6p^*gET z?eIPDP4LZ7-SU{*?OU4RvzrfyI+oM%~KEvU&lr-8KJ3vzniW=7CLU9=1;IO}&44FX)~8 zu+&&j_yw%+zT;HC-mcfcziL+R)9`m-1Aiw^!Q4yz`q#~B+x$tHZ<00tV7r&Yo*#}t zrz0cXjQrhaCCo2UGxPs_;1>j6Q7>8jwV51vC84Gn*QolXWS4q zm8gRE(e?iEsB{86F;dZ1`8(nNfd7R5f~K=l>x8H@G|81MUg;f_p>v9rc-d#BAiOv~eg%Gc1Sd()m4}&vlmR8|{y#jnn+n zsM0ve<@G>mY^*#wqo1TuyHhm}YwbGwVCKGXKdARw^>S)ui?d4gI#!=rYYjEUQ$$T< zB52b7m~a3*aC@0_JT(S3an_qUNw;K{omc|5_&{hn-K6_sTA$&% zQ91X#(PBTIa>w>O>pci-)i$;^SNrDoi8_}j_ZP$T7_MGho+edDI(;3C;)lRP;bHJ_ zI2+D^bKyKVA3FV5j}D31sJZPn=Ck)HQ{9ZG#dLyb;T#oiLT?x6Yuo~?I07CCkAjYY zZFOd9YzqsLq?5U$+VrN`CAN+V=P-9PG{5QSV3@%jVVpbb4EofW@GN*XTnNvB8nZVC zM^n%-@K|^pJRY6^PlPAIli?}wRCpRZ9i9QtgnOt6)afz*r-ztRjC#2uQ`Qc9dD=_Q z!mz;N6I^XCXn9-j6{?cs(X;S)6rD~wsm7h82%M?L$%E)qyOY~Izk9Af8xt17bKryF zx$r!AKD+?B+|&hnEatu4*-}?uj3$BG&DE}HotU+@hMMeFT1{jk7~h8Lluf6cJNq@i z{b#=qJ-#KKoys1}!MX4}cs{%Us=H%(5w^9%#jpb|flJ{s*aNJ>4_Ycar}0eLm7}Uw6HFv0hbI z_jIQ*VkR9KE9xM#sJ%ByEb=fnugX8Xwl%z6q+f*AmdTZF++U)&TN|>m!HM##`t9+n zu=8o{FTGy50HDE-$nWkz==(b?nKqG2-a@$#QpO(&9miBJ;oo z6_5)|Az?nbRQg^f+$MaeaJz7aaHr5JgM5qV!Epu`H2rWqn_tQ=k?~Kd!Hqr)?mtA4 zoRs5mZt9h}ZdnTVw8FCD()PT*9X;mW8cKjT?Q#X<3gMN)hY4{ieAsFcr*IrT=qxB> z8cRf21fj4{}*hdH-DSVXh(Za_FcL@cVF6d#g$TkHQ{dIoN!)9d-}l`i{m;gcUYC#k4c=fz1?2I zL1Q@v1GX3oSrFCbfIY&!!hOPq@NvTZ!lrORXq7^)#c>^o+VmrF*&>)a&w2EK&a!a~ zhx4L}O7>tF?)-qKEejTfIAq++%M2@XC$67KTk8wqG1yq8NhQWM!Uqr+eq4W`>4l2P zMZ`v2gy!-3qa*AJmxRm01463=axEgC<9HUDerT6@sLUGAdMF)mbUff42&8>lYJ66R zR}}fh1}P1r(S9^_7yVO`w->F#llN+@?}MN@&uuEJ8{ag{@!X4F>e9xZAkrHD(^od zUwHQ?(lZ8(a;t%YiJB!%KarmG!`%hF)5eMxLpJ!O8x0br=*Kh9swPRmx zv3?wqvmQ8*AkwxfN|y>RGf_)edVl7QhEvrtVi_%WhG$}~7EkXdqiDoL7;$s6*;wq> znd2j7Ps$A(Y%jOw;~6@^i3q^i&_$SQX8wR$3r2XEz`2|HKWS53$ep2L(e=yv16{W% z6c05aQJ&2_RexM9e46m-!eMlMqTG@I_w#1)zwXwbX|9Qr6@A2%*Je~dYQ ztf6md=y8AAn2qU@v&^RO=y+TJOp^1Y=416oO}JY)C!80`w3+zbn)vVS%8g$ZzC-vc z!gmVaCHz(4uL*x$_#49C6uw*d9^r2Z-z$8d@VAA(Bm7(#{0pSOQ zeqBVlfku63iJN#lW>I>OG>tf7U6vcAy!9Cd;E;$h#NB4CyASV2TzfMaHb&eLn^9CE z@~SfW#bM!8@1J!j$BQuc5~}27!R$i#KKGVRZJ|C%+7iZwY=4|^zpyD>5VnL^#ZutY z>gY4VzYu;__?N=J68^RDZ-k!{{;lxugnuvmyzmP`mMG{!T3WPGA!@WEn$VaBEpcO~ zIdaEcT4lo`|6$yL;x*f9)jMH3BfQXYlJKKuTXrvEzx)dM5Awr53jay?&%!SXac9+G z$=tF|Jx3f-Ew;6rD|_3mNnC;nkC*KoVOO|>PoxR;8r<+sB&SmL-02`zMM|;SYrWCj58dA$Lp3nXKoQOKQ98%}Kn% zI9!o8o*;ap@JYfa3!frj# z>GEX6ygC=(sT@|Oi~AaLT_vrp-^8PbD9y7W&`&o>$MG90xX^S4ox6A}Q;AaLx79ke zz0nX`43Icf{ehE1h+OqHsd25e>Py?};k9>-1NCj~Zeyv@Ze5M=__{>mtoJnuDU?<-<Q^OyRRIA!(cbnXBn3Y8A1BrtvQBadbRNQC$9PDfXO0uVCDzza*q# zx73j2IZ0yvTq*cG;q!$r5WZ0OA|Xy-pXnw_s+$ULCOkrTbK#M~TL_O59xXgZc&zZ2 z!dnS%Exe8Jw!+&9Z!f%q@Q%Ve3GXbtuJ65*U{nvrIzgkT<4gKRs=-iQ(zo^?+ zZ-)0c>{<$UuEQ<&OWJe2mzB=%Sn7mN)sL6WWF?4JcTv=#?fG1-Pg2W>gY{uh>m7}y z`W3b2a{V~E9#tI}p)b~8dWrC*!j}o@%VMs&r>SMcL3Kmn>b?3kcsQ&<`Y%MbPt*@p z8JGP)e?Y%nIzqo+qAAgLmCNrYJWfdBViWupX~*$Qx%@;Lv@yK(dv|zQ@xigIJW67b z`U+#^9~di-msKYS?_QOa`P=5s%7u0-yj7&WtueR1-npdR-cNer;sM06o6AxuJo8Ff z`YPe8g|895R`@#M>xK09hmu0UIZ+*-Bs^Joittq7I^k);(}iaU&lH{|yod0f!n1|v z2q}OVjeZtwev!Ad!->!`H{01`;^e%3<*Lg8IJN zfkwOBJD2%~NH{Bei11<|g$J)&XG2## z95N@DEiiFXnrIUKj!eLkx68B8e=O7S^d<7lR^g>WJTR`OGE2`AXT(v$_-8_yJ9C--*d~0aaJz7aaHsHc;WeI7`L_rLhb<50^frAb zay2ROPPz77LXLk(F8y<%PS0E+S6wN5nDF7kM+jLph`q9kn5AU?)A7Sy73UTI;fJg{ z^o+>xx`~{DPkvQS_%-9J4~zLDLVWc|`QlN+M++Y#+$B8ZzAAgA(0kum_*}+B8HLrq zu0MW5_?yCa3*RFY%zRW{`D!9lo#B*6~H**_Ak4?V%EW05&$og_ybwQ!k!BK>{2^!-9i`fF+MH$t7Bd7@nOB;k{VPZ2&< z$S@LnWiHHIbPx3$aiojFOEfly4^fVLxxg$+tp7kBfc~81lZ#i&@TUo%F2teZIwCW) z>?|1H6B6%lj8z@EC_>9Wl$9Sa>F~Ew|L=sP!!u;%GlkC*K3n)4;UQ0l_>QOeFJe(T z#5Gm_B^npiYvBW1V|mQ(Fn-YF#ozbTSbKfrbLD~O37;>-<7!@dfJ~GZ(c-bJ{F&06 zxc!l={A1yt2>(<_yU)vV$n%@@cEFBHB=_+sHpgfA7oO!#u)D}>kjS@TpG z9&uD&#_t-B6`^Bo0!a|{>6P-34rjpmERXUZn_e2Y=g|9pKzLhsJ>IAscVC`rO11nm z<;{nLe=g+wKS|$z7JgBPQLoY;uNJ;W_*&uXgs&IAL3oYN>}4;N(+^*E$4U%#CAjeT zuw45Q;YWoZ6MkIy3E?M&pAvpr_!;3}2TOJ-xPjJ z$S)q=sL;Jh_-5f-gl`qTP54W~w+nw+_zvN(2;V7um+)7Gzb5>3;cp0kQ}}M-dxXCw ze6R3*Lhh`~oYDoJA;3VTv_i}MS%0K7=OsQnPl@C_B^cUXm=RabA1MQ%uWfg%@iY2m zh3#HaJmRR*JMcO1xQZHUxXq{z6PC~FkG~ZDmGG~He@a{dSM<-ZC4T_}&w{IUM{6XBl<|4jHH;hzgXEM&wV?oef}E_>~je0hE% zM>9tLUVnUE_yyrV2>($inE9bR^CRJpg+CGghmbM#5jpmw!jB0*F8qY>lfq94KP~)> z@Gpd)6<+7Z)VXq0#NrYfzr8*AjsykepA<#tpGpTt)nCfFeJN-as zZn}?pj#$D??RK*po&;MQ`vT{`BpC(%#pK0*N)HtOyd3Za;Xep*?6?le3@&?t)US3s zF?h07JJx>5So;fO?LW%8e-i$4Ro0#+K@mrVxBuYDSVMsMlhpcG+4yDQSA<^`((b>c z(tiv8M@WQN(SA`r_!r@qg#Rl1vhXXyuL{2={JM}8v&2+3gk)CMAM-ddm-y^FdT<_l zXUg6(>Bng7%^%{#$oZNS|GJRlD0)39h<)FXA>R~!OZaW!cZ9^ZYCmUwDm!v_)SK}` zgS(sc2_CHcwyY;g-;f)iudhF-Q{R>K-xGdcn0Zz1fZrnRIG$Ns_IhVWcr3SBpL8e3 zCdW5r?zc>G+(7!>P)Kt8K<56N@ZW_$6#htf$dls~`8ndKLO1S2kApDa+p_#S!tV;d zC#2nt`ZVgN@(lU+QG-DZ-p*9|oFz zALwznxU*y{J*2~1WXHZYf27<-Vfr7rWfk|xE!Pv$?hZ2Rj>0<$?<~YS$IERe2=6XD zQFxN@WZ@~oQ-$k*#8(DVbHd8zD$|CNnac>By)lM_qgTS@sF$~QL>-dK1O;Z21% z6CNSFx$sEgErdr2j}{&yJXUy1;jM(X7T!j9Th2?ryU97n36B?^AiTTqMBz!olZB@U zPZh2co+dn9c!uyy;aS3a2=6I8TX>4}yN7b(p2D+*=LpXgo+rGQ@ZQ4v2=6PrpK!hK z{=)Nx4-h_3_#okfg&Twy2sa8h2{#M32rm>~B%BpKM0m0A65&?irNYaE+k_7lZWrzl z?i5}wJek2Glv}UyN<~FRpQ`68)(P}~jIsY%L*LTSj9d6`ZO-4u(Ds%rxANh?y=h?!6AgWmp~*AkXEm0$Fh(?&wEMz4%fmNzc1BdXs#gPa z$~#5O>Fli#SE!dOg%1-xT*yQKKmA%Pnox3o%uEy_4mGxC>!smMc2}cAe4WPwMW`nC z_7D1NbSd7ugx>cCkDK57L81!>u9$$#Kak;zHUeME_13mRl^xm@9 zpYB*8MofPf#Yl~~_A8=P#=vi07>E%$p~tCMOGo5XT#VE^sTCK77gjC?vsnR0yr{p; zn>M>>XD7V+u-;*j5wUk?j*%Ua2S(Rk+Ld;}XXi+hi18jyDml^@)He{G`ofBySt>;*{l6&>Se?}U+?6m zPJ1yd&02j2P=q5Uje4FQ;-a2bI~HoqX8)v@(K|UPgNYzwUq-J{W`)!yXSze~9h~nagT+FjHzs%`wI+oY&oTQ=Kv9H}(npL>N#gQUyTS9}TLY|?$0JWqHp;k||T5#CpLKjC`e{e|ZXA0T|7@Ik@{3pWTa z5N;H15^ff55nd>~NH{Bei11?JCBm)3ONEySw+SCA+%DW9+$kg{$cINTYB(X}{3@e6 z;(_M+^_}{jcoRCj+;08)`FeLQJTlWKW_#}?+R*9LRv38^yS;g3{rcXC9ASN#h`f*i zD^&o-;Um?{qlAwZK1R4pXuF|*i?pNeuBPK|w8L;5@22~;QDiq=)FSTk8Xw1uf-yl&<}j8%ybdUxG1clm%NS7EAV-)uD^C zBGLWxPJ!|%*_)c<2aSV+=k{|U5D`VQlggLjDv=drBSE=RmHJ`AhYKGee5CME!bb}q zBitoKD*bY8)|FOE!e!wB;Z?$e!WH2Yg!D)M*kO^J;JD2lLe6>e4;nL|Nk?d@lWpX? zkiro0s=0l&@Vd$)rF6tBTH(y0$*EH$E#k=GJiD>2No#02aT1Hw?I7S5(h2uJR(`DE zPqE?tC#u&c37;%{ijc4&4LKH($8q?eS4)qu%o*G3-R0&Im&g&bnBkIs6Kp}p0Ym|& zdKBF)hs+trkcUr|1FjZ6P55--GlW(+@+=~k#VS45-~G9JFBF$;`=nIwIwG$*zipC z@+{%Ah0hT_SNJ?3;YTWREFzZU@PXNP5uzgV?d9-rHXCyhGi!TiNP%kC0b_<`b1Qsx zuoIsm9~PFivvL#;8bsVd=^i{g!>>(ep08eBAcT+h&=yzksTL7O=GvOVSrKMOGa>;P z(v0ebE(3@{l;DArfq?miGVDdd7Ykn^q#gY9YcVg+Xy*pwebi&baUG;9rW4df#1VcP z=lbeY>`>Qv;LMpUiI>`)5lI}*Dhk8Zz_%nZy0=tR+7uVD6U&#X*Ov)jE_{WM+JIE# zSVSJj;e#$eo%T21HXod;_jcokEy=QzQWE6`5z)8=l@{fS#|t~gHMD!BdViJh)l<5} zlJ7Ja%PWIETYE9sYt#!~q#d-g=0vrKIC2orZdqPh z?hKt;`e#P!PolB=u~`Sut81c3``4=1*9kdp?V=yh*=g5A2O6!Vv+uoY;A(vW1?Vz1e-2ROijoRDntY81QZoHrKknsQBeVSpu&Q3B5B542-doNRAmQ01A-5YY8 z!1-0~Mn@c??j?p$`SKb?p-3K!Jz&ndiUB~jf3M; zXUwx)@kiWJYj*3H81d5OW;3OCc9!cf;@C+?jLWC=(tU`vm$v7JUin5V<2m%i$N@yz z4JEa8${nxnBIYO;R=43bppCFrOj9ilMpSdHRZjH#f>1bb)RIzfQZH{7zD4*};oF42 zB&1)wlZHPY-EhA8xQ8KA=%aK1?4%XU95 z+-)AV#*Yg3&rYQ9RXGa(a*@J3HWG1&hx;mRY1EtZ>Bva)DQQwlb+Vs9a8RnRvJfHW^mQvg%$rExE{*@wy%kN6}DrS6?FjX$zsj2XmFnL0F4~@R@q977?Zg7HLRgm z7yUDbX6?65MLBJt-yE-gey75<&@?}eWienI#T!haP0 zlklH~Uljg}@Jqsf6@FRx72#KfUlV>^_zmGVh2Ii>TlgK}cZJ^*eqZDeHuO1$KG)Fa8QKlS6VxE$$g19( zs~P#}&655C35C_&WZ<;J+=wH!>+c_4w!2&J9Ekf5aq%$hntrf_l54oKSag5NwVHAK z9R0yG{U7S>r^27*^iKQLbj2Bs>s{N2j}&*q{mu>Dr3-4^p%0-Awiv4lqWTj_|KXO0 zZM^^%~9=dE!6xv>E?X3^HqPK0v zQv0b=^J?MK##Ni=)+5@a*xBA+AG)GK<#@i7x@67MrQS1y&lEmuT(wV9C?k#@sA0Qp zq0y~V@FFs+>r~FT=}RDm^RC$$tUp&T|0(3S^vu>q^ar}sXQdEvv}L^t86RwGx0)+! zx6_AhRQOh78ODS`ejygddMzoGf_t*QA zZdxqXe6y$Cski3pJHw}w34~F1Jkkvb(kkMfX1g}~|9*{2fokszt&;%}t(OM2 z`s2e$^{utJec^%bVTqKU$5%ri`XsPiisFLjE0JCxe4+3~!WRqiI3wjoN~9YLZz3dN zXpdZrwBz_H*Kph(y0X9XGi<@uKXYgzGv+|wvAjF`QOeNxBB2LFX9~{}-a~j#;n~7-gy#y+6W&XBZy`@F$<1zE5!W~IAH$6V;T{-? zLiR&b+M!uqLv!%}%}N%UK&OIzyjkXg8^`$rUjU)C0?n{!|v-P z@wtaQMGn=24?`7+Pd?-+a;P4CNOu6U(1d3nQU$4(F*1kf;RjMM;>c2dMLT?~u-06z zr;4LsJV`MKw}>bI=Q5Zf9x>|I+fO*S5dM1DLUY4XcwhSN<)xv^p!7U5)KvesJDjR1C84D&rYQ8%X9R-Uy;5{1reRTycLG|C}QGXPLHKAi=tOZ<5%WrzP?EF zk)Gb%3@-Itr2?BrQ-e zbmae$*3DokETm`O4XTrZ^%N*}k-|J>Pq& zUvvOh+7X8hjIH&7=B2zqCK1WE=2(BZtiEDe>&JsE0`oM&hL_EA1mZIozt&H=YjGw zSGd)=Snn*YLK1&i;a3_j0;;ox@q!Z1MjZHU9=$}&e&a^mB3|0=gje>)J{VLH`;Q!?%-cGRh46Nc1H9T| zCN>Lqm&0aO+U)Z1-qtK2)P2JEyU}mq-|q>3U-*9E9|-%cW_oUpe?L=RewOgr!siH| zD}0{Nbd!x)^a6rHbmZYBycrty z{^2FO%JCv}UQHb{I*WTZqoS5Y`w3Y?JTp`&EFh0Weky2^tY%^!K_JZ>AVj;)G+2hzRNX~bQ-4qVl3?V7K3_ILL; zTDvZ2FNKdI^k2x`fA=_VMBX*q3Uf(ZbJuYT+GaG1hluKVXjcA|uj zoD@!E`q^-Bf`(o#+rrY`yYz*2IEmvhu$2p4ZKHbNlCy-94`?@SYffW7n<(S*f8?#lOchm z45B0cm?n@`SxZk7NUJXnDiKInVX?ILDJ@wy;3STh2qdhqSlSC68AyGTW=J5JlF+e= zKw4!jJxw63zBs5vAYp~Y(%z@EWa)#GI9?)1BLbJR4V8<_36@c!G@ zQhahP?D-6dCpQ34wTgIJoh?00JgvU?sYEai>1BLv(+?W zUOf9Bp&SxU9&JR^D#B@1w)8aNwEE(v65)gu7E622(vs(daT3Q%gcDX+EbWEfOHCu% zaQ45-7v5Kp?bZ(oDYq`swu+EiwJkkONUgrOszgX(g~ig|yR_s{cbvrW5+Q{Z7E61f zr>kj18&W<7J0y_YQ%A=t0%?`C^fZCA`r@DxfrJ$nOM9Qvl3(HAB#xH|B&@Jl+6x`E z5YiWX`;W&Ci6*}QMA0guX*IU=G|{yB;-wPNgcTM`d&g3XBWi>+!tXR{;dk}B=E6Ri_TG|U8wMOrKP(6HkY;X8vRBL`nIFFYY zG_4|>R%J_jqsxcW>MQlj>}|mci>1A1X?cSFz)2i05l&cPv9uR@s+vZ$#XN5#JKTZmYNpva#J#YrWC2`em?_I{-$#SbTOyhJczg~ifd=%|J5*6;=1 zMl<|8B>xs4LmOSI2&h%s($fUg>WiaF1Qb?SEbVNPOHUI^t8ZWXQqMTS3X7$^TWNW3{ehD>ULuyT!eVJJ zlqwd{j?3+h-MibZelWX3MkW`lC|X4{t;Uv~CYn}Xyi{Uj!U~I}y<=&4U;TlTI9?)} zu)<<#FZ6+G8gY0uFRV4gt8Z2|g*ODux35xghs5@N>It>0h^^J%($mD&>Wj}x#1>Xq zEbZM)%k{=d94`@DSYffW7mBwcj*M-*Zi(9pL!x?rqi_{bwVGRcny6ZR@m7hb!U~I} zy@P3azHt)AOGFh`SS;;@7S~^m*dft;fKjxHXj+XeJxw&NzIdrbG+~9s(%!MOq$E_ z)*m>DUKb43ltgu+x zyOx$)jFUKCBA&3qVregw>-UJmYwabq&ffgrQC(=1tssD=e1wLb+6qI3lvWTQ9lG-HVOJRfN^5Zs}>lYW2lkCBh0TESB~jrsXBZNgOW` zR#;)Nv=>@jf_ty0$&Kh%qihuswOU(xnuuC`@l=V3!U~I}y>n@Ksc{m=OGFe_SS;;@ z7MI{&L<>vsWk%^LB5Sp`^fZyR`r@$?k%bi&OM55Na+`4y$4f*OR#+_Ug|ZVJad-*t zMRwF0_@PGMDuQYixAZhYwff?$5zAm zjjIT&Ro&9lgw^VcyGn!=R#+_UJxt4;#z`D65ms1Xv9uR@u9`;78LROjl?|Ovd)Nbk zmy4Y(k}3jfmA3RW0k!(#s1gB%6&6c--_r65<0Ouk2q>(uSlSCMz9+M@-EM}j^)wc9 zpVz(8C|pHUt>%`VCaP9nyj3Equ)<<#?_gR!%s7eTC87!|ESB~{@2#d0hY!;%syREp z4_6OWj#R6+rKgFh)fZoth$*bFSlYXnmX9z_;&_Re!U~I}z0l&)o5gh4qYjTWx>hkr zttUo-r-RG;6YGjGCQqP=N%zP?TY zE)8y>GZBN7oweOt!h6rUYeL>!fsoXc9V1Oa*lMbm3jcxlUF%)NM*0@TRX7zFG|YFy zHKiZ{B=!?jY*=kq&^`sv(W!`b_6;uT??mL@yxA*mRLxv>q)tRsw`Jd@UueS()OQBO zv8Sokm*XWyH>|K&+Pn7VY8o+&yZCkP@G;TuJ{^81&Jyj$txxh-7#2(WFTNkE&Lc)0 zmOGvJzQfw?ZMD61G!30o-$8!^lZ=7SS;<`Nz0~j630svKUiV0v=@51nnrXn3~vd}`K`=?*s2VqRo2qe1k&n@ zgGvMvR#+_UeM-xgaT3Q%1QJ$QEbWCJr=}5IAotZ5>d6R$shSBAT$mVrlPKS{^V?;&_Q@ z!U~I}z0mj!L;M#pH=4cY$nu^#x~j)t?K>N+-j<#wrdD66UuGtS6&6c-_tNs9aT3Q% z#1vLoEbWEfM@=J+j%n_6x}q+s9H>@tOHUJ2t1r$fF;HQJ#nRrtw0web630sf6;@a* z?S-DFrV&R6b@)51o+$n*BWks_^fVE*`r@e)5rq{NOMBFig6OhOGFY@SS;;@o~EV|hedL! zu{b1-PZd{{akRQxdYU*|eeq9;IKm2xrM*jOdA0t)NgQA0571k7HK&A@_Cn85%ZNUX ziv@2>eww&ZwTeqntFxuO)#Z2gtiDpe%t8oOSS;;bOUtM051hpD67hr;7E61fBX{;X z^?J_pV$U!-RuM?6tfi+3q}3M(l^B??!eVLfQ(8XLIEmvW0tqWDmi9tNU2|U1AC|da zrFoW7w2Ek2jV(P*G_AgPsYEnkg~ig|vA0pvh^lylU!{4r8o2R#1B8I(3r}vJbOm}h z!b%HEdkaU+%}SjibMtc~0JEz|8mp_Ny|v|CYW2lGC6WeKSS;;bT9`D?HQuA^X)Mg` zlg>de1XfyD+FLkk;<#dGCw$6e=zD^nCka(%jaAmt-rVw8WA(*BC9(!qSS;;*dJ8p; z7#~UNe}8jBbLsgyahL1USs%S+7n>ITiIbbEi-Y>D#@62M3w3mz8BrxvcmuM9miB`(&3Ohr3Y=yY zaO;+L7tszzU0{y>rvCxmILftPVDhUw`a~v$U^2X&BNXh!R`ISHk9{rM(iVAJ%FV zD&U7~SlvPnia5CTq6s1JquP4J(w?Jy?x3*C^=n-nKvVo=X`ia+s%b>|d_*0%ve62! z8Bf+)FA=+QO`3mWmI14@rKbs{)fY#VC1z6 z4Ssyl)auLe5;Y7~SS;;bdyJY!+}NpyALK+&hX2BoL$A;|=eQf|M8rM4rX_Uyq?iCp zm+0bsgid`}+WRy$FU}J6W_>RFygJ(0wdSE%rU=qjZ>Uq*0iw%+nUhSZho(W+XC{O$ zI56{x?63YGmZrQs&xrU0pc&Vo4Rg!q2wP%sbb*$rnwn=FonII9I14YL*-}`EF~( z8=-zL@0DW5-I;6BAvWghTWEwULd9v11FXIr&x&PszzKns7MAwDHFqm6sqd{dUnTYz z*b?L975^YO9m{K#6bUc15{L~3`0`;Zr=@)nGbZ+KLZZNntOCwNJ9+s2(=-YuW|bNl zFSas@jro@wi^9gt!Usf|3>OJV(eFk){$^XXojhBGd{Mr+ z`idAQzs3{l@#p)9c#9QLY~%e6i>18|X`Ne}fKlPCroR$v3|qY{?Nu;t?$s(3c$-zg zx!FGJLk1=@Q`Z`nGJ?-1bav_s9(ej-T25LC#n#8BeB<16tQ^b=azE0OwPtvI0qe!%<@@bLa2>pSeGSJ`)Zdu(H^HCJy|*?a2p-h;nYcAnlZ z>vi5A6gwMB%}U*$uFvC4-)L1E-rFhfBF3A2eKR(6_pjaKtkP|Fkhq8g;x0Q-?{pgT zy_>343cQO1MqCrPIeZMNvw2~0X{EpA6Yl+0DfCVf8qo-iWcX5j@8;@Z6nSZTY4gEw zO<$$R5w6|RyX|%;gq|kXMl`P7y4(!!3~1`!UkGWG->U6y)+;Sqx0D7E*EEQK#jUL> z9h^Rsw*Dvv4w@QiW1BAmR_L8(xnFA3E z)w(w`^uBsurDaFUml5N7Y)#5Jhf>TTn>9oA>Mq)v~x_-JaJU>xs)nQ2;@uCeIs?6JTRXMx2)$UYU$Od{3Ph>ad zs??n;|A?2i4^_{XU0h|)X(+c>JJ+TuxV^sAS*cR*fgOmxp_no%qq9Dh)_OdquUQH0}D~)6M*gD(w;1uRqXSzrIu76Q5rUYrysE z=j+|M@Tt%~(c8qHZG~qx_tfU<+dA!oE9b9YZywWGzkaqq*Xbt)f(Nc&-@hn2^~4RG zy~_*XXV2Yr2PHdVU-p*e*4+6g#{WO?)RPZ~I_spujEy||7^~?pT8uWA*jYWBQl#E3 zU7`#0vHC&#U6M4R!_Mf2UI^c)_Fpj?mC)d`h!R@bZ>6MrRY8OPyB@>)7Eprin#{N9 ze6V|YX{p`vJ2+o7YWNn#dpzmVB2!Fz|0wrW>meg|$d6bah#_ifY44$Q?U5-G7xHL< zi%@2DA{X663PtSpe;;2W;Dsqi*~vUp?D=$_2nMSfVC~m1Q$1For1yCm{IFTy&q@<~ z+)hA8Y}seVqqFmhO#@5&3@+YxP5rob$HDrsg!(kW46n@iX;7?w;T;DoArSfM6$^vc z_KE4McUFst+EX__e(x9066t7*qNPjRZa__|Hngww>vbw(&h3V+^=`Mew|+tUVD1}t z-=tn}dFGz9jE{NCq0kmLSjvaf>YMoo#j^uW2&}ZQw0Ch@K||e|oolz=oae9f4niX| z^h4@P2&Ri-mA`CQEbZ%D8n&Qvc4rj5zc+rd{Y#^SrM(h`108M1IwW|fmCp>@C*H02 z)}poE(j~?^nqsx3eIlNtrV$Iry1T9T7IEY4%rj}Sj5)@w&X%4gl2%{*RH72Y3X7$^ zYtuP(ZEf;ab#OgXMM|hpG;{jll7=B2vnX->@s;>K4iH+}E0OwPZEb-H_#sQ3bPcQ2 zIne*2CQZ=5XF`#OJV$XAC@eWx!XU_3uUHtowogp2xa8R2S$Y+HK<_{_rG=&axVW#H zM$9QWJL1a?>LZ?Kc$@mb=b3-fj32Y`Sj{c%Z7&~BtFP2A^J-#PVX?G#aGJ4U)NijZ zcIw@*BT|d|Eb(gao$BlEcK925W~TTG47J{+KZpp&OVl-3VX?Hgke0tTxlmYbSJ3%F ze`9i?up-3LUZ`0p#^}A<$j@>=z5ChS-&nk~AMJQ88lvyhxA-~W;_#=>0mr+ATRQE9 zhb=U%j;vu<({0y~mF?xuT)jk!{0SZtS~@c>X7IsbU%Mdz8*9i(0thOs?Z}yPk`yRDMeio=} zV)&xDRf^*!A^|HbmiA7e<$Lu9p5S;1p|HYY>3pH@n_MWY2(@&+(BGb1D69yzbiUBv znOrEW2(@&+(BGY0D69yzv=^FQDujj3miUe8-tPlHpgy*l%9TwM$e6J|c<^;2ow0(D z*@dw0MgI@A{WF;9-wU)GEtd8Q&=*1{7%s5duAseZIRhs`udfpW_pKVyCnZL$wbjzA z>80YHESlblHfkkgV~8~j+PmObor)L&zo|XfyRUe`%C_3lz7Ogoej)JLj2%}zi=m-c z-Y%+2C|@-3_@p^X`b8vbuL;eI-0n3$TAD`;n)h$%RIj=jxn(YO(jPVj&8{?SLQ-P8 z>AE-ryc5#P*dQvbm8$muDJy>uxdCYxRhIU8(-*#AcyPQ#uEPq8rTsun*OnXR=lc)1 z{;~McAS+y4ibQOM38OeX11t4Cy(be(*ntArVQDYdUXOYArpw7->FiQ{fo`j?Gj&ZP z^j*SAdm(1&Nvuqhe`B*=>+~bqwWi`(FQa&4CY@<|GNLalm5@#!{by5p54iNlu{DK~ zG0F6iE>M+7~g3qnn|j!^zhIken9ogRt8p8OMBJR%+LItW&RapqI{7h1;;ZpvIG19&Rl4+ z1UmBsf8cMQHr5PF(Hj41(L6!0e4N@!`XaypQuau$~>Gw=2# zUPE!QMp(KyE@ojmq9)?vf$&r|aBS(av=2`@Ep4waw8M*Idusu5lNorZ-q&EQN(X#j z@9V-~NVVS3<>HHc!`IpH!|B-pGhSw9#=nM2OUQ<9@4|ly`Qu*+rS)J#w|^ltg#sVJ zH$qGMj8B&c8@k~lWD4o_+QHIZdYS>D9O^d46e`#uZt2k~gj?4+Dlpv*+}yaqT6*-E%oDLtR99gv-y!mEDVL5 zh*6ibA(6U&F7HO9&6k0JR8tBTrUi)&ih;8!t;^w&{iXI?yXj>+ zqtdJEYj7DuW|cB;j9avJpT^Ro@23`KWVYZ%fA4WDqJ^dX&QY43p*Y05>&%L~jYeLa z4X_`YC_3-_BPp;2xWydu$*2B78hG~Nc2ocQEz$=-z@y7l%Fef{yQ)e zT;&fi?Y}p759vSi$&JJnvA-E&G?bdc*A9klPcCSZ+mg7n8nzJZnr(x2yai<_Vy>_g1y!S=&AEVmKdMnl+eB}fY|Zxb-9`PiWtXx z&xvTT-w5!=77H*L5EG25}t4OgGo5h|$dOO0akpKu0aKR`fnHZZ*SXs6NV%L z-7gk)Uz}$qk^5I`2za~|K=AOmcNna+uymn;vDU%VvGNT)GxPh%0o|e}oiW3&+OuRw z#>i?{*&Zd*P}9=hEd|x?)9R^fT;d~AoC9X@vZ>KsY}Qu#yKBgCZepNEjFZCJqnad1 zRwS|m=*od>;`=(2IOtAtcEpfCdQFpigA=}5!cMVyk;RjpDJyY)?$ZCV?H_*){vuI}K0hGp#n91?X%Qn`jm_zi$kVeT3EXH;vl{6 z9jAzH`VuLEdR3-#U(h5;W1jxo-frvWF+vVnA;sp~N@ZzZxs17drl7w@LX(y8HL;Gj zba_pBH>uF%3FB*GePC&?i5bql7cZi~6RiS<_UlvMf9mu2rIPqvsb+Z1(tO;&K@c^Z zIe#_X!HoMJ?X`g=luH*C{Z0qoomrxX^p{jw59#YLOZ4Fq zqxjlC&D5|)?S?mhmRY2v1#v#*D4`{#5zJ;QIfpm;e02Xl%0HCgdj^o|s7#O?Jx zVLN)?z~X>GjtFmQvA5G|5_W(_S8%K!c>cNU<5RYVTe?c^hgSWmw6}HN(vxU^gaQ{a zT(5+CfN}TDmT)ev2b|u%s#Wi}3m~t=b1_<^XRD=rbifXv*+8a!fUAv1Q&%#7!jc>i*U zTZZbKb2q>`%Db|-@T9H`D`oCG{)Ig3T$$cLtn6Cd-lns(Uwz$P`bA9Cj=%ie*sOKC zarf@pX2UtsIb#34Z|QHM*RN0P*jj7V_SQS;i{#Q5;^e+auBgLx>8$SMS&vC!?|z?Y zu)<<#e~&QDyf7H@GLK=F)xPWjNrnm{y;3%hEIn|K-`!?*lCuN+0UnAUz@{~8Ilkw} zoA+TX7y1^(<3F8vLPGT4r1V*J_~gvM{sAxGi$(>XD(Ql7TX?NvyR*=L^AtiTG4$kx z6kCx_;h7a(US9JQYX+Ia@hrEp1N;G2v8{o@7;5R_Z4J9^*uNjsj~T{3HB(tJ!&t<6 z|5`;X?SpFO_xS24&&8+vBuOK1YR`Q0RCC=KDZ69S%QI?Pr{S$C$v%#1b2(uD@b zYkK5A-E{B$X)oG+_ro?P=>HiN^q*d`Y^sN?<;@4{bKw!Xzmks_bJ?Ocoz}zSM04J$ zw8;1JY4oNh&?KODlpWY`WHM4a78=cFqgxNDHsAGK+1ona0OQt~na?9eXlWm|bk&i% zb+)xNyt#MhzD~V1|9>t{+-hBFY4756RWRE+(B5C)&|PWGS+8a}MOsF@7A3ArHk<0+ z@^op|x4cwZr7usts?nNnU**cFA1&WbVif^F?4qI*QWX;Dy55}9m~5H8crip%J*Jem(!BjTb=HxcMde>>VKe}G;n z3lLgZ+Nb!yB*a*sUJjEMi_77D<+KCf>qZGndnJw*M?^M{r`O{fMh{DSJ<^GH$6Wjl*7RC@%V=R~ zuSNQtK}f(IE8XxekuWB@?M{5Y^Y7H5D@`UPXJ-E1i1wn=IexaAN-8hK7un5{8?j#& zazD~Ddue!!?16gUx?Q2lbeB5I@s*for#DQts>6u6b!Gw?>(uW|uC+7({Wyn}7M5OJ zt->AW90qrslk1LbafOlI4K~+GT+dlgS=yK8bS=>Th%mcQ#e>18DaL>|(jO6fTY|Rp z%nfPf9&<0#4bo!0ZYI4V#(EH5yu92+w`Z9SePq5M_6%HTjDRiSzD{k4=V$`Dv6HR_`tSYfnHV3Bh>xy) zO^leD4Wk?CM8wK|9&Wv1Y44r1WC!nDTwh^1I8x)1&!aeh{sKRO&Y$M~a!@EfU{Xq{ zx%T{!TlZF^&nY_&yqD5iGusV1g|EqWyWtJthg7fPsVAN2dV1|_@7)_dvV9G!mEH*0 zUf&yj@?7s+*lh2vHFxZ5cb3BK(II)pfEc(TGPl$j@~#Ezn1M~D?!LyJAwP0=JmhA? zT60{E{q+@}NX4nu`%y;v>Nyp)>D2sq?aX| zTj4dio$yQL_=sJXYdBXt(pAHr*fN`Jh(i|l>;Qj&6FmE4hqin9eb%?!HdDNFm|7o7 zrhcj$&Byv@n_j(--;X%Z)xq29OvE)Q=_Mf2o@1raC+Nl7rM#tm$kQ!=IEyA1z3Aa$ z&WMiKyN6^H^;f{o3stC|#w+en_aEgM7O!j&rP+E2p9nPz`wPPAb-w#eh3&bs{0ue)U#0eWKo?qC#9il$>(pwBM_u{XAT6-Uch!+%! zIFX{5>!{%(9*&3?Rv;n`_H1`sr?F7$tRR4~lPPEfmU-kk70`22+#vgwdPKm`6tC_w z4tub}(muH3X?V6rb+Tymu1^Wci%g8YR6AFDDe1@yzZ#0$ z;5=YL#Pf|Rp6b&2q3+`or3b=vU!|CIu9KLJ;RQ3{3MzgSU~5>`S1B#cq5iL(tL#0E zd%yQX;j!B&suBBA4xz)$5WS$?3GdUuXD=?y;^OtB6AtOACekh;anE$u|9=W)zZ4wzIAN?Fz)btWezeHuc2C-3^4iyimwbumyBB zrFj-@S{s$yYV-497Dm`B3Wfa;A)phM7PBBMKI%;Oue9AWk7b>i1~W4s;FQqPzL=&% zSMslDbQ?)ceU*{oOLlRxr!_T5*;+f;ScpGn4j)&>+E*U}F^!fJ^O_38n4#N$#R_)3 z)(S8o8Spq5qfHx`O0PHYp1o$bY~?QT|K-&BDFGj#gjC+^>y z#8+>&V(>WVgJUm#E$vgzOecLk(q+n9tQLlznfVU-fG#7_tLKXvehEYc%ox38HfFv> z@e(k#HL5Y&+F9%FPg19fb!K|`HQQyuG*3{AMOaIH%+h`OAYySbd}yRTKY=yHq6V$m zSX*3L?j%!X71rEdX%lg_n@r0w3-t=0D!rGM`PuFv5Rg9AlL;UZsNQ88FZm-XGYFEWa!NM+2d7l;6fOKKBJ^W<8)~)xmI-3HkFlA86 z%wBFyqF8#36g)QU8fk<|oXQp*Ze3!pk}N%m&gsCG&ZZJ_ zU4?!FH}rBg;HwxE>4Gw7HtJgJnpSPZ_1ocA&6JYi*L)+CBKts}Q%qj8u(anWuF6NK zvxp(qIoF9J)OKT~iVRGz`+`n^A`~aaKtk5&*9!ikKdp-Nld(ir$g@S&T zb*MjJ&5oyn!d_amDZGr;SVU;x^4_$I0zb-A?}bb+^j?+*B`&J1KfQj%BQbSE&~LQI z$5GD4U=rmr#}h_H#2$wpayQ0C-qH5JOnPk)axlCsaCxCMBhx=tn0vMk`IJZpcqU-S zVl5N$@d|{bj|c=I+uK)R!Y3-|JzdE5dr$TMWCaq^EAAj+XaDDs@rR<=@hK}M%L1~+ zG?4Cb z!Ieg=FRCP?v!b}>Wr2{p@f641kn{TEWLPZirzu+AAWx`?{g7G#tL+N9yijDVrVE|9 z_QGPj+lUK_5*|2`J|x}JCFc6^?MZJjWu>XRv%Pa){gV2gr5j48&zYp~@w2J!M^-8- zOg#NEn=cA)l-XCa!o7OM^CB_FThXpkGXQlmU%aoL0>R|@+tY>I1h9+A}#!3aBc|K26X=qwtM`T zb!HmO%-q8?v9uqt=}RQC;-H79P~;zt9B-!`oL-KZ`Zph3>eRN@I(r)}r2JE%6uUI` zQcT3QG{eqI_!WHS(toxx@E6BR{My65q!XI1T!_89Zbn;0($aKEpuM4Hxfxc1CT3s6 zBK6^w7%yhCt!}-ughPoLwTuVZ2MT%F$G2H)MGQ-^g$f+#tu0>Qq`8w`)L|>5o!AZ7 znsYPAj(@LL@uZbjh^W_)3Nb<@PLWDp16w03?Kz5dPOD0`4lo%?RYAit{R5hDTx#1@?Q#T zoQ+ChA&mv@vcIH1c#jqrB9 zZv50jc%M2dech^L=$V=CslN=I2h%JJ5;xZ7_Ql^0#HYCs^9|FjPa3&m9Wl2)(;A0-GcNXkVQr4vhZ!L z`OVFGys?Rxf3sp-r>4Qo%$H3QOM9Em-KPF6RW$f_BfweVvj$cSx3t&5)XDH(m_7CI zM$UP;pALR#buskJOmXEhnG_zx4!=PPtB~HCKN0jJ({Tx-?Tl+_Z?ySU;GiZKg&+N( z&5y^|X0u5GOM7ihMMs-~#lTO-SHw>KmiCGmx9sfHTHVF)E0cJ)zqf?LE&pM)F?5+9 zrKPu|LR~Qh@~5UppX$X0GM#k#yHdS*2P52CH@)Xxc1tSdnY#wp_Guy6+72(g9Ck&L zt?Cbn*6F1}s~#R?EB9(W6X-IjlLmHseId_W2I9aa@--Qx^sfB&-Vb+dE@mpHTb$=n1YZUi6Hk zpk1U);=h3cn7dFq+*;wjqa>Ks6vsp0jH5Shg&f!27{5h#_@~ ze+LQi$;}<@<<49kA;(xDI6mvr?QxuBq*~fa)4x3uT5F+eE(^WI3K9>zdU)QLlxdS-R-S{B!{G*g0B`I$08F-~E- z*Td$Dr9DTn=4p0G^Star!68oNRHplNG~XuiAU5AtPMDzh!D_pL_Qj7gx0_rjthOuY ze4)3`6YA2yl|NV!V(Icik#)`fh{Nh{X>U(D;NrB^|1jkx^#k?h9c0t3%;@o1X&<8X zbuxW=Jc!AD-;Io07s@yf4-+dl1Ef_i$mrS7dv!NLZc`|v*pT#=V^6}S_EjwexUuFE z&Tfr*Po>YZ_XJ$NSY`KVAVPu74FujEQeB-fL;i!w6L@< zB(%Jf+%bVrSZ!C(`9kkJxlmXUVreflEde1_ckGL=B)y9?xZU^(YMc#gz-qgK_CnMBgpeVcRIg~%uezJmxc&HP zV(XTreVU|uE?J`L$+Iq++`(!>-Y^kmPoZW9m;g9X{Dmi61^V={31(^g2`F!E`Xo-U zHhMcV@{ZRIBW=hmU2G%{BzhB!Ay{o!&_12b8ZrFvs{fny@GiIGlr49%4kkzFb*6Y} zm5Pbe?g%mDXqnZC73_1beCfj63EU1V4zaX%yGiH^JMHDg<7N4s3;kXEGOpC$S$XJh z%p&G4g<^^qw5AyLC#&8@CQ|NNft1u)A$f*6Yn-gH?wcfQQU_<#^l%4{qndU3B&wxB z$y6H}l*6qV-W z)Qm7ja$SW#%1lPqd6SG?qgSqb$I;6=d=kCVkOY6_g=8GHY>*~Vi!>!QCK%hW+ODAe zFiZEMHn+OVow^?NKUwCZ#ZYgQeGcC(vh36_I;qp~k6tGf4xCd^IkTQWz;tp6GLoOB zBjxUeQhq>ZpsOnu%6ng>K@1YY*MsKv_uiL+kdv$sTti^8Yp3i0 ze}FUg=XKC@h>UKW4+l_t|R5tLMb-0eQ?vl9;NhNxY>V$3u5qU7Txp*TczL7nayW-_ImWk0XIa_ zk)G++MXhxeSf5tkAR+816_}0{5j&+`X9@>a&J^3twrRw^R+-VKRc~~Bed~P8E*wj| zvxyv;5rffPKU8g=t)?dQQ=|-6<|F;#1`uTcyuG8p=TfhFoTd&HpDk)#kX~5%3X8w2wA7dl=<;IP3^5QR^dPy)yC5<+2x#nRsP^tZ*qc73ohezLQ<6yG&+#^lPJ#c+@|mi8V< zi%wLgnTbEc2EgT(y%FSlPe)6?_hhP>!cO~ROiRzKK1m*k*so3Y%?7=<%!IcZJaoC< zS=mwV9B9ndFRC{e>z(t5Gi0x84@|RR>I}Y$v1_*;7-rJ&DDixF`9Wh(quxnhkM&IH z5z*JklZQ(>bgHd08+U6;=SHJ2>^{TO(H%dhvb5nqtqK=#Pm;0TQ42sWn>l&Zt5BA}JK{8W_a6I_8gN++Uoa zwurB;`ej}2QhuNe#<^=(SP8{zjjT2fTQ@#h?u_W&$twfa6t&e0P}%nwUUp7=GcLMCXscLm?Lhl*P0jCSF+n^JKI+@I!obQqv^qW$ZO7t)U}BF>nmQF zbMd!C7Ps&LzJqupMs@qI49yhnlesFUS1Jp=?|*n5if^sh7GBHSNy~^)%WdsOeBYtG z*`utE*``mLi{Yih%`MB#X8eV{*VMhK=tdG7aWRVYJnpU9L`|&zz1!Zp^zBB`y6s`I z&Wwx1p|FkW5ix#4)0<{rJ6qhM*tF>Q%(O^Y(@5!TGLQOo%Z1Ci-Uig`m!`k6i4m|i z8gg~KCelC6`JL@-FjyV0qv#`XeBkb`7Ne822Hrs5O`Cy%zxP zsm;~5b=n74&hK4XgfG^FRoli+JuC#$U6s-IA+%h}y>uugZXHF{W<*vs1}b*cIlD@L z)mO2z87pdH=@MO_4?-;Mw`0uRxT1=Bk{Q$m+H#treE` zI;ZRMP=2D$y2XIopt zJ*S=f!gbC3|G7AEt97ZRXIAg4))7bFG>9|C;$pMW|3+PU_4r`*5pnFYJJ{_yQ_T{I zHn0-vv&1JStgu+x7uEE=EJ4Hm@QpXzx3rt{^$s1}$BarZ+SYHcu9=nBL~W}r?L*Lg zD-e`^fGpV5|DF|Vs<5lA>sUnI&x*u*pf{G~A1y5HjZa@M5_GyGd;zhURmt^M16M-M zr+^~SU2L1@Gh&^%GOV22S7GM;tq{5by_wIYqN<6dy_xCdNib70PW;M1mP+T3ug4~% zho!w9CawFP*wSe)TpHdedmwW>Qy~2h%mb}n(>|+nw|CaJ@uSevCAzTwwY0a>?9lX; z?Go|_SXW~w`ISw_*#Z6ltN1OQHN(=yzoko`rkQOWXz#CY=&rQpu+xPRyCYtURvDR7 zNfo;;@c~ZnZT2lMwFXEX78WvLo1j_p)~5Z+n5DCnx$gTmy|3bZ8=lU+vesC#IYtc4 zO9}rsxHw(xkGV+3Yb3tgpYWNVE|6xsqq3f=mQ~p755)OuZPVJ)o}>7p4kIIOUvAmV z$<$1X_ChvKmr&XkPD^{GiwjJuOi;S_%Z~1Tt2@h&|AkpkRLP~8VxOkfH~93jR(<2j z+}d)F>53kG*ot#4T~CIe6AWKZW*L`mr{??u+O9CYQsdbj*4tO*Y&bAG59~>XSANzz zCB}eV`&oM6cXUhr9gixyO`m@VPYd41w@%<-MIvkTz{bhynQervI`f;JZvYGWD<3BTPCgwEzY zlO995_yEQWE$w|`UrUeBtRq*q(q{yNPj-ZFYR>7W$h~J1aLGnvaj|Uge^Ww`6@Fhg zAZk+uqD-iFEQAl84-NHZE6jz(G#C;m>t*O`S*TO@hY7x@g5!vRIki94bBeU`$zW@^ zr9DUSS|BYVLI3z2+E-tw$ET!x#BN1}Q-@BFXF;S@0ovbB7{1tBFI~5o^v~9tEaeW*V(){v zPIg$jc!`w1*u&Hd4~MCTa)v-ie|FGo1YmhwrBxOY03%$4ZKBmU2SR4VSRv5 zWO$$CE?)2jg8~;^cNQ;Lz(5+u0+RsOm7(P`qImh57NoEUEFKmA=f^ml+?s+hM%o?5 z#S0>>3ebM>k}jm;0~sr^*4|%{b(*J}s%4*1byH<=CJsC{5iX3wODDFq!^Z+RkVdV}#NbL5d53ZS^qPKSHyM-uriK!XBz?%k>6cr*0dRu;OthKb~ z7=O}8cm2Z}CcLY;_oy(Q*lG;*B8wevMKoFiA}*~!MEdf#WQ%Da+b*j>j>(;Lb%V#Y z6^gMz@+oSrM|Ldl-db-hBjKS|0vQDQAU)Y+lBK;0=}u1YsNQ=S2g^Y4wp(2o!sz05 za=oauR`epavwdM!GBEnk6f#>+ymDzM`r*Ddl-D#5wNI5-!-#yD#hwY~b)~BLd@r7$ z(xMbRm{<2kc&{+it57SaRvvD((rOUARa6ZQw|aL}wTZZMCA_&i-r@{T4>2Y#+x@t3 z%OSUvq>qTyd++G){n~5D`orGh{(tO!2e@R(Ro){bg2)Jw5sT1bf+TEg56i;D-9fuM z!@Sv5BBwfC)H#;Lt5;j4AP0kpQS(9@T8DlWn229RiFqkB=gb2^4Zr5LP z`v33ky7$iQo*C`#_enL??^d1v#5xsjUCA6(=bSrmT|*8+XDwcz@%6iO29gW`b%GC^WX2o7=6Z)_$WHlV%he}X0{TS04}OBBsD0)~@7kppWP6z2CAaDRpO5(r1(GMgU0_r;Y`Mjtc z{f496X)#8C`+%szXOns~p3?(e0vyaGp%oKg`{lZ-i~S!)0~#9cX(qmOAOhle4sm;v z#KCLuT<=31K2R+U^^nDLSr(!-)`800#}pdLLFRe=lkuSoWS-At#3<>3E`}}=TE|H4 zJ-ZyqS9>=2T<=hxVl~LY57kuJx4Et@*v{D3wMBlM_R+wkxH1}mr&~sZ91pmz0$GO$ zeFO<2Op^up93sdH`H9CcP-P{rTOV~OlL0h@gB8&5r)0^uW`O7-Ag}~!Y%r4nNrr&B zW-@*a#Kw@L2lL6P$&-CB3LXIM3H{$}jYWY{}kMe)!Dze!GCPcyJ$tKCA~q z?;QCIWf*lYjVIIM_+<;>abc*WdGd;#f=>*7cn@^F5X~iOg$Sds2zBDBELIhK-c`Ne z4cBVHZyKCeRtRuyl(lKB%@!JA%Hr_eK6+nh{9_0s8b8<7ALD~twRqPz)dER|fVu`K zKiq`iaWI=tY%gjwna(~ia{dwQ!jK4@DxLL7Kj0rI^KWIOCjs?Q{3Dk6b9nxkhOrWF zQE?oBp%*YiLY$+6Dw$5-pV=?QwmyDcdZ0DvftFAAj4^DFmRbUx3t2iWQ02)B&_YID zfG~tj1zaz51DF;1rtx`28NQW@YJ-hc*JZF;+Htk_@lFf}qsb+h4`M2uPATMF0&Q#i z!~-am2%6#vu50{iHgtSYls4E*!e8sq@h2b?+2Oi+Ao#AuyS||VBpCwgDtdp%br?G0 zM=*Bpvnw5ALU=SvV27gF0wdeK+YeBBJCsg z1}gxWOIb3^p0eY~gtXeauTw5`S}{7}Pf0a|tjqcx`a-G7WA$=fTd+J>-P$5QYw`x+ z2FXf;fSf8sm^G0u*dRMt48{xi$zj*{>ob>~ia^=m!~+LFt~clcY%!atYmCQVjzvxM zCJ^sOyS8y{ms8pK#qxMb14j5of37#^0vs`isH-ge8~gSOX1VYI!jMZcSiHm(%AjyN zHq!tUx&sKVt4-(AGN1Sv?D&y7^bFw1!u{hmbjGjIDdA_KMZ{X+q7VkS(N3ODop4=S zQk753muM@-BzFl@1@3&wokint1o*TLEAuj;GEM+6^@{PB^cbP_< zE|T_NlL&-HbM!vU_Ri*`Bdrga*88!^f!)FBzWfMUAIY?!Sd_{ddm`5rjMtulS?&8> zUIqYIlnNUB;t8%RXg|^dv~8o8CymkiVU}KYTva+X6M<=kvPMh}+@Msx`I}!{S3Ew1 z1->o(+VLoGyvGoPW6pY%f!08aZu zgGrziq46y|I#;-R%9tv2%C^LH<NTt_b|nvmrQV*N2C@Y!-=gxUCXhTy2kruk+)&q9KoVx61>@ zHHINt&#zce`gH!fBfluyJ4a~cfov)qD+2hB%66a6&M3)@*>6-B2>m-I1cN}?hv`sY zj7Z9B*ns1s8Ak_gQQV8~YJkGWWGUq19wik8_8 zll3z@|G{-A0drZ5X@_2Ct>&_@Pn2q>JX7WR*5RqxIF!|w%=>S_Zx1dOcDsKuw_&ba zEqGe|gz+6mrp}{^T)#sD34_JH4Q;BVoBl@)bi)e#Y$Mg{}In zo|Gm9`k7SCU6t%ts;WFVKh-S3*}dR);rIAb{M;%FBH@EChVt^w`&_IaNdkVIh$qAi zB+9{GCCW0_(Pzn^YNudrQ1OVTsPcOD5!U1sJq_#k&@!fNE70Lj$s=G0=?58Mcn*a+ z@;OQPl|i2Ma9vxl&_J{vW?qPXX61xfH?xAMD%J-@Mm*P2hVt;ivw60`!k$cm>$U69dmS21yFgNS2f z7eu7rs>xOxNcj;sZ*r7yt)8H*00*N(sp7%7i6^+;U}WPaT-OA{&-#LOE-v@3ob|0> zZY}0X;iP7!*alS}L9W?BDF_}xFQN2vuinqtaw5ZZRX^LB;Pp#dX$)7}mEjv5qtqr4 z5uV_>ZXElZyWEk)3KUSID z)#$=t=ix*AHDT+Xrl6}ldwt}m?+_7(^3-IyQyd?Rb`HXNV)%af>Ak&TcW4z`Sc$m$ z(1L%R$ks3IRREi@2YMj#aU?#K#ot5HC?#(C>5CDG*;DvJsLfUrrH{{2;&7tw<*#uu zO5uwV;gbPi=EYeOe+?#3=9mfJD02(^p!5k$3H_l|Ir4%&*Oglzu#MYrtl0bp5c1}c zmnZGS#^vqpooP`dq5k{!to{+C5KFErtF*UruCR;arXfhoU`D&(`#&%q87%XB)3UyP zcMrrqk%CoXojtBA^Q49FRg%-=^Ml#L#|BdX`6LF?form-^OODiZEXk?KDh@9 z=pvN&+R7&S&f98!K=C7|Wmb!G7fb+Cl7`1xI2@!mMgjvf3zO=`91it~JS#pb8!Pou zIgL<$sIFOX>;ssOtoUG#4QOAJ8VDz8l+Obk{&n5+PJ-3=NINHPS})oA=$Xfzt=_)~jOQ-w|1EPrn>2a!+965-`lHMt5RAqyH6AoA&1 zB6npC&I`&6E*KiRhoClXXrAu~sam*gfU&r{ct8cPYK61`#wzLptl6?E^eT?)ht%Ge zRsRygh|bD&wR?DVE#CEwP9Vt;P}e}?GuG3yaO^f5h{Xw3h&r{GA%U}I6^9=Z?A4hQ zc5_QOi4$J>dsdV!$UxK;LjwL(kK}%OgzIXUdF+0rC#`@Ux09XoQ`5=b*~xG`Z^XlX zcv1np0^Gz>pLi8Lq2l!c@c6)%|MssjB=n)(=Oy5`2}Ab>!tjms?ibCi_p^i9yyz1> z3Flm~J6U7*503lo-uve9Q8Acq&##R{J{TgGoaRDtX*gDWvpJgg^@+SN+0ZJ-0jTvRh;tUkr3T{s zHWDY-yU2zEX!3bBw++k3>#USd!zc!rNmP0B@L5#wwQzEZx!~C_K6454-hzh*g6HhNARfQXXS-0J2`zl`#ibl zI*6hN6$hy##LfFHD}W?E8;r&t6!m?gq(m(KgGgBS!;8Zr8P?}yNpN^nF8l#iQ|e;9 z-3}QARz~3EbD5AJhY}M9Y))KPBxGI*i64wUkAVnXHU*{Qmt-E8%!e1RE#$g5T(v#8 za$Ud(MBqwwm=EJ`9UF&oLC#+6UCg;2+~2j;=A=$g1CL8#Zy3HUsq|&$dVAzB#&wl@9=@McFW{#vgt5aNZ-+GoV1+QZ@)oF)sGTgN!OB~0 z&4P*KE`S!w$_10!7A=_ZzH28C2YZXv4pwPm#BY*VWJ#Q>NpTE5^i3_gv}p=av|!9n z9Tua=(NP-8;AQAf(dW&;$5`8+E7Rm!vE3H>54((UTLp|Dr9{l>6pnb*=Xw|Ed%HE< zb$Qnc++tIliFJWR=i<^Je{?jwG!FY!5G*VZD3%1fz6jyHVgO8s@a}qdcq#rAORjg3 zmCuPxg(|BwpSVfF@*5{fShF;(fYj3JUHSn^#Si(lg!E*TugdeK84dKY*x;uDrje9< zS55;~xEB5d$jS|e0Iq9`d_eY72ampL>HvgGZdY^2SOzkv7wk328T>NN_QBrXU}~oh z)#5oiz$}(vt}i-(92iqAx-#o?{AFgtvh7V~ zIImr{bgnDIe!|rEzO~O6!-ASE|JsX5#T2ud&j<0SK{-XJ=F9INaa|eo8&C!!s1fwP zfayzI$jcALhdwdV!8p^{5@?0&TzO(5X?#N8+62__1lRR^&)ddFLs|d%=?5Zg;liu3 z_oG#R1z|;uTvw%n?^?V*O=@$n86Bfk(SszO;CfflpSdZb|7#LG*Xu=Ji+6pZ2T6#Y z>ni%Uh>wOctaTR`2M441$*Xg-VOt$N8@d0&9s+^)kU(lUwa>Xvrq@8@i+Z5p(>tRP z-*h@VEv^iUM?mO{vxM?%MSgN-giZ}dMF^ZA@g-Rj9MjZ}yqPRWgcq%&LcX*I0zPj^ z1j_R4M6~BSTdgkJ@1B!?3(FhFBkN zstET&oxEzFPx_FE<}0$nl3h>3y2KaJQ~~;}3LRnx*q7f;~zJ`hJVT(Fr_( z%zw#};ft%39Xcsez7%@#q9raM@|9U4?PX>!JEnyx(0Q~6I^GC^Bd;`qHWtb(cJUf- zI0kN|;k3cVrql(SH#Uc@%GlaKWAp0*%^PTdX0~&((m>k)TZcYZ8TF>IEsYxnZ1HtM zxEkj6DfY;!2g^s}2HMv4i3d=s?$H!aa9t;JJ`=PTh>qGz+2ut#=c0VUSQ58SHwJjR z!RpFO&_l$=b!8?mF#=!S&NH^{q(sz0b6s2H!TYl|;bToU3fUJr z!cFpdK71+~ukZ{F8*sw!e{;PHCqC4L?>8M>nC(o5<)p1v6JB*Q*PwwV-A7BdT<@U^ zbxyCXQ^T=se7&f+$G)gL9gI$oXY+xbHm&8=hmQH>;cW4-kp{{_k8o$MtFrR57{BKN zMiK|b&cSpxykb|6ft2`vXJ+1z)W-GOiW$C{fa|vvGaLiB-h~;TV?1j(8r@z4i;rk_ zhsb1fr3l4=&4Ac3FwigEGqpdR%qKhcK|TBx9=s(JGvw%@+#k#@H)!IczuPy^mOKbG zh>Z7=mvUVrBQ13$IW5FCWqDyFU6R){KHLD{4<}JB{=s#XLOv#X78VCj{TMc57J#4& zDL?Log-1IPTF!H~qg?(g>>(0S8az2sjd&WC-`CPes_^HqYE~VYs^ZFvx!HCZBq1Y@ zXUm!WOreO~Lt`kl$txg?_z2fk%IK>Wug{eG-7W)3hJd=J`FKcN79 z&V!wqhP%5g2$mF=L7--x5s4c{S{#UoB|2{;Y>q`G^A~T^h8N~0% z1xq?+7xG@3hBuV}=xZ2I2cz)Au+a;I@V#`9`C29ed81Uh^Y_uYu6$SEI3K^44jf;{ zI7qk~`d<3q6IrgSH289PzTjA;;XT2ImpV@Xl8QYo{Hb0?>!)oJBhP0@M=%yN z&@;z)t{?iKHrUxI_HCL?6Oyd9R!qHRwGWbOs4MtwU0ZD14Y84NrD%1dxPqo0 zE-G%xcwfS)qUMct<)l78XMR9z>CL8M)A_kwC{}(Y0_eV;hLZ*{a;{E(dwJbpRM0(WcCORj~v-8(jL{3BM%Km2gT{JotwHi*eNWnxO(lbdk%(f%sq1Cbco%U>)d_h$nj}m zFQ`Awef)GU5)7q&{Pd}7!*FM$yTw|rRDmr`U%l2~o%I!a3`#edgZxP6UmH3zPJ?L-xeUKv?HU^JEJ`2JEP57$S-CvQByLE@ zJi2gQ&9yD=7arJc_aRC#Zg}$2#4Ajony%;iaXYkg?#QNEF-_-3a`lQXSXf+F^M7*G zZ76M&D$PH=ZhU@XFB#g&k6J~jHo)v@vp(U-#{W7)+je9!{x)j=y6#@hK^ zXYS*z)A$W(89oTZ3a<3vnjNoK^sI`-JRa#179cQ;tw2UND%|6_XdNHrx>`|wL&lp# zdF2fw1}yD7KN0XIx>zB&ZRFyu&BoPZHmkR#ta#d{2He5b;WFK+Q4=g2iMg=^RD5CjWgqr>f+izMvut3 zwEAGjG^Z8!ukmoT)MjVBm&5@lv{$jZuFDEHzK#L&#;9BAY6lTiDA%~2QHv$H94j}4 zzMJH7zyqameYMM#>l&kjz47dMk&$oYWnnOg9qV-8LHYr9gCDlupF%b2=&HeT&G+Hi z$QReqCD_&h-utJqY2OPP*x@$M>NjnIRR|{mWe?AD;)9-X5<*Q<*Ees12hv5w;QT}M z2-ovWQYwqrrvkGu&2OpW6|&VZ&N#TPX47o@8<1px@+oic=K}wMq|9~Y29l}8>(k&i z+u!IIrHURT@dVd3Ff|kX^P>=M7tu3b#KxtGSR2uM6AKGq7_<7wgP<&ws#dUrC%CR^ zrN!Sx5Z<0l!-Q*lZu=G=8a4W@?B5bQ-;W$X4c-$A8$xBoUquW(E+twut1wJnrISw^ zn;AJovRNa46@(F$%XJkute_U}`r->nG6dAs5WVPa91ULrKQq4m8QY_yd3bN_!=ezr zEo+VWH2_c1tg#_QXrYNoGKTe;B;>MLll(^rBdV3_YLfmO&f@)v`-}0xb}_v&+$ore zWGoVD@}7*g+~*Akct4YvJYui)HHhpdNKRaD&;|HlzED?(!e2f-5*O20pZ9|#LqJ`@ z`tuTt{c?M+CYZ)Y)S>scpW17or5S|-EAi;t$P`0T-_XHob^@+z5a6|1oK8*R!aq=I z7di7#PxLn;go);0wlml*!uL@oV+j4*dx)|;KMEhiLjT{v{foxL^S>7|h$YvRQEytt z=zX@IR+OIz1B&n51PYo#ow3LfUVru`{#}einCJ0Cne}6uF`KsW1D)fep{@Cb4SjI_ zvMj~?-a9d7S42$bI|t>fWFYh1Su(uhtc>}kNMnpd_dQI3tfXR6+}>mS*mWJknf+pH zxiWbDUPjVEiC(0qXOY##L2ZyhFbAI+5%RX;BS6T;S499g=BBb9A2kfylD{HqtiXgn z)r*JY2G>=f`JBT?8UtM)X#lT6n)uUZk^8V=$QyFqEr8O&e$& ze7ZpM;VD2{j_mN(lzjRmaxtBSzELWOT)7#|Ndn1e@{Kl-*ju^?ixgPtPn*WHl+vVY?BL}{X`m0~`nT{WloF)yhuS{z07@l-rg(zu zI!rao5C&1&U^5AStr@~UflOqF>l%o`cP-xaWe6b25Kvdqd)e90iffT)7b4p~%p(WH zfjFK{H>4l%50v@S4e3eXWdF_YhF5zAxPZx^e>GZ8bnDex+b23lsYK8ePjFq;<4q;p z^l9fJ5B7JW4!{+1*riLEMw7*7KNZDagM2Ix{n2)Nuc|1<5*Df zSPuP|VF_orf3X2>Ugzifk~A70eD^Eg`*=_1{AB;w#8U0OhF|ywXGyX>Ni5mNnk42& z%6hZw<3xTV16en_H%r&eMoA71h}X+6boYJF#G66r(RR6BA5LrWdR@0U?UB4E{zC&1 zNa9JZYZ&&Ui;a?t3G{3?%J#q4jgj!TG)AT$;Oh7xKSly9N@a^98Q1fJXfq1~+ZcW} zV`2XcGEo3rueUJ93)y!*PXwifa&K@o?B1w0K9BG&4Oe@^al=+nH%cW0_V5JP)tcWj zJ{n51=ItFDIY%dKc`|;nqlnOdgzXxV1F5Zi*5qFUO|%}|CrUrs10~OuO>VPXK|f1t zv^D3Lm`~M0eyH}6Ncd_cv1xS8TpyOPS=Zm9!A0tl_Q61F@vd)h0ZE2{y1Jv^qB0jb zd3Ap<-W^;R6&Irs{Er^I!{=y5q&yOh{(p@7hw&lM-7e!7N%Hz;A2|K-I!=>zB*gJ1 zB-eG^@hHsE>-7mSZz=*2uzK;V0ERzx7g(3r*(^Fi%bSf(uR+m?>uMm7T`k`AMJJGC z2&ijx;=mEk3SEj;@DrPGClA2fsXTVT0AQ6Bo`gRo4qJQp`V1CqY}R03lMI&Y^#)su zcYOv6l29Ml)nNUJ1RLp&UbKsW?k(&b-E?+28pBVr-J*Ats&c+&WC*CMN&5GFOj+S*ww*wAcLIH66yN`3ouN;ZDk=_&Tvw%{FA#<3 z5EeSG(fET08+;`Id@x_At3JGKq!96N)WQE^9l*3V8zMdmWFs3~&xeR+V-VPe6@ct| z*REd&#umBbdcD=w;`K`H*Wp1D2E}zXFu!&kwh$Mez8gi^Le%I_ojM3+zv|hG&V2LO@Y4O0D+MV0T$TdAxvmuapk@^A zA6z{R>dww+NHeaTN2fWMghV5%OD*HUfHL&mQj1FN4;v_CU)sWpNWuxZu1@JUqU;j0or95G zY7(wVoJ1plw9#dkA>HfOobletboe4$>==xWjvg6Yo5dUULGjmma7llS{}RQ;Sp<;! zbtVNaQ7X5&xTp5uKRsnw9xCkin4KEle}e&am@4@<&>X#G&VQ2$fn$_?aPEyOAThIA z+@B2j{}!VVcJueM(@>zyINMuG)ZYo^AVFQ$Yk14^&P^z!J z5E6@za9xdu>=Sp;0mJ`c4B}~dZoO1Z^DCta{F_?%_nI(l8BMG}2c4j7uN!UAdeU2` zy%o5#`s@PBN2L1qg<)ez6%xv|&X!)E5;Lx=i$JBdc-NPhfh0pfT@y3^CdlGyVZ;Ct zvw!qL`9iUr!c*mE5s5+Nt=I!u+(v)vWA@q7nK2wMejDZ1hYtgqMyG>u;P(cWfTn1| zb+t{uRDRsP@-j_>>#Pn&2W#?FY;e8*U^E{t2!YD)_b{l{jGG_zPjDL_71Fy?!Y@`X3rxo4+2C4s>CB^RxDk+~v5L+|Q`9r1y z`Q!I=4mSM&0po|QduV__9bIWmWHF%yJVSX|PCLR!(aPhz$FA9JQacZW8yFFwEp4T@ zF(Pyj%ANUiq%5#iE#+Uc%fpKm_qIzLzcFBEpW{n54TwPpNnqTyO3+)w!s?;~pH*CA z`JwwI(E8h9|hXi5qkL4!o6CEHX@_7mPIA^Kria3`ncSGxjJ~kRM1O-+L{H(KC zZ-^b}q!Io$X9awo8{B!bw;F>TW)F28ziG+j>|i!~WHQ~gq-Q#hHugsdHL(|U{&$4h z6CL~mr6*(Nvx-a`%Vxp~EuX12o7g}Yh~EjNS9tH+Ku;jSa$RF61YV2RCoOFZ8y%xm zQG+C&;JO;0KSXZBf7suh9Yo3gKejqZ91$Xg@$>@%E`HehAQB(y=&C_Rd&i=hTx{l}5a(un z^bN?!xUQOjc5Csj&qqO$A)u~4>IZ%^-*6r4^!(rgwE8FQO*e<3USJ?93SOVUKoSDt zx(W=3Ktp+aFg`xnzxGIUDBwnCU0lI0tc30l=6&|=BeL~wY%ES3w~xWv+cowCLI>;L@JGx)4^1Kn7tCeJ!OGH6M^;TS(RtOxF$zr8;b7tF}dYBEKHx zlX(-F9sFIK+5snjnH3nX8>zs^hK)vf@CGFQY7HbNyW#tl$xZ$`OCq0<`L%MB)C0Ei zYhTI^TDKi{@B+nG=9BxA;kaT2inrhMidGTR3g+2B>C|+xmxJfS*c12eU8TAND0ez+yot*BFwX6i1;@J}|NG313@$W_58L;P&9k_3#Xc7`N0E z@=2uUs`n%w+6ra6>^DEI`035UR#V}XMeY`cS@g)-P>S=|k#?{+kW9L^r=XLV7QQo0sY)5Cd!Bk!a%}UxdO7B^H zPhS1h-U4yCwRSZ!_(~9tQaS|Vn6IbB*7O4g5B!k7D-V6vTmFyIBV5nF(Mq!sY*Phh z!Rz1G@!B1ij(X?|L=n@$;L`qBzsv9-$q-Q26)S&r=HioL=O>fVY(5?C$Io+Ii@1di z-*onB{%tW>JOo+sUGem%_zy3hljZH6Imx02S^ChR_t7w>*oNzBm6WvF^#Xf#sTq{} zDs~KDL8%a4L=d>H5I9Y%F|>bZkA>Oix?=I-urZ-V9AI&2)uQQU2n&SkD$@K=26aGh z;*>uB=r^{2Btt-5V~dxujXLp$Nr>SeS_Ks=jsvL9EkYF`QadAw>?+vm!G({7x>(EL|@F}w_XLh&@ z=(RXhK{SveY-}t20F%NG`I#Lsqg1V)0NMBm*Yh(w^bN)~nDu}pLqJ_sLs{h$^Sc;RWeU;Xh>Lr-80 zAu$EHt^Dq@-}Wgd@q7D|>0o*-U9ehypbQk>fGH+Q@gMD7OEV!a0?Q2=i6FTd0EV(= zCy#}qnDZmA7h5^SY9zK5C~sVlH_Ar+JL}NCIF3I@()+6&{4Fl7tKmR~wRpRZx#$?B ziW(&G1lJD_y;a|F{_=44UUxrWZ{y9LcE{1_rGs!HaCYar$L66ta^%YB$dOYA*Zg)5=!w`OZ(hBWUW#k+Sujem%cUVjK?hPNpiO z{2DMnp;Dt`9N`wF^ON{tafl5}C7FoW@`DW8a-T_1T}|4@?V+{&&l2x z_7?@pb@eSsp7Eli&huhFblvw9AH|*`T2?i1*y4JFF2E6Uh`QRcha7XYF!G0Z^NCS^ zZ^kx_-cTwlKL*vuN4Ty!@r$n!$GOSGCR&p#L)#+;mN##YPeCpkf5{&%Nzn3v9p^5Y8*!@QU8cVKgi#&cGX>2xA9cdD5s3w#( zb8U`2T|oJ`VW6tw#tKOI6QrdGIC5}ZTjT}lV@>z<7Lx9>Pn)qQQe9x>D=+W`+iDFdD3o!qZ%Ur!{NjQ6s= z;b=6R6}G0bTXD4uccm7NSS6O-$czq6Y(zPGST5l;Lf$~n90bg$RmVV|KqcObqDv8z<_ zIjEP)_S~)pz7eTB7?Ff>aSUi$TnwisEC3xjVrPbS?8Wm%<)Ojopg0|tz%CAU!j8bz zYj>T#=U|uu*4;;rEJBz+XY^r_Kq&Q`(NlY)d1s`P3>h{8(_c!$_XGL{QRNv3h_QFB zH|PS|VSK2oV|mM52=r5FC`df{wJuu-9E5Wy_+ui_ecB4{wNKbLh-|$Ro{hh7y}=6Q zrx9|l%YZ`9SFHNC7rxIj&W;AxY})+n!EkOx8G%?6;5xkw6NEjqH;a1UcWDQ2fV7~2 zF0x#U_BiUOQLEqpJ|;d<_FWU3G(FC z;hgOYCcYLqLP^Pq^Jd_4xSQq|9z@GTvIEQhb1#AAQySeu1@LNtO8#TJizA9qZch6(!0MI$AA3}~ zUsp8CI%DUGhvQ2@-?dbtkW$e_->Gr@hYxlJpK7QAMg%f zY-&Df`60bMC&mNcf)ZWgt1!o$n4}T0Tpbp0uPhKr{ z4opyt9VXR<4ofF^o>I8gq~pUyT%nAk>t{3$O6_#8ptAT{b+FJr=_oe~IuGvmN#)7W zOhUQf=H%7=!Fcyr`EAbf%W%c+XZ9#Qzu$grc-!Scf$Vk#*Rk zp8|y)So;9ZXOl;zDVVp#;dr;Wsw0HhqCX2VD{Q*Ab5OBG!DGF4oDZ*FTn~Ab$7TfSekRY)=9R-l08$ZzTj=R|I4=c1GgtWdC3v7~YXFhzoM` zP!c{08Iw!>zZ3TldqA_qOn5t7Y@#E$_-?h=;8-7lR&EvAijQ zdKv<=(6vvF1?Uqflv#=mWwc^$?^q+Z*y76bvYsc{pYsx=jt@DR#%ZIQPCKPDOIszG-JW|1Qg!(AYeQC1JsD?s5-^@8M~n(JLqlOU@GcL1w! zBoQPJ_gx_QguryWDj`?_4S!1F#L$<15b!)0p)S!JU2Nsq!8$uEtagD7YndhfQKit=jVn9AuS7k@tLAouoCB%){b5hwCZ}c0Em+y~fWKd-kI6 z?StK~JX#RAuedm04D4Utr_^~M=Xw{Z`>i5Fer|Z_^6dg0KEX1^?;0m0o}ww5aDBCV znY@yTenp>(W_RLx7e#|b28!PsNDEETgzG9TJo!?R4t{Sy6iv~D>q^u|z=etyzW9{{ zB38FLjl}GGT)z<&F;KAHKw4;uCR|r(;mNNe>7p>SE@J1p%04?1`&@a~ zUZa_Y^CPwShQtvFkA;bP1I=Z-kWC_V{?(*8{N8{lnxYBU>&@kBx)ViH5aoJ3(XZ`J z6iq>t>-9vxu8t_WLaAnlrg(zu^+dnEj%fTHJyxWQXo^R;u0(zIVoU4g#b)8lf+?aNwrA`eUJ z-x&FQ8q*W0_b}s-K82}wLkx~$=einPF3zb~d~}Cc;`h2BjXPNy0yLl8)6v6H`sIBY zEc*9gVj`v=l1IY0vEv|aIH!+1Vv)b<4h(~y16X1Fm1w(M( z6p>-+4ZlmCsYK8eO}MTphF@klR$QD+i?Ed#Hb%dhU_b_kei}D4@!CjH-f`Lh-*X`J z2$1WEqd=_Leye|pbZ0U;*c+!#AO-nkhdz;aKY#s$jT&j|czbZA*oCa#3n43#Rzmp^ z*`L!kLUFDG3h&Jn5|gzgdB>LP8nyjSr$IO$mwAEVecEH-HCe7J25)7HmxC93+&~ZS zfJH4WOz#fngL|gK-Q)H$mz_sxV42^Bexew;-e7cuc%TukE05lG7mLAIP!jIoeYK9k zLrxdd^Ln?~c|2YaRtpMt5X!{>4c<{Iitivnb6s1gZ*Ir#L%Dcus@=={c5%yKA@9mp z`JW%V4`uCJSvO4a&PZjek$Cqv_aZ;=Fh10E5TUtB7;`Zwz>l5|TZz3ia7i8 zZ%4AYb>DDSes~~60ehtrVGNL-(H_!2knwU|A$if9D_&@G_jwpGf&~Hxd_Bn*zK$Q{ zPMWR5=fuB-va1KU09okp9w_Xx9t_Oo6V|3Ms|v=!;gtPhH??L zdV71`F7lcmIdVD}e+XjX8xyNu?*7DxB$T!BbCcleU+`wVM&uQX*s>re1GyjZ%yh~v zK1;;I%nW3n$s=zAy#f+SzcF-rw&*|58eA9^po1U_^Iy79ynD#Z&*A*pBYXYXV4Vry zCOA6VDazr10fH$FTX|Z3z_Fw~H{d|jiPV}09H=^!i#Y-ifaxtBf)cd!giZm{pW;9K zbTP>Ln0;;2n;c9bjkldfPrr0LfHD;>D@~tJhQh^U;lEJcNJbZ<(qhW&ZyH&{1!WWo z7c^5Y$3~vK(3`{tb2;EC#ccn_bNC^|B-~PyXEtaeF_fr81_l@l`dwOH zs>xEjBz3TIlz!5($d-~VPa#;r=ChF9IQQJ>#s;JYF1W7Z_q&Q=`Jhb2k53N9^Y12i zMV~t6wlYxK&q_VHA>=Uq%CND&=USN5N`9#trb{*Ia>*mE# zJfU2qcYUvHU^PEv;kl)kmqaw7tW7pI4X}Rsh0P+O@3j0vws+rPdZ{?QXLlJfk>nJ9 zQXBU3PdB_j1|8I+1iuqYbIgYOg ztX)}Y5L}-d?JJaBrl=KhLl;K|kw_?O14g^qX)WE9o3mlSp_a0d4d&*+6J@c*bxy=lw7i#%>!dzw-4JT-T(8CbYQt0~r1_V~{~j!xf}}lE&I_9|pSrH`(srMd;p^f6JSuK<53Kj9|uM zXJSIM#czY7o?@4@VCWh@dCe7l0);Z`t>5D5O6v!cONm3%HB+{Kt}8RTjgZ)g|L`7T z;OjhQ1#Xcs`%o8H-af;sP=%MZfy92-1(LVv0BMD1wt>dJ+65X(tIC_(K*~Ew-mXYm zt0KS(X!sMXHoel5eh}+pe?@(rF`vv{I7B}%N5weOFeLj_5Ed7@~FCR|r}`c>Ye z^Z8)sGER*D0KowDP6N~rqIE>Zbrm^}6*{_l=qHNX3OX(DEf$u;P}WH3o!5)lj8&#S zW8r+gS8T9QlxhH+!*G4;@JnLjP%dWaJx|H8{Ik$cSU5O3oesvAim4qTy#8ZuCHpHQ z&QNY@HQ@%J*RM6O1w_6&tu^>GfTlA{2C-u)@^p3rPOH=jymwkYSMQx^(7}u)lud#8 zHZ`jt?62x1nr_XaQbM^fwpL4??d(R^NIoi(4`r>buN_fZL1|=48(f|Ro+za)uIm8p z{p8GeVT(C)oGS`4nY$0RWj4do)9;!jZy z6~h!;B-fh+T=b5Tkk{KV;4KYnHxs!x7?XL0!K{FsHK8uD^hOpCRTxmYz9e>iq7MDYMhC5onag6s7}f22E6GzC$vD^b4%Wnm?5LH%fi za1>4+J5)CF(?)MoF>s;#W7+Q6f;4b>214?<*h2#aFaRT|@O^P4W=WaO5AUAo=tzJB zrrSVbF?4|hn*a{6X#m25N(4>u1lQHP_(>22tu%DESUy5q^u11;X~yB#tQs!Ic^lYS zn59A$V_OGz{;f<~ZrV8**^Ph?Om+)9NjbbQ91Z8!PKN_bKNg9v)Y916N$#VJ{Wvkg zb#1}3ueBafm`{ts78QaJZoLBv4Zzhe8n6=U-9(~_sMTlY@lE_7F(v_3FGbg;^Kvw< z$H}I{^{vAjJ&HhPpwsL%97U+4nI_VWM7+U?H1I%6T-VU=FP2C_r~Kq$8FfZw0GdIU z2s!A#NqE4sDE(JG%3Q`SMCATqZ8yzS0T!j7z5sN2vKYvZXOkoioah{-f78>5EIw^& zrx`%wM3x4RQ<{kRgK9=&@pWhrILQQ{2Ov~^qbZ)?x+3sgTGCa^C1@|%K+TdM^Q|~F z8SEn(*&&Vcg0RZ>q1F_Qgl39HkUhM#Qi2gJv=XKjLY3k6>YK|56o<*>3w)Vi4G!Jt}AbO8AX?R^G7PP;M~42c9U4Ev_FP zzBv9VlnXKSb`~kFzMZ!f!eEPGw9lP5dPzhR%37su8eshr;ZMaF3ipcWD>iJ!kHnEE z@&p?%PY^JT6t>qf?x6E}MtG;0>o@M*751X*h{3DFf1#{3lvc-ePS?^+-d(GTo8;ZV zQ%b`AkL!nrZx{a*$~(?q9?stDZhYRv$IADJkA+gDSvGvncYf*}=dbPCT0c6t(~mhe zR^s=cjz)A3q!K$%<2Ckk(w;jfBQ2)tr;gFkiWU8R-B3~IG< z$iqTY?h18X1;by^62b?qWZEG}@0zxf@uQ`(%7(!823-ISh;UsQp;hzy?Gu~RYhmp9 znaIjY&c^nj3}nh#E)8$c1#`l6^%{y!m`#AM)9pPs$A)5n9)6aDiQgNj6iv~D>#9Hxd`9yW-aT z^e6fUnjpoCH)cNKwWg20FLOu(F= znuDZk5DewQR7F$FlX9K6M9(!q3D>s*s2NltgMvRpTS}_p@=g(zG^)71QyPf|RKEMs zzCyW}kJL`(PL7H_TfX`TyOeG=pC0VYC)2wYO_rAlip6uYBS-Ez7{2d`W0P+fFNWar zOc2=afdDO`oET1vo%wJw295Js8ovZ51*$IQ;*WPIE{cpxt>6@y>EwD?Mz2iWPDMi9?FeHMh28(BU@4g z*CaNgDVlIyVQrG%C$B4v;Sk%zKG9!2LUg$PZH zOHNLXcR}LWSrU0Z{5&PZ`5>&g*9V%qabUyaYewKc$Nn z5cbv|fJ*!&|E1hFh);&nWOZt?b703fz{T^J3!#`7lV8&-DU9dn{`uMNUzS*l|2RAs z{}IYe2(m=0G+(}hdf`HrL0O9vr|o89@m*n227#9$%%2I=1E z4@?0JWb&ablZYr48mIq|w9a+SgvdkA4ra4QEFrbmW2eCJVT?mm|BlH}BR27MA`>>> z&Q4~-kP?B+hiA#WB5__v=FQ_DLTTbOS3j`VU$4avhJ(^aWGUrs*+njxYMG`65F67$1KfEH#c zGOVlsg+IYN(|S|-0iKK>)-cd?VcZWz#(2$81ooPERv+r{!&iw)hp#q}ctGnSC^Ftv z(Yp;aj^{l3p77Um?ATyL>qKn%)=*~B38XEpR+y?1pQUA{kB$IB zshQ4NmYFIsrTG-bY0S(cz9#c2G({7x>wL-|5l!zjmBab3M9l*Rg5{xavQvJCD16#9 zWB_W7GDP`|Z$G9$+U)mXb&-*!&wAT(;>BWmYHHu}-L?~R+B$EB3`-NkCq>GkT$YOw z-a9)Pj^`{OU|tHy`{7B2nD^s6L_bU%9~Fb?_WatYU{n~}mQY;?GiF7_G}9A7_x8=g zRFA^h+Ny1lp2(+cew+`VlPwQhF&oMHki3R+eQbCtz3t3`hqcMZd#1hGGq^Mz>|ZWV zl{e6wXSu6j;R4`L$?|qJ*R@67fP7{W4Cvg!n9T>fuN(3LFUvhUnlWmyPwkdRL=cvfZnCp^?k~2;3J?=QSss)@^h!e}o=87HVECcK zgprlNE0e0Wyi&Yf+Pcs6)fi~z1qet{(@KN~a?ObR;F5^g8=Jc`P(h{$=`2NuorVcw zS8YNy$(CQ4{spG_hbpm^sW})LWX1L<_bE$%e%%LRvvnVkxR520*NmSAgG5}z0hygF z86G>-0Em+lwn84(ia}zRNx+>TA~iZ5;<&CD=-sM&?Hu%UG#o#?o}@g_!PkMgSaMxC zcyfF)l=j8);1y;LXP4(RkSRP0R8)j{wY_z09LmL^WxL2=ks2<}Y9(6)HH5t-|84p{ znjau0Bm3n0THopRHhEBAv4*)qw@bdhKK1lAy63s~qdT~- z9NiJ+mqf6}GeX{Z0IX)XZUc=+0yW3H%)BcYw7MaF1uXmtW~wN7kmtI#$m8~Df#FUA z+|kkS(%2^{7~(c;_I{~u08Fzqi%p>gBX9ZvIPpV%!jYbg8c=b*6uOBe*ZY`}yj|=& zl-mb;dxNQ+J;puUC2wQc^FPwW0|Alfx8&eGD&JuwAAFC3- zrx2EYK*YiisVROySEwHzUWxw<S|C);J+H( z6$4fT*kltBP0@twx(VpBvao=)?&a<>1U&-U+y6!OAKEufdB7`nz}wF;DI?p6Rb zgDT)LX|$1dV{YaPH83WW-f%<4jW;F04Gg!9h}o3YWAhocH+I8SY3yw=4Od zl%|QG_HdTkOCdd!GUj;?GHT_i2J}DT{^3fgH%X&@4}Xd!*Ogt;+Vw7PzFsZ!sVMOF}H4y}wSmL)PCGErKeAF?+$wr+v_+AQgf(|7rs*OzJv!Pr^no=5B z8Cj~*6HSs%9gKJGx+DDm-A`M~@l^$s(h`g=@CAsoL0W>QXu@?(OMC>e;isH1{btnm zBs=6h3PLDl1oyeQ^>4R!?L2I6OU*!IKTCt1PzPzxgBf!r4{Z#XxzfO(1`Gk9^n4qp zTE5%hVo5Z?HH&~kxfaJ7kBh0zY<4G)RC(4%Me?ECP~v}D5hd4x)pc+!G>r^xaa~=@ zFYKD>U!NhB2Krl3^DoRg0Gp#afL|{Ul*;QMmZ(fSP-iJN)dY4@R1RU&zAFkj_SZ4pfx7KXQaWx zoLLZZe;=in3W=lMm@J-Tj0rMol1{LBHHj(-XZ(jZz<{pa0N0Hy7;E@1l+kDnP#;FS z+|82FrawXBFxteeUq35fXIRh1r5IMuj=Lz^Te@*xW$B4;SbivL(pk3sCXgmU#r9t) z*DF`R%CZ z1E@K6rz+$iqw$maFBePE|CMb2yfnJHf3w<3{B6vZIZ~eUNuuXDcv9F6VV>JyVktDi zr1sqJ?Nr;7(Qx0}9~;dklpAuX8dS-(poI>ug{E*Vt~Yb7--&vEBy0L?h^tLM zq$a`4(ErtJ|7=vN`-f|xf8cLp#>`O@GlsNLR=E~1f#)`uSPD%rt$XgZFyh*~-)_R( zs{&DSDM-JAOQ9*0%k^e1^}A8u*Rm$h2B;?QSM|)LPL4)H`(hC&yeLb7*YK2r&$5id zDcfX0_aBw*o-YQ_?)}=fbziZz4Ql@`ON|%&l$u`+F>3c8jOO-z*>MusM`vlY7Fc+x z3M_m~wtGFb1Y1MtS4@osSuq8zkImA`i_0G&HCoTMS5U(pLm=^SSrU0^`H%lP689Fv zOPB4G^Wtm3cC`*@etZu!X`?6Y7|uWhp&?D}y_;Q5Ta6lfS)_+P{9lP%Y7Lsn{Hb*g zSLT)A2a%@DK=UXJE|!WqkI9S82IQLP)CLtBR2Nh}q8X~Hh}H%Y$G9$#d=xZD4WeKh zgkqH)%*#hkLs%O*+u&M*GOMC(8%P{~yC~B~XcJX7Lbt)!hbnzkH+*$by$!5BH0ehI z2P-=gtQ+ULw*<>v^}fM{VpKIJy$M@_3Ml2y7*H@kVvIP164DP6V$c*%a9wlfw}_91 z(o%ynkJt{+al4}?-Zb-jk>-mzBLD@I>cekDaJjCDBWQ%Oyq^Wv5sD;)@%%9PrV(i< z%g*mF2D5`{c?EZ$bbK;m0xe(XME{=*4kH#78t?k4ko*{7{og;hx^Q05_>>-K_~5mm z@$BL5{4z+qqz4lIoh~EcZz2PkPtB6yd&g8-WZvc0KzQ{z3}JSmBuK%)V6sUu!O+YX zQaviJ$vr;28n58|Hjl|59Jt>QwpS)TV2S(#nc2C?Bg1hcF%_V#;vcJ#_% zI2v3S6}7M+fg1=aoC7K-KOKxioHJS3lLoElDN z^E1u=Q>*@@RFa;{jDYbBh)*+k6Y1 zfYE$mdu|^C`{M}Vvk<2u0qy@^0c?VRf1vdJo5CymM<+|sx5h!3qGHNx9N54oG>qTn zK$H?eQ#9ea3fdoAiV0V|MB+~(|DT-|cRnn6D$&1csI(C}(^Yvi7dp7@Aapc^(7CQc z_bHMI-BuR%26h43pGM|Chb4}lQ7WUK0=dOUxULzI4;O~PJ~~){{^v4%1PRdJdI|*z z?cQId5xYNjFrQDx=Zn4lkt6nbOpG|$N*7jwx^n*>1P68e+`w~QAJ0ZATvwtWNG(7V zFjXc`ihl}al!>YS!sOWGDof?_Zw;xiDRaFKsrW6iD3$vr_WD;c$1h-6h&kRxs%Rwo zFv#CGoY`Q%Y>;2b)y0*xV30^FQyDBuUz$}8|VA%zd52q2*>TtROApQj5-mU?*iyVCjj&jU} zV2G>2Jn^T^N|J*x*HtdLp-Nlioy3RjD9P%u4Ix#?Ph5oqc^6<6D$a%a6%g^K&8nD# zJ=aw(>rgSp!K&c_;%TB>9x#-NywyPs7^aY}!;+T1@Ngkr$WR_hQF@P}yI3CjHH!VI zy=*(Z7Hp?!bH8;lD|RO1-Ig5?o-Kt8#_=TAb+X~l1RR~u2RoNf6gyMf<|`H>$e%?W zLX=6Retq&nnY%a0qwhxZ2$1W_QC{hOdw#*e^;0U_JJZQ%bgxaHMnx?rJ`u6oQ|H6M zD11q$0XuI=>~OscJMR!h6G~?1{M2l=nBG?WsDYgx-(Ci$94yQVQ-fN=LXsTH#mZ3B zZ7S42UY8Pku4{|DhrDg17s`c6;poq8=pW&-$M9b$mzlX8z2jX=UbePEY17;5k!y*W zscpNL-*IG9!-DOhkH(kFaMvJw@gq|AdolBg-C+}6Wm5~3HFm##x<9y7bZJ)m*(RZe z(LIWCYm1-Ix#zpYXG3XXhdVqj^o5xTw~$ zG?q#PMwtn}S$r&%yT!$Uy}PxDAPv)=B`Q`?O@lO^s4W^fh@(yPZ`FbV-9e^Q~>-XYMvE=${12&e=(kTsK`3A<4Rl1TQ z>2Ax34iNjs9*B{2x9zp4(UNq(iHWR3x}Iel9r6YR5ETI;D{(c4d_w5OWB}`pa0M{@ z3AU#=*bKR@E%L}I^5zT|AU7pg(tO_7Hw}<9U+*9*fZQozLm*9G$_?)PmnoqT^aV%Xv1Nz5HHE}+ZaO!nR>m2{Jc(Yz}_T2uqIU$`S9g+ z?QvD=x(ztieiv}wJ`CI{`&a=DmV#1|u!V44TjT}nZOX9M+0+W$Su5)T3qpW@bqHE$ z%3Yz}JZSx0vckv6bcM>pbR5KjjuLsK{v*VV~2^`XuPZk8lD}qxEwoeRLl%^QLz_+!K)R)rg1@MPhf^lTfZI=0)uVnK9)1v`NFJD3=na#yIUiTSxrFoB7^zcjv7 z-dOUgD1h(Fn!)=)REZA$fzp!+B40rUeKoNLCVV4e2fH1_j;7$2>ne7CGRnkmtLX=O z<9mz2?)Aeo{}2W7{VaY62-G$chM6a>tLSfRunO@`HXI<6A7GhCoOl${K`Ggz&+LpC zub6_=5B5OH55mF8WT_v-ey9gx-n7isnwS0>)rzFOWWJYXUTyJk|+9E&Zd$onJ zD{GDrR)rk12HFLnH(>*qGvQ6cBl+dce$xP9)NsEJp&w1TE7Udg<1hahx$Qs{O}Q)7 zm8jp|2;)sUm+?;##eeG|^7yRne5YLS0?eM@_Tf({|Cr@?|{#9L4Y>Y|0Q%>U$$&^%L=0QzXlE6@2@| z&|hj0WpZLV*|%>Z*U08aA3L(~*9%11lpkHdq8H5Ne>`?X;x8N<^ka`5 z!T8Vdm|)8DE!9H#@yCu(-Z2KQP(moHqsvb`c7*eGQ8=N5a8~%zPd;`eL%vj=7^?QA zpL*;Fg?yBo+6o*aECl;%r|GiH|FRSwrb^VpFK#h6kqD`L$5eC$ZZ&joB^ zl%ES=3Q#fQ#Gj%OZs`6Eo(*ul{p>(n zoa1pZ2C>N&grBEGF|LSvn5R50%t~SUe9VN|U~cocAS(swb2tccb+p8M=y8Eo3e@K} z5av2I=3X=T1#a!)ifmRCC&+p97o6YYYmu00aDP}gE6Fx4@ zN@<24!++Qd=&+H6ri+fQcZGU(BTJ8-;^WHy>(-di^TATC>%_DDMwSl|wghy~baJqt zuJ*!?4dn8(w}xC^k2d(Y-iKWL`(GxP<&$ub$Ismw^5BcIxZa06{K+1ZM>u-qza|8U z{QRvU5&nP#*ZYu&KS62|xxW}6u)qB8TSFSJP5#35KBPelgZbEc%MFYiUAf*~O4=g7 zFzDm4rEJaO@hvAyj>ueB$>c^ZZIPFykKrcE)iL~*lOacOuB$}WAwwVcO@_I+f6Gac zBR|(SBSk+}m=sry6}OxOd9>jAW+a%h`Y4|c69(ic+*PW}a=1UfXhS^Ck8Z{B^cQ$| zM^7kKG@k+W#z(lWOY(ka!!Rr^Vm@K#%ubHOeZ#u|^NS2d4j}R?K}ySCubpT;xKEUR zsRv44vgQzVl7+M?cDo>Bl(yrmP5MuYuXvHKd)i+{Oib9R9OBz}cS04+*Y^=Cpi@e!`8^ZG;JhT-JZ zefw-q2oXT>tBfLRfl922_8IsS;zi?Y6%P$2*@1XZzrSALt>FU%xd3 zl6_@EtRt6RszAK!l~KON^4>SaKT>%S@i&9ar!*X3)s?Zbyiwtg2jKg#tA34Hm&~I)VAcO}(o4MA5m$|vF0igZ7#0$jiC?gQap~+ymkrb6h!u9qd(iZus3bTOy zbTDN!<*rayQ}#2rG9E2nD96_bf0u0-J)u-aKMU%Ok8oW_X~J-Ju=pM@F#H~4kObB~`}jYHdLS6%Lj}6#vm)f7&8%+Jw7K z!z*xSb>0W88mrheEN@9=G_A3uP2+;?z@j?@C^Y4+P}czE_e;&Ku7Cf0u~mSL@IPSh zLXRlbKKPrvT-PY#_rDDbJ_^2!)Q2wMnlq&><>k5U$VGzzt?dD8i_*2Fpap&`iWD^pB z%Na=g8IzC>h2{s*G=%G`F_;U~X&t0H<@2m}uB+wbhi`8wZlI{KlpBK2w!-x;@V#|~ z$WvooD{zbM+1~nrRcVncVBt^oQGsoe>s@ez8eFGCz(iB-3Uv*b{;S<(z_f+btMfOE zF8Jr{y`nH)8B{mXzHrHuX5eHi}G{a<9ee-?!rMekkI&_6Vs z9oQG)uEnEgp!AnnO8KnOYoZKdm70KQR>ZKZZn_wy7q6kJ(q0=#tj``GRcX8pB({Mr zki3iNKOx!8HQ*nOkuaDUZFI~a|E zT=w=ygL#3o^?$<#0r`N~W_FUYljv+9e~;|2MM60@*d0!)h4QzL9ie!)@c{$&@pmi= zQ3N}Q<_li%VHD3>BaE~!oT-r zV%WZHpPAV?C=&@t%SdvB7Rls1TOD-Tpkue}g3br3>*%Ti)e2+?Stu0kR*UbNnaT&uNS z7Z6vV!=I9DH*$2Y{}9uqR1k+K` zuuX7XTjYgFpewBi$eJja?WzkVNC4K{AuypScZIqJCVv;Uj~OTItAx|Re3DM8ziITG z*JK}qm=cYRj3t{`U-TYlvPmn@5XEb;C?woG3ZbBswRbOn@6}oPL+lmSi9aQxx2ZqbZ~Ao<*ray=k~%d13tPlA6~Jog55WZzWmx*1LlEC z$KxkN@}V>u$0p(I4G6qW4+Q)yED<=fKOauUAoIFeGG7THp%h2-uQwT);|H_(Wbf2; zuvf%wa1eXFEU~=M>WQ5l?C#p24q~sLCH8V~gi<*3yW7TD_-q8ae*$+8w@96dGw|rk zb+r&b8;taA?|5jJV*th*FbtuZ7pcD-W|_*et-N8DR^C>~ukIgQ9qtWZbltDsC`%*H z51DZ9~H+2X@GmnEQ!3i`XwhvVwsn> z$`Z=+;+KyCA$t{dKHO(BeQTyf_OhY%ba)MnjO%@vsgL89EY{{nkU*1Uk@c-O^RrW* zQyH%6oNCjceDF@7mW>p7SQ}_;wq4}q1HM7a=WcBP_My;vfHnDE8-Sbvc9EdZ5lw@NLR}eJ;9;Y}sFsi?+enhrdwVOGzJMEb`Yj zxcYDt3NZyOZW5Q0QR9%mYqv_p;qM9ZJ_m`R+gQEwk$j3<81); zAv>SLo4+>5;a4EUpHeVpZhp}QRv#|w=Ohl+vdl0iX#=hgnfZB40JnM`vjQFd1P9&B(P)HY zQ02NhUTy-eE%L6))H^IlGjOi!g0#2x{qPOSQM#Y=QKnD!a%b}kL%`X>w#RIk; ztK7Z?0wp3WIslWKQ7m5t#B~LpQ|#8^`$ZN)dF05I(UBwj(_&`VfDOU|_>m)}RE`|6 z>HP77>C}EdAH?*uJC05-9qd_kcIVx(hfpqhICU`Ix$BPb|93y_sm(jR)2A3jkTn=- z>SD0U08P<^>xYN`GX5!)E8w0hF4>vOVk#22E4B}1I|(dxd8a=bu=E!|hW)}Eli7t7 zU|easau^KfKtfq6x4|ijw*6wdgZwij2Y7Y94V+3Do!wYyH2KOUV<2iNXCa%3^I`5^rK*nKE#L(mOVyfaeS zVu{1lmn6O)kT)>MXOOVC-k=NMVSK0`9%}HYm4=gbm8eg}PD9yV)D@lAN;RQ}c+(GX z0Q`^?f*)8Qx2FKW_o0tKrBlut7{xtgS6pw<1&fjE8lZjnI8lrS*WNm!K%`DQ`9-q5 z;b=6R*^#L6?o6YJgiQ1SZEF)y#S>gt;C_Yn_!5f4XhQ-sHb9*m+o` ziLn3}6eZRn@C53Kkk~l~R;4OU-Wk0`DqIIqfH?G$FpbRZ#oz{Ho)S>ZAtmT3|e^*P7#4Cfwv<_TZa$CXG7U#6goP)W=VZjRD3A*9Ln}lv2w^;CYGWk z_=i=(8E)3t13XaxTU=LHgW^JYd@$ZAMlcreguYa#d86@bWMLMyuwYPl2*e`^rNG&Z znx&s*pPnr^u#Z)NMBhwUhF8NxrRvM^Ay$1!!(3eNW>fpKx-&^8h;u1{pVEniW zg6>5H5-#%Q?Irvn2gUSS441VMhW&=JFJI4_4x%PZp6hBl%L`)jgX!2z$KHINGiPv> z4Mj20k%V-4qMa7YnM2IN-!?KQ5qsTPI5e7%xMIZKB3sUFvXawb*^jz4LQA~d!b0o7 zxxacja(;Sz{qx*xI5SpLK&t>JC}>ygHbU(HJPSO3meLJSsVyNI>3u6&=gI$ zuCdFX(FtkzVBg|bvHQ?qIt<@!oV`PI>t}O94kdwDO>oX3rR_1<-ZFZZyvOg}O$WAYdh+T{QSO~+sO066rIqB#!F>Oq$=V(-8FF3e za=N#5crKbvD7!4Z9iL1M?{HjHF26l5_8!Wfmfw_MT7qNMz~YuB{2Sc<0iGy?Ew1b6 zTjhY2?65(Cz%ImfwRm!=VDzIo5bQ7laj6f?x|HY9*3e?u00r<^sk^3&HOwW~ zn>YrPhSJN$U{}j!1?sG%x_|;WNDn~?zc;WDG({7xtC9M>q~oJvFn!mkbD=IgYy1IO zlrXSGz}=f%DY*9}WAq-%hl^_}Kek1Eg5$8dgC}BYXE3n#)OB+(UW`314nHSKGL&5c z`a@xx|HQCN#0S&rZT%NS8lmhdtk;oE!JQ?a%)rZWgTWnmqA0ewet391{wb6hO)R$G zuS>mZE9+UYyHK_ldL4yY`9^A64MGUB&h^_}6v@Ou9xVX8kO7Fhs<{ChN^-{gi`i^&sQ`s( zmO_607+r+&^!Uo;;Q|9A+y!!5dOc}?7j7DiB`ij+t0M9-#KT@>HUEOL8i=p~Kr}@Y zuB-8pUhGu-o~`_%-3;hrhYcW{B-7)%njUCeR~$~NLviTx(4*Ze=9eeCr^gp34NmM_ zKo^k_uHRB70qs4ryCI+{cZIqd0{-&8-HDlU|~N&FjM0dv43M^2X>TayaDFcJ-AKT90VairX^Hkx=h-r$le@I={c zaa{u>o`h#%M8xk624plv6Ry`2g|T%Yil!jS^?IWJmPP>d(124kMH8;q6Gf!$z$u!7 zDA$!JVoWHH?(V)nF`R}xZ={RW4zvWVElw{r9ONgNo=mwL#(+RgJI@b4%emdGn9jL( z1h}QeosGU!nirAh;#?8-^q7l&m6o4Q`IUzSqN5_&N=!{9E2fsmgeIZ1okkYX%~!OV z>x~{BDaXtE?Dm4n<&ZTT9#Mj6uw!{ws(*un9q=H0aQ*P`1LB`TnMq6*yMIB_RXd9( zV@IKEpKNH~wK9!#n(QeuyIj8=*-s|r17bNeHQ7hx)e^2Z7~xrnT-U+YA8NC6%X@>k z4!m>i18Ce$@yRnc3g=rZZdxv*>l4hVGUm^3*rrBc?0$P=`f~qF`T5IUAfa&k zV5q`agR?%CjFsL#D6iXmtU0W|6V>cG%HY+(W9iMFlC#^}WvlG(TAu z_?E(ResI(Acr_d~JkMkSK?i9~AZW1Snn6(oG#$!{H!9?LWc~2XEqOweizcBwdf|p_ z?R~&!B(Jt6PplKpduHLt6YGTYURgNu#5&>RXA$zmI^mqoN=KepCmit`xJe7o@?rCM zF&uGJfO9YH6|FIhgN0Du0;7tDW8XKv+0yYr{M2Y-2LYl*-mFpA%jdqyC58ik>0~|L zG%pNh70a7_IDi+aaqx_%GY^~g0ME7odf;Z`@hY}&xiFlhV#q0!107XA1P@}|_0L~u z@H}v&;3hq;jI}oa{ehOy<#~ZFPpk|2nU>Jyd4VoZtPA?tmeA#Sfi6$13%X>G8C#d< z1-d-3F6feNW}wUS0$rY17j(%?GtlLEfi6$13%X>n8R+u7K$j=h1zj@U40L&3pvx2M zf-dPp2D&^i(B+ABLFc1EOOy7B(Nvxn=<>w6puc0wxGv8Nba`T3&}9!UV=(f(K$j=h z1)Y~Ba|R>N3v_v6UC`waLq_WIyg-*HRzugtM40fB6mP|(w>xx6Q8QAP=SAxB#JZ#| zDQX6~JTK7YiFHAj6g2}~o)_ry#JZqMikg8g&kJ;UVqMTBMa@8$=LNbvu`cM6qGq7W z^8#I-SQm6jQ8Uoxd4VoZtP8rNs2S+;yg-*H)&*Ts)C_caUZBep>w+#RY6iMIFVN+Q zbwQUDH3MCq7wGcDx}Zynnt?9Q3v_v6UC<>(%|Msu1-d-3F6fe?W}wUS0$rXE=*VhA zd3JbrtYT{c>#n*~+b#f{ojk%_gK(#90>6O2KY66;6u1Bs;m8vr98c!l$Pt@ z?M6DGZ2uxoYtrdGoeydv&ker&1Uyk3TUc@ibcTnR~L~aSN5mr$}5~5FpM50bq96XEF{=GF=|IaF}&A{*{arZDG z7=_Z~mjb!2^!>?RqhAgp3Bf0?1HlU-{7`0Mcm0rd&OV$n8IP`AzcaV;9pcN8Rw&yC z^-kndw1*nSZhiW>!BG`>qDZ#5u93~#e)xFTU^t$^qE>QM25hxX_BMT@b#Q0|r}JC; z3|QUAiwNNXm_CKQ2LTHj*lHIZ$_oBxX-?!+E6~Y zAKo9ok=}c8`0axWvz_U%`~Xhn(7Y~(uOyrtp5+2FT3YGZpu+@-%l4)Kpr?#|T_Wg*eu5U~0aiLx0fqnmUt3voXAJwDmnA54o{R-ma+Ze)9& zM?zIakMJLWrlKLF8DU_z;t-HLFVf#AeA!g@+Nyy6|JnNvI600g{Uzf-G{KnQ15B_< zo3xU^1WA@GVF?RK4sd`O?Y5*rvop)gtb#dmKEfS2=NylG9B>C0$e0XAIxsn7at8ma zdfr#_=Bw_msqO9AHU8`Ov){bl?)Sd>-m6#D)ydm`W#N0d9Dwibzq0VXi|YaS-u^2K z|Mro&@9n>`@V$%d0rtK9R~EikCj#)j{Z|&gcd;d>XW0`R^4R~9}`dqcyP zxBtq*zgcAE@%CR?_}<0$K=OF|uPpr2BiZ-%Us?Fx^fti0xBn90>-VwsUUzTbL}A~` z!SiMqcP~e<=buN-`z!pD0I#C!^WfNb0$IQ2mSc z!t?ZS&gnR9F)PX3(NM$&RuFO)z`X)I5FE2&(#=Q%?;ww1F9u%6L3gmyymRZayk?+N z)2z6sFN?`4fG8_|R)k}&FN_)==X7VQ^k8lmnVQ_wGJ+rtB-%jfoF zpO@mxRz4d^bAMHDFGSK>xjkuC%V{{s`ps4&=hqDZ4l6 zbWKw#qfB2a>SHu_nRJupY<^ab65_RFh_JE`aZkP5SRMFu*6pZ!6A%1(NfQrUCpz6) zJLB4bmxp??Qe|(`uTtEV97@`qr2lEw+~n3R>J5uNG3^9nm5{2{z^+TK<>U){?v~p%`BSoZRea>naj`i&M9GQ4p8PTo0 zz=SX6c;{hWr(j%m>RA?-=hZ{*?GeP)Lsf3}>3Q{Vd5jK;tK9rEjLX}@!-d|uTjq7% zofGJO*wH^d!=c!Nb^kgn_S~~{r#O^NLC<%3&eEOYP&i>d-|4wacZx&dl=Xb4=PlhS z4uwT;cap6$Nm9oajutT^Nc75`pr0S@baPYB;8RVm145oX3%_p3SfM4?^6Tm*-*Dd@gaz23E{wQ%%)G=jJz zF_gFsUNyy`*n{=ryV19pZ&BOR=KB)>_#I~1fbW0zdkfD9eN1|0Z`RVcnfIcn5796# zw9@y%3lY8#eKIOO?3Ys5MP}2N{BQuTefqF6nx5VvUoEb1NHksYP=O6gE-anXO~b1n zBId&1BOFA%^tY|ErBU0TmA?6Daub?g`SH*TSbJJo)-y9C=Yk9K?6;Y_kB?}u%^SL1 zbLW0C_W z$Fd9SLzn547fLVg>=O zxD)Ip)U5lcshIRorwZ(=!^+;E1^0*!*sE&La`rKYcN;(` zHjJdNb9L}3(>L~Q>)1zF>$6N+eu%>70J@qE))Hjys}MDDGsFZC00E43znL_=+o2c! zUmfqCGm&-QKlKg6gee^;Irar(S$MIQ;$| z;VGG3LNezJiTNO8qkdtMNE;9o*QCM8$HHR9vI3v9419dNwb;!(DBPBC^mQ%Vy&Ns^ zK%tjdnb#7p`ChjTw?xkgH`SWvoh|0>sqUT@PQVbB?3!ZE6q2qTiG~>QU=h8Jbw8)V z=;>7!8_nITgQui$;x%J1yXKONPaX1faT(g^SE`eQ4l7MP_gj$8anX!7AT8u5pECyS zd!$n%6LIql!QyPU)lN^1;OdR+3UPzpm7;6HM#v`l^i|FuW-q16HJgl64=0 zu7DPU9jpLgL}|kV8tXo2nvo_A$4$Ndx{nE=B%S)InfI3J&m6=r5FK;C4iNm2Z)-cF>YlARU`FxDqV{lEFA;I9W!`AHRfj}&k6k- zvgd2~kI4x?X`FkaRM+xsllWLu^ljmv^xj917|8 zG#rXOSoiZ%KUizJ`V|hzZvahz- z=%S7zJAmGAA5T^K?a}SH;DSSkJIxCg+NQtFFPPV`Trlnu&L4SwFQ;N}0m3?PdJ@2k z!A!usIUYwq`e4SeH+CW21Az_LzZlFU%$dXR6G!@BzD~Qa4&R=HNj>N9B#nKrXAZzF zkiK{PB~N-@u>l7ZQ!$R5HirQhj`YENgLYvZzC8((#b72B7#soVgJJSK-9sT8V6qs@ zqyj_D&Y0|8OuMk2hsA*|1~a9=06yf%nVD8#sM#6Je3^D(y(BYh6c{i9IdW!Z6c}oD z1~cEJU04q?qpy~lw~5)0LL_Yk0X#rfzz5g1DDOPaV?9VfaigjoK zhU8{Sp$T)tC4}`nFb;Kbj~X#G#bDx?;i(GiC7GF4VM1gf{aWMbUTV@5GqXm43Fiz? zRah^{%!~p9Mj%Jd%vuE|%nZ-;Sue@VIt2!dK>Ey-9ukUkW_=Wx(g~b7br~%Lp1MSN z$H9mf>m^fT95*E!JK;R#TE==wFcS(4+6(FDY3bA`&eKT+Cd>@iGS*8nGo`?Q5y+7< zGp)dcncm`|4qriX>NS_&=YqMSw%!~pPW`=tY>m|XgRbapfq|Z#nRezlV6K00T zKh}fHWLA9z0X#tZe3Y&(DAZQk#keT%v>-gjdXRwP+BOb;j2%z_=~IFGE3pUbWx?Qj zsj(AI4elhYmjpARz@WX5J~K?7r{|%8$-o)ncodq_T{wUyj+?5{Oh$2YH_9y5^8)1} z8sKIs3XQWWdEn`JaE8pA=_oYE6F02qfpMq<+^mU0y<`$kt**R@8yLPu zsl|F(ZdTR6Fcmj2R9uRu^uR!2$QZ(TwUzaluVOmuQ95=Bk9VV;-Tj_4=8tqB9zKP#Luy@znXD*{q@X*Y9u*m6m z!R)i|R9gWIe7zuw0W<*Ji1i=?#pPohcb6MG;W3Ao z2{XfYkg* z=|y?RvqZqhdbD>u=Q32=@dy~avmW$b+z-a_XJdz0&X|>QMPR)om&IL>}vTSRClg3ZWnXG-L&Q=ss$DNtAay>IQtQ2MK^TEB$DU zf4-;QjVm%Lw16>SeT7dz4NFR(dD!X`k9vYY|2D3(i838l8lGwhiyaO+!PX*o# zfjwByW5Q8ZOvO09nPBXMso>#-^^#yF6d1G@(r3oCP<$6J~~o7uNHz zIMBslrlP=bSXeI!W?F#(myjb5(;5XP941~}W4juq*UD zYOr51m`MdD%nXk$tmk2IjVJ~)rN96_q|eMLgqQV_V5XzMxE3NTzzsbQ4fZQ$W=#|r zW`gxREUpp7U}mDgIHOpJT}FqsQ9 z3Ia7Yqo=y40yiBJguu~=^8R<^jrE}SKs0VC_J@iFFORVv1jAG)@6^tWK-_|MVLj+Q zK*g>4RFJ0(Fg%j6UJ}ei6qt%fwn+sh+-1K`yRaT)hLc2j569&c+J*I?_dt@|rk^C# z&Wt4CYQ=gm`|46O}VOHnUz5%uE!RF(!}n zl3>WhMJuLrgU72nVD2z!pv}W zXFbS_P7-@_rScx8f^Vi|J<7YiAuG!JZ3!UjLGQ(Z7{A?WN>K%dn!N%ks=$O(l;_Z_ z2g9UO)Fz4Y9;V_n+J*I?_dt@|VKpU*0z=KtND`ilu^wb5a2_}wg{Ji6EP!T0p$X?K zPk>kta#Nf&lL|~YP^GCU1~a9=gqh*z_gOE=%(Mct;>@gx0&{aBkM)ww%qTGADWh|9 zk!8Ikn6(Pbiic@k6c`Q*>m`|4ufU8TOguI!@8P)Io_1lqBo*U#68pvudCJJxJJK$! zmjpARz=Y$%Cm5`k1T(3?P_r|bVe&jZ4-HHQ>c0ZB;>?Us2x!x$6$dk+z<^6g|Ncua zEZDW*qU=Cnzv3`WDllPY_&kvHY$RqY!05ta&kL1z>;mai!RLXjM|rnX{wVL`049?4 zp!ecHj8BPOV<#L4t{kkF1T&$)P_sv0NhTGTFf*Kzte0eFN`VP8!#8@cUJ}f-0uyG2 zbA7E5 zW-=;L&MI;ZZHAr)2m1xkOer*BZutC<^*k`H6~#Sj#MBgniDQO~E9)hhnO0#!WFh@p zaL(|6%z7Rc*N9>;GYSmgLynx8wF*p_8O{;bOER-gfdM0s zJ~O3R=k`{DKL}}8MCO0nVD8#!p!h>7uJJ0!+lwK4^y#@ zc40l*`(0xC%bm$P>p|~o$uO;t0#iCnnWr72g}_slDDS6JCuhB6G{*0a0zS-XN9kx3 zmy-zvhN@^rZTmXy!g`Pyj*Ie6q-S`)8|}h+(0efz;~Qe)at{K-dPy)73Jj5+!3?jN zuwD|(qyj_D&Hz(!#!e|PVP<$LztT-Rzn*@Ss$_V%72g{*aQR@pB$z1$Cd>?<-LPH~%(Man zMj(A=Dz0s76qqnGTs~MY$;^xb14bZ6&dk~C5IxdQ3uOvPbZ8wJMo z3c>5?dDNhN#l2~r0<+>dvtEG#d`Le`9uwGAWF9f@xZ`9;E7e=XqCoIl!&nc3$Q%cw zAh`CR-6A1^5O^Gn@_tXa5y^VcdvSh_?-0Aj4tZLEaZrH?cNQM^STD)Uqyn?z%uFdT zVP<%!VZ9_X(+W(OnTo6Z8U-fI43B%PmtSF(Q^Sen>3L{ix){uq0uyG22OZY)usG1gV5Suqz=!nbvZa%z7|a?4 zCd>>EI;@vuW=4SlBakC!W~~AfW`+kH)=M(8PJsafQe*1NI-F(j_($`#twPPhz9TC>3L{ix){ua0uxS+i)k0u z^RPJ3fyut6hFoP(!-FpCWzlGEz$T=hv#yP@i>K$ofyv@PO{zfQ2*{CxnNnaz5T{~h zrWF`40_ihTb=_BB!p!gp$a-GNxZEmcW=4SlBakC!W~~AfW`+kH)=M(8PJsap=)SM~L#iE2Xgi zKh}fZPmp7+%y^;WIr3*?r|+cq%g;}4I_o9DOeiqnp39>!>m|WVDllPYDz5fZQD8Wd zo}Nby+F6`4(+W&DOk7Y|&%@$C7lT=&zyLm^pTHG|X-0twGsA1ftOuFl!lJx`0!W{V zJ@}JI)`Q-Q<1&7p*fn;@Q^pLNck%Q*G%#HZWe;prReCBdwT0#iDJi^DV%1*YPh zS*yTMLS%%A>m2JP!?aF;3Fl13VOl?0FqvnEQ4mUJ%GHE(EA0*YNwXUTpyGgx|GnTd zSr*QY`_e9~mrT|1`^SLca>jZ|FcVQ=Dh|`60u!z%e5S#AkQtugD({p58TIUbvc{ftVK_Xhx&NY;biivuxU6T8L^v7C_=Og!r)!AvMH)a(o}F1ly| z9a0j^qyiIWhC3_kCBaN7Fx1S^Gc&Eggqh(r3)X|o=+0}qkMbU-;(@da>p|~Di4tOuFNoIWcEBjAJcG|Ky40?2xhfIyxm{X8X4 z8L2TxyRcpo%!C3HP7UrPtOvnlriOw*jm_Yr^hl$xKW?q>KhQA$b(6V${h(ZlQQYK; zgIiu8>Wc<9k2!3|${(!UQ`@_xHM`h}bMZp4@M4jOjdO8B`Gb}20$yw3f+aR77`YpW zKP$Drr8O_;F3^Sc3mRhw%*d9El;JF8y(E|k1qL7>{TZwaAXZv9q>6aX9+*QufX0 zyN3t|>#vYQJw{;iWcgtw>Q=2?n@_q)`+^)`!w|$kSoZ*71At{-S}_H@l5oMfCxIqE zTy@#S9EzPG{j^~gSoi#6156edl<_Dqd{+?b@a@Urz)VDeVe&lPLm?Xgh6_rRcl0?J zV?EEgLzy#cdXN}2#|LLkua$jYClUuZA45!OV*CZ$6v(xM{kF+3C;Z0pDl+RO!AvMH zR1q_ZCQoo!F9~K+fpL_8EJU^c2gXZ!Nib8Z3Cy$tL(Lq0nARvT{b=-l`3XG6cu6lA zrWpl>EN3voOAf3D!CYS&Y-Meq8S1wtwYj9-*<>!I)#}Zpt>BD+8-4P$H`&)}Co7BR z7-_SW?sZ^Ml(?cTmOMQ#L}2@>^25plX>g+a-++>c^*r|uCl9Al-Z2cJF{}r@2Zo+` zF>LHmJ2N^9S9jJ+f|*cY&|XNtj5vPL0_+Ms4-NJ!W@b`>2{XfGgY`Ttt`Ry(?6oT8 z9e5#qD)`zI>rvkAVtbVL27rlVJ?OnS5aTVeYwVDxj1+CsF07XY^WYdTjMvli(4Y~; z%uFaSBS_I=Fp~-l;6wTu>oI{{MdlIXjw=Q;rND%l;WEa0Nifq)`MU&M_dJg zn9k@!j${Ob4hcfg#mttIDDMm8jrE}S;?x-LpjE?^lhRZagPBlZ!gGo!$)c$n5IFkxoK7%%B1 znOUd6kmZct#5cgP9t4wF^%aCLAEiqjSN$mOZ34)8kbo1!fR$K%Zzr>@`GtBTxnO)z z{%q`!r;KQHX&2T@f|*cY!l}WvjP;UWCKVWJb_O#{o~P%bf$8EfO(`&8W_bK#Jr9cm zo!My=1b~Jd`8;;~u(&o&0SHJR4A*wngM1VRXF`Dq2Zz&?^^#yF6&NrA=`&Mtt)Eh0 z!pv}OXFbRa7h2^V6hQh^9KxSOvL5taoFwB%#jdeKolY1%XSlr{`e+#XR&xc|QUxB3aLK?obAXo`;BCV~0Ft3_TapF07XXGoiq& zcxRbZV5r#{%rJSLo<|K#7l&y|feAD71=@x6JS+}$F_`g(3h1G7<{!{Pk*t>lGoipx zvopfPgD~qsFq!2KFKyW03L^>o0ArPF0!|pI0`eEdp^^#yF6qpeNrZ1%{eE z`Y=r?FkxnRR?T`aOqpq`Agnka z2{XgxgY`Tt4zx}Zd*g-j4!n^5VhZ1A!FrT;d!;nW`=bC%B$c!0_nL zddVG0@q?ZJp=wmfD`4P2N>3a{<+Rad4B@&&3e%Lv0}i=J;{;o#@3MyjqX3nR&)53 z$ivuKcots%@P8t|ArkFzsc{wggO%sj8jDGh^*fUFugk#~D^%*5gb-(chLiNKUjHgJvqFiHJ3D;hp{0V_#v?X!TR^)4<6Gv;3WBBB?bfc@)aM`Fr+gE z);%oP08E+n$c%?oWB`175?~5POBbt*Nd{+w=K&kwDKi_MB7ZeIhtr*zW*r_q2?&|Y z_a6pOU~mNF=m+d5Fr|m3%y$7fW+uj?(6|DC;DSZyUVvl+_6wkyh(c2}HO6Eq3fKTqDykq8%F2s5;1~?hC zQci51D#pyQG=41M)b^)h>=KdS+l_ZR58a8LgRmSYpFiujXOIrrJ~rIRr^7T1Equzu z`XCUc0aIq->Ysc@f#Kx_)|LCgp8%5?qkrnt8cq{#KkI{jl?Dize7F;zaRmlPK>DK! zui3J$+zARm2gIA*4zz*Nl4bQBoAHpqIP3i>r1 zGi##2cwvDPgpDvb75f$E%uE!Rio>)v3JiyZb;kt%7>=2BQD91k>3Bh9WjZ;rH_)_O zjVKg6C19PIa5^aA2}+cA3{)`2y7R_Aa6rZcI_20`Mm;wi3xCx5GGz=|_fprfHHlPuiC8R$=i2}nhVI96b2{4&4 zdU~JMaGG%YS@&FH10ZDb(Vw6wFgOBo^b?dQFcsJL$tWs-d)aTpB06Go6ovyKK}q6 z*O4Dq?lW)a+F7?(`ofVY`5NO zq79e!X9gI3E(Kh-0oU%aVeD3P(-w5>;Exr26B&*G$ScaB+z6M5851nmhGAwBJXo`S zB>`|%k;e%#2SC&4CRh$apGLIE=YR)m)~_7mV7LjE!!!&njDdA89@v0po*+N0#4Qo+ z{sb!u49A3Z`1T~g=or=K&9`~Bn2sL>;k_^=l6B8DHsCnqjg>tJt%iA1|7byI9$c^9DNl+6&6UU7!mSWx0Js7fKNHmj*8yo`Zr_J%i4eNPe9O?i! zQ&DKD&YS5dG~9()FU!rEC^Q)P5KGp}qM3<8Q+1@)Mxo*Bx2%`tW?dATs<~Mog~s(% zNgPklBL|6AJTSzS8x9QXc~~6i>j^3={ULKw4-CK$Ir8E+88sjW<4)wTyhnI zi5oC^xMsa1n7Hw>;xNSxmyYhG_U+;@#f_GwnbC`S=AHL@Tjt@xsPTFO)gRV_iJ}qA z)w;Da+x5991nUU_>p=uq9JA6s>0x+FIlmU zbI|LEscSF*-MsV}Q{^7(umI~lntKhgdR>v%Wb2s=L(ao6imCSf0GPaHN9P?3 zdlH^9^X}R5S96pk4R+7ySR7NW>vnC2m#mvl%77WkHqP(NzqBpRP-r`9d za5ed1rOe5q0Pq})bj27*5S~TK%gfr>6rN(`HMNio3!wp z?1oZIZzA$qI2P7*`*znaOlS5=}(a-4y8vRHXxMOlOI-UPhMDuVU@$k zI-GkFXfnr|{$xzGT$saw8S@hkDeE2xY=F(YAVh~7hCK;Sna%Fcgq|z=nd5N;q~Do& z=EJ%N0vlkm7|cWz7@qmC4&R;}4$Nc}n2N{ysVFcUNl*7EkqyH!GaUt{VrJGvf$^9? zi$&%UC<*}2d{_?x&@%-Kz|It+5b(^0^&kRG zfy@-1*UzN#!^kOO;?^Rs3*!h{=9#vGFwAV}BA61%`mMyZ#|4fXZiUBT8fK_x46J)t zumPAddue~Dj{?I(JL~Z6Nr1_W(evf6=BRL*aQj*JTw?WKK~XGZW)cXl_fPWZk0#8$e9}O&mAuopm_(<%UNk)`MV*shNx$7#!i%B=Kb2z)&@sxJXspr6%JB2JS+vm(82Ffq}D@ z^|EN<28OC56*n;O4VSE!*C94-9b~yfm2Nfnh3c zVBqH*SudHyQ>$uVm|9f>!&F?}aAa678>zT~p>zi??oz7?%!mi6VrJsTsEWfBH$;`L ze8tSfjZi$VVm;WMiowJUP*`5Y5XO2Cj9%iKJ&?>E+-M#HRVPm{4C#-N3v}|tdJuwM z3{N3!-LPS_2=ueCDS~a?TBANYS`fIMz{(VaU6wzXH0sS{v_Nn(rj;p>bDHMC;L+po z^5Wc4=fyxs(wBOguO;knw-%eai%|Y&tS@|nc40l(MFtWy1!6IDqVl42Mb{vjwfRI| zQ4s}#Z(3qK$OKlU4agiOQVeXpY zps?;i!3ID=)U4Ey)_;jY+?D=;_$ z((gVl3(*4X3LVZ_Vn5xBdoMncUK|C36M}X2?sUN5dLHE+=>ub|J8%302k6cNY*c)GUkxrxRd0EmFOX^iujm@NmRzby2HRffGLxfm&jkuLE*l_E?H;K zP6vcQUr}Ii1f<_rcz;&dDk zKoiH!rLZc})17aLlZU%9%@HRHUc(-4Fi4am8VpQDDN%e2sQteGq}t zh6A%!fx!`w{s2{R&a8_9!@Y-f#l_%Hw68c!>!ZMwW=5Z}_olhKyJit53IrbfK?7MI zq(NyofG4?8-Z348G1is8!JjxF<3#zT@;7q;^@EJ_9zHQ+tPKfXR%}%jB=- zC?OcTXQTA-eRilaH zhEF(H_X30s2vmTZ$*4%VdLh<59o|_EiDqh5p_z_CQ+3{~i9*8*O{{Z(oIYfvW}?t| zc>*uUBj=ueV81{XuZ==eb)?osq2b7|PK@-`A-P!}g{E|*iU)?ca>Jt%>wPZh7pN%) z6IX3YXH7AfxMEXrnBrrHWWhPyKBeed)O zVDyQry4oI9?D**Ttx0tBD9MtOfJtcYa2?~Z=qI8A}N+8zahudcIBuKOxLTtR+V zS$mZzW;gF`7Wbx?cl1rsuPn=ZE3>@6GRy5{wR{z!#mYl9^YPpw>u1MutrNMu*zCL- zf$Xn7AfWEEB5nhIK#uVXJfI_2hB#Y(3$j2Y>oAGkD2MtgcEAJHR_;m`+DRvAc5C(% zDtpWW=C6_6%r#Bd3LMFwJUJ-M==+dgI6#wWOVev%Jfl~zanC3=z_`BatDQ7V3l1f( zD{v6~Y8Q>(R+S>-r^M#jwFIe^HFIyyp=5XWXd}6oVd?b+jfiGR`)Rh?^R-4be)O_X zJK2}CljiL5wgl;DWzw8`Ljg8)Y2@8JcDFCNU~0(59c)j&je9Wj*L#H-2AjHi`1i9h~)`ciqwI z>C;0|{+VpngZ_2v?O9Ef_tzogM6w?AuE+6?du%BR1Gkv9s%)>FgCzeJF;X1;f zm4}jcw?12IY*?9^q&s6;c;6w|438ricXT@17u>zG@4fussw3@6{<{l2MCX!*Zwu+N z8rPj=U#r>OQk$x^lM3xi)j2hfn2FrRu6@hU|Bus zfya!xi}TI*6!e7XXrQ-RX_gk2)wYiG7I*UhUck>-s$}>VN-6UO2eC1x%iuQqpzkzNL9v}V(F-+zaL zj1!s<$loA50}{`KXu&s z4;;Isb%rzP%mO;nYKUPL0DzHon8e?o6iS1EbnhnfE8oQT1G`Apxrt8+HBl$ZKJ(S= zowe?P4~TISeAFxFHaZjWsU<7zsk>dWTXrY9FxYQ@Z`f^%%D^UA0l>U8F&qmjc|aSbu)VzfOr= zDkT&O&nZU=AH2>jP`Z)5fgCk1E3J7X^vq%d=+PP1YS;JIo3+Mv87Yb!eEW%jb>2LWn`uJV#lly&h;7jHfU>ltO`RcNlrmy7jRuovv7>(&<2 z3GFMtKMV)e3_yqkAb3|7xcI)3!6U}7pdT8xjo7i+>25wU*b>hxPtRW!@}j5bre5u< zx95|&kASO;V6cZ*i-*^+C$vL%h7FxgYqnnNCUd=M!AIe!9~2zsk1ij_pG30$T1LQ( z>WsE^Q+fA@h`7@894(F@jd;0gaI=Rhe0>B*D1`DCylGaG0e3A zrkwSE7aadB(!L(a{wv0juE<2;K%wec9~)!+Kg9q4h(w8SICK}@Q|~qs=YEJu%KOEt zV;MgHN7q$5RlZ36VD|IU2@AqF_CsR)BkTk_=s~0RcBfCldizgk$hgiEvv6TXL}eavgwgoMeKzD@H_o1~EAL+8c;@uEka4g7##qNE9+3J@ zf(>0QHy=r67rS;=VP~#ikX?qExcn&82pu8wW`gcw=Sv0VzYKIDe-ko)oa|_&B)Kg{ z-hq?>cBj>LzWO789FS3}zKB1GWc?}(0%&lY z=5u5ElFT2-pR&UBYaAx>>LK&T%Z^rVYShh2YP^$ULQZtAv177)+zKxtrui zFrP7g^K|frVty^V5gTKJ=IyIoi_CMDo+xJ5<(WTL{8+ikte1Cpw(8Apk&9menaCT7 z>GgRo^aIPfBW!E-LgJidbaHObN$i9>^+0>lUboxab>LiNMC3Qro*RpcJF_e7ryrl$ zWL7m>^XV1oowYf8Lf~9wwC0yEAri@eMmUN6boaI+zB4||>>JmwVT|>gN&|6=vgcj* z9_#(wdZ%s%HU+{Pnb9KnyqWkoJ&#OXC3n=0)aOmK<~FvD#5g%wjNf%AC-vr%ocx^_ zzgwOY-BEk1GpY^X1Ja*BVQ1{Y`pw1f-ShnGnYhjQND^-$c5&|SWy3Lo%t~wDPC@#) zkdf^_K~qHHCU9pNKd_%SO9KaHM=#TOG{fMtA&(zDnx*G(8*5RO`c`6iW1a&YfIY2+ z9j#7b9p$caYq7g2&%W*|=hd5Yt;4-plVS->Li)7vEQ$5oi1#z{P#i0^t?Z%L(V8pF zgC7Hp$lJ1M&I9ejPC}{Dh zU(a7sfS=8S5l;fY9vB+QzV5Ob*Zt63{yng~*3px#?6wvvL!Lev{PX1`-H#~-^sJnO zYlO^;B{pCOj_I-*_hP!N)+wgTYFo}*(>H4z!Q^vU2-lX6E~{m!3S(9tnZP7=SwIh% zo~+FD(dtkiU0&2WibpV+Ulyvh<)h1LSr6qKTlSps>;-$>>9+;t>XoPy{e4hD1|{~p zuKci4ou|k(uVrpD$GHN}V-S;7Ttr%iO&JFM6F4GvEr`=x%f5cl~U| zAc6cGi=Opp%SV^h@<3Ic`2BK%9xy#wndzg|p+362sC5*N;5qQDf?X~@mesPJ`t|O( z{Nr-w2)c%q=0?b6wXM(FdruUYf#$D3pK;#)3i%rZ-k>u$$`}nh=<2@#4{Psf^%g;} zS5|;A_lF_87io|58Rro@=nA&^$bz|9!!8!tMbRQR=yR~LOU$2>=SD}{+}>#(l)-!5 zhFLK_kIkYP@UPErd**j9)S_IRA9A4+YFF!U4E+0qZ0mInV>=f6eM9#3vg4lKl{EYG zy=nu9g!Gp=_#JAj|9uFAULdH+9rss|%9WMM(X~pqa<(;Z9%M=EJyk_Mu87Jh?M7aC z61?a{Gq1FnH7uHkaf)1E6%7_V)7XF=bfVQ7-76JP#0y?9 zKI5J>t5`+Gv62mN9%^jB4gFU=w6>3GW~HSKSB8#&xelGmPYIFHv1r;^U%Km9IaW7`?o08 z838(m0>nDszx5z)9``yu4w@Ou5~6ibTs)Xvp*1IpA*N8O8=U&?NQe zJVh>|=RA5m=|2**sW*OMNHAv#fCTBM0Ka#b^$R&p+*&^a&|Z}xoI^}r%uSm#KOH~)J$ z`8rAd;2JeBe5K48U$I^u5%Qut`lbW*#+*5aQ_Vo#Kq8E0WB~wh#X65HkEB+j`#COk zDcEf1bBnb`HRLGOg_cI%hu|b z<m&gKre#xb92>VYF zyU)+Fug_ZQ=8PqMjPsfjCzA>oQ-CM_LQ|%PYb~b-V6@V#n_auWHuH~U_axe@%WG}1 z+cNKXPioz>lA~v|4mX$8lOE);Lbt3A^ohP*p(`@}C$wLr#}77OzX9WBg|5hWbP&81 zx@EP_(66(c`J;{7o6DBfxE>4V>vLxDX<5zdp4)866na@b=)k6T$5m!MUD&P6`r!jf z(kQYXed;Ya*t=7!GRsGo)w0g@rYSJj?RO-U2}plj`3PDpyReRe<4Krg?%970 z_rOwG@;b5praUitZ7KB<-H_Ld={M)O&~qm{bv92zUcVq1cp3oFd5hS6yT~c|gF9i> zO|YxIz3UIk1*LSx=@4#&hfmhuD!$*5*G7F(W-;tZ<`?X_LJj^F;c(V2hBi(t2zT@>L{n{^7O>aRx0~xu zjT^y9Mtr&MzlX5T2zE!P9&_CtCeA~~e0-Xc?7iaQ{p87c&{><}PaorRE{15t`^fZK zZiGHZHp`U@E%SDwL&+X<%_Zrc1h$4*Nd+oInDq|`lK&(`uCY2Lb{{ZjX>&J?@y~0> ztbb7aekjksuGf+?=hlop()<4S5(J{c99-De3$U;I#;XoRpXu3s2w*jLU zHiW;&1pttKpJzf@$MbZs@Uc)^^^DRoz4A@uaIwx!{CKE|x(=BuaJ}0J%tKOthos7= z5?qHa5+|QzXCPYhcxJn`xN!3V>t~4-9QbAR_hkp~X-SH$xF<$2Hx z55_|}4=ZxOlh&__;jia8$Rz331ti^uNcyH&{(hbZ9cp!bzsLt)G5(g={z0A(lszlu zs&|on4#T&_?ho_q>v7pU4?24=y@9~FSg9KbZcDLXoiFozhug=aQBJI2*X)jg2Ia)N zy8mPG@e}riBlIau@0k!;J3X}^>$t%DOsxMV&x>x!ro_HqFMVpg$OmV|C1U%xc|LU3 z$?an?_J1LEf1hU`=K@yR!6e4`uf*sd^NeeP)ZM42Aqd0FegFueW&JPgobwIYWaWlN z_x63~_zO&XFF?e*mSECJ9HD1c#`cEvg?H(E`VIwdI0>#MK%9B}$Z@kNy~Q=X@9vI$ zH`p1{??$**gFRS3HiY9^a-@~!+Sj4Fx!hrzZLb4G0m04y!us(cAi7uVs5Q+>OM5(q zi3!;m09e0K2!QT3_FXZ`yBrGBV_sIB6f&;IOFIap2?dB*7r;58P7Zk($lKZ3WT9)i z=eFj;Vt2Anqt_5FkT(yxq5i+KT{o}5?j9}j!A-ek$cLV&?za=wwP-=cK*HA1(L9Oh z={VO-D3;Z@K27ew>#FyT!gXjx#`!o;w@(Xkq{H2JWM8TkdoFe9Gr_`hPNkBC1U-Kp(g56sXeWhefg@rIinqgf=|0yzf%Z>F33F=Itl>V zC|1VY+Jf7FACTdfmLf=ye)cextntJmdpWw@2GEQR;iVixoKcnVr3GMQo!2=|=f;6|7|^4~ z8MSV0Gz|qcK;hl+!0otes2#dW*x|f)nZU(sn1tcW0<7OnFr2|y&+K#b!h#VHmi&Ik>-5l3O^0~DFuzWVb>C^|V!_>oiOnMKBKTeH);D(GwY>Hu z?%Y~qF>!=s!MQ5e}G@^q#i_038t zA9qHfUa2~X7e))#G1j@hY^AWHOu9_Ysgo5qR8XN6W5GJPE!2+eI_a9R9Ch-Zg5h3_ z1{^rCR}#u`6a5C9mO0MLzKwvMECRAiKgAJT+UTS3S35M z-yw|b6nQshMAL5R-Xqub?}GAG4HxJKkp95?2bu}8?jOMeCgun5u}3(#zsP&YA6yF3 z1&VYzMDZYp!JJ=-&XGMHAkwR#0}jlyBKEzuF%HfZ!x!W^(Cg8z6Pb@CA8}qXdJ!*H zoJZC-F;6;YoEMWjMNT+4=ZBo=A$9lS-W^GEQQ7YYq4&$rhKExAuznu`-~~%hr({*% zc97_x-B%nvkR758dbM-Yfn@ezGKUHC>6P?C)H0tmUU~EP;5hnwgl+I1+)-zRsr@3) z-~`Mb!HdWeOQ3vgjL&RXpOYgFi1gAUuM;>F89j~3OUSr4UTG)x1^d7VM-+#)t0D&Pg@1Esve@ z{kbJJJ0iDo$n?df4d#KCEv?zb&fWSQ*~7%6!lLYPM5GrneYL?nb~}6U>}L90)Hw?= zZVrk0qj_#_DlM~e+x}*&ouuVSZf#3FrcaSZHSVx@yD-nIuKc|hL7H`iR=aa|FxX#K z5EH|!cJnzubW}jU>%OYrrP5zG0-GPo4M3Q%gFfYw*I26dxaMSBCgFs5n7Dc*yM!yf z)OPklVxAmbqNj(8hezdk(#07w;50r(?O`e(A=V!)@}ANTcRn)k5e9Q#xw-O_%-Iji zO73mw=K?5z^aI&JjAa+rpTKS9K_b=FGmH=On#s8>joNn|k~VAQo#cPN>-IRF_|NiV)O(qUYMkusgkLSNGj?J9Rn&Sfm-I;h-lx&)rS_gqm|K>2d%QY? zMfYHHHzIBpbRaTvn^(wRBR<~CzCe&{AG30g>bM!Uxe~utj(uOAZJkMWO|S?!Phwst zM*m&pxdPaAdOZ)5yS${jD>rB*WPHNBUi|+@UL$o06ddV8H423s3K0GT<_)sP`}3UW z3MVW4MfSPRzftUdK;(H$rk*kw`{`?@xRPe{cJ}io!hb&d(W_(q_mAPFH>NX+fj(9I zlAsUC9-k#wE-!RbqzU#W^h4$e;37ZVln;yj&*k~iSIF#*l=jxQA_u?fw<-Pg5i$Jv zJO{cV_Et(Y;5a|S%vgAS%KAqc0BRxt>p8lV#NMYBqhS01=0vjo@em9>3hzqHrNXxP z9^!@$f;*?sh^f9uj_xNy&h#+g-?Hmm4fDh<-=fRRIDJnN{7`__xLA_e9RJab|H#t36-q z7P;Vo^*dtv`y%H;E_!!~7r8i{=7rxC(?1ZIu!|FAgOzFjO}3hs)3?nhfDi6U_9f;$ z0<+0k{mc+Ea*z?+roYG@h_{nCMAMdjhjwFPUUppM;*U5~k##*As+M8iXBxw->GywWYm%E1mH^I;JWMx z2z0!S@%p}cQkYOY#$A~VKS&I_LZxTWy=rKtFt!;D)eb_PF$v@}V*M(D_ktL?77C~ef!J`d65fdYmJz`vq-NB4zOih zxRM{^Wk#&uCC`hlQg$p!Ku=IisiHNJm~VVp>5uIYaY4Y({~`uI^oY^&Xt|9 z3+p?@^Eo2h94y(MjwkjzB~jk*MBZ7yw^%<{WQV=$>ne8b-&|j?lfjMVJstL`8c-d4TI%7UcIdf8dRkg>3n+av^6dk(3+o)J zM}(TF>kk&NY*RB@3SRww$0%5TB%$!`4b_XIyLGsO1`MLw1> z=uA#Oogq)oI20KT=V(4tjH7BhiQL!O)BiGsc|NCq?aBGe$W|UMo+bWX#D3vVHwsq` z?Buh^37^zFTa3S08zX6aUUm@0C$Bn{%vOS$c+i%Mk8NV0@iF~CT z{Q5lO1O42-OQ^{D|B>}qiPbmcS=ZyXS+=V+dMD^bKE6plUM;rYnCC;br}WrNE;7!U z{2Dpu^*Rw+`?{xMeclxt8Ohnx5&27LB$nfmV?FpWl6CUy3 z&gi+b>E7N;|IVD>2JGe9;5GmeHiX*%=#YK|!L0|_gLQ7?`$CP>H>8?N%dJMkeoI7_ z{t`4dqe630dB1r2Pmxa&h_0yUi|Rd3=PWG2&j-Z*e~ElD`_V(J`INZ%4640nY+poE zJ}9O?BJ!#1Lie6@y6dd>a~n}#oq6#gX&Q3gNhFqLu|H99?aVmYM!Lho7*CE^|FB^A zsK|dRq}k5Z_VUUQa1D>@(j?+nSg;X}fa(D27@0;42lZ ze_Fh|0N@8&rpMxq$v*RBQ57&g6M~@^)YDfmcj|o_5RB30JdzPivCg&d^Px8CQGKiV zYDU9;IU|{K4IQEienEVEQRLG&sRmEr%x55)W_{FtBtCtC*Ms_;qE(Q7f^#ad{-scR z{g@u?`(K%uJ_K&1*{pL+zY=Pro{G394Cm3zAtL$>@$h~2guo!_t=w4OzoT_1DYDPk zfi4!iKM?tJvFpZ7ot5T|*gGXvoR5sNHTLmM#?D1%z(>8g6d&IT`Ou4&_=t;ZL`ERE z5#JUEKNR^4CThR|vowT*?}*_aiF_tI(7BYp7$!E>-xbS07Wu3q4|}kz8bi|e#PUx> zKAS!0`jcLyp4-#fve;=oYh@&mk8(CR<1e{Qv&oZ9bd^q!Hb5JZUd;rhVW~7aRd^|yU@jN-Mx0GCAuu^taUnvTkW|` z=2K4Hg8pg!TUN0`@`YMBnJ=1@;)b2l?^yl4wJBO5;qN5jvX|Q$Ozk1*V19GVlxWXZ!9QoBJu^|-8ER(i}XF!=20&g z8S1`7z(uoIKRLvM9?AN5M<4FT+e=}-JNi^|@uH$e;_m1e2d9M`cx_16i(*{dF4{#p z{f=>Q`;ZG=+U-rnW`1Mu-z@U6lRDNN$On?%<(oc%FsE|8Id_oJ8A_qLgPLP8a7NzShv*6ZhHjX+6LyWJ};$Q}zTpU7c z%&y2O#A1xA%e}<@IU-*od%Bj&_FhigOA5+5Vb3T9dj4VX|nPBEkAD@r>m0qO4CyaWlxq#d^bBy>UP? zvWY9?Zt-)Uyq4lj#7bL!V~p<+qxa1-t`}Qer%dZG7RAjJ6-=SuEJq!7y$hYkO9{T} z%sSWM`$-!SFel+k7ogn>je6HyZNm+|{~&EN2cfk%%(d2S@SyU&wa_tjbCn_A#3kgG zb-yfyZt#78@bN(A1t9Wc@7TDk#Qp+qBZ41pD@KpYOrGyudRrfcEWfP8b#CcxeZ*z0 zt@}c4)yweiZb!QcYA)}l=U|USlQV`LKFK>E-X6qW(PQ-G4qGK#?OOY&c$1}9W1_Om(P{byun?7@1I-EsxVo5e?=_%xwly+tUz zS-eJJhiSa}^3i=R&_YN*6#Q5W>klRrpu!Df8UkkVd(YJu~zD@iDFp&{UKHYkhn13?6K|}ST z+LpF??%I^6ef9m$N5(nUZ*i>1N0aTh$@a{Av9}RB;~DcsFZKBhj`hcg_oomF=UunZ zdY8-13WVpAS$wS6erlc%owR0AuRd=s6V7dH9f@)BI5GZDLpiB8m*nK}V*H=;oZvLY zN_(+0vJp=ZyHCrrug`7M+nUX*dSY05q8NU9o`Zn~bXyAx$=pAp!(=2ghx#RKmn(x_ z*|V$At@al4%#C@<{{`?eOjf^@$^z>j78svpIOu!2EcBjlkMhr-kYxQM;`eiT{&gJ9 zg_)hLg~bJhAlRioDuzFw=RmfnGZwZE5+MCinxETX{bOSO3wiGK0BZX|QQLTW_;E4% z#XRFWc=qYAq^-mfr>}^72lJ(Goantt(e$h()z5cR3bFoaf$&w4sNybkdYw0&V%qO`cHSgr)p`aR z=TpjSXsrK?eFFqcBA!;-SKcV^!EC-HWL%%{_HOw(V3t?S+ryBfZ$?`)#w#ELQor#W zd+4q|Qh+kb7=L|-b>C^I!~R@I`HjeT3Vs)LU7J!;9*4ei0iiD&hf(%|2U{8w(U9?sGRcU&X;s|#{)zt+1AfQ${{yN1HKg|37I zW}R;<`jt3G7j+T_xL)+W%Iw;i5ll1-7J}a@`?X;B9bwgX*&~-wu6urIAGujX7 z^S~=ZtY1O;4fuBwCiNvN}N&g5OfKSwAs^K+kT^Fr(L; zdF(Vj6T?eYOu`}pkbWfi%!~C?1;(8i4oqqyaHgpccnQbj^=V>wJkJ3pJ676Ly&~hB z&9@Vy6M4qD%iu*IMNVcYa<>=blX*^b3+yRZk#RnsyMq{=$}_H8pwH)&6T;gc;}JtY zEihli9?;$V(Tghs_icuzhj)}FPUkgM5Ayw+KR$qdKg=M{%ag2c6yIkKgQ5Rz>t)5T zNqle3!=SsIxyi^@;f_PlpVFa5x{Lg71A>PQ;akga1oFXqhbf<3ox$KSe8K`OT4_Gs z;P7Xxnsef87Tep{2W)ePD>BY`yG4xNGtW3kvr;}JjN9l;8__I4@$aw_yF2sjGx#Fo z4E}5}dha~rx(mq%7R}eOKY}ilF+b&!`uA*_1FP@e?7cp~6jkS82!`$_9v;A+z^QB> zv$FS{6=%Mm{n*)$2zJIEtlyvgatn3;vsa$%6)0Rd8fs~RJ+l6w7zFtA*eCiyM8QX@ zE=L7`O|a(k3IN!HbuJMP4z*JE1p9I~7&P$+quGj~O5m{G7Vlj~0r*)_zR2eoyZd}_ zR9Qd5o;lCtG$>tTuiJYqaY=nB0(fX+9o{^N7NL|`*{$tY&hZ!QImQ**vxyBjLWj0% zrbI=?xyZqmCt)0EZ)LkSS6}R$|5*esqyF51GR3ot4f*!(v#j=Y1??QDEhKx)7Y2$v ze2%&U0DBTGkjzUfX!>^9iO&}h^eP-C^5Js$BRPSwpJ#qD#{47X@J9`8e&P!e=pQR) zpD?uf$r$sG6SGguGq0oDdk49B_Mpha7b&`r7t2q|^Dr>T*V;)p{bI!b7I4JRL_I}J zKX+&sX%-c^;3Rsgn0{WK3tfNl*j14OZo@x`;pgW$&}UAm1G)8}$O)gl{<9c=L7o%Y z-tTE0WgdY=0dnKC+ki@o4dKOC9D%+#_FZ_9Exfk+G=ccSye8;!Dj)4rZSedtMNb#I zFUqs8#{&CO@FL^92w1eGc1W@{jK8py?F>^d%t{6dFZxBpr7;W z6JqzXdG>WjOz&$Fh64Rf{b8&(+*2?~yW;U2NlQr!}sET~O96X8qr1(NC^1w;=Rk8ekc^>pw+5e_Q z+LEtFwB#FN|J!+f^u4pan~$S?Tr9S~ljlRWrxkc-tKRH(R1=WZn4VTLf#sO;7{a&7NFIT@25#b+*)gKLGJ+1FW*15j_P^|uV80%@~ zTpWS@r(*SzVXUXvi>x#DpNZ9<4`V&W{>=#NzZ9!~&aE=eGzR*dE?DNR?E3x~R zJo`E&?Kw}8aX#nywHWG8Aa7^#qyX?4hQbq zwWi8m;4FgAONGA^<5$QtUO1)|d19h|FP^TL=SiOtoY$@`*ptyB2b@xW5C>Pvb8sV> zKUfI|y;o<#VE3Pr?rc5trX9^? zb%C6>vfVnothR-z= z7=O6^R$}z_BJnh{Yo5Mi-WuI0#y!h?i>9RG(PCTL^$Y4-f!IJqIM?-Xw$w z?eMdJ3lMaqlPksfCa#KoWf#_cr=co%ccEh=(*h7W9_LmNk9)9VP6!U^IG#ES>zf6|R*|^9%$e3`(vxNT6)9CamKDtwL9tEb`=ntG zjciYAhn%`A0A8i!Dd3rM{5?hfJKN_u(oS<-q5lfDpQBE$RCV|TMU!re53wuVn*KvG%7r+S`L?6e-LO{d7TsAb&(%q40`>|J#qY- zg6!di18dO@Z~wBCx=3h*)3#AV^h;^Lo0ewkhA`onXT7)MVL2Tv3E6?UZC7> zJYD2h*_EEF^r!ECDacx;?O9^_xgx*DE_C0+B@pF6c6Y+hk!Mmev;J)H{5+BPhUk-+Z3DMCf?E$Zs(%`d+>C^!#t0l9vh6oz zPLvH+rqoI3Ijl7VGhRyi0g^ugIS=AA0Fh&NFJt!JEN5>iQW%1b{IHn*gvejB3q5Nt zIQLXOsZp2NwZ4xCB^QbO4O26a$%}h+5nFLO{!CF|-A~5Q(&tBohEIz8Ez>b@Da$_W zf5m=hBQzP8@7^osAXxvjxc!VsJOk}kyY=@2HtaK>DCtc(I&LaDM{g}@s{_(JqI#PGL8{-w}Ct5ffqH@w9-xL6E-N914GfgbJm zw7RuMY!kjImcJ_!9T{>=&)@s+P3g^Ga56PiwD=}_*1s@wIdba z_<{KUk;p4B4xP8Sy8tKKh6yigc&hjlG5k}JS7Zlzdegs3drZGXcrN%V?ImLR7b363 zE(Y=jcinCZN8qa5O~pi4mtd-82+Qks|6g`7Iu^aGM6z6 zxrYP>T(kZ=@%$%|S7!vWeay;qm_5=xt{-f#g*Ei6(HiRvHH93tk96B~T9`jA0#$ylGeW#q}a0&~@feMk=DxzeUd4X~3Z=RClL50X` zGbNdMsB*)rHJpdnfMt=_VGrI39qymW$~?~-ePhbpsk#hF|bA#jTqUnc6x(bEYaITEk6XQ1)c|CTbE2H^(gG$NjiBasq`VGYSO-0^-LFmb=fH-?0X-2m7 zhGPC^B5%lUGC0Kov*MH*Goqy`UW;MfXFXIuPZSzX7I`Amq5D#Qq3~J}(DQr5jldfk%i59_xSx3>{_<0ALllS4^Ex%a%?5#yjqbJyup?RntRdnd8HQRK<&LBCI@_g=~v z^W$Q6lgPhg^Lm)-nLm5MF0m9jc_s2hpyt|6>Xi`O$np2FVs zkZirnyLc3cVD7CE+gnB6ihbxyd&)_I2G^I%>x6GPZKF@BcF+prUz=-Np*vUY9 zl#}@O+(lg6OXTg?l|FUFeEF=zJli_IU|zSFs4&Tq{mzAsh%J6^!*GQ?phpZ}cwP=B zSofWVre3ED6=#dQJyW9BBkZDdWOVN;c6W-r1KZaxgcJMmfxVkpzqiOcvKQH&uD+z7 zhu&Cgt7rzR)ZN9vE|GU)2l~7K4&vK!4>7-6lF~9C$ak7k1Ni_&uIi>y#g-uLYw8H_tvWwXW|#c z1nU(rp=$=-(Ud;(x#DEtEln8yS+9T$J?#V;c5pQ(1D8iS^kg4&*zdF@?GX_67<>~&cyo9+^u-`;FD6;D_}%-56g%hH&&bnyqpGQg7pe`zlI{%zJuR=nQgV4h2gzi=qapMz=s||?p2#lR8Dx; zbNHsV>;-kR75Merjdr$^eM!5waG2gR;H{P65+08BTg&$lupR`YFSYM%xAwQqH%?c> zc)>Gi)_p2Mmn5U8kh^JD#ibvfJ+fW_6?!o@rQ-5_$wSX2cGdUp#Y_DAsJlz}Tmv?OG5n{fixv=6?;E88=5SCA?C-3f{q_4>8TBP)LYQ7?A9 zJQCvfpN!W!ULJ|jFU;@tpTUMiTya*ova((QD|)e1GG(Dr?_N$9 z2=(&|JvPi+3RXNV@ZO?yu3-MhdIf3WpX%9rr90hreWCXjqZKEGmy21ifE4{~gJcIt zu`BBqU5#6!>7h0zUNJf4w*Itct7Ccs&uAV7&q+^lH0$ z5NO3a3E#58dIePIdHZhj_+lgdY~^aX?u2(8AvajBnvkO%bA2}ZqR`4LGxH78tXDt? zR^hB%4Kt2o>2e(F6;Pn>>cJ(L6)zUNe$09WJm@t;H|M(iE|KZ0$c~P|?>4M>mhfpB z>lI{)KEZdi{Qu>#bPTh@?I0(Y)3aGUId_EEAFJW62R>h8y@F1oZx*yPm`8tCyms*9 zg7pe$7)XnDlGv-ay%)}`g1f@_jt|x=;A3FsVfa`TXKZ-A4QA!6SHOer9_RK>URS(( z@V!v1S3rYKhjTB-PhaRa1MKeBx{I9~;LQLT?@hfioiXec8ogW5kkC5Y?6bt?S-2a* ze#WbV`L={a?C)nku&+6Fo zw)y2{eK8tGHGCWj;n0EE)jFJhnP5|EF4>_H1Ik4BIYF?4u!f`V6q|Zs_K*zY9bDbYa?3t2a#HI60Agk9qxsPz-F&^#sCUf!E1PqjWp$$SXTIKC>=qIf-3I;C>Aabk9HY z`_4?U)m5G9>Y1JO9Pk`P5dueq;Nbu{0o0%<4;2*gEg&eUC=cJtBLqSqK!6ZPvff*D zf7QSK-M;YXJm{hM==>O0$0Rrgch`rY6C-QT^}?1Hg8nFfWo*u^KJVf4V zT7Ct03%G&{fz|=KykiFGOqyG{v*X9JtY^{aT^0tNpEkj-ta5%mQ>UrT$PaWMzcVW2 zRA`>yqvcm|H-PblIy}<;VfXTI)pE)G@)z&{j#E!3_XB09$q=28A0wxrWjH06c~HD_ zgfHMKZU<3E{RmXCPw(qT$<>{+!Y|2)ER+?k>U!HEXCD;GU`s(0Tmm>>x`xyL&mRK3WDjI7c{TAAKBz z2e=p2!zQ?{dncVfq0>9`-W;W@> z8N~6lM+S<5?>d@%knHSz# zd9`6eB@nlPiqLXdQ~Ck^0LQ-Y?JUN61H~XRtE;0Ma#TzmdwQ9&4A;Zm$KLC;I@zEr zRkkEJmlj{CmL;v$9@h%Lo5qo?0uEmy85l}cH|z0hGF>wFUs+>7&L!*w`_ z8+u`jwcVCF4%e6}7xRJF*Y%XQh~c8;Bb>{HhZB#iw^h2WUuhlnYw3-RcXMYF-47Tq zxF5$+e-?K+{J@Oicuu#n&dF&XqsE;ado@RP;sWQKYS;C=sVqs+waN&zE?*t@N z={6b!IxRn&yA7QEuo9$NU^@9U=Z@~f5gO%w6L%Th;agQYxg|!Y2ZnHTwMAc2TK*aC z`dC}&x!0>aa=2r-Ojoqqrby{Uwehzna{0I&yGh-ISqMa?M6CB+~Kx<3O zL6z$l5~y^2T3=dTuX6p`-q*j*T_5*V^O(o%mI?AU=C`%)T?qxWFYvHvS#h_5yXiAQ zTNyESt$zOYgY_OJAkyTnhpn#8ozv5DJ9XW>Nc9SHab(DV-6i<47he zvhuT27^2FW?&Rm#?)S96t=ch@A&L;dUXZciLlKr`xzX;Y8!vq}kLR`nG*aTVwf@?%--P zSbEPL%Sye4t5lEliXDKaqs%_27ma0|x_RpG{*WWi`^3KZcvj~L){1zo1Gf1!9ZHWk z;YGS-ET2y|`HnmnDEgkycvc76ff1h1OULs0K>pzf6?)lNR;U~!1cA{b7Tl`3Stlf9 zvwE;by?m^y19v^ba~ZFS*fwVhyh?9{@N-#Gn?YpTomnlEbzV}XI#_PMK9+L3jjN8|FBs1X-Og3WC%5se&g;19_@B?K#!_%^kt|&;Ge%pC9*t+cc1NmL5;exWUZ=Qv;Sqvao%O34GdgvZwK{De|Lv-(t8iPTS6}m#Yp*f^{U7|^t86~jHOvX;)E=L3G2Ye_JF46v z9uukusmiWTvT$QpWHU8I-%WT&Pcu*T+fgQV+$kR)t#1YCVyx#BOoB+xB?g?9MI>Eo zhsUt$QP^5fg0vy_1nh=Lr7IPj(6O0h`4H|Tm=o&%(Xwcys}XEYwvseFrK2Z7biiXS0^~irW3BDTP&dycT54#S8Ik1J?~pQ6|EDoEB;|9JpH6sGUBTk6C-UbBCdn3Aq3!ES6TRokK3(OGVii((uT^CMd6Y6UktRx5gC-$`h8=pZ01i%PmG z!5PYWpAwyMy%waK3MO<aL=1hTuui}&kvq$}6tQUvY^ED>{>cv3G!l32K8pV^e49r#4)ZsB zw0TU2L7zAQs-;$xmMdEV>~QOret|RufU*TSVJTyGJrRpbCgY*@CVggz$ zYE5aG>K3ePjl+vut~DK^7q(NwvOUJJ#S@BVx5B8QGhqndpA_vnCIYm31IHIH(bunw zD{x)^0N~!p!DS4Cu=TUOiDQdbRmoRCP>pNF5IBYaoCvQkiwyv*TRW?_Q-@`1pCM2k zs9*rrIgw%m(5Fv3Eo{AP700%pa2Iu!>`B{m5V)>&g`UHPg}cc?#+mBfy`<(uw_e?b z98w%S=*{U7tgd3g)HXS+J$>9_D}!3N83)mt&R0}vsv47kcR%p5?LIBjJ}&DX^ubC3 zvy*_8c4ujsVuhy=bE@s>-WIA|+fvPZ4_Vue317ceXmNb;K96%@TMsDgE@;ex7G8XB zJ9aaN7Pn*bvDxMsc5W5L`W4%*g0*+^Si$PY+TpO`ky^0;<=byQ_!_V6Dojn>TdZoy z)yMSbIHuUD9t+!{S>Llr=aSdoFV*L9Sg{+cv37Jq*RC{L!@9B0=kVg0gg1n7BiWg* zXW_Qa-e}BAtiZ9bU?#jlSv*0d;F<4nD=_;sS1e4NO5KI2lhY?bnva97sKrFfw4q{Y z;%O8G%{djw%MRS!HVXd5`?BNo7a-c!TXF7Ah(u{CM9Y;WihZa8=pnm{%Ot$<6dx^D z#_2ZhOR)T}@EqZNcN_O3EftHWWDI3xapC}9@vg6`ps~A_AuV=DLa4 zhs2?GWC~8!i@1&w4nrZPhlQz^>5Dn0*dsMe7m~CYKrl+kx)uP`dP`NZJyR!zte@;l zII_4;YBYO&upMriaEVZLsj@vN>`@t-&}s?H5n$p_X&%K>hj&{ljl%eZjYMB3t(DVS zu^PoA{RHd$NmcLYcVD=UAXnTwT}~R|hMs>ZIt4j8I)%3X6kPb-TC4kH_rR6gk(xPN{VnON}0#LKJZ-6_qy-1I?1n3Arzsn*wM+0=Z|6Z@cb_BM# zSKzW03t*&o#zqwjR&2mXNO77~uG4ax%}IFe>8e+>Tv?%gapwC`3eFK;cs#;ds?%)T zI0-bV4@%3G#rd7aLg*iJG&EQHZZIWiM-VEGQ#oj*wKuA(ELWToM3_orKN3-@QnCoZ zB)s`Fk(!pNN+B-rCN7kMn<^dt?=)k(pw&$i5JaVZ6D?D!M!n|8+t|owL5$WRCvD&Jyvg|aMoJB^r8(*i$dKNA6UPgv!%G@ z@9rufWUWa3WZ%J&#dfu}m86-@Swpk_MYVpm@8sBCX&;X{_BL0dTvoa7;^<crT|`OxEdn30Xhc_ifr3pj0FD6wa9SQ}l7wrc*w0Ij`c)5PK64#_1 zX5HP#M6dp4>mwXjoOGFQKPrZx6s!3_BLvWNeY6VLwImB7u>?bb{TK%p4|7d-vV_ii zZAtUxRqe+)xHwpFC`~#ov-yRI7?yKf1h3yHe1gM^y#rYP!g>e7)z9^l9M_&!OhrmB zby;ps+7^4@*nV$B<2uNg2w2xjTN^NSzXf}bJ$~LE@3qG-*yB)w zCW~zdcb7Z3(_Wr9dN!xp^)zgucJY+h2**aiex(mvsXk44c|CnQuN4FJ5ja0=1 z@|#7$UIkyxLB`f0huk}@QP}z|?=>7-JSdQ}T??~_ng}86C;ViNFdoCIWqLV&+o;_w zCc$eGevN~QeKF%O91GiFck1Zp1g#hC%Q>_-8^G+}XXSd2F!eIMm1BwrUreTb5XL&u zK54dkXE@y}jJ=F+ufljCsdw7>TykNoJ=0;`-Pdu9al|`kT+Y!I>H1xS*K=606J|{A zidj-3C98UVQH+DvIJ|))jC1I<-EHdSJ7D9PF9}yK*Wci{dYlDe>bC~J$uY&DaAOU6 zHu@H_ezL#Ck;U8o&IE0xw^3Ge+Er+(7`CYYvRDJJHMoQ0iDNLrv9_xFLjds>23s z-pmokwjp2k2d`}}w!v>3-olaXNw3ip6Z4^U+njw>nlo>6_EruoUVh!o_{_o9g6%TY zD0Ka@eH%v?kEQ1kT)Xg(D3@){exGBDgN&=mj#z{eY5u|ICj0@%b&#q3nwVOzsr^F^ z>;Scdljy*8j>}z!qw099UNEOADdGfK_@CUy+Qr4`^6r3?ZF>$e6gXW9bEzI z7w#W(U~xxxCa9m-)JrbL4Kl#{b&;-Dy6@x&<1D+yxS>v3d;5Su^+Np<4l4E!NINE6 z{pR3Z99P^4tLe?#^iG&KGxQsxS+8dQlw;eQYG?LuJ*$Sdr#gWBc8Odc7 zu71V-HOF;O?^nS3!Tt>g78~0|J<3~boJV@U4~t3gnuK?Agr8(1?dE6*!+yF#+JYH& zK>a-&X}pc8A-xo=t4O3g^c0i#a)6&;pO`rsz_nHsW}@SYI{sS@GhQAjPZ|@%6%oIW zL;QXAgyxtd7OQOAcnfA|qw#(Y^%LzG%`rzURs$HDK09+Pk|V{Tvq*-w86V^*W80il7Ta7x)*ps79RI*^#=UIs z81rfSF2S+9lhbySi0&_7JBji)G=B@q@Ws>cq5O;0edWjegR}mZ`zHs;%TCKfoPrXi zWw>v+H@MDEyr5s2H5a_}Yt~4c-r~ZkfjPrl{4&4D&I11gVDbVnTIJ$UX z$qd~sg>9Wf)oexGm0o}=9EER}?>}>V@zDOViaWw~=oao@IJN@@KBjC-BbqJW*3u?? znB$6Lnzg#w1$ZvmiF+5>6TtofkdJVH@ovin;G-?UJFH*!Q4TL2xGVSDviX1Kh+*&! zD}9UuJHX%ySHC^@SB@*rjVQJ>%hxI^=E4hEKiPld$l~Z3A9EMfe$@ZYq3&taI_rI$ zUBTdf4eRv&H%A$VdyRa}5@ya~r;idHdv*Lj9AVtRttCmc9?&H@_X}Px-v8zB z4(ME*CtST;KVF6FiuN07;VD?dTe$iivQJdv+PiMIaP@QjB*zs;Z`P75h(xfZw_rZ_ zhAThCfyF~Thm$lsWt`loh(B6C_k1z5UcPs7eDOf#F}+(=SQolO5B7YTql?`GGWYlb zQLR_CcX3>C?9rK*b)k^;lKl)vwx=P}d(z+qP6e#LA^R)`7MlVx;qB2PSg&C3=D6Yx zE|}Q0VBK^YtbZVQ{j&WWhZoCMV?C1URS1M@>D&7J+IuQ;HFAZ$JVdX4y?&nKiZ}Pk zBZ|5SD~2Q=BUaXHWxv2-#apB-=q{KrWlg}nRhZ@rm5ELPs?V%`kzrdadi1Ijn;^T>{px*ZVlIc&gv5(d$eniWJQi zzeu#})$UiSAYKg`VIqiaD>m#X`Byo_gUo|y*KZ!a#)0*vCtWNC!D|ri=b+-)Y@WS{ zck2+cez|^~Ba5fy)VB1JoApkybac^i5Vn4{4{&U8$Dvjvg3h1R)5`R!rq;t1ynejj z;PB$D?k(QKNgKilg4U1rn;cp^f@{$pX{lI*3&8|)^aT_is8i<^#@Jc-0&Fyfx}>&MWSuU7 z>W6v`2lYvot~r(_U`}sQnQvW7nz2j8*m{laK8`dtwsg-K0qd9WxmCbU*Ryb2ukZmw z4ws2yy^4Jl2lgUs8_aPgL0KI_)i2lm990~lDX1Q4WnmKA)=b#?*`CL-?U^gqX=h1u zAq|?UcXU?>`w5>vBH@*w(dhOags`9R1sq|VMq}267Q0}ZAwSa#Ii@(YXqf7>k8nML z!z8V=)WEuP}TG$F|2TAhu!_hBOP8a)fcx9i%B- zr*=uaQQ9_t+jbd;80X=dndag$ltx#7@VR4;<*;61&ti@itC)o$&BEmz+@6_aVHT;G z0A`YjE%1x>3XUtz|5&qJMYTh!_DYT}&i^p$CuLzv8nU4mNcav8Z%;rhQ%&1@_^Gon zv;%uXxZ5>2J3KghK>U!sA82LVb5#EZZKcX{!v}iAW8}wzr~@IcrLzDF>g!gNhxH8j KV_N}VMgI?TKu0kE diff --git a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/RefreshListTabPages.xml b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/RefreshListTabPages.xml new file mode 100644 index 00000000..4bb3296c --- /dev/null +++ b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/RefreshListTabPages.xml @@ -0,0 +1,1039 @@ + + + + + + + + + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + + + + + + + + + + + + + <_ Text="First"/> + <_ Text="Second"/> + <_ Text="Third"/> + <_ Text="Fourth"/> + <_ Text="Fifth"/> + <_ Text="Sixth"/> + + + +
    +
    +
    +
    + + + + + + + + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + + + + + + + + + + + + + + + + + + self.items + Name + Selected + + +
    +
    +
    +
    + + + + + + + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ Text="Id"/> + <_ Text="Category"/> + <_ Text="Size"/> + <_ Text="File"/> + + + + <_>0 + <_>1 + <_>2 + + + + <_ Text="First" LargeImage-uri="res://LargeImages/Task" SmallImage-uri="res://SmallImages/Task"><_>One<_>Two<_>Three + <_ Text="Second" LargeImage-uri="res://LargeImages/Reminder" SmallImage-uri="res://SmallImages/Reminder"><_>One<_>Two<_>Three + <_ Text="Third" LargeImage-uri="res://LargeImages/Tip" SmallImage-uri="res://SmallImages/Tip"><_>One<_>Two<_>Three + <_ Text="Fourth" LargeImage-uri="res://LargeImages/Tip" SmallImage-uri="res://SmallImages/Tip"><_>One<_>Two<_>Three + + + +
    +
    +
    +
    + + + + + + + + + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + self.items + LargeImage + SmallImage + + + <_ Text="Id" TextProperty="Name"/> + <_ Text="Category" TextProperty="Sub1"/> + <_ Text="Size" TextProperty="Sub2"/> + <_ Text="File" TextProperty="Sub3"/> + + + + <_>0 + <_>1 + <_>2 + + + +
    +
    +
    +
    + + + + + + + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + + + + + + + + + + + + + + + self.rootItem + DoNotUse + Name + SmallImage + Children + + +
    +
    +
    +
    + + + + + + + + + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:MinSize + <_>composeType:Percentage percentage:1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + self.items + LargeImage + SmallImage + + + <_ Text="Id" TextProperty="Name" ValueProperty="Name"/> + <_ Text="Category" TextProperty="Sub1" ValueProperty="Sub1"/> + <_ Text="Size" TextProperty="Sub2" ValueProperty="Sub2"/> + <_ Text="File" TextProperty="Sub3" ValueProperty="Sub3"> + HyperlinkVisualizerTemplate;FocusRectangleVisualizerTemplate;CellBorderVisualizerTemplate + demo:TextEditor + + + + + <_>0 + <_>1 + <_>2 + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Resource.xml b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Resource.xml index c37ccd88..120e7edb 100644 --- a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Resource.xml +++ b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Resource.xml @@ -91,6 +91,20 @@ + + + + + + + + + + + + + + @@ -144,6 +158,7 @@ TreeViewTabPage.xml DataGridTabPage.xml DataGridComponents.xml + RefreshListTabPages.xml RepeatTabPage.xml ResponsiveTabPage.xml diff --git a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoPartialClasses.cpp index dc541b1d..f677f0d7 100644 --- a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoPartialClasses.cpp @@ -3091,176 +3091,158 @@ Closures //------------------------------------------------------------------- - __vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + __vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + ::vl::Ptr<::vl::presentation::GuiImageData> __vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const { - { - auto __vwsn_for_begin_i = static_cast<::vl::vint>(0); - auto __vwsn_for_end_i = static_cast<::vl::vint>(9); - auto i = __vwsn_for_begin_i; - while ((i <= __vwsn_for_end_i)) - { - { - auto textItem = ::vl::Ptr<::demo::MyTextItem>(new ::demo::MyTextItem()); - ::vl::__vwsn::This(textItem.Obj())->SetName(::vl::__vwsn::This(__vwsnthis_0->self)->NumberToText((::vl::__vwsn::This(__vwsnthis_0->self)->counter + i))); - ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->Add(::vl::__vwsn::Box(textItem)); - } - (i = (i + static_cast<::vl::vint>(1))); - } - } - (::vl::__vwsn::This(__vwsnthis_0->self)->counter = (::vl::__vwsn::This(__vwsnthis_0->self)->counter + static_cast<::vl::vint>(10))); + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSmallImage(); } //------------------------------------------------------------------- - __vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + __vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + ::vl::Ptr<::vl::presentation::GuiImageData> __vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const { - auto i = static_cast<::vl::vint>(0); - while ((i < ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->GetCount())) + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetLargeImage(); + } + + //------------------------------------------------------------------- + + __vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::reflection::description::Value __vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + if (__vwsn_update_) { - ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->RemoveAt(i); - (i = (i + static_cast<::vl::vint>(1))); + ::vl::__vwsn::This(item.Obj())->SetName(::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_)); + return ::vl::reflection::description::Value(); + } + else + { + return ::vl::__vwsn::Box(::vl::__vwsn::This(item.Obj())->GetName()); } } //------------------------------------------------------------------- - __vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + __vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + ::vl::WString __vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const { - auto i = static_cast<::vl::vint>(1); - while ((i < ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->GetCount())) + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::reflection::description::Value __vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + if (__vwsn_update_) { - ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->RemoveAt(i); - (i = (i + static_cast<::vl::vint>(1))); + ::vl::__vwsn::This(item.Obj())->SetSub1(::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_)); + return ::vl::reflection::description::Value(); + } + else + { + return ::vl::__vwsn::Box(::vl::__vwsn::This(item.Obj())->GetSub1()); } } //------------------------------------------------------------------- - __vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + __vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + ::vl::WString __vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const { - ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->Clear(); + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSub1(); } //------------------------------------------------------------------- - __vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + __vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + ::vl::reflection::description::Value __vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const { - (::vl::__vwsn::This(__vwsnthis_0->self)->counter = static_cast<::vl::vint>(0)); - } - - //------------------------------------------------------------------- - - __vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const - { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + if (__vwsn_update_) { - return; + ::vl::__vwsn::This(item.Obj())->SetSub2(::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_)); + return ::vl::reflection::description::Value(); + } + else + { + return ::vl::__vwsn::Box(::vl::__vwsn::This(item.Obj())->GetSub2()); } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->SetText(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_::__vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_(::demo::RepeatItemTemplateConstructor* __vwsnctorthis_0) + __vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::WString __vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) - { - return; - } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->SetText(__vwsn_new_); + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSub2(); } //------------------------------------------------------------------- - __vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_::__vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_(::demo::SharedSizeItemTemplateConstructor* __vwsnctorthis_0) + __vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::presentation::templates::GuiGridVisualizerTemplate* __vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) { - return; + return static_cast<::vl::presentation::templates::GuiGridVisualizerTemplate*>(new ::vl::presentation::controls::list::CellBorderVisualizerTemplate()); } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->SetText(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::__vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0) + __vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::presentation::templates::GuiGridVisualizerTemplate* __vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) { - return; + return static_cast<::vl::presentation::templates::GuiGridVisualizerTemplate*>(new ::vl::presentation::controls::list::FocusRectangleVisualizerTemplate()); } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetText(__vwsn_new_); - } - - //------------------------------------------------------------------- - - __vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::__vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const - { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) - { - return; - } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); } //------------------------------------------------------------------- @@ -3279,158 +3261,168 @@ Closures //------------------------------------------------------------------- - __vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::__vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0) + __vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::presentation::templates::GuiGridVisualizerTemplate* __vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetFont(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) { - return; + return static_cast<::vl::presentation::templates::GuiGridVisualizerTemplate*>(new ::vl::presentation::controls::list::HyperlinkVisualizerTemplate()); } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetFont(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::__vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0) + __vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + ::vl::presentation::templates::GuiGridEditorTemplate* __vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const { - ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelUp(); - } - - //------------------------------------------------------------------- - - __vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::__vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const - { - ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelDown(); - } - - //------------------------------------------------------------------- - - __vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::__vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const - { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_38)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) { - return; + return static_cast<::vl::presentation::templates::GuiGridEditorTemplate*>(new ::demo::TextEditor()); } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_38)->SetText(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::__vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0) + __vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::reflection::description::Value __vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_40)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + if (__vwsn_update_) { - return; + ::vl::__vwsn::This(item.Obj())->SetSub3(::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_)); + return ::vl::reflection::description::Value(); } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_40)->SetText(__vwsn_new_); - } - - //------------------------------------------------------------------- - - __vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::__vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const - { - ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelUp(); - } - - //------------------------------------------------------------------- - - __vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::__vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const - { - ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelDown(); - } - - //------------------------------------------------------------------- - - __vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::__vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const - { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_38)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + else { - return; + return ::vl::__vwsn::Box(::vl::__vwsn::This(item.Obj())->GetSub3()); } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_38)->SetText(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::__vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0) + __vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::WString __vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_40)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) - { - return; - } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_40)->SetText(__vwsn_new_); + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSub3(); } //------------------------------------------------------------------- - __vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + __vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + void __vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) { - return; + auto __vwsn_switch_5 = ::vl::__vwsn::This(__vwsnthis_0->comboView)->GetSelectedIndex(); + if ((__vwsn_switch_5 == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(__vwsnthis_0->dataGrid)->SetView(::vl::presentation::controls::ListViewView::BigIcon); + } + else if ((__vwsn_switch_5 == static_cast<::vl::vint>(1))) + { + ::vl::__vwsn::This(__vwsnthis_0->dataGrid)->SetView(::vl::presentation::controls::ListViewView::SmallIcon); + } + else if ((__vwsn_switch_5 == static_cast<::vl::vint>(2))) + { + ::vl::__vwsn::This(__vwsnthis_0->dataGrid)->SetView(::vl::presentation::controls::ListViewView::List); + } + else if ((__vwsn_switch_5 == static_cast<::vl::vint>(3))) + { + ::vl::__vwsn::This(__vwsnthis_0->dataGrid)->SetView(::vl::presentation::controls::ListViewView::Tile); + } + else if ((__vwsn_switch_5 == static_cast<::vl::vint>(4))) + { + ::vl::__vwsn::This(__vwsnthis_0->dataGrid)->SetView(::vl::presentation::controls::ListViewView::Information); + } + else if ((__vwsn_switch_5 == static_cast<::vl::vint>(5))) + { + ::vl::__vwsn::This(__vwsnthis_0->dataGrid)->SetView(::vl::presentation::controls::ListViewView::Detail); + } + else if ((__vwsn_switch_5 == static_cast<::vl::vint>(6))) + { + ::vl::__vwsn::This(__vwsnthis_0->dataGrid)->SetViewToDefault(); + } } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::DataColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__::__vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const + { + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::DataColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__::__vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const + { + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetTitle(); + } + + //------------------------------------------------------------------- + + __vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto s = ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetSub1(); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSub1(((s == ::vl::WString::Unmanaged(L"One")) ? ::vl::WString::Unmanaged(L"SubColumn") : ::vl::WString::Unmanaged(L"One"))); + ::vl::__vwsn::This(__vwsnthis_0->dataGrid)->NotifyItemDataModified(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1)); } //------------------------------------------------------------------- @@ -3449,170 +3441,188 @@ Closures //------------------------------------------------------------------- - __vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + __vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + void __vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + auto s = ::vl::__vwsn::Unbox<::vl::vint>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetDataColumns()).Obj())->Get(static_cast<::vl::vint>(0))); + auto c = ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetDataColumns()).Obj())->GetCount(); + if ((c == static_cast<::vl::vint>(3))) { - return; + if ((s == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetDataColumns()).Obj())->Set(static_cast<::vl::vint>(0), ::vl::__vwsn::Box(static_cast<::vl::vint>(1))); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetDataColumns()).Obj())->RemoveAt(static_cast<::vl::vint>(2)); + } } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13)->SetText(__vwsn_new_); - } - - //------------------------------------------------------------------- - - __vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const - { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_19)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + else { - return; + if ((s == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetDataColumns()).Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(2))); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetDataColumns()).Obj())->Set(static_cast<::vl::vint>(0), ::vl::__vwsn::Box(static_cast<::vl::vint>(0))); + } } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_19)->SetText(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + __vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::__vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + void __vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_25)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + auto s = ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::DataColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->GetText(); + auto c = ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->GetCount(); + if ((c == static_cast<::vl::vint>(4))) { - return; + if ((s == ::vl::WString::Unmanaged(L"Category"))) + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::DataColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetText(::vl::WString::Unmanaged(L"What?")); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::DataColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetText(::vl::WString::Unmanaged(L"Wait?")); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->RemoveAt(static_cast<::vl::vint>(1)); + } } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_25)->SetText(__vwsn_new_); - } - - //------------------------------------------------------------------- - - __vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const - { - ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelUp(); - } - - //------------------------------------------------------------------- - - __vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const - { - ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelDown(); - } - - //------------------------------------------------------------------- - - __vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const - { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_33)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + else { - return; + if ((s == ::vl::WString::Unmanaged(L"Size"))) + { + auto column = ::vl::Ptr<::vl::presentation::controls::list::DataColumn>(new ::vl::presentation::controls::list::DataColumn()); + ::vl::__vwsn::This(column.Obj())->SetText(::vl::WString::Unmanaged(L"Category")); + ::vl::__vwsn::This(column.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(__vwsnthis_0))); + ::vl::__vwsn::This(column.Obj())->SetValueProperty(vl::Func(::vl_workflow_global::__vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(__vwsnthis_0))); + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->Insert(static_cast<::vl::vint>(1), ::vl::__vwsn::Box(column)); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::DataColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->dataGrid)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetText(::vl::WString::Unmanaged(L"Size")); + } } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_33)->SetText(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + __vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__::__vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::WString __vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_35)->GetText(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) - { - return; - } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_35)->SetText(__vwsn_new_); + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetSub1(); } //------------------------------------------------------------------- - __vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::__vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0) + __vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__::__vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::reflection::description::Value __vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value, const ::vl::reflection::description::Value& field, bool update) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->GetAcceptTabInput(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value); + if (update) { - return; + ::vl::__vwsn::This(item.Obj())->SetSub1(::vl::__vwsn::Unbox<::vl::WString>(field)); + return ::vl::reflection::description::Value(); + } + else + { + return ::vl::__vwsn::Box(::vl::__vwsn::This(item.Obj())->GetSub1()); } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->SetAcceptTabInput(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::__vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0) + __vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::Ptr<::vl::presentation::GuiImageData> __vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->GetAcceptTabInput(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) - { - return; - } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->SetAcceptTabInput(__vwsn_new_); + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSmallImage(); } //------------------------------------------------------------------- - __vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::__vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0) + __vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + ::vl::Ptr<::vl::presentation::GuiImageData> __vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8)->GetAcceptTabInput(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) - { - return; - } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8)->SetAcceptTabInput(__vwsn_new_); + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetLargeImage(); + } + + //------------------------------------------------------------------- + + __vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSub1(); + } + + //------------------------------------------------------------------- + + __vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSub2(); + } + + //------------------------------------------------------------------- + + __vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSub3(); } //------------------------------------------------------------------- @@ -3631,104 +3641,349 @@ Closures //------------------------------------------------------------------- - __vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_::__vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(::demo::TextBoxSubTabPageConstructor* __vwsnctorthis_0) + __vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + void __vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->GetAcceptTabInput(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) { - return; + auto __vwsn_switch_6 = ::vl::__vwsn::This(__vwsnthis_0->comboView)->GetSelectedIndex(); + if ((__vwsn_switch_6 == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::BigIcon); + } + else if ((__vwsn_switch_6 == static_cast<::vl::vint>(1))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::SmallIcon); + } + else if ((__vwsn_switch_6 == static_cast<::vl::vint>(2))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::List); + } + else if ((__vwsn_switch_6 == static_cast<::vl::vint>(3))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::Tile); + } + else if ((__vwsn_switch_6 == static_cast<::vl::vint>(4))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::Information); + } + else if ((__vwsn_switch_6 == static_cast<::vl::vint>(5))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::Detail); + } } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->SetAcceptTabInput(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_::__vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(::demo::TextBoxSubTabPageConstructor* __vwsnctorthis_0) + __vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + void __vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->GetAcceptTabInput(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__::__vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const + { + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__::__vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const + { + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetTitle(); + } + + //------------------------------------------------------------------- + + __vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto s = ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetSub1(); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSub1(((s == ::vl::WString::Unmanaged(L"One")) ? ::vl::WString::Unmanaged(L"SubColumn") : ::vl::WString::Unmanaged(L"One"))); + ::vl::__vwsn::This(__vwsnthis_0->listView)->NotifyItemDataModified(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1)); + } + + //------------------------------------------------------------------- + + __vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto s = ::vl::__vwsn::Unbox<::vl::vint>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->Get(static_cast<::vl::vint>(0))); + auto c = ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->GetCount(); + if ((c == static_cast<::vl::vint>(3))) { - return; + if ((s == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->Set(static_cast<::vl::vint>(0), ::vl::__vwsn::Box(static_cast<::vl::vint>(1))); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->RemoveAt(static_cast<::vl::vint>(2)); + } } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->SetAcceptTabInput(__vwsn_new_); - } - - //------------------------------------------------------------------- - - __vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const - { - ::vl::__vwsn::EventInvoke(::vl::__vwsn::This(__vwsnthis_0->self)->OnMakeFontLarger)(); - } - - //------------------------------------------------------------------- - - __vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) - :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) - { - } - - void __vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const - { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->GetEnabled(); - auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); - if ((__vwsn_old_ == __vwsn_new_)) + else { - return; + if ((s == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(2))); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->Set(static_cast<::vl::vint>(0), ::vl::__vwsn::Box(static_cast<::vl::vint>(0))); + } } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->SetEnabled(__vwsn_new_); } //------------------------------------------------------------------- - __vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) + __vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::__vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + void __vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const { - ::vl::__vwsn::EventInvoke(::vl::__vwsn::This(__vwsnthis_0->self)->OnMakeFontSmaller)(); + auto s = ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->GetText(); + auto c = ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->GetCount(); + if ((c == static_cast<::vl::vint>(4))) + { + if ((s == ::vl::WString::Unmanaged(L"Category"))) + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetText(::vl::WString::Unmanaged(L"What?")); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetText(::vl::WString::Unmanaged(L"Wait?")); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->RemoveAt(static_cast<::vl::vint>(1)); + } + } + else + { + if ((s == ::vl::WString::Unmanaged(L"Size"))) + { + auto column = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn()); + ::vl::__vwsn::This(column.Obj())->SetText(::vl::WString::Unmanaged(L"Category")); + ::vl::__vwsn::This(column.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(__vwsnthis_0))); + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Insert(static_cast<::vl::vint>(1), ::vl::__vwsn::Box(column)); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetText(::vl::WString::Unmanaged(L"Size")); + } + } } //------------------------------------------------------------------- - __vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) + __vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__::__vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()() const + ::vl::WString __vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const { - ::vl::__vwsn::This(__vwsnthis_0->self)->UpdateFont(GLOBAL_NAME ChangeFontSize(::vl::__vwsn::This(__vwsnthis_0->t1)->GetDisplayFont(), static_cast<::vl::vint>(5))); + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetSub1(); } //------------------------------------------------------------------- - __vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) + __vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::__vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { } - void __vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()() const + bool __vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_, bool __vwsn_value_, bool __vwsn_update_) const { - ::vl::__vwsn::This(__vwsnthis_0->self)->UpdateFont(GLOBAL_NAME ChangeFontSize(::vl::__vwsn::This(__vwsnthis_0->t1)->GetDisplayFont(), (- static_cast<::vl::vint>(5)))); + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + if (__vwsn_update_) + { + ::vl::__vwsn::This(item.Obj())->SetSelected(__vwsn_value_); + return false; + } + else + { + return ::vl::__vwsn::This(item.Obj())->GetSelected(); + } + } + + //------------------------------------------------------------------- + + __vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::__vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::__vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->textList)->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__::__vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const + { + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::__vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->textList)->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__::__vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const + { + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetTitle(); + } + + //------------------------------------------------------------------- + + __vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::__vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSelected(true); + ::vl::__vwsn::This(__vwsnthis_0->textList)->NotifyItemDataModified(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1)); + } + + //------------------------------------------------------------------- + + __vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::__vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSelected(false); + ::vl::__vwsn::This(__vwsnthis_0->textList)->NotifyItemDataModified(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1)); + } + + //------------------------------------------------------------------- + + __vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::__vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + if (::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetSelected()) + { + ::vl::__vwsn::This(__vwsnthis_0->buttonRead)->SetText(::vl::WString::Unmanaged(L"Read (true)")); + } + else + { + ::vl::__vwsn::This(__vwsnthis_0->buttonRead)->SetText(::vl::WString::Unmanaged(L"Read (false)")); + } + } + + //------------------------------------------------------------------- + + __vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::__vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::reflection::description::Value __vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + if (__vwsn_update_) + { + ::vl::__vwsn::This(item.Obj())->SetDoNotUse(::vl::__vwsn::Unbox<::vl::reflection::description::Value>(__vwsn_value_)); + return ::vl::reflection::description::Value(); + } + else + { + return ::vl::__vwsn::This(item.Obj())->GetDoNotUse(); + } + } + + //------------------------------------------------------------------- + + __vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::__vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::Ptr<::vl::reflection::description::IValueEnumerable> __vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(item.Obj())->GetChildren()); } //------------------------------------------------------------------- @@ -3760,6 +4015,161 @@ Closures //------------------------------------------------------------------- + __vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::__vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::Ptr<::vl::presentation::GuiImageData> __vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetSmallImage(); + } + + //------------------------------------------------------------------- + + __vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::__vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::__vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->treeView)->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__::__vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const + { + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::__vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->treeView)->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__(__vwsnthis_0))); + } + + //------------------------------------------------------------------- + + __vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__::__vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__::operator()(const ::vl::reflection::description::Value& value) const + { + return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(value).Obj())->GetTitle(); + } + + //------------------------------------------------------------------- + + __vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::__vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto data = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(0))); + ::vl::__vwsn::This(data.Obj())->SetName(((::vl::__vwsn::This(data.Obj())->GetName() == ::vl::WString::Unmanaged(L"First")) ? ::vl::WString::Unmanaged(L"One") : ::vl::WString::Unmanaged(L"First"))); + ::vl::__vwsn::This(data.Obj())->SetTitle(((::vl::__vwsn::This(data.Obj())->GetTitle() == ::vl::WString::Unmanaged(L"1st")) ? ::vl::WString::Unmanaged(L"One") : ::vl::WString::Unmanaged(L"1st"))); + ::vl::__vwsn::This(__vwsnthis_0->treeView)->NotifyNodeDataModified(::vl::__vwsn::Box(data)); + } + + //------------------------------------------------------------------- + + __vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::__vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto data = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(1))); + ::vl::__vwsn::This(data.Obj())->SetName(((::vl::__vwsn::This(data.Obj())->GetName() == ::vl::WString::Unmanaged(L"Second (1)")) ? ::vl::WString::Unmanaged(L"Two (1)") : ::vl::WString::Unmanaged(L"Second (1)"))); + ::vl::__vwsn::This(data.Obj())->SetTitle(((::vl::__vwsn::This(data.Obj())->GetTitle() == ::vl::WString::Unmanaged(L"2nd (1)")) ? ::vl::WString::Unmanaged(L"Two (1)") : ::vl::WString::Unmanaged(L"2nd (1)"))); + ::vl::__vwsn::This(__vwsnthis_0->treeView)->NotifyNodeDataModified(::vl::__vwsn::Box(data)); + } + + //------------------------------------------------------------------- + + __vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::__vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + { + auto __vwsn_switch_7 = ::vl::__vwsn::This(__vwsnthis_0->comboView)->GetSelectedIndex(); + if ((__vwsn_switch_7 == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::BigIcon); + } + else if ((__vwsn_switch_7 == static_cast<::vl::vint>(1))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::SmallIcon); + } + else if ((__vwsn_switch_7 == static_cast<::vl::vint>(2))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::List); + } + else if ((__vwsn_switch_7 == static_cast<::vl::vint>(3))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::Tile); + } + else if ((__vwsn_switch_7 == static_cast<::vl::vint>(4))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::Information); + } + else if ((__vwsn_switch_7 == static_cast<::vl::vint>(5))) + { + ::vl::__vwsn::This(__vwsnthis_0->listView)->SetView(::vl::presentation::controls::ListViewView::Detail); + } + } + } + + //------------------------------------------------------------------- + + __vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::__vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto s = ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewItem>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetItems()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetText(); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewItem>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetItems()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetText(((s == ::vl::WString::Unmanaged(L"First")) ? ::vl::WString::Unmanaged(L"MainColumn") : ::vl::WString::Unmanaged(L"First"))); + } + + //------------------------------------------------------------------- + __vwsnf30_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_::__vwsnf30_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_(::demo::DataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { @@ -3781,6 +4191,208 @@ Closures //------------------------------------------------------------------- + __vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::__vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto s = ::vl::__vwsn::Unbox<::vl::WString>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewItem>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetItems()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetSubItems()).Obj())->Get(static_cast<::vl::vint>(0))); + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewItem>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetItems()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetSubItems()).Obj())->Set(static_cast<::vl::vint>(0), ::vl::__vwsn::Box(((s == ::vl::WString::Unmanaged(L"One")) ? ::vl::WString::Unmanaged(L"SubColumn") : ::vl::WString::Unmanaged(L"One")))); + } + + //------------------------------------------------------------------- + + __vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::__vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto s = ::vl::__vwsn::Unbox<::vl::vint>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->Get(static_cast<::vl::vint>(0))); + auto c = ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->GetCount(); + if ((c == static_cast<::vl::vint>(3))) + { + if ((s == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->Set(static_cast<::vl::vint>(0), ::vl::__vwsn::Box(static_cast<::vl::vint>(1))); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->RemoveAt(static_cast<::vl::vint>(2)); + } + } + else + { + if ((s == static_cast<::vl::vint>(0))) + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(2))); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetDataColumns()).Obj())->Set(static_cast<::vl::vint>(0), ::vl::__vwsn::Box(static_cast<::vl::vint>(0))); + } + } + } + + //------------------------------------------------------------------- + + __vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::__vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto s = ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->GetText(); + auto c = ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->GetCount(); + if ((c == static_cast<::vl::vint>(4))) + { + if ((s == ::vl::WString::Unmanaged(L"Category"))) + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetText(::vl::WString::Unmanaged(L"What?")); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetText(::vl::WString::Unmanaged(L"Wait?")); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->RemoveAt(static_cast<::vl::vint>(1)); + } + } + else + { + if ((s == ::vl::WString::Unmanaged(L"Size"))) + { + auto column = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn()); + ::vl::__vwsn::This(column.Obj())->SetText(::vl::WString::Unmanaged(L"Category")); + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Insert(static_cast<::vl::vint>(1), ::vl::__vwsn::Box(column)); + } + else + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->listView)->GetColumns()).Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetText(::vl::WString::Unmanaged(L"Size")); + } + } + } + + //------------------------------------------------------------------- + + __vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_::__vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(::demo::RefreshTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::TextItem>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->textList)->GetItems()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetChecked(true); + } + + //------------------------------------------------------------------- + + __vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_::__vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(::demo::RefreshTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::TextItem>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->textList)->GetItems()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetChecked(false); + } + + //------------------------------------------------------------------- + + __vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_::__vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(::demo::RefreshTextListTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + if (::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::vl::presentation::controls::list::TextItem>>(::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(__vwsnthis_0->textList)->GetItems()).Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetChecked()) + { + ::vl::__vwsn::This(__vwsnthis_0->buttonRead)->SetText(::vl::WString::Unmanaged(L"Read (true)")); + } + else + { + ::vl::__vwsn::This(__vwsnthis_0->buttonRead)->SetText(::vl::WString::Unmanaged(L"Read (false)")); + } + } + + //------------------------------------------------------------------- + + __vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_::__vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_(::demo::RefreshTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto node = ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->treeView)->Nodes().Obj())->GetRootNode().Obj())->GetChild(static_cast<::vl::vint>(0)); + auto data = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->treeView)->Nodes().Obj())->GetTreeViewData(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::tree::INodeProvider*>(node.Obj()))); + (::vl::__vwsn::This(data.Obj())->text = ((::vl::__vwsn::This(data.Obj())->text == ::vl::WString::Unmanaged(L"First")) ? ::vl::WString::Unmanaged(L"One") : ::vl::WString::Unmanaged(L"First"))); + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->treeView)->Nodes().Obj())->UpdateTreeViewData(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::tree::INodeProvider*>(node.Obj()))); + } + + //------------------------------------------------------------------- + + __vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_::__vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_(::demo::RefreshTreeViewTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto node = ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->treeView)->Nodes().Obj())->GetRootNode().Obj())->GetChild(static_cast<::vl::vint>(0)).Obj())->GetChild(static_cast<::vl::vint>(1)); + auto data = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->treeView)->Nodes().Obj())->GetTreeViewData(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::tree::INodeProvider*>(node.Obj()))); + (::vl::__vwsn::This(data.Obj())->text = ((::vl::__vwsn::This(data.Obj())->text == ::vl::WString::Unmanaged(L"Second (1)")) ? ::vl::WString::Unmanaged(L"Two (1)") : ::vl::WString::Unmanaged(L"Second (1)"))); + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->treeView)->Nodes().Obj())->UpdateTreeViewData(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::tree::INodeProvider*>(node.Obj()))); + } + + //------------------------------------------------------------------- + + __vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + { + auto __vwsn_for_begin_i = static_cast<::vl::vint>(0); + auto __vwsn_for_end_i = static_cast<::vl::vint>(9); + auto i = __vwsn_for_begin_i; + while ((i <= __vwsn_for_end_i)) + { + { + auto textItem = ::vl::Ptr<::demo::MyTextItem>(new ::demo::MyTextItem()); + ::vl::__vwsn::This(textItem.Obj())->SetName(::vl::__vwsn::This(__vwsnthis_0->self)->NumberToText((::vl::__vwsn::This(__vwsnthis_0->self)->counter + i))); + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->Add(::vl::__vwsn::Box(textItem)); + } + (i = (i + static_cast<::vl::vint>(1))); + } + } + (::vl::__vwsn::This(__vwsnthis_0->self)->counter = (::vl::__vwsn::This(__vwsnthis_0->self)->counter + static_cast<::vl::vint>(10))); + } + + //------------------------------------------------------------------- + + __vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto i = static_cast<::vl::vint>(0); + while ((i < ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->GetCount())) + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->RemoveAt(i); + (i = (i + static_cast<::vl::vint>(1))); + } + } + + //------------------------------------------------------------------- + __vwsnf31_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_::__vwsnf31_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_(::demo::DataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { @@ -3794,6 +4406,167 @@ Closures //------------------------------------------------------------------- + __vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + auto i = static_cast<::vl::vint>(1); + while ((i < ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->GetCount())) + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->RemoveAt(i); + (i = (i + static_cast<::vl::vint>(1))); + } + } + + //------------------------------------------------------------------- + + __vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0->self)->GetItemsToBind().Obj())->Clear(); + } + + //------------------------------------------------------------------- + + __vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + (::vl::__vwsn::This(__vwsnthis_0->self)->counter = static_cast<::vl::vint>(0)); + } + + //------------------------------------------------------------------- + + __vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::__vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_0)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_::__vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_(::demo::RepeatItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_::__vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_(::demo::SharedSizeItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::__vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::__vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::__vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_1.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::__vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelUp(); + } + + //------------------------------------------------------------------- + __vwsnf32_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_::__vwsnf32_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_(::demo::DataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { @@ -3836,6 +4609,168 @@ Closures //------------------------------------------------------------------- + __vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::__vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelDown(); + } + + //------------------------------------------------------------------- + + __vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::__vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_38)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_38)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::__vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_40)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_40)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::__vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelUp(); + } + + //------------------------------------------------------------------- + + __vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::__vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelDown(); + } + + //------------------------------------------------------------------- + + __vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::__vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_38)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_38)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::__vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_40)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_40)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_13)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_19)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_19)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + __vwsnf33_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_::__vwsnf33_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_(::demo::DataGridTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { @@ -3855,6 +4790,174 @@ Closures //------------------------------------------------------------------- + __vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_25)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_25)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelUp(); + } + + //------------------------------------------------------------------- + + __vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::This(__vwsnthis_0->responsive)->LevelDown(); + } + + //------------------------------------------------------------------- + + __vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_33)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_33)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::__vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_35)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_35)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::__vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->GetAcceptTabInput(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->SetAcceptTabInput(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::__vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->GetAcceptTabInput(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->SetAcceptTabInput(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::__vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8)->GetAcceptTabInput(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_8)->SetAcceptTabInput(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_::__vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(::demo::TextBoxSubTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->GetAcceptTabInput(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_2)->SetAcceptTabInput(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_::__vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(::demo::TextBoxSubTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->GetAcceptTabInput(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_5)->SetAcceptTabInput(__vwsn_new_); + } + + //------------------------------------------------------------------- + __vwsnf34_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_::__vwsnf34_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_(::demo::ListViewTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { @@ -3868,6 +4971,72 @@ Closures //------------------------------------------------------------------- + __vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::EventInvoke(::vl::__vwsn::This(__vwsnthis_0->self)->OnMakeFontLarger)(); + } + + //------------------------------------------------------------------- + + __vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->GetEnabled(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_7)->SetEnabled(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + ::vl::__vwsn::EventInvoke(::vl::__vwsn::This(__vwsnthis_0->self)->OnMakeFontSmaller)(); + } + + //------------------------------------------------------------------- + + __vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()() const + { + ::vl::__vwsn::This(__vwsnthis_0->self)->UpdateFont(GLOBAL_NAME ChangeFontSize(::vl::__vwsn::This(__vwsnthis_0->t1)->GetDisplayFont(), static_cast<::vl::vint>(5))); + } + + //------------------------------------------------------------------- + + __vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::__vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_::operator()() const + { + ::vl::__vwsn::This(__vwsnthis_0->self)->UpdateFont(GLOBAL_NAME ChangeFontSize(::vl::__vwsn::This(__vwsnthis_0->t1)->GetDisplayFont(), (- static_cast<::vl::vint>(5)))); + } + + //------------------------------------------------------------------- + __vwsnf35_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_::__vwsnf35_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_(::demo::ListViewTabPageConstructor* __vwsnctorthis_0) :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) { @@ -4027,13 +5196,13 @@ Closures void __vwsnf44_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_17)->GetText(); + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_27)->GetText(); auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); if ((__vwsn_old_ == __vwsn_new_)) { return; } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_17)->SetText(__vwsn_new_); + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_27)->SetText(__vwsn_new_); } //------------------------------------------------------------------- @@ -4045,13 +5214,13 @@ Closures void __vwsnf45_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const { - auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_19)->GetText(); + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_29)->GetText(); auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); if ((__vwsn_old_ == __vwsn_new_)) { return; } - ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_19)->SetText(__vwsn_new_); + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_29)->SetText(__vwsn_new_); } //------------------------------------------------------------------- @@ -16763,12 +17932,12 @@ Class (::demo::DocumentBoxSubTabPageConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc146_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc147_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { @@ -16776,7 +17945,7 @@ Class (::demo::DocumentBoxSubTabPageConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc148_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { @@ -20550,28 +21719,28 @@ Class (::demo::EnglishNumbersControllerConstructor) ::vl::__vwsn::This(this->self)->AddChild(this->__vwsn_precompile_0); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_3)->Clicked, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_6)->Clicked, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_9)->Clicked, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_12)->Clicked, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_15)->Clicked, __vwsn_event_handler_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc130_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } } @@ -20615,40 +21784,40 @@ Class (::demo::EnglishNumbersController) ::vl::WString EnglishNumbersController::ToText_1to9(::vl::vint i) { { - auto __vwsn_switch_5 = i; - if ((__vwsn_switch_5 == static_cast<::vl::vint>(1))) + auto __vwsn_switch_8 = i; + if ((__vwsn_switch_8 == static_cast<::vl::vint>(1))) { return ::vl::WString::Unmanaged(L"one"); } - else if ((__vwsn_switch_5 == static_cast<::vl::vint>(2))) + else if ((__vwsn_switch_8 == static_cast<::vl::vint>(2))) { return ::vl::WString::Unmanaged(L"two"); } - else if ((__vwsn_switch_5 == static_cast<::vl::vint>(3))) + else if ((__vwsn_switch_8 == static_cast<::vl::vint>(3))) { return ::vl::WString::Unmanaged(L"three"); } - else if ((__vwsn_switch_5 == static_cast<::vl::vint>(4))) + else if ((__vwsn_switch_8 == static_cast<::vl::vint>(4))) { return ::vl::WString::Unmanaged(L"four"); } - else if ((__vwsn_switch_5 == static_cast<::vl::vint>(5))) + else if ((__vwsn_switch_8 == static_cast<::vl::vint>(5))) { return ::vl::WString::Unmanaged(L"five"); } - else if ((__vwsn_switch_5 == static_cast<::vl::vint>(6))) + else if ((__vwsn_switch_8 == static_cast<::vl::vint>(6))) { return ::vl::WString::Unmanaged(L"six"); } - else if ((__vwsn_switch_5 == static_cast<::vl::vint>(7))) + else if ((__vwsn_switch_8 == static_cast<::vl::vint>(7))) { return ::vl::WString::Unmanaged(L"seven"); } - else if ((__vwsn_switch_5 == static_cast<::vl::vint>(8))) + else if ((__vwsn_switch_8 == static_cast<::vl::vint>(8))) { return ::vl::WString::Unmanaged(L"eight"); } - else if ((__vwsn_switch_5 == static_cast<::vl::vint>(9))) + else if ((__vwsn_switch_8 == static_cast<::vl::vint>(9))) { return ::vl::WString::Unmanaged(L"nine"); } @@ -20659,40 +21828,40 @@ Class (::demo::EnglishNumbersController) ::vl::WString EnglishNumbersController::ToText_11to19(::vl::vint i) { { - auto __vwsn_switch_6 = i; - if ((__vwsn_switch_6 == static_cast<::vl::vint>(1))) + auto __vwsn_switch_9 = i; + if ((__vwsn_switch_9 == static_cast<::vl::vint>(1))) { return ::vl::WString::Unmanaged(L"eleven"); } - else if ((__vwsn_switch_6 == static_cast<::vl::vint>(2))) + else if ((__vwsn_switch_9 == static_cast<::vl::vint>(2))) { return ::vl::WString::Unmanaged(L"twelve"); } - else if ((__vwsn_switch_6 == static_cast<::vl::vint>(3))) + else if ((__vwsn_switch_9 == static_cast<::vl::vint>(3))) { return ::vl::WString::Unmanaged(L"thirteen"); } - else if ((__vwsn_switch_6 == static_cast<::vl::vint>(4))) + else if ((__vwsn_switch_9 == static_cast<::vl::vint>(4))) { return ::vl::WString::Unmanaged(L"fourteen"); } - else if ((__vwsn_switch_6 == static_cast<::vl::vint>(5))) + else if ((__vwsn_switch_9 == static_cast<::vl::vint>(5))) { return ::vl::WString::Unmanaged(L"fifteen"); } - else if ((__vwsn_switch_6 == static_cast<::vl::vint>(6))) + else if ((__vwsn_switch_9 == static_cast<::vl::vint>(6))) { return ::vl::WString::Unmanaged(L"sixteen"); } - else if ((__vwsn_switch_6 == static_cast<::vl::vint>(7))) + else if ((__vwsn_switch_9 == static_cast<::vl::vint>(7))) { return ::vl::WString::Unmanaged(L"seventeen"); } - else if ((__vwsn_switch_6 == static_cast<::vl::vint>(8))) + else if ((__vwsn_switch_9 == static_cast<::vl::vint>(8))) { return ::vl::WString::Unmanaged(L"eightteen"); } - else if ((__vwsn_switch_6 == static_cast<::vl::vint>(9))) + else if ((__vwsn_switch_9 == static_cast<::vl::vint>(9))) { return ::vl::WString::Unmanaged(L"nineteen"); } @@ -20703,44 +21872,44 @@ Class (::demo::EnglishNumbersController) ::vl::WString EnglishNumbersController::NumberToText_1To99(::vl::vint i) { { - auto __vwsn_switch_7 = (i / static_cast<::vl::vint>(10)); - if ((__vwsn_switch_7 == static_cast<::vl::vint>(0))) + auto __vwsn_switch_10 = (i / static_cast<::vl::vint>(10)); + if ((__vwsn_switch_10 == static_cast<::vl::vint>(0))) { return this->ToText_1to9((i % static_cast<::vl::vint>(10))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(1))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(1))) { return ((i == static_cast<::vl::vint>(10)) ? ::vl::WString::Unmanaged(L"ten") : this->ToText_11to19((i % static_cast<::vl::vint>(10)))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(2))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(2))) { return (((i % static_cast<::vl::vint>(10)) == static_cast<::vl::vint>(0)) ? ::vl::WString::Unmanaged(L"twenty") : (::vl::WString::Unmanaged(L"twenty-") + this->ToText_1to9((i % static_cast<::vl::vint>(10))))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(3))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(3))) { return (((i % static_cast<::vl::vint>(10)) == static_cast<::vl::vint>(0)) ? ::vl::WString::Unmanaged(L"thirty") : (::vl::WString::Unmanaged(L"thirty-") + this->ToText_1to9((i % static_cast<::vl::vint>(10))))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(4))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(4))) { return (((i % static_cast<::vl::vint>(10)) == static_cast<::vl::vint>(0)) ? ::vl::WString::Unmanaged(L"fourty") : (::vl::WString::Unmanaged(L"fourty-") + this->ToText_1to9((i % static_cast<::vl::vint>(10))))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(5))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(5))) { return (((i % static_cast<::vl::vint>(10)) == static_cast<::vl::vint>(0)) ? ::vl::WString::Unmanaged(L"fifty") : (::vl::WString::Unmanaged(L"fifty-") + this->ToText_1to9((i % static_cast<::vl::vint>(10))))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(6))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(6))) { return (((i % static_cast<::vl::vint>(10)) == static_cast<::vl::vint>(0)) ? ::vl::WString::Unmanaged(L"sixty") : (::vl::WString::Unmanaged(L"sixty-") + this->ToText_1to9((i % static_cast<::vl::vint>(10))))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(7))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(7))) { return (((i % static_cast<::vl::vint>(10)) == static_cast<::vl::vint>(0)) ? ::vl::WString::Unmanaged(L"seventy") : (::vl::WString::Unmanaged(L"seventy-") + this->ToText_1to9((i % static_cast<::vl::vint>(10))))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(8))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(8))) { return (((i % static_cast<::vl::vint>(10)) == static_cast<::vl::vint>(0)) ? ::vl::WString::Unmanaged(L"eighty") : (::vl::WString::Unmanaged(L"eighty-") + this->ToText_1to9((i % static_cast<::vl::vint>(10))))); } - else if ((__vwsn_switch_7 == static_cast<::vl::vint>(9))) + else if ((__vwsn_switch_10 == static_cast<::vl::vint>(9))) { return (((i % static_cast<::vl::vint>(10)) == static_cast<::vl::vint>(0)) ? ::vl::WString::Unmanaged(L"ninety") : (::vl::WString::Unmanaged(L"ninety-") + this->ToText_1to9((i % static_cast<::vl::vint>(10))))); } @@ -23550,9 +24719,9 @@ Class (::demo::MainWindowConstructor) void MainWindowConstructor::__vwsn_demo_MainWindow_Initialize(::demo::MainWindow* __vwsn_this_) { (this->self = __vwsn_this_); - (this->__vwsn_precompile_41 = ::vl::__vwsn::This(this->self)->GetBoundsComposition()); + (this->__vwsn_precompile_51 = ::vl::__vwsn::This(this->self)->GetBoundsComposition()); { - ::vl::__vwsn::This(this->__vwsn_precompile_41)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(640); __vwsn_temp__.y = static_cast<::vl::vint>(480); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_51)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(640); __vwsn_temp__.y = static_cast<::vl::vint>(480); return __vwsn_temp__; }()); } { ::vl::__vwsn::This(this->self)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(640); __vwsn_temp__.y = static_cast<::vl::vint>(480); return __vwsn_temp__; }()); @@ -23628,27 +24797,67 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAlt(::vl::WString::Unmanaged(L"L")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetText(::vl::WString::Unmanaged(L"Layout")); + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetText(::vl::WString::Unmanaged(L"Refresh List")); } { (this->__vwsn_precompile_10 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); } - (this->__vwsn_precompile_12 = new ::demo::RepeatTabPage()); + (this->__vwsn_precompile_12 = new ::demo::RefreshTextListTabPage()); { - ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetAlt(::vl::WString::Unmanaged(L"R")); + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetAlt(::vl::WString::Unmanaged(L"T")); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_10)->GetPages()); ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_12)); } - (this->__vwsn_precompile_13 = new ::demo::ResponsiveTabPage()); + (this->__vwsn_precompile_13 = new ::demo::RefreshBindableTextListTabPage()); { - ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetAlt(::vl::WString::Unmanaged(L"R")); + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetAlt(::vl::WString::Unmanaged(L"BT")); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_10)->GetPages()); ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_13)); } + (this->__vwsn_precompile_14 = new ::demo::RefreshListViewTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetAlt(::vl::WString::Unmanaged(L"L")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_10)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_14)); + } + (this->__vwsn_precompile_15 = new ::demo::RefreshBindableListViewTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->SetAlt(::vl::WString::Unmanaged(L"BL")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_10)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_15)); + } + (this->__vwsn_precompile_16 = new ::demo::RefreshTreeViewTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetAlt(::vl::WString::Unmanaged(L"T")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_10)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_16)); + } + (this->__vwsn_precompile_17 = new ::demo::RefreshBindableTreeViewTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetAlt(::vl::WString::Unmanaged(L"BT")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_10)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_17)); + } + (this->__vwsn_precompile_18 = new ::demo::RefreshBindableDataGridTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetAlt(::vl::WString::Unmanaged(L"D")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_10)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_18)); + } (this->__vwsn_precompile_11 = ::vl::__vwsn::This(this->__vwsn_precompile_10)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); @@ -23660,159 +24869,198 @@ Class (::demo::MainWindowConstructor) auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_9)); } - { - (this->__vwsn_precompile_14 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); - } - { - ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetAlt(::vl::WString::Unmanaged(L"L")); - } - { - ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetText(::vl::WString::Unmanaged(L"Control")); - } - { - (this->__vwsn_precompile_15 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); - } - { - (this->__vwsn_precompile_17 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); - } - { - ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetAlt(::vl::WString::Unmanaged(L"D")); - } - (this->editorRibbon = new ::demo::DocumentEditorRibbon()); - (this->__vwsn_precompile_18 = ::vl::__vwsn::This(this->editorRibbon)->GetBoundsComposition()); - { - ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); - } - { - ::vl::__vwsn::This(this->__vwsn_precompile_17)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->editorRibbon)); - } - { - auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_15)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_17)); - } { (this->__vwsn_precompile_19 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); } { - ::vl::__vwsn::This(this->__vwsn_precompile_19)->SetAlt(::vl::WString::Unmanaged(L"D")); - } - (this->editorToolstrip = new ::demo::DocumentEditorToolstrip()); - (this->__vwsn_precompile_20 = ::vl::__vwsn::This(this->editorToolstrip)->GetBoundsComposition()); - { - ::vl::__vwsn::This(this->__vwsn_precompile_20)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_19)->SetAlt(::vl::WString::Unmanaged(L"L")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_19)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->editorToolstrip)); + ::vl::__vwsn::This(this->__vwsn_precompile_19)->SetText(::vl::WString::Unmanaged(L"Layout")); } { - auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_15)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_19)); + (this->__vwsn_precompile_20 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); } - (this->__vwsn_precompile_21 = new ::demo::TextBoxTabPage()); + (this->__vwsn_precompile_22 = new ::demo::RepeatTabPage()); { - ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetAlt(::vl::WString::Unmanaged(L"T")); + ::vl::__vwsn::This(this->__vwsn_precompile_22)->SetAlt(::vl::WString::Unmanaged(L"R")); } { - auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_15)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_21)); + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_20)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_22)); } - (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->__vwsn_precompile_15)->GetBoundsComposition()); + (this->__vwsn_precompile_23 = new ::demo::ResponsiveTabPage()); { - ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_23)->SetAlt(::vl::WString::Unmanaged(L"R")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_14)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_15)); + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_20)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_23)); + } + (this->__vwsn_precompile_21 = ::vl::__vwsn::This(this->__vwsn_precompile_20)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_19)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_20)); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_14)); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_19)); } { - (this->__vwsn_precompile_22 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); + (this->__vwsn_precompile_24 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); } { - ::vl::__vwsn::This(this->__vwsn_precompile_22)->SetAlt(::vl::WString::Unmanaged(L"M")); + ::vl::__vwsn::This(this->__vwsn_precompile_24)->SetAlt(::vl::WString::Unmanaged(L"L")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_22)->SetText(::vl::WString::Unmanaged(L"Misc")); + ::vl::__vwsn::This(this->__vwsn_precompile_24)->SetText(::vl::WString::Unmanaged(L"Control")); } { - (this->__vwsn_precompile_23 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); - } - (this->__vwsn_precompile_25 = new ::demo::ElementTabPage()); - { - ::vl::__vwsn::This(this->__vwsn_precompile_25)->SetAlt(::vl::WString::Unmanaged(L"E")); + (this->__vwsn_precompile_25 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); } { - auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_23)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_25)); - } - (this->__vwsn_precompile_26 = new ::demo::AnimationTabPage()); - { - ::vl::__vwsn::This(this->__vwsn_precompile_26)->SetAlt(::vl::WString::Unmanaged(L"A")); + (this->__vwsn_precompile_27 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); } { - auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_23)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_26)); + ::vl::__vwsn::This(this->__vwsn_precompile_27)->SetAlt(::vl::WString::Unmanaged(L"D")); } - (this->__vwsn_precompile_27 = new ::demo::LocalizedStringsTabPage()); + (this->editorRibbon = new ::demo::DocumentEditorRibbon()); + (this->__vwsn_precompile_28 = ::vl::__vwsn::This(this->editorRibbon)->GetBoundsComposition()); { - ::vl::__vwsn::This(this->__vwsn_precompile_27)->SetAlt(::vl::WString::Unmanaged(L"L")); + ::vl::__vwsn::This(this->__vwsn_precompile_28)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } { - auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_23)->GetPages()); + ::vl::__vwsn::This(this->__vwsn_precompile_27)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->editorRibbon)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_25)->GetPages()); ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_27)); } - (this->__vwsn_precompile_28 = new ::demo::LocalizedDialogsTabPage()); { - ::vl::__vwsn::This(this->__vwsn_precompile_28)->SetAlt(::vl::WString::Unmanaged(L"L")); + (this->__vwsn_precompile_29 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); } - { - auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_23)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_28)); - } - (this->__vwsn_precompile_29 = new ::demo::DatePickerTabPage()); { ::vl::__vwsn::This(this->__vwsn_precompile_29)->SetAlt(::vl::WString::Unmanaged(L"D")); } + (this->editorToolstrip = new ::demo::DocumentEditorToolstrip()); + (this->__vwsn_precompile_30 = ::vl::__vwsn::This(this->editorToolstrip)->GetBoundsComposition()); { - auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_23)->GetPages()); + ::vl::__vwsn::This(this->__vwsn_precompile_30)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_29)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->editorToolstrip)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_25)->GetPages()); ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_29)); } - (this->__vwsn_precompile_24 = ::vl::__vwsn::This(this->__vwsn_precompile_23)->GetBoundsComposition()); + (this->__vwsn_precompile_31 = new ::demo::TextBoxTabPage()); { - ::vl::__vwsn::This(this->__vwsn_precompile_24)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_31)->SetAlt(::vl::WString::Unmanaged(L"T")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_22)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_23)); + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_25)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_31)); + } + (this->__vwsn_precompile_26 = ::vl::__vwsn::This(this->__vwsn_precompile_25)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_26)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_25)); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_22)); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_24)); } { - (this->__vwsn_precompile_30 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); + (this->__vwsn_precompile_32 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); } { - ::vl::__vwsn::This(this->__vwsn_precompile_30)->SetAlt(::vl::WString::Unmanaged(L"W")); + ::vl::__vwsn::This(this->__vwsn_precompile_32)->SetAlt(::vl::WString::Unmanaged(L"M")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_30)->SetText(::vl::WString::Unmanaged(L"Window Manager")); - } - (this->__vwsn_precompile_31 = new ::vl::presentation::compositions::GuiStackComposition()); - { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + ::vl::__vwsn::This(this->__vwsn_precompile_32)->SetText(::vl::WString::Unmanaged(L"Misc")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->SetPadding(static_cast<::vl::vint>(5)); + (this->__vwsn_precompile_33 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); + } + (this->__vwsn_precompile_35 = new ::demo::ElementTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_35)->SetAlt(::vl::WString::Unmanaged(L"E")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_33)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_35)); + } + (this->__vwsn_precompile_36 = new ::demo::AnimationTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_36)->SetAlt(::vl::WString::Unmanaged(L"A")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->SetDirection(::vl::presentation::compositions::GuiStackComposition::Direction::Vertical); + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_33)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_36)); } - (this->__vwsn_precompile_32 = new ::vl::presentation::compositions::GuiStackItemComposition()); + (this->__vwsn_precompile_37 = new ::demo::LocalizedStringsTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_37)->SetAlt(::vl::WString::Unmanaged(L"L")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_33)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_37)); + } + (this->__vwsn_precompile_38 = new ::demo::LocalizedDialogsTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_38)->SetAlt(::vl::WString::Unmanaged(L"L")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_33)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_38)); + } + (this->__vwsn_precompile_39 = new ::demo::DatePickerTabPage()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_39)->SetAlt(::vl::WString::Unmanaged(L"D")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_33)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_39)); + } + (this->__vwsn_precompile_34 = ::vl::__vwsn::This(this->__vwsn_precompile_33)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_34)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_32)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_33)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_32)); + } + { + (this->__vwsn_precompile_40 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_40)->SetAlt(::vl::WString::Unmanaged(L"W")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_40)->SetText(::vl::WString::Unmanaged(L"Window Manager")); + } + (this->__vwsn_precompile_41 = new ::vl::presentation::compositions::GuiStackComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_41)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_41)->SetPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_41)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_41)->SetDirection(::vl::presentation::compositions::GuiStackComposition::Direction::Vertical); + } + (this->__vwsn_precompile_42 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkFrame = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); } @@ -23820,12 +25068,12 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->checkFrame)->SetText(::vl::WString::Unmanaged(L"Customized Frame")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_32)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkFrame)->GetBoundsComposition())); + ::vl::__vwsn::This(this->__vwsn_precompile_42)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkFrame)->GetBoundsComposition())); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_32)); + ::vl::__vwsn::This(this->__vwsn_precompile_41)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_42)); } - (this->__vwsn_precompile_33 = new ::vl::presentation::compositions::GuiStackItemComposition()); + (this->__vwsn_precompile_43 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkMax = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); } @@ -23833,12 +25081,12 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->checkMax)->SetText(::vl::WString::Unmanaged(L"MaximizedBox")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_33)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkMax)->GetBoundsComposition())); + ::vl::__vwsn::This(this->__vwsn_precompile_43)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkMax)->GetBoundsComposition())); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_33)); + ::vl::__vwsn::This(this->__vwsn_precompile_41)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_43)); } - (this->__vwsn_precompile_34 = new ::vl::presentation::compositions::GuiStackItemComposition()); + (this->__vwsn_precompile_44 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkMin = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); } @@ -23846,12 +25094,12 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->checkMin)->SetText(::vl::WString::Unmanaged(L"MinimizedBox")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_34)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkMin)->GetBoundsComposition())); + ::vl::__vwsn::This(this->__vwsn_precompile_44)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkMin)->GetBoundsComposition())); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_34)); + ::vl::__vwsn::This(this->__vwsn_precompile_41)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_44)); } - (this->__vwsn_precompile_35 = new ::vl::presentation::compositions::GuiStackItemComposition()); + (this->__vwsn_precompile_45 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkBorder = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); } @@ -23859,12 +25107,12 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->checkBorder)->SetText(::vl::WString::Unmanaged(L"Border")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_35)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkBorder)->GetBoundsComposition())); + ::vl::__vwsn::This(this->__vwsn_precompile_45)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkBorder)->GetBoundsComposition())); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_35)); + ::vl::__vwsn::This(this->__vwsn_precompile_41)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_45)); } - (this->__vwsn_precompile_36 = new ::vl::presentation::compositions::GuiStackItemComposition()); + (this->__vwsn_precompile_46 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkSizeBox = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); } @@ -23872,12 +25120,12 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->checkSizeBox)->SetText(::vl::WString::Unmanaged(L"SizeBox")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_36)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkSizeBox)->GetBoundsComposition())); + ::vl::__vwsn::This(this->__vwsn_precompile_46)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkSizeBox)->GetBoundsComposition())); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_36)); + ::vl::__vwsn::This(this->__vwsn_precompile_41)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_46)); } - (this->__vwsn_precompile_37 = new ::vl::presentation::compositions::GuiStackItemComposition()); + (this->__vwsn_precompile_47 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkIcon = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); } @@ -23885,12 +25133,12 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->checkIcon)->SetText(::vl::WString::Unmanaged(L"IconVisible")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_37)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkIcon)->GetBoundsComposition())); + ::vl::__vwsn::This(this->__vwsn_precompile_47)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkIcon)->GetBoundsComposition())); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_37)); + ::vl::__vwsn::This(this->__vwsn_precompile_41)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_47)); } - (this->__vwsn_precompile_38 = new ::vl::presentation::compositions::GuiStackItemComposition()); + (this->__vwsn_precompile_48 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkTitle = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); } @@ -23898,30 +25146,30 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->checkTitle)->SetText(::vl::WString::Unmanaged(L"TitleBar")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_38)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkTitle)->GetBoundsComposition())); + ::vl::__vwsn::This(this->__vwsn_precompile_48)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->checkTitle)->GetBoundsComposition())); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_38)); + ::vl::__vwsn::This(this->__vwsn_precompile_41)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_48)); } - (this->__vwsn_precompile_39 = new ::vl::presentation::compositions::GuiStackItemComposition()); + (this->__vwsn_precompile_49 = new ::vl::presentation::compositions::GuiStackItemComposition()); { - (this->__vwsn_precompile_40 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + (this->__vwsn_precompile_50 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); } { - ::vl::__vwsn::This(this->__vwsn_precompile_40)->SetText(::vl::WString::Unmanaged(L"Open New Window")); + ::vl::__vwsn::This(this->__vwsn_precompile_50)->SetText(::vl::WString::Unmanaged(L"Open New Window")); } { - ::vl::__vwsn::This(this->__vwsn_precompile_39)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_40)->GetBoundsComposition())); + ::vl::__vwsn::This(this->__vwsn_precompile_49)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_50)->GetBoundsComposition())); } { - ::vl::__vwsn::This(this->__vwsn_precompile_31)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_39)); + ::vl::__vwsn::This(this->__vwsn_precompile_41)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_49)); } { - ::vl::__vwsn::This(::vl::__vwsn::This(this->__vwsn_precompile_30)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_31)); + ::vl::__vwsn::This(::vl::__vwsn::This(this->__vwsn_precompile_40)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_41)); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); - ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_30)); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_40)); } (this->__vwsn_precompile_1 = ::vl::__vwsn::This(this->__vwsn_precompile_0)->GetBoundsComposition()); { @@ -24002,7 +25250,7 @@ Class (::demo::MainWindowConstructor) } { auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf54_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_40)->Clicked, __vwsn_event_handler_); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_50)->Clicked, __vwsn_event_handler_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc15_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize__vl_reflection_description_IValueSubscription(this)); @@ -24059,36 +25307,46 @@ Class (::demo::MainWindowConstructor) , __vwsn_precompile_9(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) , __vwsn_precompile_10(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) , __vwsn_precompile_11(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) - , __vwsn_precompile_12(static_cast<::demo::RepeatTabPage*>(nullptr)) - , __vwsn_precompile_13(static_cast<::demo::ResponsiveTabPage*>(nullptr)) - , __vwsn_precompile_14(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) - , __vwsn_precompile_15(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) - , __vwsn_precompile_16(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) - , __vwsn_precompile_17(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) - , __vwsn_precompile_18(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_12(static_cast<::demo::RefreshTextListTabPage*>(nullptr)) + , __vwsn_precompile_13(static_cast<::demo::RefreshBindableTextListTabPage*>(nullptr)) + , __vwsn_precompile_14(static_cast<::demo::RefreshListViewTabPage*>(nullptr)) + , __vwsn_precompile_15(static_cast<::demo::RefreshBindableListViewTabPage*>(nullptr)) + , __vwsn_precompile_16(static_cast<::demo::RefreshTreeViewTabPage*>(nullptr)) + , __vwsn_precompile_17(static_cast<::demo::RefreshBindableTreeViewTabPage*>(nullptr)) + , __vwsn_precompile_18(static_cast<::demo::RefreshBindableDataGridTabPage*>(nullptr)) , __vwsn_precompile_19(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) - , __vwsn_precompile_20(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) - , __vwsn_precompile_21(static_cast<::demo::TextBoxTabPage*>(nullptr)) - , __vwsn_precompile_22(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) - , __vwsn_precompile_23(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) - , __vwsn_precompile_24(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) - , __vwsn_precompile_25(static_cast<::demo::ElementTabPage*>(nullptr)) - , __vwsn_precompile_26(static_cast<::demo::AnimationTabPage*>(nullptr)) - , __vwsn_precompile_27(static_cast<::demo::LocalizedStringsTabPage*>(nullptr)) - , __vwsn_precompile_28(static_cast<::demo::LocalizedDialogsTabPage*>(nullptr)) - , __vwsn_precompile_29(static_cast<::demo::DatePickerTabPage*>(nullptr)) - , __vwsn_precompile_30(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) - , __vwsn_precompile_31(static_cast<::vl::presentation::compositions::GuiStackComposition*>(nullptr)) - , __vwsn_precompile_32(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) - , __vwsn_precompile_33(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) - , __vwsn_precompile_34(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) - , __vwsn_precompile_35(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) - , __vwsn_precompile_36(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) - , __vwsn_precompile_37(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) - , __vwsn_precompile_38(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) - , __vwsn_precompile_39(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) - , __vwsn_precompile_40(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) - , __vwsn_precompile_41(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_20(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) + , __vwsn_precompile_21(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_22(static_cast<::demo::RepeatTabPage*>(nullptr)) + , __vwsn_precompile_23(static_cast<::demo::ResponsiveTabPage*>(nullptr)) + , __vwsn_precompile_24(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_25(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) + , __vwsn_precompile_26(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_27(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_28(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_29(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_30(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_31(static_cast<::demo::TextBoxTabPage*>(nullptr)) + , __vwsn_precompile_32(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_33(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) + , __vwsn_precompile_34(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_35(static_cast<::demo::ElementTabPage*>(nullptr)) + , __vwsn_precompile_36(static_cast<::demo::AnimationTabPage*>(nullptr)) + , __vwsn_precompile_37(static_cast<::demo::LocalizedStringsTabPage*>(nullptr)) + , __vwsn_precompile_38(static_cast<::demo::LocalizedDialogsTabPage*>(nullptr)) + , __vwsn_precompile_39(static_cast<::demo::DatePickerTabPage*>(nullptr)) + , __vwsn_precompile_40(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_41(static_cast<::vl::presentation::compositions::GuiStackComposition*>(nullptr)) + , __vwsn_precompile_42(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) + , __vwsn_precompile_43(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) + , __vwsn_precompile_44(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) + , __vwsn_precompile_45(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) + , __vwsn_precompile_46(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) + , __vwsn_precompile_47(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) + , __vwsn_precompile_48(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) + , __vwsn_precompile_49(static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr)) + , __vwsn_precompile_50(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_51(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) { } @@ -24223,6 +25481,2131 @@ Class (::demo::MyTextItem) { } +/*********************************************************************** +Class (::demo::RefreshBindableDataGridTabPageConstructor) +***********************************************************************/ + + void RefreshBindableDataGridTabPageConstructor::__vwsn_demo_RefreshBindableDataGridTabPage_Initialize(::demo::RefreshBindableDataGridTabPage* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"BindableDataGrid")); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetBorderVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(7)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(5), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(6), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetText(::vl::WString::Unmanaged(L"BigIcon")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetText(::vl::WString::Unmanaged(L"SmallIcon")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetText(::vl::WString::Unmanaged(L"List")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetText(::vl::WString::Unmanaged(L"Tile")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_6)); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetText(::vl::WString::Unmanaged(L"Information")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetText(::vl::WString::Unmanaged(L"Detail")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + (this->__vwsn_precompile_9 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9.Obj())->SetText(::vl::WString::Unmanaged(L"DataGrid")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetHorizontalAlwaysVisible(false); + } + { + (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + } + { + ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(6)); + } + { + ::vl::__vwsn::This(this->comboView)->SetAlt(::vl::WString::Unmanaged(L"V")); + } + (this->__vwsn_precompile_10 = ::vl::__vwsn::This(this->comboView)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(120); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->comboView)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_11 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_12 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetText(::vl::WString::Unmanaged(L"Use Name")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_12)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_11)); + } + (this->__vwsn_precompile_13 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_14 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetText(::vl::WString::Unmanaged(L"Use Title")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_14)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_13)); + } + (this->__vwsn_precompile_15 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_16 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetText(::vl::WString::Unmanaged(L"*Sub1")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_16)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_15)); + } + (this->__vwsn_precompile_17 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(4), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_18 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetText(::vl::WString::Unmanaged(L"*DataColumn")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_18)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_17)); + } + (this->__vwsn_precompile_19 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_19)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(5), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_20 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_20)->SetText(::vl::WString::Unmanaged(L"*Column")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_19)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_20)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_19)); + } + (this->__vwsn_precompile_21 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(7)); + } + { + (this->dataGrid = new ::vl::presentation::controls::GuiBindableDataGrid(::vl::presentation::theme::ThemeName::ListView)); + } + { + ::vl::__vwsn::This(this->dataGrid)->SetSmallImageProperty(vl::Func(::vl_workflow_global::__vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->dataGrid)->SetLargeImageProperty(vl::Func(::vl_workflow_global::__vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->dataGrid)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(0))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->dataGrid)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(1))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->dataGrid)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(2))); + } + (this->__vwsn_precompile_26 = ::vl::__vwsn::This(this->dataGrid)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_26)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_22 = ::vl::Ptr<::vl::presentation::controls::list::DataColumn>(new ::vl::presentation::controls::list::DataColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_22.Obj())->SetValueProperty(vl::Func(::vl_workflow_global::__vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_22.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_22.Obj())->SetText(::vl::WString::Unmanaged(L"Id")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->dataGrid)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_22)); + } + (this->__vwsn_precompile_23 = ::vl::Ptr<::vl::presentation::controls::list::DataColumn>(new ::vl::presentation::controls::list::DataColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_23.Obj())->SetValueProperty(vl::Func(::vl_workflow_global::__vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_23.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_23.Obj())->SetText(::vl::WString::Unmanaged(L"Category")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->dataGrid)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_23)); + } + (this->__vwsn_precompile_24 = ::vl::Ptr<::vl::presentation::controls::list::DataColumn>(new ::vl::presentation::controls::list::DataColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->SetValueProperty(vl::Func(::vl_workflow_global::__vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->SetText(::vl::WString::Unmanaged(L"Size")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->dataGrid)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_24)); + } + (this->__vwsn_precompile_25 = ::vl::Ptr<::vl::presentation::controls::list::DataColumn>(new ::vl::presentation::controls::list::DataColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->SetVisualizerFactory(::vl::Ptr<::vl::presentation::controls::list::IDataVisualizerFactory>(::vl::Ptr<::vl::presentation::controls::list::DataVisualizerFactory>(new ::vl::presentation::controls::list::DataVisualizerFactory(vl::Func(::vl_workflow_global::__vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)), ::vl::Ptr<::vl::presentation::controls::list::DataVisualizerFactory>(new ::vl::presentation::controls::list::DataVisualizerFactory(vl::Func(::vl_workflow_global::__vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)), ::vl::Ptr<::vl::presentation::controls::list::DataVisualizerFactory>(new ::vl::presentation::controls::list::DataVisualizerFactory(vl::Func(::vl_workflow_global::__vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)), ::vl::Ptr<::vl::presentation::controls::list::DataVisualizerFactory>())))))))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->SetEditorFactory(::vl::Ptr<::vl::presentation::controls::list::IDataEditorFactory>(::vl::Ptr<::vl::presentation::controls::list::DataEditorFactory>(new ::vl::presentation::controls::list::DataEditorFactory(vl::Func(::vl_workflow_global::__vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)))))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->SetValueProperty(vl::Func(::vl_workflow_global::__vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->SetText(::vl::WString::Unmanaged(L"File")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->dataGrid)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_25)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->dataGrid)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_21)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->comboView)->SelectedIndexChanged, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_12)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_14)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_16)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_18)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_20)->Clicked, __vwsn_event_handler_); + } + { + ::vl::__vwsn::This(this->dataGrid)->SetItemSource(::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(this->self)->items)); + } + } + + RefreshBindableDataGridTabPageConstructor::RefreshBindableDataGridTabPageConstructor() + : self(static_cast<::demo::RefreshBindableDataGridTabPage*>(nullptr)) + , comboView(static_cast<::vl::presentation::controls::GuiComboBoxListControl*>(nullptr)) + , dataGrid(static_cast<::vl::presentation::controls::GuiBindableDataGrid*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::controls::GuiTextList*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_9(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_12(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_13(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_14(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_15(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_16(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_17(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_18(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_19(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_20(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_21(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_22(::vl::Ptr<::vl::presentation::controls::list::DataColumn>()) + , __vwsn_precompile_23(::vl::Ptr<::vl::presentation::controls::list::DataColumn>()) + , __vwsn_precompile_24(::vl::Ptr<::vl::presentation::controls::list::DataColumn>()) + , __vwsn_precompile_25(::vl::Ptr<::vl::presentation::controls::list::DataColumn>()) + , __vwsn_precompile_26(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::demo::RefreshBindableDataGridTabPage) +***********************************************************************/ + + RefreshBindableDataGridTabPage::RefreshBindableDataGridTabPage() + : ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl) + , items((::vl::__vwsn::CreateObservableList().Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"First"), ::vl::WString::Unmanaged(L"1st")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Second"), ::vl::WString::Unmanaged(L"2nd")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Third"), ::vl::WString::Unmanaged(L"3rd")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Fourth"), ::vl::WString::Unmanaged(L"4th"))))).list) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::RefreshBindableDataGridTabPage")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_demo_RefreshBindableDataGridTabPage_Initialize(this); + this->__vwsn_instance_ctor_(); + } + + void RefreshBindableDataGridTabPage::__vwsn_instance_ctor_() + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Task"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Reminder"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(3))).Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(3))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + } + + RefreshBindableDataGridTabPage::~RefreshBindableDataGridTabPage() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiCustomControl*>(this)); + } + +/*********************************************************************** +Class (::demo::RefreshBindableListViewTabPageConstructor) +***********************************************************************/ + + void RefreshBindableListViewTabPageConstructor::__vwsn_demo_RefreshBindableListViewTabPage_Initialize(::demo::RefreshBindableListViewTabPage* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"BindableListView")); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetBorderVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(7)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(5), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(6), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetText(::vl::WString::Unmanaged(L"BigIcon")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetText(::vl::WString::Unmanaged(L"SmallIcon")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetText(::vl::WString::Unmanaged(L"List")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetText(::vl::WString::Unmanaged(L"Tile")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_6)); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetText(::vl::WString::Unmanaged(L"Information")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetText(::vl::WString::Unmanaged(L"Detail")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetHorizontalAlwaysVisible(false); + } + { + (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + } + { + ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->comboView)->SetAlt(::vl::WString::Unmanaged(L"V")); + } + (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->comboView)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(120); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->comboView)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_11 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetText(::vl::WString::Unmanaged(L"Use Name")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_11)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + (this->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_13 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetText(::vl::WString::Unmanaged(L"Use Title")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_13)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_12)); + } + (this->__vwsn_precompile_14 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_15 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->SetText(::vl::WString::Unmanaged(L"*Sub1")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_15)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_14)); + } + (this->__vwsn_precompile_16 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(4), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_17 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetText(::vl::WString::Unmanaged(L"*DataColumn")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_17)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_16)); + } + (this->__vwsn_precompile_18 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(5), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_19 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_19)->SetText(::vl::WString::Unmanaged(L"*Column")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_19)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_18)); + } + (this->__vwsn_precompile_20 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_20)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(7)); + } + { + (this->listView = new ::vl::presentation::controls::GuiBindableListView(::vl::presentation::theme::ThemeName::ListView)); + } + { + ::vl::__vwsn::This(this->listView)->SetSmallImageProperty(vl::Func(::vl_workflow_global::__vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->listView)->SetLargeImageProperty(vl::Func(::vl_workflow_global::__vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(0))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(1))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(2))); + } + (this->__vwsn_precompile_25 = ::vl::__vwsn::This(this->listView)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_25)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_21 = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_21.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_21.Obj())->SetText(::vl::WString::Unmanaged(L"Id")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_21)); + } + (this->__vwsn_precompile_22 = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_22.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_22.Obj())->SetText(::vl::WString::Unmanaged(L"Category")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_22)); + } + (this->__vwsn_precompile_23 = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_23.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_23.Obj())->SetText(::vl::WString::Unmanaged(L"Size")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_23)); + } + (this->__vwsn_precompile_24 = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->SetText(::vl::WString::Unmanaged(L"File")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_24)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_20)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->listView)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_20)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->comboView)->SelectedIndexChanged, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_11)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_13)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_15)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_17)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_19)->Clicked, __vwsn_event_handler_); + } + { + ::vl::__vwsn::This(this->listView)->SetItemSource(::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(this->self)->items)); + } + } + + RefreshBindableListViewTabPageConstructor::RefreshBindableListViewTabPageConstructor() + : self(static_cast<::demo::RefreshBindableListViewTabPage*>(nullptr)) + , comboView(static_cast<::vl::presentation::controls::GuiComboBoxListControl*>(nullptr)) + , listView(static_cast<::vl::presentation::controls::GuiBindableListView*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::controls::GuiTextList*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_12(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_13(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_14(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_15(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_16(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_17(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_18(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_19(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_20(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_21(::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>()) + , __vwsn_precompile_22(::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>()) + , __vwsn_precompile_23(::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>()) + , __vwsn_precompile_24(::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>()) + , __vwsn_precompile_25(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::demo::RefreshBindableListViewTabPage) +***********************************************************************/ + + RefreshBindableListViewTabPage::RefreshBindableListViewTabPage() + : ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl) + , items((::vl::__vwsn::CreateObservableList().Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"First"), ::vl::WString::Unmanaged(L"1st")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Second"), ::vl::WString::Unmanaged(L"2nd")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Third"), ::vl::WString::Unmanaged(L"3rd")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Fourth"), ::vl::WString::Unmanaged(L"4th"))))).list) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::RefreshBindableListViewTabPage")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_demo_RefreshBindableListViewTabPage_Initialize(this); + this->__vwsn_instance_ctor_(); + } + + void RefreshBindableListViewTabPage::__vwsn_instance_ctor_() + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Task"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Reminder"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(3))).Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(this->items.Obj())->Get(static_cast<::vl::vint>(3))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + } + + RefreshBindableListViewTabPage::~RefreshBindableListViewTabPage() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiCustomControl*>(this)); + } + +/*********************************************************************** +Class (::demo::RefreshBindableTextListTabPageConstructor) +***********************************************************************/ + + void RefreshBindableTextListTabPageConstructor::__vwsn_demo_RefreshBindableTextListTabPage_Initialize(::demo::RefreshBindableTextListTabPage* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"BindableTextList")); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetBorderVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(6)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(5), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetText(::vl::WString::Unmanaged(L"Use Name")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_4 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetText(::vl::WString::Unmanaged(L"Use Title")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_4)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetText(::vl::WString::Unmanaged(L"Check First")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_8 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetText(::vl::WString::Unmanaged(L"Uncheck First")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_8)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_9 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(4), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->buttonRead = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->buttonRead)->SetText(::vl::WString::Unmanaged(L"Read (false)")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonRead)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_9)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(6)); + } + { + (this->textList = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + } + { + ::vl::__vwsn::This(this->textList)->SetView(::vl::presentation::controls::TextListView::Check); + } + { + ::vl::__vwsn::This(this->textList)->SetMultiSelect(true); + } + { + ::vl::__vwsn::This(this->textList)->SetCheckedProperty(vl::Func(::vl_workflow_global::__vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->textList)->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(this))); + } + (this->__vwsn_precompile_11 = ::vl::__vwsn::This(this->textList)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->textList)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_2)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_4)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_6)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_8)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->buttonRead)->Clicked, __vwsn_event_handler_); + } + { + ::vl::__vwsn::This(this->textList)->SetItemSource(::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(this->self)->items)); + } + } + + RefreshBindableTextListTabPageConstructor::RefreshBindableTextListTabPageConstructor() + : self(static_cast<::demo::RefreshBindableTextListTabPage*>(nullptr)) + , textList(static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr)) + , buttonRead(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::demo::RefreshBindableTextListTabPage) +***********************************************************************/ + + RefreshBindableTextListTabPage::RefreshBindableTextListTabPage() + : ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl) + , items((::vl::__vwsn::CreateObservableList().Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"First"), ::vl::WString::Unmanaged(L"1st")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Second"), ::vl::WString::Unmanaged(L"2nd")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Third"), ::vl::WString::Unmanaged(L"3rd"))))).list) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::RefreshBindableTextListTabPage")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_demo_RefreshBindableTextListTabPage_Initialize(this); + } + + RefreshBindableTextListTabPage::~RefreshBindableTextListTabPage() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiCustomControl*>(this)); + } + +/*********************************************************************** +Class (::demo::RefreshBindableTreeViewTabPageConstructor) +***********************************************************************/ + + void RefreshBindableTreeViewTabPageConstructor::__vwsn_demo_RefreshBindableTreeViewTabPage_Initialize(::demo::RefreshBindableTreeViewTabPage* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"BindableTreeView")); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetBorderVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(5)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetText(::vl::WString::Unmanaged(L"Use Name")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_4 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetText(::vl::WString::Unmanaged(L"Use Title")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_4)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetText(::vl::WString::Unmanaged(L"*First")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_8 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetText(::vl::WString::Unmanaged(L"*First/Second")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_8)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_9 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(5)); + } + { + (this->treeView = new ::vl::presentation::controls::GuiBindableTreeView(::vl::presentation::theme::ThemeName::TreeView, vl::Func(::vl_workflow_global::__vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this)))); + } + { + ::vl::__vwsn::This(this->treeView)->SetChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->treeView)->SetImageProperty(vl::Func(::vl_workflow_global::__vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->treeView)->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this))); + } + (this->__vwsn_precompile_10 = ::vl::__vwsn::This(this->treeView)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->treeView)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_2)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_4)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_6)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_8)->Clicked, __vwsn_event_handler_); + } + { + ::vl::__vwsn::This(this->treeView)->SetItemSource(::vl::__vwsn::Box(::vl::__vwsn::This(this->self)->rootItem)); + } + } + + RefreshBindableTreeViewTabPageConstructor::RefreshBindableTreeViewTabPageConstructor() + : self(static_cast<::demo::RefreshBindableTreeViewTabPage*>(nullptr)) + , treeView(static_cast<::vl::presentation::controls::GuiBindableTreeView*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::demo::RefreshBindableTreeViewTabPage) +***********************************************************************/ + + RefreshBindableTreeViewTabPage::RefreshBindableTreeViewTabPage() + : ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl) + , rootItem(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L""), ::vl::WString::Unmanaged(L""), ::vl::reflection::description::GetLazyList<::vl::Ptr<::demo::RefreshItem>>((::vl::__vwsn::CreateList().Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"First"), ::vl::WString::Unmanaged(L"1st"), ::vl::reflection::description::GetLazyList<::vl::Ptr<::demo::RefreshItem>>((::vl::__vwsn::CreateList().Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"First (1)"), ::vl::WString::Unmanaged(L"1st (1)")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Second (1)"), ::vl::WString::Unmanaged(L"2nd (1)")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Third (1)"), ::vl::WString::Unmanaged(L"3rd (1)"))))).list)))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Second"), ::vl::WString::Unmanaged(L"2nd"), ::vl::reflection::description::GetLazyList<::vl::Ptr<::demo::RefreshItem>>((::vl::__vwsn::CreateList().Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"First (2)"), ::vl::WString::Unmanaged(L"1st (2)")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Second (2)"), ::vl::WString::Unmanaged(L"2nd (2)")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Third (2)"), ::vl::WString::Unmanaged(L"3rd (2)"))))).list)))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Third"), ::vl::WString::Unmanaged(L"3rd")))).Add(::vl::Ptr<::demo::RefreshItem>(new ::demo::RefreshItem(::vl::WString::Unmanaged(L"Fourth"), ::vl::WString::Unmanaged(L"4th"))))).list)))) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::RefreshBindableTreeViewTabPage")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_demo_RefreshBindableTreeViewTabPage_Initialize(this); + this->__vwsn_instance_ctor_(); + } + + void RefreshBindableTreeViewTabPage::__vwsn_instance_ctor_() + { + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(3))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(0))).Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(1))).Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(0))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(1))).Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(1))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj()))); + ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(::vl::__vwsn::This(this->rootItem.Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(1))).Obj())->GetChildren().Obj())->Get(static_cast<::vl::vint>(2))).Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(this->self)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + } + + RefreshBindableTreeViewTabPage::~RefreshBindableTreeViewTabPage() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiCustomControl*>(this)); + } + +/*********************************************************************** +Class (::demo::RefreshItem) +***********************************************************************/ + + ::vl::WString RefreshItem::GetName() + { + return this->__vwsn_prop_Name; + } + + void RefreshItem::SetName(const ::vl::WString& __vwsn_value_) + { + (this->__vwsn_prop_Name = __vwsn_value_); + } + + ::vl::WString RefreshItem::GetTitle() + { + return this->__vwsn_prop_Title; + } + + void RefreshItem::SetTitle(const ::vl::WString& __vwsn_value_) + { + (this->__vwsn_prop_Title = __vwsn_value_); + } + + ::vl::WString RefreshItem::GetSub1() + { + return this->__vwsn_prop_Sub1; + } + + void RefreshItem::SetSub1(const ::vl::WString& __vwsn_value_) + { + (this->__vwsn_prop_Sub1 = __vwsn_value_); + } + + ::vl::WString RefreshItem::GetSub2() + { + return this->__vwsn_prop_Sub2; + } + + void RefreshItem::SetSub2(const ::vl::WString& __vwsn_value_) + { + (this->__vwsn_prop_Sub2 = __vwsn_value_); + } + + ::vl::WString RefreshItem::GetSub3() + { + return this->__vwsn_prop_Sub3; + } + + void RefreshItem::SetSub3(const ::vl::WString& __vwsn_value_) + { + (this->__vwsn_prop_Sub3 = __vwsn_value_); + } + + bool RefreshItem::GetSelected() + { + return this->__vwsn_prop_Selected; + } + + void RefreshItem::SetSelected(bool __vwsn_value_) + { + (this->__vwsn_prop_Selected = __vwsn_value_); + } + + ::vl::Ptr<::vl::presentation::GuiImageData> RefreshItem::GetLargeImage() + { + return this->__vwsn_prop_LargeImage; + } + + void RefreshItem::SetLargeImage(::vl::Ptr<::vl::presentation::GuiImageData> __vwsn_value_) + { + (this->__vwsn_prop_LargeImage = __vwsn_value_); + } + + ::vl::Ptr<::vl::presentation::GuiImageData> RefreshItem::GetSmallImage() + { + return this->__vwsn_prop_SmallImage; + } + + void RefreshItem::SetSmallImage(::vl::Ptr<::vl::presentation::GuiImageData> __vwsn_value_) + { + (this->__vwsn_prop_SmallImage = __vwsn_value_); + } + + ::vl::Ptr<::vl::reflection::description::IValueObservableList> RefreshItem::GetChildren() + { + return this->__vwsn_prop_Children; + } + + void RefreshItem::SetChildren(::vl::Ptr<::vl::reflection::description::IValueObservableList> __vwsn_value_) + { + (this->__vwsn_prop_Children = __vwsn_value_); + } + + ::vl::reflection::description::Value RefreshItem::GetDoNotUse() + { + return this->__vwsn_prop_DoNotUse; + } + + void RefreshItem::SetDoNotUse(const ::vl::reflection::description::Value& __vwsn_value_) + { + (this->__vwsn_prop_DoNotUse = __vwsn_value_); + } + + RefreshItem::RefreshItem(const ::vl::WString& name, const ::vl::WString& title) + : __vwsn_prop_Name(::vl::WString::Unmanaged(L"")) + , __vwsn_prop_Title(::vl::WString::Unmanaged(L"")) + , __vwsn_prop_Sub1(::vl::WString::Unmanaged(L"One")) + , __vwsn_prop_Sub2(::vl::WString::Unmanaged(L"Two")) + , __vwsn_prop_Sub3(::vl::WString::Unmanaged(L"Three")) + , __vwsn_prop_Selected(false) + , __vwsn_prop_LargeImage(::vl::Ptr<::vl::presentation::GuiImageData>()) + , __vwsn_prop_SmallImage(::vl::Ptr<::vl::presentation::GuiImageData>()) + , __vwsn_prop_Children(::vl::reflection::description::IValueObservableList::Create()) + , __vwsn_prop_DoNotUse(::vl::reflection::description::Value()) + { + this->SetName(name); + this->SetTitle(title); + } + + RefreshItem::RefreshItem(const ::vl::WString& name, const ::vl::WString& title, const ::vl::collections::LazyList<::vl::Ptr<::demo::RefreshItem>>& children) + : __vwsn_prop_Name(::vl::WString::Unmanaged(L"")) + , __vwsn_prop_Title(::vl::WString::Unmanaged(L"")) + , __vwsn_prop_Sub1(::vl::WString::Unmanaged(L"One")) + , __vwsn_prop_Sub2(::vl::WString::Unmanaged(L"Two")) + , __vwsn_prop_Sub3(::vl::WString::Unmanaged(L"Three")) + , __vwsn_prop_Selected(false) + , __vwsn_prop_LargeImage(::vl::Ptr<::vl::presentation::GuiImageData>()) + , __vwsn_prop_SmallImage(::vl::Ptr<::vl::presentation::GuiImageData>()) + , __vwsn_prop_Children(::vl::reflection::description::IValueObservableList::Create()) + , __vwsn_prop_DoNotUse(::vl::reflection::description::Value()) + { + this->SetName(name); + this->SetTitle(title); + { + auto __vwsn_for_enumerable_child = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueEnumerable>(children); + auto __vwsn_for_enumerator_child = ::vl::__vwsn::This(__vwsn_for_enumerable_child.Obj())->CreateEnumerator(); + while (::vl::__vwsn::This(__vwsn_for_enumerator_child.Obj())->Next()) + { + auto child = ::vl::__vwsn::Unbox<::vl::Ptr<::demo::RefreshItem>>(::vl::__vwsn::This(__vwsn_for_enumerator_child.Obj())->GetCurrent()); + { + ::vl::__vwsn::This(this->GetChildren().Obj())->Add(::vl::__vwsn::Box(child)); + } + } + } + } + +/*********************************************************************** +Class (::demo::RefreshListViewTabPageConstructor) +***********************************************************************/ + + void RefreshListViewTabPageConstructor::__vwsn_demo_RefreshListViewTabPage_Initialize(::demo::RefreshListViewTabPage* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"ListView")); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetBorderVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(6)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(4), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(5), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + } + (this->__vwsn_precompile_3 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3.Obj())->SetText(::vl::WString::Unmanaged(L"BigIcon")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4.Obj())->SetText(::vl::WString::Unmanaged(L"SmallIcon")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_5 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5.Obj())->SetText(::vl::WString::Unmanaged(L"List")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->SetText(::vl::WString::Unmanaged(L"Tile")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_6)); + } + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7.Obj())->SetText(::vl::WString::Unmanaged(L"Information")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetText(::vl::WString::Unmanaged(L"Detail")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetHorizontalAlwaysVisible(false); + } + { + (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + } + { + ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->comboView)->SetAlt(::vl::WString::Unmanaged(L"V")); + } + (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->comboView)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(120); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->comboView)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_11 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetText(::vl::WString::Unmanaged(L"*MainColumn")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_11)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + (this->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_13 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetText(::vl::WString::Unmanaged(L"*SubColumn")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_13)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_12)); + } + (this->__vwsn_precompile_14 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_15 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->SetText(::vl::WString::Unmanaged(L"*DataColumn")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_15)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_14)); + } + (this->__vwsn_precompile_16 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(4), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_17 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetText(::vl::WString::Unmanaged(L"*Column")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_17)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_16)); + } + (this->__vwsn_precompile_18 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(6)); + } + { + (this->listView = new ::vl::presentation::controls::GuiListView(::vl::presentation::theme::ThemeName::ListView)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(0))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(1))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(static_cast<::vl::vint>(2))); + } + (this->__vwsn_precompile_24 = ::vl::Ptr<::vl::presentation::controls::list::ListViewItem>(new ::vl::presentation::controls::list::ListViewItem())); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"One"))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"Two"))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"Three"))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->SetText(::vl::WString::Unmanaged(L"First")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_24)); + } + (this->__vwsn_precompile_25 = ::vl::Ptr<::vl::presentation::controls::list::ListViewItem>(new ::vl::presentation::controls::list::ListViewItem())); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"One"))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"Two"))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"Three"))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->SetText(::vl::WString::Unmanaged(L"Second")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_25)); + } + (this->__vwsn_precompile_26 = ::vl::Ptr<::vl::presentation::controls::list::ListViewItem>(new ::vl::presentation::controls::list::ListViewItem())); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_26.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"One"))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_26.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"Two"))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_26.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"Three"))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_26.Obj())->SetText(::vl::WString::Unmanaged(L"Third")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_26)); + } + (this->__vwsn_precompile_27 = ::vl::Ptr<::vl::presentation::controls::list::ListViewItem>(new ::vl::presentation::controls::list::ListViewItem())); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_27.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"One"))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_27.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"Two"))); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_27.Obj())->GetSubItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(::vl::WString::Unmanaged(L"Three"))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_27.Obj())->SetText(::vl::WString::Unmanaged(L"Fourth")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_27)); + } + (this->__vwsn_precompile_23 = ::vl::__vwsn::This(this->listView)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_23)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_19 = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_19.Obj())->SetText(::vl::WString::Unmanaged(L"Id")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_19)); + } + (this->__vwsn_precompile_20 = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_20.Obj())->SetText(::vl::WString::Unmanaged(L"Category")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_20)); + } + (this->__vwsn_precompile_21 = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_21.Obj())->SetText(::vl::WString::Unmanaged(L"Size")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_21)); + } + (this->__vwsn_precompile_22 = ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>(new ::vl::presentation::controls::list::ListViewColumn())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_22.Obj())->SetText(::vl::WString::Unmanaged(L"File")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetColumns()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_22)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->listView)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_18)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->comboView)->SelectedIndexChanged, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_11)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_13)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_15)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_17)->Clicked, __vwsn_event_handler_); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Task"), true).Obj()))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_24.Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj()))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Reminder"), true).Obj()))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_25.Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj()))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_26.Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Tip"), true).Obj()))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_26.Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_27.Obj())->SetLargeImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"LargeImages/Tip"), true).Obj()))); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_27.Obj())->SetSmallImage(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj()))); + } + } + + RefreshListViewTabPageConstructor::RefreshListViewTabPageConstructor() + : self(static_cast<::demo::RefreshListViewTabPage*>(nullptr)) + , comboView(static_cast<::vl::presentation::controls::GuiComboBoxListControl*>(nullptr)) + , listView(static_cast<::vl::presentation::controls::GuiListView*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::controls::GuiTextList*>(nullptr)) + , __vwsn_precompile_3(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_4(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_5(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_12(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_13(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_14(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_15(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_16(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_17(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_18(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_19(::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>()) + , __vwsn_precompile_20(::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>()) + , __vwsn_precompile_21(::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>()) + , __vwsn_precompile_22(::vl::Ptr<::vl::presentation::controls::list::ListViewColumn>()) + , __vwsn_precompile_23(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_24(::vl::Ptr<::vl::presentation::controls::list::ListViewItem>()) + , __vwsn_precompile_25(::vl::Ptr<::vl::presentation::controls::list::ListViewItem>()) + , __vwsn_precompile_26(::vl::Ptr<::vl::presentation::controls::list::ListViewItem>()) + , __vwsn_precompile_27(::vl::Ptr<::vl::presentation::controls::list::ListViewItem>()) + { + } + +/*********************************************************************** +Class (::demo::RefreshListViewTabPage) +***********************************************************************/ + + RefreshListViewTabPage::RefreshListViewTabPage() + : ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::RefreshListViewTabPage")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_demo_RefreshListViewTabPage_Initialize(this); + } + + RefreshListViewTabPage::~RefreshListViewTabPage() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiCustomControl*>(this)); + } + +/*********************************************************************** +Class (::demo::RefreshTextListTabPageConstructor) +***********************************************************************/ + + void RefreshTextListTabPageConstructor::__vwsn_demo_RefreshTextListTabPage_Initialize(::demo::RefreshTextListTabPage* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"TextList")); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetBorderVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(4)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetText(::vl::WString::Unmanaged(L"Check First")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_4 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetText(::vl::WString::Unmanaged(L"Uncheck First")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_4)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->buttonRead = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->buttonRead)->SetText(::vl::WString::Unmanaged(L"Read (false)")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->buttonRead)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(4)); + } + { + (this->textList = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + } + { + ::vl::__vwsn::This(this->textList)->SetView(::vl::presentation::controls::TextListView::Check); + } + { + ::vl::__vwsn::This(this->textList)->SetMultiSelect(true); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_8.Obj())->SetText(::vl::WString::Unmanaged(L"First")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->textList)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + (this->__vwsn_precompile_9 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9.Obj())->SetText(::vl::WString::Unmanaged(L"Second")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->textList)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_9)); + } + (this->__vwsn_precompile_10 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10.Obj())->SetText(::vl::WString::Unmanaged(L"Third")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->textList)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_10)); + } + (this->__vwsn_precompile_11 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_11.Obj())->SetText(::vl::WString::Unmanaged(L"Fourth")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->textList)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_11)); + } + (this->__vwsn_precompile_12 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_12.Obj())->SetText(::vl::WString::Unmanaged(L"Fifth")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->textList)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_12)); + } + (this->__vwsn_precompile_13 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); + { + ::vl::__vwsn::This(this->__vwsn_precompile_13.Obj())->SetText(::vl::WString::Unmanaged(L"Sixth")); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->textList)->GetItems()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_13)); + } + (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->textList)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_6)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->textList)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_6)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_2)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_4)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->buttonRead)->Clicked, __vwsn_event_handler_); + } + } + + RefreshTextListTabPageConstructor::RefreshTextListTabPageConstructor() + : self(static_cast<::demo::RefreshTextListTabPage*>(nullptr)) + , textList(static_cast<::vl::presentation::controls::GuiTextList*>(nullptr)) + , buttonRead(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_9(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_10(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_11(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_12(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + , __vwsn_precompile_13(::vl::Ptr<::vl::presentation::controls::list::TextItem>()) + { + } + +/*********************************************************************** +Class (::demo::RefreshTextListTabPage) +***********************************************************************/ + + RefreshTextListTabPage::RefreshTextListTabPage() + : ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::RefreshTextListTabPage")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_demo_RefreshTextListTabPage_Initialize(this); + } + + RefreshTextListTabPage::~RefreshTextListTabPage() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiCustomControl*>(this)); + } + +/*********************************************************************** +Class (::demo::RefreshTreeViewTabPageConstructor) +***********************************************************************/ + + void RefreshTreeViewTabPageConstructor::__vwsn_demo_RefreshTreeViewTabPage_Initialize(::demo::RefreshTreeViewTabPage* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"TreeView")); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetBorderVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(2), static_cast<::vl::vint>(3)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetText(::vl::WString::Unmanaged(L"*First")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_2)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_4 = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetText(::vl::WString::Unmanaged(L"*First/Second")); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_4)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3)); + } + { + (this->treeView = new ::vl::presentation::controls::GuiTreeView(::vl::presentation::theme::ThemeName::TreeView)); + } + (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->treeView)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_6 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj())), ::vl::WString::Unmanaged(L"First"))))))); + (this->__vwsn_precompile_7 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj())), ::vl::WString::Unmanaged(L"First (1)"))))))); + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_8 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj())), ::vl::WString::Unmanaged(L"Second (1)"))))))); + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + (this->__vwsn_precompile_9 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj())), ::vl::WString::Unmanaged(L"Third (1)"))))))); + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_6.Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_9)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(::vl::__vwsn::This(this->treeView)->Nodes().Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_6)); + } + (this->__vwsn_precompile_10 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj())), ::vl::WString::Unmanaged(L"Second"))))))); + (this->__vwsn_precompile_11 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Task"), true).Obj())), ::vl::WString::Unmanaged(L"First (2)"))))))); + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_10.Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_11)); + } + (this->__vwsn_precompile_12 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Reminder"), true).Obj())), ::vl::WString::Unmanaged(L"Second (2)"))))))); + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_10.Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_12)); + } + (this->__vwsn_precompile_13 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj())), ::vl::WString::Unmanaged(L"Third (2)"))))))); + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->__vwsn_precompile_10.Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_13)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(::vl::__vwsn::This(this->treeView)->Nodes().Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_10)); + } + (this->__vwsn_precompile_14 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj())), ::vl::WString::Unmanaged(L"Third"))))))); + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(::vl::__vwsn::This(this->treeView)->Nodes().Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_14)); + } + (this->__vwsn_precompile_15 = ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>(new ::vl::presentation::controls::tree::MemoryNodeProvider(::vl::Ptr<::vl::reflection::DescriptableObject>(::vl::Ptr<::vl::presentation::controls::tree::TreeViewItem>(new ::vl::presentation::controls::tree::TreeViewItem(::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(::vl::__vwsn::This(__vwsn_this_)->ResolveResource(::vl::WString::Unmanaged(L"res"), ::vl::WString::Unmanaged(L"SmallImages/Tip"), true).Obj())), ::vl::WString::Unmanaged(L"Fourth"))))))); + { + ::vl::__vwsn::This(::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(::vl::__vwsn::This(this->treeView)->Nodes().Obj())->Children()).Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_15)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->treeView)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_2)->Clicked, __vwsn_event_handler_); + } + { + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_4)->Clicked, __vwsn_event_handler_); + } + } + + RefreshTreeViewTabPageConstructor::RefreshTreeViewTabPageConstructor() + : self(static_cast<::demo::RefreshTreeViewTabPage*>(nullptr)) + , treeView(static_cast<::vl::presentation::controls::GuiTreeView*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::controls::GuiButton*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_7(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_8(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_9(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_10(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_11(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_12(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_13(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_14(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_15(::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider>()) + , __vwsn_precompile_16(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::demo::RefreshTreeViewTabPage) +***********************************************************************/ + + RefreshTreeViewTabPage::RefreshTreeViewTabPage() + : ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::RefreshTreeViewTabPage")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_demo_RefreshTreeViewTabPage_Initialize(this); + } + + RefreshTreeViewTabPage::~RefreshTreeViewTabPage() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiCustomControl*>(this)); + } + /*********************************************************************** Class (::demo::RepeatItemTemplateConstructor) ***********************************************************************/ @@ -24246,7 +27629,7 @@ Class (::demo::RepeatItemTemplateConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc131_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } } @@ -25048,21 +28431,21 @@ Class (::demo::ResponsiveGroupControlConstructor) ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_34)->Clicked, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_36)->Clicked, __vwsn_event_handler_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc136_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc137_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } } @@ -25440,21 +28823,21 @@ Class (::demo::ResponsiveStackControlConstructor) ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_34)->Clicked, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_36)->Clicked, __vwsn_event_handler_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc138_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc139_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } } @@ -25979,7 +29362,7 @@ Class (::demo::ResponsiveViewControlConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc140_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { @@ -25987,7 +29370,7 @@ Class (::demo::ResponsiveViewControlConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc141_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { @@ -25995,7 +29378,7 @@ Class (::demo::ResponsiveViewControlConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc142_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { @@ -26003,28 +29386,28 @@ Class (::demo::ResponsiveViewControlConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc143_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { ::vl::__vwsn::This(this->__vwsn_precompile_27)->SetShared(static_cast<::vl::presentation::controls::GuiControl*>(this->documentBox)); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_29)->Clicked, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_31)->Clicked, __vwsn_event_handler_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc144_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc145_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } } @@ -26126,7 +29509,7 @@ Class (::demo::SharedSizeItemTemplateConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc132_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } } @@ -26194,17 +29577,17 @@ Class (::demo::SharedSizeTextItemTemplateConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc133_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc134_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc135_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } } @@ -26802,6 +30185,98 @@ Class (::demo::SubWindow) this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiControlHost*>(this)); } +/*********************************************************************** +Class (::demo::TestWindowConstructor) +***********************************************************************/ + + void TestWindowConstructor::__vwsn_demo_TestWindow_Initialize(::demo::TestWindow* __vwsn_this_) + { + (this->self = __vwsn_this_); + { + ::vl::__vwsn::This(this->self)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(640); __vwsn_temp__.y = static_cast<::vl::vint>(480); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"MainWindow")); + } + { + (this->__vwsn_precompile_0 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); + } + (this->__vwsn_precompile_2 = new ::demo::RefreshTextListTabPage()); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_3 = new ::demo::RefreshBindableTextListTabPage()); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_4 = new ::demo::RefreshListViewTabPage()); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_4)); + } + (this->__vwsn_precompile_5 = new ::demo::RefreshBindableListViewTabPage()); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_6 = new ::demo::RefreshTreeViewTabPage()); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_6)); + } + (this->__vwsn_precompile_7 = new ::demo::RefreshBindableTreeViewTabPage()); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_7)); + } + (this->__vwsn_precompile_8 = new ::demo::RefreshBindableDataGridTabPage()); + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_0)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + (this->__vwsn_precompile_1 = ::vl::__vwsn::This(this->__vwsn_precompile_0)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_0)); + } + } + + TestWindowConstructor::TestWindowConstructor() + : self(static_cast<::demo::TestWindow*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::demo::RefreshTextListTabPage*>(nullptr)) + , __vwsn_precompile_3(static_cast<::demo::RefreshBindableTextListTabPage*>(nullptr)) + , __vwsn_precompile_4(static_cast<::demo::RefreshListViewTabPage*>(nullptr)) + , __vwsn_precompile_5(static_cast<::demo::RefreshBindableListViewTabPage*>(nullptr)) + , __vwsn_precompile_6(static_cast<::demo::RefreshTreeViewTabPage*>(nullptr)) + , __vwsn_precompile_7(static_cast<::demo::RefreshBindableTreeViewTabPage*>(nullptr)) + , __vwsn_precompile_8(static_cast<::demo::RefreshBindableDataGridTabPage*>(nullptr)) + { + } + +/*********************************************************************** +Class (::demo::TestWindow) +***********************************************************************/ + + TestWindow::TestWindow() + : ::vl::presentation::controls::GuiWindow(::vl::presentation::theme::ThemeName::Window) + { + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"demo::TestWindow")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_demo_TestWindow_Initialize(this); + } + + TestWindow::~TestWindow() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiControlHost*>(this)); + } + /*********************************************************************** Class (::demo::TextBoxSubTabPageConstructor) ***********************************************************************/ @@ -26879,7 +30354,7 @@ Class (::demo::TextBoxSubTabPageConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc149_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { @@ -26887,7 +30362,7 @@ Class (::demo::TextBoxSubTabPageConstructor) } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc150_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } } @@ -27074,24 +30549,24 @@ Class (::demo::TextBoxTabPageConstructor) ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_5)->Clicked, __vwsn_event_handler_); } { auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc151_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize__vl_reflection_description_IValueSubscription(this)); - ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this))); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this))); ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->__vwsn_precompile_7)->Clicked, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->self)->OnMakeFontLarger, __vwsn_event_handler_); } { - auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this)); + auto __vwsn_event_handler_ = vl::Func(::vl_workflow_global::__vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(this)); ::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->self)->OnMakeFontSmaller, __vwsn_event_handler_); } } diff --git a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoPartialClasses.h b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoPartialClasses.h index 9c1001b5..1848a498 100644 --- a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoPartialClasses.h +++ b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoPartialClasses.h @@ -182,53 +182,121 @@ namespace vl_workflow_global struct __vwsnf248_Demo_demo_LocalizedStringsTabPageConstructor___vwsn_demo_LocalizedStringsTabPage_Initialize_; struct __vwsnf249_Demo_demo_LocalizedStringsTabPageConstructor___vwsn_demo_LocalizedStringsTabPage_Initialize_; struct __vwsnf24_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; - struct __vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - struct __vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - struct __vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - struct __vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - struct __vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - struct __vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - struct __vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_; - struct __vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_; - struct __vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; - struct __vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + struct __vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; struct __vwsnf25_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; - struct __vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; - struct __vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - struct __vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - struct __vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - struct __vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - struct __vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - struct __vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - struct __vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - struct __vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - struct __vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + struct __vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + struct __vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + struct __vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; struct __vwsnf26_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; - struct __vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - struct __vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - struct __vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - struct __vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - struct __vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - struct __vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - struct __vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - struct __vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; - struct __vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; - struct __vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + struct __vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + struct __vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + struct __vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + struct __vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; struct __vwsnf27_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; - struct __vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; - struct __vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; - struct __vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - struct __vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - struct __vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - struct __vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - struct __vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + struct __vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; + struct __vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; + struct __vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + struct __vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; + struct __vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + struct __vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + struct __vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + struct __vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__; + struct __vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + struct __vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__; + struct __vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + struct __vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + struct __vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + struct __vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + struct __vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; struct __vwsnf29_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; struct __vwsnf2_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; + struct __vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + struct __vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + struct __vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + struct __vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__; + struct __vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + struct __vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__; + struct __vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + struct __vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + struct __vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + struct __vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; struct __vwsnf30_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; + struct __vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + struct __vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + struct __vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + struct __vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; + struct __vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; + struct __vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; + struct __vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_; + struct __vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_; + struct __vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + struct __vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; struct __vwsnf31_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; + struct __vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + struct __vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + struct __vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + struct __vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + struct __vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_; + struct __vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_; + struct __vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + struct __vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + struct __vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + struct __vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; struct __vwsnf32_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; + struct __vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + struct __vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + struct __vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + struct __vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + struct __vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + struct __vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + struct __vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + struct __vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + struct __vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + struct __vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; struct __vwsnf33_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_; + struct __vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + struct __vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + struct __vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + struct __vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + struct __vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + struct __vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + struct __vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + struct __vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + struct __vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; + struct __vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; struct __vwsnf34_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_; + struct __vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + struct __vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + struct __vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + struct __vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + struct __vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; struct __vwsnf35_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_; struct __vwsnf36_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_; struct __vwsnf37_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_; @@ -559,6 +627,21 @@ namespace demo class MainWindow; class MyDataItem; class MyTextItem; + class RefreshBindableDataGridTabPageConstructor; + class RefreshBindableDataGridTabPage; + class RefreshBindableListViewTabPageConstructor; + class RefreshBindableListViewTabPage; + class RefreshBindableTextListTabPageConstructor; + class RefreshBindableTextListTabPage; + class RefreshBindableTreeViewTabPageConstructor; + class RefreshBindableTreeViewTabPage; + class RefreshItem; + class RefreshListViewTabPageConstructor; + class RefreshListViewTabPage; + class RefreshTextListTabPageConstructor; + class RefreshTextListTabPage; + class RefreshTreeViewTabPageConstructor; + class RefreshTreeViewTabPage; class RepeatItemTemplateConstructor; class RepeatItemTemplate; class RepeatTabPageConstructor; @@ -582,6 +665,8 @@ namespace demo class StyleItemTemplate; class SubWindowConstructor; class SubWindow; + class TestWindowConstructor; + class TestWindow; class TextBoxSubTabPageConstructor; class TextBoxSubTabPage; class TextBoxTabPageConstructor; @@ -1201,9 +1286,9 @@ namespace demo friend class ::vl_workflow_global::__vwsnc146_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc147_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc148_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -1230,9 +1315,9 @@ namespace demo friend class ::vl_workflow_global::__vwsnc146_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc147_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc148_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -1699,12 +1784,12 @@ namespace demo class EnglishNumbersControllerConstructor : public ::vl::Object, public ::vl::reflection::Description { friend class ::vl_workflow_global::__vwsnc130_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -1737,12 +1822,12 @@ namespace demo { friend class ::demo::EnglishNumbersControllerConstructor; friend class ::vl_workflow_global::__vwsnc130_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; - friend struct ::vl_workflow_global::__vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; + friend struct ::vl_workflow_global::__vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -2550,36 +2635,46 @@ namespace demo ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_9; ::vl::presentation::controls::GuiTab* __vwsn_precompile_10; ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_11; - ::demo::RepeatTabPage* __vwsn_precompile_12; - ::demo::ResponsiveTabPage* __vwsn_precompile_13; - ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_14; - ::vl::presentation::controls::GuiTab* __vwsn_precompile_15; - ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_16; - ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_17; - ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_18; + ::demo::RefreshTextListTabPage* __vwsn_precompile_12; + ::demo::RefreshBindableTextListTabPage* __vwsn_precompile_13; + ::demo::RefreshListViewTabPage* __vwsn_precompile_14; + ::demo::RefreshBindableListViewTabPage* __vwsn_precompile_15; + ::demo::RefreshTreeViewTabPage* __vwsn_precompile_16; + ::demo::RefreshBindableTreeViewTabPage* __vwsn_precompile_17; + ::demo::RefreshBindableDataGridTabPage* __vwsn_precompile_18; ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_19; - ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_20; - ::demo::TextBoxTabPage* __vwsn_precompile_21; - ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_22; - ::vl::presentation::controls::GuiTab* __vwsn_precompile_23; - ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_24; - ::demo::ElementTabPage* __vwsn_precompile_25; - ::demo::AnimationTabPage* __vwsn_precompile_26; - ::demo::LocalizedStringsTabPage* __vwsn_precompile_27; - ::demo::LocalizedDialogsTabPage* __vwsn_precompile_28; - ::demo::DatePickerTabPage* __vwsn_precompile_29; - ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_30; - ::vl::presentation::compositions::GuiStackComposition* __vwsn_precompile_31; - ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_32; - ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_33; - ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_34; - ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_35; - ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_36; - ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_37; - ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_38; - ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_39; - ::vl::presentation::controls::GuiButton* __vwsn_precompile_40; - ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_41; + ::vl::presentation::controls::GuiTab* __vwsn_precompile_20; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_21; + ::demo::RepeatTabPage* __vwsn_precompile_22; + ::demo::ResponsiveTabPage* __vwsn_precompile_23; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_24; + ::vl::presentation::controls::GuiTab* __vwsn_precompile_25; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_26; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_27; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_28; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_29; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_30; + ::demo::TextBoxTabPage* __vwsn_precompile_31; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_32; + ::vl::presentation::controls::GuiTab* __vwsn_precompile_33; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_34; + ::demo::ElementTabPage* __vwsn_precompile_35; + ::demo::AnimationTabPage* __vwsn_precompile_36; + ::demo::LocalizedStringsTabPage* __vwsn_precompile_37; + ::demo::LocalizedDialogsTabPage* __vwsn_precompile_38; + ::demo::DatePickerTabPage* __vwsn_precompile_39; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_40; + ::vl::presentation::compositions::GuiStackComposition* __vwsn_precompile_41; + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_42; + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_43; + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_44; + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_45; + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_46; + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_47; + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_48; + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_49; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_50; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_51; void __vwsn_demo_MainWindow_Initialize(::demo::MainWindow* __vwsn_this_); public: MainWindowConstructor(); @@ -2647,10 +2742,522 @@ namespace demo MyTextItem(); }; + class RefreshBindableDataGridTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::RefreshBindableDataGridTabPage* self; + ::vl::presentation::controls::GuiComboBoxListControl* comboView; + ::vl::presentation::controls::GuiBindableDataGrid* dataGrid; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::controls::GuiTextList* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_8; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_9; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_10; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_11; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_12; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_13; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_14; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_15; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_16; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_17; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_18; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_19; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_20; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_21; + ::vl::Ptr<::vl::presentation::controls::list::DataColumn> __vwsn_precompile_22; + ::vl::Ptr<::vl::presentation::controls::list::DataColumn> __vwsn_precompile_23; + ::vl::Ptr<::vl::presentation::controls::list::DataColumn> __vwsn_precompile_24; + ::vl::Ptr<::vl::presentation::controls::list::DataColumn> __vwsn_precompile_25; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_26; + void __vwsn_demo_RefreshBindableDataGridTabPage_Initialize(::demo::RefreshBindableDataGridTabPage* __vwsn_this_); + public: + RefreshBindableDataGridTabPageConstructor(); + }; + + class RefreshBindableDataGridTabPage : public ::vl::presentation::controls::GuiTabPage, public ::demo::RefreshBindableDataGridTabPageConstructor, public ::vl::reflection::Description + { + friend class ::demo::RefreshBindableDataGridTabPageConstructor; + friend struct ::vl_workflow_global::__vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ::vl::Ptr<::vl::reflection::description::IValueObservableList> items; + RefreshBindableDataGridTabPage(); + void __vwsn_instance_ctor_(); + ~RefreshBindableDataGridTabPage(); + }; + + class RefreshBindableListViewTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::RefreshBindableListViewTabPage* self; + ::vl::presentation::controls::GuiComboBoxListControl* comboView; + ::vl::presentation::controls::GuiBindableListView* listView; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::controls::GuiTextList* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_11; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_12; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_13; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_14; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_15; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_16; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_17; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_18; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_19; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_20; + ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn> __vwsn_precompile_21; + ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn> __vwsn_precompile_22; + ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn> __vwsn_precompile_23; + ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn> __vwsn_precompile_24; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_25; + void __vwsn_demo_RefreshBindableListViewTabPage_Initialize(::demo::RefreshBindableListViewTabPage* __vwsn_this_); + public: + RefreshBindableListViewTabPageConstructor(); + }; + + class RefreshBindableListViewTabPage : public ::vl::presentation::controls::GuiTabPage, public ::demo::RefreshBindableListViewTabPageConstructor, public ::vl::reflection::Description + { + friend class ::demo::RefreshBindableListViewTabPageConstructor; + friend struct ::vl_workflow_global::__vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ::vl::Ptr<::vl::reflection::description::IValueObservableList> items; + RefreshBindableListViewTabPage(); + void __vwsn_instance_ctor_(); + ~RefreshBindableListViewTabPage(); + }; + + class RefreshBindableTextListTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::RefreshBindableTextListTabPage* self; + ::vl::presentation::controls::GuiBindableTextList* textList; + ::vl::presentation::controls::GuiButton* buttonRead; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_7; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_11; + void __vwsn_demo_RefreshBindableTextListTabPage_Initialize(::demo::RefreshBindableTextListTabPage* __vwsn_this_); + public: + RefreshBindableTextListTabPageConstructor(); + }; + + class RefreshBindableTextListTabPage : public ::vl::presentation::controls::GuiTabPage, public ::demo::RefreshBindableTextListTabPageConstructor, public ::vl::reflection::Description + { + friend class ::demo::RefreshBindableTextListTabPageConstructor; + friend struct ::vl_workflow_global::__vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ::vl::Ptr<::vl::reflection::description::IValueObservableList> items; + RefreshBindableTextListTabPage(); + ~RefreshBindableTextListTabPage(); + }; + + class RefreshBindableTreeViewTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::RefreshBindableTreeViewTabPage* self; + ::vl::presentation::controls::GuiBindableTreeView* treeView; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_7; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_10; + void __vwsn_demo_RefreshBindableTreeViewTabPage_Initialize(::demo::RefreshBindableTreeViewTabPage* __vwsn_this_); + public: + RefreshBindableTreeViewTabPageConstructor(); + }; + + class RefreshBindableTreeViewTabPage : public ::vl::presentation::controls::GuiTabPage, public ::demo::RefreshBindableTreeViewTabPageConstructor, public ::vl::reflection::Description + { + friend class ::demo::RefreshBindableTreeViewTabPageConstructor; + friend struct ::vl_workflow_global::__vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__; + friend struct ::vl_workflow_global::__vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ::vl::Ptr<::demo::RefreshItem> rootItem; + RefreshBindableTreeViewTabPage(); + void __vwsn_instance_ctor_(); + ~RefreshBindableTreeViewTabPage(); + }; + + class RefreshItem : public ::vl::Object, public ::vl::reflection::Description + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + private: + ::vl::WString __vwsn_prop_Name; + public: + ::vl::WString GetName(); + void SetName(const ::vl::WString& __vwsn_value_); + private: + ::vl::WString __vwsn_prop_Title; + public: + ::vl::WString GetTitle(); + void SetTitle(const ::vl::WString& __vwsn_value_); + private: + ::vl::WString __vwsn_prop_Sub1; + public: + ::vl::WString GetSub1(); + void SetSub1(const ::vl::WString& __vwsn_value_); + private: + ::vl::WString __vwsn_prop_Sub2; + public: + ::vl::WString GetSub2(); + void SetSub2(const ::vl::WString& __vwsn_value_); + private: + ::vl::WString __vwsn_prop_Sub3; + public: + ::vl::WString GetSub3(); + void SetSub3(const ::vl::WString& __vwsn_value_); + private: + bool __vwsn_prop_Selected; + public: + bool GetSelected(); + void SetSelected(bool __vwsn_value_); + private: + ::vl::Ptr<::vl::presentation::GuiImageData> __vwsn_prop_LargeImage; + public: + ::vl::Ptr<::vl::presentation::GuiImageData> GetLargeImage(); + void SetLargeImage(::vl::Ptr<::vl::presentation::GuiImageData> __vwsn_value_); + private: + ::vl::Ptr<::vl::presentation::GuiImageData> __vwsn_prop_SmallImage; + public: + ::vl::Ptr<::vl::presentation::GuiImageData> GetSmallImage(); + void SetSmallImage(::vl::Ptr<::vl::presentation::GuiImageData> __vwsn_value_); + private: + ::vl::Ptr<::vl::reflection::description::IValueObservableList> __vwsn_prop_Children; + public: + ::vl::Ptr<::vl::reflection::description::IValueObservableList> GetChildren(); + protected: + void SetChildren(::vl::Ptr<::vl::reflection::description::IValueObservableList> __vwsn_value_); + public: + private: + ::vl::reflection::description::Value __vwsn_prop_DoNotUse; + public: + ::vl::reflection::description::Value GetDoNotUse(); + void SetDoNotUse(const ::vl::reflection::description::Value& __vwsn_value_); + RefreshItem(const ::vl::WString& name, const ::vl::WString& title); + RefreshItem(const ::vl::WString& name, const ::vl::WString& title, const ::vl::collections::LazyList<::vl::Ptr<::demo::RefreshItem>>& children); + }; + + class RefreshListViewTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::RefreshListViewTabPage* self; + ::vl::presentation::controls::GuiComboBoxListControl* comboView; + ::vl::presentation::controls::GuiListView* listView; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::controls::GuiTextList* __vwsn_precompile_2; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_3; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_4; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_11; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_12; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_13; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_14; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_15; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_16; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_17; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_18; + ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn> __vwsn_precompile_19; + ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn> __vwsn_precompile_20; + ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn> __vwsn_precompile_21; + ::vl::Ptr<::vl::presentation::controls::list::ListViewColumn> __vwsn_precompile_22; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_23; + ::vl::Ptr<::vl::presentation::controls::list::ListViewItem> __vwsn_precompile_24; + ::vl::Ptr<::vl::presentation::controls::list::ListViewItem> __vwsn_precompile_25; + ::vl::Ptr<::vl::presentation::controls::list::ListViewItem> __vwsn_precompile_26; + ::vl::Ptr<::vl::presentation::controls::list::ListViewItem> __vwsn_precompile_27; + void __vwsn_demo_RefreshListViewTabPage_Initialize(::demo::RefreshListViewTabPage* __vwsn_this_); + public: + RefreshListViewTabPageConstructor(); + }; + + class RefreshListViewTabPage : public ::vl::presentation::controls::GuiTabPage, public ::demo::RefreshListViewTabPageConstructor, public ::vl::reflection::Description + { + friend class ::demo::RefreshListViewTabPageConstructor; + friend struct ::vl_workflow_global::__vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RefreshListViewTabPage(); + ~RefreshListViewTabPage(); + }; + + class RefreshTextListTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::RefreshTextListTabPage* self; + ::vl::presentation::controls::GuiTextList* textList; + ::vl::presentation::controls::GuiButton* buttonRead; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_8; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_9; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_10; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_11; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_12; + ::vl::Ptr<::vl::presentation::controls::list::TextItem> __vwsn_precompile_13; + void __vwsn_demo_RefreshTextListTabPage_Initialize(::demo::RefreshTextListTabPage* __vwsn_this_); + public: + RefreshTextListTabPageConstructor(); + }; + + class RefreshTextListTabPage : public ::vl::presentation::controls::GuiTabPage, public ::demo::RefreshTextListTabPageConstructor, public ::vl::reflection::Description + { + friend class ::demo::RefreshTextListTabPageConstructor; + friend struct ::vl_workflow_global::__vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RefreshTextListTabPage(); + ~RefreshTextListTabPage(); + }; + + class RefreshTreeViewTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend struct ::vl_workflow_global::__vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::RefreshTreeViewTabPage* self; + ::vl::presentation::controls::GuiTreeView* treeView; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::presentation::controls::GuiButton* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_6; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_7; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_8; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_9; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_10; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_11; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_12; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_13; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_14; + ::vl::Ptr<::vl::presentation::controls::tree::MemoryNodeProvider> __vwsn_precompile_15; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_16; + void __vwsn_demo_RefreshTreeViewTabPage_Initialize(::demo::RefreshTreeViewTabPage* __vwsn_this_); + public: + RefreshTreeViewTabPageConstructor(); + }; + + class RefreshTreeViewTabPage : public ::vl::presentation::controls::GuiTabPage, public ::demo::RefreshTreeViewTabPageConstructor, public ::vl::reflection::Description + { + friend class ::demo::RefreshTreeViewTabPageConstructor; + friend struct ::vl_workflow_global::__vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + RefreshTreeViewTabPage(); + ~RefreshTreeViewTabPage(); + }; + class RepeatItemTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description { friend class ::vl_workflow_global::__vwsnc131_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -2668,7 +3275,7 @@ namespace demo { friend class ::demo::RepeatItemTemplateConstructor; friend class ::vl_workflow_global::__vwsnc131_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -2760,10 +3367,10 @@ namespace demo { friend class ::vl_workflow_global::__vwsnc136_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc137_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -2821,10 +3428,10 @@ namespace demo friend class ::demo::ResponsiveGroupControlConstructor; friend class ::vl_workflow_global::__vwsnc136_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc137_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -2837,10 +3444,10 @@ namespace demo { friend class ::vl_workflow_global::__vwsnc138_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc139_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -2898,10 +3505,10 @@ namespace demo friend class ::demo::ResponsiveStackControlConstructor; friend class ::vl_workflow_global::__vwsnc138_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc139_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -2957,14 +3564,14 @@ namespace demo friend class ::vl_workflow_global::__vwsnc143_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc144_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc145_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3022,14 +3629,14 @@ namespace demo friend class ::vl_workflow_global::__vwsnc143_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc144_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc145_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; - friend struct ::vl_workflow_global::__vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; + friend struct ::vl_workflow_global::__vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3041,7 +3648,7 @@ namespace demo class SharedSizeItemTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description { friend class ::vl_workflow_global::__vwsnc132_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3060,7 +3667,7 @@ namespace demo { friend class ::demo::SharedSizeItemTemplateConstructor; friend class ::vl_workflow_global::__vwsnc132_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3076,9 +3683,9 @@ namespace demo friend class ::vl_workflow_global::__vwsnc133_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc134_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc135_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; - friend struct ::vl_workflow_global::__vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; - friend struct ::vl_workflow_global::__vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3098,9 +3705,9 @@ namespace demo friend class ::vl_workflow_global::__vwsnc133_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc134_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc135_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; - friend struct ::vl_workflow_global::__vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; - friend struct ::vl_workflow_global::__vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; + friend struct ::vl_workflow_global::__vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3294,12 +3901,44 @@ namespace demo ~SubWindow(); }; + class TestWindowConstructor : public ::vl::Object, public ::vl::reflection::Description + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::demo::TestWindow* self; + ::vl::presentation::controls::GuiTab* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_1; + ::demo::RefreshTextListTabPage* __vwsn_precompile_2; + ::demo::RefreshBindableTextListTabPage* __vwsn_precompile_3; + ::demo::RefreshListViewTabPage* __vwsn_precompile_4; + ::demo::RefreshBindableListViewTabPage* __vwsn_precompile_5; + ::demo::RefreshTreeViewTabPage* __vwsn_precompile_6; + ::demo::RefreshBindableTreeViewTabPage* __vwsn_precompile_7; + ::demo::RefreshBindableDataGridTabPage* __vwsn_precompile_8; + void __vwsn_demo_TestWindow_Initialize(::demo::TestWindow* __vwsn_this_); + public: + TestWindowConstructor(); + }; + + class TestWindow : public ::vl::presentation::controls::GuiWindow, public ::demo::TestWindowConstructor, public ::vl::reflection::Description + { + friend class ::demo::TestWindowConstructor; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + TestWindow(); + ~TestWindow(); + }; + class TextBoxSubTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description { friend class ::vl_workflow_global::__vwsnc149_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc150_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3322,8 +3961,8 @@ namespace demo friend class ::demo::TextBoxSubTabPageConstructor; friend class ::vl_workflow_global::__vwsnc149_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; friend class ::vl_workflow_global::__vwsnc150_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3339,11 +3978,11 @@ namespace demo class TextBoxTabPageConstructor : public ::vl::Object, public ::vl::reflection::Description { friend class ::vl_workflow_global::__vwsnc151_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -3370,11 +4009,11 @@ namespace demo { friend class ::demo::TextBoxTabPageConstructor; friend class ::vl_workflow_global::__vwsnc151_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize__vl_reflection_description_IValueSubscription; - friend struct ::vl_workflow_global::__vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; - friend struct ::vl_workflow_global::__vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; + friend struct ::vl_workflow_global::__vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_; #ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; #endif @@ -5053,94 +5692,94 @@ Closures ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; - struct __vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + struct __vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf250_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + __vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + ::vl::Ptr<::vl::presentation::GuiImageData> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; - struct __vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + struct __vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf251_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + __vwsnf251_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + ::vl::Ptr<::vl::presentation::GuiImageData> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; - struct __vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + struct __vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf252_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + __vwsnf252_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + ::vl::reflection::description::Value operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const; }; - struct __vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + struct __vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf253_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + __vwsnf253_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; - struct __vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + struct __vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf254_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + __vwsnf254_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + ::vl::reflection::description::Value operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const; }; - struct __vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + struct __vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf255_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + __vwsnf255_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; - struct __vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_ + struct __vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::RepeatItemTemplateConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf256_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_(::demo::RepeatItemTemplateConstructor* __vwsnctorthis_0); + __vwsnf256_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::reflection::description::Value operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const; }; - struct __vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_ + struct __vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::SharedSizeItemTemplateConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf257_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_(::demo::SharedSizeItemTemplateConstructor* __vwsnctorthis_0); + __vwsnf257_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; - struct __vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_ + struct __vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::SharedSizeTextItemTemplateConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf258_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0); + __vwsnf258_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::presentation::templates::GuiGridVisualizerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; }; - struct __vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_ + struct __vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::SharedSizeTextItemTemplateConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf259_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0); + __vwsnf259_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::presentation::templates::GuiGridVisualizerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; }; struct __vwsnf25_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_ @@ -5152,96 +5791,96 @@ Closures ::vl::presentation::templates::GuiGridVisualizerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; }; - struct __vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_ + struct __vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::SharedSizeTextItemTemplateConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf260_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0); + __vwsnf260_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::presentation::templates::GuiGridVisualizerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; }; - struct __vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_ + struct __vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::ResponsiveGroupControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf261_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0); + __vwsnf261_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiGridEditorTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; + }; + + struct __vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ + { + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; + + __vwsnf262_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); + + ::vl::reflection::description::Value operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const; + }; + + struct __vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ + { + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; + + __vwsnf263_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ + { + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; + + __vwsnf264_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; - struct __vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_ + struct __vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::ResponsiveGroupControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf262_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0); + __vwsnf265_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; - struct __vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_ + struct __vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__ { - ::demo::ResponsiveGroupControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf263_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0); + __vwsnf266_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; }; - struct __vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_ + struct __vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::ResponsiveGroupControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf264_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_ - { - ::demo::ResponsiveStackControlConstructor* __vwsnthis_0; - - __vwsnf265_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0); + __vwsnf267_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; - struct __vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_ + struct __vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__ { - ::demo::ResponsiveStackControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf266_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0); + __vwsnf268_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; + }; + + struct __vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ + { + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; + + __vwsnf269_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; - struct __vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_ - { - ::demo::ResponsiveStackControlConstructor* __vwsnthis_0; - - __vwsnf267_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_ - { - ::demo::ResponsiveStackControlConstructor* __vwsnthis_0; - - __vwsnf268_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ - { - ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; - - __vwsnf269_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - struct __vwsnf26_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_ { ::demo::DataGridTabPageConstructor* __vwsnthis_0; @@ -5251,94 +5890,94 @@ Closures ::vl::presentation::templates::GuiGridVisualizerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; }; - struct __vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + struct __vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf270_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ - { - ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; - - __vwsnf271_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ - { - ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; - - __vwsnf272_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ - { - ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; - - __vwsnf273_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + __vwsnf270_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; - struct __vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + struct __vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_ { - ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf274_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + __vwsnf271_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; - struct __vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + struct __vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__ { - ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf275_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + __vwsnf272_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; }; - struct __vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + struct __vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__ { - ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + ::demo::RefreshBindableDataGridTabPageConstructor* __vwsnthis_0; - __vwsnf276_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + __vwsnf273_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize__(::demo::RefreshBindableDataGridTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::reflection::description::Value operator()(const ::vl::reflection::description::Value& value, const ::vl::reflection::description::Value& field, bool update) const; }; - struct __vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_ + struct __vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ { - ::demo::DocumentBoxSubTabPageConstructor* __vwsnthis_0; + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; - __vwsnf277_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0); + __vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::Ptr<::vl::presentation::GuiImageData> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; - struct __vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_ + struct __vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ { - ::demo::DocumentBoxSubTabPageConstructor* __vwsnthis_0; + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; - __vwsnf278_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0); + __vwsnf275_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::Ptr<::vl::presentation::GuiImageData> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; - struct __vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_ + struct __vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ { - ::demo::DocumentBoxSubTabPageConstructor* __vwsnthis_0; + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; - __vwsnf279_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0); + __vwsnf276_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ + { + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf277_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ + { + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf278_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ + { + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf279_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; struct __vwsnf27_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_ @@ -5350,67 +5989,184 @@ Closures ::vl::presentation::templates::GuiGridVisualizerTemplate* operator()(const ::vl::reflection::description::Value& __vwsn_viewModel_) const; }; - struct __vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_ + struct __vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ { - ::demo::TextBoxSubTabPageConstructor* __vwsnthis_0; + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; - __vwsnf280_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(::demo::TextBoxSubTabPageConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_ - { - ::demo::TextBoxSubTabPageConstructor* __vwsnthis_0; - - __vwsnf281_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(::demo::TextBoxSubTabPageConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ - { - ::demo::TextBoxTabPageConstructor* __vwsnthis_0; - - __vwsnf282_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + __vwsnf280_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; - struct __vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ + struct __vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ { - ::demo::TextBoxTabPageConstructor* __vwsnthis_0; + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; - __vwsnf283_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); - - void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; - }; - - struct __vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ - { - ::demo::TextBoxTabPageConstructor* __vwsnthis_0; - - __vwsnf284_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + __vwsnf281_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; - struct __vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ + struct __vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__ { - ::demo::TextBoxTabPageConstructor* __vwsnthis_0; + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; - __vwsnf285_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + __vwsnf282_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); - void operator()() const; + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; }; - struct __vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ + struct __vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ { - ::demo::TextBoxTabPageConstructor* __vwsnthis_0; + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; - __vwsnf286_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + __vwsnf283_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); - void operator()() const; + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__ + { + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf284_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; + }; + + struct __vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ + { + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf285_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ + { + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf286_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_ + { + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf287_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__ + { + ::demo::RefreshBindableListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf288_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize__(::demo::RefreshBindableListViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; + }; + + struct __vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf289_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + bool operator()(const ::vl::reflection::description::Value& __vwsn_item_, bool __vwsn_value_, bool __vwsn_update_) const; + }; + + struct __vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf290_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf291_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf292_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; + }; + + struct __vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf293_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf294_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize__(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; + }; + + struct __vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf295_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf296_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_ + { + ::demo::RefreshBindableTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf297_Demo_demo_RefreshBindableTextListTabPageConstructor___vwsn_demo_RefreshBindableTextListTabPage_Initialize_(::demo::RefreshBindableTextListTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::reflection::description::Value operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const; + }; + + struct __vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::Ptr<::vl::reflection::description::IValueEnumerable> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; struct __vwsnf29_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_ @@ -5431,6 +6187,96 @@ Closures ::vl::Ptr<::vl::presentation::GuiImageData> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; + struct __vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf300_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::Ptr<::vl::presentation::GuiImageData> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf301_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf302_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf303_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; + }; + + struct __vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf304_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf305_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize__(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& value) const; + }; + + struct __vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf306_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_ + { + ::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf307_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(::demo::RefreshBindableTreeViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_ + { + ::demo::RefreshListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf308_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_ + { + ::demo::RefreshListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf309_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + struct __vwsnf30_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_ { ::demo::DataGridTabPageConstructor* __vwsnthis_0; @@ -5440,6 +6286,96 @@ Closures ::vl::reflection::description::Value operator()(const ::vl::reflection::description::Value& __vwsn_item_, const ::vl::reflection::description::Value& __vwsn_value_, bool __vwsn_update_) const; }; + struct __vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_ + { + ::demo::RefreshListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf310_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_ + { + ::demo::RefreshListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf311_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_ + { + ::demo::RefreshListViewTabPageConstructor* __vwsnthis_0; + + __vwsnf312_Demo_demo_RefreshListViewTabPageConstructor___vwsn_demo_RefreshListViewTabPage_Initialize_(::demo::RefreshListViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_ + { + ::demo::RefreshTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf313_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(::demo::RefreshTextListTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_ + { + ::demo::RefreshTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf314_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(::demo::RefreshTextListTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_ + { + ::demo::RefreshTextListTabPageConstructor* __vwsnthis_0; + + __vwsnf315_Demo_demo_RefreshTextListTabPageConstructor___vwsn_demo_RefreshTextListTabPage_Initialize_(::demo::RefreshTextListTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_ + { + ::demo::RefreshTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf316_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_(::demo::RefreshTreeViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_ + { + ::demo::RefreshTreeViewTabPageConstructor* __vwsnthis_0; + + __vwsnf317_Demo_demo_RefreshTreeViewTabPageConstructor___vwsn_demo_RefreshTreeViewTabPage_Initialize_(::demo::RefreshTreeViewTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + { + ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + + __vwsnf318_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + { + ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + + __vwsnf319_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + struct __vwsnf31_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_ { ::demo::DataGridTabPageConstructor* __vwsnthis_0; @@ -5449,6 +6385,96 @@ Closures ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; + struct __vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + { + ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + + __vwsnf320_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + { + ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + + __vwsnf321_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + { + ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + + __vwsnf322_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_ + { + ::demo::EnglishNumbersControllerConstructor* __vwsnthis_0; + + __vwsnf323_Demo_demo_EnglishNumbersControllerConstructor___vwsn_demo_EnglishNumbersController_Initialize_(::demo::EnglishNumbersControllerConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_ + { + ::demo::RepeatItemTemplateConstructor* __vwsnthis_0; + + __vwsnf324_Demo_demo_RepeatItemTemplateConstructor___vwsn_demo_RepeatItemTemplate_Initialize_(::demo::RepeatItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_ + { + ::demo::SharedSizeItemTemplateConstructor* __vwsnthis_0; + + __vwsnf325_Demo_demo_SharedSizeItemTemplateConstructor___vwsn_demo_SharedSizeItemTemplate_Initialize_(::demo::SharedSizeItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_ + { + ::demo::SharedSizeTextItemTemplateConstructor* __vwsnthis_0; + + __vwsnf326_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_ + { + ::demo::SharedSizeTextItemTemplateConstructor* __vwsnthis_0; + + __vwsnf327_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_ + { + ::demo::SharedSizeTextItemTemplateConstructor* __vwsnthis_0; + + __vwsnf328_Demo_demo_SharedSizeTextItemTemplateConstructor___vwsn_demo_SharedSizeTextItemTemplate_Initialize_(::demo::SharedSizeTextItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_ + { + ::demo::ResponsiveGroupControlConstructor* __vwsnthis_0; + + __vwsnf329_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + struct __vwsnf32_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_ { ::demo::DataGridTabPageConstructor* __vwsnthis_0; @@ -5458,6 +6484,96 @@ Closures void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; + struct __vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_ + { + ::demo::ResponsiveGroupControlConstructor* __vwsnthis_0; + + __vwsnf330_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_ + { + ::demo::ResponsiveGroupControlConstructor* __vwsnthis_0; + + __vwsnf331_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_ + { + ::demo::ResponsiveGroupControlConstructor* __vwsnthis_0; + + __vwsnf332_Demo_demo_ResponsiveGroupControlConstructor___vwsn_demo_ResponsiveGroupControl_Initialize_(::demo::ResponsiveGroupControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_ + { + ::demo::ResponsiveStackControlConstructor* __vwsnthis_0; + + __vwsnf333_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_ + { + ::demo::ResponsiveStackControlConstructor* __vwsnthis_0; + + __vwsnf334_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_ + { + ::demo::ResponsiveStackControlConstructor* __vwsnthis_0; + + __vwsnf335_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_ + { + ::demo::ResponsiveStackControlConstructor* __vwsnthis_0; + + __vwsnf336_Demo_demo_ResponsiveStackControlConstructor___vwsn_demo_ResponsiveStackControl_Initialize_(::demo::ResponsiveStackControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + { + ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + + __vwsnf337_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + { + ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + + __vwsnf338_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + { + ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + + __vwsnf339_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + struct __vwsnf33_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_ { ::demo::DataGridTabPageConstructor* __vwsnthis_0; @@ -5467,6 +6583,96 @@ Closures void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; }; + struct __vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + { + ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + + __vwsnf340_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + { + ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + + __vwsnf341_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + { + ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + + __vwsnf342_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + { + ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + + __vwsnf343_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_ + { + ::demo::ResponsiveViewControlConstructor* __vwsnthis_0; + + __vwsnf344_Demo_demo_ResponsiveViewControlConstructor___vwsn_demo_ResponsiveViewControl_Initialize_(::demo::ResponsiveViewControlConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_ + { + ::demo::DocumentBoxSubTabPageConstructor* __vwsnthis_0; + + __vwsnf345_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_ + { + ::demo::DocumentBoxSubTabPageConstructor* __vwsnthis_0; + + __vwsnf346_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_ + { + ::demo::DocumentBoxSubTabPageConstructor* __vwsnthis_0; + + __vwsnf347_Demo_demo_DocumentBoxSubTabPageConstructor___vwsn_demo_DocumentBoxSubTabPage_Initialize_(::demo::DocumentBoxSubTabPageConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_ + { + ::demo::TextBoxSubTabPageConstructor* __vwsnthis_0; + + __vwsnf348_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(::demo::TextBoxSubTabPageConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_ + { + ::demo::TextBoxSubTabPageConstructor* __vwsnthis_0; + + __vwsnf349_Demo_demo_TextBoxSubTabPageConstructor___vwsn_demo_TextBoxSubTabPage_Initialize_(::demo::TextBoxSubTabPageConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + struct __vwsnf34_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_ { ::demo::ListViewTabPageConstructor* __vwsnthis_0; @@ -5476,6 +6682,51 @@ Closures ::vl::Ptr<::vl::presentation::GuiImageData> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; }; + struct __vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ + { + ::demo::TextBoxTabPageConstructor* __vwsnthis_0; + + __vwsnf350_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ + { + ::demo::TextBoxTabPageConstructor* __vwsnthis_0; + + __vwsnf351_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ + { + ::demo::TextBoxTabPageConstructor* __vwsnthis_0; + + __vwsnf352_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + struct __vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ + { + ::demo::TextBoxTabPageConstructor* __vwsnthis_0; + + __vwsnf353_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + + void operator()() const; + }; + + struct __vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_ + { + ::demo::TextBoxTabPageConstructor* __vwsnthis_0; + + __vwsnf354_Demo_demo_TextBoxTabPageConstructor___vwsn_demo_TextBoxTabPage_Initialize_(::demo::TextBoxTabPageConstructor* __vwsnctorthis_0); + + void operator()() const; + }; + struct __vwsnf35_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_ { ::demo::ListViewTabPageConstructor* __vwsnthis_0; diff --git a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.cpp b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.cpp index 0be72f05..839a5c3e 100644 --- a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.cpp +++ b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.cpp @@ -98,6 +98,21 @@ namespace vl IMPL_CPP_TYPE_INFO(demo::MyDataItem) IMPL_CPP_TYPE_INFO(demo::MyGender) IMPL_CPP_TYPE_INFO(demo::MyTextItem) + IMPL_CPP_TYPE_INFO(demo::RefreshBindableDataGridTabPage) + IMPL_CPP_TYPE_INFO(demo::RefreshBindableDataGridTabPageConstructor) + IMPL_CPP_TYPE_INFO(demo::RefreshBindableListViewTabPage) + IMPL_CPP_TYPE_INFO(demo::RefreshBindableListViewTabPageConstructor) + IMPL_CPP_TYPE_INFO(demo::RefreshBindableTextListTabPage) + IMPL_CPP_TYPE_INFO(demo::RefreshBindableTextListTabPageConstructor) + IMPL_CPP_TYPE_INFO(demo::RefreshBindableTreeViewTabPage) + IMPL_CPP_TYPE_INFO(demo::RefreshBindableTreeViewTabPageConstructor) + IMPL_CPP_TYPE_INFO(demo::RefreshItem) + IMPL_CPP_TYPE_INFO(demo::RefreshListViewTabPage) + IMPL_CPP_TYPE_INFO(demo::RefreshListViewTabPageConstructor) + IMPL_CPP_TYPE_INFO(demo::RefreshTextListTabPage) + IMPL_CPP_TYPE_INFO(demo::RefreshTextListTabPageConstructor) + IMPL_CPP_TYPE_INFO(demo::RefreshTreeViewTabPage) + IMPL_CPP_TYPE_INFO(demo::RefreshTreeViewTabPageConstructor) IMPL_CPP_TYPE_INFO(demo::RepeatItemTemplate) IMPL_CPP_TYPE_INFO(demo::RepeatItemTemplateConstructor) IMPL_CPP_TYPE_INFO(demo::RepeatTabPage) @@ -121,6 +136,8 @@ namespace vl IMPL_CPP_TYPE_INFO(demo::StyleItemTemplateConstructor) IMPL_CPP_TYPE_INFO(demo::SubWindow) IMPL_CPP_TYPE_INFO(demo::SubWindowConstructor) + IMPL_CPP_TYPE_INFO(demo::TestWindow) + IMPL_CPP_TYPE_INFO(demo::TestWindowConstructor) IMPL_CPP_TYPE_INFO(demo::TextBoxSubTabPage) IMPL_CPP_TYPE_INFO(demo::TextBoxSubTabPageConstructor) IMPL_CPP_TYPE_INFO(demo::TextBoxTabPage) @@ -1388,7 +1405,17 @@ namespace vl CLASS_MEMBER_FIELD(__vwsn_precompile_4) CLASS_MEMBER_FIELD(__vwsn_precompile_40) CLASS_MEMBER_FIELD(__vwsn_precompile_41) + CLASS_MEMBER_FIELD(__vwsn_precompile_42) + CLASS_MEMBER_FIELD(__vwsn_precompile_43) + CLASS_MEMBER_FIELD(__vwsn_precompile_44) + CLASS_MEMBER_FIELD(__vwsn_precompile_45) + CLASS_MEMBER_FIELD(__vwsn_precompile_46) + CLASS_MEMBER_FIELD(__vwsn_precompile_47) + CLASS_MEMBER_FIELD(__vwsn_precompile_48) + CLASS_MEMBER_FIELD(__vwsn_precompile_49) CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_50) + CLASS_MEMBER_FIELD(__vwsn_precompile_51) CLASS_MEMBER_FIELD(__vwsn_precompile_6) CLASS_MEMBER_FIELD(__vwsn_precompile_7) CLASS_MEMBER_FIELD(__vwsn_precompile_8) @@ -1465,6 +1492,297 @@ namespace vl CLASS_MEMBER_PROPERTY(Name, GetName, SetName) END_CLASS_MEMBER(::demo::MyTextItem) + BEGIN_CLASS_MEMBER(::demo::RefreshBindableDataGridTabPage) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) + CLASS_MEMBER_BASE(::demo::RefreshBindableDataGridTabPageConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshBindableDataGridTabPage*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) + CLASS_MEMBER_FIELD(items) + END_CLASS_MEMBER(::demo::RefreshBindableDataGridTabPage) + + BEGIN_CLASS_MEMBER(::demo::RefreshBindableDataGridTabPageConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshBindableDataGridTabPageConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_RefreshBindableDataGridTabPage_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_11) + CLASS_MEMBER_FIELD(__vwsn_precompile_12) + CLASS_MEMBER_FIELD(__vwsn_precompile_13) + CLASS_MEMBER_FIELD(__vwsn_precompile_14) + CLASS_MEMBER_FIELD(__vwsn_precompile_15) + CLASS_MEMBER_FIELD(__vwsn_precompile_16) + CLASS_MEMBER_FIELD(__vwsn_precompile_17) + CLASS_MEMBER_FIELD(__vwsn_precompile_18) + CLASS_MEMBER_FIELD(__vwsn_precompile_19) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_20) + CLASS_MEMBER_FIELD(__vwsn_precompile_21) + CLASS_MEMBER_FIELD(__vwsn_precompile_22) + CLASS_MEMBER_FIELD(__vwsn_precompile_23) + CLASS_MEMBER_FIELD(__vwsn_precompile_24) + CLASS_MEMBER_FIELD(__vwsn_precompile_25) + CLASS_MEMBER_FIELD(__vwsn_precompile_26) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(comboView) + CLASS_MEMBER_FIELD(dataGrid) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::demo::RefreshBindableDataGridTabPageConstructor) + + BEGIN_CLASS_MEMBER(::demo::RefreshBindableListViewTabPage) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) + CLASS_MEMBER_BASE(::demo::RefreshBindableListViewTabPageConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshBindableListViewTabPage*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) + CLASS_MEMBER_FIELD(items) + END_CLASS_MEMBER(::demo::RefreshBindableListViewTabPage) + + BEGIN_CLASS_MEMBER(::demo::RefreshBindableListViewTabPageConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshBindableListViewTabPageConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_RefreshBindableListViewTabPage_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_11) + CLASS_MEMBER_FIELD(__vwsn_precompile_12) + CLASS_MEMBER_FIELD(__vwsn_precompile_13) + CLASS_MEMBER_FIELD(__vwsn_precompile_14) + CLASS_MEMBER_FIELD(__vwsn_precompile_15) + CLASS_MEMBER_FIELD(__vwsn_precompile_16) + CLASS_MEMBER_FIELD(__vwsn_precompile_17) + CLASS_MEMBER_FIELD(__vwsn_precompile_18) + CLASS_MEMBER_FIELD(__vwsn_precompile_19) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_20) + CLASS_MEMBER_FIELD(__vwsn_precompile_21) + CLASS_MEMBER_FIELD(__vwsn_precompile_22) + CLASS_MEMBER_FIELD(__vwsn_precompile_23) + CLASS_MEMBER_FIELD(__vwsn_precompile_24) + CLASS_MEMBER_FIELD(__vwsn_precompile_25) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(comboView) + CLASS_MEMBER_FIELD(listView) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::demo::RefreshBindableListViewTabPageConstructor) + + BEGIN_CLASS_MEMBER(::demo::RefreshBindableTextListTabPage) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) + CLASS_MEMBER_BASE(::demo::RefreshBindableTextListTabPageConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshBindableTextListTabPage*(), NO_PARAMETER) + CLASS_MEMBER_FIELD(items) + END_CLASS_MEMBER(::demo::RefreshBindableTextListTabPage) + + BEGIN_CLASS_MEMBER(::demo::RefreshBindableTextListTabPageConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshBindableTextListTabPageConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_RefreshBindableTextListTabPage_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_11) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(buttonRead) + CLASS_MEMBER_FIELD(self) + CLASS_MEMBER_FIELD(textList) + END_CLASS_MEMBER(::demo::RefreshBindableTextListTabPageConstructor) + + BEGIN_CLASS_MEMBER(::demo::RefreshBindableTreeViewTabPage) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) + CLASS_MEMBER_BASE(::demo::RefreshBindableTreeViewTabPageConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshBindableTreeViewTabPage*(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER) + CLASS_MEMBER_FIELD(rootItem) + END_CLASS_MEMBER(::demo::RefreshBindableTreeViewTabPage) + + BEGIN_CLASS_MEMBER(::demo::RefreshBindableTreeViewTabPageConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshBindableTreeViewTabPageConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_RefreshBindableTreeViewTabPage_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(self) + CLASS_MEMBER_FIELD(treeView) + END_CLASS_MEMBER(::demo::RefreshBindableTreeViewTabPageConstructor) + + BEGIN_CLASS_MEMBER(::demo::RefreshItem) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshItem>(const ::vl::WString&, const ::vl::WString&), { L"name" _ L"title" }) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshItem>(const ::vl::WString&, const ::vl::WString&, const ::vl::collections::LazyList<::vl::Ptr<::demo::RefreshItem>>&), { L"name" _ L"title" _ L"children" }) + CLASS_MEMBER_METHOD(GetChildren, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetDoNotUse, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetLargeImage, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetName, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetSelected, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetSmallImage, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetSub1, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetSub2, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetSub3, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetTitle, NO_PARAMETER) + CLASS_MEMBER_METHOD(SetChildren, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetDoNotUse, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetLargeImage, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetName, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetSelected, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetSmallImage, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetSub1, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetSub2, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetSub3, { L"__vwsn_value_" }) + CLASS_MEMBER_METHOD(SetTitle, { L"__vwsn_value_" }) + CLASS_MEMBER_FIELD(__vwsn_prop_Children) + CLASS_MEMBER_FIELD(__vwsn_prop_DoNotUse) + CLASS_MEMBER_FIELD(__vwsn_prop_LargeImage) + CLASS_MEMBER_FIELD(__vwsn_prop_Name) + CLASS_MEMBER_FIELD(__vwsn_prop_Selected) + CLASS_MEMBER_FIELD(__vwsn_prop_SmallImage) + CLASS_MEMBER_FIELD(__vwsn_prop_Sub1) + CLASS_MEMBER_FIELD(__vwsn_prop_Sub2) + CLASS_MEMBER_FIELD(__vwsn_prop_Sub3) + CLASS_MEMBER_FIELD(__vwsn_prop_Title) + CLASS_MEMBER_PROPERTY_READONLY(Children, GetChildren) + CLASS_MEMBER_PROPERTY(DoNotUse, GetDoNotUse, SetDoNotUse) + CLASS_MEMBER_PROPERTY(LargeImage, GetLargeImage, SetLargeImage) + CLASS_MEMBER_PROPERTY(Name, GetName, SetName) + CLASS_MEMBER_PROPERTY(Selected, GetSelected, SetSelected) + CLASS_MEMBER_PROPERTY(SmallImage, GetSmallImage, SetSmallImage) + CLASS_MEMBER_PROPERTY(Sub1, GetSub1, SetSub1) + CLASS_MEMBER_PROPERTY(Sub2, GetSub2, SetSub2) + CLASS_MEMBER_PROPERTY(Sub3, GetSub3, SetSub3) + CLASS_MEMBER_PROPERTY(Title, GetTitle, SetTitle) + END_CLASS_MEMBER(::demo::RefreshItem) + + BEGIN_CLASS_MEMBER(::demo::RefreshListViewTabPage) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) + CLASS_MEMBER_BASE(::demo::RefreshListViewTabPageConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshListViewTabPage*(), NO_PARAMETER) + END_CLASS_MEMBER(::demo::RefreshListViewTabPage) + + BEGIN_CLASS_MEMBER(::demo::RefreshListViewTabPageConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshListViewTabPageConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_RefreshListViewTabPage_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_11) + CLASS_MEMBER_FIELD(__vwsn_precompile_12) + CLASS_MEMBER_FIELD(__vwsn_precompile_13) + CLASS_MEMBER_FIELD(__vwsn_precompile_14) + CLASS_MEMBER_FIELD(__vwsn_precompile_15) + CLASS_MEMBER_FIELD(__vwsn_precompile_16) + CLASS_MEMBER_FIELD(__vwsn_precompile_17) + CLASS_MEMBER_FIELD(__vwsn_precompile_18) + CLASS_MEMBER_FIELD(__vwsn_precompile_19) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_20) + CLASS_MEMBER_FIELD(__vwsn_precompile_21) + CLASS_MEMBER_FIELD(__vwsn_precompile_22) + CLASS_MEMBER_FIELD(__vwsn_precompile_23) + CLASS_MEMBER_FIELD(__vwsn_precompile_24) + CLASS_MEMBER_FIELD(__vwsn_precompile_25) + CLASS_MEMBER_FIELD(__vwsn_precompile_26) + CLASS_MEMBER_FIELD(__vwsn_precompile_27) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(comboView) + CLASS_MEMBER_FIELD(listView) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::demo::RefreshListViewTabPageConstructor) + + BEGIN_CLASS_MEMBER(::demo::RefreshTextListTabPage) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) + CLASS_MEMBER_BASE(::demo::RefreshTextListTabPageConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshTextListTabPage*(), NO_PARAMETER) + END_CLASS_MEMBER(::demo::RefreshTextListTabPage) + + BEGIN_CLASS_MEMBER(::demo::RefreshTextListTabPageConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshTextListTabPageConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_RefreshTextListTabPage_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_11) + CLASS_MEMBER_FIELD(__vwsn_precompile_12) + CLASS_MEMBER_FIELD(__vwsn_precompile_13) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(buttonRead) + CLASS_MEMBER_FIELD(self) + CLASS_MEMBER_FIELD(textList) + END_CLASS_MEMBER(::demo::RefreshTextListTabPageConstructor) + + BEGIN_CLASS_MEMBER(::demo::RefreshTreeViewTabPage) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) + CLASS_MEMBER_BASE(::demo::RefreshTreeViewTabPageConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::RefreshTreeViewTabPage*(), NO_PARAMETER) + END_CLASS_MEMBER(::demo::RefreshTreeViewTabPage) + + BEGIN_CLASS_MEMBER(::demo::RefreshTreeViewTabPageConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::RefreshTreeViewTabPageConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_RefreshTreeViewTabPage_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_11) + CLASS_MEMBER_FIELD(__vwsn_precompile_12) + CLASS_MEMBER_FIELD(__vwsn_precompile_13) + CLASS_MEMBER_FIELD(__vwsn_precompile_14) + CLASS_MEMBER_FIELD(__vwsn_precompile_15) + CLASS_MEMBER_FIELD(__vwsn_precompile_16) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(self) + CLASS_MEMBER_FIELD(treeView) + END_CLASS_MEMBER(::demo::RefreshTreeViewTabPageConstructor) + BEGIN_CLASS_MEMBER(::demo::RepeatItemTemplate) CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) CLASS_MEMBER_BASE(::demo::RepeatItemTemplateConstructor) @@ -1848,6 +2166,28 @@ namespace vl CLASS_MEMBER_FIELD(self) END_CLASS_MEMBER(::demo::SubWindowConstructor) + BEGIN_CLASS_MEMBER(::demo::TestWindow) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) + CLASS_MEMBER_BASE(::demo::TestWindowConstructor) + CLASS_MEMBER_CONSTRUCTOR(::demo::TestWindow*(), NO_PARAMETER) + END_CLASS_MEMBER(::demo::TestWindow) + + BEGIN_CLASS_MEMBER(::demo::TestWindowConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::TestWindowConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_demo_TestWindow_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::demo::TestWindowConstructor) + BEGIN_CLASS_MEMBER(::demo::TextBoxSubTabPage) CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage) CLASS_MEMBER_BASE(::demo::TextBoxSubTabPageConstructor) @@ -2122,6 +2462,21 @@ namespace vl ADD_TYPE_INFO(::demo::MyDataItem) ADD_TYPE_INFO(::demo::MyGender) ADD_TYPE_INFO(::demo::MyTextItem) + ADD_TYPE_INFO(::demo::RefreshBindableDataGridTabPage) + ADD_TYPE_INFO(::demo::RefreshBindableDataGridTabPageConstructor) + ADD_TYPE_INFO(::demo::RefreshBindableListViewTabPage) + ADD_TYPE_INFO(::demo::RefreshBindableListViewTabPageConstructor) + ADD_TYPE_INFO(::demo::RefreshBindableTextListTabPage) + ADD_TYPE_INFO(::demo::RefreshBindableTextListTabPageConstructor) + ADD_TYPE_INFO(::demo::RefreshBindableTreeViewTabPage) + ADD_TYPE_INFO(::demo::RefreshBindableTreeViewTabPageConstructor) + ADD_TYPE_INFO(::demo::RefreshItem) + ADD_TYPE_INFO(::demo::RefreshListViewTabPage) + ADD_TYPE_INFO(::demo::RefreshListViewTabPageConstructor) + ADD_TYPE_INFO(::demo::RefreshTextListTabPage) + ADD_TYPE_INFO(::demo::RefreshTextListTabPageConstructor) + ADD_TYPE_INFO(::demo::RefreshTreeViewTabPage) + ADD_TYPE_INFO(::demo::RefreshTreeViewTabPageConstructor) ADD_TYPE_INFO(::demo::RepeatItemTemplate) ADD_TYPE_INFO(::demo::RepeatItemTemplateConstructor) ADD_TYPE_INFO(::demo::RepeatTabPage) @@ -2145,6 +2500,8 @@ namespace vl ADD_TYPE_INFO(::demo::StyleItemTemplateConstructor) ADD_TYPE_INFO(::demo::SubWindow) ADD_TYPE_INFO(::demo::SubWindowConstructor) + ADD_TYPE_INFO(::demo::TestWindow) + ADD_TYPE_INFO(::demo::TestWindowConstructor) ADD_TYPE_INFO(::demo::TextBoxSubTabPage) ADD_TYPE_INFO(::demo::TextBoxSubTabPageConstructor) ADD_TYPE_INFO(::demo::TextBoxTabPage) diff --git a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.h b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.h index 43ee55c5..5523fd3d 100644 --- a/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.h +++ b/Tutorial/GacUI_ControlTemplate/BlackSkin/UI/FullControlTest/Source/DemoReflection.h @@ -101,6 +101,21 @@ namespace vl DECL_TYPE_INFO(::demo::MyDataItem) DECL_TYPE_INFO(::demo::MyGender) DECL_TYPE_INFO(::demo::MyTextItem) + DECL_TYPE_INFO(::demo::RefreshBindableDataGridTabPage) + DECL_TYPE_INFO(::demo::RefreshBindableDataGridTabPageConstructor) + DECL_TYPE_INFO(::demo::RefreshBindableListViewTabPage) + DECL_TYPE_INFO(::demo::RefreshBindableListViewTabPageConstructor) + DECL_TYPE_INFO(::demo::RefreshBindableTextListTabPage) + DECL_TYPE_INFO(::demo::RefreshBindableTextListTabPageConstructor) + DECL_TYPE_INFO(::demo::RefreshBindableTreeViewTabPage) + DECL_TYPE_INFO(::demo::RefreshBindableTreeViewTabPageConstructor) + DECL_TYPE_INFO(::demo::RefreshItem) + DECL_TYPE_INFO(::demo::RefreshListViewTabPage) + DECL_TYPE_INFO(::demo::RefreshListViewTabPageConstructor) + DECL_TYPE_INFO(::demo::RefreshTextListTabPage) + DECL_TYPE_INFO(::demo::RefreshTextListTabPageConstructor) + DECL_TYPE_INFO(::demo::RefreshTreeViewTabPage) + DECL_TYPE_INFO(::demo::RefreshTreeViewTabPageConstructor) DECL_TYPE_INFO(::demo::RepeatItemTemplate) DECL_TYPE_INFO(::demo::RepeatItemTemplateConstructor) DECL_TYPE_INFO(::demo::RepeatTabPage) @@ -124,6 +139,8 @@ namespace vl DECL_TYPE_INFO(::demo::StyleItemTemplateConstructor) DECL_TYPE_INFO(::demo::SubWindow) DECL_TYPE_INFO(::demo::SubWindowConstructor) + DECL_TYPE_INFO(::demo::TestWindow) + DECL_TYPE_INFO(::demo::TestWindowConstructor) DECL_TYPE_INFO(::demo::TextBoxSubTabPage) DECL_TYPE_INFO(::demo::TextBoxSubTabPageConstructor) DECL_TYPE_INFO(::demo::TextBoxTabPage) diff --git a/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin b/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin index 57e78ccb81c33185c60a97c88a963a721fdecd09..f19022c047095dc79a3cbd073f1ce3d12b271a53 100644 GIT binary patch delta 398 zcmexzgZ2My)(wh`j3Sd2TZK29GOA8tG~FCMwUcG?k*PxUA*sbB;hA|U`Q<7M5CEc6 zQgidItb$V0ic*U+oPg4aNja%5i6x2dMVTofiAe#8>8S+O`(zfEgk`3d<5ORcY(YqB zMF~g~J`E`9i&9gOERcbE07RpB0L>xD>TFRIqB#IrA*wp4#hdTWe8wm*47C?TLxT*- T7sZnUnItAL@oYXnd+7xL*VK1b delta 41 zcmV+^0M`Hi+XeL41+XCj0TYuUg%h(i0VR|HEwfvdi3GDao8JMGD1{8OTAiiPR@@M@ diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 index 6002ddddd2cfd121627377bf414ce33ae100a9a6..9a9b30b2e83b634714cc4c582a4523d446d11e75 100644 GIT binary patch delta 784 zcmYjOOKTHR812nWCihOFowksf)=;Nu38C1Bx(Ecc)rEB-X+db3W|GMiQw+38Ahl9K zt)P`6HQ-qYZn77Yf(w@_cHu%=+;!nkC{;JU@byhH#SVOrIp==w-7U7e#WqtCW|R=t zMuS9e_z7StcH}MVJ~MO zU(k@qnTXgNdwC9@WiT19EgfZxBQv{-{Q`%kaN3v#)zS{J>zOKSLiZg55sIx-zK-m< zCMIT0cfU-RM!Z|cB5~_T%{mRbLeh$WD;jpFX4x{ZOkKJDsKV911KyBr z*tF6V#B*u<$Y>a_HEQY_`J>)AoYsCOuhTKcb0f_ptut#Fp(4F=tuyaf8bWrJ#GsMQ z1Dsmjut!K&bGn<4#qq3N$1i&hFDar-Yq(Ftt`)Abc6=&K;BMZacX3o`tU56VHJ&>r P#%W;_gbkDbpG*D&fSTba delta 746 zcmY*WO=uHA6wYL`o7vqaokr-c8j_9m5TvOwg;oOA=s|LjAPA{#cay9%N~BGc6s6dM zcn}0J=yz}NQapu%H|aqo2wtkk7QB0@h2HGJ)|X__I*0dW-rx7WZ?-#ZyTdjL5>^b3 z9m&FDsfdDn^7Npuf4aW8++3t`9RG;<^#@M)*|k()DhAspc-!+@=PmobWIA9LjnEZ}bs7 z)#Fn7$dCQ7@$S3+`#S70$2Hf)uETLKBM^uPOga{#WdXl!G7TSW19h9@`OJNk9jYi< z&}{Kv<_Wzn5cz0{qve>$x-jlvE1{1wnPxo2|og4TvEAWsg^uep$_g`R($+%Q9NW+{H?-87! z$`&nfo`7PvIW|ja62ZbinM5ev@?!mEyFVRsg_`tmLp?f$W05d^mLI^RCF>QAXSTo# u67*%Ig7u)lVdWzB2(REKu}Aq$BAe?GqPc|Kb}jnpoI?Urc4zkZX4yZlm)S)C diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 index 8683bd410391f345cdaa8518ada0139a11a7f442..986367c544da1c9c82ec39d93f5fc465982497ff 100644 GIT binary patch delta 746 zcmZ`$O=uHQ5YF4~Zr*N^W`iY(8sf$x1W}u&XeClxFGZ0CiV#VOoXT z*!6zy;daEttw@fI(Y^1sP3e5@HvMaP~*VqqSCL>ieo$77r0At^pt$fIos4mhj^_gv8SAFLFf z(NxLG;2!yMC@K^MmE(maXoB14u}Kc^)&tJPe!s0@lIm1Fg)IHejxOV@J>q#G*J)BW zFh<;MW=-+cu+4Z?h@ISq|GqkU~7d=bRKkq z3d(SYuO|`aK|~N_;x2+-qz5O69*21GB|| zChn;{SQ+WY7x^73a)d|9L3~rPC97-ui(_-4IUmiH%cmNR*(j`=Nh^+>mfM)QfW7J- z{8sXKuJ&V0J&ez40oT<*{8Z0EXdI^CIH%Q^iIRV>0FyDthnWIHFHruS_mOY$KDeR4yphERvfIWePPgj} z6OfG(`4MA~S;(gMk>50OcIVm-J&w(pYY{GKyVye8U&YO|gT-{74O5nvwj_*ey|2Ee zkBsSBBB~2Te*n3vfaKX&3OE+&>`xv?o$T&}fD(wE`t^h$xkdjZ^vU9XPY+>zQs75u zBS-vY-$rI?97lI*jwRavaH;^;qeFd%^l*4&v8J`a#){8T_HwvGb)C#5E0WHqUP#Zu z{qy)mN*@sAhJU%8Z_^!?!f4QoCm9>F#A(p(WnW;3c>AY0-UJtEj{~!MEU9BHHLO_z uo7HJzSHl6U(x&^hXShX#N?1Tp