From b7eb3450289408aafc11fd7cb609d79f9e285676 Mon Sep 17 00:00:00 2001 From: Zihan Chen Date: Tue, 24 Jan 2017 14:14:43 -0800 Subject: [PATCH] Xml/Event_* --- Tutorial/GacUI_Xml/Event_Cpp/UI/Source/Demo.h | 37 +- .../UI/Source/DemoPartialClasses.cpp | 358 ++++++++++++++-- .../Event_Cpp/UI/Source/DemoPartialClasses.h | 120 +++--- .../Event_Cpp/UI/Source/MainWindow.cpp | 66 ++- .../Event_Cpp/UI/Source/MainWindow.h | 50 ++- .../GacUI_Xml/Event_Script/UI/Source/Demo.h | 37 +- .../UI/Source/DemoPartialClasses.cpp | 372 ++++++++++++++-- .../UI/Source/DemoPartialClasses.h | 143 ++++--- .../GacUI_Xml/Event_ViewModel/UI/Resource.xml | 4 +- .../Event_ViewModel/UI/Source/Demo.h | 49 ++- .../UI/Source/DemoPartialClasses.cpp | 397 +++++++++++++++--- .../UI/Source/DemoPartialClasses.h | 170 ++++---- Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin | Bin 230337 -> 513 bytes Tutorial/GacUI_Xml/UIRes/Event_Script.bin | Bin 235870 -> 516 bytes Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin | Bin 241932 -> 537 bytes 15 files changed, 1427 insertions(+), 376 deletions(-) diff --git a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/Demo.h b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/Demo.h index 0f5f6c6b..b364bcac 100644 --- a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/Demo.h +++ b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/Demo.h @@ -1,17 +1,36 @@ -/*********************************************************************** -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" #include "MainWindow.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_Xml/Event_Cpp/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.cpp index e475a8de..6abef937 100644 --- a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.cpp @@ -1,64 +1,358 @@ -/*********************************************************************** -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 __vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__ + { + ::demo::MainWindow* __vwsn_this_; + ::demo::MainWindowConstructor* __vwsnthis_0; + + __vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(::demo::MainWindow* __vwsnctor___vwsn_this_, ::demo::MainWindowConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* __vwsno_1, ::vl::presentation::compositions::GuiEventArgs* __vwsno_2) const; + }; + + //------------------------------------------------------------------- + + __vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::__vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(::demo::MainWindow* __vwsnctor___vwsn_this_, ::demo::MainWindowConstructor* __vwsnctorthis_0) + :__vwsn_this_(__vwsnctor___vwsn_this_) + , __vwsnthis_0(__vwsnctorthis_0) + { + } + + void __vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* __vwsno_1, ::vl::presentation::compositions::GuiEventArgs* __vwsno_2) const + { + return ::vl::__vwsn::This(__vwsn_this_)->buttonCalculate_Clicked(__vwsno_1, __vwsno_2); + } +/*********************************************************************** +Global Functions +***********************************************************************/ + + Demo& Demo::Instance() + { + return Getvl_workflow_global_Demo().instance; + } +} + +/*********************************************************************** +Class (::demo::MainWindowConstructor) +***********************************************************************/ + +namespace demo +{ + 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_17 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_17)->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"Event_Cpp", 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)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetCellPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"5", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowsAndColumns(4, 4); + ::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::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowOption(3, [&](){ ::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::Absolute; __vwsn_temp__.absolute = 100; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetColumnOption(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_1)->SetColumnOption(3, [&](){ ::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)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::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"A : ", 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(0, 1, 1, 2); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxA = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_5 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxA)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->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)->textBoxA)->SetText(::vl::WString(L"1", false)); + } + { + ::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)->textBoxA)->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(this)->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetSite(1, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateLabelStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_7 = new ::vl::presentation::controls::GuiLabel(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_7)->SetText(::vl::WString(L"B : ", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_7)->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_6))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->SetSite(1, 1, 1, 2); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxB = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_9 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxB)->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)->textBoxB)->SetText(::vl::WString(L"2", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxB)->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_8))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_10)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_10)->SetSite(2, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateLabelStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_11 = new ::vl::presentation::controls::GuiLabel(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_11)->SetText(::vl::WString(L"A + B = : ", 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_1)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_10))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_12)->SetSite(2, 1, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxC = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->SetReadonly(::vl::__vwsn::Parse(::vl::WString(L"true", false))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_13 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_13)->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_12)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->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_12))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_14 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->SetSite(2, 2, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_15 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_16 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->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_15)->SetText(::vl::WString(L"Calculate", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->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_14))); + } + { + ::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::EventAttach(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->Clicked, LAMBDA(::vl_workflow_global::__vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(__vwsn_this_, this))); + } + } + + MainWindowConstructor::MainWindowConstructor() + { + } + +} +#undef GLOBAL_SYMBOL +#undef GLOBAL_NAME +#undef GLOBAL_OBJ +#undef USERIMPL + +/*********************************************************************** +Reflection +***********************************************************************/ + namespace vl { namespace reflection { 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) +#define _ , + BEGIN_CLASS_MEMBER(::demo::MainWindow) + CLASS_MEMBER_METHOD(buttonCalculate_Clicked, { L"sender" _ L"arguments" }) + END_CLASS_MEMBER(::demo::MainWindow) - CLASS_MEMBER_GUIEVENT_HANDLER(buttonCalculate_Clicked, ::vl::presentation::compositions::GuiEventArgs) - 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_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_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(textBoxA) + CLASS_MEMBER_FIELD(textBoxB) + CLASS_MEMBER_FIELD(textBoxC) + END_CLASS_MEMBER(::demo::MainWindowConstructor) - #undef _ - - 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_Xml/Event_Cpp/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.h index 2de31d7f..c136b48b 100644 --- a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.h +++ b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.h @@ -1,66 +1,92 @@ -/*********************************************************************** -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 +{ + struct __vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +} 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: + friend struct ::vl_workflow_global::__vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif protected: - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxA; - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxB; - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxC; - - void InitializeComponents() - { - if (InitializeFromResource()) - { - GUI_INSTANCE_REFERENCE(textBoxA); - GUI_INSTANCE_REFERENCE(textBoxB); - GUI_INSTANCE_REFERENCE(textBoxC); - } - else - { - } - } + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxA = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxB = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxC = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::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::compositions::GuiBoundsComposition* __vwsn_precompile_5 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_7 = static_cast<::vl::presentation::controls::GuiLabel*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_8 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_11 = static_cast<::vl::presentation::controls::GuiLabel*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_12 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_13 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_14 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_15 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_16 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_17 = 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()) - ,textBoxA(0) - ,textBoxB(0) - ,textBoxC(0) - { - } + MainWindowConstructor(); }; } -namespace vl -{ - namespace reflection - { - namespace description - { - DECL_TYPE_INFO(demo::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_Xml/Event_Cpp/UI/Source/MainWindow.cpp b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/MainWindow.cpp index 8a079364..071c2c0d 100644 --- a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/MainWindow.cpp +++ b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/MainWindow.cpp @@ -1,18 +1,38 @@ /*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -GacUI::MainWindow +!!!!!! DO NOT MODIFY !!!!!! -This file is generated by: Vczh GacUI Resource Code Generator +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(...) + +/*********************************************************************** +Class (::demo::MainWindow) +***********************************************************************/ + namespace demo { - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) - - void MainWindow::buttonCalculate_Clicked(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs& arguments) + USERIMPL(/* ::demo::MainWindow */) + void MainWindow::buttonCalculate_Clicked(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) { bool successA = false; bool successB = false; @@ -25,25 +45,29 @@ namespace demo textBoxC->SetText(c); } - void MainWindow::OnCreate() - { - } - - void MainWindow::OnDestroy() - { - } - - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER - 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 + +#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_Xml/Event_Cpp/UI/Source/MainWindow.h b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/MainWindow.h index 5a9bab1b..13a30f74 100644 --- a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/MainWindow.h +++ b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/MainWindow.h @@ -1,33 +1,51 @@ -/*********************************************************************** -Vczh Library++ 3.0 -Developer: Zihan Chen(vczh) -GacUI::MainWindow +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! -This file is generated by: Vczh GacUI Resource Code Generator +GacGen.exe Resource.xml + +This file is generated by Workflow compiler +https://github.com/vczh-libraries ***********************************************************************/ -#ifndef VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo_MainWindow -#define VCZH_GACUI_RESOURCE_CODE_GENERATOR_Demo_MainWindow +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_MAINWINDOW +#define VCZH_WORKFLOW_COMPILER_GENERATED_MAINWINDOW #include "DemoPartialClasses.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 MainWindow : public demo::MainWindow_ + class MainWindow : public ::vl::presentation::controls::GuiWindow, public ::demo::MainWindowConstructor, public ::vl::reflection::Description { - friend class demo::MainWindow_; - friend struct vl::reflection::description::CustomTypeDescriptorSelector; + friend class ::demo::MainWindowConstructor; + friend struct ::vl_workflow_global::__vwsno1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif protected: - - // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) - void buttonCalculate_Clicked(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs& arguments); - void OnCreate(); - void OnDestroy(); - // #endregion CLASS_MEMBER_GUIEVENT_HANDLER + void buttonCalculate_Clicked(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments); public: MainWindow(); ~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_Xml/Event_Script/UI/Source/Demo.h b/Tutorial/GacUI_Xml/Event_Script/UI/Source/Demo.h index febeba0f..a12c85a4 100644 --- a/Tutorial/GacUI_Xml/Event_Script/UI/Source/Demo.h +++ b/Tutorial/GacUI_Xml/Event_Script/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_Xml/Event_Script/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.cpp index 1967f719..f3cc8df2 100644 --- a/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.cpp @@ -1,42 +1,304 @@ -/*********************************************************************** -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_MainWindowConstructor___vwsn_initialize_instance__ + { + ::demo::MainWindowConstructor* __vwsnthis_0; + + __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(::demo::MainWindowConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + //------------------------------------------------------------------- + + __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(::demo::MainWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + } + + void __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + { + auto a = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxA)->GetText(); + auto b = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxB)->GetText(); + auto c = [&](){ try{ return ::vl::__vwsn::ToString((::vl::__vwsn::Parse<::vl::vint32_t>(a) + ::vl::__vwsn::Parse<::vl::vint32_t>(b))); } catch(...){ return ::vl::WString(L"", false); } }(); + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxC)->SetText(c); + } + } +/*********************************************************************** +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_17 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_17)->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"Event_Script", 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)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetCellPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"5", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowsAndColumns(4, 4); + ::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::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowOption(3, [&](){ ::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::Absolute; __vwsn_temp__.absolute = 100; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetColumnOption(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_1)->SetColumnOption(3, [&](){ ::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)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::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"A : ", 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(0, 1, 1, 2); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxA = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_5 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxA)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->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)->textBoxA)->SetText(::vl::WString(L"1", false)); + } + { + ::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)->textBoxA)->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(this)->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetSite(1, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateLabelStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_7 = new ::vl::presentation::controls::GuiLabel(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_7)->SetText(::vl::WString(L"B : ", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_7)->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_6))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->SetSite(1, 1, 1, 2); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxB = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_9 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxB)->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)->textBoxB)->SetText(::vl::WString(L"2", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxB)->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_8))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_10)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_10)->SetSite(2, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateLabelStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_11 = new ::vl::presentation::controls::GuiLabel(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_11)->SetText(::vl::WString(L"A + B = : ", 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_1)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_10))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_12)->SetSite(2, 1, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxC = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->SetReadonly(::vl::__vwsn::Parse(::vl::WString(L"true", false))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_13 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_13)->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_12)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->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_12))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_14 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->SetSite(2, 2, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_15 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_16 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->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_15)->SetText(::vl::WString(L"Calculate", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->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_14))); + } + { + ::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))); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->Clicked, __vwsn_event_handler_); + } + } - 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 +306,73 @@ 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_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(textBoxA) + CLASS_MEMBER_FIELD(textBoxB) + CLASS_MEMBER_FIELD(textBoxC) + 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_Xml/Event_Script/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.h index d796474f..287dd149 100644 --- a/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.h +++ b/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.h @@ -1,85 +1,104 @@ -/*********************************************************************** -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 +{ + struct __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +} 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: + friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif protected: - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxA; - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxB; - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxC; - - void InitializeComponents() - { - if (InitializeFromResource()) - { - GUI_INSTANCE_REFERENCE(textBoxA); - GUI_INSTANCE_REFERENCE(textBoxB); - GUI_INSTANCE_REFERENCE(textBoxC); - } - else - { - } - } + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxA = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxB = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxC = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::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::compositions::GuiBoundsComposition* __vwsn_precompile_5 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_7 = static_cast<::vl::presentation::controls::GuiLabel*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_8 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_11 = static_cast<::vl::presentation::controls::GuiLabel*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_12 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_13 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_14 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_15 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_16 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_17 = 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()) - ,textBoxA(0) - ,textBoxB(0) - ,textBoxC(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; + friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +#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_Xml/Event_ViewModel/UI/Resource.xml b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Resource.xml index 1cfb0476..5aa4793a 100644 --- a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Resource.xml +++ b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Resource.xml @@ -10,7 +10,7 @@ diff --git a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/Demo.h b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/Demo.h index febeba0f..7ce6f38c 100644 --- a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/Demo.h +++ b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/Demo.h @@ -1,16 +1,47 @@ -/*********************************************************************** -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::IViewModel) + DECL_TYPE_INFO(::demo::MainWindow) + DECL_TYPE_INFO(::demo::MainWindowConstructor) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(::demo::IViewModel) + ::vl::vint32_t Add(::vl::vint32_t a, ::vl::vint32_t b) override + { + INVOKEGET_INTERFACE_PROXY(Add, a, b); + } + ::vl::WString Error() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(Error); + } + END_INTERFACE_PROXY(::demo::IViewModel) +#endif + + extern bool LoadDemoTypes(); + } + } +} + #endif diff --git a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.cpp index 87f3d23c..d9efb20a 100644 --- a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.cpp @@ -1,42 +1,312 @@ -/*********************************************************************** -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_MainWindowConstructor___vwsn_initialize_instance__ + { + ::demo::MainWindowConstructor* __vwsnthis_0; + + __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(::demo::MainWindowConstructor* __vwsnctorthis_0); + + void operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const; + }; + + //------------------------------------------------------------------- + + __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(::demo::MainWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(__vwsnctorthis_0) + { + } + + void __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__::operator()(::vl::presentation::compositions::GuiGraphicsComposition* sender, ::vl::presentation::compositions::GuiEventArgs* arguments) const + { + { + ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxC)->SetText([&](){ try{ return ::vl::__vwsn::ToString(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->ViewModel.Obj())->Add(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxA)->GetText()), ::vl::__vwsn::Parse<::vl::vint32_t>(::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->textBoxB)->GetText()))); } catch(...){ return ::vl::__vwsn::This(::vl::__vwsn::This(__vwsnthis_0)->ViewModel.Obj())->Error(); } }()); + } + } +/*********************************************************************** +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)->ViewModel = ::vl::__vwsn::This(__vwsn_this_)->GetViewModel()); + (::vl::__vwsn::This(this)->__vwsn_precompile_17 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_0)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_17)->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"Event_ViewModel", 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)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetCellPadding(::vl::__vwsn::Parse<::vl::vint32_t>(::vl::WString(L"5", false))); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowsAndColumns(4, 4); + ::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::MinSize; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetRowOption(3, [&](){ ::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::Absolute; __vwsn_temp__.absolute = 100; return __vwsn_temp__; }()); + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_1)->SetColumnOption(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_1)->SetColumnOption(3, [&](){ ::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)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::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"A : ", 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(0, 1, 1, 2); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxA = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_5 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxA)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_5)->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)->textBoxA)->SetText(::vl::WString(L"1", false)); + } + { + ::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)->textBoxA)->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(this)->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->SetSite(1, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateLabelStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_7 = new ::vl::presentation::controls::GuiLabel(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_7)->SetText(::vl::WString(L"B : ", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_6)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_7)->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_6))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->SetSite(1, 1, 1, 2); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxB = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_9 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxB)->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)->textBoxB)->SetText(::vl::WString(L"2", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_8)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxB)->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_8))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_10)->SetInternalMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = 0; __vwsn_temp__.top = 5; __vwsn_temp__.right = 0; __vwsn_temp__.bottom = 5; return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_10)->SetSite(2, 0, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateLabelStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_11 = new ::vl::presentation::controls::GuiLabel(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_11)->SetText(::vl::WString(L"A + B = : ", 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_1)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this)->__vwsn_precompile_10))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_12)->SetSite(2, 1, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateTextBoxStyle(); + (::vl::__vwsn::This(this)->textBoxC = new ::vl::presentation::controls::GuiSinglelineTextBox(__vwsn_controlStyle_)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->SetReadonly(::vl::__vwsn::Parse(::vl::WString(L"true", false))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_13 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->GetBoundsComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_13)->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_12)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->textBoxC)->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_12))); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_14 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->SetSite(2, 2, 1, 1); + } + { + auto __vwsn_controlStyle_ = ::vl::__vwsn::This(::vl::presentation::theme::GetCurrentTheme())->CreateButtonStyle(); + (::vl::__vwsn::This(this)->__vwsn_precompile_15 = new ::vl::presentation::controls::GuiButton(__vwsn_controlStyle_)); + } + (::vl::__vwsn::This(this)->__vwsn_precompile_16 = ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->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_15)->SetText(::vl::WString(L"Calculate", false)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_14)->AddChild(::vl::__vwsn::Ensure(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->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_14))); + } + { + ::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))); + } + { + auto __vwsn_event_handler_ = LAMBDA(::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(::vl::__vwsn::This(this)->__vwsn_precompile_15)->Clicked, __vwsn_event_handler_); + } + } - 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::IViewModel) +***********************************************************************/ + +} +#undef GLOBAL_SYMBOL +#undef GLOBAL_NAME +#undef GLOBAL_OBJ +#undef USERIMPL + +/*********************************************************************** +Reflection +***********************************************************************/ namespace vl { @@ -44,57 +314,84 @@ namespace vl { namespace description { - #define _ , - IMPL_CPP_TYPE_INFO(demo::IViewModel) - IMPL_CPP_TYPE_INFO(demo::MainWindow) +#ifndef VCZH_DEBUG_NO_REFLECTION + IMPL_CPP_TYPE_INFO(::demo::IViewModel) + IMPL_CPP_TYPE_INFO(::demo::MainWindow) + IMPL_CPP_TYPE_INFO(::demo::MainWindowConstructor) - BEGIN_CLASS_MEMBER(demo::IViewModel) - CLASS_MEMBER_BASE(::vl::reflection::IDescriptable) - CLASS_MEMBER_METHOD(Add, { L"a" _ L"b" }); - CLASS_MEMBER_METHOD(Error, NO_PARAMETER); - END_CLASS_MEMBER(demo::IViewModel) +#define _ , + BEGIN_INTERFACE_MEMBER(::demo::IViewModel) + CLASS_MEMBER_METHOD(Add, { L"a" _ L"b" }) + CLASS_MEMBER_METHOD(Error, NO_PARAMETER) + END_INTERFACE_MEMBER(::demo::IViewModel) - 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::MainWindow) + CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) + CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) + END_CLASS_MEMBER(::demo::MainWindow) - CLASS_MEMBER_PROPERTY_READONLY_FAST(ViewModel) - 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_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_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_3) + CLASS_MEMBER_FIELD(__vwsn_precompile_4) + CLASS_MEMBER_FIELD(__vwsn_precompile_5) + CLASS_MEMBER_FIELD(__vwsn_precompile_6) + CLASS_MEMBER_FIELD(__vwsn_precompile_7) + CLASS_MEMBER_FIELD(__vwsn_precompile_8) + CLASS_MEMBER_FIELD(__vwsn_precompile_9) + CLASS_MEMBER_FIELD(ViewModel) + CLASS_MEMBER_FIELD(textBoxA) + CLASS_MEMBER_FIELD(textBoxB) + CLASS_MEMBER_FIELD(textBoxC) + END_CLASS_MEMBER(::demo::MainWindowConstructor) - #undef _ - - class DemoResourceLoader : public Object, public ITypeLoader +#undef _ + class DemoTypeLoader : public Object, public ITypeLoader { public: void Load(ITypeManager* manager) { - ADD_TYPE_INFO(demo::IViewModel) - ADD_TYPE_INFO(demo::MainWindow) + 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_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.h index d100f9fd..dd904f10 100644 --- a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.h +++ b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.h @@ -1,102 +1,118 @@ -/*********************************************************************** -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 +{ + struct __vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +} namespace demo { - class IViewModel; + class MainWindowConstructor; class MainWindow; + class IViewModel; - class IViewModel : public virtual ::vl::reflection::IDescriptable, public vl::reflection::Description + class MainWindowConstructor : public ::vl::Object, public ::vl::reflection::Description { + friend struct ::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +#ifndef VCZH_DEBUG_NO_REFLECTION + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::Ptr<::demo::IViewModel> ViewModel = ::vl::Ptr<::demo::IViewModel>(); + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxA = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxB = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::vl::presentation::controls::GuiSinglelineTextBox* textBoxC = static_cast<::vl::presentation::controls::GuiSinglelineTextBox*>(nullptr); + ::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::compositions::GuiBoundsComposition* __vwsn_precompile_5 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_6 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_7 = static_cast<::vl::presentation::controls::GuiLabel*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_8 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiLabel* __vwsn_precompile_11 = static_cast<::vl::presentation::controls::GuiLabel*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_12 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_13 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_14 = static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr); + ::vl::presentation::controls::GuiButton* __vwsn_precompile_15 = static_cast<::vl::presentation::controls::GuiButton*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_16 = static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr); + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_17 = 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 struct ::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_initialize_instance__; +#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 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::vint32_t Add(::vl::vint32_t a, ::vl::vint32_t b) = 0; virtual ::vl::WString Error() = 0; }; - 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: - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxA; - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxB; - ::vl::presentation::controls::GuiSinglelineTextBox* textBoxC; - - void InitializeComponents(vl::Ptr ViewModel) - { - ViewModel_ = ViewModel; - if (InitializeFromResource()) - { - GUI_INSTANCE_REFERENCE(textBoxA); - GUI_INSTANCE_REFERENCE(textBoxB); - GUI_INSTANCE_REFERENCE(textBoxC); - } - else - { - ViewModel_ = 0; - } - } - public: - MainWindow_() - :vl::presentation::GuiInstancePartialClass<::vl::presentation::controls::GuiWindow>(L"demo::MainWindow") - ,::vl::presentation::controls::GuiWindow(vl::presentation::theme::GetCurrentTheme()->CreateWindowStyle()) - ,textBoxA(0) - ,textBoxB(0) - ,textBoxC(0) - { - } - - vl::Ptr GetViewModel() - { - return ViewModel_; - } - }; - } -namespace vl -{ - namespace reflection - { - namespace description - { - DECL_TYPE_INFO(demo::IViewModel) - DECL_TYPE_INFO(demo::MainWindow) +/*********************************************************************** +Global Variables and Functions +***********************************************************************/ - } - } -} -namespace demo +namespace vl_workflow_global { - class MainWindow : public demo::MainWindow_ + class Demo { - 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(); + + 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_Xml/UIRes/Event_Cpp.bin b/Tutorial/GacUI_Xml/UIRes/Event_Cpp.bin index 52c8f911819ac9ff32a4ce623b95e784d2b401a6..1f9e95da7aca2a70142c8dff292c524c12b3a01a 100644 GIT binary patch delta 208 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 Xt#!$=rJXIE7tL&MS-zYVh?(#o1^_m* diff --git a/Tutorial/GacUI_Xml/UIRes/Event_Script.bin b/Tutorial/GacUI_Xml/UIRes/Event_Script.bin index 2fedcbb41623d2a44229ac463edaeacdf411b5d0..fd4e814e58bc5842e41135ed414fb5f580f94ff1 100644 GIT binary patch delta 196 zcmcb&iLZr)k$EDc8zaMX!EKD<6N@Dn87KCrO+O#c%rQ}bW#TuP={Mgn@+kP_7v(1A zc;+SNl%}MzGe7`{c27(W_0-Fl{E$y1IViO_zqBYhRR$^#qV@D*fGE@xC>P^emYP=* zADmp2Sx};vl$i%r#=rw*faqYb32ym0DXB$lP;n3q5oefw@EoJ? literal 235870 zcmeF436xw_wf75@Q9)#o0Q#r|5;8X3nbR3ecV{4wKuj6}0+LGiO{b(%)l^p}1VJW6 zkpu)~NdOVzgQvXr77p(%2mC}uQ3M=-peTdyfq+3oTquet-@RS?UtRUy7o6xN9 z%VN3f{`dKxz0clfzE$m86UBdTEtBoRxrM#$Ig*RAJ%v=ZBY1~lk!;JPdU{Swtqqn1 z9l3mGdGQsw{MoBBx%E~$@fQ2=_AH)md$Y zTz<~>{4(+YG2D<5kZMP{k3AcD3c=du=0(}Uq=^R_A(GwspeIaCD(aoh&CAp01qYip zl9k#eseD&DyT9opscPrtdRJwF!8FSY`E<6ce6WdgN-o`bh}9KI;o)cr@sN%?O=qJvEl#gZ7uz`1DvV^63fqEA z=A`aoV2YLYxm4cE*%d60mPGIk`%&KB~yOfePVOd35Lm+L8vG)5#V z8D&l_O%>Ke5y-3y@{LA_WF=vMgRQyVY-f4C%SQsa1Km5;EJc!~(YM-DVfQZffxaG> zG-@PCEi<$@wJOL=u(FZdPFc+&%W}EGNvl2>t``kPj3kNhFX{wk?z#I~M=>+SG`02? z3c2hgGZRUgDQin{W)5eN<%JDVEc#TLAiup1RYva%#XxqA#*3Z~q#t3vN3zoQ!kS=h z5E9xWSz|nkO>D9{BUxEzMew3+No(%hFzRb_*>GA7@~cxF!7L+3ay#VZ;hdNWGU;q! z)u?Gp^SO2D&LBVD>WSoz)HB+6kt7d&rf*4Z$#?aOE~S<n+e#%K4={kPLKX+F3E#P&MK@)_mrw8Lo;>x{$p0S z6!uL)C6+v|Sng+qagC;;aHBIvlhpvv<&l%AUN(SvkQ!OOnwHyaavIe(BjKbvt!mMC zQ#H;9I9%PT2KfN$JFB*JvPv+4)vZo(Q4f{E8K!7+(D#p4t2;ccDz$uDR-V`D0d_H+ z@hxT5#jGA)7tt=i7%uB=qGIm5*)wX^)VP$(`6EiTfLQVc?B zm5!Zmd!)8%Bvq!#xYnsu^@{gy0gyVkCMxFMj_6Dys$3AWw0;Z{gdr5U1I=G`u1GEn z!Zjb8PBlyA%Wnjh2Zd;X-(Hch%E5|gl8R(lB-(F<$KxPhw#!qka!{*fB#(+RpaQDP zSwP8k7SKYdHb$~7Jn`h0_pa*cJJd(VFxk@yseBxVk!Z`L!;@xo98F!D;0$` z78JQihT}TAoeZ-%FCFeF!x3BR@){AttQnCEi|d+TK|Z&(bmwVBO8asR)<|x5zpaVb znPvsLJk8N$)Ejp3FfGy1O2!plXI*Mhd2GvCWEUT*PTg6oNJg9PTu(i_TcSP2c64p3S-mcjYus+O3l9#Gy3XZ3Bp z#C1ilRJp6bv}!d>m+?WGUp0BvTR%;EmhxpI+(2}k9dwqi)uVw_{_j8=baIVSZ4$0$ zN#T^#>sj)2n}*uV8EtD;0v}QCZ20+j=rwPpfFCtPd8^>((eU$9)6X;fUrb&FeC$r< z-2!{Mq?6fmpjRHY0G};_$)UpgJp3%(UzwlJnSOyiPcr#e;Of7oPP_oUPSGy{Zx+F% zuf0E`-nmxaE5KW0viAejt3Av?w(C&5J^*|7fTs=ML%`MFMfc_T`WZLxV8rDtHOyqn z^o#6yyvcKbbNsD_zR7rNfUDn{I^kg= zG{p0I=rwP-aM6A3ZGk=Q8(et3_WlF*mRN-@yk2`>gFWTRh1Y8@2YZ^AwgO)#LngbS z*SvH-aE(jReR;lq#?5;K?OU&gnH+1U+U54FanuU@1n~BPUU~Q=@Xg@u4ZZSkFmUF< zm*?we+`OyNzUvW}S4^+@f4=Ge27F;myzil2%xE?m3`;3if_P8H(`MC@{?w2ky{rk=F zaVA~3+IJ~<4W`%(T=y*ET?74WQ(OmJ>$iBm_Vfi%wNLpw2lkl1xOw-%9@kBmz5BuA zy7H>&Pq#oRe=c0{{0DdqrZ~vntEfKa@9oele+L3*{(S8{2|ty;=YcbSar5S*eaxTB z-U9HLzk=z{K>l2~^0yv5}^mWO}gye2i|$$y=HpdGb?{CT=dt$Q~pNU#$NSt9PJPN zT&wU9;LN+Py%DIl-RvC=T<52H+xGPy23A z%HpW}xo|6%*ay5OQ%nM`eYSYRpr31s;lO!c;A^iD^=iMNALOasIzP!zUwhA4yj8FI z%geyoU*hHkX!j;H%%scSYVfWE?^@G$82%oU4*=IbN_1b|M^LX_LneL#ob&Zi;r$eT za{YVfLB$B^OMQ(NuxY^AzQdrOZaf#RJowrh4tsO0LKj}Iy>YOodomYZuf3_Tr~d20 z>$Ufi^$X=)^F%xR=#e3le*({@mBc@RYg~%%%k%X!Zr;g=OX-Wr*1#K0zs8>Re%ggA zE}sK$j452Wcw4|5ZwePK-mTyrYYG=G-eusazgz>H>q^|b+h9-gRW(2V4Lt1^#CyT? zXB#lmz!}fDd7EKxvJ!66W$$|Mrhs>^>2;5; zalPBSiUozA924*Bu&49U?y$%6!%*S91%C2;G}H9D@6deh!WGsz;Avmy!o_O=PxHA8 z7jGVT+Sj>o@kWBD@z4aE;~{R|eAsK0gC(@;e#4l_Hq*Tp*?Hf%>X}oC-XiGdsAVr9eT~z7XqI)M0pp%Pu)Ao-5;3#Vgs~qcpf;< zD-S?F)A%mDUVB?%Pu~Y{;q}^k684r@g)Y2ad)r`7=Smk|ue~j>r}<^?Va1x&AJ)l` z$<#d2lB5%0nw~ zdn{S?<@x#p z*lUrYDt>+iJpSJBRnzPJv+}U#Va1AtYrTBe*6 zGV5#aZrGb^6}s?x?L7c{dXMMA>$Uew*i-*?;q}`46zpl9_zUnJ88Z24=(XP73|!+< zbYGsYpKB`#ajrT?t5Igc%#8n zf0+!N>q^|b<6uwoRW&~sf!8F0$*WBNX?xaw>f6A1-xD|Q=djlWKhJ|+d3X>w-{U2Z zC{}c>)u;D(6M&xzdw;Qd#nXPi0ld><;{6u()V^b3@BOehRCtZ>^K|&R-t^ZQu6g2o z;Czplf?jdC0J!D>nOz0F=IbnQ&ey&?Uq9pKeHiWId%Sy0e}e@|`|<~Yb6*}e?`hcM zd%QcKSKjXg&UrU(-fv-#@9|vro&j&6I;P16bNnXcp&2;y;LAG{^(vl60k_AJw{i1k z!XD2@E_<`Un^N+y_~C5R-)y+X_2+?We<`{z@BOG(=c9iG&hx`i;oS;9c|LmF^jj=Y zny+2B;`tl!w6AmF;yneP=5rS=-ZS87U+2Qb`yqH54-WyiN6`{-^PYvh#*(Gt2baC) zz~jEI!3MysR-g8DX9DNGE^b~P_V^y}FzA(s9^ibB_aoEaX6@5^ysg0b9`73HmET8z zue5q4e0i6lUbXKRz*910a;Wfr2|xKBZ!h};USBZ3t$1R8;Jm+%o0o*Wsfg!a%rW_? z`Fc2b(}pN-1pL&!lickx{p|*5->?Zd&nr3TXByvy*K2P*?CCw83$NGS#jvOMcrLtN zdmCX-=Smk|uf2J&r}^b};Ok__kMHqbF#Ug8gLUqI z5jfxDJqEq<@JHaB2Oo!Cd3YN5FeSjGFVEM{xOp$3ecGR>nKO_WANYih32# ztAR6~ar3?idpxJQ?A;C?&#AvM{eN4aY#1aCOcnv*JU9CCegu2k_Z$R!JpT<9-ofxw z>uE7siNp%if6V}$gDwEh_MHX&4CA|SQ+wO%f<28-7hbQub6`*R-Y&ded*{QR`mYPG z*WOgv(>!rK@PZ7PoCdwt+j+n>E=Bj{`T7|*?*_E5R}C}yl-X)L$M2&i!uOycb|k^HnuJ{{Y@Z5ll|Djq3lgXYHpt zfb+g5Zr(cB>w=$0La#im2fhZpdrbdr!xx);2sqETH$p$ccn<^Tdo^F)Cs422w-xy5 zXx~ubJpw<^fS>o@va4Lf+<|Mc-Mi~XbKlD-nrmuJbV;5=a;y7 zn_-XpI+wlc!Q;C58`J;98mxWYJM1D+IQMmN^Nxl+zQ?-{ekuV{?YkU!3igHy?-THI75v<0`UeevugMpI&x?t7C+bx^ zUjn`W_PzzZ_Jel==Y6>^&)3hmd4EFtxX&746T`z6FRhznfNTCxSmWl+guQ7pWby#$ zwcgGGK7EMtX2Vb28_L~FP5+1i+V_1CIM16`KtId)F1%iQpMt%4R-p^8*WPDg??kK6 zh1YBE3$Ukq0T*7cy|Z9X^VvPX*UON}mC$QGTMJy{S#)2Xub*-Aeu(y+tA?38U{vwL zqxP)x?V-T+eJ|1D=8b{978x@6S8Ip-RNnUhkNeNKd1GO(wMIY3f!79JkLe#XT<6=1 zfNP!;-IsR;>Qy|~0M~v`_TuJU40}A^y6jy79?!R5G5r(fxW@H1;5^^@@@_`GT5q2R z&hzb1;r$+d@_akeI^=IGp6Z`2T>WJBe*VER% zB_@v#g;yA4Yuh!u@E@d=~2)t561!LI(-cE%EM&f%!4n_*Uz|li_kv4pT5TQf3Q4Q z+7h1w&htauyf4GvLJb6y=RvQ$e+)SHk#Y0B0(-~R=;v3#TLj+UP5+YN8V`Hh#$LGA z8_|7vPs5(#`A6V9r^e0O2km1&bJ^P$Jf2g#O#iY4O6zS8aOTgKHxu4kg?YIQ((|V)! z-Dvv6Zbjr!Q+yHl(IS}i<^31x)xG2QfO9{8E%a*N-N3n@ck#Xt9{1OG>{D#0?kV@S zc0Xaf-7Q|i6&_#SW;-ywY853--V9vxvFydoyA}2nCfU0h`eCNH4Y=-e#Jkt@e>Wg$ z@@K%=zPNc?VUO+mF7#^OBf#0dznT6uv~RQ-5Pp*BCH8{8!4xjMUfwX+Q@?lNvggvf zaPeM6T!x$CaQLBdRxi&t55Bx3(T)YyfMbB`9IE!cgt(}mjR9||2qsT9{Xgv4wn+&W zF8Vz1WbYKaNVbh?#o;JmSPR+C-UW%EZo`Pl*<+vm%>-0GcV{jSaAM&Jt!mpBo6`MC-BLJ>^*@}9DKr&v9T=QF?= z&+DO=pU(nkJbiiZH3QSkPmPyW;Ou8Fn?K^o&o=N@AfCRw%~tOW#PderjOSA5?J@CL z;Ebm)?-{FirujL~Kh zc{f?Ty3dfGw*aS~%b}N_TY%F~U*7X}u6!%*5BIbMYER%wqc5+`_E|}*Nb_$V_)628 z`9$2j%V4hnd;6H4=YSvBx-rJeD?jpcSMzqa^U9&-kK(xp@X2W3qd0G?9eaYObwKU& z<+WSAJcq9UuJf(z9R$7nJQcXkxApRFvwC?B{~~bu89*;TZwF34eR+SidUXz8WcmF& zaQgW*=;h~Y!0D$iZx7pFk1+qbO}-2G#ps`3vGFIK+PMw5)<5MvZr-8r^Ah-Z3;cPz z>4$-LDR^C`Kgw|BsT(-k*8}~j#y=l;3ie#QP2lChn-0D5pmVDH?}>?b4D2bMI^W73 z=j$&R?`ZSmT_%47d@B6(<=upO<>$S?r@`J(;r$qXPKTd=G5tuxwch;=_;~Op*!n2m zO4CmTo{ow4DEv_#o&f$%*o&Jt9ql{2Mtd{B%YfHz`ca1KJ;`anH7+#|#?4y=d-6y2 zj)Pu#=m35U+BZ~qo$zxs{JhZg@?UxQ2yo^hZr&!?8wEdmpjRHQ1g>@{e?x_L75ro# zZa2Mf<>3zC%tPF~ufyIbH8FW$HaTx&T)x@ECP{So9pb&1j$*c-a>9dSC9?z zsY1{>XXbwU_V%Q+UCHiz&=X_}sX{uJZEo(!WefRSrl+}iVQ+e@qfn3u)`k=-G{5-d zDBF=++nwu4N3~n|wtl2$j-y~9SlgWmn?rYdHuQw5=H~te2+0SlGeJkOt^L}{7`X85 zM5I4#E^>c~OuDB~?pmes{&IzU5V*_r=fGvLzr=PN?=Msc&MmmAs!XD*R9QBnBKz%| zO|1=jx>FrNvNKql+i%|w?YD0-{MV65_4Fi{q|(_H>1=0i{j9b^Ex^0|_KRy% zaTIX^iNWcn!3UXFWSe%{uxc87T%rA*vE69{t!eO)RuJT?Fif?r?wQj!N(QV4(_L$d$f{g8qSr>?;Q3pU%6Fx+1031G3^p}bzge7Kn=T%GLcjVR+H-cE zX~}lBtx0D(L#GGrNdp45FrVsPlkO;A^usM%v48g4so(Wz{a>2u?2Ha?vy-DcQay$8 zF}x^Sm^5)ra>SGo9;V7iYE#4Vps*~rz9))AF4Ma<+cSFd_~c}Ew`hD0#yhDyI%bV- z9H0D9F;+qQhVCFtt;J;U1P=&n)ZAiK1KLx?a?=}TdEy&pdC~yOOM`II56|~qL9)C5 zV{@{p!7;?@&OouVyg})&Fg~ycw5$qOzTQHROzA@yiN;+LiCx_(Dk8Cq`vvCXiX~`b z%}WqZIvy*~#D;J_4D#7jrnqtpviwX*4zm1A8GLr~UVh3a$cfR!x;$M7qPa2rFYKjF zoKz9OK^EHRGGmtA7A-Gq2(JplwsE^tSQFmVH8(G6FUo~Mp{+OEHigS^1dJZj(3TIv z`?J1Nbzdc;=}0ukR-|u|JAGw4^Wr&u%;-uF2h8Brn^|eQK^vgxMyT4xXON&(rlF;? zxWvOo)eUNOugmR(o1nq$Ok|`{YlTyj-9g8;&2P+<`#ZV3dq#b8e6pIagG4&c?rC>= z+v%VM-4i-@w`F~E;AP>C_S1^oObK%%`}H4grVODibE#EP0>V~~XsUC_P3|8GrMh>` zXdAF=-QH-Mx|2s+MfaIH1Xrl3r70jB{BODyD!OuToN>!$ft|BLO)ITX(Hn+3hs)Id z;Zi<9Ppdx5pmz^4KbKeNSfQrw$O<*x9rV~&sOjb1^UbwFwYtMp);D8bp=N|eZN6=- z-ggG+EEN;hjG?zewU$QR#5#xE^!_1Nd&FWHZPRyTw1qD;oO4_(!>uCYO^rivjS8L8 zF)BP+zv&jK@WqicgJm^~}4WTasF1%ZF zxlEAChF9K&d~ZX!F;U9^Q57(HdgpGv43pV-r87}wWex!2bKBQ zl@}dN{Wl%qsI-AuWeypn2gG^PQGB7jok3ZV)#&D-`a#EDlGk;|5xzaIe2v>QrTVNs zNUSQ89iDH7=Ig;JrRA|LmFeh>zG7JCzB24}9cKrf;dfaodjgG>83{l3N3L%!9Q^w$ zMhQju-+S!)*OC1HUyqKyN1!hN{r|5=SAJb+D11G7&{?bOh*9n+xwdI|3hEA4kwSX$Kae4_tBvM1H_`%xZk;TFjg6^~&s) zxt!Y@1%by+2Kl9Sz7v96Jx`8u& z`2M)B2bb*8QR~Kod^4cPY#98jl+iaS$7?xcjvcKCHw69Pu^jLwTT5h1IHJt7Et)L@ z8fA*;+NH8+tE*^q2(K*KR$jDX73>TrtwPYhDxyENg@@(*^4?WFeP14oewI`5&c9-z zJn${WUnc$Y_2NHDgI^b}XG!6d)azOD^nHtV+w6x?`T^fc;QE6ARxEKm^!i~~3b=ka zKGb-t;HQ4TEvb`_zB?c1-* zjXxJI-URTJzZt;aErQ9odGCWg?gw4=mVw9p(nY3!zxh4RqzhLwF9ol`6q|wTo<+QC zpr37u>ws(h7SGpSfO?g`bAU5{ar5qjJ+7NBd-sFKb>&slpKgIt{#>}?`48|KOmWaV ziXT)T^Y?b>mA?alGk?DJo`j#u-}Atkzqonx(LUzSWp4p^%wNIuXCQwrT=`oMp7OT| zIP-TI^vd5x;LM+|z0**y@)rPS{^I7{1$)e&%ieduWB&eN`ZJL~7q0xh1fKGDgat_T zX`e4%0(#|dAKji;*Orq}(g^6tV#zXZG{Q(Om}`_`+WpKH9&0B3*kwU}|uY;%jjkJxu>f<=tANsjg;UU18cVBxWP;a~0I~usoPxZF% z3B<)76Wf5Zzr@X3f%aXlhM9EPI~6?66PKHQrPZVU;=*NiBX~`w*aDn+zXAHW#=8YL z$Gfk+vr(_|w;nk27dP)=*yDJ2+1m;p$NQcK76X{FI4XZG+=?ak0k6pvlYncVE#5Hb z=bB{ZaEZ8it+1!}rLwml^ve5Tz&Y>6&1-`_o^M_D=7Goa^hVS7T7#8`>wq&4zPw)4 zt9V`vobimCw;A>(E8!+x_O1tS3V8RLUiau4*So!|SWx)MG4Z|*dpaNO4tqR53>Ds6 z;3v;VGfl7i4$aptTw$F9p7wPvT)YkG=z}sOjZr;yeFAaO^p;sP$4*Y}QjXJalTwwSzlaqk!{#*1v zTD{^azmvgRDS}B~-qWzB_Dz93-CN1*P~lC5pR44c$-wj%+Oy`}4Dh3OGVjB%Hx>5U zq1SwUA@FHKly?#Q)V-73{ekH(HbDD^=YjLQ@&NQRjqk$iwYL@a^nCyqUa!3;VQ-05 z=)&u@w+;4mu5{t`+S>wqnqT%FR;*e5VVw+_{5*I%AKd|5<5_fHp0A&A^Y%ep)~jJA zPcZ#Q>{;jjCBTmYuNivf;Y8q^2WLXBJhTG0$C6cFp0A&A^G-thbnm1Fe#Z14GeGB~ zn}F-R+0Np93HIj7kjaanSKc=Q*FHn^xOrcOy%rg&;^$Yu`n3_dPCLyoKQDzQ=`&HyS+km&w4nuEfnd4)!!(Rr7NZcugXhyvp>S zwrB09z73rBJ#q7X4trhj^E~L4hX;Z4JznyNVnx?leR_{K0r;t~_ZO>IJniQjz&kA_ z-fv+~?K>9s-Vb|2h1Uo_PluoDO@E!?nkUW&&i8mJ=oOa>fNLI**;UYMzRm*YeC^Bg z^)qhXhtWR1$GgY$H&~#wFMkj?_vLZ(o`yZX$GZc1<^4|JoOk2q{TBB49?xa(8SoaW zW14I*$8SO&nt?M9zPv+Gui|+WaC)Y&4z1Se;&B@ zm!kXf-j8~9KKfVSJUzr_Nj`Pzjmp1%Q4`#Kjc-c#UdK6l~bJp-Qh zbuL`IAA+ax@DOl&6fF@q?^)PuELkdkaM^nfJnrinYyjM9^=V&sCUEZS;^yUHkMHpg zgI;;)0nYb$KQjGo);_(*+X|fT@vebh`F#ZVN~>4GmvC)BmS6Sm*v1f%84yW6&!Pe+15X@Nwvsho^xLQvyu- z@_hY_oA(mhr~QeVIpfIUr!N_xbLw2+e2*75ZyD^(m4hZnK(D+v0M|Z4^tgG;VUO?e zT=v?*<9oatP5)JMTzU8caIH6LpD*vDs8{j48aU$_H}8wE$8)O7-tFM=ocb%%|F;Fo zhC$-MWDyX~bE7ZsN3f@T&q1)q^WRY69SlFUo))8(NUSjZ*9_1(=mOwu-&xSlFun^n zwYR-4*wgrQ;q}@(2ljOD?ZWG|cRuW?|GMyc?M;O}%@fxHFUXL|Y0zuEod;awQgmOQ zub*-AZb18b)i9G!nf{yhta;vri~bCFV@=`0#rqw2x~F#G;{6`HMpL+O@$Lst{pC^M z-0#NCdja+|Usdz-58zD{!Q^DysQw>&)_$r3IPZJn=BVYJDMflopH;^ut{_7=k48PF^5 zY2ci9h!Ov}`f6(yvntT!XyqI`*qF%-GCEyES?_1DoKX^BA-k1CGeEp1@_b0TE z`>YW*F+6PX(z-bYxaJRqHE!Na*qbIpCJ%sK>+LMy(}yT;HvH7Rq1?UH^p6;zecu;> z^SpTl^s|ib!t1s7DcGB56}s?x?R^&ZPP7VLc)j+%0DHO@aN+gZI}7$SpWOp|y$qRL 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 diff --git a/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin b/Tutorial/GacUI_Xml/UIRes/Event_ViewModel.bin index 0246966024d54435f3f8417a675f70c37e9f265a..1ce1a4380d123aa5223ccd4a6e8fd47628a3b5b2 100644 GIT binary patch delta 173 zcmeBq#5a?Lk!2!d#Kc^K=^Vcp1*Sh>Vq%%NQF!{hB4&<>0xXj`7-c4(dL|7pxwK%`DC^=OgssKdm>BRt1s3%Y^X7X!B iX)PY8B!~_MD|gG!Nl7hYgNlP_i1_4xj8izEq6`3+iYUqe literal 241932 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