diff --git a/Import/GacUI.cpp b/Import/GacUI.cpp index 4ac33bd6..b5a3fb64 100644 --- a/Import/GacUI.cpp +++ b/Import/GacUI.cpp @@ -4542,37 +4542,62 @@ namespace vl GuiBindableTextList::ItemSource ***********************************************************************/ - GuiBindableTextList::ItemSource::ItemSource(Ptr _itemSource) + GuiBindableTextList::ItemSource::ItemSource() { - if (auto ol = _itemSource.Cast()) - { - itemSource = ol; - itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) - { - InvokeOnItemModified(start, oldCount, newCount); - }); - } - else if (auto rl = _itemSource.Cast()) - { - itemSource = rl; - } - else - { - itemSource = IValueList::Create(GetLazyList(_itemSource)); - } } GuiBindableTextList::ItemSource::~ItemSource() { + SetItemSource(nullptr); + } + + Ptr GuiBindableTextList::ItemSource::GetItemSource() + { + return itemSource; + } + + void GuiBindableTextList::ItemSource::SetItemSource(Ptr _itemSource) + { + vint oldCount = 0; + if (itemSource) + { + oldCount = itemSource->GetCount(); + } if (itemChangedEventHandler) { auto ol = itemSource.Cast(); ol->ItemChanged.Remove(itemChangedEventHandler); } + + itemSource = nullptr; + itemChangedEventHandler = nullptr; + + if (_itemSource) + { + if (auto ol = _itemSource.Cast()) + { + itemSource = ol; + itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) + { + InvokeOnItemModified(start, oldCount, newCount); + }); + } + else if (auto rl = _itemSource.Cast()) + { + itemSource = rl; + } + else + { + itemSource = IValueList::Create(GetLazyList(_itemSource)); + } + } + + InvokeOnItemModified(0, oldCount, itemSource ? itemSource->GetCount() : 0); } description::Value GuiBindableTextList::ItemSource::Get(vint index) { + if (!itemSource) return Value(); return itemSource->Get(index); } @@ -4585,6 +4610,7 @@ GuiBindableTextList::ItemSource vint GuiBindableTextList::ItemSource::Count() { + if (!itemSource) return 0; return itemSource->GetCount(); } @@ -4616,9 +4642,12 @@ GuiBindableTextList::ItemSource description::Value GuiBindableTextList::ItemSource::GetBindingValue(vint itemIndex) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + if (itemSource) { - return itemSource->Get(itemIndex); + if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + { + return itemSource->Get(itemIndex); + } } return Value(); } @@ -4632,6 +4661,7 @@ GuiBindableTextList::ItemSource bool GuiBindableTextList::ItemSource::ContainsPrimaryText(vint itemIndex) { + if (!itemSource) return false; return 0 <= itemIndex && itemIndex < itemSource->GetCount(); } @@ -4639,21 +4669,27 @@ GuiBindableTextList::ItemSource WString GuiBindableTextList::ItemSource::GetText(vint itemIndex) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + if (itemSource) { - return ReadProperty(itemSource->Get(itemIndex), textProperty).GetText(); + if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + { + return ReadProperty(itemSource->Get(itemIndex), textProperty).GetText(); + } } return L""; } bool GuiBindableTextList::ItemSource::GetChecked(vint itemIndex) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + if (itemSource) { - auto value = ReadProperty(itemSource->Get(itemIndex), checkedProperty); - if (value.GetTypeDescriptor() == description::GetTypeDescriptor()) + if (0 <= itemIndex && itemIndex < itemSource->GetCount()) { - return UnboxValue(value); + auto value = ReadProperty(itemSource->Get(itemIndex), checkedProperty); + if (value.GetTypeDescriptor() == description::GetTypeDescriptor()) + { + return UnboxValue(value); + } } } return false; @@ -4661,10 +4697,13 @@ GuiBindableTextList::ItemSource void GuiBindableTextList::ItemSource::SetCheckedSilently(vint itemIndex, bool value) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + if (itemSource) { - auto thisValue = itemSource->Get(itemIndex); - WriteProperty(thisValue, checkedProperty, BoxValue(value)); + if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + { + auto thisValue = itemSource->Get(itemIndex); + WriteProperty(thisValue, checkedProperty, BoxValue(value)); + } } } @@ -4672,8 +4711,8 @@ GuiBindableTextList::ItemSource GuiBindableTextList ***********************************************************************/ - GuiBindableTextList::GuiBindableTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory, Ptr _itemSource) - :GuiVirtualTextList(_styleProvider, _bulletFactory, new ItemSource(_itemSource)) + GuiBindableTextList::GuiBindableTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory) + :GuiVirtualTextList(_styleProvider, _bulletFactory, new ItemSource) { itemSource = dynamic_cast(GetItemProvider()); @@ -4685,6 +4724,16 @@ GuiBindableTextList { } + Ptr GuiBindableTextList::GetItemSource() + { + return itemSource->GetItemSource(); + } + + void GuiBindableTextList::SetItemSource(Ptr _itemSource) + { + itemSource->SetItemSource(_itemSource); + } + const WString& GuiBindableTextList::GetTextProperty() { return itemSource->textProperty; @@ -4766,40 +4815,64 @@ GuiBindableListView::ListViewColumns GuiBindableListView::ItemSource ***********************************************************************/ - GuiBindableListView::ItemSource::ItemSource(Ptr _itemSource) + GuiBindableListView::ItemSource::ItemSource() { - if (auto ol = _itemSource.Cast()) - { - itemSource = ol; - itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) - { - InvokeOnItemModified(start, oldCount, newCount); - }); - } - else if (auto rl = _itemSource.Cast()) - { - itemSource = rl; - } - else - { - itemSource = IValueList::Create(GetLazyList(_itemSource)); - } - columns.itemProvider = this; dataColumns.itemProvider = this; } GuiBindableListView::ItemSource::~ItemSource() { + SetItemSource(nullptr); + } + + Ptr GuiBindableListView::ItemSource::GetItemSource() + { + return itemSource; + } + + void GuiBindableListView::ItemSource::SetItemSource(Ptr _itemSource) + { + vint oldCount = 0; + if (itemSource) + { + oldCount = itemSource->GetCount(); + } if (itemChangedEventHandler) { auto ol = itemSource.Cast(); ol->ItemChanged.Remove(itemChangedEventHandler); } + + itemSource = nullptr; + itemChangedEventHandler = nullptr; + + if (_itemSource) + { + if (auto ol = _itemSource.Cast()) + { + itemSource = ol; + itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) + { + InvokeOnItemModified(start, oldCount, newCount); + }); + } + else if (auto rl = _itemSource.Cast()) + { + itemSource = rl; + } + else + { + itemSource = IValueList::Create(GetLazyList(_itemSource)); + } + } + + InvokeOnItemModified(0, oldCount, itemSource ? itemSource->GetCount() : 0); } description::Value GuiBindableListView::ItemSource::Get(vint index) { + if (!itemSource) return Value(); return itemSource->Get(index); } @@ -4810,6 +4883,7 @@ GuiBindableListView::ItemSource bool GuiBindableListView::ItemSource::NotifyUpdate(vint start, vint count) { + if (!itemSource) return false; if (start<0 || start >= itemSource->GetCount() || count <= 0 || start + count > itemSource->GetCount()) { return false; @@ -4835,6 +4909,7 @@ GuiBindableListView::ItemSource vint GuiBindableListView::ItemSource::Count() { + if (!itemSource) return 0; return itemSource->GetCount(); } @@ -4870,9 +4945,12 @@ GuiBindableListView::ItemSource description::Value GuiBindableListView::ItemSource::GetBindingValue(vint itemIndex) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + if (itemSource) { - return itemSource->Get(itemIndex); + if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + { + return itemSource->Get(itemIndex); + } } return Value(); } @@ -4893,38 +4971,50 @@ GuiBindableListView::ItemSource Ptr GuiBindableListView::ItemSource::GetSmallImage(vint itemIndex) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + if (itemSource) { - auto value = ReadProperty(itemSource->Get(itemIndex), smallImageProperty); - return value.GetSharedPtr().Cast(); + if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + { + auto value = ReadProperty(itemSource->Get(itemIndex), smallImageProperty); + return value.GetSharedPtr().Cast(); + } } - return 0; + return nullptr; } Ptr GuiBindableListView::ItemSource::GetLargeImage(vint itemIndex) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + if (itemSource) { - auto value = ReadProperty(itemSource->Get(itemIndex), largeImageProperty); - return value.GetSharedPtr().Cast(); + if (0 <= itemIndex && itemIndex < itemSource->GetCount()) + { + auto value = ReadProperty(itemSource->Get(itemIndex), largeImageProperty); + return value.GetSharedPtr().Cast(); + } } - return 0; + return nullptr; } WString GuiBindableListView::ItemSource::GetText(vint itemIndex) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount() && columns.Count()>0) + if (itemSource) { - return ReadProperty(itemSource->Get(itemIndex), columns[0]->GetTextProperty()).GetText(); + if (0 <= itemIndex && itemIndex < itemSource->GetCount() && columns.Count()>0) + { + return ReadProperty(itemSource->Get(itemIndex), columns[0]->GetTextProperty()).GetText(); + } } return L""; } WString GuiBindableListView::ItemSource::GetSubItem(vint itemIndex, vint index) { - if (0 <= itemIndex && itemIndex < itemSource->GetCount() && 0 <= index && index < columns.Count() - 1) + if (itemSource) { - return ReadProperty(itemSource->Get(itemIndex), columns[index + 1]->GetTextProperty()).GetText(); + if (0 <= itemIndex && itemIndex < itemSource->GetCount() && 0 <= index && index < columns.Count() - 1) + { + return ReadProperty(itemSource->Get(itemIndex), columns[index + 1]->GetTextProperty()).GetText(); + } } return L""; } @@ -4956,8 +5046,8 @@ GuiBindableListView::ItemSource bool GuiBindableListView::ItemSource::DetachCallback(ListViewColumnItemArranger::IColumnItemViewCallback* value) { - vint index=columnItemViewCallbacks.IndexOf(value); - if(index==-1) + vint index = columnItemViewCallbacks.IndexOf(value); + if (index == -1) { return false; } @@ -4975,7 +5065,7 @@ GuiBindableListView::ItemSource WString GuiBindableListView::ItemSource::GetColumnText(vint index) { - if(index<0 || index>=columns.Count()) + if (index < 0 || index >= columns.Count()) { return L""; } @@ -4987,7 +5077,7 @@ GuiBindableListView::ItemSource vint GuiBindableListView::ItemSource::GetColumnSize(vint index) { - if(index<0 || index>=columns.Count()) + if (index < 0 || index >= columns.Count()) { return 0; } @@ -4999,7 +5089,7 @@ GuiBindableListView::ItemSource void GuiBindableListView::ItemSource::SetColumnSize(vint index, vint value) { - if(index>=0 && index= 0 && index < columns.Count()) { columns[index]->SetSize(value); } @@ -5007,7 +5097,7 @@ GuiBindableListView::ItemSource GuiMenu* GuiBindableListView::ItemSource::GetDropdownPopup(vint index) { - if(index<0 || index>=columns.Count()) + if (index < 0 || index >= columns.Count()) { return 0; } @@ -5019,7 +5109,7 @@ GuiBindableListView::ItemSource GuiListViewColumnHeader::ColumnSortingState GuiBindableListView::ItemSource::GetSortingState(vint index) { - if(index<0 || index>=columns.Count()) + if (index < 0 || index >= columns.Count()) { return GuiListViewColumnHeader::NotSorted; } @@ -5033,8 +5123,8 @@ GuiBindableListView::ItemSource GuiBindableListView ***********************************************************************/ - GuiBindableListView::GuiBindableListView(IStyleProvider* _styleProvider, Ptr _itemSource) - :GuiVirtualListView(_styleProvider, new ItemSource(_itemSource)) + GuiBindableListView::GuiBindableListView(IStyleProvider* _styleProvider) + :GuiVirtualListView(_styleProvider, new ItemSource) { itemSource = dynamic_cast(GetItemProvider()); @@ -5056,6 +5146,16 @@ GuiBindableListView return itemSource->GetColumns(); } + Ptr GuiBindableListView::GetItemSource() + { + return itemSource->GetItemSource(); + } + + void GuiBindableListView::SetItemSource(Ptr _itemSource) + { + itemSource->SetItemSource(_itemSource); + } + const WString& GuiBindableListView::GetLargeImageProperty() { return itemSource->largeImageProperty; @@ -5153,9 +5253,9 @@ GuiBindableTreeView::ItemSourceNode { auto ol = childrenVirtualList.Cast(); ol->ItemChanged.Remove(itemChangedEventHandler); - itemChangedEventHandler = 0; + itemChangedEventHandler = nullptr; } - childrenVirtualList = 0; + childrenVirtualList = nullptr; FOREACH(Ptr, node, children) { node->UnprepareChildren(); @@ -5171,17 +5271,16 @@ GuiBindableTreeView::ItemSourceNode { } - GuiBindableTreeView::ItemSourceNode::ItemSourceNode(const description::Value& _itemSource, ItemSource* _rootProvider) - :itemSource(_itemSource) - , rootProvider(_rootProvider) - , parent(0) + GuiBindableTreeView::ItemSourceNode::ItemSourceNode(ItemSource* _rootProvider) + :rootProvider(_rootProvider) + , parent(nullptr) , callback(_rootProvider) { } GuiBindableTreeView::ItemSourceNode::~ItemSourceNode() { - UnprepareChildren(); + SetItemSource(Value()); } description::Value GuiBindableTreeView::ItemSourceNode::GetItemSource() @@ -5189,6 +5288,16 @@ GuiBindableTreeView::ItemSourceNode return itemSource; } + void GuiBindableTreeView::ItemSourceNode::SetItemSource(const description::Value& _itemSource) + { + vint oldCount = GetChildCount(); + UnprepareChildren(); + itemSource = _itemSource; + vint newCount = GetChildCount(); + callback->OnBeforeItemModified(this, 0, oldCount, newCount); + callback->OnAfterItemModified(this, 0, oldCount, newCount); + } + bool GuiBindableTreeView::ItemSourceNode::GetExpanding() { return this == rootProvider->rootNode.Obj() ? true : expanding; @@ -5259,15 +5368,25 @@ GuiBindableTreeView::ItemSourceNode GuiBindableTreeView::ItemSource ***********************************************************************/ - GuiBindableTreeView::ItemSource::ItemSource(const description::Value& _itemSource) + GuiBindableTreeView::ItemSource::ItemSource() { - rootNode = new ItemSourceNode(_itemSource, this); + rootNode = new ItemSourceNode(this); } GuiBindableTreeView::ItemSource::~ItemSource() { } + description::Value GuiBindableTreeView::ItemSource::GetItemSource() + { + return rootNode->GetItemSource(); + } + + void GuiBindableTreeView::ItemSource::SetItemSource(const description::Value& _itemSource) + { + rootNode->SetItemSource(_itemSource); + } + void GuiBindableTreeView::ItemSource::UpdateBindingProperties(bool updateChildrenProperty) { vint oldCount = rootNode->GetChildCount(); @@ -5338,7 +5457,7 @@ GuiBindableTreeView::ItemSource auto value = ReadProperty(itemSourceNode->GetItemSource(), imageProperty); return value.GetSharedPtr().Cast(); } - return 0; + return nullptr; } WString GuiBindableTreeView::ItemSource::GetNodeText(tree::INodeProvider* node) @@ -5354,8 +5473,8 @@ GuiBindableTreeView::ItemSource GuiBindableTreeView ***********************************************************************/ - GuiBindableTreeView::GuiBindableTreeView(IStyleProvider* _styleProvider, const description::Value& _itemSource) - :GuiVirtualTreeView(_styleProvider, new ItemSource(_itemSource)) + GuiBindableTreeView::GuiBindableTreeView(IStyleProvider* _styleProvider) + :GuiVirtualTreeView(_styleProvider, new ItemSource) { itemSource = dynamic_cast(GetNodeRootProvider()); @@ -5368,6 +5487,16 @@ GuiBindableTreeView { } + description::Value GuiBindableTreeView::GetItemSource() + { + throw 0; + } + + void GuiBindableTreeView::SetItemSource(description::Value _itemSource) + { + throw 0; + } + const WString& GuiBindableTreeView::GetTextProperty() { return itemSource->textProperty; @@ -5436,12 +5565,8 @@ GuiBindableTreeView GuiBindableDataColumn ***********************************************************************/ - void BindableDataColumn::SetItemSource(Ptr _itemSource) - { - itemSource = _itemSource; - } - BindableDataColumn::BindableDataColumn() + :dataProvider(nullptr) { } @@ -5468,19 +5593,25 @@ GuiBindableDataColumn description::Value BindableDataColumn::GetCellValue(vint row) { - if (0 <= row && row < itemSource->GetCount()) + if (dataProvider->itemSource) { - return ReadProperty(itemSource->Get(row), valueProperty); + if (0 <= row && row < dataProvider->itemSource->GetCount()) + { + return ReadProperty(dataProvider->itemSource->Get(row), valueProperty); + } } return Value(); } void BindableDataColumn::SetCellValue(vint row, description::Value value) { - if (0 <= row && row < itemSource->GetCount()) + if (dataProvider->itemSource) { - auto rowValue = itemSource->Get(row); - return WriteProperty(rowValue, valueProperty, value); + if (0 <= row && row < dataProvider->itemSource->GetCount()) + { + auto rowValue = dataProvider->itemSource->Get(row); + return WriteProperty(rowValue, valueProperty, value); + } } } @@ -5505,66 +5636,90 @@ GuiBindableDataColumn const description::Value& BindableDataColumn::GetViewModelContext() { - return viewModelContext; + return dataProvider->viewModelContext; } /*********************************************************************** GuiBindableDataProvider ***********************************************************************/ - BindableDataProvider::BindableDataProvider(Ptr _itemSource, const description::Value& _viewModelContext) + BindableDataProvider::BindableDataProvider(const description::Value& _viewModelContext) :viewModelContext(_viewModelContext) { - if (auto ol = _itemSource.Cast()) - { - itemSource = ol; - itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) - { - commandExecutor->OnDataProviderItemModified(start, oldCount, newCount); - }); - } - else if (auto rl = _itemSource.Cast()) - { - itemSource = rl; - } - else - { - itemSource = IValueList::Create(GetLazyList(_itemSource)); - } } BindableDataProvider::~BindableDataProvider() { + SetItemSource(nullptr); + } + + Ptr BindableDataProvider::GetItemSource() + { + return itemSource; + } + + void BindableDataProvider::SetItemSource(Ptr _itemSource) + { + vint oldCount = 0; + if (itemSource) + { + oldCount = itemSource->GetCount(); + } if (itemChangedEventHandler) { auto ol = itemSource.Cast(); ol->ItemChanged.Remove(itemChangedEventHandler); } + + itemSource = nullptr; + itemChangedEventHandler = nullptr; + + if (_itemSource) + { + if (auto ol = _itemSource.Cast()) + { + itemSource = ol; + itemChangedEventHandler = ol->ItemChanged.Add([this](vint start, vint oldCount, vint newCount) + { + commandExecutor->OnDataProviderItemModified(start, oldCount, newCount); + }); + } + else if (auto rl = _itemSource.Cast()) + { + itemSource = rl; + } + else + { + itemSource = IValueList::Create(GetLazyList(_itemSource)); + } + } + + commandExecutor->OnDataProviderItemModified(0, oldCount, itemSource ? itemSource->GetCount() : 0); } vint BindableDataProvider::GetRowCount() { + if (!itemSource) return 0; return itemSource->GetCount(); } description::Value BindableDataProvider::GetRowValue(vint row) { - if (0 <= row && row < itemSource->GetCount()) + if (itemSource) { - return itemSource->Get(row); - } - else - { - return Value(); + if (0 <= row && row < itemSource->GetCount()) + { + return itemSource->Get(row); + } } + return Value(); } bool BindableDataProvider::InsertBindableColumn(vint index, Ptr column) { if (InsertColumnInternal(index, column, true)) { - column->viewModelContext = viewModelContext; - column->itemSource = itemSource; + column->dataProvider = this; return true; } else @@ -5577,8 +5732,7 @@ GuiBindableDataProvider { if (AddColumnInternal(column, true)) { - column->viewModelContext = viewModelContext; - column->itemSource = itemSource; + column->dataProvider = this; return true; } else @@ -5591,8 +5745,7 @@ GuiBindableDataProvider { if (RemoveColumnInternal(column, true)) { - column->viewModelContext = Value(); - column->itemSource = nullptr; + column->dataProvider = nullptr; return true; } else @@ -5605,8 +5758,7 @@ GuiBindableDataProvider { FOREACH(Ptr, column, columns) { - column.Cast()->viewModelContext = Value(); - column.Cast()->itemSource = nullptr; + column.Cast()->dataProvider = nullptr; } return ClearColumnsInternal(true); } @@ -5633,8 +5785,8 @@ GuiBindableDataProvider GuiBindableDataGrid ***********************************************************************/ - GuiBindableDataGrid::GuiBindableDataGrid(IStyleProvider* _styleProvider, Ptr _itemSource, const description::Value& _viewModelContext) - :GuiVirtualDataGrid(_styleProvider, new BindableDataProvider(_itemSource, _viewModelContext)) + GuiBindableDataGrid::GuiBindableDataGrid(IStyleProvider* _styleProvider, const description::Value& _viewModelContext) + :GuiVirtualDataGrid(_styleProvider, new BindableDataProvider(_viewModelContext)) { bindableDataProvider = GetStructuredDataProvider()->GetStructuredDataProvider().Cast(); } @@ -5643,6 +5795,16 @@ GuiBindableDataGrid { } + Ptr GuiBindableDataGrid::GetItemSource() + { + return bindableDataProvider->GetItemSource(); + } + + void GuiBindableDataGrid::SetItemSource(Ptr _itemSource) + { + bindableDataProvider->SetItemSource(_itemSource); + } + bool GuiBindableDataGrid::InsertBindableColumn(vint index, Ptr column) { return bindableDataProvider->InsertBindableColumn(index, column); diff --git a/Import/GacUI.h b/Import/GacUI.h index 42665dd4..47e0a42e 100644 --- a/Import/GacUI.h +++ b/Import/GacUI.h @@ -16664,9 +16664,12 @@ GuiBindableTextList WString checkedProperty; public: - ItemSource(Ptr _itemSource); + ItemSource(); ~ItemSource(); + Ptr GetItemSource(); + void SetItemSource(Ptr _itemSource); + description::Value Get(vint index); void UpdateBindingProperties(); @@ -16700,13 +16703,20 @@ GuiBindableTextList /// The style provider for this control. /// The item style provider callback for this control. /// The item source. - GuiBindableTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory, Ptr _itemSource); + GuiBindableTextList(IStyleProvider* _styleProvider, list::TextItemStyleProvider::IBulletFactory* _bulletFactory); ~GuiBindableTextList(); /// Text property name changed event. compositions::GuiNotifyEvent TextPropertyChanged; /// Checked property name changed event. compositions::GuiNotifyEvent CheckedPropertyChanged; + + /// Get the item source. + /// The item source. + Ptr GetItemSource(); + /// Set the item source. + /// The item source. Null is acceptable if you want to clear all data. + void SetItemSource(Ptr _itemSource); /// Get the text property name to get the item text from an item. /// The text property name. @@ -16787,8 +16797,11 @@ GuiBindableListView WString smallImageProperty; public: - ItemSource(Ptr _itemSource); + ItemSource(); ~ItemSource(); + + Ptr GetItemSource(); + void SetItemSource(Ptr _itemSource); description::Value Get(vint index); void UpdateBindingProperties(); @@ -16839,7 +16852,7 @@ GuiBindableListView /// Create a bindable List view control. /// The style provider for this control. /// The item source. - GuiBindableListView(IStyleProvider* _styleProvider, Ptr _itemSource); + GuiBindableListView(IStyleProvider* _styleProvider); ~GuiBindableListView(); /// Get all data columns indices in columns. @@ -16848,6 +16861,13 @@ GuiBindableListView /// Get all columns. /// All columns. ListViewColumns& GetColumns(); + + /// Get the item source. + /// The item source. + Ptr GetItemSource(); + /// Set the item source. + /// The item source. Null is acceptable if you want to clear all data. + void SetItemSource(Ptr _itemSource); /// Large image property name changed event. compositions::GuiNotifyEvent LargeImagePropertyChanged; @@ -16904,10 +16924,11 @@ GuiBindableTreeView void UnprepareChildren(); public: ItemSourceNode(const description::Value& _itemSource, ItemSourceNode* _parent); - ItemSourceNode(const description::Value& _itemSource, ItemSource* _rootProvider); + ItemSourceNode(ItemSource* _rootProvider); ~ItemSourceNode(); description::Value GetItemSource(); + void SetItemSource(const description::Value& _itemSource); // ===================== tree::INodeProvider ===================== @@ -16935,9 +16956,12 @@ GuiBindableTreeView Ptr rootNode; public: - ItemSource(const description::Value& _itemSource); + ItemSource(); ~ItemSource(); + description::Value GetItemSource(); + void SetItemSource(const description::Value& _itemSource); + void UpdateBindingProperties(bool updateChildrenProperty); // ===================== tree::INodeRootProvider ===================== @@ -16967,7 +16991,7 @@ GuiBindableTreeView /// Create a bindable Tree view control. /// The style provider for this control. /// The item source. - GuiBindableTreeView(IStyleProvider* _styleProvider, const description::Value& _itemSource); + GuiBindableTreeView(IStyleProvider* _styleProvider); ~GuiBindableTreeView(); /// Text property name changed event. @@ -16976,6 +17000,13 @@ GuiBindableTreeView compositions::GuiNotifyEvent ImagePropertyChanged; /// Children property name changed event. compositions::GuiNotifyEvent ChildrenPropertyChanged; + + /// Get the item source. + /// The item source. + description::Value GetItemSource(); + /// Set the item source. + /// The item source. Null is acceptable if you want to clear all data. + void SetItemSource(description::Value _itemSource); /// Get the text property name to get the item text from an item. /// The text property name. @@ -17009,16 +17040,16 @@ GuiBindableDataGrid namespace list { + class BindableDataProvider; + /// Column object for [T:vl.presentation.controls.GuiBindableDataGrid]. class BindableDataColumn : public StructuredColummProviderBase, public Description { friend class BindableDataProvider; protected: - description::Value viewModelContext; - Ptr itemSource; + BindableDataProvider* dataProvider; WString valueProperty; - void SetItemSource(Ptr _itemSource); public: BindableDataColumn(); ~BindableDataColumn(); @@ -17053,15 +17084,19 @@ GuiBindableDataGrid /// Data provider object for [T:vl.presentation.controls.GuiBindableDataGrid]. class BindableDataProvider : public StructuredDataProviderBase, public Description { + friend class BindableDataColumn; protected: description::Value viewModelContext; Ptr itemSource; Ptr itemChangedEventHandler; public: - BindableDataProvider(Ptr _itemSource, const description::Value& _viewModelContext); + BindableDataProvider(const description::Value& _viewModelContext); ~BindableDataProvider(); + Ptr GetItemSource(); + void SetItemSource(Ptr _itemSource); + vint GetRowCount()override; description::Value GetRowValue(vint row); @@ -17085,8 +17120,15 @@ GuiBindableDataGrid /// The style provider for this control. /// The item source. /// The view mode context, which will be passed to every visualizers and editors in this grid. - GuiBindableDataGrid(IStyleProvider* _styleProvider, Ptr _itemSource, const description::Value& _viewModelContext = description::Value()); + GuiBindableDataGrid(IStyleProvider* _styleProvider, const description::Value& _viewModelContext = description::Value()); ~GuiBindableDataGrid(); + + /// Get the item source. + /// The item source. + Ptr GetItemSource(); + /// Set the item source. + /// The item source. Null is acceptable if you want to clear all data. + void SetItemSource(Ptr _itemSource); /// Insert a column. /// Returns true if this operation succeeded. diff --git a/Import/GacUICompiler.cpp b/Import/GacUICompiler.cpp index 1e0ded9a..73bb2023 100644 --- a/Import/GacUICompiler.cpp +++ b/Import/GacUICompiler.cpp @@ -4111,52 +4111,9 @@ GuiListViewInstanceLoader { }; -#define BASE_TYPE GuiListViewInstanceLoaderBase - class GuiBindableListViewInstanceLoader : public BASE_TYPE + class GuiBindableListViewInstanceLoader : public GuiListViewInstanceLoaderBase { - protected: - GlobalStringKey _ItemSource; - - void AddAdditionalArguments(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List& errors, Ptr createControl)override - { - vint indexItemSource = arguments.Keys().IndexOf(_ItemSource); - if (indexItemSource != -1) - { - createControl->arguments.Add(arguments.GetByIndex(indexItemSource)[0].expression); - } - } - public: - GuiBindableListViewInstanceLoader() - { - _ItemSource = GlobalStringKey::Get(L"ItemSource"); - } - - void GetConstructorParameters(const TypeInfo& typeInfo, collections::List& propertyNames)override - { - if (typeInfo.typeName == GetTypeName()) - { - propertyNames.Add(_ItemSource); - } - BASE_TYPE::GetConstructorParameters(typeInfo, propertyNames); - } - - Ptr GetPropertyType(const PropertyInfo& propertyInfo)override - { - if (propertyInfo.propertyName == _ItemSource) - { - if (bindable) - { - auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); - info->scope = GuiInstancePropertyInfo::Constructor; - info->required = true; - info->bindable = true; - return info; - } - } - return BASE_TYPE::GetPropertyType(propertyInfo); - } }; -#undef BASE_TYPE /*********************************************************************** GuiTreeViewInstanceLoader @@ -4297,49 +4254,9 @@ GuiTreeViewInstanceLoader { }; -#define BASE_TYPE GuiTreeViewInstanceLoaderBase - class GuiBindableTreeViewInstanceLoader : public BASE_TYPE + class GuiBindableTreeViewInstanceLoader : public GuiTreeViewInstanceLoaderBase { - protected: - GlobalStringKey _ItemSource; - - void AddAdditionalArguments(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List& errors, Ptr createControl)override - { - vint indexItemSource = arguments.Keys().IndexOf(_ItemSource); - if (indexItemSource != -1) - { - createControl->arguments.Add(arguments.GetByIndex(indexItemSource)[0].expression); - } - } - public: - GuiBindableTreeViewInstanceLoader() - { - _ItemSource = GlobalStringKey::Get(L"ItemSource"); - } - - void GetConstructorParameters(const TypeInfo& typeInfo, collections::List& propertyNames)override - { - if (typeInfo.typeName == GetTypeName()) - { - propertyNames.Add(_ItemSource); - } - BASE_TYPE::GetConstructorParameters(typeInfo, propertyNames); - } - - Ptr GetPropertyType(const PropertyInfo& propertyInfo)override - { - if (propertyInfo.propertyName == _ItemSource) - { - auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); - info->scope = GuiInstancePropertyInfo::Constructor; - info->required = true; - info->bindable = true; - return info; - } - return BASE_TYPE::GetPropertyType(propertyInfo); - } }; -#undef BASE_TYPE /*********************************************************************** GuiBindableTextListInstanceLoader @@ -4348,53 +4265,16 @@ GuiBindableTextListInstanceLoader #define BASE_TYPE GuiTemplateControlInstanceLoader class GuiBindableTextListInstanceLoader : public BASE_TYPE { - protected: - GlobalStringKey _ItemSource; - - void AddAdditionalArguments(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List& errors, Ptr createControl)override - { - vint indexItemSource = arguments.Keys().IndexOf(_ItemSource); - if (indexItemSource != -1) - { - createControl->arguments.Add(arguments.GetByIndex(indexItemSource)[0].expression); - } - } public: - GuiBindableTextListInstanceLoader(const WString& type) - :BASE_TYPE( - L"presentation::controls::GuiBindable" + type + L"TextList", - L"CreateTextListStyle", - L"Create" + type + L"TextListItemStyle" - ) + GuiBindableTextListInstanceLoader() + :BASE_TYPE(description::TypeInfo::TypeName, L"CreateTextListStyle", L"CreateTextListItemStyle") { - _ItemSource = GlobalStringKey::Get(L"ItemSource"); } GlobalStringKey GetTypeName()override { return typeName; } - void GetConstructorParameters(const TypeInfo& typeInfo, collections::List& propertyNames)override - { - if (typeInfo.typeName == GetTypeName()) - { - propertyNames.Add(_ItemSource); - } - BASE_TYPE::GetConstructorParameters(typeInfo, propertyNames); - } - - Ptr GetPropertyType(const PropertyInfo& propertyInfo)override - { - if (propertyInfo.propertyName == _ItemSource) - { - auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); - info->scope = GuiInstancePropertyInfo::Constructor; - info->required = true; - info->bindable = true; - return info; - } - return BASE_TYPE::GetPropertyType(propertyInfo); - } }; #undef BASE_TYPE @@ -4564,15 +4444,11 @@ GuiBindableDataGridInstanceLoader { protected: GlobalStringKey typeName; - GlobalStringKey _ItemSource; GlobalStringKey _ViewModelContext; GlobalStringKey _Columns; void AddAdditionalArguments(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List& errors, Ptr createControl)override { - auto indexItemSource = arguments.Keys().IndexOf(_ItemSource); - createControl->arguments.Add(arguments.GetByIndex(indexItemSource)[0].expression); - auto indexViewModelContext = arguments.Keys().IndexOf(_ViewModelContext); if (indexViewModelContext == -1) { @@ -4590,7 +4466,6 @@ GuiBindableDataGridInstanceLoader :BASE_TYPE(description::TypeInfo::TypeName, L"CreateListViewStyle") { typeName = GlobalStringKey::Get(description::TypeInfo::TypeName); - _ItemSource = GlobalStringKey::Get(L"ItemSource"); _ViewModelContext = GlobalStringKey::Get(L"ViewModelContext"); _Columns = GlobalStringKey::Get(L"Columns"); } @@ -4610,7 +4485,6 @@ GuiBindableDataGridInstanceLoader { if (typeInfo.typeName == GetTypeName()) { - propertyNames.Add(_ItemSource); propertyNames.Add(_ViewModelContext); } BASE_TYPE::GetConstructorParameters(typeInfo, propertyNames); @@ -4622,14 +4496,6 @@ GuiBindableDataGridInstanceLoader { return GuiInstancePropertyInfo::Collection(description::GetTypeDescriptor()); } - else if (propertyInfo.propertyName == _ItemSource) - { - auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); - info->scope = GuiInstancePropertyInfo::Constructor; - info->required = true; - info->bindable = true; - return info; - } else if (propertyInfo.propertyName == _ViewModelContext) { auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); @@ -4872,9 +4738,7 @@ Initialization manager->SetLoader(new GuiTreeViewInstanceLoader); manager->SetLoader(new GuiBindableTreeViewInstanceLoader); - manager->SetLoader(new GuiBindableTextListInstanceLoader(L"")); - manager->SetLoader(new GuiBindableTextListInstanceLoader(L"Check")); - manager->SetLoader(new GuiBindableTextListInstanceLoader(L"Radio")); + manager->SetLoader(new GuiBindableTextListInstanceLoader); manager->SetLoader(new GuiBindableDataColumnInstanceLoader); manager->SetLoader(new GuiBindableDataGridInstanceLoader); diff --git a/Import/GacUIReflection.cpp b/Import/GacUIReflection.cpp index eff3d2e2..6546b29f 100644 --- a/Import/GacUIReflection.cpp +++ b/Import/GacUIReflection.cpp @@ -3176,8 +3176,9 @@ Type Declaration BEGIN_CLASS_MEMBER(GuiBindableTextList) CLASS_MEMBER_BASE(GuiVirtualTextList) - CLASS_MEMBER_CONSTRUCTOR(GuiBindableTextList*(GuiBindableTextList::IStyleProvider*, list::TextItemStyleProvider::IBulletFactory*, Ptr), {L"styleProvider" _ L"bulletFactory" _ L"itemSource"}) + CLASS_MEMBER_CONSTRUCTOR(GuiBindableTextList*(GuiBindableTextList::IStyleProvider*, list::TextItemStyleProvider::IBulletFactory*), {L"styleProvider" _ L"bulletFactory"}) + CLASS_MEMBER_PROPERTY_FAST(ItemSource) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TextProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(CheckedProperty) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged) @@ -3185,10 +3186,11 @@ Type Declaration BEGIN_CLASS_MEMBER(GuiBindableListView) CLASS_MEMBER_BASE(GuiVirtualListView) - CLASS_MEMBER_CONSTRUCTOR(GuiBindableListView*(GuiBindableListView::IStyleProvider*, Ptr), {L"styleProvider" _ L"itemSource"}) + CLASS_MEMBER_CONSTRUCTOR(GuiBindableListView*(GuiBindableListView::IStyleProvider*), {L"styleProvider"}) CLASS_MEMBER_PROPERTY_READONLY_FAST(DataColumns) CLASS_MEMBER_PROPERTY_READONLY_FAST(Columns) + CLASS_MEMBER_PROPERTY_FAST(ItemSource) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(LargeImageProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SmallImageProperty) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectionChanged) @@ -3196,8 +3198,9 @@ Type Declaration BEGIN_CLASS_MEMBER(GuiBindableTreeView) CLASS_MEMBER_BASE(GuiVirtualTreeView) - CLASS_MEMBER_CONSTRUCTOR(GuiBindableTreeView*(GuiBindableTreeView::IStyleProvider*, const Value&), {L"styleProvider" _ L"itemSource"}) + CLASS_MEMBER_CONSTRUCTOR(GuiBindableTreeView*(GuiBindableTreeView::IStyleProvider*), {L"styleProvider"}) + CLASS_MEMBER_PROPERTY_FAST(ItemSource) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(TextProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ImageProperty) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(ChildrenProperty) @@ -3216,13 +3219,14 @@ Type Declaration BEGIN_CLASS_MEMBER(GuiBindableDataGrid) CLASS_MEMBER_BASE(GuiVirtualDataGrid) - CLASS_MEMBER_CONSTRUCTOR(GuiBindableDataGrid*(GuiBindableDataGrid::IStyleProvider*, Ptr, const Value&), {L"styleProvider" _ L"itemSource" _ L"viewModelContext"}) - + CLASS_MEMBER_CONSTRUCTOR(GuiBindableDataGrid*(GuiBindableDataGrid::IStyleProvider*, const Value&), {L"styleProvider" _ L"viewModelContext"}) + CLASS_MEMBER_METHOD(InsertBindableColumn, { L"index" _ L"column" }) CLASS_MEMBER_METHOD(AddBindableColumn, { L"column" }) CLASS_MEMBER_METHOD(RemoveBindableColumn, { L"column" }) CLASS_MEMBER_METHOD(ClearBindableColumns, NO_PARAMETER) CLASS_MEMBER_METHOD(GetBindableColumn, { L"index" }) + CLASS_MEMBER_PROPERTY_FAST(ItemSource) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedRowValue, SelectedCellChanged) CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedCellValue, SelectedCellChanged) END_CLASS_MEMBER(GuiBindableDataGrid) diff --git a/Tools/GacGen.exe b/Tools/GacGen.exe index ddf98d9a..aab7e4fc 100644 Binary files a/Tools/GacGen.exe and b/Tools/GacGen.exe differ diff --git a/Tools/ParserGen.exe b/Tools/ParserGen.exe index 8ee53c26..7633eff9 100644 Binary files a/Tools/ParserGen.exe and b/Tools/ParserGen.exe differ diff --git a/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin b/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin index 53bd47c6..5b0094af 100644 Binary files a/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin and b/Tutorial/GacUI_ControlTemplate/UIRes/BlackSkin.bin differ diff --git a/Tutorial/GacUI_Controls/UIRes/ColorPicker.bin b/Tutorial/GacUI_Controls/UIRes/ColorPicker.bin index 9a7cd724..99736946 100644 Binary files a/Tutorial/GacUI_Controls/UIRes/ColorPicker.bin and b/Tutorial/GacUI_Controls/UIRes/ColorPicker.bin differ diff --git a/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin b/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin index 61d29101..9ad5f916 100644 Binary files a/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin and b/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin differ diff --git a/Tutorial/GacUI_Controls/UIRes/TextEditor.bin b/Tutorial/GacUI_Controls/UIRes/TextEditor.bin index 75a220ac..0919ff16 100644 Binary files a/Tutorial/GacUI_Controls/UIRes/TextEditor.bin and b/Tutorial/GacUI_Controls/UIRes/TextEditor.bin differ diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/CppXml.bin b/Tutorial/GacUI_HelloWorlds/UIRes/CppXml.bin index b77b16df..ea54b635 100644 Binary files a/Tutorial/GacUI_HelloWorlds/UIRes/CppXml.bin and b/Tutorial/GacUI_HelloWorlds/UIRes/CppXml.bin differ diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/MVVM.bin b/Tutorial/GacUI_HelloWorlds/UIRes/MVVM.bin index dee71367..16d4b662 100644 Binary files a/Tutorial/GacUI_HelloWorlds/UIRes/MVVM.bin and b/Tutorial/GacUI_HelloWorlds/UIRes/MVVM.bin differ diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin index ea52db73..96bab4df 100644 Binary files a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin and b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/Alignment.bin b/Tutorial/GacUI_Layout/UIRes/Alignment.bin index 7602c73b..9db638cc 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Alignment.bin and b/Tutorial/GacUI_Layout/UIRes/Alignment.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/Flow.bin b/Tutorial/GacUI_Layout/UIRes/Flow.bin index 3bf4e9d6..3c0cefce 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Flow.bin and b/Tutorial/GacUI_Layout/UIRes/Flow.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/RichTextEmbedding.bin b/Tutorial/GacUI_Layout/UIRes/RichTextEmbedding.bin index c5dda371..ff40e45e 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/RichTextEmbedding.bin and b/Tutorial/GacUI_Layout/UIRes/RichTextEmbedding.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/Stack.bin b/Tutorial/GacUI_Layout/UIRes/Stack.bin index 3ec76020..e5aaf712 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Stack.bin and b/Tutorial/GacUI_Layout/UIRes/Stack.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/Table.bin b/Tutorial/GacUI_Layout/UIRes/Table.bin index 865679e7..3d53cc3e 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Table.bin and b/Tutorial/GacUI_Layout/UIRes/Table.bin differ diff --git a/Tutorial/GacUI_Layout/UIRes/TableSplitter.bin b/Tutorial/GacUI_Layout/UIRes/TableSplitter.bin index fad39bc9..addab091 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/TableSplitter.bin and b/Tutorial/GacUI_Layout/UIRes/TableSplitter.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin index 0f6b8c8f..e0ac6287 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Eval.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Eval.bin index 5c44a24f..e13f43ef 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_Eval.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_Eval.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Format.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Format.bin index eeb5da34..506a6663 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_Format.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_Format.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Uri.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Uri.bin index cfc1a1e6..3132408d 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_Uri.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_Uri.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin b/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin index bd44c07d..395f9fd8 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin and b/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin b/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin index faa78ae0..682e090c 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin and b/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Event_Script.bin b/Tutorial/GacUI_Xml/UIRes/Event_Script.bin index 49b95ddb..db2124f7 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Event_Script.bin and b/Tutorial/GacUI_Xml/UIRes/Event_Script.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin b/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin index 7f1e6ff8..138b7dae 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin and b/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin b/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin index 3b66fed3..50cf822c 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin and b/Tutorial/GacUI_Xml/UIRes/Instance_Control.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Instance_MultipleWindows.bin b/Tutorial/GacUI_Xml/UIRes/Instance_MultipleWindows.bin index 545b3a4d..ed7a092e 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Instance_MultipleWindows.bin and b/Tutorial/GacUI_Xml/UIRes/Instance_MultipleWindows.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Instance_Window.bin b/Tutorial/GacUI_Xml/UIRes/Instance_Window.bin index bf388baa..35b7cf9b 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Instance_Window.bin and b/Tutorial/GacUI_Xml/UIRes/Instance_Window.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Member_Field.bin b/Tutorial/GacUI_Xml/UIRes/Member_Field.bin index bd9b60df..2aa86595 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Member_Field.bin and b/Tutorial/GacUI_Xml/UIRes/Member_Field.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Member_Parameter.bin b/Tutorial/GacUI_Xml/UIRes/Member_Parameter.bin index a7aaaa03..e342b715 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Member_Parameter.bin and b/Tutorial/GacUI_Xml/UIRes/Member_Parameter.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Member_Property.bin b/Tutorial/GacUI_Xml/UIRes/Member_Property.bin index fe8353ba..2cdf35e8 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Member_Property.bin and b/Tutorial/GacUI_Xml/UIRes/Member_Property.bin differ