diff --git a/Import/GacUI.cpp b/Import/GacUI.cpp index a243fa3e..4fb4ed54 100644 --- a/Import/GacUI.cpp +++ b/Import/GacUI.cpp @@ -5764,6 +5764,40 @@ GuiComboBoxBase GuiComboBoxListControl ***********************************************************************/ + void GuiComboBoxListControl::RemoveStyleController() + { + if (itemStyleController) + { + SafeDeleteComposition(itemStyleController->GetBoundsComposition()); + itemStyleController = nullptr; + } + } + + void GuiComboBoxListControl::InstallStyleController(vint itemIndex) + { + if (itemBindingView != nullptr && itemStyleProvider) + { + if (itemIndex != -1) + { + auto item = itemBindingView->GetBindingValue(itemIndex); + if (!item.IsNull()) + { + itemStyleController = itemStyleProvider->CreateItemStyle(item); + if (itemStyleController) + { + itemStyleController->SetText(GetText()); + itemStyleController->SetFont(GetFont()); + itemStyleController->SetVisuallyEnabled(GetVisuallyEnabled()); + + auto composition = itemStyleController->GetBoundsComposition(); + composition->SetAlignmentToParent(Margin(0, 0, 0, 0)); + GetContainerComposition()->AddChild(composition); + } + } + } + } + } + void GuiComboBoxListControl::DisplaySelectedContent(vint itemIndex) { if(primaryTextView) @@ -5779,6 +5813,49 @@ GuiComboBoxListControl GetSubMenu()->Hide(); } } + + RemoveStyleController(); + InstallStyleController(itemIndex); + } + + void GuiComboBoxListControl::OnTextChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) + { + if (itemStyleController) + { + itemStyleController->SetText(GetText()); + } + } + + void GuiComboBoxListControl::OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) + { + if (itemStyleController) + { + itemStyleController->SetFont(GetFont()); + } + OnListControlAdoptedSizeInvalidated(nullptr, GetNotifyEventArguments()); + } + + void GuiComboBoxListControl::OnVisuallyEnabledChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) + { + if (itemStyleController) + { + itemStyleController->SetVisuallyEnabled(GetVisuallyEnabled()); + } + } + + void GuiComboBoxListControl::OnListControlAdoptedSizeInvalidated(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) + { + Size expectedSize(0, GetFont().size * 20); + Size adoptedSize = containedListControl->GetAdoptedSize(expectedSize); + + Size clientSize = GetPreferredMenuClientSize(); + clientSize.y = adoptedSize.y + GetSubMenu()->GetClientSize().y - containedListControl->GetBoundsComposition()->GetBounds().Height(); + SetPreferredMenuClientSize(clientSize); + + if (GetSubMenuOpening()) + { + GetSubMenu()->SetClientSize(clientSize); + } } void GuiComboBoxListControl::OnListControlSelectionChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments) @@ -5790,11 +5867,21 @@ GuiComboBoxListControl GuiComboBoxListControl::GuiComboBoxListControl(IStyleController* _styleController, GuiSelectableListControl* _containedListControl) :GuiComboBoxBase(_styleController) - ,containedListControl(_containedListControl) + , styleController(_styleController) + , containedListControl(_containedListControl) { + styleController->SetTextVisible(true); + TextChanged.AttachMethod(this, &GuiComboBoxListControl::OnTextChanged); + FontChanged.AttachMethod(this, &GuiComboBoxListControl::OnFontChanged); + VisuallyEnabledChanged.AttachMethod(this, &GuiComboBoxListControl::OnVisuallyEnabledChanged); + containedListControl->SetMultiSelect(false); + containedListControl->AdoptedSizeInvalidated.AttachMethod(this, &GuiComboBoxListControl::OnListControlAdoptedSizeInvalidated); containedListControl->SelectionChanged.AttachMethod(this, &GuiComboBoxListControl::OnListControlSelectionChanged); - primaryTextView=dynamic_cast(containedListControl->GetItemProvider()->RequestView(GuiListControl::IItemPrimaryTextView::Identifier)); + + auto itemProvider = containedListControl->GetItemProvider(); + primaryTextView = dynamic_cast(itemProvider->RequestView(GuiListControl::IItemPrimaryTextView::Identifier)); + itemBindingView = dynamic_cast(itemProvider->RequestView(GuiListControl::IItemBindingView::Identifier)); SelectedIndexChanged.SetAssociatedComposition(GetBoundsComposition()); @@ -5811,18 +5898,41 @@ GuiComboBoxListControl } } - void GuiComboBoxListControl::SetFont(const FontProperties& value) - { - GuiComboBoxBase::SetFont(value); - Size size=GetPreferredMenuClientSize(); - size.y=20*value.size; - SetPreferredMenuClientSize(size); - } - GuiSelectableListControl* GuiComboBoxListControl::GetContainedListControl() { return containedListControl; } + + GuiComboBoxListControl::IItemStyleProvider* GuiComboBoxListControl::GetStyleProvider() + { + return itemStyleProvider.Obj(); + } + + Ptr GuiComboBoxListControl::SetStyleProvider(Ptr value) + { + RemoveStyleController(); + auto old = itemStyleProvider; + if (itemStyleProvider) + { + itemStyleProvider->DetachComboBox(); + } + + itemStyleProvider = value; + + if (itemStyleProvider) + { + itemStyleProvider->AttachComboBox(this); + styleController->SetTextVisible(false); + InstallStyleController(GetSelectedIndex()); + } + else + { + styleController->SetTextVisible(true); + } + + StyleProviderChanged.Execute(GetNotifyEventArguments()); + return old; + } vint GuiComboBoxListControl::GetSelectedIndex() { @@ -5841,6 +5951,19 @@ GuiComboBoxListControl containedListControl->SetSelected(value, true); } + description::Value GuiComboBoxListControl::GetSelectedItem() + { + auto selectedIndex = GetSelectedIndex(); + if (selectedIndex != -1) + { + if (itemBindingView) + { + return itemBindingView->GetBindingValue(selectedIndex); + } + } + return description::Value(); + } + GuiListControl::IItemProvider* GuiComboBoxListControl::GetItemProvider() { return containedListControl->GetItemProvider(); @@ -8767,6 +8890,30 @@ GuiListControl return itemArranger?itemArranger->EnsureItemVisible(itemIndex):false; } + Size GuiListControl::GetAdoptedSize(Size expectedSize) + { + if (itemArranger) + { + Size controlSize = GetBoundsComposition()->GetBounds().GetSize(); + Size viewSize = GetContainerComposition()->GetBounds().GetSize(); + vint x = controlSize.x - viewSize.x; + vint y = controlSize.y - viewSize.y; + + Size expectedViewSize(expectedSize.x - x, expectedSize.y - y); + if (axis) + { + expectedViewSize = axis->RealSizeToVirtualSize(expectedViewSize); + } + Size adoptedViewSize = itemArranger->GetAdoptedSize(expectedViewSize); + if (axis) + { + adoptedViewSize = axis->VirtualSizeToRealSize(adoptedViewSize); + } + return Size(adoptedViewSize.x + x, adoptedViewSize.y + y); + } + return expectedSize; + } + /*********************************************************************** GuiSelectableListControl ***********************************************************************/ @@ -9097,6 +9244,33 @@ GuiSelectableListControl RangedItemArrangerBase ***********************************************************************/ + void RangedItemArrangerBase::InvalidateAdoptedSize() + { + 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; + } + void RangedItemArrangerBase::ClearStyles() { startIndex=0; @@ -9198,12 +9372,14 @@ RangedItemArrangerBase callback->OnTotalSizeChanged(); callback->SetViewLocation(viewBounds.LeftTop()); + InvalidateAdoptedSize(); } } void RangedItemArrangerBase::AttachListControl(GuiListControl* value) { listControl = value; + InvalidateAdoptedSize(); } void RangedItemArrangerBase::DetachListControl() @@ -9297,6 +9473,7 @@ FixedHeightItemArranger void FixedHeightItemArranger::OnStylesCleared() { rowHeight=1; + InvalidateAdoptedSize(); } Size FixedHeightItemArranger::OnCalculateTotalSize() @@ -9371,6 +9548,7 @@ FixedHeightItemArranger callback->OnTotalSizeChanged(); callback->SetViewLocation(Point(0, rowHeight*newStartIndex+offset)); suppressOnViewChanged=false; + InvalidateAdoptedSize(); } startIndex=newStartIndex; RearrangeItemBounds(); @@ -9465,6 +9643,18 @@ FixedHeightItemArranger return false; } + Size FixedHeightItemArranger::GetAdoptedSize(Size expectedSize) + { + if (itemProvider) + { + vint offset = GetYOffset(); + vint y = expectedSize.y - offset; + vint itemCount = itemProvider->Count(); + return Size(expectedSize.x, offset + CalculateAdoptedSize(y, itemCount, rowHeight)); + } + return expectedSize; + } + /*********************************************************************** FixedSizeMultiColumnItemArranger ***********************************************************************/ @@ -9500,6 +9690,7 @@ FixedSizeMultiColumnItemArranger void FixedSizeMultiColumnItemArranger::OnStylesCleared() { itemSize=Size(1, 1); + InvalidateAdoptedSize(); } Size FixedSizeMultiColumnItemArranger::OnCalculateTotalSize() @@ -9597,6 +9788,7 @@ FixedSizeMultiColumnItemArranger suppressOnViewChanged=true; callback->OnTotalSizeChanged(); suppressOnViewChanged=false; + InvalidateAdoptedSize(); } startIndex=newStartIndex; RearrangeItemBounds(); @@ -9709,6 +9901,21 @@ FixedSizeMultiColumnItemArranger return false; } + 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 ***********************************************************************/ @@ -9745,6 +9952,7 @@ FixedHeightMultiColumnItemArranger void FixedHeightMultiColumnItemArranger::OnStylesCleared() { itemHeight=1; + InvalidateAdoptedSize(); } Size FixedHeightMultiColumnItemArranger::OnCalculateTotalSize() @@ -9855,6 +10063,7 @@ FixedHeightMultiColumnItemArranger suppressOnViewChanged=true; callback->OnTotalSizeChanged(); suppressOnViewChanged=false; + InvalidateAdoptedSize(); } startIndex=newStartIndex; RearrangeItemBounds(); @@ -9968,6 +10177,16 @@ FixedHeightMultiColumnItemArranger return false; } + Size FixedHeightMultiColumnItemArranger::GetAdoptedSize(Size expectedSize) + { + if (itemProvider) + { + vint count = itemProvider->Count(); + return Size(expectedSize.x, CalculateAdoptedSize(expectedSize.y, count, itemHeight)); + } + return expectedSize; + } + /*********************************************************************** ItemStyleControllerBase ***********************************************************************/ @@ -14765,7 +14984,7 @@ Win7Theme return new Win7TabStyle; } - controls::GuiComboBoxBase::IStyleController* Win7Theme::CreateComboBoxStyle() + controls::GuiComboBoxListControl::IStyleController* Win7Theme::CreateComboBoxStyle() { return new Win7DropDownComboBoxStyle; } @@ -15010,7 +15229,7 @@ Win8Theme return new Win8TabStyle; } - controls::GuiComboBoxBase::IStyleController* Win8Theme::CreateComboBoxStyle() + controls::GuiComboBoxListControl::IStyleController* Win8Theme::CreateComboBoxStyle() { return new Win8DropDownComboBoxStyle; } @@ -16452,7 +16671,8 @@ Win7DropDownComboBoxStyle Win7DropDownComboBoxStyle::Win7DropDownComboBoxStyle() :Win7ButtonStyle(true) - ,commandExecutor(0) + , commandExecutor(0) + , textVisible(true) { table=new GuiTableComposition; table->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); @@ -16531,6 +16751,30 @@ Win7DropDownComboBoxStyle { } + void Win7DropDownComboBoxStyle::SetText(const WString& value) + { + text = value; + if (textVisible) + { + Win7ButtonStyle::SetText(text); + } + } + + void Win7DropDownComboBoxStyle::SetTextVisible(bool value) + { + if (textVisible != value) + { + if ((textVisible = value)) + { + Win7ButtonStyle::SetText(text); + } + else + { + Win7ButtonStyle::SetText(L""); + } + } + } + /*********************************************************************** Win7TextListProvider ***********************************************************************/ @@ -20576,6 +20820,7 @@ Win8DropDownComboBoxStyle Win8DropDownComboBoxStyle::Win8DropDownComboBoxStyle() :commandExecutor(0) + , textVisible(true) { table=new GuiTableComposition; table->SetMinSizeLimitation(GuiGraphicsComposition::LimitToElementAndChildren); @@ -20654,6 +20899,30 @@ Win8DropDownComboBoxStyle { } + void Win8DropDownComboBoxStyle::SetText(const WString& value) + { + text = value; + if (textVisible) + { + Win8ButtonStyle::SetText(text); + } + } + + void Win8DropDownComboBoxStyle::SetTextVisible(bool value) + { + if (textVisible != value) + { + if ((textVisible = value)) + { + Win8ButtonStyle::SetText(text); + } + else + { + Win8ButtonStyle::SetText(L""); + } + } + } + /*********************************************************************** Win8TextListProvider ***********************************************************************/ @@ -23770,6 +24039,7 @@ GuiComboBoxTemplate GuiComboBoxTemplate::GuiComboBoxTemplate() :Commands_(0) + , TextVisible_(true) { GuiComboBoxTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_EVENT_INIT) } @@ -24057,11 +24327,11 @@ namespace vl GuiControlTemplate_StyleProvider ***********************************************************************/ - GuiControlTemplate_StyleProvider::GuiControlTemplate_StyleProvider(Ptr factory) + GuiControlTemplate_StyleProvider::GuiControlTemplate_StyleProvider(Ptr factory, description::Value viewModel) :associatedStyleController(0) , controlTemplate(0) { - GuiTemplate* itemTemplate = factory->CreateTemplate(Value()); + GuiTemplate* itemTemplate = factory->CreateTemplate(viewModel); if (!(controlTemplate = dynamic_cast(itemTemplate))) { delete itemTemplate; @@ -24477,6 +24747,11 @@ GuiComboBoxTemplate_StyleProvider { } + void GuiComboBoxTemplate_StyleProvider::SetTextVisible(bool value) + { + controlTemplate->SetTextVisible(value); + } + /*********************************************************************** GuiDatePickerTemplate_StyleProvider ***********************************************************************/ @@ -25090,6 +25365,32 @@ GuiTabTemplate_StyleProvider return headerButtons[index]->QueryTypedService(); } +/*********************************************************************** +GuiControlTemplate_ItemStyleProvider +***********************************************************************/ + + GuiControlTemplate_ItemStyleProvider::GuiControlTemplate_ItemStyleProvider(Ptr _factory) + :factory(_factory) + { + } + + GuiControlTemplate_ItemStyleProvider::~GuiControlTemplate_ItemStyleProvider() + { + } + + void GuiControlTemplate_ItemStyleProvider::AttachComboBox(controls::GuiComboBoxListControl* value) + { + } + + void GuiControlTemplate_ItemStyleProvider::DetachComboBox() + { + } + + controls::GuiControl::IStyleController* GuiControlTemplate_ItemStyleProvider::CreateItemStyle(description::Value item) + { + return new GuiControlTemplate_StyleProvider(factory, item); + } + /*********************************************************************** GuiListItemTemplate_ItemStyleProvider ***********************************************************************/ diff --git a/Import/GacUI.h b/Import/GacUI.h index 4d7de4ea..c105d2b6 100644 --- a/Import/GacUI.h +++ b/Import/GacUI.h @@ -10528,6 +10528,10 @@ List Control /// Returns true if this operation succeeded. /// The item index of the item to be made visible. virtual bool EnsureItemVisible(vint itemIndex)=0; + /// Get the adopted size for the view bounds. + /// The adopted size, making the vids bounds just enough to display several items. + /// The expected size, to provide a guidance. + virtual Size GetAdoptedSize(Size expectedSize)=0; }; protected: @@ -10629,6 +10633,8 @@ List Control compositions::GuiNotifyEvent ArrangerChanged; /// Coordinate transformer changed event. compositions::GuiNotifyEvent AxisChanged; + /// Adopted size invalidated. + compositions::GuiNotifyEvent AdoptedSizeInvalidated; /// Item left mouse button down event. compositions::GuiItemMouseEvent ItemLeftButtonDown; @@ -10683,6 +10689,10 @@ List Control /// Returns true if this operation succeeded. /// The item index of the item to be made visible. virtual bool EnsureItemVisible(vint itemIndex); + /// Get the adopted size for the list control. + /// The adopted size, making the list control just enough to display several items. + /// The expected size, to provide a guidance. + virtual Size GetAdoptedSize(Size expectedSize); }; /*********************************************************************** @@ -10793,6 +10803,9 @@ Predefined ItemArranger vint startIndex; StyleList visibleStyles; + void InvalidateAdoptedSize(); + vint CalculateAdoptedSize(vint expectedSize, vint count, vint itemSize); + virtual void ClearStyles(); virtual void OnStylesCleared()=0; virtual Size OnCalculateTotalSize()=0; @@ -10834,6 +10847,7 @@ Predefined ItemArranger vint FindItem(vint itemIndex, compositions::KeyDirection key)override; bool 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. @@ -10855,6 +10869,7 @@ Predefined ItemArranger vint FindItem(vint itemIndex, compositions::KeyDirection key)override; bool 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. @@ -10876,6 +10891,7 @@ Predefined ItemArranger vint FindItem(vint itemIndex, compositions::KeyDirection key)override; bool EnsureItemVisible(vint itemIndex)override; + Size GetAdoptedSize(Size expectedSize)override; }; } @@ -13195,11 +13211,46 @@ ComboBox with GuiListControl /// Combo box list control. This control is a combo box with a list control in its popup. class GuiComboBoxListControl : public GuiComboBoxBase, public Description { + public: + /// Style controller interface for . + class IStyleController : public virtual GuiComboBoxBase::IStyleController, public Description + { + public: + /// Indicate that if the combo box need to display text. + /// Set to true to display text. + virtual void SetTextVisible(bool value) = 0; + }; + + /// Item style provider for a . + class IItemStyleProvider : public virtual IDescriptable, public Description + { + public: + /// Called when an item style provider in installed to a . + /// The list control. + virtual void AttachComboBox(GuiComboBoxListControl* value)=0; + /// Called when an item style provider in uninstalled from a . + virtual void DetachComboBox()=0; + /// Create an item style controller from an item. + /// The created item style controller. + /// The item. + virtual GuiControl::IStyleController* CreateItemStyle(description::Value item)=0; + }; + protected: + IStyleController* styleController; GuiSelectableListControl* containedListControl; GuiListControl::IItemPrimaryTextView* primaryTextView; + GuiListControl::IItemBindingView* itemBindingView; + Ptr itemStyleProvider; + Ptr itemStyleController; + void RemoveStyleController(); + void InstallStyleController(vint itemIndex); virtual void DisplaySelectedContent(vint itemIndex); + void OnTextChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); + void OnFontChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); + void OnVisuallyEnabledChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); + void OnListControlAdoptedSizeInvalidated(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); void OnListControlSelectionChanged(compositions::GuiGraphicsComposition* sender, compositions::GuiEventArgs& arguments); public: /// Create a control with a specified style controller and a list control that will be put in the popup control to show all items. @@ -13207,21 +13258,33 @@ ComboBox with GuiListControl /// The list controller. GuiComboBoxListControl(IStyleController* _styleController, GuiSelectableListControl* _containedListControl); ~GuiComboBoxListControl(); - + + /// Style provider changed event. + compositions::GuiNotifyEvent StyleProviderChanged; /// Selected index changed event. compositions::GuiNotifyEvent SelectedIndexChanged; - void SetFont(const FontProperties& value)override; /// Get the list control. /// The list control. GuiSelectableListControl* GetContainedListControl(); + /// Get the item style provider. + /// The item style provider. + IItemStyleProvider* GetStyleProvider(); + /// Set the item style provider + /// The old item style provider + /// The new item style provider + Ptr SetStyleProvider(Ptr value); + /// Get the selected index. /// The selected index. vint GetSelectedIndex(); /// Set the selected index. /// The selected index. void SetSelectedIndex(vint value); + + /// Get the selected item. + description::Value GetSelectedItem(); /// Get the item provider in the list control. /// The item provider in the list control. GuiListControl::IItemProvider* GetItemProvider(); @@ -17368,7 +17431,7 @@ namespace vl virtual controls::GuiTab::IStyleController* CreateTabStyle()=0; /// Create a style for combo box. /// The created style. - virtual controls::GuiComboBoxBase::IStyleController* CreateComboBoxStyle()=0; + virtual controls::GuiComboBoxListControl::IStyleController* CreateComboBoxStyle()=0; /// Create a style for multiline text box. /// The created style. virtual controls::GuiScrollView::IStyleProvider* CreateMultilineTextBoxStyle()=0; @@ -17667,7 +17730,7 @@ Theme controls::GuiScrollContainer::IStyleProvider* CreateScrollContainerStyle()override; controls::GuiControl::IStyleController* CreateGroupBoxStyle()override; controls::GuiTab::IStyleController* CreateTabStyle()override; - controls::GuiComboBoxBase::IStyleController* CreateComboBoxStyle()override; + controls::GuiComboBoxListControl::IStyleController* CreateComboBoxStyle()override; controls::GuiScrollView::IStyleProvider* CreateMultilineTextBoxStyle()override; controls::GuiSinglelineTextBox::IStyleProvider* CreateTextBoxStyle()override; elements::text::ColorEntry GetDefaultTextBoxColorEntry()override; @@ -17755,7 +17818,7 @@ Theme controls::GuiScrollContainer::IStyleProvider* CreateScrollContainerStyle()override; controls::GuiControl::IStyleController* CreateGroupBoxStyle()override; controls::GuiTab::IStyleController* CreateTabStyle()override; - controls::GuiComboBoxBase::IStyleController* CreateComboBoxStyle()override; + controls::GuiComboBoxListControl::IStyleController* CreateComboBoxStyle()override; controls::GuiScrollView::IStyleProvider* CreateMultilineTextBoxStyle()override; controls::GuiSinglelineTextBox::IStyleProvider* CreateTextBoxStyle()override; elements::text::ColorEntry GetDefaultTextBoxColorEntry()override; @@ -18033,6 +18096,7 @@ Control Template #define GuiComboBoxTemplate_PROPERTIES(F)\ F(GuiComboBoxTemplate, controls::GuiComboBoxBase::ICommandExecutor*, Commands)\ + F(GuiComboBoxTemplate, bool, TextVisible)\ GuiComboBoxTemplate_PROPERTIES(GUI_TEMPLATE_PROPERTY_DECL) }; @@ -18281,7 +18345,7 @@ Control Template GuiControlTemplate* controlTemplate; public: - GuiControlTemplate_StyleProvider(Ptr factory); + GuiControlTemplate_StyleProvider(Ptr factory, description::Value viewModel = description::Value()); ~GuiControlTemplate_StyleProvider(); compositions::GuiBoundsComposition* GetBoundsComposition()override; @@ -18452,7 +18516,7 @@ Control Template class GuiComboBoxTemplate_StyleProvider : public GuiToolstripButtonTemplate_StyleProvider - , public virtual controls::GuiComboBoxBase::IStyleController + , public virtual controls::GuiComboBoxListControl::IStyleController , public Description { protected: @@ -18464,6 +18528,7 @@ Control Template void SetCommandExecutor(controls::GuiComboBoxBase::ICommandExecutor* value)override; void OnItemSelected()override; + void SetTextVisible(bool value)override; }; class GuiTextListTemplate_StyleProvider; @@ -18701,6 +18766,27 @@ Control Template compositions::IGuiAltAction* GetTabAltAction(vint index)override; }; +/*********************************************************************** +Item Template (GuiControlTemplate) +***********************************************************************/ + + class GuiControlTemplate_ItemStyleProvider + : public Object + , public virtual controls::GuiComboBoxListControl::IItemStyleProvider + , public Description + { + protected: + Ptr factory; + + public: + GuiControlTemplate_ItemStyleProvider(Ptr _factory); + ~GuiControlTemplate_ItemStyleProvider(); + + void AttachComboBox(controls::GuiComboBoxListControl* value)override; + void DetachComboBox()override; + controls::GuiControl::IStyleController* CreateItemStyle(description::Value item)override; + }; + /*********************************************************************** Item Template (GuiListItemTemplate) ***********************************************************************/ @@ -22190,7 +22276,7 @@ ComboBox #pragma warning(push) #pragma warning(disable:4250) /// Drop down combo box style (Windows 7). - class Win7DropDownComboBoxStyle : public Win7ButtonStyle, public virtual controls::GuiComboBoxBase::IStyleController, public Description + class Win7DropDownComboBoxStyle : public Win7ButtonStyle, public virtual controls::GuiComboBoxListControl::IStyleController, public Description { protected: controls::GuiComboBoxBase::ICommandExecutor* commandExecutor; @@ -22198,6 +22284,8 @@ ComboBox compositions::GuiCellComposition* textComposition; compositions::GuiCellComposition* dropDownComposition; elements::GuiPolygonElement* dropDownElement; + WString text; + bool textVisible; void TransferInternal(controls::GuiButton::ControlState value, bool enabled, bool selected)override; void AfterApplyColors(const Win7ButtonColors& colors)override; @@ -22216,6 +22304,8 @@ ComboBox void SetShortcutText(const WString& value)override; void SetCommandExecutor(controls::GuiComboBoxBase::ICommandExecutor* value)override; void OnItemSelected()override; + void SetText(const WString& value)override; + void SetTextVisible(bool value)override; }; #pragma warning(pop) @@ -22543,7 +22633,7 @@ ComboBox #pragma warning(push) #pragma warning(disable:4250) /// Drop down combo box style (Windows 8). - class Win8DropDownComboBoxStyle : public Win8ButtonStyle, public virtual controls::GuiComboBoxBase::IStyleController, public Description + class Win8DropDownComboBoxStyle : public Win8ButtonStyle, public virtual controls::GuiComboBoxListControl::IStyleController, public Description { protected: controls::GuiComboBoxBase::ICommandExecutor* commandExecutor; @@ -22551,6 +22641,8 @@ ComboBox compositions::GuiCellComposition* textComposition; compositions::GuiCellComposition* dropDownComposition; elements::GuiPolygonElement* dropDownElement; + WString text; + bool textVisible; void TransferInternal(controls::GuiButton::ControlState value, bool enabled, bool selected)override; void AfterApplyColors(const Win8ButtonColors& colors)override; @@ -22569,6 +22661,8 @@ ComboBox void SetShortcutText(const WString& value)override; void SetCommandExecutor(controls::GuiComboBoxBase::ICommandExecutor* value)override; void OnItemSelected()override; + void SetText(const WString& value)override; + void SetTextVisible(bool value)override; }; #pragma warning(pop) diff --git a/Import/GacUICompiler.cpp b/Import/GacUICompiler.cpp index da93eb30..75180de8 100644 --- a/Import/GacUICompiler.cpp +++ b/Import/GacUICompiler.cpp @@ -3902,6 +3902,83 @@ GuiVirtualTreeViewInstanceLoader } }; +/*********************************************************************** +GuiComboBoxInstanceLoader +***********************************************************************/ + +#define BASE_TYPE GuiTemplateControlInstanceLoader + class GuiComboBoxInstanceLoader : public BASE_TYPE + { + protected: + GlobalStringKey _ListControl; + + void AddAdditionalArguments(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List& errors, Ptr createControl)override + { + vint indexListControl = arguments.Keys().IndexOf(_ListControl); + if (indexListControl != -1) + { + createControl->arguments.Add(arguments.GetByIndex(indexListControl)[0].expression); + } + } + public: + GuiComboBoxInstanceLoader() + :BASE_TYPE(L"presentation::controls::GuiComboBox", L"CreateComboBoxStyle") + { + _ListControl = GlobalStringKey::Get(L"ListControl"); + } + + void GetConstructorParameters(const TypeInfo& typeInfo, collections::List& propertyNames)override + { + if (typeInfo.typeName == GetTypeName()) + { + propertyNames.Add(_ListControl); + propertyNames.Add(GlobalStringKey::_ItemTemplate); + } + BASE_TYPE::GetConstructorParameters(typeInfo, propertyNames); + } + + Ptr GetPropertyType(const PropertyInfo& propertyInfo)override + { + if (propertyInfo.propertyName == _ListControl) + { + auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); + info->scope = GuiInstancePropertyInfo::Constructor; + info->required = true; + return info; + } + else if (propertyInfo.propertyName == GlobalStringKey::_ItemTemplate) + { + auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); + return info; + } + return BASE_TYPE::GetPropertyType(propertyInfo); + } + + Ptr AssignParameters(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List& errors)override + { + auto block = MakePtr(); + + FOREACH_INDEXER(GlobalStringKey, prop, index, arguments.Keys()) + { + const auto& values = arguments.GetByIndex(index); + if (prop == GlobalStringKey::_ItemTemplate) + { + if (auto stat = CreateSetControlTemplateStyle(variableName, arguments.GetByIndex(index)[0].expression, typeInfo, L"StyleProvider", errors)) + { + block->statements.Add(stat); + } + } + } + + if (block->statements.Count() > 0) + { + return block; + } + return nullptr; + } + }; +#undef BASE_TYPE + /*********************************************************************** GuiListViewInstanceLoader ***********************************************************************/ @@ -4313,6 +4390,7 @@ GuiBindableTextListInstanceLoader auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); info->scope = GuiInstancePropertyInfo::Constructor; info->required = true; + info->bindable = true; return info; } return BASE_TYPE::GetPropertyType(propertyInfo); @@ -4780,6 +4858,11 @@ Initialization void LoadListControls(IGuiInstanceLoaderManager* manager) { + manager->CreateVirtualType( + GlobalStringKey::Get(description::TypeInfo::TypeName), + new GuiComboBoxInstanceLoader + ); + manager->SetLoader(new GuiSelectableListControlInstanceLoader); manager->SetLoader(new GuiVirtualTreeViewInstanceLoader); @@ -4956,54 +5039,6 @@ GuiControlInstanceLoader } }; -/*********************************************************************** -GuiComboBoxInstanceLoader -***********************************************************************/ - -#define BASE_TYPE GuiTemplateControlInstanceLoader - class GuiComboBoxInstanceLoader : public BASE_TYPE - { - protected: - GlobalStringKey _ListControl; - - void AddAdditionalArguments(const TypeInfo& typeInfo, GlobalStringKey variableName, ArgumentMap& arguments, collections::List& errors, Ptr createControl)override - { - vint indexListControl = arguments.Keys().IndexOf(_ListControl); - if (indexListControl != -1) - { - createControl->arguments.Add(arguments.GetByIndex(indexListControl)[0].expression); - } - } - public: - GuiComboBoxInstanceLoader() - :BASE_TYPE(L"presentation::controls::GuiComboBox", L"CreateComboBoxStyle") - { - _ListControl = GlobalStringKey::Get(L"ListControl"); - } - - void GetConstructorParameters(const TypeInfo& typeInfo, collections::List& propertyNames)override - { - if (typeInfo.typeName == GetTypeName()) - { - propertyNames.Add(_ListControl); - } - BASE_TYPE::GetConstructorParameters(typeInfo, propertyNames); - } - - Ptr GetPropertyType(const PropertyInfo& propertyInfo)override - { - if (propertyInfo.propertyName == _ListControl) - { - auto info = GuiInstancePropertyInfo::Assign(description::GetTypeDescriptor()); - info->scope = GuiInstancePropertyInfo::Constructor; - info->required = true; - return info; - } - return BASE_TYPE::GetPropertyType(propertyInfo); - } - }; -#undef BASE_TYPE - #endif /*********************************************************************** @@ -5122,7 +5157,6 @@ GuiPredefinedInstanceLoadersPlugin ) manager->SetLoader(new GuiControlInstanceLoader); - ADD_VIRTUAL_TYPE_LOADER(GuiComboBoxListControl, GuiComboBoxInstanceLoader); ADD_TEMPLATE_CONTROL ( GuiCustomControl, CreateCustomControlStyle, GuiControlTemplate ); ADD_TEMPLATE_CONTROL ( GuiLabel, CreateLabelStyle, GuiLabelTemplate ); diff --git a/Import/GacUIReflection.cpp b/Import/GacUIReflection.cpp index 97738bd0..c31da9be 100644 --- a/Import/GacUIReflection.cpp +++ b/Import/GacUIReflection.cpp @@ -1886,6 +1886,7 @@ Type Declaration CLASS_MEMBER_BASE(GuiScrollView) CLASS_MEMBER_CONSTRUCTOR(GuiListControl*(GuiListControl::IStyleProvider* _ GuiListControl::IItemProvider* _ bool), {L"styleProvider" _ L"itemProvider" _ L"acceptFocus"}) + CLASS_MEMBER_GUIEVENT(AdoptedSizeInvalidated) CLASS_MEMBER_GUIEVENT(ItemLeftButtonDown) CLASS_MEMBER_GUIEVENT(ItemLeftButtonUp) CLASS_MEMBER_GUIEVENT(ItemLeftButtonDoubleClick) @@ -1905,6 +1906,7 @@ Type Declaration CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Axis) CLASS_MEMBER_METHOD(EnsureItemVisible, {L"itemIndex"}) + CLASS_MEMBER_METHOD(GetAdoptedSize, {L"expectedSize"}) END_CLASS_MEMBER(GuiListControl) BEGIN_INTERFACE_MEMBER(GuiListControl::IItemProviderCallback) @@ -1989,6 +1991,7 @@ Type Declaration CLASS_MEMBER_METHOD(OnViewChanged, {L"bounds"}) CLASS_MEMBER_METHOD(FindItem, {L"itemIndex" _ L"key"}) CLASS_MEMBER_METHOD(EnsureItemVisible, {L"itemIndex"}) + CLASS_MEMBER_METHOD(GetAdoptedSize, {L"expectedSize"}) END_INTERFACE_MEMBER(GuiListControl::IItemArranger) BEGIN_CLASS_MEMBER(GuiSelectableListControl) @@ -2582,10 +2585,24 @@ Type Declaration CLASS_MEMBER_PROPERTY_FAST(Font) CLASS_MEMBER_PROPERTY_READONLY_FAST(ContainedListControl) + CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(StyleProvider) CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(SelectedIndex) + CLASS_MEMBER_PROPERTY_EVENT_READONLY_FAST(SelectedItem, SelectedIndexChanged) CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemProvider) END_CLASS_MEMBER(GuiComboBoxListControl) + BEGIN_INTERFACE_MEMBER(GuiComboBoxListControl::IStyleController) + CLASS_MEMBER_BASE(GuiComboBoxBase::IStyleController) + + CLASS_MEMBER_METHOD(SetTextVisible, {L"value"}) + END_INTERFACE_MEMBER(GuiComboBoxListControl::IStyleController) + + BEGIN_INTERFACE_MEMBER(GuiComboBoxListControl::IItemStyleProvider) + CLASS_MEMBER_METHOD(AttachComboBox, {L"value"}) + CLASS_MEMBER_METHOD(DetachComboBox, NO_PARAMETER) + CLASS_MEMBER_METHOD(CreateItemStyle, {L"item"}) + END_INTERFACE_MEMBER(GuiComboBoxListControl::IItemStyleProvider) + BEGIN_CLASS_MEMBER(GuiToolstripCommand) CLASS_MEMBER_BASE(GuiComponent) CLASS_MEMBER_CONSTRUCTOR(GuiToolstripCommand*(), NO_PARAMETER) @@ -4024,7 +4041,7 @@ Type Declaration BEGIN_CLASS_MEMBER(GuiComboBoxTemplate_StyleProvider) CLASS_MEMBER_BASE(GuiToolstripButtonTemplate_StyleProvider) - CLASS_MEMBER_BASE(GuiComboBoxBase::IStyleController) + CLASS_MEMBER_BASE(GuiComboBoxListControl::IStyleController) CLASS_MEMBER_CONSTRUCTOR(GuiComboBoxTemplate_StyleProvider*(Ptr), { L"factory" }) END_CLASS_MEMBER(GuiComboBoxTemplate_StyleProvider) @@ -4086,6 +4103,12 @@ Type Declaration CLASS_MEMBER_CONSTRUCTOR(GuiTabTemplate_StyleProvider*(Ptr), { L"factory" }) END_CLASS_MEMBER(GuiTabTemplate_StyleProvider) + BEGIN_CLASS_MEMBER(GuiControlTemplate_ItemStyleProvider) + CLASS_MEMBER_BASE(GuiComboBoxListControl::IItemStyleProvider) + + CLASS_MEMBER_CONSTRUCTOR(Ptr(Ptr), { L"factory" }) + END_CLASS_MEMBER(GuiControlTemplate_ItemStyleProvider) + BEGIN_CLASS_MEMBER(GuiListItemTemplate_ItemStyleController) CLASS_MEMBER_BASE(GuiListControl::IItemStyleController) diff --git a/Import/GacUIReflection.h b/Import/GacUIReflection.h index b1681a92..d4ecfff4 100644 --- a/Import/GacUIReflection.h +++ b/Import/GacUIReflection.h @@ -596,6 +596,8 @@ Type List F(presentation::controls::GuiComboBoxBase::ICommandExecutor)\ F(presentation::controls::GuiComboBoxBase::IStyleController)\ F(presentation::controls::GuiComboBoxListControl)\ + F(presentation::controls::GuiComboBoxListControl::IStyleController)\ + F(presentation::controls::GuiComboBoxListControl::IItemStyleProvider)\ F(presentation::controls::GuiToolstripCommand)\ F(presentation::controls::GuiToolstripMenu)\ F(presentation::controls::GuiToolstripMenuBar)\ @@ -1086,6 +1088,11 @@ Interface Proxy { INVOKEGET_INTERFACE_PROXY(EnsureItemVisible, itemIndex); } + + presentation::Size GetAdoptedSize(presentation::Size expectedSize)override + { + INVOKEGET_INTERFACE_PROXY(GetAdoptedSize, expectedSize); + } END_INTERFACE_PROXY(presentation::controls::GuiListControl::IItemArranger) BEGIN_INTERFACE_PROXY_SHAREDPTR(presentation::controls::GuiSelectableListControl::IItemStyleProvider, @@ -1583,6 +1590,34 @@ Interface Proxy } END_INTERFACE_PROXY(presentation::controls::GuiComboBoxBase::IStyleController) + BEGIN_INTERFACE_PROXY_RAWPTR(presentation::controls::GuiComboBoxListControl::IStyleController, + presentation::controls::GuiComboBoxBase::IStyleController + ) + + void SetTextVisible(bool value)override + { + INVOKE_INTERFACE_PROXY(SetTextVisible, value); + } + END_INTERFACE_PROXY(presentation::controls::GuiComboBoxListControl::IStyleController) + + BEGIN_INTERFACE_PROXY_SHAREDPTR(presentation::controls::GuiComboBoxListControl::IItemStyleProvider) + + void AttachComboBox(presentation::controls::GuiComboBoxListControl* value)override + { + INVOKE_INTERFACE_PROXY(AttachComboBox, value); + } + + void DetachComboBox()override + { + INVOKE_INTERFACE_PROXY_NOPARAMS(DetachComboBox); + } + + presentation::controls::GuiControl::IStyleController* CreateItemStyle(description::Value item)override + { + INVOKEGET_INTERFACE_PROXY(CreateItemStyle, item); + } + END_INTERFACE_PROXY(presentation::controls::GuiComboBoxListControl::IItemStyleProvider) + BEGIN_INTERFACE_PROXY_RAWPTR(presentation::controls::GuiSinglelineTextBox::IStyleProvider, presentation::controls::GuiControl::IStyleProvider ) @@ -2037,6 +2072,7 @@ Type List F(presentation::templates::GuiListViewTemplate_StyleProvider)\ F(presentation::templates::GuiTreeViewTemplate_StyleProvider)\ F(presentation::templates::GuiTabTemplate_StyleProvider)\ + F(presentation::templates::GuiControlTemplate_ItemStyleProvider)\ F(presentation::templates::GuiListItemTemplate_ItemStyleController)\ F(presentation::templates::GuiListItemTemplate_ItemStyleProvider)\ F(presentation::templates::GuiTreeItemTemplate_ItemStyleProvider)\ diff --git a/Tools/GacGen.exe b/Tools/GacGen.exe index f46cfcc9..a37f12ba 100644 Binary files a/Tools/GacGen.exe and b/Tools/GacGen.exe differ diff --git a/Tools/ParserGen.exe b/Tools/ParserGen.exe index d67e3454..410f70af 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 044200ba..00125e99 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/ContainersAndButtons.bin b/Tutorial/GacUI_Controls/UIRes/ContainersAndButtons.bin index 8939c14d..e241b6e2 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 e07b890b..913dbee7 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 ae452060..99cbfee0 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 af0fde1b..602777a4 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 7da42b17..f02f8945 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 bd1e68b4..00828d21 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 bf6ae336..f75a8c73 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 278dd6e5..e1c211fc 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 0a16d4a0..fc8f7db0 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 0ee9f95b..e8389f5f 100644 Binary files a/Tutorial/GacUI_Layout/UIRes/Table.bin and b/Tutorial/GacUI_Layout/UIRes/Table.bin differ diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin b/Tutorial/GacUI_Xml/UIRes/Binding_Bind.bin index a08c2d2f..b3f2e4c3 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 74de8f43..ec9a700c 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 c85d748a..6e5dad70 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 4929b071..4fe9196a 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 5c2b0024..b35fe5c9 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 3dceabee..a19b572b 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 b2aad4fb..a890aedd 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 34767dab..ba8d9d96 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 175e773a..7c807271 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 aca8fc44..8302519f 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 3cb6b64b..8987a97c 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 899b5d96..e6f7558d 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 09ed01bc..9ded8673 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 e1b66509..8f64a0e8 100644 Binary files a/Tutorial/GacUI_Xml/UIRes/Member_Property.bin and b/Tutorial/GacUI_Xml/UIRes/Member_Property.bin differ