From bc4f8f4235c62afb193427d7baceab3c2dd8afd2 Mon Sep 17 00:00:00 2001 From: Zihan Chen Date: Tue, 24 Jan 2017 15:43:23 -0800 Subject: [PATCH] Controls/ContainersAndButtons --- Import/Vlpp.h | 10 +- Import/VlppWorkflowCompiler.cpp | 9 +- .../AddressBook/UI/Resource.xml | 16 +- .../ColorPicker/ColorPicker.vcxproj | 14 +- .../ColorPicker/UI/Resource.xml | 40 +- .../ColorPicker/UI/Source/Demo.h | 61 +- .../UI/Source/DemoPartialClasses.cpp | 1219 +++++++++++++++-- .../UI/Source/DemoPartialClasses.h | 396 +++--- .../ContainersAndButtons.vcxproj | 8 +- .../ContainersAndButtons/UI/Resource.xml | 10 +- .../ContainersAndButtons/UI/Source/Demo.h | 37 +- .../UI/Source/DemoPartialClasses.cpp | 771 ++++++++++- .../UI/Source/DemoPartialClasses.h | 186 ++- Tutorial/GacUI_Controls/UIRes/ColorPicker.bin | Bin 572215 -> 612 bytes .../UIRes/ContainersAndButtons.bin | Bin 634204 -> 524 bytes 15 files changed, 2311 insertions(+), 466 deletions(-) diff --git a/Import/Vlpp.h b/Import/Vlpp.h index 5ab6c952..49ac0fba 100644 --- a/Import/Vlpp.h +++ b/Import/Vlpp.h @@ -9379,7 +9379,7 @@ Interface Implementation Proxy class IValueSubscription : public virtual IDescriptable, public Description { public: - virtual Ptr Subscribe(const Func& callback) = 0; + virtual Ptr Subscribe(const Func& callback) = 0; virtual bool Update() = 0; virtual bool Close() = 0; }; @@ -12010,7 +12010,8 @@ TypeInfoRetriver Helper Functions (BoxValue, UnboxValue) template Value BoxValue(const T& object, ITypeDescriptor* typeDescriptor=0) { - return ValueAccessor::Decorator>::BoxValue(object, typeDescriptor); + using Type = RemoveCVR::Type; + return ValueAccessor::Decorator>::BoxValue(object, typeDescriptor); } /// Unbox an reflectable object. Its type cannot be generic. @@ -12022,7 +12023,8 @@ TypeInfoRetriver Helper Functions (BoxValue, UnboxValue) template T UnboxValue(const Value& value, ITypeDescriptor* typeDescriptor=0, const WString& valueName=L"value") { - return ValueAccessor::Decorator>::UnboxValue(value, typeDescriptor, valueName); + using Type = RemoveCVR::Type; + return ValueAccessor::Decorator>::UnboxValue(value, typeDescriptor, valueName); } /*********************************************************************** @@ -18491,7 +18493,7 @@ Interface Implementation Proxy (Implement) END_INTERFACE_PROXY(IValueListener) BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(IValueSubscription) - Ptr Subscribe(const Func& callback)override + Ptr Subscribe(const Func& callback)override { INVOKEGET_INTERFACE_PROXY(Subscribe, callback); } diff --git a/Import/VlppWorkflowCompiler.cpp b/Import/VlppWorkflowCompiler.cpp index d18c7ec5..47e28f42 100644 --- a/Import/VlppWorkflowCompiler.cpp +++ b/Import/VlppWorkflowCompiler.cpp @@ -14776,6 +14776,7 @@ WfCppConfig auto td = typeInfo->GetTypeDescriptor(); bool constRef = td == description::GetTypeDescriptor() || + td == description::GetTypeDescriptor() || ( typeInfo->GetDecorator() == ITypeInfo::SharedPtr && typeInfo->GetElementType()->GetDecorator() == ITypeInfo::Generic && ( @@ -17250,10 +17251,14 @@ WfGenerateExpressionVisitor } else if (node->op == WfBinaryOperator::FailedThen) { + auto firstResult = config->manager->expressionResolvings[node->first.Obj()]; + auto secondResult = config->manager->expressionResolvings[node->second.Obj()]; + auto mergedType = GetMergedType(firstResult.type, secondResult.type); + writer.WriteString(L"[&](){ try{ return "); - Call(node->first); + Call(node->first, mergedType.Obj()); writer.WriteString(L"; } catch(...){ return "); - Call(node->second); + Call(node->second, mergedType.Obj()); writer.WriteString(L"; } }()"); } else diff --git a/Tutorial/GacUI_Controls/AddressBook/UI/Resource.xml b/Tutorial/GacUI_Controls/AddressBook/UI/Resource.xml index d23e91ec..84e1b1ba 100644 --- a/Tutorial/GacUI_Controls/AddressBook/UI/Resource.xml +++ b/Tutorial/GacUI_Controls/AddressBook/UI/Resource.xml @@ -2,19 +2,15 @@ - Source - GacUIReflection.h + Source + ..\..\UIRes\AddressBook.bin + GacUI.h Demo - - - - ..\..\UIRes - AddressBook.bin - diff --git a/Tutorial/GacUI_Controls/ColorPicker/ColorPicker.vcxproj b/Tutorial/GacUI_Controls/ColorPicker/ColorPicker.vcxproj index 9b70971e..fc755dac 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/ColorPicker.vcxproj +++ b/Tutorial/GacUI_Controls/ColorPicker/ColorPicker.vcxproj @@ -53,7 +53,7 @@ Level3 Disabled - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);VCZH_DEBUG_NO_REFLECTION true @@ -69,7 +69,7 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);VCZH_DEBUG_NO_REFLECTION true @@ -79,11 +79,6 @@ true - - - {8018d622-66ba-4e65-9d03-bdac37ea9a54} - - @@ -95,6 +90,11 @@ + + + {96c559ca-9718-4bec-a053-28a0ab6a8ca2} + + diff --git a/Tutorial/GacUI_Controls/ColorPicker/UI/Resource.xml b/Tutorial/GacUI_Controls/ColorPicker/UI/Resource.xml index d7ced6d0..cfcdfb1d 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/UI/Resource.xml +++ b/Tutorial/GacUI_Controls/ColorPicker/UI/Resource.xml @@ -2,19 +2,15 @@ - Source - GacUIReflection.h + Source + ..\..\UIRes\ColorPicker.bin + GacUI.h Demo - - - - ..\..\UIRes - ColorPicker.bin - @@ -82,7 +78,29 @@ - + + + diff --git a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/Demo.h b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/Demo.h index febeba0f..b902c7a9 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/Demo.h +++ b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/Demo.h @@ -1,16 +1,59 @@ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -GacUI::Demo +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! -This file is generated by: Vczh GacUI Resource Code Generator -************************************************************************ -DO NOT MODIFY +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries ***********************************************************************/ -#ifndef VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo -#define VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMO +#define VCZH_WORKFLOW_COMPILER_GENERATED_DEMO #include "DemoPartialClasses.h" +/*********************************************************************** +Reflection +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + DECL_TYPE_INFO(::demo::ColorBomboItemTemplate) + DECL_TYPE_INFO(::demo::ColorBomboItemTemplateConstructor) + DECL_TYPE_INFO(::demo::ColorListItemTemplate) + DECL_TYPE_INFO(::demo::ColorListItemTemplateConstructor) + DECL_TYPE_INFO(::demo::IColorItem) + DECL_TYPE_INFO(::demo::IViewModel) + DECL_TYPE_INFO(::demo::MainWindow) + DECL_TYPE_INFO(::demo::MainWindowConstructor) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(::demo::IColorItem) + ::vl::presentation::Color GetItemColor() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetItemColor); + } + ::vl::WString GetItemName() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetItemName); + } + END_INTERFACE_PROXY(::demo::IColorItem) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(::demo::IViewModel) + ::vl::collections::LazyList<::vl::Ptr<::demo::IColorItem>> GetColorItems() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetColorItems); + } + END_INTERFACE_PROXY(::demo::IViewModel) +#endif + + extern bool LoadDemoTypes(); + } + } +} + #endif diff --git a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.cpp index 78bab742..09dec82e 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.cpp @@ -1,98 +1,1076 @@ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -GacUI::Partial Classes +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! -This file is generated by: Vczh GacUI Resource Code Generator -************************************************************************ -DO NOT MODIFY +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries ***********************************************************************/ #include "Demo.h" +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif + +#define GLOBAL_SYMBOL ::vl_workflow_global::Demo:: +#define GLOBAL_NAME ::vl_workflow_global::Demo::Instance(). +#define GLOBAL_OBJ &::vl_workflow_global::Demo::Instance() +#define USERIMPL(...) + +/*********************************************************************** +Global Variables +***********************************************************************/ + +BEGIN_GLOBAL_STORAGE_CLASS(vl_workflow_global_Demo) + vl_workflow_global::Demo instance; + INITIALIZE_GLOBAL_STORAGE_CLASS + FINALIZE_GLOBAL_STORAGE_CLASS +END_GLOBAL_STORAGE_CLASS(vl_workflow_global_Demo) + +namespace vl_workflow_global +{ +/*********************************************************************** +Closure Definitions +***********************************************************************/ + + struct __vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__ + { + ::demo::ColorBomboItemTemplateConstructor* __vwsnthis_0; + + __vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__(::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__ + { + ::demo::ColorBomboItemTemplateConstructor* __vwsnthis_0; + + __vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__(::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__ + { + ::demo::ColorListItemTemplateConstructor* __vwsnthis_0; + + __vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__(::demo::ColorListItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__ + { + ::demo::ColorListItemTemplateConstructor* __vwsnthis_0; + + __vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__(::demo::ColorListItemTemplateConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + class __vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory : public ::vl::Object, public virtual ::vl::presentation::templates::GuiTemplate::IFactory + { + public: + ::demo::MainWindowConstructor* __vwsnthis_0; + + __vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory(::demo::MainWindowConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTemplate* CreateTemplate(const ::vl::reflection::description::Value& __vwsn_viewModel_) override; + }; + + class __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::demo::ColorBomboItemTemplateConstructor* __vwsnthis_0; + + __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_0); + + ::demo::ColorBomboItemTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_bind_listeners_; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(); + void __vwsn_bind_initialize_(); + ::vl::Ptr<::vl::reflection::description::IValueListener> Subscribe(const ::vl::Func& __vwsn_bind_callback_) override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener : public ::vl::Object, public virtual ::vl::reflection::description::IValueListener + { + public: + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_bind_listeners_; + ::vl::reflection::description::IValueSubscription* __vwsn_subscription_; + ::vl::reflection::description::IValueSubscription* __vwsnthis_0; + ::demo::ColorBomboItemTemplateConstructor* __vwsnthis_1; + + __vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsnctor___vwsn_bind_listeners_, ::vl::reflection::description::IValueSubscription* __vwsnctor___vwsn_subscription_, ::vl::reflection::description::IValueSubscription* __vwsnctorthis_0, ::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_1); + + ::vl::reflection::description::IValueSubscription* GetSubscription() override; + bool GetStopped() override; + bool StopListening() override; + }; + + class __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::demo::ColorBomboItemTemplateConstructor* __vwsnthis_0; + + __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_0); + + ::demo::ColorBomboItemTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_bind_listeners_; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_initialize_(); + ::vl::Ptr<::vl::reflection::description::IValueListener> Subscribe(const ::vl::Func& __vwsn_bind_callback_) override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener : public ::vl::Object, public virtual ::vl::reflection::description::IValueListener + { + public: + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_bind_listeners_; + ::vl::reflection::description::IValueSubscription* __vwsn_subscription_; + ::vl::reflection::description::IValueSubscription* __vwsnthis_0; + ::demo::ColorBomboItemTemplateConstructor* __vwsnthis_1; + + __vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsnctor___vwsn_bind_listeners_, ::vl::reflection::description::IValueSubscription* __vwsnctor___vwsn_subscription_, ::vl::reflection::description::IValueSubscription* __vwsnctorthis_0, ::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_1); + + ::vl::reflection::description::IValueSubscription* GetSubscription() override; + bool GetStopped() override; + bool StopListening() override; + }; + + class __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::demo::ColorListItemTemplateConstructor* __vwsnthis_0; + + __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(::demo::ColorListItemTemplateConstructor* __vwsnctorthis_0); + + ::demo::ColorListItemTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_bind_listeners_; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_initialize_(); + ::vl::Ptr<::vl::reflection::description::IValueListener> Subscribe(const ::vl::Func& __vwsn_bind_callback_) override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener : public ::vl::Object, public virtual ::vl::reflection::description::IValueListener + { + public: + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_bind_listeners_; + ::vl::reflection::description::IValueSubscription* __vwsn_subscription_; + ::vl::reflection::description::IValueSubscription* __vwsnthis_0; + ::demo::ColorListItemTemplateConstructor* __vwsnthis_1; + + __vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsnctor___vwsn_bind_listeners_, ::vl::reflection::description::IValueSubscription* __vwsnctor___vwsn_subscription_, ::vl::reflection::description::IValueSubscription* __vwsnctorthis_0, ::demo::ColorListItemTemplateConstructor* __vwsnctorthis_1); + + ::vl::reflection::description::IValueSubscription* GetSubscription() override; + bool GetStopped() override; + bool StopListening() override; + }; + + class __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::demo::ColorListItemTemplateConstructor* __vwsnthis_0; + + __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(::demo::ColorListItemTemplateConstructor* __vwsnctorthis_0); + + ::demo::ColorListItemTemplate* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_bind_listeners_; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + void __vwsn_bind_initialize_(); + ::vl::Ptr<::vl::reflection::description::IValueListener> Subscribe(const ::vl::Func& __vwsn_bind_callback_) override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener : public ::vl::Object, public virtual ::vl::reflection::description::IValueListener + { + public: + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_bind_listeners_; + ::vl::reflection::description::IValueSubscription* __vwsn_subscription_; + ::vl::reflection::description::IValueSubscription* __vwsnthis_0; + ::demo::ColorListItemTemplateConstructor* __vwsnthis_1; + + __vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsnctor___vwsn_bind_listeners_, ::vl::reflection::description::IValueSubscription* __vwsnctor___vwsn_subscription_, ::vl::reflection::description::IValueSubscription* __vwsnctorthis_0, ::demo::ColorListItemTemplateConstructor* __vwsnctorthis_1); + + ::vl::reflection::description::IValueSubscription* GetSubscription() override; + bool GetStopped() override; + bool StopListening() override; + }; + + class __vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory : public ::vl::Object, public virtual ::vl::presentation::templates::GuiTemplate::IFactory + { + public: + ::demo::MainWindowConstructor* __vwsnthis_0; + + __vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory(::demo::MainWindowConstructor* __vwsnctorthis_0); + + ::vl::presentation::templates::GuiTemplate* CreateTemplate(const ::vl::reflection::description::Value& __vwsn_viewModel_) override; + }; + + //------------------------------------------------------------------- + + __vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__::__vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__(::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + } + + void __vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->__vwsn_precompile_4.Obj())->GetColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->__vwsn_precompile_4.Obj())->SetColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__::__vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__(::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + } + + void __vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->__vwsn_precompile_4.Obj())->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->__vwsn_precompile_4.Obj())->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__::__vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__(::demo::ColorListItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + } + + void __vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->__vwsn_precompile_0)->GetFont(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::FontProperties>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->__vwsn_precompile_0)->SetFont(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__::__vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__(::demo::ColorListItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + } + + void __vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->__vwsn_precompile_0)->GetTextColor(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::presentation::Color>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->__vwsn_precompile_0)->SetTextColor(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory::__vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory(::demo::MainWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + } + + ::vl::presentation::templates::GuiTemplate* __vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory::CreateTemplate(const ::vl::reflection::description::Value& __vwsn_viewModel_) + { + { + if ([&](){ auto __vwsn_temp__ = __vwsn_viewModel_; return __vwsn_temp__.GetSharedPtr() && ::vl::__vwsn::RawPtrCast<::demo::IColorItem>(__vwsn_temp__.GetRawPtr()) != nullptr; }()) + { + auto __vwsn_template_ = ::vl::__vwsn::Ensure(static_cast<::vl::presentation::templates::GuiControlTemplate*>(new ::demo::ColorBomboItemTemplate(::vl::__vwsn::Unbox<::vl::Ptr<::demo::IColorItem>>(__vwsn_viewModel_)))); + return ::vl::__vwsn::Ensure(static_cast<::vl::presentation::templates::GuiTemplate*>(__vwsn_template_)); + } + } + } + + //------------------------------------------------------------------- + + __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + this->__vwsn_bind_cache_0 = static_cast<::demo::ColorBomboItemTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + this->__vwsn_bind_listeners_ = ::vl::reflection::description::IValueDictionary::Create(); + } + + void __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetTextColor(); + using __vwsnt_0 = ::vl::reflection::description::Value; + FOREACH(__vwsnt_0, __vwsn_bind_callback_, ::vl::reflection::description::GetLazyList<::vl::reflection::description::Value>(::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->GetValues())) + { + ::vl::__vwsn::Unbox<::vl::Func>(__vwsn_bind_callback_)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + } + + void __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0() + { + ::vl::__vwsn::This(this)->__vwsn_bind_activator_(); + } + + void __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_initialize_() + { + (__vwsn_bind_cache_0 = ::vl::__vwsn::This(__vwsnthis_0)->self); + (__vwsn_bind_handler_0_0 = ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextColorChanged, ::vl::Func(::vl::__vwsn::This(this), &__vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0))); + } + + ::vl::Ptr<::vl::reflection::description::IValueListener> __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Subscribe(const ::vl::Func& __vwsn_bind_callback_) + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + ::vl::__vwsn::This(this)->__vwsn_bind_initialize_(); + } + auto __vwsn_subscription_ = this; + auto __vwsn_listener_shared_ = ::vl::Ptr<::vl::reflection::description::IValueListener>(new ::vl_workflow_global::__vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(__vwsn_bind_listeners_, __vwsn_subscription_, this, __vwsnthis_0)); + ::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->Set(::vl::__vwsn::Box(__vwsn_listener_shared_), ::vl::__vwsn::Box(__vwsn_bind_callback_)); + return __vwsn_listener_shared_; + } + + bool __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Update() + { + if ((! __vwsn_bind_closed_)) + { + ::vl::__vwsn::This(this)->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextColorChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_cache_0 = static_cast<::demo::ColorBomboItemTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + ::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->Clear(); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::__vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsnctor___vwsn_bind_listeners_, ::vl::reflection::description::IValueSubscription* __vwsnctor___vwsn_subscription_, ::vl::reflection::description::IValueSubscription* __vwsnctorthis_0, ::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_1) + :__vwsn_bind_listeners_(__vwsnctor___vwsn_bind_listeners_) + , __vwsn_subscription_(__vwsnctor___vwsn_subscription_) + , __vwsnthis_0(__vwsnctorthis_0) + , __vwsnthis_1(__vwsnctorthis_1) + { + } + + ::vl::reflection::description::IValueSubscription* __vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::GetSubscription() + { + return ::vl::__vwsn::This(this)->__vwsn_subscription_; + } + + bool __vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::GetStopped() + { + return (! ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(this))); + } + + bool __vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::StopListening() + { + if (::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(this))) + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->Remove(::vl::__vwsn::Box(this)); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + this->__vwsn_bind_cache_0 = static_cast<::demo::ColorBomboItemTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + this->__vwsn_bind_listeners_ = ::vl::reflection::description::IValueDictionary::Create(); + } + + void __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + using __vwsnt_0 = ::vl::reflection::description::Value; + FOREACH(__vwsnt_0, __vwsn_bind_callback_, ::vl::reflection::description::GetLazyList<::vl::reflection::description::Value>(::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->GetValues())) + { + ::vl::__vwsn::Unbox<::vl::Func>(__vwsn_bind_callback_)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + } + + void __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + ::vl::__vwsn::This(this)->__vwsn_bind_activator_(); + } + + void __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_initialize_() + { + (__vwsn_bind_cache_0 = ::vl::__vwsn::This(__vwsnthis_0)->self); + (__vwsn_bind_handler_0_0 = ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(::vl::__vwsn::This(this), &__vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0))); + } + + ::vl::Ptr<::vl::reflection::description::IValueListener> __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Subscribe(const ::vl::Func& __vwsn_bind_callback_) + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + ::vl::__vwsn::This(this)->__vwsn_bind_initialize_(); + } + auto __vwsn_subscription_ = this; + auto __vwsn_listener_shared_ = ::vl::Ptr<::vl::reflection::description::IValueListener>(new ::vl_workflow_global::__vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(__vwsn_bind_listeners_, __vwsn_subscription_, this, __vwsnthis_0)); + ::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->Set(::vl::__vwsn::Box(__vwsn_listener_shared_), ::vl::__vwsn::Box(__vwsn_bind_callback_)); + return __vwsn_listener_shared_; + } + + bool __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Update() + { + if ((! __vwsn_bind_closed_)) + { + ::vl::__vwsn::This(this)->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_cache_0 = static_cast<::demo::ColorBomboItemTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + ::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->Clear(); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::__vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsnctor___vwsn_bind_listeners_, ::vl::reflection::description::IValueSubscription* __vwsnctor___vwsn_subscription_, ::vl::reflection::description::IValueSubscription* __vwsnctorthis_0, ::demo::ColorBomboItemTemplateConstructor* __vwsnctorthis_1) + :__vwsn_bind_listeners_(__vwsnctor___vwsn_bind_listeners_) + , __vwsn_subscription_(__vwsnctor___vwsn_subscription_) + , __vwsnthis_0(__vwsnctorthis_0) + , __vwsnthis_1(__vwsnctorthis_1) + { + } + + ::vl::reflection::description::IValueSubscription* __vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::GetSubscription() + { + return ::vl::__vwsn::This(this)->__vwsn_subscription_; + } + + bool __vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::GetStopped() + { + return (! ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(this))); + } + + bool __vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::StopListening() + { + if (::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(this))) + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->Remove(::vl::__vwsn::Box(this)); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(::demo::ColorListItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + this->__vwsn_bind_cache_0 = static_cast<::demo::ColorListItemTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + this->__vwsn_bind_listeners_ = ::vl::reflection::description::IValueDictionary::Create(); + } + + void __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetFont(); + using __vwsnt_0 = ::vl::reflection::description::Value; + FOREACH(__vwsnt_0, __vwsn_bind_callback_, ::vl::reflection::description::GetLazyList<::vl::reflection::description::Value>(::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->GetValues())) + { + ::vl::__vwsn::Unbox<::vl::Func>(__vwsn_bind_callback_)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + } + + void __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + ::vl::__vwsn::This(this)->__vwsn_bind_activator_(); + } + + void __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_initialize_() + { + (__vwsn_bind_cache_0 = ::vl::__vwsn::This(__vwsnthis_0)->self); + (__vwsn_bind_handler_0_0 = ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, ::vl::Func(::vl::__vwsn::This(this), &__vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0))); + } + + ::vl::Ptr<::vl::reflection::description::IValueListener> __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Subscribe(const ::vl::Func& __vwsn_bind_callback_) + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + ::vl::__vwsn::This(this)->__vwsn_bind_initialize_(); + } + auto __vwsn_subscription_ = this; + auto __vwsn_listener_shared_ = ::vl::Ptr<::vl::reflection::description::IValueListener>(new ::vl_workflow_global::__vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(__vwsn_bind_listeners_, __vwsn_subscription_, this, __vwsnthis_0)); + ::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->Set(::vl::__vwsn::Box(__vwsn_listener_shared_), ::vl::__vwsn::Box(__vwsn_bind_callback_)); + return __vwsn_listener_shared_; + } + + bool __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Update() + { + if ((! __vwsn_bind_closed_)) + { + ::vl::__vwsn::This(this)->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->FontChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_cache_0 = static_cast<::demo::ColorListItemTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + ::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->Clear(); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::__vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsnctor___vwsn_bind_listeners_, ::vl::reflection::description::IValueSubscription* __vwsnctor___vwsn_subscription_, ::vl::reflection::description::IValueSubscription* __vwsnctorthis_0, ::demo::ColorListItemTemplateConstructor* __vwsnctorthis_1) + :__vwsn_bind_listeners_(__vwsnctor___vwsn_bind_listeners_) + , __vwsn_subscription_(__vwsnctor___vwsn_subscription_) + , __vwsnthis_0(__vwsnctorthis_0) + , __vwsnthis_1(__vwsnctorthis_1) + { + } + + ::vl::reflection::description::IValueSubscription* __vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::GetSubscription() + { + return ::vl::__vwsn::This(this)->__vwsn_subscription_; + } + + bool __vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::GetStopped() + { + return (! ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(this))); + } + + bool __vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::StopListening() + { + if (::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(this))) + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->Remove(::vl::__vwsn::Box(this)); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(::demo::ColorListItemTemplateConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + this->__vwsn_bind_cache_0 = static_cast<::demo::ColorListItemTemplate*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + this->__vwsn_bind_listeners_ = ::vl::reflection::description::IValueDictionary::Create(); + } + + void __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(__vwsn_bind_cache_0)->GetTextColor(); + using __vwsnt_0 = ::vl::reflection::description::Value; + FOREACH(__vwsnt_0, __vwsn_bind_callback_, ::vl::reflection::description::GetLazyList<::vl::reflection::description::Value>(::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->GetValues())) + { + ::vl::__vwsn::Unbox<::vl::Func>(__vwsn_bind_callback_)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + } + + void __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + ::vl::__vwsn::This(this)->__vwsn_bind_activator_(); + } + + void __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_initialize_() + { + (__vwsn_bind_cache_0 = ::vl::__vwsn::This(__vwsnthis_0)->self); + (__vwsn_bind_handler_0_0 = ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextColorChanged, ::vl::Func(::vl::__vwsn::This(this), &__vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0))); + } + + ::vl::Ptr<::vl::reflection::description::IValueListener> __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Subscribe(const ::vl::Func& __vwsn_bind_callback_) + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + ::vl::__vwsn::This(this)->__vwsn_bind_initialize_(); + } + auto __vwsn_subscription_ = this; + auto __vwsn_listener_shared_ = ::vl::Ptr<::vl::reflection::description::IValueListener>(new ::vl_workflow_global::__vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(__vwsn_bind_listeners_, __vwsn_subscription_, this, __vwsnthis_0)); + ::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->Set(::vl::__vwsn::Box(__vwsn_listener_shared_), ::vl::__vwsn::Box(__vwsn_bind_callback_)); + return __vwsn_listener_shared_; + } + + bool __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Update() + { + if ((! __vwsn_bind_closed_)) + { + ::vl::__vwsn::This(this)->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->TextColorChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_cache_0 = static_cast<::demo::ColorListItemTemplate*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + ::vl::__vwsn::This(__vwsn_bind_listeners_.Obj())->Clear(); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::__vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener(::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsnctor___vwsn_bind_listeners_, ::vl::reflection::description::IValueSubscription* __vwsnctor___vwsn_subscription_, ::vl::reflection::description::IValueSubscription* __vwsnctorthis_0, ::demo::ColorListItemTemplateConstructor* __vwsnctorthis_1) + :__vwsn_bind_listeners_(__vwsnctor___vwsn_bind_listeners_) + , __vwsn_subscription_(__vwsnctor___vwsn_subscription_) + , __vwsnthis_0(__vwsnctorthis_0) + , __vwsnthis_1(__vwsnctorthis_1) + { + } + + ::vl::reflection::description::IValueSubscription* __vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::GetSubscription() + { + return ::vl::__vwsn::This(this)->__vwsn_subscription_; + } + + bool __vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::GetStopped() + { + return (! ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(this))); + } + + bool __vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener::StopListening() + { + if (::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(this))) + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_bind_listeners_.Obj())->Remove(::vl::__vwsn::Box(this)); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory::__vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory(::demo::MainWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + } + + ::vl::presentation::templates::GuiTemplate* __vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory::CreateTemplate(const ::vl::reflection::description::Value& __vwsn_viewModel_) + { + { + if ([&](){ auto __vwsn_temp__ = __vwsn_viewModel_; return __vwsn_temp__.GetSharedPtr() && ::vl::__vwsn::RawPtrCast<::demo::IColorItem>(__vwsn_temp__.GetRawPtr()) != nullptr; }()) + { + auto __vwsn_template_ = ::vl::__vwsn::Ensure(static_cast<::vl::presentation::templates::GuiTextListItemTemplate*>(new ::demo::ColorListItemTemplate(::vl::__vwsn::Unbox<::vl::Ptr<::demo::IColorItem>>(__vwsn_viewModel_)))); + return ::vl::__vwsn::Ensure(static_cast<::vl::presentation::templates::GuiTemplate*>(__vwsn_template_)); + } + } + } + +/*********************************************************************** +Global Functions +***********************************************************************/ + + Demo& Demo::Instance() + { + return Getvl_workflow_global_Demo().instance; + } +} + +/*********************************************************************** +Class (::demo::ColorBomboItemTemplateConstructor) +***********************************************************************/ + namespace demo { - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) + void ColorBomboItemTemplateConstructor::__vwsn_initialize_instance_(::demo::ColorBomboItemTemplate* __vwsn_this_, ::vl::presentation::GuiResourcePathResolver* __vwsn_resolver_) + { + (::vl::__vwsn::This(this)->self = __vwsn_this_); + (::vl::__vwsn::This(this)->ViewModel = ::vl::__vwsn::This(__vwsn_this_)->GetViewModel()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetRowsAndColumns(3, 3); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetRowOption(0, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetRowOption(1, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = 16; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetRowOption(2, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetColumnOption(0, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = 16; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetColumnOption(1, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = 3; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetColumnOption(2, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetSite(1, 0, 1, 1); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetOwnedElement(::vl::__vwsn::Ensure(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(::vl::__vwsn::This(this)->__vwsn_precompile_2))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_1))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetSite(0, 2, 3, 1); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_4.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_4.Obj())->SetEllipse(::vl::__vwsn::Parse(::vl::WString(L"true", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetOwnedElement(::vl::__vwsn::Ensure(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(::vl::__vwsn::This(this)->__vwsn_precompile_4))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_3))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->self)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_0))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_2.Obj())->SetColor(::vl::__vwsn::This(::vl::__vwsn::This(this)->ViewModel.Obj())->GetItemColor()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_4.Obj())->SetText(::vl::__vwsn::This(::vl::__vwsn::This(this)->ViewModel.Obj())->GetItemName()); + } + { + auto __vwsn_created_subscription_ = ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(this))); + ::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->Subscribe(LAMBDA(::vl_workflow_global::__vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__(this))); + ::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->Update(); + } + { + auto __vwsn_created_subscription_ = ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(this))); + ::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->Subscribe(LAMBDA(::vl_workflow_global::__vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__(this))); + ::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->Update(); + } + } - void ColorBomboItemTemplate::OnCreate() + ColorBomboItemTemplateConstructor::ColorBomboItemTemplateConstructor() { } - void ColorBomboItemTemplate::OnDestroy() +/*********************************************************************** +Class (::demo::ColorBomboItemTemplate) +***********************************************************************/ + + ::vl::presentation::Color ColorBomboItemTemplate::GetTextColor() { + return ::vl::__vwsn::This(this)->textColor; } - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER - - ColorBomboItemTemplate::ColorBomboItemTemplate(vl::Ptr ViewModel) + void ColorBomboItemTemplate::SetTextColor(::vl::presentation::Color value) { - InitializeComponents(ViewModel); - OnCreate(); + if ((::vl::__vwsn::This(this)->textColor != value)) + { + (::vl::__vwsn::This(this)->textColor = value); + ::vl::__vwsn::EventInvoke(::vl::__vwsn::This(this)->TextColorChanged)(); + } + } + + ::vl::Ptr<::demo::IColorItem> ColorBomboItemTemplate::GetViewModel() + { + return ::vl::__vwsn::This(this)->__vwsn_parameter_ViewModel; + } + + ColorBomboItemTemplate::ColorBomboItemTemplate(::vl::Ptr<::demo::IColorItem> __vwsn_ctor_parameter_ViewModel) + { + (::vl::__vwsn::This(this)->__vwsn_parameter_ViewModel = __vwsn_ctor_parameter_ViewModel); + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"demo::ColorBomboItemTemplate", false)); + 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)->__vwsn_initialize_instance_(this, ::vl::__vwsn::Ensure(static_cast<::vl::presentation::GuiResourcePathResolver*>(__vwsn_resolver_.Obj()))); } ColorBomboItemTemplate::~ColorBomboItemTemplate() { - OnDestroy(); - ClearSubscriptions(); + ::vl::__vwsn::This(this)->ClearSubscriptions(); } -} +/*********************************************************************** +Class (::demo::ColorListItemTemplateConstructor) +***********************************************************************/ -namespace demo -{ - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) + void ColorListItemTemplateConstructor::__vwsn_initialize_instance_(::demo::ColorListItemTemplate* __vwsn_this_, ::vl::presentation::GuiResourcePathResolver* __vwsn_resolver_) + { + (::vl::__vwsn::This(this)->self = __vwsn_this_); + (::vl::__vwsn::This(this)->ViewModel = ::vl::__vwsn::This(__vwsn_this_)->GetViewModel()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_0 = new ::demo::ColorBomboItemTemplate(::vl::__vwsn::This(this)->ViewModel)); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 6; __vwsn_temp__.top = 6; __vwsn_temp__.right = 6; __vwsn_temp__.bottom = 6; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->self)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_0))); + } + { + auto __vwsn_created_subscription_ = ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(this))); + ::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->Subscribe(LAMBDA(::vl_workflow_global::__vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__(this))); + ::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->Update(); + } + { + auto __vwsn_created_subscription_ = ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription(this))); + ::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->Subscribe(LAMBDA(::vl_workflow_global::__vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__(this))); + ::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->Update(); + } + } - void ColorListItemTemplate::OnCreate() + ColorListItemTemplateConstructor::ColorListItemTemplateConstructor() { } - void ColorListItemTemplate::OnDestroy() +/*********************************************************************** +Class (::demo::ColorListItemTemplate) +***********************************************************************/ + + ::vl::Ptr<::demo::IColorItem> ColorListItemTemplate::GetViewModel() { + return ::vl::__vwsn::This(this)->__vwsn_parameter_ViewModel; } - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER - - ColorListItemTemplate::ColorListItemTemplate(vl::Ptr ViewModel) + ColorListItemTemplate::ColorListItemTemplate(::vl::Ptr<::demo::IColorItem> __vwsn_ctor_parameter_ViewModel) { - InitializeComponents(ViewModel); - OnCreate(); + (::vl::__vwsn::This(this)->__vwsn_parameter_ViewModel = __vwsn_ctor_parameter_ViewModel); + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"demo::ColorListItemTemplate", false)); + 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)->__vwsn_initialize_instance_(this, ::vl::__vwsn::Ensure(static_cast<::vl::presentation::GuiResourcePathResolver*>(__vwsn_resolver_.Obj()))); } ColorListItemTemplate::~ColorListItemTemplate() { - OnDestroy(); - ClearSubscriptions(); + ::vl::__vwsn::This(this)->ClearSubscriptions(); } -} +/*********************************************************************** +Class (::demo::MainWindowConstructor) +***********************************************************************/ -namespace demo -{ - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) + void MainWindowConstructor::__vwsn_initialize_instance_(::demo::MainWindow* __vwsn_this_, ::vl::presentation::GuiResourcePathResolver* __vwsn_resolver_) + { + (::vl::__vwsn::This(this)->__vwsn_precompile_0 = __vwsn_this_); + (::vl::__vwsn::This(this)->ViewModel = ::vl::__vwsn::This(__vwsn_this_)->GetViewModel()); + (::vl::__vwsn::This(this)->__vwsn_precompile_8 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 480; __vwsn_temp__.y = 320; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 480; __vwsn_temp__.y = 320; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetText(::vl::WString(L"ColorPicker", false)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetCellPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"10", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowsAndColumns(3, 2); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowOption(0, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowOption(1, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowOption(2, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetColumnOption(0, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetColumnOption(1, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_2)->SetSite(0, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateLabelStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_3 = new ::vl::presentation::controls::GuiLabel(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetText(::vl::WString(L"ComboBox and BindableTextList using ItemTemplate:", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_2)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_2))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_4)->SetSite(1, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextListStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiBindableTextList(__vwsn_controlStyle_, ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextListItemStyle())); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetTextProperty(::vl::WString(L"name", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetVerticalAlwaysVisible(::vl::__vwsn::Parse(::vl::WString(L"false", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetHorizontalAlwaysVisible(::vl::__vwsn::Parse(::vl::WString(L"false", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetStyleProvider(::vl::__vwsn::Ensure(::vl::Ptr<::vl::presentation::controls::GuiListControl::IItemStyleProvider>(::vl::Ptr<::vl::presentation::templates::GuiTextListItemTemplate_ItemStyleProvider>(new ::vl::presentation::templates::GuiTextListItemTemplate_ItemStyleProvider(::vl::Ptr<::vl::presentation::templates::GuiTemplate::IFactory>(new ::vl_workflow_global::__vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory(this))))))); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateComboBoxStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_5 = new ::vl::presentation::controls::GuiComboBoxListControl(__vwsn_controlStyle_, ::vl::__vwsn::This(this)->__vwsn_precompile_6)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_7 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->SetStyleProvider(::vl::__vwsn::Ensure(::vl::Ptr<::vl::presentation::controls::GuiComboBoxListControl::IItemStyleProvider>(::vl::Ptr<::vl::presentation::templates::GuiControlTemplate_ItemStyleProvider>(new ::vl::presentation::templates::GuiControlTemplate_ItemStyleProvider(::vl::Ptr<::vl::presentation::templates::GuiTemplate::IFactory>(new ::vl_workflow_global::__vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory(this))))))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_4)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_4))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->GetContainerComposition())->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_1))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetItemSource(::vl::__vwsn::Ensure(::vl::Ptr<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(::vl::__vwsn::This(this)->ViewModel.Obj())->GetColorItems()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->SetSelectedIndex(0); + } + } - void MainWindow::OnCreate() + MainWindowConstructor::MainWindowConstructor() { } - void MainWindow::OnDestroy() +/*********************************************************************** +Class (::demo::MainWindow) +***********************************************************************/ + + ::vl::Ptr<::demo::IViewModel> MainWindow::GetViewModel() { + return ::vl::__vwsn::This(this)->__vwsn_parameter_ViewModel; } - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER - - MainWindow::MainWindow(vl::Ptr ViewModel) + MainWindow::MainWindow(::vl::Ptr<::demo::IViewModel> __vwsn_ctor_parameter_ViewModel) + : ::vl::presentation::controls::GuiWindow(::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateWindowStyle()) { - InitializeComponents(ViewModel); - OnCreate(); + (::vl::__vwsn::This(this)->__vwsn_parameter_ViewModel = __vwsn_ctor_parameter_ViewModel); + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"demo::MainWindow", false)); + 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)->__vwsn_initialize_instance_(this, ::vl::__vwsn::Ensure(static_cast<::vl::presentation::GuiResourcePathResolver*>(__vwsn_resolver_.Obj()))); } MainWindow::~MainWindow() { - OnDestroy(); - ClearSubscriptions(); + ::vl::__vwsn::This(this)->ClearSubscriptions(); } -} +/*********************************************************************** +Class (::demo::IColorItem) +***********************************************************************/ + +/*********************************************************************** +Class (::demo::IViewModel) +***********************************************************************/ + +} +#undef GLOBAL_SYMBOL +#undef GLOBAL_NAME +#undef GLOBAL_OBJ +#undef USERIMPL + +/*********************************************************************** +Reflection +***********************************************************************/ namespace vl { @@ -100,87 +1078,124 @@ namespace vl { namespace description { - #define _ , - IMPL_CPP_TYPE_INFO(demo::IColorItem) - IMPL_CPP_TYPE_INFO(demo::IViewModel) - IMPL_CPP_TYPE_INFO(demo::ColorBomboItemTemplate) - IMPL_CPP_TYPE_INFO(demo::ColorListItemTemplate) - IMPL_CPP_TYPE_INFO(demo::MainWindow) +#ifndef VCZH_DEBUG_NO_REFLECTION + IMPL_CPP_TYPE_INFO(::demo::ColorBomboItemTemplate) + IMPL_CPP_TYPE_INFO(::demo::ColorBomboItemTemplateConstructor) + IMPL_CPP_TYPE_INFO(::demo::ColorListItemTemplate) + IMPL_CPP_TYPE_INFO(::demo::ColorListItemTemplateConstructor) + IMPL_CPP_TYPE_INFO(::demo::IColorItem) + IMPL_CPP_TYPE_INFO(::demo::IViewModel) + IMPL_CPP_TYPE_INFO(::demo::MainWindow) + IMPL_CPP_TYPE_INFO(::demo::MainWindowConstructor) - BEGIN_CLASS_MEMBER(demo::IColorItem) - CLASS_MEMBER_BASE(::vl::reflection::IDescriptable) - CLASS_MEMBER_METHOD(GetItemName, NO_PARAMETER); - CLASS_MEMBER_METHOD(GetItemColor, NO_PARAMETER); - CLASS_MEMBER_PROPERTY_READONLY(ItemName, GetItemName) - CLASS_MEMBER_PROPERTY_READONLY(ItemColor, GetItemColor) - END_CLASS_MEMBER(demo::IColorItem) - - BEGIN_CLASS_MEMBER(demo::IViewModel) - CLASS_MEMBER_BASE(::vl::reflection::IDescriptable) - CLASS_MEMBER_METHOD(GetColorItems, NO_PARAMETER); - CLASS_MEMBER_PROPERTY_READONLY(ColorItems, GetColorItems) - END_CLASS_MEMBER(demo::IViewModel) - - BEGIN_CLASS_MEMBER(demo::ColorBomboItemTemplate) - CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate) - CLASS_MEMBER_CONSTRUCTOR(demo::ColorBomboItemTemplate*(vl::Ptr), { L"ViewModel" }) - - CLASS_MEMBER_PROPERTY_READONLY_FAST(ViewModel) +#define _ , + BEGIN_CLASS_MEMBER(::demo::ColorBomboItemTemplate) + CLASS_MEMBER_METHOD(GetTextColor, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) + CLASS_MEMBER_METHOD(SetTextColor, { L"value" }) CLASS_MEMBER_EVENT(TextColorChanged) - CLASS_MEMBER_PROPERTY_EVENT_FAST(TextColor, TextColorChanged) - END_CLASS_MEMBER(demo::ColorBomboItemTemplate) + CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + CLASS_MEMBER_PROPERTY_EVENT(TextColor, GetTextColor, SetTextColor, TextColorChanged) + CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) + CLASS_MEMBER_FIELD(textColor) + END_CLASS_MEMBER(::demo::ColorBomboItemTemplate) - BEGIN_CLASS_MEMBER(demo::ColorListItemTemplate) - CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate) - CLASS_MEMBER_CONSTRUCTOR(demo::ColorListItemTemplate*(vl::Ptr), { L"ViewModel" }) + BEGIN_CLASS_MEMBER(::demo::ColorBomboItemTemplateConstructor) + CLASS_MEMBER_METHOD(__vwsn_initialize_instance_, { L"__vwsn_this_" _ L"__vwsn_resolver_" }) + 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(ViewModel) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::demo::ColorBomboItemTemplateConstructor) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ViewModel) - END_CLASS_MEMBER(demo::ColorListItemTemplate) + BEGIN_CLASS_MEMBER(::demo::ColorListItemTemplate) + CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) + CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) + END_CLASS_MEMBER(::demo::ColorListItemTemplate) - BEGIN_CLASS_MEMBER(demo::MainWindow) - CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) - CLASS_MEMBER_CONSTRUCTOR(demo::MainWindow*(vl::Ptr), { L"ViewModel" }) + BEGIN_CLASS_MEMBER(::demo::ColorListItemTemplateConstructor) + CLASS_MEMBER_METHOD(__vwsn_initialize_instance_, { L"__vwsn_this_" _ L"__vwsn_resolver_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(ViewModel) + CLASS_MEMBER_FIELD(self) + END_CLASS_MEMBER(::demo::ColorListItemTemplateConstructor) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ViewModel) - END_CLASS_MEMBER(demo::MainWindow) + BEGIN_INTERFACE_MEMBER(::demo::IColorItem) + CLASS_MEMBER_METHOD(GetItemColor, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetItemName, NO_PARAMETER) + CLASS_MEMBER_PROPERTY_READONLY(ItemColor, GetItemColor) + CLASS_MEMBER_PROPERTY_READONLY(ItemName, GetItemName) + END_INTERFACE_MEMBER(::demo::IColorItem) - #undef _ + BEGIN_INTERFACE_MEMBER(::demo::IViewModel) + CLASS_MEMBER_METHOD(GetColorItems, NO_PARAMETER) + CLASS_MEMBER_PROPERTY_READONLY(ColorItems, GetColorItems) + END_INTERFACE_MEMBER(::demo::IViewModel) - class DemoResourceLoader : public Object, public ITypeLoader + BEGIN_CLASS_MEMBER(::demo::MainWindow) + CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) + CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) + END_CLASS_MEMBER(::demo::MainWindow) + + BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) + CLASS_MEMBER_METHOD(__vwsn_initialize_instance_, { L"__vwsn_this_" _ L"__vwsn_resolver_" }) + 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(ViewModel) + END_CLASS_MEMBER(::demo::MainWindowConstructor) + +#undef _ + class DemoTypeLoader : public Object, public ITypeLoader { public: void Load(ITypeManager* manager) { - ADD_TYPE_INFO(demo::IColorItem) - ADD_TYPE_INFO(demo::IViewModel) - ADD_TYPE_INFO(demo::ColorBomboItemTemplate) - ADD_TYPE_INFO(demo::ColorListItemTemplate) - ADD_TYPE_INFO(demo::MainWindow) + ADD_TYPE_INFO(::demo::ColorBomboItemTemplate) + ADD_TYPE_INFO(::demo::ColorBomboItemTemplateConstructor) + ADD_TYPE_INFO(::demo::ColorListItemTemplate) + ADD_TYPE_INFO(::demo::ColorListItemTemplateConstructor) + ADD_TYPE_INFO(::demo::IColorItem) + ADD_TYPE_INFO(::demo::IViewModel) + ADD_TYPE_INFO(::demo::MainWindow) + ADD_TYPE_INFO(::demo::MainWindowConstructor) } void Unload(ITypeManager* manager) { } }; +#endif - class DemoResourcePlugin : public Object, public vl::presentation::controls::IGuiPlugin + bool LoadDemoTypes() { - public: - void Load()override +#ifndef VCZH_DEBUG_NO_REFLECTION + if (auto manager = GetGlobalTypeManager()) { - GetGlobalTypeManager()->AddTypeLoader(new DemoResourceLoader); + return manager->AddTypeLoader(MakePtr()); } - - void AfterLoad()override - { - } - - void Unload()override - { - } - }; - GUI_REGISTER_PLUGIN(DemoResourcePlugin) +#endif + return false; + } } } } +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif diff --git a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.h index a7395d36..67542fd9 100644 --- a/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.h +++ b/Tutorial/GacUI_Controls/ColorPicker/UI/Source/DemoPartialClasses.h @@ -1,232 +1,222 @@ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -GacUI::Partial Classes +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! -This file is generated by: Vczh GacUI Resource Code Generator -************************************************************************ -DO NOT MODIFY +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries ***********************************************************************/ -#ifndef VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo_PARTIAL_CLASSES -#define VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo_PARTIAL_CLASSES +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES +#define VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES -#include "GacUIReflection.h" +#include "GacUI.h" + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif + +namespace vl_workflow_global +{ + class __vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory; + class __vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + class __vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + class __vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + class __vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + class __vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + class __vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + class __vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + class __vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + class __vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory; + struct __vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__; + struct __vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__; + struct __vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__; + struct __vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__; +} namespace demo { + class ColorBomboItemTemplateConstructor; + class ColorBomboItemTemplate; + class ColorListItemTemplateConstructor; + class ColorListItemTemplate; + class MainWindowConstructor; + class MainWindow; class IColorItem; class IViewModel; - class ColorBomboItemTemplate; - class ColorListItemTemplate; - class MainWindow; - class IColorItem : public virtual ::vl::reflection::IDescriptable, public vl::reflection::Description + class ColorBomboItemTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description { + friend class ::vl_workflow_global::__vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + friend class ::vl_workflow_global::__vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__; + friend struct ::vl_workflow_global::__vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::Ptr<::demo::IColorItem> ViewModel = ::vl::Ptr<::demo::IColorItem>(); + ::demo::ColorBomboItemTemplate* self = static_cast<::demo::ColorBomboItemTemplate*>(nullptr); + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0 = static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_1 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement> __vwsn_precompile_2 = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement> __vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(); + void __vwsn_initialize_instance_(::demo::ColorBomboItemTemplate* __vwsn_this_, ::vl::presentation::GuiResourcePathResolver* __vwsn_resolver_); + public: + ColorBomboItemTemplateConstructor(); + }; + + class ColorBomboItemTemplate : public ::vl::presentation::templates::GuiControlTemplate, public ::demo::ColorBomboItemTemplateConstructor, public ::vl::reflection::Description + { + friend class ::demo::ColorBomboItemTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + friend class ::vl_workflow_global::__vwsnc3_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc4_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__; + friend struct ::vl_workflow_global::__vwsnf2_Demo_demo_ColorBomboItemTemplateConstructor___vwsn_initialize_instance__; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::presentation::Color textColor = ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString(L"#000000", false)); + public: + ::vl::Event TextColorChanged; + ::vl::presentation::Color GetTextColor(); + void SetTextColor(::vl::presentation::Color value); + ::vl::Ptr<::demo::IColorItem> __vwsn_parameter_ViewModel = ::vl::Ptr<::demo::IColorItem>(); + ::vl::Ptr<::demo::IColorItem> GetViewModel(); + ColorBomboItemTemplate(::vl::Ptr<::demo::IColorItem> __vwsn_ctor_parameter_ViewModel); + ~ColorBomboItemTemplate(); + }; + + class ColorListItemTemplateConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + friend class ::vl_workflow_global::__vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + friend struct ::vl_workflow_global::__vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__; + friend struct ::vl_workflow_global::__vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::Ptr<::demo::IColorItem> ViewModel = ::vl::Ptr<::demo::IColorItem>(); + ::demo::ColorListItemTemplate* self = static_cast<::demo::ColorListItemTemplate*>(nullptr); + ::demo::ColorBomboItemTemplate* __vwsn_precompile_0 = static_cast<::demo::ColorBomboItemTemplate*>(nullptr); + void __vwsn_initialize_instance_(::demo::ColorListItemTemplate* __vwsn_this_, ::vl::presentation::GuiResourcePathResolver* __vwsn_resolver_); + public: + ColorListItemTemplateConstructor(); + }; + + class ColorListItemTemplate : public ::vl::presentation::templates::GuiTextListItemTemplate, public ::demo::ColorListItemTemplateConstructor, public ::vl::reflection::Description + { + friend class ::demo::ColorListItemTemplateConstructor; + friend class ::vl_workflow_global::__vwsnc5_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc6_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + friend class ::vl_workflow_global::__vwsnc7_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance___vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc8_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__Subscribe__vl_reflection_description_IValueListener; + friend struct ::vl_workflow_global::__vwsnf3_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__; + friend struct ::vl_workflow_global::__vwsnf4_Demo_demo_ColorListItemTemplateConstructor___vwsn_initialize_instance__; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ::vl::Ptr<::demo::IColorItem> __vwsn_parameter_ViewModel = ::vl::Ptr<::demo::IColorItem>(); + ::vl::Ptr<::demo::IColorItem> GetViewModel(); + ColorListItemTemplate(::vl::Ptr<::demo::IColorItem> __vwsn_ctor_parameter_ViewModel); + ~ColorListItemTemplate(); + }; + + class MainWindowConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory; + friend class ::vl_workflow_global::__vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::Ptr<::demo::IViewModel> ViewModel = ::vl::Ptr<::demo::IViewModel>(); + ::demo::MainWindow* __vwsn_precompile_0 = static_cast<::demo::MainWindow*>(nullptr); + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_1 = static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_2 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_3 = static_cast<::vl::presentation::controls::GuiLabel*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiComboBoxListControl* __vwsn_precompile_5 = static_cast<::vl::presentation::controls::GuiComboBoxListControl*>(nullptr); + ::vl::presentation::controls::GuiBindableTextList* __vwsn_precompile_6 = static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_8 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + void __vwsn_initialize_instance_(::demo::MainWindow* __vwsn_this_, ::vl::presentation::GuiResourcePathResolver* __vwsn_resolver_); + public: + MainWindowConstructor(); + }; + + class MainWindow : public ::vl::presentation::controls::GuiWindow, public ::demo::MainWindowConstructor, public ::vl::reflection::Description + { + friend class ::demo::MainWindowConstructor; + friend class ::vl_workflow_global::__vwsnc10_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory; + friend class ::vl_workflow_global::__vwsnc9_Demo_demo_MainWindowConstructor___vwsn_initialize_instance___vl_presentation_templates_GuiTemplate_IFactory; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + ::vl::Ptr<::demo::IViewModel> __vwsn_parameter_ViewModel = ::vl::Ptr<::demo::IViewModel>(); + ::vl::Ptr<::demo::IViewModel> GetViewModel(); + MainWindow(::vl::Ptr<::demo::IViewModel> __vwsn_ctor_parameter_ViewModel); + ~MainWindow(); + }; + + class IColorItem : public virtual ::vl::reflection::IDescriptable, public ::vl::reflection::Description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif public: virtual ::vl::WString GetItemName() = 0; virtual ::vl::presentation::Color GetItemColor() = 0; }; - class IViewModel : public virtual ::vl::reflection::IDescriptable, public vl::reflection::Description + class IViewModel : public virtual ::vl::reflection::IDescriptable, public ::vl::reflection::Description { +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif public: - virtual vl::collections::LazyList> GetColorItems() = 0; - }; - - template - class ColorBomboItemTemplate_ : public ::vl::presentation::templates::GuiControlTemplate, public vl::presentation::GuiInstancePartialClass, public vl::reflection::Description - { - friend struct vl::reflection::description::CustomTypeDescriptorSelector; - private: - vl::Ptr ViewModel_; - ::vl::presentation::Color TextColor_; - protected: - ::vl::presentation::templates::GuiControlTemplate* self; - - void InitializeComponents(vl::Ptr ViewModel) - { - ViewModel_ = ViewModel; - if (InitializeFromResource()) - { - GUI_INSTANCE_REFERENCE(self); - } - else - { - ViewModel_ = 0; - } - } - public: - ColorBomboItemTemplate_() - :vl::presentation::GuiInstancePartialClass<::vl::presentation::templates::GuiControlTemplate>(L"demo::ColorBomboItemTemplate") - ,self(0) - { - this->TextColor_ = vl::reflection::description::UnboxValue<::vl::presentation::Color>( - []() - { - vl::reflection::description::Value value; - vl::reflection::description::GetTypeDescriptor<::vl::presentation::Color>()->GetSerializableType()->Deserialize(L"", value); - return value; - }()); - } - - vl::Ptr GetViewModel() - { - return ViewModel_; - } - - vl::Event TextColorChanged; - - ::vl::presentation::Color GetTextColor() - { - return TextColor_; - } - - void SetTextColor(::vl::presentation::Color value) - { - TextColor_ = value; - TextColorChanged(); - } - }; - - template - class ColorListItemTemplate_ : public ::vl::presentation::templates::GuiTextListItemTemplate, public vl::presentation::GuiInstancePartialClass, public vl::reflection::Description - { - friend struct vl::reflection::description::CustomTypeDescriptorSelector; - private: - vl::Ptr ViewModel_; - protected: - ::vl::presentation::templates::GuiTextListItemTemplate* self; - - void InitializeComponents(vl::Ptr ViewModel) - { - ViewModel_ = ViewModel; - if (InitializeFromResource()) - { - GUI_INSTANCE_REFERENCE(self); - } - else - { - ViewModel_ = 0; - } - } - public: - ColorListItemTemplate_() - :vl::presentation::GuiInstancePartialClass<::vl::presentation::templates::GuiTextListItemTemplate>(L"demo::ColorListItemTemplate") - ,self(0) - { - } - - vl::Ptr GetViewModel() - { - return ViewModel_; - } - }; - - template - class MainWindow_ : public ::vl::presentation::controls::GuiWindow, public vl::presentation::GuiInstancePartialClass, public vl::reflection::Description - { - friend struct vl::reflection::description::CustomTypeDescriptorSelector; - private: - vl::Ptr ViewModel_; - protected: - - void InitializeComponents(vl::Ptr ViewModel) - { - ViewModel_ = ViewModel; - if (InitializeFromResource()) - { - } - else - { - ViewModel_ = 0; - } - } - public: - MainWindow_() - :vl::presentation::GuiInstancePartialClass<::vl::presentation::controls::GuiWindow>(L"demo::MainWindow") - ,::vl::presentation::controls::GuiWindow(vl::presentation::theme::GetCurrentTheme()->CreateWindowStyle()) - { - } - - vl::Ptr GetViewModel() - { - return ViewModel_; - } + virtual ::vl::collections::LazyList<::vl::Ptr<::demo::IColorItem>> GetColorItems() = 0; }; } -namespace vl +/*********************************************************************** +Global Variables and Functions +***********************************************************************/ + +namespace vl_workflow_global { - namespace reflection + class Demo { - namespace description - { - DECL_TYPE_INFO(demo::IColorItem) - DECL_TYPE_INFO(demo::IViewModel) - DECL_TYPE_INFO(demo::ColorBomboItemTemplate) - DECL_TYPE_INFO(demo::ColorListItemTemplate) - DECL_TYPE_INFO(demo::MainWindow) - - } - } -} -namespace demo -{ - class ColorBomboItemTemplate : public demo::ColorBomboItemTemplate_ - { - friend class demo::ColorBomboItemTemplate_; - friend struct vl::reflection::description::CustomTypeDescriptorSelector; - protected: - - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) - void OnCreate(); - void OnDestroy(); - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER public: - ColorBomboItemTemplate(vl::Ptr ViewModel); - ~ColorBomboItemTemplate(); + + static Demo& Instance(); }; } - -namespace demo -{ - class ColorListItemTemplate : public demo::ColorListItemTemplate_ - { - friend class demo::ColorListItemTemplate_; - friend struct vl::reflection::description::CustomTypeDescriptorSelector; - protected: - - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) - void OnCreate(); - void OnDestroy(); - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER - public: - ColorListItemTemplate(vl::Ptr ViewModel); - ~ColorListItemTemplate(); - }; -} - - -namespace demo -{ - class MainWindow : public demo::MainWindow_ - { - friend class demo::MainWindow_; - friend struct vl::reflection::description::CustomTypeDescriptorSelector; - protected: - - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) - void OnCreate(); - void OnDestroy(); - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER - public: - MainWindow(vl::Ptr ViewModel); - ~MainWindow(); - }; -} - - +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif #endif diff --git a/Tutorial/GacUI_Controls/ContainersAndButtons/ContainersAndButtons.vcxproj b/Tutorial/GacUI_Controls/ContainersAndButtons/ContainersAndButtons.vcxproj index bf13cfc2..ade9d5c5 100644 --- a/Tutorial/GacUI_Controls/ContainersAndButtons/ContainersAndButtons.vcxproj +++ b/Tutorial/GacUI_Controls/ContainersAndButtons/ContainersAndButtons.vcxproj @@ -53,7 +53,7 @@ Level3 Disabled - WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions);VCZH_DEBUG_NO_REFLECTION true @@ -69,7 +69,7 @@ MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions);VCZH_DEBUG_NO_REFLECTION true @@ -91,8 +91,8 @@ - - {8018d622-66ba-4e65-9d03-bdac37ea9a54} + + {96c559ca-9718-4bec-a053-28a0ab6a8ca2} diff --git a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Resource.xml b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Resource.xml index 5bea18d6..41ef5024 100644 --- a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Resource.xml +++ b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Resource.xml @@ -2,14 +2,10 @@ - Source - GacUIReflection.h + Source + ..\..\UIRes\ContainersAndButtons.bin + GacUI.h Demo - - - - ..\..\UIRes - ContainersAndButtons.bin diff --git a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/Demo.h b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/Demo.h index febeba0f..a12c85a4 100644 --- a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/Demo.h +++ b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/Demo.h @@ -1,16 +1,35 @@ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -GacUI::Demo +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! -This file is generated by: Vczh GacUI Resource Code Generator -************************************************************************ -DO NOT MODIFY +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries ***********************************************************************/ -#ifndef VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo -#define VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMO +#define VCZH_WORKFLOW_COMPILER_GENERATED_DEMO #include "DemoPartialClasses.h" +/*********************************************************************** +Reflection +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + DECL_TYPE_INFO(::demo::MainWindow) + DECL_TYPE_INFO(::demo::MainWindowConstructor) +#endif + + extern bool LoadDemoTypes(); + } + } +} + #endif diff --git a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.cpp index 1967f719..8cb61405 100644 --- a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.cpp @@ -1,42 +1,647 @@ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -GacUI::Partial Classes +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! -This file is generated by: Vczh GacUI Resource Code Generator -************************************************************************ -DO NOT MODIFY +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries ***********************************************************************/ #include "Demo.h" +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif + +#define GLOBAL_SYMBOL ::vl_workflow_global::Demo:: +#define GLOBAL_NAME ::vl_workflow_global::Demo::Instance(). +#define GLOBAL_OBJ &::vl_workflow_global::Demo::Instance() +#define USERIMPL(...) + +/*********************************************************************** +Global Variables +***********************************************************************/ + +BEGIN_GLOBAL_STORAGE_CLASS(vl_workflow_global_Demo) + vl_workflow_global::Demo instance; + INITIALIZE_GLOBAL_STORAGE_CLASS + FINALIZE_GLOBAL_STORAGE_CLASS +END_GLOBAL_STORAGE_CLASS(vl_workflow_global_Demo) + +namespace vl_workflow_global +{ +/*********************************************************************** +Global Functions +***********************************************************************/ + + Demo& Demo::Instance() + { + return Getvl_workflow_global_Demo().instance; + } +} + +/*********************************************************************** +Class (::demo::MainWindowConstructor) +***********************************************************************/ + namespace demo { - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) + void MainWindowConstructor::__vwsn_initialize_instance_(::demo::MainWindow* __vwsn_this_, ::vl::presentation::GuiResourcePathResolver* __vwsn_resolver_) + { + (::vl::__vwsn::This(this)->__vwsn_precompile_0 = __vwsn_this_); + (::vl::__vwsn::This(this)->__vwsn_precompile_75 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_75)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 480; __vwsn_temp__.y = 320; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 480; __vwsn_temp__.y = 320; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->SetText(::vl::WString(L"ContainersAndButtons", false)); + } + (::vl::__vwsn::This(this)->radioGroup = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->AddComponent(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::GuiComponent*>(::vl::__vwsn::This(this)->radioGroup))); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTabStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_1 = new ::vl::presentation::controls::GuiTab(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_74 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_74)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 3; __vwsn_temp__.top = 3; __vwsn_temp__.right = 3; __vwsn_temp__.bottom = 3; return __vwsn_temp__; }()); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiTabPage()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_2)->SetText(::vl::WString(L"GroupBox", false)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetCellPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"5", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetRowsAndColumns(1, 3); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetRowOption(0, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetColumnOption(0, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetColumnOption(1, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->SetColumnOption(2, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = 1.0; return __vwsn_temp__; }()); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_4)->SetSite(0, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateGroupBoxStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_5 = new ::vl::presentation::controls::GuiControl(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_16 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_16)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->SetText(::vl::WString(L"Button", false)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiStackComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetDirection(::vl::presentation::compositions::GuiStackComposition::Direction::Vertical); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"5", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 5; __vwsn_temp__.top = 5; __vwsn_temp__.right = 5; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_8 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_9 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_9)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->SetText(::vl::WString(L"Button 1", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_7)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_7))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_11 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_12 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_11)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_12)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_11)->SetText(::vl::WString(L"Button 2", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_10)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_11)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_10))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_13 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_14 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_15 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->SetText(::vl::WString(L"Button 3", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_13)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_13))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->GetContainerComposition())->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_6))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_4)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_4))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_17 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_17)->SetSite(0, 1, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateGroupBoxStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_18 = new ::vl::presentation::controls::GuiControl(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_29 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_18)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_29)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_18)->SetText(::vl::WString(L"CheckBox", false)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_19 = new ::vl::presentation::compositions::GuiStackComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_19)->SetDirection(::vl::presentation::compositions::GuiStackComposition::Direction::Vertical); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_19)->SetPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"5", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_19)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 5; __vwsn_temp__.top = 5; __vwsn_temp__.right = 5; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_20 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateCheckBoxStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_21 = new ::vl::presentation::controls::GuiSelectableButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_22 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_21)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_22)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_21)->SetText(::vl::WString(L"Button 1", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_20)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_21)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_19)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_20))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_23 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateCheckBoxStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_24 = new ::vl::presentation::controls::GuiSelectableButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_25 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_24)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_25)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_24)->SetText(::vl::WString(L"Button 2", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_23)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_24)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_19)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_23))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_26 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateCheckBoxStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_27 = new ::vl::presentation::controls::GuiSelectableButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_28 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_27)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_28)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_27)->SetText(::vl::WString(L"Button 3", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_26)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_27)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_19)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_26))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_18)->GetContainerComposition())->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_19))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_17)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_18)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_17))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_30 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_30)->SetSite(0, 2, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateGroupBoxStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_31 = new ::vl::presentation::controls::GuiControl(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_42 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_31)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_42)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_31)->SetText(::vl::WString(L"RadioButton", false)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_32 = new ::vl::presentation::compositions::GuiStackComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_32)->SetDirection(::vl::presentation::compositions::GuiStackComposition::Direction::Vertical); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_32)->SetPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"5", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_32)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 5; __vwsn_temp__.top = 5; __vwsn_temp__.right = 5; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_33 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateRadioButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_34 = new ::vl::presentation::controls::GuiSelectableButton(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_34)->SetSelected(::vl::__vwsn::Parse(::vl::WString(L"true", false))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_35 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_34)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_35)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_34)->SetText(::vl::WString(L"Button 1", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_33)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_34)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_32)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_33))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_36 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateRadioButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_37 = new ::vl::presentation::controls::GuiSelectableButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_38 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_37)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_38)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_37)->SetText(::vl::WString(L"Button 2", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_36)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_37)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_32)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_36))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_39 = new ::vl::presentation::compositions::GuiStackItemComposition()); + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateRadioButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_40 = new ::vl::presentation::controls::GuiSelectableButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_41 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_40)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_41)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 0; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 0; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_40)->SetText(::vl::WString(L"Button 3", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_39)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_40)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_32)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_39))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_31)->GetContainerComposition())->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_32))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_30)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_31)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_3)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_30))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_2)->GetContainerComposition())->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_3))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->CreatePage(::vl::__vwsn::This(this)->__vwsn_precompile_2, -1); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_43 = new ::vl::presentation::controls::GuiTabPage()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_43)->SetText(::vl::WString(L"ScrollContainer", false)); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateScrollContainerStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_44 = new ::vl::presentation::controls::GuiScrollContainer(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_44)->SetVerticalAlwaysVisible(::vl::__vwsn::Parse(::vl::WString(L"false", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_44)->SetHorizontalAlwaysVisible(::vl::__vwsn::Parse(::vl::WString(L"false", false))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_73 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_44)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_73)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 5; __vwsn_temp__.top = 5; __vwsn_temp__.right = 5; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_45 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->SetCellPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"10", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->SetRowsAndColumns(3, 3); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->SetRowOption(0, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->SetRowOption(1, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->SetRowOption(2, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->SetColumnOption(0, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->SetColumnOption(1, [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->SetColumnOption(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_46 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_46)->SetSite(0, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_47 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_48 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_47)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_48)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_47)->SetText(::vl::WString(L"(0, 0)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_46)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_47)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_46))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_49 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_49)->SetSite(0, 1, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_50 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_51 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_50)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_51)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_50)->SetText(::vl::WString(L"(0, 1)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_49)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_50)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_49))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_52 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_52)->SetSite(0, 2, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_53 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_54 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_53)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_54)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_53)->SetText(::vl::WString(L"(0, 0)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_52)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_53)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_52))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_55 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_55)->SetSite(1, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_56 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_57 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_56)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_57)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_56)->SetText(::vl::WString(L"(1, 0)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_55)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_56)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_55))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_58 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_58)->SetSite(1, 1, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_59 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_60 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_59)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_60)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_59)->SetText(::vl::WString(L"(1, 1)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_58)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_59)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_58))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_61 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_61)->SetSite(1, 2, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_62 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_63 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_62)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_63)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_62)->SetText(::vl::WString(L"(1, 0)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_61)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_62)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_61))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_64 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_64)->SetSite(2, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_65 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_66 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_65)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_66)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_65)->SetText(::vl::WString(L"(2, 0)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_64)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_65)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_64))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_67 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_67)->SetSite(2, 1, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_68 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_69 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_68)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_69)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_68)->SetText(::vl::WString(L"(2, 1)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_67)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_68)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_67))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_70 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_70)->SetSite(2, 2, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_71 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_72 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_71)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_72)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = 160; __vwsn_temp__.y = 160; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_71)->SetText(::vl::WString(L"(2, 0)", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_70)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_71)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_45)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_70))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_44)->GetContainerComposition())->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_45))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_43)->GetContainerComposition())->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_44)->GetBoundsComposition()))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->CreatePage(::vl::__vwsn::This(this)->__vwsn_precompile_43, -1); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::GuiControl*>(::vl::__vwsn::This(this)->__vwsn_precompile_1))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_34)->SetGroupController(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::GuiSelectableButton::GroupController*>(::vl::__vwsn::This(this)->radioGroup))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_37)->SetGroupController(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::GuiSelectableButton::GroupController*>(::vl::__vwsn::This(this)->radioGroup))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_40)->SetGroupController(::vl::__vwsn::Ensure(static_cast<::vl::presentation::controls::GuiSelectableButton::GroupController*>(::vl::__vwsn::This(this)->radioGroup))); + } + } - void MainWindow::OnCreate() + MainWindowConstructor::MainWindowConstructor() { } - void MainWindow::OnDestroy() - { - } - - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER +/*********************************************************************** +Class (::demo::MainWindow) +***********************************************************************/ MainWindow::MainWindow() + : ::vl::presentation::controls::GuiWindow(::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateWindowStyle()) { - InitializeComponents(); - OnCreate(); + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString(L"demo::MainWindow", false)); + 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)->__vwsn_initialize_instance_(this, ::vl::__vwsn::Ensure(static_cast<::vl::presentation::GuiResourcePathResolver*>(__vwsn_resolver_.Obj()))); } MainWindow::~MainWindow() { - OnDestroy(); - ClearSubscriptions(); + ::vl::__vwsn::This(this)->ClearSubscriptions(); } -} +} +#undef GLOBAL_SYMBOL +#undef GLOBAL_NAME +#undef GLOBAL_OBJ +#undef USERIMPL + +/*********************************************************************** +Reflection +***********************************************************************/ namespace vl { @@ -44,47 +649,129 @@ namespace vl { namespace description { - #define _ , - IMPL_CPP_TYPE_INFO(demo::MainWindow) +#ifndef VCZH_DEBUG_NO_REFLECTION + IMPL_CPP_TYPE_INFO(::demo::MainWindow) + IMPL_CPP_TYPE_INFO(::demo::MainWindowConstructor) - BEGIN_CLASS_MEMBER(demo::MainWindow) - CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) - CLASS_MEMBER_CONSTRUCTOR(demo::MainWindow*(), NO_PARAMETER) - END_CLASS_MEMBER(demo::MainWindow) +#define _ , + BEGIN_CLASS_MEMBER(::demo::MainWindow) + END_CLASS_MEMBER(::demo::MainWindow) - #undef _ + BEGIN_CLASS_MEMBER(::demo::MainWindowConstructor) + CLASS_MEMBER_METHOD(__vwsn_initialize_instance_, { L"__vwsn_this_" _ L"__vwsn_resolver_" }) + 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_28) + CLASS_MEMBER_FIELD(__vwsn_precompile_29) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_30) + CLASS_MEMBER_FIELD(__vwsn_precompile_31) + CLASS_MEMBER_FIELD(__vwsn_precompile_32) + CLASS_MEMBER_FIELD(__vwsn_precompile_33) + CLASS_MEMBER_FIELD(__vwsn_precompile_34) + CLASS_MEMBER_FIELD(__vwsn_precompile_35) + CLASS_MEMBER_FIELD(__vwsn_precompile_36) + CLASS_MEMBER_FIELD(__vwsn_precompile_37) + CLASS_MEMBER_FIELD(__vwsn_precompile_38) + CLASS_MEMBER_FIELD(__vwsn_precompile_39) + 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_52) + CLASS_MEMBER_FIELD(__vwsn_precompile_53) + CLASS_MEMBER_FIELD(__vwsn_precompile_54) + CLASS_MEMBER_FIELD(__vwsn_precompile_55) + CLASS_MEMBER_FIELD(__vwsn_precompile_56) + CLASS_MEMBER_FIELD(__vwsn_precompile_57) + CLASS_MEMBER_FIELD(__vwsn_precompile_58) + CLASS_MEMBER_FIELD(__vwsn_precompile_59) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_60) + CLASS_MEMBER_FIELD(__vwsn_precompile_61) + CLASS_MEMBER_FIELD(__vwsn_precompile_62) + CLASS_MEMBER_FIELD(__vwsn_precompile_63) + CLASS_MEMBER_FIELD(__vwsn_precompile_64) + CLASS_MEMBER_FIELD(__vwsn_precompile_65) + CLASS_MEMBER_FIELD(__vwsn_precompile_66) + CLASS_MEMBER_FIELD(__vwsn_precompile_67) + CLASS_MEMBER_FIELD(__vwsn_precompile_68) + CLASS_MEMBER_FIELD(__vwsn_precompile_69) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_70) + CLASS_MEMBER_FIELD(__vwsn_precompile_71) + CLASS_MEMBER_FIELD(__vwsn_precompile_72) + CLASS_MEMBER_FIELD(__vwsn_precompile_73) + CLASS_MEMBER_FIELD(__vwsn_precompile_74) + CLASS_MEMBER_FIELD(__vwsn_precompile_75) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(radioGroup) + END_CLASS_MEMBER(::demo::MainWindowConstructor) - class DemoResourceLoader : public Object, public ITypeLoader +#undef _ + class DemoTypeLoader : public Object, public ITypeLoader { public: void Load(ITypeManager* manager) { - ADD_TYPE_INFO(demo::MainWindow) + ADD_TYPE_INFO(::demo::MainWindow) + ADD_TYPE_INFO(::demo::MainWindowConstructor) } void Unload(ITypeManager* manager) { } }; +#endif - class DemoResourcePlugin : public Object, public vl::presentation::controls::IGuiPlugin + bool LoadDemoTypes() { - public: - void Load()override +#ifndef VCZH_DEBUG_NO_REFLECTION + if (auto manager = GetGlobalTypeManager()) { - GetGlobalTypeManager()->AddTypeLoader(new DemoResourceLoader); + return manager->AddTypeLoader(MakePtr()); } - - void AfterLoad()override - { - } - - void Unload()override - { - } - }; - GUI_REGISTER_PLUGIN(DemoResourcePlugin) +#endif + return false; + } } } } +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif diff --git a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.h index 57388f71..5fc5126a 100644 --- a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.h +++ b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.h @@ -1,79 +1,153 @@ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -GacUI::Partial Classes +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! -This file is generated by: Vczh GacUI Resource Code Generator -************************************************************************ -DO NOT MODIFY +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries ***********************************************************************/ -#ifndef VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo_PARTIAL_CLASSES -#define VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo_PARTIAL_CLASSES +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES +#define VCZH_WORKFLOW_COMPILER_GENERATED_DEMOPARTIALCLASSES -#include "GacUIReflection.h" +#include "GacUI.h" + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wparentheses-equality" +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#endif namespace demo { + class MainWindowConstructor; class MainWindow; - template - class MainWindow_ : public ::vl::presentation::controls::GuiWindow, public vl::presentation::GuiInstancePartialClass, public vl::reflection::Description + class MainWindowConstructor : public ::vl::Object, public ::vl::reflection::Description { - friend struct vl::reflection::description::CustomTypeDescriptorSelector; - private: +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif protected: - ::vl::presentation::controls::GuiSelectableButton::MutexGroupController* radioGroup; - - void InitializeComponents() - { - if (InitializeFromResource()) - { - GUI_INSTANCE_REFERENCE(radioGroup); - } - else - { - } - } + ::vl::presentation::controls::GuiSelectableButton::MutexGroupController* radioGroup = static_cast<::vl::presentation::controls::GuiSelectableButton::MutexGroupController*>(nullptr); + ::demo::MainWindow* __vwsn_precompile_0 = static_cast<::demo::MainWindow*>(nullptr); + ::vl::presentation::controls::GuiTab* __vwsn_precompile_1 = static_cast<::vl::presentation::controls::GuiTab*>(nullptr); + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_2 = static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr); + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_3 = static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_4 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiControl* __vwsn_precompile_5 = static_cast<::vl::presentation::controls::GuiControl*>(nullptr); + ::vl::presentation::compositions::GuiStackComposition* __vwsn_precompile_6 = static_cast<::vl::presentation::compositions::GuiStackComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_7 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_8 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_10 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_11 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_12 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_13 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_14 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_15 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_16 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_17 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiControl* __vwsn_precompile_18 = static_cast<::vl::presentation::controls::GuiControl*>(nullptr); + ::vl::presentation::compositions::GuiStackComposition* __vwsn_precompile_19 = static_cast<::vl::presentation::compositions::GuiStackComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_20 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiSelectableButton* __vwsn_precompile_21 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_22 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_23 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiSelectableButton* __vwsn_precompile_24 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_25 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_26 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiSelectableButton* __vwsn_precompile_27 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_28 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_29 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_30 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiControl* __vwsn_precompile_31 = static_cast<::vl::presentation::controls::GuiControl*>(nullptr); + ::vl::presentation::compositions::GuiStackComposition* __vwsn_precompile_32 = static_cast<::vl::presentation::compositions::GuiStackComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_33 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiSelectableButton* __vwsn_precompile_34 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_35 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_36 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiSelectableButton* __vwsn_precompile_37 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_38 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiStackItemComposition* __vwsn_precompile_39 = static_cast<::vl::presentation::compositions::GuiStackItemComposition*>(nullptr); + ::vl::presentation::controls::GuiSelectableButton* __vwsn_precompile_40 = static_cast<::vl::presentation::controls::GuiSelectableButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_41 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_42 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_43 = static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr); + ::vl::presentation::controls::GuiScrollContainer* __vwsn_precompile_44 = static_cast<::vl::presentation::controls::GuiScrollContainer*>(nullptr); + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_45 = static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_46 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_47 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_48 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_49 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_50 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_51 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_52 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_53 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_54 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_55 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_56 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_57 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_58 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_59 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_60 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_61 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_62 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_63 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_64 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_65 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_66 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_67 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_68 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_69 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_70 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_71 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_72 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_73 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_74 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_75 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + void __vwsn_initialize_instance_(::demo::MainWindow* __vwsn_this_, ::vl::presentation::GuiResourcePathResolver* __vwsn_resolver_); public: - MainWindow_() - :vl::presentation::GuiInstancePartialClass<::vl::presentation::controls::GuiWindow>(L"demo::MainWindow") - ,::vl::presentation::controls::GuiWindow(vl::presentation::theme::GetCurrentTheme()->CreateWindowStyle()) - ,radioGroup(0) - { - } + MainWindowConstructor(); }; -} -namespace vl -{ - namespace reflection + class MainWindow : public ::vl::presentation::controls::GuiWindow, public ::demo::MainWindowConstructor, public ::vl::reflection::Description { - namespace description - { - DECL_TYPE_INFO(demo::MainWindow) - - } - } -} -namespace demo -{ - class MainWindow : public demo::MainWindow_ - { - friend class demo::MainWindow_; - friend struct vl::reflection::description::CustomTypeDescriptorSelector; - protected: - - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) - void OnCreate(); - void OnDestroy(); - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER + friend class ::demo::MainWindowConstructor; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif public: MainWindow(); ~MainWindow(); }; + +} +/*********************************************************************** +Global Variables and Functions +***********************************************************************/ + +namespace vl_workflow_global +{ + class Demo + { + public: + + static Demo& Instance(); + }; } - +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#elif defined(__clang__) +#pragma clang diagnostic pop +#endif #endif diff --git a/Tutorial/GacUI_Controls/UIRes/ColorPicker.bin b/Tutorial/GacUI_Controls/UIRes/ColorPicker.bin index 12ef6a9fb4762b4e07464e0743e098b687524975..a421f56c5dd5b4ad528a1951650c30cfb1afa90c 100644 GIT binary patch delta 191 zcmdn~P3Z{>Bg;g_h>5udlRLx&rf=wBVVSs5czQuG2gmde2U%Drb23U#z9GPq;+J2P zo0#L7mz-0YlFH5i0U+8vF*(#zFM|;(#DPQyr55Lx7A2=jL&ZR}o?Z+Pg?a+zVx04H z@{0m8le1Hc^pZ037$+wxiO7LC*01?A4 A&;S4c literal 572215 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 literal 634204 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%0DCO^mGp!@Arz_p)M7=3vw(69V?7VurA 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